@otto-code/client 0.8.10 → 0.8.13

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.
package/README.md CHANGED
@@ -1,12 +1,39 @@
1
1
  # @otto-code/client
2
2
 
3
- Otto's JavaScript/TypeScript client package.
3
+ TypeScript SDK for building integrations on top of a Otto daemon.
4
4
 
5
- ## Stability
5
+ ```bash
6
+ npm install @otto-code/client
7
+ ```
8
+
9
+ ```ts
10
+ import { createOttoClient } from "@otto-code/client";
11
+
12
+ const client = createOttoClient({ url: "ws://127.0.0.1:6868/ws" });
13
+ await client.connect();
14
+
15
+ const agent = await client.agents.create({
16
+ config: { provider: "codex/gpt-5.5" },
17
+ cwd: "/Users/me/dev/storefront",
18
+ prompt: "Review the current diff and name the riskiest change.",
19
+ });
20
+
21
+ const result = await agent.waitForFinish();
22
+ console.log(result.lastMessage);
23
+
24
+ await client.close();
25
+ ```
6
26
 
7
- This package is public so Otto's published packages can depend on it cleanly.
8
- It is not a stable public SDK yet.
27
+ The public API is the package root. Imports under `@otto-code/client/internal/*` are unsupported implementation details used by Otto's own packages.
28
+
29
+ Read the [SDK documentation](https://otto-code.me/docs/sdk) for agents, workspaces, provider discovery, events, recipes, and the API reference. Runnable TypeScript patterns also live in [`examples/`](./examples/README.md).
30
+
31
+ ## Runtime
32
+
33
+ The client needs a WebSocket implementation. Modern browsers and Node.js 22 provide one globally.
34
+
35
+ Use a WebSocket URL ending in `/ws`, such as `ws://127.0.0.1:6868/ws`. Pass `password` when the daemon requires authentication.
36
+
37
+ ## Stability
9
38
 
10
- APIs, exports, runtime behavior, and types may change or disappear in any
11
- release without advance notice. Use it outside Otto at your own risk until the
12
- package is explicitly documented as stable.
39
+ The high-level API exported from `@otto-code/client` is the supported SDK surface. The SDK and daemon remain protocol-compatible across versions, but newly added capabilities can require a newer daemon.
@@ -1,4 +1,5 @@
1
1
  import { normalizeAgentModelDefinition } from "@otto-code/protocol/agent-types";
2
+ import { expandProviderSnapshot } from "@otto-code/protocol/provider-snapshot-codec";
2
3
  // COMPAT(model-normalize): daemon normalizes at source (provider-registry) - shim covers older daemons; drop when floor >= v0.1.104
3
4
  function normalizeAgentModels(models) {
4
5
  if (!models) {
@@ -30,7 +31,9 @@ export function normalizeListProviderModelsPayload(payload) {
30
31
  return models === payload.models ? payload : { ...payload, models };
31
32
  }
32
33
  export function normalizeProvidersSnapshotPayload(payload) {
33
- const entries = normalizeProviderSnapshotEntries(payload.entries);
34
+ const entries = payload.compactSnapshot
35
+ ? expandProviderSnapshot(payload.compactSnapshot)
36
+ : normalizeProviderSnapshotEntries(payload.entries);
34
37
  return entries === payload.entries ? payload : { ...payload, entries };
35
38
  }
36
39
  export function normalizeProviderSnapshotUpdateMessage(msg) {
@@ -3,6 +3,10 @@ export declare function defaultWebSocketFactory(url: string, options?: {
3
3
  headers?: Record<string, string>;
4
4
  protocols?: string[];
5
5
  }): WebSocketLike;
6
+ export declare function nativeWebSocketFactory(url: string, options?: {
7
+ headers?: Record<string, string>;
8
+ protocols?: string[];
9
+ }): WebSocketLike;
6
10
  export declare function createWebSocketTransportFactory(factory: WebSocketFactory): DaemonTransportFactory;
7
11
  export declare function bindWsHandler(ws: WebSocketLike, event: "open" | "close" | "error" | "message", handler: (...args: unknown[]) => void): () => void;
8
12
  //# sourceMappingURL=daemon-client-websocket-transport.d.ts.map
@@ -1,10 +1,22 @@
1
1
  import { extractRelayMessage } from "./daemon-client-transport-utils.js";
2
- export function defaultWebSocketFactory(url, options) {
2
+ function getGlobalWebSocket() {
3
3
  const globalWs = globalThis.WebSocket;
4
4
  if (!globalWs) {
5
5
  throw new Error("WebSocket is not available in this runtime");
6
6
  }
7
- return new globalWs(url, options?.protocols);
7
+ return globalWs;
8
+ }
9
+ export function defaultWebSocketFactory(url, options) {
10
+ const globalWs = getGlobalWebSocket();
11
+ if (options?.protocols === undefined) {
12
+ return new globalWs(url);
13
+ }
14
+ return new globalWs(url, options.protocols);
15
+ }
16
+ // React Native and Node-compatible WebSocket implementations accept this extra options object.
17
+ // Keep it out of the standard browser factory above.
18
+ export function nativeWebSocketFactory(url, options) {
19
+ return new (getGlobalWebSocket())(url, options?.protocols, { headers: options?.headers });
8
20
  }
9
21
  export function createWebSocketTransportFactory(factory) {
10
22
  return ({ url, headers, protocols }) => {
@@ -3,10 +3,11 @@ 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, TerminalCompatibilityDiagnosticResponse, 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, FileDownloadTokenResponse, FileEntryKind, FileEol, 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, CheckoutGitFetchResponse, CheckoutPrCreateResponse, CheckoutPrMergeResponse, CheckoutPrMergeMethod, CheckoutGithubSetAutoMergeResponse, CheckoutGithubGetCheckDetailsResponse, PreviewListConfigResponse, PreviewStartResponse, PreviewBindTabResponse, PreviewStopResponse, CheckoutPrStatusResponse, PullRequestTimelineResponse, CheckoutSwitchBranchResponse, StashSaveResponse, StashPopResponse, StashListResponse, KanbanBoardsListResponse, ProjectKanbanTarget, KanbanBoardGetResponse, KanbanCardMoveResponse, KanbanCardCreateResponse, KanbanTaskLinkResponse, ValidateBranchResponse, BranchSuggestionsResponse, FileVersion, CheckoutCommit, ParsedDiffFile, WorkspaceRecoveryState, CheckoutForgeGetCheckDetailsResponse, CheckoutForgeSetAutoMergeResponse, ProjectCreateDirectoryResponse, FsFileWriteResult, FsFileWriteBinaryResult, GitHubSearchResponse, GitHubSearchRequest, ForgeSearchResponse, ForgeSearchRequest, GitHostingProviderId, HostingSearchRequest, HostingSearchResponse, HostingAuthStatusResponse, DirectorySuggestionsResponse, OttoWorktreeListResponse, OttoWorktreeArchiveResponse, ProjectIconSource, ProjectIconResponse, ContextCategory, ContextPromptPreviewGetResponseMessage, ContextReportGetResponseMessage, ContextEdgeConvertResponseMessage, ContextFindingsFixResponseMessage, PersonalityMemoryListResponseMessage, PersonalityMemoryUpdateResponseMessage, PersonalityMemoryTransferResponseMessage, PersonalityMemoryStatsResponseMessage, ProjectKnowledgeListResponseMessage, ProjectKnowledgeGetResponseMessage, ProjectKnowledgeCreateResponseMessage, ProjectKnowledgeApplyResponseMessage, ProjectKnowledgeStatusResponseMessage, ProjectKnowledgeProjectApplyResponseMessage, ProjectKnowledgeReferenceApplyResponseMessage, ProjectKnowledgeRootApplyResponseMessage, ProjectKnowledgeDeleteResponseMessage, ProjectIconGetResponse, 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
- 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";
9
+ import type { BrainCatalogModel, BrainDiskUsage, BrainEvals, BrainHfSearchResult, BrainHostStatus, BrainInstalledModel, BrainInventoryModel, BrainJob, BrainLogsTailResponse, BrainLogsWatchResponse, BrainModelBudgetGetResponse, BrainModelDeleteResponse, BrainModelLoadResponse, BrainModelProfileGetResponse, BrainModelProfileSetResponse, BrainModelRenameResetResponse, BrainModelRenameResponse, BrainNetworkInfo, BrainRemoteConfig, BrainRepoQuant, BrainRuntime, ConnectorsListToolsResponse, ConnectorsOauthAuthorizeResponse, ConnectorsOauthDisconnectResponse, CommunicationsGetOverviewResponse, CommunicationsInboxGetHomeResponse, CommunicationsInboxNotificationsAcknowledgeResponse, CommunicationsInboxSearchResponse, CommunicationsInboxSetFavoriteResponse, CommunicationsInboxGetPresenceResponse, CommunicationsInboxGetMessagesResponse, CommunicationsInboxSetPresenceResponse, CommunicationsInboxSetEnabledResponse, CommunicationsInboxSendMessageResponse, CommunicationsRoomGetResponse, CommunicationsRoomThreadGetResponse, CommunicationsRoomMessageSendResponse, CommunicationsRoomReactionSetResponse, IntegrationsAuthorizationGetOverviewResponse, IntegrationsAuthorizationGetMethodsResponse, IntegrationsAuthorizationStartBrowserResponse, IntegrationsZoomStartAuthorizationResponse, CueMoment, MutableDaemonConfig, MutableDaemonConfigPatch, ProjectLink, SpeechSettingsOptions, SpeechTtsPreviewResult, SpeechTtsSpeakResult, SpeechTtsSpeakCancelResult, VisualizerVoiceCuesResult, AgentPersonalitiesGenerateProfileResult } from "@otto-code/protocol/messages";
10
+ import type { AgentConfigApply } from "@otto-code/protocol/messages";
10
11
  import { type DaemonTransportFactory, type WebSocketFactory } from "./daemon-client-transport.js";
11
12
  import { type DaemonClientTrafficHotspot, type DaemonClientTrafficTotals } from "./daemon-client-runtime-metrics.js";
12
13
  import { type TerminalStreamEvent } from "./terminal-stream-router.js";
@@ -127,8 +128,14 @@ export interface DaemonClientConfig {
127
128
  };
128
129
  runtimeMetricsIntervalMs?: number;
129
130
  runtimeMetricsWindowMs?: number;
131
+ trace?: DaemonClientTrace;
130
132
  capabilities?: Partial<Record<ClientCapability, unknown>>;
131
133
  }
134
+ export interface DaemonClientTrace {
135
+ isEnabled(): boolean;
136
+ beginSection(name: string, args?: Record<string, string>): void;
137
+ endSection(): void;
138
+ }
132
139
  export interface SendMessageOptions {
133
140
  messageId?: string;
134
141
  images?: Array<{
@@ -197,6 +204,7 @@ type CheckoutMergeFromBasePayload = CheckoutMergeFromBaseResponse["payload"];
197
204
  type CheckoutPullPayload = CheckoutPullResponse["payload"];
198
205
  type CheckoutPushPayload = CheckoutPushResponse["payload"];
199
206
  type CheckoutRefreshPayload = CheckoutRefreshResponse["payload"];
207
+ type CheckoutGitFetchPayload = CheckoutGitFetchResponse["payload"];
200
208
  type CheckoutPrCreatePayload = CheckoutPrCreateResponse["payload"];
201
209
  type CheckoutPrMergePayload = CheckoutPrMergeResponse["payload"];
202
210
  type CheckoutGithubSetAutoMergePayload = CheckoutGithubSetAutoMergeResponse["payload"];
@@ -480,42 +488,6 @@ type CloseItemsPayload = CloseItemsResponse["payload"];
480
488
  type KillTerminalPayload = KillTerminalResponse["payload"];
481
489
  type CaptureTerminalPayload = CaptureTerminalResponse["payload"];
482
490
  type TerminalCompatibilityDiagnosticPayload = TerminalCompatibilityDiagnosticResponse["payload"];
483
- type ChatCreatePayload = Extract<SessionOutboundMessage, {
484
- type: "chat/create/response";
485
- }>["payload"];
486
- type ChatListPayload = Extract<SessionOutboundMessage, {
487
- type: "chat/list/response";
488
- }>["payload"];
489
- type ChatInspectPayload = Extract<SessionOutboundMessage, {
490
- type: "chat/inspect/response";
491
- }>["payload"];
492
- type ChatDeletePayload = Extract<SessionOutboundMessage, {
493
- type: "chat/delete/response";
494
- }>["payload"];
495
- type ChatPostPayload = Extract<SessionOutboundMessage, {
496
- type: "chat/post/response";
497
- }>["payload"];
498
- type ChatReadPayload = Extract<SessionOutboundMessage, {
499
- type: "chat/read/response";
500
- }>["payload"];
501
- type ChatWaitPayload = Extract<SessionOutboundMessage, {
502
- type: "chat/wait/response";
503
- }>["payload"];
504
- type LoopRunPayload = Extract<SessionOutboundMessage, {
505
- type: "loop/run/response";
506
- }>["payload"];
507
- type LoopListPayload = Extract<SessionOutboundMessage, {
508
- type: "loop/list/response";
509
- }>["payload"];
510
- type LoopInspectPayload = Extract<SessionOutboundMessage, {
511
- type: "loop/inspect/response";
512
- }>["payload"];
513
- type LoopLogsPayload = Extract<SessionOutboundMessage, {
514
- type: "loop/logs/response";
515
- }>["payload"];
516
- type LoopStopPayload = Extract<SessionOutboundMessage, {
517
- type: "loop/stop/response";
518
- }>["payload"];
519
491
  type ScheduleCreatePayload = Extract<SessionOutboundMessage, {
520
492
  type: "schedule/create/response";
521
493
  }>["payload"];
@@ -583,9 +555,13 @@ export interface FetchAgentTimelineOptions {
583
555
  cursor?: FetchAgentTimelineCursor;
584
556
  limit?: number;
585
557
  projection?: FetchAgentTimelineProjection;
558
+ mergeWindow?: boolean;
586
559
  requestId?: string;
587
560
  timeout?: number;
588
561
  }
562
+ export type AgentTimelinePromptIndexPayload = Extract<SessionOutboundMessage, {
563
+ type: "agent.timeline.list_prompts.response";
564
+ }>["payload"];
589
565
  export type ProviderSubagentListPayload = Extract<SessionOutboundMessage, {
590
566
  type: "agent.provider_subagents.list.response";
591
567
  }>["payload"];
@@ -664,70 +640,6 @@ export type FetchWorkspacesOptions = Omit<FetchWorkspacesRequest, "type" | "requ
664
640
  };
665
641
  export type FetchWorkspacesEntry = FetchWorkspacesPayload["entries"][number];
666
642
  export type FetchWorkspacesPageInfo = FetchWorkspacesPayload["pageInfo"];
667
- export interface CreateChatRoomOptions {
668
- name: string;
669
- purpose?: string | null;
670
- requestId?: string;
671
- }
672
- export interface InspectChatRoomOptions {
673
- room: string;
674
- requestId?: string;
675
- }
676
- export interface DeleteChatRoomOptions {
677
- room: string;
678
- requestId?: string;
679
- }
680
- export interface PostChatMessageOptions {
681
- room: string;
682
- body: string;
683
- authorAgentId?: string;
684
- replyToMessageId?: string | null;
685
- requestId?: string;
686
- }
687
- export interface ReadChatMessagesOptions {
688
- room: string;
689
- limit?: number;
690
- since?: string;
691
- authorAgentId?: string;
692
- requestId?: string;
693
- timeout?: number;
694
- }
695
- export interface WaitForChatMessagesOptions {
696
- room: string;
697
- afterMessageId?: string | null;
698
- timeoutMs?: number;
699
- requestId?: string;
700
- }
701
- export interface RunLoopOptions {
702
- prompt: string;
703
- cwd: string;
704
- provider?: string;
705
- model?: string;
706
- modeId?: string;
707
- verifierProvider?: string;
708
- verifierModel?: string;
709
- verifierModeId?: string;
710
- verifyPrompt?: string | null;
711
- verifyChecks?: string[];
712
- name?: string | null;
713
- sleepMs?: number;
714
- maxIterations?: number;
715
- maxTimeMs?: number;
716
- requestId?: string;
717
- }
718
- export interface InspectLoopOptions {
719
- id: string;
720
- requestId?: string;
721
- }
722
- export interface LoopLogsOptions {
723
- id: string;
724
- afterSeq?: number;
725
- requestId?: string;
726
- }
727
- export interface StopLoopOptions {
728
- id: string;
729
- requestId?: string;
730
- }
731
643
  export interface CreateScheduleOptions {
732
644
  prompt: string;
733
645
  name?: string | null;
@@ -758,11 +670,7 @@ export interface CreateScheduleOptions {
758
670
  archiveOnFinish?: boolean;
759
671
  isolation?: "local" | "worktree";
760
672
  title?: string | null;
761
- approvalPolicy?: string;
762
- sandboxMode?: string;
763
- networkAccess?: boolean;
764
- webSearch?: boolean;
765
- extra?: AgentSessionConfig["extra"];
673
+ providerOptions?: AgentSessionConfig["providerOptions"];
766
674
  systemPrompt?: string;
767
675
  mcpServers?: AgentSessionConfig["mcpServers"];
768
676
  };
@@ -839,6 +747,21 @@ export interface WaitForFinishResult {
839
747
  error: string | null;
840
748
  lastMessage: string | null;
841
749
  }
750
+ type GetDaemonConfigResponse = Extract<SessionOutboundMessage, {
751
+ type: "get_daemon_config_response";
752
+ }>;
753
+ type SetDaemonConfigResponse = Extract<SessionOutboundMessage, {
754
+ type: "set_daemon_config_response";
755
+ }>;
756
+ type CorrelatedResponseMessage = Extract<SessionOutboundMessage, {
757
+ payload: {
758
+ requestId: string;
759
+ };
760
+ }> | GetDaemonConfigResponse | SetDaemonConfigResponse;
761
+ type CorrelatedResponseType = CorrelatedResponseMessage["type"];
762
+ type CorrelatedResponsePayload<TType extends CorrelatedResponseType> = Extract<CorrelatedResponseMessage, {
763
+ type: TType;
764
+ }>["payload"];
842
765
  type ProjectGithubClonePayload = Extract<SessionOutboundMessage, {
843
766
  type: "project.github.clone.response";
844
767
  }>["payload"];
@@ -903,6 +826,11 @@ export declare class DaemonClient {
903
826
  type: TType;
904
827
  }>) => void): () => void;
905
828
  on(handler: DaemonEventHandler): () => void;
829
+ private beginTraceSection;
830
+ private endTraceSection;
831
+ private traceInstant;
832
+ private sendJsonMessage;
833
+ private sendTransportFrame;
906
834
  /**
907
835
  * Send a session message. For fire-and-forget messages (heartbeats, etc.),
908
836
  * failures are suppressed if `suppressSendErrors` is configured.
@@ -941,6 +869,7 @@ export declare class DaemonClient {
941
869
  appVisibilityChangedAt?: string;
942
870
  }): void;
943
871
  registerPushToken(token: string): void;
872
+ unregisterPushToken(token: string): Promise<void>;
944
873
  ping(params?: {
945
874
  requestId?: string;
946
875
  timeoutMs?: number;
@@ -1137,6 +1066,19 @@ export declare class DaemonClient {
1137
1066
  renameProject(projectId: string, customName: string | null, requestId?: string): Promise<{
1138
1067
  customName: string | null;
1139
1068
  }>;
1069
+ /**
1070
+ * Sets (or with a null target, clears) which tracking board a project shows
1071
+ * on the Kanban screen. The daemon normalizes what it stores - a pasted board
1072
+ * URL comes back as the parsed id - so the caller should render the returned
1073
+ * target rather than its own draft.
1074
+ */
1075
+ setKanbanProjectTarget(input: {
1076
+ projectId: string;
1077
+ target: ProjectKanbanTarget | null;
1078
+ }, requestId?: string): Promise<{
1079
+ target: ProjectKanbanTarget | null;
1080
+ }>;
1081
+ setProjectIcon(projectId: string, source: ProjectIconSource, requestId?: string): Promise<void>;
1140
1082
  removeProject(projectId: string, requestId?: string): Promise<{
1141
1083
  removedWorkspaceIds: string[];
1142
1084
  }>;
@@ -1180,6 +1122,42 @@ export declare class DaemonClient {
1180
1122
  parentPath: string;
1181
1123
  name: string;
1182
1124
  }, requestId?: string): Promise<ProjectCreateDirectoryPayload>;
1125
+ /**
1126
+ * The provider-agnostic Kanban board surface. Each call names its provider
1127
+ * ("memory", "github", ...) - the daemon dispatches to the registered
1128
+ * KanbanProvider implementation and the wire never carries provider-native
1129
+ * identifiers beyond the opaque board/card/column ids.
1130
+ *
1131
+ * A project-scoped request is authoritative: the daemon resolves the
1132
+ * project's configured board target and overrides providerId from it. The
1133
+ * wire still carries providerId so older clients keep working; pass an inert
1134
+ * value (e.g. "github") when a project is supplied.
1135
+ */
1136
+ kanbanListBoards(input: {
1137
+ providerId: string;
1138
+ projectId?: string;
1139
+ projectKey?: string;
1140
+ }, requestId?: string): Promise<KanbanBoardsListResponse["payload"]>;
1141
+ kanbanGetBoard(providerId: string, boardId: string, requestId?: string): Promise<KanbanBoardGetResponse["payload"]>;
1142
+ kanbanMoveCard(input: {
1143
+ providerId: string;
1144
+ boardId: string;
1145
+ cardId: string;
1146
+ targetColumnId: string;
1147
+ }, requestId?: string): Promise<KanbanCardMoveResponse["payload"]>;
1148
+ kanbanCreateCard(input: {
1149
+ providerId: string;
1150
+ boardId: string;
1151
+ columnId?: string;
1152
+ title: string;
1153
+ body?: string;
1154
+ }, requestId?: string): Promise<KanbanCardCreateResponse["payload"]>;
1155
+ kanbanLinkTask(input: {
1156
+ providerId: string;
1157
+ boardId: string;
1158
+ externalId: string;
1159
+ columnId?: string;
1160
+ }, requestId?: string): Promise<KanbanTaskLinkResponse["payload"]>;
1183
1161
  getCommitFileDiff(cwd: string, sha: string, path: string, requestId?: string): Promise<{
1184
1162
  file: ParsedDiffFile | null;
1185
1163
  }>;
@@ -1207,6 +1185,10 @@ export declare class DaemonClient {
1207
1185
  unsubscribe: () => void;
1208
1186
  }>;
1209
1187
  fetchAgentTimeline(agentId: string, options?: FetchAgentTimelineOptions): Promise<FetchAgentTimelinePayload>;
1188
+ listAgentTimelinePrompts(agentId: string, options?: {
1189
+ requestId?: string;
1190
+ timeout?: number;
1191
+ }): Promise<AgentTimelinePromptIndexPayload>;
1210
1192
  buildAgentForkContext(agentId: string, options?: AgentForkContextOptions): Promise<AgentForkContextPayload>;
1211
1193
  sendAgentMessage(agentId: string, text: string, options?: SendMessageOptions): Promise<SendAgentMessageResult>;
1212
1194
  sendMessage(agentId: string, text: string, options?: SendMessageOptions): Promise<void>;
@@ -1244,6 +1226,14 @@ export declare class DaemonClient {
1244
1226
  * server_info.features.setAgentPersonality.
1245
1227
  */
1246
1228
  setAgentPersonality(agentId: string, personalityId: string | null): Promise<AgentProviderNotice | null>;
1229
+ /**
1230
+ * Applies a whole agent-config bundle in one request. Use this instead of
1231
+ * chaining the single-field setters when the values belong together so client
1232
+ * interruption and other mutations cannot interleave between steps. A
1233
+ * provider rejection can still leave earlier steps applied.
1234
+ * Gated on `server_info.features.agentConfigApply`.
1235
+ */
1236
+ applyAgentConfig(agentId: string, config: AgentConfigApply): Promise<AgentProviderNotice | null>;
1247
1237
  restartServer(reason?: string, requestId?: string): Promise<RestartRequestedStatusPayload>;
1248
1238
  shutdownServer(options?: ShutdownServerOptions): Promise<ShutdownRequestedStatusPayload>;
1249
1239
  updateDaemon(requestId?: string): Promise<DaemonUpdateResponse["payload"]>;
@@ -1324,6 +1314,7 @@ export declare class DaemonClient {
1324
1314
  checkoutPull(cwd: string, requestId?: string): Promise<CheckoutPullPayload>;
1325
1315
  checkoutPush(cwd: string, requestId?: string): Promise<CheckoutPushPayload>;
1326
1316
  checkoutRefresh(cwd: string, requestId?: string): Promise<CheckoutRefreshPayload>;
1317
+ checkoutGitFetch(cwd: string, requestId?: string): Promise<CheckoutGitFetchPayload>;
1327
1318
  checkoutPrCreate(cwd: string, input: {
1328
1319
  title?: string;
1329
1320
  body?: string;
@@ -1458,12 +1449,6 @@ export declare class DaemonClient {
1458
1449
  * frames leave in order and behind the JSON request that announced them.
1459
1450
  */
1460
1451
  private sendFileTransfer;
1461
- /** Create an empty file or a directory. Never overwrites - see FileCreateResultSchema. */
1462
- createFileEntry(options: FileCreateOptions): Promise<FileCreateResult>;
1463
- /** Permanent delete - an unlink, not a move to any trash. */
1464
- deleteFileEntry(options: FileDeleteOptions): Promise<FileDeleteResult>;
1465
- /** Rename, which is also move. Never clobbers an occupied destination. */
1466
- renameFileEntry(options: FileRenameOptions): Promise<FileRenameResult>;
1467
1452
  refineFile(options: FileRefineOptions): Promise<FileRefineResult>;
1468
1453
  /**
1469
1454
  * Project-wide search. Per-file results stream through onFileResult (the
@@ -1745,6 +1730,7 @@ export declare class DaemonClient {
1745
1730
  }): Promise<ListAvailableProvidersPayload>;
1746
1731
  getProvidersSnapshot(options?: {
1747
1732
  cwd?: string;
1733
+ ifNoneMatch?: string;
1748
1734
  requestId?: string;
1749
1735
  }): Promise<GetProvidersSnapshotPayload>;
1750
1736
  getDaemonConfig(requestId?: string): Promise<{
@@ -1768,6 +1754,114 @@ export declare class DaemonClient {
1768
1754
  connectorsOauthAuthorize(connectorId: string, scope?: string, requestId?: string): Promise<ConnectorsOauthAuthorizeResponse["payload"]>;
1769
1755
  /** Drop a connector's stored authorization. */
1770
1756
  connectorsOauthDisconnect(connectorId: string, requestId?: string): Promise<ConnectorsOauthDisconnectResponse["payload"]>;
1757
+ /**
1758
+ * Read the daemon-owned, provider-neutral communications inbox projection.
1759
+ * Requires server_info.features.communications; callers own that one gate.
1760
+ */
1761
+ communicationsGetOverview(requestId?: string): Promise<CommunicationsGetOverviewResponse["payload"]["overview"]>;
1762
+ communicationsInboxGetHome(providerId: string, requestId?: string): Promise<CommunicationsInboxGetHomeResponse["payload"]["home"]>;
1763
+ communicationsInboxAcknowledgeNotifications(input: {
1764
+ providerId: string;
1765
+ notificationIds?: string[];
1766
+ conversationId?: string;
1767
+ clearAll?: boolean;
1768
+ }, requestId?: string): Promise<CommunicationsInboxNotificationsAcknowledgeResponse["payload"]["home"]>;
1769
+ communicationsInboxSearch(input: {
1770
+ providerId: string;
1771
+ query: string;
1772
+ }, requestId?: string): Promise<CommunicationsInboxSearchResponse["payload"]["results"]>;
1773
+ communicationsInboxSetFavorite(input: {
1774
+ providerId: string;
1775
+ conversationId: string;
1776
+ favorite: boolean;
1777
+ }, requestId?: string): Promise<CommunicationsInboxSetFavoriteResponse["payload"]["home"]>;
1778
+ communicationsInboxGetPresence(providerId: string, requestId?: string): Promise<CommunicationsInboxGetPresenceResponse["payload"]["presence"]>;
1779
+ communicationsInboxSetPresence(input: {
1780
+ providerId: string;
1781
+ status: "available" | "busy" | "do_not_disturb" | "away" | "out_of_office" | "unknown";
1782
+ }, requestId?: string): Promise<CommunicationsInboxSetPresenceResponse["payload"]["presence"]>;
1783
+ communicationsInboxSetEnabled(input: {
1784
+ providerId: string;
1785
+ enabled: boolean;
1786
+ }, requestId?: string): Promise<CommunicationsInboxSetEnabledResponse["payload"]["presence"]>;
1787
+ communicationsInboxGetMessages(input: {
1788
+ providerId: string;
1789
+ conversationId: string;
1790
+ }, requestId?: string): Promise<CommunicationsInboxGetMessagesResponse["payload"]["messages"]>;
1791
+ communicationsInboxSendMessage(input: {
1792
+ providerId: string;
1793
+ conversationId: string;
1794
+ text: string;
1795
+ }, requestId?: string): Promise<CommunicationsInboxSendMessageResponse["payload"]["message"]>;
1796
+ /** Requires server_info.features.communicationsRooms. */
1797
+ communicationsRoomGet(input: {
1798
+ providerId: string;
1799
+ conversationId: string;
1800
+ }, requestId?: string): Promise<CommunicationsRoomGetResponse["payload"]["room"]>;
1801
+ communicationsRoomThreadGet(input: {
1802
+ providerId: string;
1803
+ conversationId: string;
1804
+ parentMessageId: string;
1805
+ }, requestId?: string): Promise<CommunicationsRoomThreadGetResponse["payload"]["messages"]>;
1806
+ communicationsRoomMessageSend(input: {
1807
+ providerId: string;
1808
+ conversationId: string;
1809
+ text: string;
1810
+ parentMessageId?: string | null;
1811
+ }, requestId?: string): Promise<CommunicationsRoomMessageSendResponse["payload"]["message"]>;
1812
+ communicationsRoomReactionSet(input: {
1813
+ providerId: string;
1814
+ conversationId: string;
1815
+ messageId: string;
1816
+ emoji: string;
1817
+ active: boolean;
1818
+ }, requestId?: string): Promise<CommunicationsRoomReactionSetResponse["payload"]["message"]>;
1819
+ /**
1820
+ * Daemon-owned meeting transcript library. Requires
1821
+ * `server_info.features.meetingTranscripts`; callers own that capability gate.
1822
+ */
1823
+ meetingsTranscriptsList(requestId?: string): Promise<Extract<SessionOutboundMessage, {
1824
+ type: "meetings.transcripts.list.response";
1825
+ }>["payload"]["records"]>;
1826
+ meetingsTranscriptsCreate(input: {
1827
+ provider: string;
1828
+ title: string;
1829
+ content: string;
1830
+ occurredAt?: string;
1831
+ }, requestId?: string): Promise<Extract<SessionOutboundMessage, {
1832
+ type: "meetings.transcripts.create.response";
1833
+ }>["payload"]["record"]>;
1834
+ meetingsTranscriptsUpdate(input: {
1835
+ id: string;
1836
+ title?: string;
1837
+ content?: string;
1838
+ }, requestId?: string): Promise<Extract<SessionOutboundMessage, {
1839
+ type: "meetings.transcripts.update.response";
1840
+ }>["payload"]["record"]>;
1841
+ meetingsTranscriptsDelete(id: string, requestId?: string): Promise<boolean>;
1842
+ /**
1843
+ * Read daemon-owned connection metadata for reusable integration settings.
1844
+ * Requires server_info.features.integrationAuthorization; callers own that
1845
+ * one capability gate.
1846
+ */
1847
+ integrationsAuthorizationGetOverview(requestId?: string): Promise<IntegrationsAuthorizationGetOverviewResponse["payload"]["overview"]>;
1848
+ /**
1849
+ * List the daemon's nonsecret authorization choices for an integration.
1850
+ * Requires server_info.features.integrationAuthorization; callers own that
1851
+ * one capability gate.
1852
+ */
1853
+ integrationsAuthorizationGetMethods(integrationId?: string, requestId?: string): Promise<IntegrationsAuthorizationGetMethodsResponse["payload"]["methods"]>;
1854
+ /**
1855
+ * Starts a daemon-owned browser sign-in through a registered integration
1856
+ * driver. Requires server_info.features.integrationAuthorizationBrowserFlow;
1857
+ * callers own that one capability gate.
1858
+ */
1859
+ integrationsAuthorizationStartBrowser(input: {
1860
+ integrationId: string;
1861
+ connectionId: string;
1862
+ }, requestId?: string): Promise<IntegrationsAuthorizationStartBrowserResponse["payload"]>;
1863
+ /** Starts the daemon-owned Zoom Team Chat browser sign-in. */
1864
+ integrationsZoomStartAuthorization(requestId?: string): Promise<IntegrationsZoomStartAuthorizationResponse["payload"]>;
1771
1865
  /**
1772
1866
  * The brain's status. Pass `resources` only from a surface that renders the
1773
1867
  * live CPU/RAM/GPU numbers: it costs an `nvidia-smi` spawn on the brain, and
@@ -1787,15 +1881,37 @@ export declare class DaemonClient {
1787
1881
  brainModelsScan(requestId?: string): Promise<BrainInstalledModel[]>;
1788
1882
  brainCatalogList(requestId?: string): Promise<BrainCatalogModel[]>;
1789
1883
  brainRuntimeList(requestId?: string): Promise<BrainRuntime[]>;
1790
- brainModelsPull(model: string, componentsOrRequestId?: string[] | string, quantOrRequestId?: string): Promise<BrainJob>;
1884
+ brainModelsPull(model: string, componentsOrRequestId?: string[] | string, quantOrRequestId?: string, expectedBytes?: number): Promise<BrainJob>;
1791
1885
  brainHfSearch(query: string, limit?: number | null, requestId?: string): Promise<BrainHfSearchResult[]>;
1792
1886
  brainHfQuants(repo: string, requestId?: string): Promise<BrainRepoQuant[]>;
1793
- brainModelsAdd(repo: string, quant: string, components?: string[], requestId?: string): Promise<BrainJob>;
1887
+ brainModelsAdd(repo: string, quant: string, components?: string[], requestId?: string, expectedBytes?: number): Promise<BrainJob>;
1794
1888
  brainRuntimeInstall(build?: string | null, requestId?: string): Promise<BrainJob>;
1795
1889
  brainRuntimeRemove(name: string, requestId?: string): Promise<BrainJob>;
1796
1890
  brainCalibrate(model: string, requestId?: string): Promise<BrainJob>;
1797
1891
  brainSweep(model: string, requestId?: string): Promise<BrainJob>;
1798
1892
  brainBench(model?: string | null, requestId?: string): Promise<BrainJob>;
1893
+ createFileEntry(input: {
1894
+ cwd: string;
1895
+ parentPath: string;
1896
+ name: string;
1897
+ kind: "file" | "directory";
1898
+ }): Promise<CorrelatedResponsePayload<"fs.entry.create.response">>;
1899
+ renameFileEntry(input: {
1900
+ cwd: string;
1901
+ path: string;
1902
+ name: string;
1903
+ }): Promise<CorrelatedResponsePayload<"fs.entry.rename.response">>;
1904
+ duplicateFileEntry(input: {
1905
+ cwd: string;
1906
+ path: string;
1907
+ }): Promise<CorrelatedResponsePayload<"fs.entry.duplicate.response">>;
1908
+ deleteFileEntry(input: {
1909
+ cwd: string;
1910
+ path: string;
1911
+ }): Promise<CorrelatedResponsePayload<"fs.entry.delete.response">>;
1912
+ checkoutDiscardChanges(cwd: string, input: {
1913
+ paths: string[];
1914
+ }): Promise<CorrelatedResponsePayload<"checkout.discard_changes.response">>;
1799
1915
  brainJobsList(requestId?: string): Promise<BrainJob[]>;
1800
1916
  brainJobsCancel(jobId: string, requestId?: string): Promise<BrainJob[]>;
1801
1917
  /**
@@ -1828,6 +1944,7 @@ export declare class DaemonClient {
1828
1944
  brainModelLoad(modelId: string, requestId?: string): Promise<BrainModelLoadResponse["payload"]>;
1829
1945
  /** Unload the resident model, leaving the brain up and serving nothing. */
1830
1946
  brainModelUnload(requestId?: string): Promise<BrainHostStatus | null>;
1947
+ getProjectIcon(projectId: string, requestId?: string): Promise<ProjectIconGetResponse["payload"]>;
1831
1948
  /** Delete a model's files. The brain refuses while that model is loaded. */
1832
1949
  brainModelDelete(modelId: string, requestId?: string): Promise<BrainModelDeleteResponse["payload"]>;
1833
1950
  brainModelComponentDelete(modelId: string, componentId: string, requestId?: string): Promise<{
@@ -1845,6 +1962,15 @@ export declare class DaemonClient {
1845
1962
  brainModelRenameReset(modelId: string, requestId?: string): Promise<BrainModelRenameResetResponse["payload"]>;
1846
1963
  /** Tail the brain's llama-server log. */
1847
1964
  brainLogsTail(limit?: number | null, requestId?: string): Promise<BrainLogsTailResponse["payload"]>;
1965
+ /**
1966
+ * Turn the live Brain log feed on or off for this socket.
1967
+ *
1968
+ * Only meaningful against a daemon advertising `features.brainLogWatch`; older
1969
+ * daemons push every line regardless, and the request would go unrouted.
1970
+ * Watching is per socket, so this does not affect the same account's other
1971
+ * connected clients.
1972
+ */
1973
+ brainLogsWatch(watching: boolean, requestId?: string): Promise<BrainLogsWatchResponse["payload"]>;
1848
1974
  getSpeechSettingsOptions(requestId?: string): Promise<{
1849
1975
  requestId: string;
1850
1976
  options: SpeechSettingsOptions;
@@ -1959,13 +2085,6 @@ export declare class DaemonClient {
1959
2085
  stripAnsi?: boolean;
1960
2086
  }, requestId?: string): Promise<CaptureTerminalPayload>;
1961
2087
  runTerminalCompatibilityDiagnostic(requestId?: string): Promise<TerminalCompatibilityDiagnosticPayload>;
1962
- createChatRoom(options: CreateChatRoomOptions): Promise<ChatCreatePayload>;
1963
- listChatRooms(requestId?: string): Promise<ChatListPayload>;
1964
- inspectChatRoom(options: InspectChatRoomOptions): Promise<ChatInspectPayload>;
1965
- deleteChatRoom(options: DeleteChatRoomOptions): Promise<ChatDeletePayload>;
1966
- postChatMessage(options: PostChatMessageOptions): Promise<ChatPostPayload>;
1967
- readChatMessages(options: ReadChatMessagesOptions): Promise<ChatReadPayload>;
1968
- waitForChatMessages(options: WaitForChatMessagesOptions): Promise<ChatWaitPayload>;
1969
2088
  scheduleCreate(options: CreateScheduleOptions): Promise<ScheduleCreatePayload>;
1970
2089
  scheduleList(requestId?: string): Promise<ScheduleListPayload>;
1971
2090
  scheduleInspect(options: InspectScheduleOptions): Promise<ScheduleInspectPayload>;
@@ -2026,11 +2145,6 @@ export declare class DaemonClient {
2026
2145
  artifactId: string;
2027
2146
  requestId?: string;
2028
2147
  }): Promise<ArtifactGetContentPayload>;
2029
- loopRun(options: RunLoopOptions): Promise<LoopRunPayload>;
2030
- loopList(requestId?: string): Promise<LoopListPayload>;
2031
- loopInspect(options: string | InspectLoopOptions): Promise<LoopInspectPayload>;
2032
- loopLogs(options: string | LoopLogsOptions, afterSeq?: number): Promise<LoopLogsPayload>;
2033
- loopStop(options: string | StopLoopOptions): Promise<LoopStopPayload>;
2034
2148
  onTerminalStreamEvent(handler: (event: TerminalStreamEvent) => void): () => void;
2035
2149
  waitForTerminalStreamEvent(predicate: (event: TerminalStreamEvent) => boolean, timeout?: number): Promise<TerminalStreamEvent>;
2036
2150
  private createRequestId;