@otto-code/protocol 0.9.0 → 0.9.2

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/dist/messages.js CHANGED
@@ -1,3 +1,7 @@
1
+ import { AgentRateLimitInfoSchema } from "./agent-rate-limit.js";
2
+ export { AgentRateLimitInfoSchema } from "./agent-rate-limit.js";
3
+ import { WSPingMessageSchema, WSPongMessageSchema, WSHelloMessageSchema, WSRecordingStateMessageSchema, } from "./websocket-control.js";
4
+ export { WSPingMessageSchema, WSPongMessageSchema, WSHelloMessageSchema, WSRecordingStateMessageSchema, } from "./websocket-control.js";
1
5
  import { z } from "zod";
2
6
  import { MutableAgentBehaviorsConfigSchema, MutableAgentBehaviorsConfigPatchSchema, MutableLspConfigSchema, MutableLspConfigPatchSchema, MutableDotnetSolutionConfigSchema, MutableDotnetSolutionConfigPatchSchema, MutableGitHostingConfigSchema, MutableKanbanConfigSchema, MutableProjectKnowledgeConfigSchema, MutableProjectKnowledgeConfigPatchSchema, MutableProjectArtifactsConfigSchema, MutableProjectArtifactsConfigPatchSchema, MutableProjectWorkflowsConfigSchema, MutableProjectWorkflowsConfigPatchSchema, MutableAgentPersonalitiesConfigSchema, MutableAgentPersonalitiesConfigPatchSchema, MutableAgentTeamsConfigSchema, MutableAgentTeamsConfigPatchSchema, MutableBrainConfigSchema, MutableBrainConfigPatchSchema, MutableGitFetchConfigSchema, DEFAULT_MUTABLE_BRAIN_CONFIG, } from "./daemon-config.js";
3
7
  import { VisualizerVoiceCuesGenerateRequestSchema, VisualizerVoiceCuesGenerateResponseSchema, AgentProfileSpinnerSchema, AgentPersonalityVoiceSchema, AgentPersonalityVoiceCuesSchema, AgentPersonalitiesGetStatsRequestSchema, AgentPersonalitiesGenerateProfileRequestSchema, AgentPersonalitiesGetStatsResponseSchema, AgentPersonalitiesGenerateProfileResponseSchema, AgentProfileStatsRequestSchema, AgentProfileStatsResponseSchema, AgentProfileGeneratePromptRequestSchema, AgentProfileGeneratePromptResponseSchema, AgentProfileGenerateVoiceCuesRequestSchema, AgentProfileGenerateVoiceCuesResponseSchema, PersonalityMemoryListRequestMessageSchema, PersonalityMemoryListResponseMessageSchema, PersonalityMemoryUpdateRequestMessageSchema, PersonalityMemoryUpdateResponseMessageSchema, PersonalityMemoryTransferRequestMessageSchema, PersonalityMemoryTransferResponseMessageSchema, PersonalityMemoryStatsRequestMessageSchema, PersonalityMemoryStatsResponseMessageSchema, ProfileMemoryListRequestMessageSchema, ProfileMemoryListResponseMessageSchema, ProfileMemoryUpdateRequestMessageSchema, ProfileMemoryUpdateResponseMessageSchema, ProfileMemoryTransferRequestMessageSchema, ProfileMemoryTransferResponseMessageSchema, ProfileMemoryStatsRequestMessageSchema, ProfileMemoryStatsResponseMessageSchema, } from "./personality-schemas.js";
@@ -13,7 +17,7 @@ import { QueuedAgentMessagePayloadSchema, AgentQueueRemoveRequestMessageSchema,
13
17
  import { FileEolSchema, FileCreateRequestSchema, FileDeleteRequestSchema, FileRenameRequestSchema, FileWatchSubscribeRequestSchema, FileWatchUnsubscribeRequestSchema, FileSearchRequestSchema, FileReplaceRequestSchema, FileCreateResponseSchema, FileDeleteResponseSchema, FileRenameResponseSchema, FileWatchSubscribeResponseSchema, FileWatchUnsubscribeResponseSchema, FileSearchResultEventSchema, FileSearchResponseSchema, FileReplaceResponseSchema, FileWatchEventSchema, } from "./file-operations.js";
14
18
  import { FileRefineRequestSchema, FileRefineResponseSchema } from "./refine.js";
15
19
  import { MutableSpeechConfigSchema, SpeechSettingsGetOptionsRequestSchema, SpeechTtsPreviewRequestSchema, SpeechTtsSpeakRequestSchema, SpeechTtsSpeakCancelRequestSchema, SpeechSettingsGetOptionsResponseSchema, SpeechTtsPreviewResponseSchema, SpeechTtsSpeakResponseSchema, SpeechTtsSpeakCancelResponseSchema, } from "./speech.js";
16
- import { ProjectKnowledgeListRequestMessageSchema, ProjectKnowledgeListResponseMessageSchema, ProjectKnowledgeGetRequestMessageSchema, ProjectKnowledgeGetResponseMessageSchema, ProjectKnowledgeCreateRequestMessageSchema, ProjectKnowledgeCreateResponseMessageSchema, ProjectKnowledgeApplyRequestMessageSchema, ProjectKnowledgeApplyResponseMessageSchema, ProjectKnowledgeStatusRequestMessageSchema, ProjectKnowledgeStatusResponseMessageSchema, ProjectKnowledgeProjectApplyRequestMessageSchema, ProjectKnowledgeProjectApplyResponseMessageSchema, ProjectKnowledgeReferenceApplyRequestMessageSchema, ProjectKnowledgeReferenceApplyResponseMessageSchema, ProjectKnowledgeRootApplyRequestMessageSchema, ProjectKnowledgeRootApplyResponseMessageSchema, ProjectKnowledgeRefineApplyRequestMessageSchema, ProjectKnowledgeRefineApplyResponseMessageSchema, ProjectKnowledgeRefinementProposeRequestMessageSchema, ProjectKnowledgeRefinementProposeResponseMessageSchema, ProjectKnowledgeDeleteRequestMessageSchema, ProjectKnowledgeStoreLocationValueSchema, ProjectKnowledgeStoreGetRequestMessageSchema, ProjectKnowledgeStoreGetResponseMessageSchema, ProjectKnowledgeStoreSetRequestMessageSchema, ProjectKnowledgeStoreSetResponseMessageSchema, ProjectKnowledgeDeleteResponseMessageSchema, } from "./project-knowledge.js";
20
+ import { ProjectKnowledgeListRequestMessageSchema, ProjectKnowledgeListResponseMessageSchema, ProjectKnowledgeGetRequestMessageSchema, ProjectKnowledgeGetResponseMessageSchema, ProjectKnowledgeRootGetRequestMessageSchema, ProjectKnowledgeRootGetResponseMessageSchema, ProjectKnowledgeCreateRequestMessageSchema, ProjectKnowledgeCreateResponseMessageSchema, ProjectKnowledgeApplyRequestMessageSchema, ProjectKnowledgeApplyResponseMessageSchema, ProjectKnowledgeStatusRequestMessageSchema, ProjectKnowledgeStatusResponseMessageSchema, ProjectKnowledgeProjectApplyRequestMessageSchema, ProjectKnowledgeProjectApplyResponseMessageSchema, ProjectKnowledgeReferenceApplyRequestMessageSchema, ProjectKnowledgeReferenceApplyResponseMessageSchema, ProjectKnowledgeRootApplyRequestMessageSchema, ProjectKnowledgeRootApplyResponseMessageSchema, ProjectKnowledgeRefineApplyRequestMessageSchema, ProjectKnowledgeRefineApplyResponseMessageSchema, ProjectKnowledgeRefinementProposeRequestMessageSchema, ProjectKnowledgeRefinementProposeResponseMessageSchema, ProjectKnowledgeDeleteRequestMessageSchema, ProjectKnowledgeStoreLocationValueSchema, ProjectKnowledgeStoreGetRequestMessageSchema, ProjectKnowledgeStoreGetResponseMessageSchema, ProjectKnowledgeStoreSetRequestMessageSchema, ProjectKnowledgeStoreSetResponseMessageSchema, ProjectKnowledgeDeleteResponseMessageSchema, } from "./project-knowledge.js";
17
21
  import { CheckoutGitGetOperationLogRequestSchema, CheckoutGitGetOperationLogResponseSchema, CheckoutGitLogAppendedNotificationSchema, CheckoutGitCommitRequestSchema, CheckoutGitCommitAgentRequestSchema, CheckoutGitRollbackRequestSchema, CheckoutGitCommitResponseSchema, CheckoutGitCommitAgentResponseSchema, CheckoutGitRollbackResponseSchema, GitFileHistoryEntrySchema, GitBlameLineSchema, GitBlameCommitSchema, } from "./git-operations.js";
18
22
  import { LspServersListRequestSchema, LspServerStopRequestSchema, LspActivityChangedStatusPayloadSchema, LspDiagnosticsChangedStatusPayloadSchema, LspServersListResponseSchema, LspServerStopResponseSchema, CodeListFilesRequestSchema, CodeSymbolsRequestSchema, CodeOutlineRequestSchema, CodeDefinitionRequestSchema, CodeDocumentSyncRequestSchema, CodeDocumentCloseRequestSchema, CodeHoverRequestSchema, CodeReferencesRequestSchema, CodeRenamePreviewRequestSchema, CodeRenameApplyRequestSchema, CodeRenameUndoRequestSchema, CodeSolutionListRequestSchema, CodeSolutionGetTreeRequestSchema, CodeSolutionLoadProjectRequestSchema, CodeListFilesResponseSchema, CodeSymbolsResponseSchema, CodeDefinitionResponseSchema, CodeDocumentSyncResponseSchema, CodeDocumentCloseResponseSchema, CodeHoverResponseSchema, CodeReferencesResponseSchema, CodeRenamePreviewResponseSchema, CodeRenameUndoResponseSchema, CodeRenameApplyResponseSchema, CodeSolutionListResponseSchema, CodeSolutionGetTreeResponseSchema, CodeSolutionLoadProjectResponseSchema, CodeOutlineResponseSchema, } from "./code-intelligence.js";
19
23
  import { CommunicationsGetOverviewRequestSchema, CommunicationsGetOverviewResponseSchema, CommunicationsInboxGetHomeRequestSchema, CommunicationsInboxGetHomeResponseSchema, CommunicationsInboxSearchRequestSchema, CommunicationsInboxSearchResponseSchema, CommunicationsInboxSetFavoriteRequestSchema, CommunicationsInboxSetFavoriteResponseSchema, CommunicationsInboxNotificationsAcknowledgeRequestSchema, CommunicationsInboxNotificationsAcknowledgeResponseSchema, CommunicationsInboxGetPresenceRequestSchema, CommunicationsInboxGetPresenceResponseSchema, CommunicationsInboxPresenceChangedNotificationSchema, CommunicationsInboxSetPresenceRequestSchema, CommunicationsInboxSetPresenceResponseSchema, CommunicationsInboxSetEnabledRequestSchema, CommunicationsInboxSetEnabledResponseSchema, CommunicationsInboxGetMessagesRequestSchema, CommunicationsInboxGetMessagesResponseSchema, CommunicationsInboxSendMessageRequestSchema, CommunicationsInboxSendMessageResponseSchema, CommunicationsRoomGetRequestSchema, CommunicationsRoomGetResponseSchema, CommunicationsRoomThreadGetRequestSchema, CommunicationsRoomThreadGetResponseSchema, CommunicationsRoomMessageSendRequestSchema, CommunicationsRoomMessageSendResponseSchema, CommunicationsRoomReactionSetRequestSchema, CommunicationsRoomReactionSetResponseSchema, } from "./communications.js";
@@ -25,8 +29,7 @@ import { BrainLogsWatchRequestSchema, BrainLogLineAddedStatusPayloadSchema, Brai
25
29
  import { TerminalActivitySchema } from "./terminal-activity.js";
26
30
  import { ArtifactMetadataSchema, ProjectArtifactStoreLocationValueSchema, } from "./artifacts/types.js";
27
31
  import { ArtifactListRequestSchema, ArtifactCreateRequestSchema, ArtifactUpdateRequestSchema, ArtifactRegenerateRequestSchema, ArtifactCancelRequestSchema, ArtifactDeleteRequestSchema, ArtifactStarRequestSchema, ArtifactGetContentRequestSchema, ArtifactRepairRequestSchema, ArtifactDataGetRequestSchema, ArtifactDataUpdateRequestSchema, ArtifactStoreMoveRequestSchema, ProjectArtifactStoreSetRequestSchema, ArtifactListResponseSchema, ArtifactCreateResponseSchema, ArtifactUpdateResponseSchema, ArtifactRegenerateResponseSchema, ArtifactCancelResponseSchema, ArtifactDeleteResponseSchema, ArtifactStarResponseSchema, ArtifactGetContentResponseSchema, ArtifactRepairResponseSchema, ArtifactDataGetResponseSchema, ArtifactDataUpdateResponseSchema, ArtifactStoreMoveResponseSchema, ProjectArtifactStoreSetResponseSchema, ArtifactCreatedNotificationSchema, ArtifactUpdatedNotificationSchema, ArtifactDeletedNotificationSchema, } from "./artifacts/rpc-schemas.js";
28
- import { ArchitecturalViewsDeliverRequestSchema, ArchitecturalViewsDeliverResponseSchema, ArchitecturalViewsGetContentRequestSchema, ArchitecturalViewsGetContentResponseSchema, ArchitecturalViewsListRequestSchema, ArchitecturalViewsListResponseSchema, ArchitecturalViewsDraftCreateRequestSchema, ArchitecturalViewsDraftCreateResponseSchema, ArchitecturalViewsDraftUpdateRequestSchema, ArchitecturalViewsDraftUpdateResponseSchema, ArchitecturalViewsDraftPublishRequestSchema, ArchitecturalViewsDraftPublishResponseSchema, ArchitecturalViewsDraftDiscardRequestSchema, ArchitecturalViewsDraftDiscardResponseSchema, ArchitecturalViewsDraftGetContentRequestSchema, ArchitecturalViewsDraftGetContentResponseSchema, ArchitecturalViewsOpenNotificationSchema, } from "./architectural-views/rpc-schemas.js";
29
- import { CLIENT_CAPS } from "./client-capabilities.js";
32
+ import { ArchitecturalViewsDeliverRequestSchema, ArchitecturalViewsDeliverResponseSchema, ArchitecturalViewsGetContentRequestSchema, ArchitecturalViewsGetContentResponseSchema, ArchitecturalViewsListRequestSchema, ArchitecturalViewsListResponseSchema, ArchitecturalViewsDraftCreateRequestSchema, ArchitecturalViewsDraftCreateResponseSchema, ArchitecturalViewsDraftUpdateRequestSchema, ArchitecturalViewsDraftUpdateResponseSchema, ArchitecturalViewsDraftPublishRequestSchema, ArchitecturalViewsDraftPublishResponseSchema, ArchitecturalViewsDraftDiscardRequestSchema, ArchitecturalViewsDraftDiscardResponseSchema, ArchitecturalViewsDraftGetContentRequestSchema, ArchitecturalViewsDraftGetContentResponseSchema, ArchitecturalViewsDraftListRequestSchema, ArchitecturalViewsDraftListResponseSchema, ArchitecturalViewsOpenNotificationSchema, } from "./architectural-views/rpc-schemas.js";
30
33
  import { AGENT_LIFECYCLE_STATUSES } from "./agent-lifecycle.js";
31
34
  import { MAX_EXPLICIT_AGENT_TITLE_CHARS } from "./agent-title-limits.js";
32
35
  import { AgentProviderSchema } from "./provider-manifest.js";
@@ -37,7 +40,6 @@ import { ChatCreateRequestSchema, ChatListRequestSchema, ChatInspectRequestSchem
37
40
  import { ScheduleCreateRequestSchema, ScheduleListRequestSchema, ScheduleInspectRequestSchema, ScheduleLogsRequestSchema, SchedulePauseRequestSchema, ScheduleResumeRequestSchema, ScheduleDeleteRequestSchema, ScheduleRunOnceRequestSchema, ScheduleUpdateRequestSchema, ScheduleCreateResponseSchema, ScheduleListResponseSchema, ScheduleInspectResponseSchema, ScheduleLogsResponseSchema, SchedulePauseResponseSchema, ScheduleResumeResponseSchema, ScheduleDeleteResponseSchema, ScheduleRunOnceResponseSchema, ScheduleUpdateResponseSchema, } from "./schedule/rpc-schemas.js";
38
41
  import { LoopRunRequestSchema, LoopListRequestSchema, LoopInspectRequestSchema, LoopLogsRequestSchema, LoopStopRequestSchema, LoopRunResponseSchema, LoopListResponseSchema, LoopInspectResponseSchema, LoopLogsResponseSchema, LoopStopResponseSchema, } from "./loop/rpc-schemas.js";
39
42
  import { BrowserAutomationExecuteRequestSchema, BrowserAutomationExecuteResponseSchema, } from "./browser-automation/rpc-schemas.js";
40
- import { BrowserAutomationHostCapabilitySchema } from "./browser-automation/capabilities.js";
41
43
  import { OttoConfigRawSchema, OttoLifecycleCommandRawSchema, OttoMetadataGenerationEntrySchema, OttoMetadataGenerationSchema, OttoScriptEntryRawSchema, OttoWorktreeConfigRawSchema, OttoConfigRevisionSchema, ProjectConfigRpcErrorSchema, } from "./otto-config-schema.js";
42
44
  export * from "./git-hosting.js";
43
45
  export { OttoConfigRawSchema, OttoLifecycleCommandRawSchema, OttoMetadataGenerationEntrySchema, OttoMetadataGenerationSchema, OttoScriptEntryRawSchema, OttoWorktreeConfigRawSchema, };
@@ -157,51 +159,8 @@ const MutableBrowserToolsConfigPatchSchema = z
157
159
  .object({ enabled: z.boolean() })
158
160
  .partial()
159
161
  .passthrough();
160
- export const ModelTierSchema = z.enum(["deep", "standard", "fast"]);
161
- // A user's explicit tier tag for one model of one provider. The daemon stamps
162
- // `model.tier` at ingest, preferring a matching override here over inference
163
- // (see model-tiers.ts). Stored as an array (not a nested record) so a patch
164
- // replaces it wholesale - that's how a tag gets cleared, since deep-merge can't
165
- // delete a record key.
166
- export const ModelTierOverrideSchema = z
167
- .object({
168
- provider: z.string().min(1),
169
- modelId: z.string().min(1),
170
- tier: ModelTierSchema,
171
- })
172
- .passthrough();
173
- // A host-owned model-picker visibility choice. Stored as an array so a patch
174
- // replaces it wholesale and removing the final hidden-model entry sticks.
175
- export const ModelVisibilityOverrideSchema = z
176
- .object({
177
- provider: z.string().min(1),
178
- modelId: z.string().min(1),
179
- visible: z.boolean(),
180
- })
181
- .passthrough();
182
- // A remembered provider endpoint: a base URL together with the credential it
183
- // was saved with, so pointing a provider back at a previous endpoint is one
184
- // pick instead of re-typing the key. Entries are scoped by the connection
185
- // env-var pair they belong to (OPENAI_BASE_URL/OPENAI_API_KEY vs
186
- // ANTHROPIC_BASE_URL/ANTHROPIC_AUTH_TOKEN), which is exactly what the provider
187
- // settings sheet keys its dropdown off - so every openai-compatible provider
188
- // entry on the host shares one pool, and Claude-compatible entries share
189
- // another. Deliberately `z.string()` rather than an enum: a future env-var
190
- // family must not make old entries unparseable.
191
- export const SavedProviderEndpointSchema = z
192
- .object({
193
- /** Stable identity, `${baseUrlKey}::${baseUrl}` - dedupes on re-save. */
194
- id: z.string().min(1),
195
- baseUrlKey: z.string().min(1),
196
- apiKeyKey: z.string().min(1),
197
- baseUrl: z.string().min(1),
198
- apiKey: z.string().default(""),
199
- /** User-facing name; the UI falls back to the URL when absent. */
200
- label: z.string().optional(),
201
- /** Epoch ms of the last save, used to order the dropdown newest-first. */
202
- savedAt: z.number().optional(),
203
- })
204
- .passthrough();
162
+ import { ModelTierOverrideSchema, ModelTierSchema, ModelVisibilityOverrideSchema, SavedProviderEndpointSchema, } from "./model-preferences.js";
163
+ export { ModelTierSchema, ModelTierOverrideSchema, ModelVisibilityOverrideSchema, SavedProviderEndpointSchema, } from "./model-preferences.js";
205
164
  export const PluginIdSchema = z.string().regex(/^[a-z][a-z0-9-]*$/);
206
165
  export const DirectoryPluginSourceSchema = z
207
166
  .object({
@@ -479,22 +438,6 @@ const AgentProviderNoticeSchema = z.discriminatedUnion("type", [
479
438
  z.object({ type: z.literal("warning"), message: z.string() }),
480
439
  z.object({ type: z.literal("error"), message: z.string() }),
481
440
  ]);
482
- // Provider-reported plan rate-limit status (e.g. Claude claude.ai plan
483
- // windows), pushed on the agent stream when it changes. Presentation-only:
484
- // the app decides whether to show it (rateLimitWarningsEnabled setting).
485
- export const AgentRateLimitInfoSchema = z.object({
486
- status: z.enum(["allowed", "warning", "rejected"]),
487
- // Percentage of the limit window used, 0-100. Absent when the provider
488
- // does not report it (Claude only includes it near the limit).
489
- utilizationPercent: z.number().optional(),
490
- // Provider-reported window identifier, e.g. "five_hour" | "seven_day".
491
- // Open set - display code falls back to a generic label for unknown values.
492
- limitType: z.string().optional(),
493
- // ISO 8601 timestamp when the window resets.
494
- resetsAt: z.string().optional(),
495
- // True when usage is currently drawing from overage/extra usage credits.
496
- isUsingOverage: z.boolean().optional(),
497
- });
498
441
  export const AgentFeatureToggleSchema = z.object({
499
442
  type: z.literal("toggle"),
500
443
  id: z.string(),
@@ -851,6 +794,10 @@ const ToolCallTimelineItemPayloadSchema = z.discriminatedUnion("status", [
851
794
  ToolCallFailedPayloadSchema,
852
795
  ToolCallCanceledPayloadSchema,
853
796
  ]);
797
+ const AgentTimelineImageAttachmentSchema = z.object({
798
+ path: z.string(),
799
+ mimeType: z.string(),
800
+ });
854
801
  // zod-aot 0.20.4 miscompiles this as a nested discriminated union by omitting
855
802
  // the inner tool_call branch from the generated outer dispatch.
856
803
  export const AgentTimelineItemPayloadSchema = z.union([
@@ -859,6 +806,7 @@ export const AgentTimelineItemPayloadSchema = z.union([
859
806
  text: z.string(),
860
807
  messageId: z.string().optional(),
861
808
  clientMessageId: z.string().optional(),
809
+ images: z.array(AgentTimelineImageAttachmentSchema).optional(),
862
810
  }),
863
811
  z.object({
864
812
  type: z.literal("assistant_message"),
@@ -2015,6 +1963,9 @@ export const FetchAgentTimelineRequestMessageSchema = z.object({
2015
1963
  projection: z.enum(["projected", "canonical"]).optional(),
2016
1964
  // Allow the client to merge this bounded page outside its contiguous loaded range.
2017
1965
  mergeWindow: z.boolean().optional(),
1966
+ // The initial chat hydration can carry this compact full-history index without
1967
+ // loading every transcript row into the client.
1968
+ includePromptIndex: z.boolean().optional(),
2018
1969
  });
2019
1970
  export const AgentTimelineListPromptsRequestMessageSchema = z.object({
2020
1971
  type: z.literal("agent.timeline.list_prompts.request"),
@@ -3622,6 +3573,7 @@ export const SessionInboundMessageSchema = z.discriminatedUnion("type", [
3622
3573
  ContextPromptPreviewGetRequestMessageSchema,
3623
3574
  ProjectKnowledgeListRequestMessageSchema,
3624
3575
  ProjectKnowledgeGetRequestMessageSchema,
3576
+ ProjectKnowledgeRootGetRequestMessageSchema,
3625
3577
  ProjectKnowledgeCreateRequestMessageSchema,
3626
3578
  ProjectKnowledgeApplyRequestMessageSchema,
3627
3579
  ProjectKnowledgeStatusRequestMessageSchema,
@@ -3875,6 +3827,7 @@ export const SessionInboundMessageSchema = z.discriminatedUnion("type", [
3875
3827
  ArchitecturalViewsDraftPublishRequestSchema,
3876
3828
  ArchitecturalViewsDraftDiscardRequestSchema,
3877
3829
  ArchitecturalViewsDraftGetContentRequestSchema,
3830
+ ArchitecturalViewsDraftListRequestSchema,
3878
3831
  ]);
3879
3832
  // ============================================================================
3880
3833
  // Session Outbound Messages (Session emits these)
@@ -4203,6 +4156,13 @@ export const ServerInfoStatusPayloadSchema = z
4203
4156
  artifacts: z.boolean().optional(),
4204
4157
  // COMPAT(architecturalViews): added in v0.9.0, remove after 2027-02-28.
4205
4158
  architecturalViews: z.boolean().optional(),
4159
+ // COMPAT(interactiveViewTypes): added in v0.9.0 on 2026-09-06; remove
4160
+ // after 2027-03-06 once every supported host writes typed Interactive Views.
4161
+ interactiveViewTypes: z.boolean().optional(),
4162
+ // COMPAT(architecturalViewDraftDiscovery): added in v0.9.0, remove after 2027-03-05.
4163
+ // A host with Architectural Views but without this gate cannot serve the
4164
+ // draft-list RPC introduced for the Knowledge toolbar.
4165
+ architecturalViewDraftDiscovery: z.boolean().optional(),
4206
4166
  // COMPAT(observedSubagents): added in v0.4.3, drop the gate when daemon floor >= v0.4.3.
4207
4167
  observedSubagents: z.boolean().optional(),
4208
4168
  // COMPAT(backgroundShellTasks): added in v0.5.3, drop the gate when daemon floor >= v0.5.3.
@@ -4213,6 +4173,7 @@ export const ServerInfoStatusPayloadSchema = z
4213
4173
  retainedTranscripts: z.boolean().optional(),
4214
4174
  // COMPAT(suggestedTasks): added in v0.5.6, drop the gate when daemon floor >= v0.5.6.
4215
4175
  suggestedTasks: z.boolean().optional(),
4176
+ suggestedTaskModelSelection: z.boolean().optional(),
4216
4177
  // COMPAT(steerQueue): added in v0.6.8, drop the gate when daemon floor >= v0.6.8.
4217
4178
  // Daemon owns a per-agent queue of steering messages, accepts
4218
4179
  // `delivery: "queue"` on send, reports `queuedMessages` on the agent
@@ -4257,6 +4218,10 @@ export const ServerInfoStatusPayloadSchema = z
4257
4218
  personalityMemory: z.boolean().optional(),
4258
4219
  // COMPAT(projectKnowledge): added in v0.8.5, drop the gate when daemon floor >= v0.8.5.
4259
4220
  projectKnowledge: z.boolean().optional(),
4221
+ // COMPAT(projectKnowledgeDeferredRootBodies): added in v0.9.1, remove
4222
+ // after 2027-03-04. A new client asks the catalog for root summaries
4223
+ // and fetches the selected root body separately.
4224
+ projectKnowledgeDeferredRootBodies: z.boolean().optional(),
4260
4225
  // COMPAT(projectKnowledgeRefinement): added in v0.8.19, drop the gate
4261
4226
  // when floor >= v0.8.19.
4262
4227
  projectKnowledgeRefinement: z.boolean().optional(),
@@ -5602,6 +5567,14 @@ export const AgentTimelineEntryPayloadSchema = z.object({
5602
5567
  sourceSeqRanges: z.array(AgentTimelineSeqRangeSchema),
5603
5568
  collapsed: z.array(z.enum(["assistant_merge", "reasoning_merge", "tool_lifecycle"])),
5604
5569
  });
5570
+ export const AgentTimelinePromptIndexSchema = z.object({
5571
+ epoch: z.string(),
5572
+ prompts: z.array(z.object({
5573
+ seq: z.number().int().nonnegative(),
5574
+ timestamp: z.string(),
5575
+ preview: z.string(),
5576
+ })),
5577
+ });
5605
5578
  export const FetchAgentTimelineResponseMessageSchema = z.object({
5606
5579
  type: z.literal("fetch_agent_timeline_response"),
5607
5580
  payload: z.object({
@@ -5624,6 +5597,7 @@ export const FetchAgentTimelineResponseMessageSchema = z.object({
5624
5597
  hasOlder: z.boolean(),
5625
5598
  hasNewer: z.boolean(),
5626
5599
  mergeWindow: z.boolean().optional(),
5600
+ promptIndex: AgentTimelinePromptIndexSchema.optional(),
5627
5601
  entries: z.array(AgentTimelineEntryPayloadSchema),
5628
5602
  error: z.string().nullable(),
5629
5603
  }),
@@ -5633,12 +5607,7 @@ export const AgentTimelineListPromptsResponseMessageSchema = z.object({
5633
5607
  payload: z.object({
5634
5608
  requestId: z.string(),
5635
5609
  agentId: z.string(),
5636
- epoch: z.string(),
5637
- prompts: z.array(z.object({
5638
- seq: z.number().int().nonnegative(),
5639
- timestamp: z.string(),
5640
- preview: z.string(),
5641
- })),
5610
+ ...AgentTimelinePromptIndexSchema.shape,
5642
5611
  error: z.string().nullable(),
5643
5612
  }),
5644
5613
  });
@@ -7876,6 +7845,7 @@ export const SessionOutboundMessageSchema = z.discriminatedUnion("type", [
7876
7845
  ContextPromptPreviewGetResponseMessageSchema,
7877
7846
  ProjectKnowledgeListResponseMessageSchema,
7878
7847
  ProjectKnowledgeGetResponseMessageSchema,
7848
+ ProjectKnowledgeRootGetResponseMessageSchema,
7879
7849
  ProjectKnowledgeCreateResponseMessageSchema,
7880
7850
  ProjectKnowledgeApplyResponseMessageSchema,
7881
7851
  ProjectKnowledgeStatusResponseMessageSchema,
@@ -7960,6 +7930,7 @@ export const SessionOutboundMessageSchema = z.discriminatedUnion("type", [
7960
7930
  ArchitecturalViewsDraftPublishResponseSchema,
7961
7931
  ArchitecturalViewsDraftDiscardResponseSchema,
7962
7932
  ArchitecturalViewsDraftGetContentResponseSchema,
7933
+ ArchitecturalViewsDraftListResponseSchema,
7963
7934
  ArchitecturalViewsOpenNotificationSchema,
7964
7935
  ]);
7965
7936
  export * from "./kanban.js";
@@ -7967,38 +7938,6 @@ export * from "./kanban.js";
7967
7938
  // WebSocket Level Messages (wraps session messages)
7968
7939
  // ============================================================================
7969
7940
  // WebSocket-only messages (not session messages)
7970
- export const WSPingMessageSchema = z.object({
7971
- type: z.literal("ping"),
7972
- });
7973
- export const WSPongMessageSchema = z.object({
7974
- type: z.literal("pong"),
7975
- });
7976
- export const WSHelloMessageSchema = z.object({
7977
- type: z.literal("hello"),
7978
- clientId: z.string().min(1),
7979
- clientType: z.enum(["mobile", "browser", "cli", "mcp"]),
7980
- protocolVersion: z.number().int(),
7981
- appVersion: z.string().optional(),
7982
- capabilities: z
7983
- .object({
7984
- voice: z.boolean().optional(),
7985
- pushNotifications: z.boolean().optional(),
7986
- [CLIENT_CAPS.reasoningMergeEnum]: z.boolean().optional(),
7987
- [CLIENT_CAPS.selectiveAgentTimeline]: z.boolean().optional(),
7988
- [CLIENT_CAPS.customModeIcons]: z.boolean().optional(),
7989
- [CLIENT_CAPS.terminalReflowableSnapshot]: z.boolean().optional(),
7990
- [CLIENT_CAPS.providerSubagents]: z.boolean().optional(),
7991
- [CLIENT_CAPS.projectUpdates]: z.boolean().optional(),
7992
- [CLIENT_CAPS.compactProviderSnapshots]: z.boolean().optional(),
7993
- [CLIENT_CAPS.browserHost]: BrowserAutomationHostCapabilitySchema.optional(),
7994
- })
7995
- .passthrough()
7996
- .optional(),
7997
- });
7998
- export const WSRecordingStateMessageSchema = z.object({
7999
- type: z.literal("recording_state"),
8000
- isRecording: z.boolean(),
8001
- });
8002
7941
  // Wrapped session message
8003
7942
  export const WSSessionInboundSchema = z.object({
8004
7943
  type: z.literal("session"),
@@ -0,0 +1,26 @@
1
+ import { z } from "zod";
2
+ import type { ModelTier } from "./agent-types.js";
3
+ export declare const ModelTierSchema: z.ZodType<ModelTier>;
4
+ export declare const ModelTierOverrideSchema: z.ZodObject<{
5
+ provider: z.ZodString;
6
+ modelId: z.ZodString;
7
+ tier: z.ZodType<ModelTier, unknown, z.core.$ZodTypeInternals<ModelTier, unknown>>;
8
+ }, z.core.$loose>;
9
+ export type ModelTierOverride = z.infer<typeof ModelTierOverrideSchema>;
10
+ export declare const ModelVisibilityOverrideSchema: z.ZodObject<{
11
+ provider: z.ZodString;
12
+ modelId: z.ZodString;
13
+ visible: z.ZodBoolean;
14
+ }, z.core.$loose>;
15
+ export type ModelVisibilityOverride = z.infer<typeof ModelVisibilityOverrideSchema>;
16
+ export declare const SavedProviderEndpointSchema: z.ZodObject<{
17
+ id: z.ZodString;
18
+ baseUrlKey: z.ZodString;
19
+ apiKeyKey: z.ZodString;
20
+ baseUrl: z.ZodString;
21
+ apiKey: z.ZodDefault<z.ZodString>;
22
+ label: z.ZodOptional<z.ZodString>;
23
+ savedAt: z.ZodOptional<z.ZodNumber>;
24
+ }, z.core.$loose>;
25
+ export type SavedProviderEndpoint = z.infer<typeof SavedProviderEndpointSchema>;
26
+ //# sourceMappingURL=model-preferences.d.ts.map
@@ -0,0 +1,47 @@
1
+ import { z } from "zod";
2
+ export const ModelTierSchema = z.enum(["deep", "standard", "fast"]);
3
+ // A user's explicit tier tag for one model of one provider. The daemon stamps
4
+ // `model.tier` at ingest, preferring a matching override here over inference
5
+ // (see model-tiers.ts). Stored as an array (not a nested record) so a patch
6
+ // replaces it wholesale - that's how a tag gets cleared, since deep-merge can't
7
+ // delete a record key.
8
+ export const ModelTierOverrideSchema = z
9
+ .object({
10
+ provider: z.string().min(1),
11
+ modelId: z.string().min(1),
12
+ tier: ModelTierSchema,
13
+ })
14
+ .passthrough();
15
+ // A host-owned model-picker visibility choice. Stored as an array so a patch
16
+ // replaces it wholesale and removing the final hidden-model entry sticks.
17
+ export const ModelVisibilityOverrideSchema = z
18
+ .object({
19
+ provider: z.string().min(1),
20
+ modelId: z.string().min(1),
21
+ visible: z.boolean(),
22
+ })
23
+ .passthrough();
24
+ // A remembered provider endpoint: a base URL together with the credential it
25
+ // was saved with, so pointing a provider back at a previous endpoint is one
26
+ // pick instead of re-typing the key. Entries are scoped by the connection
27
+ // env-var pair they belong to (OPENAI_BASE_URL/OPENAI_API_KEY vs
28
+ // ANTHROPIC_BASE_URL/ANTHROPIC_AUTH_TOKEN), which is exactly what the provider
29
+ // settings sheet keys its dropdown off - so every openai-compatible provider
30
+ // entry on the host shares one pool, and Claude-compatible entries share
31
+ // another. Deliberately `z.string()` rather than an enum: a future env-var
32
+ // family must not make old entries unparseable.
33
+ export const SavedProviderEndpointSchema = z
34
+ .object({
35
+ /** Stable identity, `${baseUrlKey}::${baseUrl}` - dedupes on re-save. */
36
+ id: z.string().min(1),
37
+ baseUrlKey: z.string().min(1),
38
+ apiKeyKey: z.string().min(1),
39
+ baseUrl: z.string().min(1),
40
+ apiKey: z.string().default(""),
41
+ /** User-facing name; the UI falls back to the URL when absent. */
42
+ label: z.string().optional(),
43
+ /** Epoch ms of the last save, used to order the dropdown newest-first. */
44
+ savedAt: z.number().optional(),
45
+ })
46
+ .passthrough();
47
+ //# sourceMappingURL=model-preferences.js.map
@@ -222,8 +222,8 @@ export declare const VisualizerVoiceCuesGenerateResponseSchema: z.ZodObject<{
222
222
  export type VisualizerVoiceCuesResult = z.infer<typeof VisualizerVoiceCuesGenerateResponseSchema>["payload"];
223
223
  export declare const ProfileMemoryListRequestMessageSchema: z.ZodObject<{
224
224
  workspaceId: z.ZodOptional<z.ZodString>;
225
- projectRoot: z.ZodOptional<z.ZodString>;
226
225
  requestId: z.ZodString;
226
+ projectRoot: z.ZodOptional<z.ZodString>;
227
227
  personalityId: z.ZodString;
228
228
  type: z.ZodLiteral<"profile.memory.list.request">;
229
229
  }, z.core.$strip>;
@@ -254,9 +254,9 @@ export declare const ProfileMemoryListResponseMessageSchema: z.ZodObject<{
254
254
  export declare const ProfileMemoryUpdateRequestMessageSchema: z.ZodObject<{
255
255
  workspaceId: z.ZodOptional<z.ZodString>;
256
256
  text: z.ZodOptional<z.ZodString>;
257
+ requestId: z.ZodString;
257
258
  scope: z.ZodOptional<z.ZodString>;
258
259
  projectRoot: z.ZodOptional<z.ZodString>;
259
- requestId: z.ZodString;
260
260
  personalityId: z.ZodString;
261
261
  entryId: z.ZodOptional<z.ZodString>;
262
262
  drop: z.ZodOptional<z.ZodBoolean>;
@@ -311,11 +311,11 @@ export declare const AgentProfileStatsResponseSchema: z.ZodObject<{
311
311
  }, z.core.$strip>;
312
312
  export declare const AgentProfileGeneratePromptRequestSchema: z.ZodObject<{
313
313
  name: z.ZodString;
314
+ cwd: z.ZodOptional<z.ZodString>;
314
315
  requestId: z.ZodString;
315
316
  roles: z.ZodOptional<z.ZodArray<z.ZodString>>;
316
317
  glowA: z.ZodOptional<z.ZodString>;
317
318
  glowB: z.ZodOptional<z.ZodString>;
318
- cwd: z.ZodOptional<z.ZodString>;
319
319
  type: z.ZodLiteral<"agent.profile.generate_prompt.request">;
320
320
  }, z.core.$strip>;
321
321
  export declare const AgentProfileGeneratePromptResponseSchema: z.ZodObject<{
@@ -329,9 +329,9 @@ export declare const AgentProfileGeneratePromptResponseSchema: z.ZodObject<{
329
329
  export declare const AgentProfileGenerateVoiceCuesRequestSchema: z.ZodObject<{
330
330
  prompt: z.ZodOptional<z.ZodString>;
331
331
  name: z.ZodString;
332
+ cwd: z.ZodOptional<z.ZodString>;
332
333
  requestId: z.ZodString;
333
334
  roles: z.ZodOptional<z.ZodArray<z.ZodString>>;
334
- cwd: z.ZodOptional<z.ZodString>;
335
335
  moment: z.ZodOptional<z.ZodEnum<{
336
336
  join: "join";
337
337
  thinking: "thinking";
@@ -44,9 +44,9 @@ export declare const ProjectDeliveryStatusSchema: z.ZodEnum<{
44
44
  }>;
45
45
  export declare const ProjectReferenceDispositionSchema: z.ZodEnum<{
46
46
  read: "read";
47
+ rejected: "rejected";
47
48
  unevaluated: "unevaluated";
48
49
  adopted: "adopted";
49
- rejected: "rejected";
50
50
  dependency: "dependency";
51
51
  }>;
52
52
  export declare const ProjectProgressSchema: z.ZodObject<{
@@ -92,9 +92,9 @@ export declare const ProjectKnowledgeRecordSchema: z.ZodObject<{
92
92
  }, z.core.$strip>>;
93
93
  referenceDisposition: z.ZodOptional<z.ZodEnum<{
94
94
  read: "read";
95
+ rejected: "rejected";
95
96
  unevaluated: "unevaluated";
96
97
  adopted: "adopted";
97
- rejected: "rejected";
98
98
  dependency: "dependency";
99
99
  }>>;
100
100
  sourceUrl: z.ZodOptional<z.ZodString>;
@@ -131,13 +131,14 @@ export declare const ProjectKnowledgeRootPageSchema: z.ZodObject<{
131
131
  title: z.ZodString;
132
132
  path: z.ZodString;
133
133
  absolutePath: z.ZodOptional<z.ZodString>;
134
- body: z.ZodString;
134
+ body: z.ZodOptional<z.ZodString>;
135
135
  bodyDigest: z.ZodOptional<z.ZodString>;
136
136
  }, z.core.$strip>;
137
137
  export declare const ProjectKnowledgeListRequestMessageSchema: z.ZodObject<{
138
138
  type: z.ZodLiteral<"project.knowledge.list.request">;
139
139
  requestId: z.ZodString;
140
140
  workspaceId: z.ZodString;
141
+ includeRootBodies: z.ZodOptional<z.ZodBoolean>;
141
142
  }, z.core.$strip>;
142
143
  export declare const ProjectKnowledgeListResponseMessageSchema: z.ZodObject<{
143
144
  type: z.ZodLiteral<"project.knowledge.list.response">;
@@ -181,9 +182,9 @@ export declare const ProjectKnowledgeListResponseMessageSchema: z.ZodObject<{
181
182
  }, z.core.$strip>>;
182
183
  referenceDisposition: z.ZodOptional<z.ZodEnum<{
183
184
  read: "read";
185
+ rejected: "rejected";
184
186
  unevaluated: "unevaluated";
185
187
  adopted: "adopted";
186
- rejected: "rejected";
187
188
  dependency: "dependency";
188
189
  }>>;
189
190
  sourceUrl: z.ZodOptional<z.ZodString>;
@@ -204,7 +205,7 @@ export declare const ProjectKnowledgeListResponseMessageSchema: z.ZodObject<{
204
205
  title: z.ZodString;
205
206
  path: z.ZodString;
206
207
  absolutePath: z.ZodOptional<z.ZodString>;
207
- body: z.ZodString;
208
+ body: z.ZodOptional<z.ZodString>;
208
209
  bodyDigest: z.ZodOptional<z.ZodString>;
209
210
  }, z.core.$strip>>>;
210
211
  findings: z.ZodArray<z.ZodObject<{
@@ -276,9 +277,9 @@ export declare const ProjectKnowledgeGetResponseMessageSchema: z.ZodObject<{
276
277
  }, z.core.$strip>>;
277
278
  referenceDisposition: z.ZodOptional<z.ZodEnum<{
278
279
  read: "read";
280
+ rejected: "rejected";
279
281
  unevaluated: "unevaluated";
280
282
  adopted: "adopted";
281
- rejected: "rejected";
282
283
  dependency: "dependency";
283
284
  }>>;
284
285
  sourceUrl: z.ZodOptional<z.ZodString>;
@@ -296,6 +297,26 @@ export declare const ProjectKnowledgeGetResponseMessageSchema: z.ZodObject<{
296
297
  }, z.core.$strip>>;
297
298
  }, z.core.$strip>;
298
299
  }, z.core.$strip>;
300
+ export declare const ProjectKnowledgeRootGetRequestMessageSchema: z.ZodObject<{
301
+ type: z.ZodLiteral<"project.knowledge.root.get.request">;
302
+ requestId: z.ZodString;
303
+ workspaceId: z.ZodString;
304
+ slug: z.ZodString;
305
+ }, z.core.$strip>;
306
+ export declare const ProjectKnowledgeRootGetResponseMessageSchema: z.ZodObject<{
307
+ type: z.ZodLiteral<"project.knowledge.root.get.response">;
308
+ payload: z.ZodObject<{
309
+ requestId: z.ZodString;
310
+ page: z.ZodNullable<z.ZodObject<{
311
+ slug: z.ZodString;
312
+ title: z.ZodString;
313
+ path: z.ZodString;
314
+ absolutePath: z.ZodOptional<z.ZodString>;
315
+ body: z.ZodOptional<z.ZodString>;
316
+ bodyDigest: z.ZodOptional<z.ZodString>;
317
+ }, z.core.$strip>>;
318
+ }, z.core.$strip>;
319
+ }, z.core.$strip>;
299
320
  export declare const ProjectKnowledgeCreateRequestMessageSchema: z.ZodObject<{
300
321
  type: z.ZodLiteral<"project.knowledge.create.request">;
301
322
  requestId: z.ZodString;
@@ -337,9 +358,9 @@ export declare const ProjectKnowledgeCreateRequestMessageSchema: z.ZodObject<{
337
358
  }, z.core.$strip>>;
338
359
  referenceDisposition: z.ZodOptional<z.ZodEnum<{
339
360
  read: "read";
361
+ rejected: "rejected";
340
362
  unevaluated: "unevaluated";
341
363
  adopted: "adopted";
342
- rejected: "rejected";
343
364
  dependency: "dependency";
344
365
  }>>;
345
366
  sourceUrl: z.ZodOptional<z.ZodString>;
@@ -386,9 +407,9 @@ export declare const ProjectKnowledgeCreateResponseMessageSchema: z.ZodObject<{
386
407
  }, z.core.$strip>>;
387
408
  referenceDisposition: z.ZodOptional<z.ZodEnum<{
388
409
  read: "read";
410
+ rejected: "rejected";
389
411
  unevaluated: "unevaluated";
390
412
  adopted: "adopted";
391
- rejected: "rejected";
392
413
  dependency: "dependency";
393
414
  }>>;
394
415
  sourceUrl: z.ZodOptional<z.ZodString>;
@@ -462,9 +483,9 @@ export declare const ProjectKnowledgeApplyResponseMessageSchema: z.ZodObject<{
462
483
  }, z.core.$strip>>;
463
484
  referenceDisposition: z.ZodOptional<z.ZodEnum<{
464
485
  read: "read";
486
+ rejected: "rejected";
465
487
  unevaluated: "unevaluated";
466
488
  adopted: "adopted";
467
- rejected: "rejected";
468
489
  dependency: "dependency";
469
490
  }>>;
470
491
  sourceUrl: z.ZodOptional<z.ZodString>;
@@ -537,9 +558,9 @@ export declare const ProjectKnowledgeStatusResponseMessageSchema: z.ZodObject<{
537
558
  }, z.core.$strip>>;
538
559
  referenceDisposition: z.ZodOptional<z.ZodEnum<{
539
560
  read: "read";
561
+ rejected: "rejected";
540
562
  unevaluated: "unevaluated";
541
563
  adopted: "adopted";
542
- rejected: "rejected";
543
564
  dependency: "dependency";
544
565
  }>>;
545
566
  sourceUrl: z.ZodOptional<z.ZodString>;
@@ -622,9 +643,9 @@ export declare const ProjectKnowledgeProjectApplyResponseMessageSchema: z.ZodObj
622
643
  }, z.core.$strip>>;
623
644
  referenceDisposition: z.ZodOptional<z.ZodEnum<{
624
645
  read: "read";
646
+ rejected: "rejected";
625
647
  unevaluated: "unevaluated";
626
648
  adopted: "adopted";
627
- rejected: "rejected";
628
649
  dependency: "dependency";
629
650
  }>>;
630
651
  sourceUrl: z.ZodOptional<z.ZodString>;
@@ -650,9 +671,9 @@ export declare const ProjectKnowledgeReferenceApplyRequestMessageSchema: z.ZodOb
650
671
  id: z.ZodString;
651
672
  disposition: z.ZodOptional<z.ZodEnum<{
652
673
  read: "read";
674
+ rejected: "rejected";
653
675
  unevaluated: "unevaluated";
654
676
  adopted: "adopted";
655
- rejected: "rejected";
656
677
  dependency: "dependency";
657
678
  }>>;
658
679
  sourceUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
@@ -701,9 +722,9 @@ export declare const ProjectKnowledgeReferenceApplyResponseMessageSchema: z.ZodO
701
722
  }, z.core.$strip>>;
702
723
  referenceDisposition: z.ZodOptional<z.ZodEnum<{
703
724
  read: "read";
725
+ rejected: "rejected";
704
726
  unevaluated: "unevaluated";
705
727
  adopted: "adopted";
706
- rejected: "rejected";
707
728
  dependency: "dependency";
708
729
  }>>;
709
730
  sourceUrl: z.ZodOptional<z.ZodString>;
@@ -738,7 +759,7 @@ export declare const ProjectKnowledgeRootApplyResponseMessageSchema: z.ZodObject
738
759
  title: z.ZodString;
739
760
  path: z.ZodString;
740
761
  absolutePath: z.ZodOptional<z.ZodString>;
741
- body: z.ZodString;
762
+ body: z.ZodOptional<z.ZodString>;
742
763
  bodyDigest: z.ZodOptional<z.ZodString>;
743
764
  }, z.core.$strip>>;
744
765
  }, z.core.$strip>;
@@ -806,9 +827,9 @@ export declare const ProjectKnowledgeRefineApplyResponseMessageSchema: z.ZodObje
806
827
  }, z.core.$strip>>;
807
828
  referenceDisposition: z.ZodOptional<z.ZodEnum<{
808
829
  read: "read";
830
+ rejected: "rejected";
809
831
  unevaluated: "unevaluated";
810
832
  adopted: "adopted";
811
- rejected: "rejected";
812
833
  dependency: "dependency";
813
834
  }>>;
814
835
  sourceUrl: z.ZodOptional<z.ZodString>;
@@ -829,7 +850,7 @@ export declare const ProjectKnowledgeRefineApplyResponseMessageSchema: z.ZodObje
829
850
  title: z.ZodString;
830
851
  path: z.ZodString;
831
852
  absolutePath: z.ZodOptional<z.ZodString>;
832
- body: z.ZodString;
853
+ body: z.ZodOptional<z.ZodString>;
833
854
  bodyDigest: z.ZodOptional<z.ZodString>;
834
855
  }, z.core.$strip>>;
835
856
  demoted: z.ZodBoolean;
@@ -927,6 +948,7 @@ export declare const ProjectKnowledgeDeleteResponseMessageSchema: z.ZodObject<{
927
948
  }, z.core.$strip>;
928
949
  export type ProjectKnowledgeListResponseMessage = z.infer<typeof ProjectKnowledgeListResponseMessageSchema>;
929
950
  export type ProjectKnowledgeGetResponseMessage = z.infer<typeof ProjectKnowledgeGetResponseMessageSchema>;
951
+ export type ProjectKnowledgeRootGetResponseMessage = z.infer<typeof ProjectKnowledgeRootGetResponseMessageSchema>;
930
952
  export type ProjectKnowledgeCreateResponseMessage = z.infer<typeof ProjectKnowledgeCreateResponseMessageSchema>;
931
953
  export type ProjectKnowledgeApplyResponseMessage = z.infer<typeof ProjectKnowledgeApplyResponseMessageSchema>;
932
954
  export type ProjectKnowledgeRefinementProposeResponseMessage = z.infer<typeof ProjectKnowledgeRefinementProposeResponseMessageSchema>;
@@ -98,7 +98,10 @@ export const ProjectKnowledgeRootPageSchema = z.object({
98
98
  // COMPAT(projectKnowledgeStoreLocation): added in v0.8.18. See the same field
99
99
  // on ProjectKnowledgeRecordSchema.
100
100
  absolutePath: z.string().optional(),
101
- body: z.string(),
101
+ // COMPAT(projectKnowledgeDeferredRootBodies): added in v0.9.1; legacy list
102
+ // responses keep sending this. New clients request root summaries and fetch
103
+ // the one selected document through project.knowledge.root.get.request.
104
+ body: z.string().optional(),
102
105
  /** Conditional-write precondition for a reviewed root-page refinement. */
103
106
  bodyDigest: z.string().optional(),
104
107
  });
@@ -106,6 +109,9 @@ export const ProjectKnowledgeListRequestMessageSchema = z.object({
106
109
  type: z.literal("project.knowledge.list.request"),
107
110
  requestId: z.string(),
108
111
  workspaceId: z.string(),
112
+ // A catalog normally needs root titles and paths, not six full Markdown
113
+ // documents. Optional so older clients keep receiving the original shape.
114
+ includeRootBodies: z.boolean().optional(),
109
115
  });
110
116
  export const ProjectKnowledgeListResponseMessageSchema = z.object({
111
117
  type: z.literal("project.knowledge.list.response"),
@@ -130,6 +136,16 @@ export const ProjectKnowledgeGetResponseMessageSchema = z.object({
130
136
  type: z.literal("project.knowledge.get.response"),
131
137
  payload: z.object({ requestId: z.string(), record: ProjectKnowledgeRecordSchema.nullable() }),
132
138
  });
139
+ export const ProjectKnowledgeRootGetRequestMessageSchema = z.object({
140
+ type: z.literal("project.knowledge.root.get.request"),
141
+ requestId: z.string(),
142
+ workspaceId: z.string(),
143
+ slug: z.string(),
144
+ });
145
+ export const ProjectKnowledgeRootGetResponseMessageSchema = z.object({
146
+ type: z.literal("project.knowledge.root.get.response"),
147
+ payload: z.object({ requestId: z.string(), page: ProjectKnowledgeRootPageSchema.nullable() }),
148
+ });
133
149
  export const ProjectKnowledgeCreateRequestMessageSchema = z.object({
134
150
  type: z.literal("project.knowledge.create.request"),
135
151
  requestId: z.string(),