@otto-code/protocol 0.8.19 → 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.
Files changed (50) hide show
  1. package/dist/agent-labels.d.ts +22 -0
  2. package/dist/agent-labels.js +42 -1
  3. package/dist/agent-profiles.d.ts +1 -1
  4. package/dist/agent-profiles.js +3 -3
  5. package/dist/agent-rate-limit.d.ts +13 -0
  6. package/dist/agent-rate-limit.js +18 -0
  7. package/dist/agent-types.d.ts +6 -0
  8. package/dist/architectural-views/rpc-schemas.d.ts +465 -0
  9. package/dist/architectural-views/rpc-schemas.js +205 -0
  10. package/dist/artifacts/rpc-schemas.d.ts +360 -2
  11. package/dist/artifacts/rpc-schemas.js +75 -1
  12. package/dist/artifacts/types.d.ts +71 -0
  13. package/dist/artifacts/types.js +27 -0
  14. package/dist/binary-frames/terminal.d.ts +1 -1
  15. package/dist/brain.d.ts +3 -3
  16. package/dist/browser-automation/capabilities.d.ts +1 -1
  17. package/dist/browser-automation/rpc-schemas.d.ts +16 -16
  18. package/dist/code-intelligence.d.ts +5 -5
  19. package/dist/daemon-config.d.ts +66 -0
  20. package/dist/daemon-config.js +76 -3
  21. package/dist/file-operations.d.ts +1 -1
  22. package/dist/generated/validation/ws-outbound.aot.js +81113 -69135
  23. package/dist/loop/rpc-schemas.d.ts +6 -6
  24. package/dist/messages.d.ts +11477 -1097
  25. package/dist/messages.js +633 -117
  26. package/dist/model-preferences.d.ts +26 -0
  27. package/dist/model-preferences.js +47 -0
  28. package/dist/model-tiers.js +2 -0
  29. package/dist/personality-schemas.d.ts +4 -4
  30. package/dist/project-knowledge.d.ts +38 -16
  31. package/dist/project-knowledge.js +17 -1
  32. package/dist/provider-config.js +1 -1
  33. package/dist/provider-icon-names.js +1 -0
  34. package/dist/schedule/rpc-schemas.d.ts +92 -12
  35. package/dist/schedule/rpc-schemas.js +2 -0
  36. package/dist/schedule/types.d.ts +47 -3
  37. package/dist/schedule/types.js +22 -0
  38. package/dist/search/text-match.d.ts +16 -0
  39. package/dist/search/text-match.js +31 -2
  40. package/dist/suggested-tasks.d.ts +7 -3
  41. package/dist/suggested-tasks.js +2 -0
  42. package/dist/validation/ws-outbound-schema-metadata.d.ts +2348 -111
  43. package/dist/websocket-control.d.ts +39 -0
  44. package/dist/websocket-control.js +36 -0
  45. package/dist/workflow.d.ts +3060 -0
  46. package/dist/{orchestration.js → workflow.js} +461 -29
  47. package/dist/workspace-labels.d.ts +9 -0
  48. package/dist/workspace-labels.js +19 -0
  49. package/package.json +1 -1
  50. package/dist/orchestration.d.ts +0 -1148
package/dist/messages.js CHANGED
@@ -1,5 +1,9 @@
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
- import { MutableAgentBehaviorsConfigSchema, MutableLspConfigSchema, MutableDotnetSolutionConfigSchema, MutableGitHostingConfigSchema, MutableKanbanConfigSchema, MutableProjectKnowledgeConfigSchema, MutableAgentPersonalitiesConfigSchema, MutableAgentPersonalitiesConfigPatchSchema, MutableAgentTeamsConfigSchema, MutableAgentTeamsConfigPatchSchema, MutableBrainConfigSchema, MutableBrainConfigPatchSchema, MutableGitFetchConfigSchema, DEFAULT_MUTABLE_BRAIN_CONFIG, } from "./daemon-config.js";
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";
4
8
  import { TerminalCompatibilityDiagnosticRequestSchema, TerminalCompatibilityDiagnosticResponseSchema, } from "./terminal-compatibility.js";
5
9
  import { HostingPrAttachmentSchema, HostingIssueAttachmentSchema, HostingSearchRequestSchema, HostingAuthStatusRequestSchema, HostingListRepositoriesRequestSchema, HostingListOwnersRequestSchema, HostingListRepositoriesResponseSchema, HostingListOwnersResponseSchema, HostingAuthStatusResponseSchema, HostingPullRequestThreadSetResolvedRequestSchema, HostingPullRequestThreadSetResolvedResponseSchema, HostingPullRequestCommentSetReactionRequestSchema, HostingPullRequestCommentSetReactionResponseSchema, GitHostingCapabilitiesSchema, GitHostingProviderIdWireSchema, } from "./git-hosting.js";
@@ -13,29 +17,29 @@ 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";
20
24
  import { IntegrationsAuthorizationGetOverviewRequestSchema, IntegrationsAuthorizationGetOverviewResponseSchema, IntegrationsAuthorizationGetMethodsRequestSchema, IntegrationsAuthorizationGetMethodsResponseSchema, IntegrationsAuthorizationStartBrowserRequestSchema, IntegrationsAuthorizationStartBrowserResponseSchema, IntegrationsZoomStartAuthorizationRequestSchema, IntegrationsZoomStartAuthorizationResponseSchema, } from "./integration-authorization.js";
21
- import { RunsGetSnapshotRequestSchema, RunsGetSnapshotResponseSchema, RunsUpdatedNotificationSchema, RunsGateRespondRequestSchema, RunsGateRespondResponseSchema, RunsCancelRequestSchema, RunsCancelResponseSchema, RunsClearRequestSchema, RunsClearResponseSchema, RunsDeleteRequestSchema, RunsDeleteResponseSchema, RunsClearedNotificationSchema, RunsGraphsListRequestSchema, RunsGraphsListResponseSchema, RunsGraphsSaveRequestSchema, RunsGraphsSaveResponseSchema, RunsGraphsDeleteRequestSchema, RunsGraphsDeleteResponseSchema, RunsGraphsChangedNotificationSchema, RunsTemplatesListRequestSchema, RunsTemplatesListResponseSchema, RunsTemplatesSaveRequestSchema, RunsTemplatesSaveResponseSchema, RunsTemplatesDeleteRequestSchema, RunsTemplatesDeleteResponseSchema, RunsTemplatesChangedNotificationSchema, RunsStartRequestSchema, RunsStartResponseSchema, } from "./orchestration.js";
25
+ import { RunsGetSnapshotRequestSchema, RunsGetSnapshotResponseSchema, RunsUpdatedNotificationSchema, RunsGateRespondRequestSchema, RunsGateRespondResponseSchema, RunsCancelRequestSchema, RunsCancelResponseSchema, RunsClearRequestSchema, RunsClearResponseSchema, RunsDeleteRequestSchema, RunsDeleteResponseSchema, RunsClearedNotificationSchema, RunsGraphsListRequestSchema, RunsGraphsListResponseSchema, RunsGraphsSaveRequestSchema, RunsGraphsSaveResponseSchema, RunsGraphsDeleteRequestSchema, RunsGraphsDeleteResponseSchema, RunsGraphsChangedNotificationSchema, WorkflowsGraphsListRequestSchema, WorkflowsGraphsListResponseSchema, WorkflowsGraphSaveRequestSchema, WorkflowsGraphSaveResponseSchema, WorkflowsGraphExportRequestSchema, WorkflowsGraphExportResponseSchema, WorkflowsGraphImportRequestSchema, WorkflowsGraphImportResponseSchema, RunsTemplatesListRequestSchema, RunsTemplatesListResponseSchema, RunsTemplatesSaveRequestSchema, RunsTemplatesSaveResponseSchema, RunsTemplatesDeleteRequestSchema, RunsTemplatesDeleteResponseSchema, RunsTemplatesChangedNotificationSchema, WorkflowsTemplatesListRequestSchema, WorkflowsTemplatesListResponseSchema, WorkflowsTemplateSaveRequestSchema, WorkflowsTemplateSaveResponseSchema, WorkflowsStorageTransferRequestSchema, WorkflowsStorageTransferResponseSchema, WorkflowsStartRequestSchema, RunsStartRequestSchema, WorkflowsStartResponseSchema, RunsStartResponseSchema, WorkflowsStartConfirmationRespondRequestSchema, WorkflowsStartConfirmationRespondResponseSchema, ProjectWorkflowStoreSetRequestSchema, ProjectWorkflowStoreSetResponseSchema, } from "./workflow.js";
22
26
  import { MeetingsTranscriptsListRequestSchema, MeetingsTranscriptsListResponseSchema, MeetingsTranscriptsCreateRequestSchema, MeetingsTranscriptsCreateResponseSchema, MeetingsTranscriptsUpdateRequestSchema, MeetingsTranscriptsUpdateResponseSchema, MeetingsTranscriptsDeleteRequestSchema, MeetingsTranscriptsDeleteResponseSchema, } from "./meetings.js";
23
27
  import { PreviewListConfigRequestSchema, PreviewStartRequestSchema, PreviewBindTabRequestSchema, PreviewStopRequestSchema, PreviewListConfigResponseSchema, PreviewStartResponseSchema, PreviewBindTabResponseSchema, PreviewStopResponseSchema, } from "./preview.js";
24
28
  import { BrainLogsWatchRequestSchema, BrainLogLineAddedStatusPayloadSchema, BrainBenchRequestSchema, BrainBenchResponseSchema, BrainCalibrateRequestSchema, BrainCalibrateResponseSchema, BrainCatalogListRequestSchema, BrainCatalogListResponseSchema, BrainEvalsGetRequestSchema, BrainEvalsGetResponseSchema, BrainHfQuantsRequestSchema, BrainHfQuantsResponseSchema, BrainHfSearchRequestSchema, BrainHfSearchResponseSchema, BrainHostRestartRequestSchema, BrainHostRestartResponseSchema, BrainHostStartRequestSchema, BrainHostStartResponseSchema, BrainHostStatusRequestSchema, BrainHostStatusResponseSchema, BrainHostStopRequestSchema, BrainHostStopResponseSchema, BrainJobsCancelRequestSchema, BrainJobsCancelResponseSchema, BrainJobsListRequestSchema, BrainJobsListResponseSchema, BrainLogsTailRequestSchema, BrainLogsTailResponseSchema, BrainLogsWatchResponseSchema, BrainModelBudgetGetRequestSchema, BrainModelBudgetGetResponseSchema, BrainModelComponentDeleteRequestSchema, BrainModelComponentDeleteResponseSchema, BrainModelDeleteRequestSchema, BrainModelDeleteResponseSchema, BrainModelLoadRequestSchema, BrainModelLoadResponseSchema, BrainModelProfileGetRequestSchema, BrainModelProfileGetResponseSchema, BrainModelProfileSetRequestSchema, BrainModelProfileSetResponseSchema, BrainModelRenameRequestSchema, BrainModelRenameResetRequestSchema, BrainModelRenameResetResponseSchema, BrainModelRenameResponseSchema, BrainModelUnloadRequestSchema, BrainModelUnloadResponseSchema, BrainModelsAddRequestSchema, BrainModelsAddResponseSchema, BrainModelsInventoryRequestSchema, BrainModelsInventoryResponseSchema, BrainModelsListRequestSchema, BrainModelsListResponseSchema, BrainModelsPullRequestSchema, BrainModelsPullResponseSchema, BrainModelsScanRequestSchema, BrainModelsScanResponseSchema, BrainNetworkDiscoverRequestSchema, BrainNetworkDiscoverResponseSchema, BrainRemoteConfigGetRequestSchema, BrainRemoteConfigGetResponseSchema, BrainRemoteConfigPatchRequestSchema, BrainRemoteConfigPatchResponseSchema, BrainRuntimeInstallRequestSchema, BrainRuntimeInstallResponseSchema, BrainRuntimeListRequestSchema, BrainRuntimeListResponseSchema, BrainRuntimeRemoveRequestSchema, BrainRuntimeRemoveResponseSchema, BrainStatusChangedStatusPayloadSchema, BrainSweepRequestSchema, BrainSweepResponseSchema, } from "./brain.js";
25
29
  import { TerminalActivitySchema } from "./terminal-activity.js";
26
- import { ArtifactMetadataSchema } from "./artifacts/types.js";
27
- import { ArtifactListRequestSchema, ArtifactCreateRequestSchema, ArtifactUpdateRequestSchema, ArtifactRegenerateRequestSchema, ArtifactCancelRequestSchema, ArtifactDeleteRequestSchema, ArtifactStarRequestSchema, ArtifactGetContentRequestSchema, ArtifactListResponseSchema, ArtifactCreateResponseSchema, ArtifactUpdateResponseSchema, ArtifactRegenerateResponseSchema, ArtifactCancelResponseSchema, ArtifactDeleteResponseSchema, ArtifactStarResponseSchema, ArtifactGetContentResponseSchema, ArtifactCreatedNotificationSchema, ArtifactUpdatedNotificationSchema, ArtifactDeletedNotificationSchema, } from "./artifacts/rpc-schemas.js";
28
- import { CLIENT_CAPS } from "./client-capabilities.js";
30
+ import { ArtifactMetadataSchema, ProjectArtifactStoreLocationValueSchema, } from "./artifacts/types.js";
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";
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";
29
33
  import { AGENT_LIFECYCLE_STATUSES } from "./agent-lifecycle.js";
30
34
  import { MAX_EXPLICIT_AGENT_TITLE_CHARS } from "./agent-title-limits.js";
31
35
  import { AgentProviderSchema } from "./provider-manifest.js";
32
36
  import { ConnectorConfigSchema, McpServerConfigSchema, STALL_GUARD_DEFAULT_THRESHOLD, } from "./provider-config.js";
33
37
  import { TOOL_CALL_ICON_NAMES } from "./agent-types.js";
38
+ import { WORKSPACE_LABEL_COLORS } from "./workspace-labels.js";
34
39
  import { ChatCreateRequestSchema, ChatListRequestSchema, ChatInspectRequestSchema, ChatDeleteRequestSchema, ChatPostRequestSchema, ChatReadRequestSchema, ChatWaitRequestSchema, ChatCreateResponseSchema, ChatListResponseSchema, ChatInspectResponseSchema, ChatDeleteResponseSchema, ChatPostResponseSchema, ChatReadResponseSchema, ChatWaitResponseSchema, } from "./chat/rpc-schemas.js";
35
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";
36
41
  import { LoopRunRequestSchema, LoopListRequestSchema, LoopInspectRequestSchema, LoopLogsRequestSchema, LoopStopRequestSchema, LoopRunResponseSchema, LoopListResponseSchema, LoopInspectResponseSchema, LoopLogsResponseSchema, LoopStopResponseSchema, } from "./loop/rpc-schemas.js";
37
42
  import { BrowserAutomationExecuteRequestSchema, BrowserAutomationExecuteResponseSchema, } from "./browser-automation/rpc-schemas.js";
38
- import { BrowserAutomationHostCapabilitySchema } from "./browser-automation/capabilities.js";
39
43
  import { OttoConfigRawSchema, OttoLifecycleCommandRawSchema, OttoMetadataGenerationEntrySchema, OttoMetadataGenerationSchema, OttoScriptEntryRawSchema, OttoWorktreeConfigRawSchema, OttoConfigRevisionSchema, ProjectConfigRpcErrorSchema, } from "./otto-config-schema.js";
40
44
  export * from "./git-hosting.js";
41
45
  export { OttoConfigRawSchema, OttoLifecycleCommandRawSchema, OttoMetadataGenerationEntrySchema, OttoMetadataGenerationSchema, OttoScriptEntryRawSchema, OttoWorktreeConfigRawSchema, };
@@ -87,6 +91,15 @@ const MutableMetadataGenerationConfigSchema = z
87
91
  preferWriterProfiles: z.boolean().optional(),
88
92
  })
89
93
  .passthrough();
94
+ const MutableMetadataGenerationConfigPatchSchema = z
95
+ .object({
96
+ providers: z.array(MutableStructuredGenerationProviderSchema),
97
+ enabled: z.boolean(),
98
+ preferWriterPersonalities: z.boolean(),
99
+ preferWriterProfiles: z.boolean(),
100
+ })
101
+ .partial()
102
+ .passthrough();
90
103
  export const TerminalProfileSchema = z
91
104
  .object({
92
105
  id: z.string(),
@@ -142,57 +155,32 @@ const MutableBrowserToolsConfigSchema = z
142
155
  enabled: z.boolean().default(false),
143
156
  })
144
157
  .passthrough();
145
- export const ModelTierSchema = z.enum(["deep", "standard", "fast"]);
146
- // A user's explicit tier tag for one model of one provider. The daemon stamps
147
- // `model.tier` at ingest, preferring a matching override here over inference
148
- // (see model-tiers.ts). Stored as an array (not a nested record) so a patch
149
- // replaces it wholesale - that's how a tag gets cleared, since deep-merge can't
150
- // delete a record key.
151
- export const ModelTierOverrideSchema = z
152
- .object({
153
- provider: z.string().min(1),
154
- modelId: z.string().min(1),
155
- tier: ModelTierSchema,
156
- })
157
- .passthrough();
158
- // A host-owned model-picker visibility choice. Stored as an array so a patch
159
- // replaces it wholesale and removing the final hidden-model entry sticks.
160
- export const ModelVisibilityOverrideSchema = z
161
- .object({
162
- provider: z.string().min(1),
163
- modelId: z.string().min(1),
164
- visible: z.boolean(),
165
- })
158
+ const MutableBrowserToolsConfigPatchSchema = z
159
+ .object({ enabled: z.boolean() })
160
+ .partial()
166
161
  .passthrough();
167
- // A remembered provider endpoint: a base URL together with the credential it
168
- // was saved with, so pointing a provider back at a previous endpoint is one
169
- // pick instead of re-typing the key. Entries are scoped by the connection
170
- // env-var pair they belong to (OPENAI_BASE_URL/OPENAI_API_KEY vs
171
- // ANTHROPIC_BASE_URL/ANTHROPIC_AUTH_TOKEN), which is exactly what the provider
172
- // settings sheet keys its dropdown off - so every openai-compatible provider
173
- // entry on the host shares one pool, and Claude-compatible entries share
174
- // another. Deliberately `z.string()` rather than an enum: a future env-var
175
- // family must not make old entries unparseable.
176
- export const SavedProviderEndpointSchema = z
162
+ import { ModelTierOverrideSchema, ModelTierSchema, ModelVisibilityOverrideSchema, SavedProviderEndpointSchema, } from "./model-preferences.js";
163
+ export { ModelTierSchema, ModelTierOverrideSchema, ModelVisibilityOverrideSchema, SavedProviderEndpointSchema, } from "./model-preferences.js";
164
+ export const PluginIdSchema = z.string().regex(/^[a-z][a-z0-9-]*$/);
165
+ export const DirectoryPluginSourceSchema = z
177
166
  .object({
178
- /** Stable identity, `${baseUrlKey}::${baseUrl}` - dedupes on re-save. */
179
- id: z.string().min(1),
180
- baseUrlKey: z.string().min(1),
181
- apiKeyKey: z.string().min(1),
182
- baseUrl: z.string().min(1),
183
- apiKey: z.string().default(""),
184
- /** User-facing name; the UI falls back to the URL when absent. */
185
- label: z.string().optional(),
186
- /** Epoch ms of the last save, used to order the dropdown newest-first. */
187
- savedAt: z.number().optional(),
167
+ source: z.literal("directory"),
168
+ path: z.string().min(1),
169
+ enabled: z.boolean().optional(),
188
170
  })
189
- .passthrough();
171
+ .strict();
172
+ export const PluginSourceSchema = z.discriminatedUnion("source", [DirectoryPluginSourceSchema]);
173
+ export const AgentSkillSelectionSchema = z.discriminatedUnion("mode", [
174
+ z.object({ mode: z.literal("all") }).strict(),
175
+ z.object({ mode: z.literal("custom"), skills: z.array(z.string()) }).strict(),
176
+ ]);
190
177
  export const MutableDaemonConfigSchema = z
191
178
  .object({
192
179
  // COMPAT(relayConfig): added in v0.2.6, remove after 2027-01-31 when old daemons are unsupported.
193
180
  relay: MutableRelayConfigSchema.optional(),
194
181
  mcp: z
195
182
  .object({
183
+ enabled: z.boolean().optional(),
196
184
  injectIntoAgents: z.boolean(),
197
185
  // Daemon-wide Otto tool-group allowlist for the MCP (Claude) path.
198
186
  // undefined = all groups enabled (mirrors openai-compat's per-provider
@@ -210,6 +198,22 @@ export const MutableDaemonConfigSchema = z
210
198
  .passthrough(),
211
199
  // Defaults off, matching the daemon's own resolution - browser tools are an
212
200
  // explicit opt-in, so an omitted section must never read as on.
201
+ hostnames: z.union([z.literal(true), z.array(z.string())]).optional(),
202
+ cors: z
203
+ .object({
204
+ allowedOrigins: z.array(z.string()),
205
+ })
206
+ .passthrough()
207
+ .optional(),
208
+ trustedProxies: z.union([z.literal(true), z.array(z.string())]).optional(),
209
+ git: z
210
+ .object({
211
+ maxProcessesPerSecond: z.number().int().positive(),
212
+ maxProcessConcurrency: z.number().int().positive(),
213
+ })
214
+ .optional(),
215
+ app: z.object({ baseUrl: z.string() }).optional(),
216
+ catalogRefreshTimeoutMs: z.number().int().positive().optional(),
213
217
  browserTools: MutableBrowserToolsConfigSchema.default({ enabled: false }),
214
218
  // Daemon-wide agent behavior toggles (Claude-tier capabilities). Defaults to
215
219
  // all-on so a new client parsing an old daemon's config sees today's behavior.
@@ -315,16 +319,25 @@ export const MutableDaemonConfigSchema = z
315
319
  // defaulted, matching `kanban`: absent reads as the historical repository
316
320
  // location, which is exactly what an old daemon does.
317
321
  projectKnowledge: MutableProjectKnowledgeConfigSchema.optional(),
322
+ // Artifacts has its own location default. It shares the storage platform
323
+ // with Knowledge, but never inherits Knowledge's selected location.
324
+ // COMPAT(artifactStoreLocation): added in v0.9.0, remove after 2027-02-28.
325
+ projectArtifacts: MutableProjectArtifactsConfigSchema.optional(),
326
+ // COMPAT(categoryStorageResolver): added in v0.9.0, remove after 2027-02-28.
327
+ projectWorkflows: MutableProjectWorkflowsConfigSchema.optional(),
318
328
  agentProfiles: z.array(AgentProfileSchema).optional(),
329
+ skills: z.object({ selection: AgentSkillSelectionSchema.optional() }).strict().optional(),
330
+ pluginsEnabled: z.boolean().optional(),
331
+ plugins: z.record(PluginIdSchema, PluginSourceSchema).optional(),
319
332
  })
320
333
  .passthrough();
321
334
  export const MutableDaemonConfigPatchSchema = z
322
335
  .object({
323
336
  relay: MutableRelayConfigSchema.partial().optional(),
324
- mcp: MutableDaemonConfigSchema.shape.mcp.partial().optional(),
325
- browserTools: MutableBrowserToolsConfigSchema.partial().optional(),
337
+ mcp: z.object({ injectIntoAgents: z.boolean().optional() }).passthrough().optional(),
338
+ browserTools: MutableBrowserToolsConfigPatchSchema.optional(),
326
339
  // Gated by server_info features.agentBehaviorToggles; patches deep-merge.
327
- agentBehaviors: MutableAgentBehaviorsConfigSchema.partial().optional(),
340
+ agentBehaviors: MutableAgentBehaviorsConfigPatchSchema.optional(),
328
341
  // A null entry removes the provider's config entirely (custom provider
329
342
  // uninstall). Gated by server_info features.providerRemove - old daemons
330
343
  // reject null values.
@@ -332,7 +345,7 @@ export const MutableDaemonConfigPatchSchema = z
332
345
  .record(z.string(), MutableDaemonProviderConfigSchema.partial().passthrough().nullable())
333
346
  .optional(),
334
347
  removeProviders: z.array(z.string().min(1)).optional(),
335
- metadataGeneration: MutableMetadataGenerationConfigSchema.partial().optional(),
348
+ metadataGeneration: MutableMetadataGenerationConfigPatchSchema.optional(),
336
349
  autoArchiveAfterMerge: z.boolean().optional(),
337
350
  // Gated by server_info.features.gitFetchControl; patches deep-merge.
338
351
  gitFetch: MutableGitFetchConfigSchema.partial().optional(),
@@ -356,7 +369,11 @@ export const MutableDaemonConfigPatchSchema = z
356
369
  gitHosting: MutableGitHostingConfigSchema.optional(),
357
370
  // Gated by server_info features.projectKnowledgeStoreLocation; patches
358
371
  // deep-merge.
359
- projectKnowledge: MutableProjectKnowledgeConfigSchema.partial().optional(),
372
+ projectKnowledge: MutableProjectKnowledgeConfigPatchSchema.optional(),
373
+ // COMPAT(artifactStoreLocation): added in v0.9.0, remove after 2027-02-28.
374
+ projectArtifacts: MutableProjectArtifactsConfigPatchSchema.optional(),
375
+ // COMPAT(categoryStorageResolver): added in v0.9.0, remove after 2027-02-28.
376
+ projectWorkflows: MutableProjectWorkflowsConfigPatchSchema.optional(),
360
377
  // Gated by server_info features.agentPersonalities. A patch replaces the
361
378
  // full roster (read-modify-write the array), matching how terminalProfiles
362
379
  // and metadataGeneration.providers patch.
@@ -374,11 +391,11 @@ export const MutableDaemonConfigPatchSchema = z
374
391
  // Gated by server_info features.savedProviderEndpoints. Replaces the full
375
392
  // array (read-modify-write), so forgetting an endpoint drops it from disk.
376
393
  savedProviderEndpoints: z.array(SavedProviderEndpointSchema).optional(),
377
- // Gated by server_info features.lsp; patches deep-merge, so a `languages`
378
- // patch replaces only the keys it names.
379
- lsp: MutableLspConfigSchema.partial().optional(),
394
+ // Gated by server_info features.lsp; dedicated no-default patch schema so
395
+ // a `languages` update cannot materialize and reset the LSP defaults.
396
+ lsp: MutableLspConfigPatchSchema.optional(),
380
397
  // Gated by server_info features.solutionView; patches deep-merge.
381
- dotnetSolutionManagement: MutableDotnetSolutionConfigSchema.partial().optional(),
398
+ dotnetSolutionManagement: MutableDotnetSolutionConfigPatchSchema.optional(),
382
399
  // Gated by server_info features.brainControl; patches deep-merge. Uses the
383
400
  // dedicated no-default patch schema (see MutableBrainConfigPatchSchema): a
384
401
  // plain `.partial()` here keeps every field's default and resets the whole
@@ -389,6 +406,8 @@ export const MutableDaemonConfigPatchSchema = z
389
406
  // enabling/disabling a connector or a tool is a whole-array rewrite.
390
407
  connectors: z.array(ConnectorConfigSchema).optional(),
391
408
  agentProfiles: z.array(AgentProfileSchema).optional(),
409
+ pluginsEnabled: z.boolean().optional(),
410
+ plugins: z.record(PluginIdSchema, PluginSourceSchema).optional(),
392
411
  })
393
412
  .partial()
394
413
  .passthrough();
@@ -419,22 +438,6 @@ const AgentProviderNoticeSchema = z.discriminatedUnion("type", [
419
438
  z.object({ type: z.literal("warning"), message: z.string() }),
420
439
  z.object({ type: z.literal("error"), message: z.string() }),
421
440
  ]);
422
- // Provider-reported plan rate-limit status (e.g. Claude claude.ai plan
423
- // windows), pushed on the agent stream when it changes. Presentation-only:
424
- // the app decides whether to show it (rateLimitWarningsEnabled setting).
425
- export const AgentRateLimitInfoSchema = z.object({
426
- status: z.enum(["allowed", "warning", "rejected"]),
427
- // Percentage of the limit window used, 0-100. Absent when the provider
428
- // does not report it (Claude only includes it near the limit).
429
- utilizationPercent: z.number().optional(),
430
- // Provider-reported window identifier, e.g. "five_hour" | "seven_day".
431
- // Open set - display code falls back to a generic label for unknown values.
432
- limitType: z.string().optional(),
433
- // ISO 8601 timestamp when the window resets.
434
- resetsAt: z.string().optional(),
435
- // True when usage is currently drawing from overage/extra usage credits.
436
- isUsingOverage: z.boolean().optional(),
437
- });
438
441
  export const AgentFeatureToggleSchema = z.object({
439
442
  type: z.literal("toggle"),
440
443
  id: z.string(),
@@ -791,6 +794,10 @@ const ToolCallTimelineItemPayloadSchema = z.discriminatedUnion("status", [
791
794
  ToolCallFailedPayloadSchema,
792
795
  ToolCallCanceledPayloadSchema,
793
796
  ]);
797
+ const AgentTimelineImageAttachmentSchema = z.object({
798
+ path: z.string(),
799
+ mimeType: z.string(),
800
+ });
794
801
  // zod-aot 0.20.4 miscompiles this as a nested discriminated union by omitting
795
802
  // the inner tool_call branch from the generated outer dispatch.
796
803
  export const AgentTimelineItemPayloadSchema = z.union([
@@ -799,6 +806,7 @@ export const AgentTimelineItemPayloadSchema = z.union([
799
806
  text: z.string(),
800
807
  messageId: z.string().optional(),
801
808
  clientMessageId: z.string().optional(),
809
+ images: z.array(AgentTimelineImageAttachmentSchema).optional(),
802
810
  }),
803
811
  z.object({
804
812
  type: z.literal("assistant_message"),
@@ -873,6 +881,7 @@ export const AgentStreamEventPayloadSchema = z.discriminatedUnion("type", [
873
881
  type: z.literal("timeline"),
874
882
  provider: AgentProviderSchema,
875
883
  item: AgentTimelineItemPayloadSchema,
884
+ turnId: z.string().optional(),
876
885
  }),
877
886
  z.object({
878
887
  type: z.literal("permission_requested"),
@@ -1207,6 +1216,50 @@ export const WorkspacePinSetRequestSchema = z.object({
1207
1216
  pinned: z.boolean(),
1208
1217
  requestId: z.string(),
1209
1218
  });
1219
+ export const WorkspaceLabelColorSchema = z.enum(WORKSPACE_LABEL_COLORS);
1220
+ export const WorkspaceLabelDefinitionSchema = z.object({
1221
+ name: z.string(),
1222
+ color: WorkspaceLabelColorSchema,
1223
+ });
1224
+ const WorkspaceLabelSyncCursorSchema = z.object({
1225
+ generation: z.string(),
1226
+ afterSeq: z.number().int().nonnegative(),
1227
+ });
1228
+ export const WorkspaceLabelListRequestSchema = z.object({
1229
+ type: z.literal("workspace.label.list.request"),
1230
+ requestId: z.string(),
1231
+ subscribe: z.object({ subscriptionId: z.string() }),
1232
+ sync: WorkspaceLabelSyncCursorSchema.optional(),
1233
+ });
1234
+ export const WorkspaceLabelAssignmentSetRequestSchema = z.object({
1235
+ type: z.literal("workspace.label.assignment.set.request"),
1236
+ requestId: z.string(),
1237
+ workspaceId: z.string(),
1238
+ label: WorkspaceLabelDefinitionSchema,
1239
+ assigned: z.boolean(),
1240
+ });
1241
+ /**
1242
+ * Editing a label is one operation. A name and a colour are two fields of one thing, and two
1243
+ * RPCs can land half-applied — leaving the catalog in a state the user never asked for and the
1244
+ * UI with nothing true to say. Both fields are optional; omitting one leaves it alone.
1245
+ */
1246
+ export const WorkspaceLabelUpdateRequestSchema = z.object({
1247
+ type: z.literal("workspace.label.update.request"),
1248
+ requestId: z.string(),
1249
+ name: z.string(),
1250
+ newName: z.string().optional(),
1251
+ color: WorkspaceLabelColorSchema.optional(),
1252
+ });
1253
+ export const WorkspaceLabelDeleteRequestSchema = z.object({
1254
+ type: z.literal("workspace.label.delete.request"),
1255
+ requestId: z.string(),
1256
+ name: z.string(),
1257
+ });
1258
+ export const WorkspaceLabelDeleteInspectRequestSchema = z.object({
1259
+ type: z.literal("workspace.label.delete.inspect.request"),
1260
+ requestId: z.string(),
1261
+ name: z.string(),
1262
+ });
1210
1263
  export const WorkspaceRecoveryInspectRequestSchema = z.object({
1211
1264
  type: z.literal("workspace.recovery.inspect.request"),
1212
1265
  workspaceId: z.string(),
@@ -1263,6 +1316,15 @@ export const ForgeIssueAttachmentSchema = z.object({
1263
1316
  body: z.string().nullable().optional(),
1264
1317
  projectPath: z.string().optional(),
1265
1318
  });
1319
+ export const ExternalResourceAttachmentMetadataSchema = z.object({
1320
+ provider: z.string(),
1321
+ providerLabel: z.string(),
1322
+ resourceType: z.string(),
1323
+ id: z.string(),
1324
+ identifier: z.string(),
1325
+ title: z.string(),
1326
+ url: z.string(),
1327
+ });
1266
1328
  export const TextAttachmentSchema = z
1267
1329
  .object({
1268
1330
  type: z.literal("text"),
@@ -1270,6 +1332,7 @@ export const TextAttachmentSchema = z
1270
1332
  contextKind: z.string().optional(),
1271
1333
  title: z.string().nullable().optional(),
1272
1334
  text: z.string(),
1335
+ externalResource: ExternalResourceAttachmentMetadataSchema.optional(),
1273
1336
  })
1274
1337
  .transform(({ contextKind, ...attachment }) => ({
1275
1338
  ...attachment,
@@ -1343,17 +1406,36 @@ const ImageAttachmentSchema = z.object({
1343
1406
  data: z.string(), // base64 encoded image
1344
1407
  mimeType: z.string(), // e.g., "image/jpeg", "image/png"
1345
1408
  });
1409
+ export const ActiveTurnBehaviorSchema = z.enum(["interrupt", "steer"]);
1346
1410
  export const SendAgentMessageSchema = z.object({
1347
1411
  type: z.literal("send_agent_message"),
1348
1412
  agentId: z.string(),
1349
1413
  text: z.string(),
1350
1414
  messageId: z.string().optional(), // Client-provided ID for deduplication
1415
+ activeTurnBehavior: ActiveTurnBehaviorSchema.optional(),
1351
1416
  images: z.array(ImageAttachmentSchema).optional(),
1352
1417
  attachments: AgentAttachmentsSchema,
1353
1418
  });
1354
1419
  // ============================================================================
1355
1420
  // Agent RPCs (requestId-correlated)
1356
1421
  // ============================================================================
1422
+ const DirectorySyncRequestSchema = z.object({
1423
+ generation: z.string().optional(),
1424
+ afterSeq: z.number().int().nonnegative().optional(),
1425
+ });
1426
+ const DirectorySyncRemovalSchema = z.object({
1427
+ id: z.string(),
1428
+ seq: z.number().int().positive(),
1429
+ });
1430
+ const DirectorySyncMetadataSchema = z.object({
1431
+ generation: z.string(),
1432
+ headSeq: z.number().int().nonnegative(),
1433
+ mode: z.enum(["snapshot", "changes"]),
1434
+ reason: z
1435
+ .enum(["no_cursor", "generation_changed", "cursor_expired", "changes_too_large"])
1436
+ .optional(),
1437
+ removals: z.array(DirectorySyncRemovalSchema),
1438
+ });
1357
1439
  export const FetchAgentsRequestMessageSchema = z.object({
1358
1440
  type: z.literal("fetch_agents_request"),
1359
1441
  requestId: z.string(),
@@ -1376,6 +1458,8 @@ export const FetchAgentsRequestMessageSchema = z.object({
1376
1458
  subscriptionId: z.string().optional(),
1377
1459
  })
1378
1460
  .optional(),
1461
+ // COMPAT(directorySync): added in v0.3.x, remove optional after 2027-02-12.
1462
+ sync: DirectorySyncRequestSchema.optional(),
1379
1463
  });
1380
1464
  const WorkspaceStateBucketSchema = z.enum([
1381
1465
  "needs_input",
@@ -1412,10 +1496,14 @@ export const FetchWorkspacesRequestMessageSchema = z.object({
1412
1496
  subscriptionId: z.string().optional(),
1413
1497
  })
1414
1498
  .optional(),
1499
+ // COMPAT(directorySync): added in v0.3.x, remove optional after 2027-02-12.
1500
+ sync: DirectorySyncRequestSchema.optional(),
1415
1501
  });
1416
1502
  export const ProjectListRequestMessageSchema = z.object({
1417
1503
  type: z.literal("project.list.request"),
1418
1504
  requestId: z.string(),
1505
+ // COMPAT(directorySync): added in v0.3.x, remove optional after 2027-02-12.
1506
+ sync: DirectorySyncRequestSchema.optional(),
1419
1507
  });
1420
1508
  export const ProjectResolveWorkspaceForPathRequestSchema = z.object({
1421
1509
  type: z.literal("project.resolveWorkspaceForPath.request"),
@@ -1464,6 +1552,7 @@ export const SendAgentMessageRequestSchema = z.object({
1464
1552
  agentId: z.string(),
1465
1553
  text: z.string(),
1466
1554
  messageId: z.string().optional(), // Client-provided ID for deduplication
1555
+ activeTurnBehavior: ActiveTurnBehaviorSchema.optional(),
1467
1556
  images: z.array(ImageAttachmentSchema).optional(),
1468
1557
  attachments: AgentAttachmentsSchema,
1469
1558
  // How to reach a BUSY agent. "interrupt" (default, and what every older
@@ -1488,6 +1577,10 @@ export const DaemonGetPairingOfferRequestSchema = z.object({
1488
1577
  type: z.literal("daemon.get_pairing_offer.request"),
1489
1578
  requestId: z.string(),
1490
1579
  });
1580
+ export const DaemonConfigReloadRequestSchema = z.object({
1581
+ type: z.literal("daemon.config.reload.request"),
1582
+ requestId: z.string(),
1583
+ });
1491
1584
  export const HubManagementDaemonConnectRequestSchema = z.object({
1492
1585
  type: z.literal("hub.management.daemon.connect.request"),
1493
1586
  requestId: z.string(),
@@ -1507,6 +1600,81 @@ export const DiagnosticsRequestSchema = z.object({
1507
1600
  type: z.literal("diagnostics.request"),
1508
1601
  requestId: z.string(),
1509
1602
  });
1603
+ export const PluginCatalogGetRequestSchema = z.object({
1604
+ type: z.literal("plugin.catalog.get.request"),
1605
+ requestId: z.string(),
1606
+ });
1607
+ export const PluginListRequestSchema = z.object({
1608
+ type: z.literal("plugin.list.request"),
1609
+ requestId: z.string(),
1610
+ });
1611
+ export const PluginLogsGetRequestSchema = z.object({
1612
+ type: z.literal("plugin.logs.get.request"),
1613
+ requestId: z.string(),
1614
+ pluginId: PluginIdSchema,
1615
+ });
1616
+ export const PluginDirectoryInstallRequestSchema = z.object({
1617
+ type: z.literal("plugin.directory.install.request"),
1618
+ requestId: z.string(),
1619
+ path: z.string().min(1),
1620
+ id: PluginIdSchema.optional(),
1621
+ });
1622
+ export const PluginDirectoryInspectRequestSchema = z.object({
1623
+ type: z.literal("plugin.directory.inspect.request"),
1624
+ requestId: z.string(),
1625
+ path: z.string().min(1),
1626
+ });
1627
+ function pluginIdRequest(type) {
1628
+ return z.object({ type: z.literal(type), requestId: z.string(), pluginId: PluginIdSchema });
1629
+ }
1630
+ export const PluginReloadRequestSchema = pluginIdRequest("plugin.reload.request");
1631
+ export const PluginEnableRequestSchema = pluginIdRequest("plugin.enable.request");
1632
+ export const PluginDisableRequestSchema = pluginIdRequest("plugin.disable.request");
1633
+ export const PluginRemoveRequestSchema = pluginIdRequest("plugin.remove.request");
1634
+ export const PluginRpcInvokeRequestSchema = z.object({
1635
+ type: z.literal("plugin.rpc.invoke.request"),
1636
+ requestId: z.string(),
1637
+ pluginId: PluginIdSchema,
1638
+ method: z.string().min(1),
1639
+ input: z.unknown(),
1640
+ });
1641
+ export const AgentSkillOperationSchema = z.discriminatedUnion("kind", [
1642
+ z.object({ kind: z.literal("add"), name: z.string() }).strict(),
1643
+ z.object({ kind: z.literal("update"), name: z.string() }).strict(),
1644
+ z.object({ kind: z.literal("delete"), name: z.string() }).strict(),
1645
+ ]);
1646
+ export const AgentSkillsStatusSchema = z.object({
1647
+ state: z.enum(["not-installed", "up-to-date", "drift"]),
1648
+ ops: z.array(AgentSkillOperationSchema),
1649
+ available: z.array(z.string()),
1650
+ installed: z.array(z.string()),
1651
+ selection: AgentSkillSelectionSchema,
1652
+ });
1653
+ export const AgentSkillsConfirmationSchema = z.object({ removals: z.array(z.string()) }).strict();
1654
+ export const AgentSkillsSaveResultSchema = AgentSkillsStatusSchema.extend({
1655
+ confirmationRequired: AgentSkillsConfirmationSchema.nullable(),
1656
+ });
1657
+ function agentSkillsRequest(type) {
1658
+ return z.object({ type: z.literal(type), requestId: z.string() }).strict();
1659
+ }
1660
+ export const AgentSkillsGetStatusRequestSchema = agentSkillsRequest("agent.skills.get_status.request");
1661
+ export const AgentSkillsReconcileRequestSchema = agentSkillsRequest("agent.skills.reconcile.request");
1662
+ export const AgentSkillsUninstallRequestSchema = agentSkillsRequest("agent.skills.uninstall.request");
1663
+ export const AgentSkillsSaveSelectionRequestSchema = z
1664
+ .object({
1665
+ type: z.literal("agent.skills.save_selection.request"),
1666
+ requestId: z.string(),
1667
+ selection: AgentSkillSelectionSchema,
1668
+ confirmedRemovals: z.array(z.string()).optional(),
1669
+ })
1670
+ .strict();
1671
+ export const AgentSkillsImportLegacySelectionRequestSchema = z
1672
+ .object({
1673
+ type: z.literal("agent.skills.import_legacy_selection.request"),
1674
+ requestId: z.string(),
1675
+ selection: AgentSkillSelectionSchema,
1676
+ })
1677
+ .strict();
1510
1678
  export const GetDaemonConfigRequestMessageSchema = z.object({
1511
1679
  type: z.literal("get_daemon_config_request"),
1512
1680
  requestId: z.string(),
@@ -1678,6 +1846,8 @@ export const CreateAgentRequestMessageSchema = z.object({
1678
1846
  agentProfile: z.string().optional(),
1679
1847
  env: z.record(z.string(), z.string()).optional(),
1680
1848
  workspaceId: z.string().optional(),
1849
+ // COMPAT(architecturalViewDraftAuthoring): added in v0.9.0, remove after 2027-02-28.
1850
+ architecturalViewDraft: z.object({ viewId: z.string(), draftId: z.string() }).optional(),
1681
1851
  // Optional caller context lets managed CLI invocations use the same daemon-owned
1682
1852
  // workspace and parentage policy as agent-scoped MCP creation.
1683
1853
  callerAgentId: z.string().optional(),
@@ -1793,6 +1963,9 @@ export const FetchAgentTimelineRequestMessageSchema = z.object({
1793
1963
  projection: z.enum(["projected", "canonical"]).optional(),
1794
1964
  // Allow the client to merge this bounded page outside its contiguous loaded range.
1795
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(),
1796
1969
  });
1797
1970
  export const AgentTimelineListPromptsRequestMessageSchema = z.object({
1798
1971
  type: z.literal("agent.timeline.list_prompts.request"),
@@ -2827,6 +3000,7 @@ export const FileExplorerRequestSchema = z.object({
2827
3000
  mode: z.enum(["list", "file"]),
2828
3001
  requestId: z.string(),
2829
3002
  acceptBinary: z.boolean().optional(),
3003
+ maxBytes: z.number().int().positive().optional(),
2830
3004
  });
2831
3005
  export const FileVersionSchema = z.discriminatedUnion("status", [
2832
3006
  z.object({
@@ -3308,6 +3482,11 @@ export const SessionInboundMessageSchema = z.discriminatedUnion("type", [
3308
3482
  ProjectRemoveRequestSchema,
3309
3483
  WorkspaceTitleSetRequestSchema,
3310
3484
  WorkspacePinSetRequestSchema,
3485
+ WorkspaceLabelListRequestSchema,
3486
+ WorkspaceLabelAssignmentSetRequestSchema,
3487
+ WorkspaceLabelUpdateRequestSchema,
3488
+ WorkspaceLabelDeleteRequestSchema,
3489
+ WorkspaceLabelDeleteInspectRequestSchema,
3311
3490
  WorkspaceRecoveryInspectRequestSchema,
3312
3491
  WorkspaceRecoveryRestoreRequestSchema,
3313
3492
  SetVoiceModeMessageSchema,
@@ -3315,10 +3494,26 @@ export const SessionInboundMessageSchema = z.discriminatedUnion("type", [
3315
3494
  WaitForFinishRequestSchema,
3316
3495
  DaemonGetStatusRequestSchema,
3317
3496
  DaemonGetPairingOfferRequestSchema,
3497
+ DaemonConfigReloadRequestSchema,
3318
3498
  HubManagementDaemonConnectRequestSchema,
3319
3499
  HubManagementDaemonGetStatusRequestSchema,
3320
3500
  HubManagementDaemonDisconnectRequestSchema,
3321
3501
  DiagnosticsRequestSchema,
3502
+ PluginCatalogGetRequestSchema,
3503
+ PluginListRequestSchema,
3504
+ PluginLogsGetRequestSchema,
3505
+ PluginDirectoryInstallRequestSchema,
3506
+ PluginDirectoryInspectRequestSchema,
3507
+ PluginReloadRequestSchema,
3508
+ PluginEnableRequestSchema,
3509
+ PluginDisableRequestSchema,
3510
+ PluginRemoveRequestSchema,
3511
+ PluginRpcInvokeRequestSchema,
3512
+ AgentSkillsGetStatusRequestSchema,
3513
+ AgentSkillsReconcileRequestSchema,
3514
+ AgentSkillsUninstallRequestSchema,
3515
+ AgentSkillsSaveSelectionRequestSchema,
3516
+ AgentSkillsImportLegacySelectionRequestSchema,
3322
3517
  GetDaemonConfigRequestMessageSchema,
3323
3518
  SetDaemonConfigRequestMessageSchema,
3324
3519
  ConnectorsListToolsRequestSchema,
@@ -3378,6 +3573,7 @@ export const SessionInboundMessageSchema = z.discriminatedUnion("type", [
3378
3573
  ContextPromptPreviewGetRequestMessageSchema,
3379
3574
  ProjectKnowledgeListRequestMessageSchema,
3380
3575
  ProjectKnowledgeGetRequestMessageSchema,
3576
+ ProjectKnowledgeRootGetRequestMessageSchema,
3381
3577
  ProjectKnowledgeCreateRequestMessageSchema,
3382
3578
  ProjectKnowledgeApplyRequestMessageSchema,
3383
3579
  ProjectKnowledgeStatusRequestMessageSchema,
@@ -3454,10 +3650,20 @@ export const SessionInboundMessageSchema = z.discriminatedUnion("type", [
3454
3650
  RunsGraphsListRequestSchema,
3455
3651
  RunsGraphsSaveRequestSchema,
3456
3652
  RunsGraphsDeleteRequestSchema,
3653
+ WorkflowsGraphsListRequestSchema,
3654
+ WorkflowsGraphSaveRequestSchema,
3655
+ WorkflowsGraphExportRequestSchema,
3656
+ WorkflowsGraphImportRequestSchema,
3457
3657
  RunsTemplatesListRequestSchema,
3458
3658
  RunsTemplatesSaveRequestSchema,
3459
3659
  RunsTemplatesDeleteRequestSchema,
3660
+ WorkflowsTemplatesListRequestSchema,
3661
+ WorkflowsTemplateSaveRequestSchema,
3662
+ WorkflowsStorageTransferRequestSchema,
3663
+ WorkflowsStartRequestSchema,
3460
3664
  RunsStartRequestSchema,
3665
+ WorkflowsStartConfirmationRespondRequestSchema,
3666
+ ProjectWorkflowStoreSetRequestSchema,
3461
3667
  CheckoutMergeRequestSchema,
3462
3668
  CheckoutMergeFromBaseRequestSchema,
3463
3669
  CheckoutPullRequestSchema,
@@ -3608,6 +3814,20 @@ export const SessionInboundMessageSchema = z.discriminatedUnion("type", [
3608
3814
  ArtifactDeleteRequestSchema,
3609
3815
  ArtifactStarRequestSchema,
3610
3816
  ArtifactGetContentRequestSchema,
3817
+ ArtifactRepairRequestSchema,
3818
+ ArtifactDataGetRequestSchema,
3819
+ ArtifactDataUpdateRequestSchema,
3820
+ ArtifactStoreMoveRequestSchema,
3821
+ ProjectArtifactStoreSetRequestSchema,
3822
+ ArchitecturalViewsDeliverRequestSchema,
3823
+ ArchitecturalViewsListRequestSchema,
3824
+ ArchitecturalViewsGetContentRequestSchema,
3825
+ ArchitecturalViewsDraftCreateRequestSchema,
3826
+ ArchitecturalViewsDraftUpdateRequestSchema,
3827
+ ArchitecturalViewsDraftPublishRequestSchema,
3828
+ ArchitecturalViewsDraftDiscardRequestSchema,
3829
+ ArchitecturalViewsDraftGetContentRequestSchema,
3830
+ ArchitecturalViewsDraftListRequestSchema,
3611
3831
  ]);
3612
3832
  // ============================================================================
3613
3833
  // Session Outbound Messages (Session emits these)
@@ -3765,6 +3985,10 @@ export const ServerInfoStatusPayloadSchema = z
3765
3985
  providersSnapshot: z.boolean().optional(),
3766
3986
  // COMPAT(providersSnapshotCwd): added in v0.3.2, remove gate after 2027-02-10.
3767
3987
  providersSnapshotCwd: z.boolean().optional(),
3988
+ // COMPAT(directorySync): added in v0.3.x, remove gate after 2027-02-12.
3989
+ directorySync: z.boolean().optional(),
3990
+ // COMPAT(workspaceLabels): added in v0.5.0, remove after 2027-08-14.
3991
+ workspaceLabels: z.boolean().optional(),
3768
3992
  // COMPAT(checkoutForgeSetAutoMerge): added in v0.1.106, remove old
3769
3993
  // checkoutGithubSetAutoMerge fallback after 2026-12-28.
3770
3994
  checkoutForgeSetAutoMerge: z.boolean().optional(),
@@ -3780,10 +4004,24 @@ export const ServerInfoStatusPayloadSchema = z
3780
4004
  forgeSearch: z.boolean().optional(),
3781
4005
  // COMPAT(daemonStatusRpc): added in v0.1.76, remove gate after 2026-11-18.
3782
4006
  daemonStatusRpc: z.boolean().optional(),
4007
+ // COMPAT(daemonConfigReload): added in v0.4.0, remove gate after 2027-02-14.
4008
+ daemonConfigReload: z.boolean().optional(),
3783
4009
  // COMPAT(relayConfig): added in v0.2.6, remove gate after 2027-01-31.
3784
4010
  relayConfig: z.boolean().optional(),
3785
4011
  // COMPAT(pushTokenRevocation): added in v0.3.2, remove gate after 2027-02-10.
3786
4012
  pushTokenRevocation: z.boolean().optional(),
4013
+ // COMPAT(plugins): added in v0.3.0, remove gate after 2027-08-07.
4014
+ plugins: z.boolean().optional(),
4015
+ // COMPAT(pluginManagement): added in v0.4.0, remove gate after 2027-08-14.
4016
+ pluginManagement: z.boolean().optional(),
4017
+ // COMPAT(pluginLogs): added in v0.4.0, remove gate after 2027-08-16.
4018
+ pluginLogs: z.boolean().optional(),
4019
+ // COMPAT(pluginThemes): added in v0.5.0, remove gate after 2027-08-20.
4020
+ // A daemon that predates this flag keeps `addTheme` in the server bundle it compiles,
4021
+ // so a theme plugin cannot start there at all.
4022
+ pluginThemes: z.boolean().optional(),
4023
+ // COMPAT(skillManagement): added in v0.4.0, remove gate after 2027-08-16.
4024
+ skillManagement: z.boolean().optional(),
3787
4025
  // COMPAT(terminalRestoreModes): added in v0.1.81, remove gate after 2026-11-23.
3788
4026
  "terminal-restore-modes": z.boolean().optional(),
3789
4027
  // COMPAT(terminalCompatibilityDiagnostic): added in v0.8.9, remove gate after 2027-02-12.
@@ -3916,6 +4154,15 @@ export const ServerInfoStatusPayloadSchema = z
3916
4154
  agentContextUsage: z.boolean().optional(),
3917
4155
  // COMPAT(artifacts): added in v0.4.1, drop the gate when daemon floor >= v0.4.1.
3918
4156
  artifacts: z.boolean().optional(),
4157
+ // COMPAT(architecturalViews): added in v0.9.0, remove after 2027-02-28.
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(),
3919
4166
  // COMPAT(observedSubagents): added in v0.4.3, drop the gate when daemon floor >= v0.4.3.
3920
4167
  observedSubagents: z.boolean().optional(),
3921
4168
  // COMPAT(backgroundShellTasks): added in v0.5.3, drop the gate when daemon floor >= v0.5.3.
@@ -3926,6 +4173,7 @@ export const ServerInfoStatusPayloadSchema = z
3926
4173
  retainedTranscripts: z.boolean().optional(),
3927
4174
  // COMPAT(suggestedTasks): added in v0.5.6, drop the gate when daemon floor >= v0.5.6.
3928
4175
  suggestedTasks: z.boolean().optional(),
4176
+ suggestedTaskModelSelection: z.boolean().optional(),
3929
4177
  // COMPAT(steerQueue): added in v0.6.8, drop the gate when daemon floor >= v0.6.8.
3930
4178
  // Daemon owns a per-agent queue of steering messages, accepts
3931
4179
  // `delivery: "queue"` on send, reports `queuedMessages` on the agent
@@ -3970,6 +4218,10 @@ export const ServerInfoStatusPayloadSchema = z
3970
4218
  personalityMemory: z.boolean().optional(),
3971
4219
  // COMPAT(projectKnowledge): added in v0.8.5, drop the gate when daemon floor >= v0.8.5.
3972
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(),
3973
4225
  // COMPAT(projectKnowledgeRefinement): added in v0.8.19, drop the gate
3974
4226
  // when floor >= v0.8.19.
3975
4227
  projectKnowledgeRefinement: z.boolean().optional(),
@@ -3988,6 +4240,29 @@ export const ServerInfoStatusPayloadSchema = z
3988
4240
  // host-local instead of in the repository: the project.knowledge.store.*
3989
4241
  // RPCs, the per-project override, and the host default setting.
3990
4242
  projectKnowledgeStoreLocation: z.boolean().optional(),
4243
+ // COMPAT(artifactStoreLocation): added in v0.9.0, remove after 2027-02-28.
4244
+ // The host supports the independent Artifacts storage default and
4245
+ // per-project overrides.
4246
+ artifactStoreLocation: z.boolean().optional(),
4247
+ // COMPAT(artifactRepair): added in v0.9.0, remove after 2027-02-28.
4248
+ // The host monitors externally edited artifacts and can restore a
4249
+ // retained last-known-good output through artifact.repair.request.
4250
+ artifactRepair: z.boolean().optional(),
4251
+ // COMPAT(artifactDataUpdate): added in v0.9.0, remove after 2027-02-28.
4252
+ artifactDataUpdate: z.boolean().optional(),
4253
+ // COMPAT(artifactStoreMove): added in v0.9.0, remove after 2027-02-28.
4254
+ // The host can explicitly transfer a settled artifact between its
4255
+ // repository and host-local stores without changing write preferences.
4256
+ artifactStoreMove: z.boolean().optional(),
4257
+ // COMPAT(artifactProvenance): added in v0.9.0, remove after 2027-02-28.
4258
+ // The host persists and exposes an Artifact's latest durable source.
4259
+ artifactProvenance: z.boolean().optional(),
4260
+ // COMPAT(categoryStorageResolver): added in v0.9.0, remove after 2027-02-28.
4261
+ // An additive shared resolver with a declared supported-category set.
4262
+ categoryStorageResolver: z
4263
+ .object({ categories: z.array(z.string().min(1)) })
4264
+ .passthrough()
4265
+ .optional(),
3991
4266
  // Script discovery - the daemon scans a workspace for the Scripts its
3992
4267
  // project files already declare (package.json scripts, and later
3993
4268
  // Makefile targets, .NET launch profiles) and serves them from
@@ -4112,8 +4387,24 @@ export const ServerInfoStatusPayloadSchema = z
4112
4387
  // The daemon accepts `runs.start` with `draft: true` AND a `runId`,
4113
4388
  // re-saving that draft in place instead of minting a second one.
4114
4389
  runsDraftEdit: z.boolean().optional(),
4390
+ // COMPAT(workflowStartRpc): added in v0.9.0, remove after 2027-02-28.
4391
+ // A new client uses workflows.start when this is true; an older daemon
4392
+ // continues to receive the established runs.start pair.
4393
+ workflowStartRpc: z.boolean().optional(),
4394
+ // COMPAT(workflowStartConfirmation): added in v0.9.0, remove after
4395
+ // 2027-02-28. A new client refuses the start surface rather than
4396
+ // claiming it can enforce agent-count confirmation on an older host.
4397
+ workflowStartConfirmation: z.boolean().optional(),
4115
4398
  // COMPAT(orchestrationGraphs): added in v0.6.7, drop the gate when daemon floor >= v0.6.7.
4116
4399
  orchestrationGraphs: z.boolean().optional(),
4400
+ // COMPAT(graphCheckOutputPorts): added in v0.9.0, remove after 2027-02-28.
4401
+ // A client must not offer Check recovery routing to a host that still
4402
+ // treats a false Check as an unconditional terminal failure.
4403
+ graphCheckOutputPorts: z.boolean().optional(),
4404
+ // COMPAT(scheduleWorkflowTargets): added in v0.9.0, remove after 2027-02-28.
4405
+ // The Schedule editor may select saved Workflow definitions only when
4406
+ // the host performs the project/definition resolution and audit.
4407
+ scheduleWorkflowTargets: z.boolean().optional(),
4117
4408
  // COMPAT(fileOutsideWorkspace): added in v0.5.8, drop the gate when daemon floor >= v0.5.8.
4118
4409
  // Set when the daemon will serve single-file read/write/watch for paths
4119
4410
  // outside every known workspace (bounded only by OS filesystem
@@ -4418,6 +4709,10 @@ export const DaemonConfigChangedStatusPayloadSchema = z
4418
4709
  config: MutableDaemonConfigSchema,
4419
4710
  })
4420
4711
  .passthrough();
4712
+ export const PluginCatalogChangedStatusPayloadSchema = z.object({
4713
+ status: z.literal("plugin_catalog_changed"),
4714
+ pluginId: PluginIdSchema,
4715
+ });
4421
4716
  export const KnownStatusPayloadSchema = z.discriminatedUnion("status", [
4422
4717
  BrainStatusChangedStatusPayloadSchema,
4423
4718
  BrainLogLineAddedStatusPayloadSchema,
@@ -4430,6 +4725,7 @@ export const KnownStatusPayloadSchema = z.discriminatedUnion("status", [
4430
4725
  ShutdownRequestedStatusPayloadSchema,
4431
4726
  RestartRequestedStatusPayloadSchema,
4432
4727
  DaemonConfigChangedStatusPayloadSchema,
4728
+ PluginCatalogChangedStatusPayloadSchema,
4433
4729
  ]);
4434
4730
  export const ArtifactMessageSchema = z.object({
4435
4731
  type: z.literal("artifact"),
@@ -4572,7 +4868,7 @@ const WorkspaceGitRuntimePayloadSchema = z
4572
4868
  })
4573
4869
  .optional()
4574
4870
  .nullable();
4575
- const WorkspaceGitHubRuntimePayloadSchema = z
4871
+ export const WorkspaceGitHubRuntimePayloadSchema = z
4576
4872
  .object({
4577
4873
  featuresEnabled: z.boolean().optional(),
4578
4874
  pullRequest: z
@@ -4650,6 +4946,8 @@ export const WorkspaceDescriptorPayloadSchema = z
4650
4946
  title: z.string().nullable().optional(),
4651
4947
  // COMPAT(workspacePinning): added in v0.1.107, remove optional after 2027-01-12.
4652
4948
  pinnedAt: z.string().nullable().optional(),
4949
+ // COMPAT(workspaceLabels): added in v0.5.0, remove optional after 2027-08-14.
4950
+ labels: z.array(z.string()).optional(),
4653
4951
  archivingAt: z.string().nullable().optional().default(null),
4654
4952
  status: WorkspaceStateBucketSchema,
4655
4953
  // Best-effort workspace status entry timestamp. Old daemons omit the
@@ -4686,6 +4984,8 @@ export const WorkspaceDescriptorPayloadSchema = z
4686
4984
  // Old daemons omit it; absent means the client falls back to GitHub.
4687
4985
  forge: z.string().optional(),
4688
4986
  project: ProjectPlacementPayloadSchema.optional(),
4987
+ // COMPAT(directorySync): sequence of this latest directory projection.
4988
+ syncSeq: z.number().int().positive().optional(),
4689
4989
  })
4690
4990
  .transform((workspace) => ({
4691
4991
  ...workspace,
@@ -4704,10 +5004,14 @@ export const AgentUpdateMessageSchema = z.object({
4704
5004
  kind: z.literal("upsert"),
4705
5005
  agent: AgentSnapshotPayloadSchema,
4706
5006
  project: ProjectPlacementPayloadSchema.nullable().optional(),
5007
+ generation: z.string().optional(),
5008
+ seq: z.number().int().positive().optional(),
4707
5009
  }),
4708
5010
  z.object({
4709
5011
  kind: z.literal("remove"),
4710
5012
  agentId: z.string(),
5013
+ generation: z.string().optional(),
5014
+ seq: z.number().int().positive().optional(),
4711
5015
  }),
4712
5016
  ]),
4713
5017
  });
@@ -4755,6 +5059,8 @@ const AgentDirectoryResponseEntrySchema = z.object({
4755
5059
  // anyway; sending it keeps the client from re-deriving a second opinion that
4756
5060
  // could disagree with the ranking it is explaining.
4757
5061
  searchMatches: z.array(AgentSearchMatchSchema).optional(),
5062
+ // COMPAT(directorySync): sequence of this latest directory projection.
5063
+ syncSeq: z.number().int().positive().optional(),
4758
5064
  });
4759
5065
  const AgentDirectoryPageInfoSchema = z.object({
4760
5066
  nextCursor: z.string().nullable(),
@@ -4768,6 +5074,7 @@ export const FetchAgentsResponseMessageSchema = z.object({
4768
5074
  subscriptionId: z.string().nullable().optional(),
4769
5075
  entries: z.array(AgentDirectoryResponseEntrySchema),
4770
5076
  pageInfo: AgentDirectoryPageInfoSchema,
5077
+ sync: DirectorySyncMetadataSchema.optional(),
4771
5078
  }),
4772
5079
  });
4773
5080
  export const FetchAgentHistoryResponseMessageSchema = z.object({
@@ -4813,10 +5120,20 @@ export const WorkspaceProjectDescriptorPayloadSchema = z.object({
4813
5120
  // COMPAT(projectKnowledgeStoreLocation): added in v0.8.18, drop the optional
4814
5121
  // gate when floor >= v0.8.18.
4815
5122
  projectKnowledgeLocation: ProjectKnowledgeStoreLocationValueSchema.nullable().optional(),
5123
+ // COMPAT(artifactStoreLocation): added in v0.9.0, remove after 2027-02-28.
5124
+ projectArtifactLocation: ProjectArtifactStoreLocationValueSchema.nullable().optional(),
5125
+ // COMPAT(categoryStorageResolver): added in v0.9.0, remove after 2027-02-28.
5126
+ projectWorkflowLocation: z.enum(["repository", "host"]).nullable().optional(),
4816
5127
  // COMPAT(projectCustomIcon): added in v0.2.0, remove after 2027-01-20.
4817
5128
  projectCustomIconRevision: z.string().nullable().optional(),
5129
+ // Fingerprints the effective icon, including automatic discovery and the
5130
+ // absence of an icon. Clients may persist icon results against this value.
5131
+ // COMPAT(projectIconCache): added in v0.2.7, remove optional after 2027-02-12.
5132
+ projectIconRevision: z.string().optional(),
4818
5133
  projectRootPath: z.string(),
4819
5134
  projectKind: z.enum(["git", "non_git", "directory"]),
5135
+ // COMPAT(directorySync): sequence of this latest directory projection.
5136
+ syncSeq: z.number().int().positive().optional(),
4820
5137
  });
4821
5138
  export const FetchWorkspacesResponseMessageSchema = z.object({
4822
5139
  type: z.literal("fetch_workspaces_response"),
@@ -4833,6 +5150,7 @@ export const FetchWorkspacesResponseMessageSchema = z.object({
4833
5150
  prevCursor: z.string().nullable(),
4834
5151
  hasMore: z.boolean(),
4835
5152
  }),
5153
+ sync: DirectorySyncMetadataSchema.optional(),
4836
5154
  }),
4837
5155
  });
4838
5156
  export const WorkspaceUpdateMessageSchema = z.object({
@@ -4841,6 +5159,8 @@ export const WorkspaceUpdateMessageSchema = z.object({
4841
5159
  z.object({
4842
5160
  kind: z.literal("upsert"),
4843
5161
  workspace: WorkspaceDescriptorPayloadSchema,
5162
+ generation: z.string().optional(),
5163
+ seq: z.number().int().positive().optional(),
4844
5164
  }),
4845
5165
  z.object({
4846
5166
  kind: z.literal("remove"),
@@ -4855,6 +5175,8 @@ export const WorkspaceUpdateMessageSchema = z.object({
4855
5175
  // Project removal is represented on the existing workspace update channel
4856
5176
  // so old clients can still parse the message and ignore the extra field.
4857
5177
  removedProjectId: z.string().optional(),
5178
+ generation: z.string().optional(),
5179
+ seq: z.number().int().positive().optional(),
4858
5180
  }),
4859
5181
  ]),
4860
5182
  });
@@ -4874,11 +5196,83 @@ export const ProjectUpdatedNotificationSchema = z.object({
4874
5196
  hasActiveWorkspaces: z.boolean(),
4875
5197
  }),
4876
5198
  });
5199
+ const WorkspaceLabelSyncMetadataSchema = z.object({
5200
+ mode: z.enum(["snapshot", "changes"]),
5201
+ generation: z.string(),
5202
+ headSeq: z.number().int().nonnegative(),
5203
+ removals: z.array(z.object({ name: z.string(), seq: z.number().int().positive() })),
5204
+ });
5205
+ export const WorkspaceLabelListResponseSchema = z.object({
5206
+ type: z.literal("workspace.label.list.response"),
5207
+ payload: z.object({
5208
+ requestId: z.string(),
5209
+ labels: z.array(WorkspaceLabelDefinitionSchema),
5210
+ sync: WorkspaceLabelSyncMetadataSchema,
5211
+ }),
5212
+ });
5213
+ export const WorkspaceLabelUpdateSchema = z.object({
5214
+ type: z.literal("workspace.label.update"),
5215
+ payload: z.discriminatedUnion("kind", [
5216
+ z.object({
5217
+ kind: z.literal("upsert"),
5218
+ label: WorkspaceLabelDefinitionSchema,
5219
+ previousName: z.string().optional(),
5220
+ generation: z.string(),
5221
+ seq: z.number().int().positive(),
5222
+ }),
5223
+ z.object({
5224
+ kind: z.literal("remove"),
5225
+ name: z.string(),
5226
+ generation: z.string(),
5227
+ seq: z.number().int().positive(),
5228
+ }),
5229
+ ]),
5230
+ });
5231
+ export const WorkspaceLabelAssignmentSetResponseSchema = z.object({
5232
+ type: z.literal("workspace.label.assignment.set.response"),
5233
+ payload: z.object({
5234
+ requestId: z.string(),
5235
+ label: WorkspaceLabelDefinitionSchema,
5236
+ workspaceLabels: z.array(z.string()),
5237
+ }),
5238
+ });
5239
+ export const WorkspaceLabelUpdateResponseSchema = z.object({
5240
+ type: z.literal("workspace.label.update.response"),
5241
+ payload: z.object({
5242
+ requestId: z.string(),
5243
+ label: WorkspaceLabelDefinitionSchema,
5244
+ affectedWorkspaceCount: z.number().int().nonnegative(),
5245
+ }),
5246
+ });
5247
+ export const WorkspaceLabelDeleteResponseSchema = z.object({
5248
+ type: z.literal("workspace.label.delete.response"),
5249
+ payload: z.object({
5250
+ requestId: z.string(),
5251
+ affectedWorkspaceCount: z.number().int().nonnegative(),
5252
+ }),
5253
+ });
5254
+ export const WorkspaceLabelDeleteInspectResponseSchema = z.object({
5255
+ type: z.literal("workspace.label.delete.inspect.response"),
5256
+ payload: z.object({
5257
+ requestId: z.string(),
5258
+ affectedWorkspaceCount: z.number().int().nonnegative(),
5259
+ }),
5260
+ });
4877
5261
  export const ProjectUpdateMessageSchema = z.object({
4878
5262
  type: z.literal("project.update"),
4879
5263
  payload: z.discriminatedUnion("kind", [
4880
- z.object({ kind: z.literal("upsert"), project: WorkspaceProjectDescriptorPayloadSchema }),
4881
- z.object({ kind: z.literal("remove"), projectId: z.string() }),
5264
+ z.object({
5265
+ kind: z.literal("upsert"),
5266
+ project: WorkspaceProjectDescriptorPayloadSchema,
5267
+ generation: z.string().optional(),
5268
+ seq: z.number().int().positive().optional(),
5269
+ }),
5270
+ z.object({
5271
+ kind: z.literal("remove"),
5272
+ projectId: z.string(),
5273
+ generation: z.string().optional(),
5274
+ seq: z.number().int().positive().optional(),
5275
+ }),
4882
5276
  ]),
4883
5277
  });
4884
5278
  export const ProjectListResponseMessageSchema = z.object({
@@ -4886,6 +5280,7 @@ export const ProjectListResponseMessageSchema = z.object({
4886
5280
  payload: z.object({
4887
5281
  requestId: z.string(),
4888
5282
  projects: z.array(WorkspaceProjectDescriptorPayloadSchema),
5283
+ sync: DirectorySyncMetadataSchema.optional(),
4889
5284
  }),
4890
5285
  });
4891
5286
  export const ProjectResolveWorkspaceForPathResponseSchema = z.object({
@@ -5165,12 +5560,21 @@ const AgentTimelineSeqRangeSchema = z.object({
5165
5560
  export const AgentTimelineEntryPayloadSchema = z.object({
5166
5561
  provider: AgentProviderSchema,
5167
5562
  item: AgentTimelineItemPayloadSchema,
5563
+ turnId: z.string().optional(),
5168
5564
  timestamp: z.string(),
5169
5565
  seqStart: z.number().int().nonnegative(),
5170
5566
  seqEnd: z.number().int().nonnegative(),
5171
5567
  sourceSeqRanges: z.array(AgentTimelineSeqRangeSchema),
5172
5568
  collapsed: z.array(z.enum(["assistant_merge", "reasoning_merge", "tool_lifecycle"])),
5173
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
+ });
5174
5578
  export const FetchAgentTimelineResponseMessageSchema = z.object({
5175
5579
  type: z.literal("fetch_agent_timeline_response"),
5176
5580
  payload: z.object({
@@ -5193,6 +5597,7 @@ export const FetchAgentTimelineResponseMessageSchema = z.object({
5193
5597
  hasOlder: z.boolean(),
5194
5598
  hasNewer: z.boolean(),
5195
5599
  mergeWindow: z.boolean().optional(),
5600
+ promptIndex: AgentTimelinePromptIndexSchema.optional(),
5196
5601
  entries: z.array(AgentTimelineEntryPayloadSchema),
5197
5602
  error: z.string().nullable(),
5198
5603
  }),
@@ -5202,12 +5607,7 @@ export const AgentTimelineListPromptsResponseMessageSchema = z.object({
5202
5607
  payload: z.object({
5203
5608
  requestId: z.string(),
5204
5609
  agentId: z.string(),
5205
- epoch: z.string(),
5206
- prompts: z.array(z.object({
5207
- seq: z.number().int().nonnegative(),
5208
- timestamp: z.string(),
5209
- preview: z.string(),
5210
- })),
5610
+ ...AgentTimelinePromptIndexSchema.shape,
5211
5611
  error: z.string().nullable(),
5212
5612
  }),
5213
5613
  });
@@ -5480,6 +5880,17 @@ export const DaemonGetPairingOfferResponseSchema = z.object({
5480
5880
  })
5481
5881
  .passthrough(),
5482
5882
  });
5883
+ export const DaemonConfigReloadResponseSchema = z.object({
5884
+ type: z.literal("daemon.config.reload.response"),
5885
+ payload: z
5886
+ .object({
5887
+ requestId: z.string(),
5888
+ appliedPaths: z.array(z.string()),
5889
+ restartRequiredPaths: z.array(z.string()),
5890
+ overrideControlledPaths: z.array(z.string()),
5891
+ })
5892
+ .passthrough(),
5893
+ });
5483
5894
  export const DiagnosticsResponseSchema = z.object({
5484
5895
  type: z.literal("diagnostics.response"),
5485
5896
  payload: z
@@ -5737,6 +6148,10 @@ export const CheckoutPrStatusSchema = z.object({
5737
6148
  status: z.string(),
5738
6149
  url: z.string().nullable(),
5739
6150
  workflow: z.string().optional(),
6151
+ /**
6152
+ * Formatted by the forge adapter: how long a finished check took, or how long a
6153
+ * running one has been going. Raw timestamps stay off the wire.
6154
+ */
5740
6155
  duration: z.string().optional(),
5741
6156
  checkRunId: z.number().optional(),
5742
6157
  workflowRunId: z.number().optional(),
@@ -6990,6 +7405,91 @@ export function parseHubExecutionOutboundMessage(value) {
6990
7405
  }
6991
7406
  return message;
6992
7407
  }
7408
+ export const PluginCatalogGetResponseSchema = z.object({
7409
+ type: z.literal("plugin.catalog.get.response"),
7410
+ payload: z.object({
7411
+ requestId: z.string(),
7412
+ plugins: z.array(z.object({
7413
+ id: PluginIdSchema,
7414
+ clientBundle: z.string(),
7415
+ })),
7416
+ }),
7417
+ });
7418
+ export const PluginStatusSchema = z.enum(["running", "disabled", "failed"]);
7419
+ export const PluginListItemSchema = z.object({
7420
+ id: PluginIdSchema,
7421
+ path: z.string(),
7422
+ enabled: z.boolean(),
7423
+ status: PluginStatusSchema,
7424
+ error: z.string().optional(),
7425
+ });
7426
+ export const PluginLogEntrySchema = z.object({
7427
+ sequence: z.number().int().nonnegative(),
7428
+ timestamp: z.string().datetime(),
7429
+ stream: z.enum(["stdout", "stderr"]),
7430
+ message: z.string(),
7431
+ });
7432
+ export const PluginListResponseSchema = z.object({
7433
+ type: z.literal("plugin.list.response"),
7434
+ payload: z.object({ requestId: z.string(), plugins: z.array(PluginListItemSchema) }),
7435
+ });
7436
+ export const PluginLogsGetResponseSchema = z.object({
7437
+ type: z.literal("plugin.logs.get.response"),
7438
+ payload: z.object({
7439
+ requestId: z.string(),
7440
+ pluginId: PluginIdSchema,
7441
+ entries: z.array(PluginLogEntrySchema),
7442
+ }),
7443
+ });
7444
+ export const PluginDirectoryInstallResponseSchema = z.object({
7445
+ type: z.literal("plugin.directory.install.response"),
7446
+ payload: z.object({ requestId: z.string(), plugin: PluginListItemSchema }),
7447
+ });
7448
+ export const PluginDirectoryInspectResponseSchema = z.object({
7449
+ type: z.literal("plugin.directory.inspect.response"),
7450
+ payload: z.object({ requestId: z.string(), id: PluginIdSchema }),
7451
+ });
7452
+ function pluginActionResponse(type) {
7453
+ return z.object({
7454
+ type: z.literal(type),
7455
+ payload: z.object({ requestId: z.string(), plugin: PluginListItemSchema }),
7456
+ });
7457
+ }
7458
+ export const PluginReloadResponseSchema = pluginActionResponse("plugin.reload.response");
7459
+ export const PluginEnableResponseSchema = pluginActionResponse("plugin.enable.response");
7460
+ export const PluginDisableResponseSchema = pluginActionResponse("plugin.disable.response");
7461
+ export const PluginRemoveResponseSchema = z.object({
7462
+ type: z.literal("plugin.remove.response"),
7463
+ payload: z.object({ requestId: z.string() }).strict(),
7464
+ });
7465
+ export const PluginRpcInvokeResponseSchema = z.object({
7466
+ type: z.literal("plugin.rpc.invoke.response"),
7467
+ payload: z.object({
7468
+ requestId: z.string(),
7469
+ output: z.unknown(),
7470
+ }),
7471
+ });
7472
+ function agentSkillsStatusResponse(type) {
7473
+ return z.object({
7474
+ type: z.literal(type),
7475
+ payload: AgentSkillsStatusSchema.extend({ requestId: z.string() }),
7476
+ });
7477
+ }
7478
+ export const AgentSkillsGetStatusResponseSchema = agentSkillsStatusResponse("agent.skills.get_status.response");
7479
+ export const AgentSkillsReconcileResponseSchema = agentSkillsStatusResponse("agent.skills.reconcile.response");
7480
+ export const AgentSkillsUninstallResponseSchema = agentSkillsStatusResponse("agent.skills.uninstall.response");
7481
+ export const AgentSkillsSaveSelectionResponseSchema = z.object({
7482
+ type: z.literal("agent.skills.save_selection.response"),
7483
+ payload: AgentSkillsSaveResultSchema.extend({ requestId: z.string() }),
7484
+ });
7485
+ export const AgentSkillsImportLegacySelectionResponseSchema = z.object({
7486
+ type: z.literal("agent.skills.import_legacy_selection.response"),
7487
+ payload: z.object({
7488
+ requestId: z.string(),
7489
+ imported: z.boolean(),
7490
+ selection: AgentSkillSelectionSchema,
7491
+ }),
7492
+ });
6993
7493
  export const SessionOutboundMessageSchema = z.discriminatedUnion("type", [
6994
7494
  HubExecutionAgentCreateResponseSchema,
6995
7495
  HubExecutionAgentValidateResponseSchema,
@@ -6997,6 +7497,21 @@ export const SessionOutboundMessageSchema = z.discriminatedUnion("type", [
6997
7497
  HubExecutionAgentUpdateSchema,
6998
7498
  HubExecutionAgentStreamSchema,
6999
7499
  BrowserAutomationExecuteRequestSchema,
7500
+ PluginCatalogGetResponseSchema,
7501
+ PluginListResponseSchema,
7502
+ PluginLogsGetResponseSchema,
7503
+ PluginDirectoryInstallResponseSchema,
7504
+ PluginDirectoryInspectResponseSchema,
7505
+ PluginReloadResponseSchema,
7506
+ PluginEnableResponseSchema,
7507
+ PluginDisableResponseSchema,
7508
+ PluginRemoveResponseSchema,
7509
+ PluginRpcInvokeResponseSchema,
7510
+ AgentSkillsGetStatusResponseSchema,
7511
+ AgentSkillsReconcileResponseSchema,
7512
+ AgentSkillsUninstallResponseSchema,
7513
+ AgentSkillsSaveSelectionResponseSchema,
7514
+ AgentSkillsImportLegacySelectionResponseSchema,
7000
7515
  ActivityLogMessageSchema,
7001
7516
  AssistantChunkMessageSchema,
7002
7517
  AudioOutputMessageSchema,
@@ -7015,6 +7530,12 @@ export const SessionOutboundMessageSchema = z.discriminatedUnion("type", [
7015
7530
  ArtifactUpdateMessageSchema,
7016
7531
  AgentUpdateMessageSchema,
7017
7532
  WorkspaceUpdateMessageSchema,
7533
+ WorkspaceLabelListResponseSchema,
7534
+ WorkspaceLabelUpdateSchema,
7535
+ WorkspaceLabelAssignmentSetResponseSchema,
7536
+ WorkspaceLabelUpdateResponseSchema,
7537
+ WorkspaceLabelDeleteResponseSchema,
7538
+ WorkspaceLabelDeleteInspectResponseSchema,
7018
7539
  ProjectUpdateMessageSchema,
7019
7540
  ProjectListResponseMessageSchema,
7020
7541
  ProjectResolveWorkspaceForPathResponseSchema,
@@ -7062,6 +7583,7 @@ export const SessionOutboundMessageSchema = z.discriminatedUnion("type", [
7062
7583
  SetVoiceModeResponseMessageSchema,
7063
7584
  DaemonGetStatusResponseSchema,
7064
7585
  DaemonGetPairingOfferResponseSchema,
7586
+ DaemonConfigReloadResponseSchema,
7065
7587
  HubManagementDaemonConnectResponseSchema,
7066
7588
  HubManagementDaemonGetStatusResponseSchema,
7067
7589
  HubManagementDaemonDisconnectResponseSchema,
@@ -7208,11 +7730,21 @@ export const SessionOutboundMessageSchema = z.discriminatedUnion("type", [
7208
7730
  RunsGraphsSaveResponseSchema,
7209
7731
  RunsGraphsDeleteResponseSchema,
7210
7732
  RunsGraphsChangedNotificationSchema,
7733
+ WorkflowsGraphsListResponseSchema,
7734
+ WorkflowsGraphSaveResponseSchema,
7735
+ WorkflowsGraphExportResponseSchema,
7736
+ WorkflowsGraphImportResponseSchema,
7211
7737
  RunsTemplatesListResponseSchema,
7212
7738
  RunsTemplatesSaveResponseSchema,
7213
7739
  RunsTemplatesDeleteResponseSchema,
7214
7740
  RunsTemplatesChangedNotificationSchema,
7741
+ WorkflowsTemplatesListResponseSchema,
7742
+ WorkflowsTemplateSaveResponseSchema,
7743
+ WorkflowsStorageTransferResponseSchema,
7744
+ WorkflowsStartResponseSchema,
7215
7745
  RunsStartResponseSchema,
7746
+ WorkflowsStartConfirmationRespondResponseSchema,
7747
+ ProjectWorkflowStoreSetResponseSchema,
7216
7748
  CheckoutMergeResponseSchema,
7217
7749
  CheckoutMergeFromBaseResponseSchema,
7218
7750
  CheckoutPullResponseSchema,
@@ -7313,6 +7845,7 @@ export const SessionOutboundMessageSchema = z.discriminatedUnion("type", [
7313
7845
  ContextPromptPreviewGetResponseMessageSchema,
7314
7846
  ProjectKnowledgeListResponseMessageSchema,
7315
7847
  ProjectKnowledgeGetResponseMessageSchema,
7848
+ ProjectKnowledgeRootGetResponseMessageSchema,
7316
7849
  ProjectKnowledgeCreateResponseMessageSchema,
7317
7850
  ProjectKnowledgeApplyResponseMessageSchema,
7318
7851
  ProjectKnowledgeStatusResponseMessageSchema,
@@ -7381,47 +7914,30 @@ export const SessionOutboundMessageSchema = z.discriminatedUnion("type", [
7381
7914
  ArtifactDeleteResponseSchema,
7382
7915
  ArtifactStarResponseSchema,
7383
7916
  ArtifactGetContentResponseSchema,
7917
+ ArtifactRepairResponseSchema,
7918
+ ArtifactDataGetResponseSchema,
7919
+ ArtifactDataUpdateResponseSchema,
7920
+ ArtifactStoreMoveResponseSchema,
7921
+ ProjectArtifactStoreSetResponseSchema,
7384
7922
  ArtifactCreatedNotificationSchema,
7385
7923
  ArtifactUpdatedNotificationSchema,
7386
7924
  ArtifactDeletedNotificationSchema,
7925
+ ArchitecturalViewsDeliverResponseSchema,
7926
+ ArchitecturalViewsListResponseSchema,
7927
+ ArchitecturalViewsGetContentResponseSchema,
7928
+ ArchitecturalViewsDraftCreateResponseSchema,
7929
+ ArchitecturalViewsDraftUpdateResponseSchema,
7930
+ ArchitecturalViewsDraftPublishResponseSchema,
7931
+ ArchitecturalViewsDraftDiscardResponseSchema,
7932
+ ArchitecturalViewsDraftGetContentResponseSchema,
7933
+ ArchitecturalViewsDraftListResponseSchema,
7934
+ ArchitecturalViewsOpenNotificationSchema,
7387
7935
  ]);
7388
7936
  export * from "./kanban.js";
7389
7937
  // ============================================================================
7390
7938
  // WebSocket Level Messages (wraps session messages)
7391
7939
  // ============================================================================
7392
7940
  // WebSocket-only messages (not session messages)
7393
- export const WSPingMessageSchema = z.object({
7394
- type: z.literal("ping"),
7395
- });
7396
- export const WSPongMessageSchema = z.object({
7397
- type: z.literal("pong"),
7398
- });
7399
- export const WSHelloMessageSchema = z.object({
7400
- type: z.literal("hello"),
7401
- clientId: z.string().min(1),
7402
- clientType: z.enum(["mobile", "browser", "cli", "mcp"]),
7403
- protocolVersion: z.number().int(),
7404
- appVersion: z.string().optional(),
7405
- capabilities: z
7406
- .object({
7407
- voice: z.boolean().optional(),
7408
- pushNotifications: z.boolean().optional(),
7409
- [CLIENT_CAPS.reasoningMergeEnum]: z.boolean().optional(),
7410
- [CLIENT_CAPS.selectiveAgentTimeline]: z.boolean().optional(),
7411
- [CLIENT_CAPS.customModeIcons]: z.boolean().optional(),
7412
- [CLIENT_CAPS.terminalReflowableSnapshot]: z.boolean().optional(),
7413
- [CLIENT_CAPS.providerSubagents]: z.boolean().optional(),
7414
- [CLIENT_CAPS.projectUpdates]: z.boolean().optional(),
7415
- [CLIENT_CAPS.compactProviderSnapshots]: z.boolean().optional(),
7416
- [CLIENT_CAPS.browserHost]: BrowserAutomationHostCapabilitySchema.optional(),
7417
- })
7418
- .passthrough()
7419
- .optional(),
7420
- });
7421
- export const WSRecordingStateMessageSchema = z.object({
7422
- type: z.literal("recording_state"),
7423
- isRecording: z.boolean(),
7424
- });
7425
7941
  // Wrapped session message
7426
7942
  export const WSSessionInboundSchema = z.object({
7427
7943
  type: z.literal("session"),
@@ -7478,7 +7994,7 @@ export * from "./meetings.js";
7478
7994
  export * from "./personality-schemas.js";
7479
7995
  // The Brain, Preview and Meetings schema modules own these, but messages.ts stays
7480
7996
  // the public import surface for everything it ever exported.
7481
- export * from "./orchestration.js";
7997
+ export * from "./workflow.js";
7482
7998
  export * from "./integration-authorization.js";
7483
7999
  export * from "./communications.js";
7484
8000
  export * from "./context.js";
@@ -7494,5 +8010,5 @@ export * from "./storage.js";
7494
8010
  export * from "./suggested-tasks.js";
7495
8011
  export * from "./worktree-ops.js";
7496
8012
  export * from "./terminal-compatibility.js";
7497
- export { MutableAgentBehaviorsConfigSchema, MutableLspConfigSchema, MutableDotnetSolutionConfigSchema, MutableGitHostingBitbucketCloudConfigSchema, MutableGitHostingAtlassianConfigSchema, MutableGitHostingProvidersConfigSchema, MutableGitHostingConfigSchema, MutableKanbanConfigSchema, ProjectKnowledgeStoreLocationSchema, MutableProjectKnowledgeConfigSchema, MutableAgentPersonalitiesConfigSchema, MutableAgentPersonalitiesConfigPatchSchema, MutableAgentTeamsConfigSchema, MutableAgentTeamsConfigPatchSchema, MutableBrainTlsConfigSchema, MutableBrainRemoteConfigSchema, MutableBrainConfigSchema, MutableBrainTlsPatchSchema, MutableBrainRemotePatchSchema, MutableBrainListenPatchSchema, MutableBrainConfigPatchSchema, MutableGitFetchConfigSchema, DEFAULT_MUTABLE_BRAIN_CONFIG, DEFAULT_MUTABLE_GIT_FETCH_CONFIG, GIT_FETCH_INTERVAL_SECONDS, } from "./daemon-config.js";
8013
+ export { MutableAgentBehaviorsConfigSchema, MutableAgentBehaviorsConfigPatchSchema, MutableLspConfigSchema, MutableLspConfigPatchSchema, MutableDotnetSolutionConfigSchema, MutableDotnetSolutionConfigPatchSchema, MutableGitHostingBitbucketCloudConfigSchema, MutableGitHostingAtlassianConfigSchema, MutableGitHostingProvidersConfigSchema, MutableGitHostingConfigSchema, MutableKanbanConfigSchema, ProjectKnowledgeStoreLocationSchema, MutableProjectKnowledgeConfigSchema, MutableProjectKnowledgeConfigPatchSchema, ProjectArtifactStoreLocationSchema, MutableProjectArtifactsConfigSchema, MutableProjectArtifactsConfigPatchSchema, ProjectWorkflowStoreLocationSchema, MutableProjectWorkflowsConfigSchema, MutableProjectWorkflowsConfigPatchSchema, MutableAgentPersonalitiesConfigSchema, MutableAgentPersonalitiesConfigPatchSchema, MutableAgentTeamsConfigSchema, MutableAgentTeamsConfigPatchSchema, MutableBrainTlsConfigSchema, MutableBrainRemoteConfigSchema, MutableBrainConfigSchema, MutableBrainTlsPatchSchema, MutableBrainRemotePatchSchema, MutableBrainListenPatchSchema, MutableBrainConfigPatchSchema, MutableGitFetchConfigSchema, DEFAULT_MUTABLE_BRAIN_CONFIG, DEFAULT_MUTABLE_GIT_FETCH_CONFIG, GIT_FETCH_INTERVAL_SECONDS, } from "./daemon-config.js";
7498
8014
  //# sourceMappingURL=messages.js.map