@otto-code/protocol 0.8.19 → 0.9.0

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,5 +1,5 @@
1
1
  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";
2
+ 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
3
  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
4
  import { TerminalCompatibilityDiagnosticRequestSchema, TerminalCompatibilityDiagnosticResponseSchema, } from "./terminal-compatibility.js";
5
5
  import { HostingPrAttachmentSchema, HostingIssueAttachmentSchema, HostingSearchRequestSchema, HostingAuthStatusRequestSchema, HostingListRepositoriesRequestSchema, HostingListOwnersRequestSchema, HostingListRepositoriesResponseSchema, HostingListOwnersResponseSchema, HostingAuthStatusResponseSchema, HostingPullRequestThreadSetResolvedRequestSchema, HostingPullRequestThreadSetResolvedResponseSchema, HostingPullRequestCommentSetReactionRequestSchema, HostingPullRequestCommentSetReactionResponseSchema, GitHostingCapabilitiesSchema, GitHostingProviderIdWireSchema, } from "./git-hosting.js";
@@ -18,19 +18,21 @@ import { CheckoutGitGetOperationLogRequestSchema, CheckoutGitGetOperationLogResp
18
18
  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
19
  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
20
  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";
21
+ 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
22
  import { MeetingsTranscriptsListRequestSchema, MeetingsTranscriptsListResponseSchema, MeetingsTranscriptsCreateRequestSchema, MeetingsTranscriptsCreateResponseSchema, MeetingsTranscriptsUpdateRequestSchema, MeetingsTranscriptsUpdateResponseSchema, MeetingsTranscriptsDeleteRequestSchema, MeetingsTranscriptsDeleteResponseSchema, } from "./meetings.js";
23
23
  import { PreviewListConfigRequestSchema, PreviewStartRequestSchema, PreviewBindTabRequestSchema, PreviewStopRequestSchema, PreviewListConfigResponseSchema, PreviewStartResponseSchema, PreviewBindTabResponseSchema, PreviewStopResponseSchema, } from "./preview.js";
24
24
  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
25
  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";
26
+ import { ArtifactMetadataSchema, ProjectArtifactStoreLocationValueSchema, } from "./artifacts/types.js";
27
+ 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";
28
29
  import { CLIENT_CAPS } from "./client-capabilities.js";
29
30
  import { AGENT_LIFECYCLE_STATUSES } from "./agent-lifecycle.js";
30
31
  import { MAX_EXPLICIT_AGENT_TITLE_CHARS } from "./agent-title-limits.js";
31
32
  import { AgentProviderSchema } from "./provider-manifest.js";
32
33
  import { ConnectorConfigSchema, McpServerConfigSchema, STALL_GUARD_DEFAULT_THRESHOLD, } from "./provider-config.js";
33
34
  import { TOOL_CALL_ICON_NAMES } from "./agent-types.js";
35
+ import { WORKSPACE_LABEL_COLORS } from "./workspace-labels.js";
34
36
  import { ChatCreateRequestSchema, ChatListRequestSchema, ChatInspectRequestSchema, ChatDeleteRequestSchema, ChatPostRequestSchema, ChatReadRequestSchema, ChatWaitRequestSchema, ChatCreateResponseSchema, ChatListResponseSchema, ChatInspectResponseSchema, ChatDeleteResponseSchema, ChatPostResponseSchema, ChatReadResponseSchema, ChatWaitResponseSchema, } from "./chat/rpc-schemas.js";
35
37
  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
38
  import { LoopRunRequestSchema, LoopListRequestSchema, LoopInspectRequestSchema, LoopLogsRequestSchema, LoopStopRequestSchema, LoopRunResponseSchema, LoopListResponseSchema, LoopInspectResponseSchema, LoopLogsResponseSchema, LoopStopResponseSchema, } from "./loop/rpc-schemas.js";
@@ -87,6 +89,15 @@ const MutableMetadataGenerationConfigSchema = z
87
89
  preferWriterProfiles: z.boolean().optional(),
88
90
  })
89
91
  .passthrough();
92
+ const MutableMetadataGenerationConfigPatchSchema = z
93
+ .object({
94
+ providers: z.array(MutableStructuredGenerationProviderSchema),
95
+ enabled: z.boolean(),
96
+ preferWriterPersonalities: z.boolean(),
97
+ preferWriterProfiles: z.boolean(),
98
+ })
99
+ .partial()
100
+ .passthrough();
90
101
  export const TerminalProfileSchema = z
91
102
  .object({
92
103
  id: z.string(),
@@ -142,6 +153,10 @@ const MutableBrowserToolsConfigSchema = z
142
153
  enabled: z.boolean().default(false),
143
154
  })
144
155
  .passthrough();
156
+ const MutableBrowserToolsConfigPatchSchema = z
157
+ .object({ enabled: z.boolean() })
158
+ .partial()
159
+ .passthrough();
145
160
  export const ModelTierSchema = z.enum(["deep", "standard", "fast"]);
146
161
  // A user's explicit tier tag for one model of one provider. The daemon stamps
147
162
  // `model.tier` at ingest, preferring a matching override here over inference
@@ -187,12 +202,26 @@ export const SavedProviderEndpointSchema = z
187
202
  savedAt: z.number().optional(),
188
203
  })
189
204
  .passthrough();
205
+ export const PluginIdSchema = z.string().regex(/^[a-z][a-z0-9-]*$/);
206
+ export const DirectoryPluginSourceSchema = z
207
+ .object({
208
+ source: z.literal("directory"),
209
+ path: z.string().min(1),
210
+ enabled: z.boolean().optional(),
211
+ })
212
+ .strict();
213
+ export const PluginSourceSchema = z.discriminatedUnion("source", [DirectoryPluginSourceSchema]);
214
+ export const AgentSkillSelectionSchema = z.discriminatedUnion("mode", [
215
+ z.object({ mode: z.literal("all") }).strict(),
216
+ z.object({ mode: z.literal("custom"), skills: z.array(z.string()) }).strict(),
217
+ ]);
190
218
  export const MutableDaemonConfigSchema = z
191
219
  .object({
192
220
  // COMPAT(relayConfig): added in v0.2.6, remove after 2027-01-31 when old daemons are unsupported.
193
221
  relay: MutableRelayConfigSchema.optional(),
194
222
  mcp: z
195
223
  .object({
224
+ enabled: z.boolean().optional(),
196
225
  injectIntoAgents: z.boolean(),
197
226
  // Daemon-wide Otto tool-group allowlist for the MCP (Claude) path.
198
227
  // undefined = all groups enabled (mirrors openai-compat's per-provider
@@ -210,6 +239,22 @@ export const MutableDaemonConfigSchema = z
210
239
  .passthrough(),
211
240
  // Defaults off, matching the daemon's own resolution - browser tools are an
212
241
  // explicit opt-in, so an omitted section must never read as on.
242
+ hostnames: z.union([z.literal(true), z.array(z.string())]).optional(),
243
+ cors: z
244
+ .object({
245
+ allowedOrigins: z.array(z.string()),
246
+ })
247
+ .passthrough()
248
+ .optional(),
249
+ trustedProxies: z.union([z.literal(true), z.array(z.string())]).optional(),
250
+ git: z
251
+ .object({
252
+ maxProcessesPerSecond: z.number().int().positive(),
253
+ maxProcessConcurrency: z.number().int().positive(),
254
+ })
255
+ .optional(),
256
+ app: z.object({ baseUrl: z.string() }).optional(),
257
+ catalogRefreshTimeoutMs: z.number().int().positive().optional(),
213
258
  browserTools: MutableBrowserToolsConfigSchema.default({ enabled: false }),
214
259
  // Daemon-wide agent behavior toggles (Claude-tier capabilities). Defaults to
215
260
  // all-on so a new client parsing an old daemon's config sees today's behavior.
@@ -315,16 +360,25 @@ export const MutableDaemonConfigSchema = z
315
360
  // defaulted, matching `kanban`: absent reads as the historical repository
316
361
  // location, which is exactly what an old daemon does.
317
362
  projectKnowledge: MutableProjectKnowledgeConfigSchema.optional(),
363
+ // Artifacts has its own location default. It shares the storage platform
364
+ // with Knowledge, but never inherits Knowledge's selected location.
365
+ // COMPAT(artifactStoreLocation): added in v0.9.0, remove after 2027-02-28.
366
+ projectArtifacts: MutableProjectArtifactsConfigSchema.optional(),
367
+ // COMPAT(categoryStorageResolver): added in v0.9.0, remove after 2027-02-28.
368
+ projectWorkflows: MutableProjectWorkflowsConfigSchema.optional(),
318
369
  agentProfiles: z.array(AgentProfileSchema).optional(),
370
+ skills: z.object({ selection: AgentSkillSelectionSchema.optional() }).strict().optional(),
371
+ pluginsEnabled: z.boolean().optional(),
372
+ plugins: z.record(PluginIdSchema, PluginSourceSchema).optional(),
319
373
  })
320
374
  .passthrough();
321
375
  export const MutableDaemonConfigPatchSchema = z
322
376
  .object({
323
377
  relay: MutableRelayConfigSchema.partial().optional(),
324
- mcp: MutableDaemonConfigSchema.shape.mcp.partial().optional(),
325
- browserTools: MutableBrowserToolsConfigSchema.partial().optional(),
378
+ mcp: z.object({ injectIntoAgents: z.boolean().optional() }).passthrough().optional(),
379
+ browserTools: MutableBrowserToolsConfigPatchSchema.optional(),
326
380
  // Gated by server_info features.agentBehaviorToggles; patches deep-merge.
327
- agentBehaviors: MutableAgentBehaviorsConfigSchema.partial().optional(),
381
+ agentBehaviors: MutableAgentBehaviorsConfigPatchSchema.optional(),
328
382
  // A null entry removes the provider's config entirely (custom provider
329
383
  // uninstall). Gated by server_info features.providerRemove - old daemons
330
384
  // reject null values.
@@ -332,7 +386,7 @@ export const MutableDaemonConfigPatchSchema = z
332
386
  .record(z.string(), MutableDaemonProviderConfigSchema.partial().passthrough().nullable())
333
387
  .optional(),
334
388
  removeProviders: z.array(z.string().min(1)).optional(),
335
- metadataGeneration: MutableMetadataGenerationConfigSchema.partial().optional(),
389
+ metadataGeneration: MutableMetadataGenerationConfigPatchSchema.optional(),
336
390
  autoArchiveAfterMerge: z.boolean().optional(),
337
391
  // Gated by server_info.features.gitFetchControl; patches deep-merge.
338
392
  gitFetch: MutableGitFetchConfigSchema.partial().optional(),
@@ -356,7 +410,11 @@ export const MutableDaemonConfigPatchSchema = z
356
410
  gitHosting: MutableGitHostingConfigSchema.optional(),
357
411
  // Gated by server_info features.projectKnowledgeStoreLocation; patches
358
412
  // deep-merge.
359
- projectKnowledge: MutableProjectKnowledgeConfigSchema.partial().optional(),
413
+ projectKnowledge: MutableProjectKnowledgeConfigPatchSchema.optional(),
414
+ // COMPAT(artifactStoreLocation): added in v0.9.0, remove after 2027-02-28.
415
+ projectArtifacts: MutableProjectArtifactsConfigPatchSchema.optional(),
416
+ // COMPAT(categoryStorageResolver): added in v0.9.0, remove after 2027-02-28.
417
+ projectWorkflows: MutableProjectWorkflowsConfigPatchSchema.optional(),
360
418
  // Gated by server_info features.agentPersonalities. A patch replaces the
361
419
  // full roster (read-modify-write the array), matching how terminalProfiles
362
420
  // and metadataGeneration.providers patch.
@@ -374,11 +432,11 @@ export const MutableDaemonConfigPatchSchema = z
374
432
  // Gated by server_info features.savedProviderEndpoints. Replaces the full
375
433
  // array (read-modify-write), so forgetting an endpoint drops it from disk.
376
434
  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(),
435
+ // Gated by server_info features.lsp; dedicated no-default patch schema so
436
+ // a `languages` update cannot materialize and reset the LSP defaults.
437
+ lsp: MutableLspConfigPatchSchema.optional(),
380
438
  // Gated by server_info features.solutionView; patches deep-merge.
381
- dotnetSolutionManagement: MutableDotnetSolutionConfigSchema.partial().optional(),
439
+ dotnetSolutionManagement: MutableDotnetSolutionConfigPatchSchema.optional(),
382
440
  // Gated by server_info features.brainControl; patches deep-merge. Uses the
383
441
  // dedicated no-default patch schema (see MutableBrainConfigPatchSchema): a
384
442
  // plain `.partial()` here keeps every field's default and resets the whole
@@ -389,6 +447,8 @@ export const MutableDaemonConfigPatchSchema = z
389
447
  // enabling/disabling a connector or a tool is a whole-array rewrite.
390
448
  connectors: z.array(ConnectorConfigSchema).optional(),
391
449
  agentProfiles: z.array(AgentProfileSchema).optional(),
450
+ pluginsEnabled: z.boolean().optional(),
451
+ plugins: z.record(PluginIdSchema, PluginSourceSchema).optional(),
392
452
  })
393
453
  .partial()
394
454
  .passthrough();
@@ -873,6 +933,7 @@ export const AgentStreamEventPayloadSchema = z.discriminatedUnion("type", [
873
933
  type: z.literal("timeline"),
874
934
  provider: AgentProviderSchema,
875
935
  item: AgentTimelineItemPayloadSchema,
936
+ turnId: z.string().optional(),
876
937
  }),
877
938
  z.object({
878
939
  type: z.literal("permission_requested"),
@@ -1207,6 +1268,50 @@ export const WorkspacePinSetRequestSchema = z.object({
1207
1268
  pinned: z.boolean(),
1208
1269
  requestId: z.string(),
1209
1270
  });
1271
+ export const WorkspaceLabelColorSchema = z.enum(WORKSPACE_LABEL_COLORS);
1272
+ export const WorkspaceLabelDefinitionSchema = z.object({
1273
+ name: z.string(),
1274
+ color: WorkspaceLabelColorSchema,
1275
+ });
1276
+ const WorkspaceLabelSyncCursorSchema = z.object({
1277
+ generation: z.string(),
1278
+ afterSeq: z.number().int().nonnegative(),
1279
+ });
1280
+ export const WorkspaceLabelListRequestSchema = z.object({
1281
+ type: z.literal("workspace.label.list.request"),
1282
+ requestId: z.string(),
1283
+ subscribe: z.object({ subscriptionId: z.string() }),
1284
+ sync: WorkspaceLabelSyncCursorSchema.optional(),
1285
+ });
1286
+ export const WorkspaceLabelAssignmentSetRequestSchema = z.object({
1287
+ type: z.literal("workspace.label.assignment.set.request"),
1288
+ requestId: z.string(),
1289
+ workspaceId: z.string(),
1290
+ label: WorkspaceLabelDefinitionSchema,
1291
+ assigned: z.boolean(),
1292
+ });
1293
+ /**
1294
+ * Editing a label is one operation. A name and a colour are two fields of one thing, and two
1295
+ * RPCs can land half-applied — leaving the catalog in a state the user never asked for and the
1296
+ * UI with nothing true to say. Both fields are optional; omitting one leaves it alone.
1297
+ */
1298
+ export const WorkspaceLabelUpdateRequestSchema = z.object({
1299
+ type: z.literal("workspace.label.update.request"),
1300
+ requestId: z.string(),
1301
+ name: z.string(),
1302
+ newName: z.string().optional(),
1303
+ color: WorkspaceLabelColorSchema.optional(),
1304
+ });
1305
+ export const WorkspaceLabelDeleteRequestSchema = z.object({
1306
+ type: z.literal("workspace.label.delete.request"),
1307
+ requestId: z.string(),
1308
+ name: z.string(),
1309
+ });
1310
+ export const WorkspaceLabelDeleteInspectRequestSchema = z.object({
1311
+ type: z.literal("workspace.label.delete.inspect.request"),
1312
+ requestId: z.string(),
1313
+ name: z.string(),
1314
+ });
1210
1315
  export const WorkspaceRecoveryInspectRequestSchema = z.object({
1211
1316
  type: z.literal("workspace.recovery.inspect.request"),
1212
1317
  workspaceId: z.string(),
@@ -1263,6 +1368,15 @@ export const ForgeIssueAttachmentSchema = z.object({
1263
1368
  body: z.string().nullable().optional(),
1264
1369
  projectPath: z.string().optional(),
1265
1370
  });
1371
+ export const ExternalResourceAttachmentMetadataSchema = z.object({
1372
+ provider: z.string(),
1373
+ providerLabel: z.string(),
1374
+ resourceType: z.string(),
1375
+ id: z.string(),
1376
+ identifier: z.string(),
1377
+ title: z.string(),
1378
+ url: z.string(),
1379
+ });
1266
1380
  export const TextAttachmentSchema = z
1267
1381
  .object({
1268
1382
  type: z.literal("text"),
@@ -1270,6 +1384,7 @@ export const TextAttachmentSchema = z
1270
1384
  contextKind: z.string().optional(),
1271
1385
  title: z.string().nullable().optional(),
1272
1386
  text: z.string(),
1387
+ externalResource: ExternalResourceAttachmentMetadataSchema.optional(),
1273
1388
  })
1274
1389
  .transform(({ contextKind, ...attachment }) => ({
1275
1390
  ...attachment,
@@ -1343,17 +1458,36 @@ const ImageAttachmentSchema = z.object({
1343
1458
  data: z.string(), // base64 encoded image
1344
1459
  mimeType: z.string(), // e.g., "image/jpeg", "image/png"
1345
1460
  });
1461
+ export const ActiveTurnBehaviorSchema = z.enum(["interrupt", "steer"]);
1346
1462
  export const SendAgentMessageSchema = z.object({
1347
1463
  type: z.literal("send_agent_message"),
1348
1464
  agentId: z.string(),
1349
1465
  text: z.string(),
1350
1466
  messageId: z.string().optional(), // Client-provided ID for deduplication
1467
+ activeTurnBehavior: ActiveTurnBehaviorSchema.optional(),
1351
1468
  images: z.array(ImageAttachmentSchema).optional(),
1352
1469
  attachments: AgentAttachmentsSchema,
1353
1470
  });
1354
1471
  // ============================================================================
1355
1472
  // Agent RPCs (requestId-correlated)
1356
1473
  // ============================================================================
1474
+ const DirectorySyncRequestSchema = z.object({
1475
+ generation: z.string().optional(),
1476
+ afterSeq: z.number().int().nonnegative().optional(),
1477
+ });
1478
+ const DirectorySyncRemovalSchema = z.object({
1479
+ id: z.string(),
1480
+ seq: z.number().int().positive(),
1481
+ });
1482
+ const DirectorySyncMetadataSchema = z.object({
1483
+ generation: z.string(),
1484
+ headSeq: z.number().int().nonnegative(),
1485
+ mode: z.enum(["snapshot", "changes"]),
1486
+ reason: z
1487
+ .enum(["no_cursor", "generation_changed", "cursor_expired", "changes_too_large"])
1488
+ .optional(),
1489
+ removals: z.array(DirectorySyncRemovalSchema),
1490
+ });
1357
1491
  export const FetchAgentsRequestMessageSchema = z.object({
1358
1492
  type: z.literal("fetch_agents_request"),
1359
1493
  requestId: z.string(),
@@ -1376,6 +1510,8 @@ export const FetchAgentsRequestMessageSchema = z.object({
1376
1510
  subscriptionId: z.string().optional(),
1377
1511
  })
1378
1512
  .optional(),
1513
+ // COMPAT(directorySync): added in v0.3.x, remove optional after 2027-02-12.
1514
+ sync: DirectorySyncRequestSchema.optional(),
1379
1515
  });
1380
1516
  const WorkspaceStateBucketSchema = z.enum([
1381
1517
  "needs_input",
@@ -1412,10 +1548,14 @@ export const FetchWorkspacesRequestMessageSchema = z.object({
1412
1548
  subscriptionId: z.string().optional(),
1413
1549
  })
1414
1550
  .optional(),
1551
+ // COMPAT(directorySync): added in v0.3.x, remove optional after 2027-02-12.
1552
+ sync: DirectorySyncRequestSchema.optional(),
1415
1553
  });
1416
1554
  export const ProjectListRequestMessageSchema = z.object({
1417
1555
  type: z.literal("project.list.request"),
1418
1556
  requestId: z.string(),
1557
+ // COMPAT(directorySync): added in v0.3.x, remove optional after 2027-02-12.
1558
+ sync: DirectorySyncRequestSchema.optional(),
1419
1559
  });
1420
1560
  export const ProjectResolveWorkspaceForPathRequestSchema = z.object({
1421
1561
  type: z.literal("project.resolveWorkspaceForPath.request"),
@@ -1464,6 +1604,7 @@ export const SendAgentMessageRequestSchema = z.object({
1464
1604
  agentId: z.string(),
1465
1605
  text: z.string(),
1466
1606
  messageId: z.string().optional(), // Client-provided ID for deduplication
1607
+ activeTurnBehavior: ActiveTurnBehaviorSchema.optional(),
1467
1608
  images: z.array(ImageAttachmentSchema).optional(),
1468
1609
  attachments: AgentAttachmentsSchema,
1469
1610
  // How to reach a BUSY agent. "interrupt" (default, and what every older
@@ -1488,6 +1629,10 @@ export const DaemonGetPairingOfferRequestSchema = z.object({
1488
1629
  type: z.literal("daemon.get_pairing_offer.request"),
1489
1630
  requestId: z.string(),
1490
1631
  });
1632
+ export const DaemonConfigReloadRequestSchema = z.object({
1633
+ type: z.literal("daemon.config.reload.request"),
1634
+ requestId: z.string(),
1635
+ });
1491
1636
  export const HubManagementDaemonConnectRequestSchema = z.object({
1492
1637
  type: z.literal("hub.management.daemon.connect.request"),
1493
1638
  requestId: z.string(),
@@ -1507,6 +1652,81 @@ export const DiagnosticsRequestSchema = z.object({
1507
1652
  type: z.literal("diagnostics.request"),
1508
1653
  requestId: z.string(),
1509
1654
  });
1655
+ export const PluginCatalogGetRequestSchema = z.object({
1656
+ type: z.literal("plugin.catalog.get.request"),
1657
+ requestId: z.string(),
1658
+ });
1659
+ export const PluginListRequestSchema = z.object({
1660
+ type: z.literal("plugin.list.request"),
1661
+ requestId: z.string(),
1662
+ });
1663
+ export const PluginLogsGetRequestSchema = z.object({
1664
+ type: z.literal("plugin.logs.get.request"),
1665
+ requestId: z.string(),
1666
+ pluginId: PluginIdSchema,
1667
+ });
1668
+ export const PluginDirectoryInstallRequestSchema = z.object({
1669
+ type: z.literal("plugin.directory.install.request"),
1670
+ requestId: z.string(),
1671
+ path: z.string().min(1),
1672
+ id: PluginIdSchema.optional(),
1673
+ });
1674
+ export const PluginDirectoryInspectRequestSchema = z.object({
1675
+ type: z.literal("plugin.directory.inspect.request"),
1676
+ requestId: z.string(),
1677
+ path: z.string().min(1),
1678
+ });
1679
+ function pluginIdRequest(type) {
1680
+ return z.object({ type: z.literal(type), requestId: z.string(), pluginId: PluginIdSchema });
1681
+ }
1682
+ export const PluginReloadRequestSchema = pluginIdRequest("plugin.reload.request");
1683
+ export const PluginEnableRequestSchema = pluginIdRequest("plugin.enable.request");
1684
+ export const PluginDisableRequestSchema = pluginIdRequest("plugin.disable.request");
1685
+ export const PluginRemoveRequestSchema = pluginIdRequest("plugin.remove.request");
1686
+ export const PluginRpcInvokeRequestSchema = z.object({
1687
+ type: z.literal("plugin.rpc.invoke.request"),
1688
+ requestId: z.string(),
1689
+ pluginId: PluginIdSchema,
1690
+ method: z.string().min(1),
1691
+ input: z.unknown(),
1692
+ });
1693
+ export const AgentSkillOperationSchema = z.discriminatedUnion("kind", [
1694
+ z.object({ kind: z.literal("add"), name: z.string() }).strict(),
1695
+ z.object({ kind: z.literal("update"), name: z.string() }).strict(),
1696
+ z.object({ kind: z.literal("delete"), name: z.string() }).strict(),
1697
+ ]);
1698
+ export const AgentSkillsStatusSchema = z.object({
1699
+ state: z.enum(["not-installed", "up-to-date", "drift"]),
1700
+ ops: z.array(AgentSkillOperationSchema),
1701
+ available: z.array(z.string()),
1702
+ installed: z.array(z.string()),
1703
+ selection: AgentSkillSelectionSchema,
1704
+ });
1705
+ export const AgentSkillsConfirmationSchema = z.object({ removals: z.array(z.string()) }).strict();
1706
+ export const AgentSkillsSaveResultSchema = AgentSkillsStatusSchema.extend({
1707
+ confirmationRequired: AgentSkillsConfirmationSchema.nullable(),
1708
+ });
1709
+ function agentSkillsRequest(type) {
1710
+ return z.object({ type: z.literal(type), requestId: z.string() }).strict();
1711
+ }
1712
+ export const AgentSkillsGetStatusRequestSchema = agentSkillsRequest("agent.skills.get_status.request");
1713
+ export const AgentSkillsReconcileRequestSchema = agentSkillsRequest("agent.skills.reconcile.request");
1714
+ export const AgentSkillsUninstallRequestSchema = agentSkillsRequest("agent.skills.uninstall.request");
1715
+ export const AgentSkillsSaveSelectionRequestSchema = z
1716
+ .object({
1717
+ type: z.literal("agent.skills.save_selection.request"),
1718
+ requestId: z.string(),
1719
+ selection: AgentSkillSelectionSchema,
1720
+ confirmedRemovals: z.array(z.string()).optional(),
1721
+ })
1722
+ .strict();
1723
+ export const AgentSkillsImportLegacySelectionRequestSchema = z
1724
+ .object({
1725
+ type: z.literal("agent.skills.import_legacy_selection.request"),
1726
+ requestId: z.string(),
1727
+ selection: AgentSkillSelectionSchema,
1728
+ })
1729
+ .strict();
1510
1730
  export const GetDaemonConfigRequestMessageSchema = z.object({
1511
1731
  type: z.literal("get_daemon_config_request"),
1512
1732
  requestId: z.string(),
@@ -1678,6 +1898,8 @@ export const CreateAgentRequestMessageSchema = z.object({
1678
1898
  agentProfile: z.string().optional(),
1679
1899
  env: z.record(z.string(), z.string()).optional(),
1680
1900
  workspaceId: z.string().optional(),
1901
+ // COMPAT(architecturalViewDraftAuthoring): added in v0.9.0, remove after 2027-02-28.
1902
+ architecturalViewDraft: z.object({ viewId: z.string(), draftId: z.string() }).optional(),
1681
1903
  // Optional caller context lets managed CLI invocations use the same daemon-owned
1682
1904
  // workspace and parentage policy as agent-scoped MCP creation.
1683
1905
  callerAgentId: z.string().optional(),
@@ -2827,6 +3049,7 @@ export const FileExplorerRequestSchema = z.object({
2827
3049
  mode: z.enum(["list", "file"]),
2828
3050
  requestId: z.string(),
2829
3051
  acceptBinary: z.boolean().optional(),
3052
+ maxBytes: z.number().int().positive().optional(),
2830
3053
  });
2831
3054
  export const FileVersionSchema = z.discriminatedUnion("status", [
2832
3055
  z.object({
@@ -3308,6 +3531,11 @@ export const SessionInboundMessageSchema = z.discriminatedUnion("type", [
3308
3531
  ProjectRemoveRequestSchema,
3309
3532
  WorkspaceTitleSetRequestSchema,
3310
3533
  WorkspacePinSetRequestSchema,
3534
+ WorkspaceLabelListRequestSchema,
3535
+ WorkspaceLabelAssignmentSetRequestSchema,
3536
+ WorkspaceLabelUpdateRequestSchema,
3537
+ WorkspaceLabelDeleteRequestSchema,
3538
+ WorkspaceLabelDeleteInspectRequestSchema,
3311
3539
  WorkspaceRecoveryInspectRequestSchema,
3312
3540
  WorkspaceRecoveryRestoreRequestSchema,
3313
3541
  SetVoiceModeMessageSchema,
@@ -3315,10 +3543,26 @@ export const SessionInboundMessageSchema = z.discriminatedUnion("type", [
3315
3543
  WaitForFinishRequestSchema,
3316
3544
  DaemonGetStatusRequestSchema,
3317
3545
  DaemonGetPairingOfferRequestSchema,
3546
+ DaemonConfigReloadRequestSchema,
3318
3547
  HubManagementDaemonConnectRequestSchema,
3319
3548
  HubManagementDaemonGetStatusRequestSchema,
3320
3549
  HubManagementDaemonDisconnectRequestSchema,
3321
3550
  DiagnosticsRequestSchema,
3551
+ PluginCatalogGetRequestSchema,
3552
+ PluginListRequestSchema,
3553
+ PluginLogsGetRequestSchema,
3554
+ PluginDirectoryInstallRequestSchema,
3555
+ PluginDirectoryInspectRequestSchema,
3556
+ PluginReloadRequestSchema,
3557
+ PluginEnableRequestSchema,
3558
+ PluginDisableRequestSchema,
3559
+ PluginRemoveRequestSchema,
3560
+ PluginRpcInvokeRequestSchema,
3561
+ AgentSkillsGetStatusRequestSchema,
3562
+ AgentSkillsReconcileRequestSchema,
3563
+ AgentSkillsUninstallRequestSchema,
3564
+ AgentSkillsSaveSelectionRequestSchema,
3565
+ AgentSkillsImportLegacySelectionRequestSchema,
3322
3566
  GetDaemonConfigRequestMessageSchema,
3323
3567
  SetDaemonConfigRequestMessageSchema,
3324
3568
  ConnectorsListToolsRequestSchema,
@@ -3454,10 +3698,20 @@ export const SessionInboundMessageSchema = z.discriminatedUnion("type", [
3454
3698
  RunsGraphsListRequestSchema,
3455
3699
  RunsGraphsSaveRequestSchema,
3456
3700
  RunsGraphsDeleteRequestSchema,
3701
+ WorkflowsGraphsListRequestSchema,
3702
+ WorkflowsGraphSaveRequestSchema,
3703
+ WorkflowsGraphExportRequestSchema,
3704
+ WorkflowsGraphImportRequestSchema,
3457
3705
  RunsTemplatesListRequestSchema,
3458
3706
  RunsTemplatesSaveRequestSchema,
3459
3707
  RunsTemplatesDeleteRequestSchema,
3708
+ WorkflowsTemplatesListRequestSchema,
3709
+ WorkflowsTemplateSaveRequestSchema,
3710
+ WorkflowsStorageTransferRequestSchema,
3711
+ WorkflowsStartRequestSchema,
3460
3712
  RunsStartRequestSchema,
3713
+ WorkflowsStartConfirmationRespondRequestSchema,
3714
+ ProjectWorkflowStoreSetRequestSchema,
3461
3715
  CheckoutMergeRequestSchema,
3462
3716
  CheckoutMergeFromBaseRequestSchema,
3463
3717
  CheckoutPullRequestSchema,
@@ -3608,6 +3862,19 @@ export const SessionInboundMessageSchema = z.discriminatedUnion("type", [
3608
3862
  ArtifactDeleteRequestSchema,
3609
3863
  ArtifactStarRequestSchema,
3610
3864
  ArtifactGetContentRequestSchema,
3865
+ ArtifactRepairRequestSchema,
3866
+ ArtifactDataGetRequestSchema,
3867
+ ArtifactDataUpdateRequestSchema,
3868
+ ArtifactStoreMoveRequestSchema,
3869
+ ProjectArtifactStoreSetRequestSchema,
3870
+ ArchitecturalViewsDeliverRequestSchema,
3871
+ ArchitecturalViewsListRequestSchema,
3872
+ ArchitecturalViewsGetContentRequestSchema,
3873
+ ArchitecturalViewsDraftCreateRequestSchema,
3874
+ ArchitecturalViewsDraftUpdateRequestSchema,
3875
+ ArchitecturalViewsDraftPublishRequestSchema,
3876
+ ArchitecturalViewsDraftDiscardRequestSchema,
3877
+ ArchitecturalViewsDraftGetContentRequestSchema,
3611
3878
  ]);
3612
3879
  // ============================================================================
3613
3880
  // Session Outbound Messages (Session emits these)
@@ -3765,6 +4032,10 @@ export const ServerInfoStatusPayloadSchema = z
3765
4032
  providersSnapshot: z.boolean().optional(),
3766
4033
  // COMPAT(providersSnapshotCwd): added in v0.3.2, remove gate after 2027-02-10.
3767
4034
  providersSnapshotCwd: z.boolean().optional(),
4035
+ // COMPAT(directorySync): added in v0.3.x, remove gate after 2027-02-12.
4036
+ directorySync: z.boolean().optional(),
4037
+ // COMPAT(workspaceLabels): added in v0.5.0, remove after 2027-08-14.
4038
+ workspaceLabels: z.boolean().optional(),
3768
4039
  // COMPAT(checkoutForgeSetAutoMerge): added in v0.1.106, remove old
3769
4040
  // checkoutGithubSetAutoMerge fallback after 2026-12-28.
3770
4041
  checkoutForgeSetAutoMerge: z.boolean().optional(),
@@ -3780,10 +4051,24 @@ export const ServerInfoStatusPayloadSchema = z
3780
4051
  forgeSearch: z.boolean().optional(),
3781
4052
  // COMPAT(daemonStatusRpc): added in v0.1.76, remove gate after 2026-11-18.
3782
4053
  daemonStatusRpc: z.boolean().optional(),
4054
+ // COMPAT(daemonConfigReload): added in v0.4.0, remove gate after 2027-02-14.
4055
+ daemonConfigReload: z.boolean().optional(),
3783
4056
  // COMPAT(relayConfig): added in v0.2.6, remove gate after 2027-01-31.
3784
4057
  relayConfig: z.boolean().optional(),
3785
4058
  // COMPAT(pushTokenRevocation): added in v0.3.2, remove gate after 2027-02-10.
3786
4059
  pushTokenRevocation: z.boolean().optional(),
4060
+ // COMPAT(plugins): added in v0.3.0, remove gate after 2027-08-07.
4061
+ plugins: z.boolean().optional(),
4062
+ // COMPAT(pluginManagement): added in v0.4.0, remove gate after 2027-08-14.
4063
+ pluginManagement: z.boolean().optional(),
4064
+ // COMPAT(pluginLogs): added in v0.4.0, remove gate after 2027-08-16.
4065
+ pluginLogs: z.boolean().optional(),
4066
+ // COMPAT(pluginThemes): added in v0.5.0, remove gate after 2027-08-20.
4067
+ // A daemon that predates this flag keeps `addTheme` in the server bundle it compiles,
4068
+ // so a theme plugin cannot start there at all.
4069
+ pluginThemes: z.boolean().optional(),
4070
+ // COMPAT(skillManagement): added in v0.4.0, remove gate after 2027-08-16.
4071
+ skillManagement: z.boolean().optional(),
3787
4072
  // COMPAT(terminalRestoreModes): added in v0.1.81, remove gate after 2026-11-23.
3788
4073
  "terminal-restore-modes": z.boolean().optional(),
3789
4074
  // COMPAT(terminalCompatibilityDiagnostic): added in v0.8.9, remove gate after 2027-02-12.
@@ -3916,6 +4201,8 @@ export const ServerInfoStatusPayloadSchema = z
3916
4201
  agentContextUsage: z.boolean().optional(),
3917
4202
  // COMPAT(artifacts): added in v0.4.1, drop the gate when daemon floor >= v0.4.1.
3918
4203
  artifacts: z.boolean().optional(),
4204
+ // COMPAT(architecturalViews): added in v0.9.0, remove after 2027-02-28.
4205
+ architecturalViews: z.boolean().optional(),
3919
4206
  // COMPAT(observedSubagents): added in v0.4.3, drop the gate when daemon floor >= v0.4.3.
3920
4207
  observedSubagents: z.boolean().optional(),
3921
4208
  // COMPAT(backgroundShellTasks): added in v0.5.3, drop the gate when daemon floor >= v0.5.3.
@@ -3988,6 +4275,29 @@ export const ServerInfoStatusPayloadSchema = z
3988
4275
  // host-local instead of in the repository: the project.knowledge.store.*
3989
4276
  // RPCs, the per-project override, and the host default setting.
3990
4277
  projectKnowledgeStoreLocation: z.boolean().optional(),
4278
+ // COMPAT(artifactStoreLocation): added in v0.9.0, remove after 2027-02-28.
4279
+ // The host supports the independent Artifacts storage default and
4280
+ // per-project overrides.
4281
+ artifactStoreLocation: z.boolean().optional(),
4282
+ // COMPAT(artifactRepair): added in v0.9.0, remove after 2027-02-28.
4283
+ // The host monitors externally edited artifacts and can restore a
4284
+ // retained last-known-good output through artifact.repair.request.
4285
+ artifactRepair: z.boolean().optional(),
4286
+ // COMPAT(artifactDataUpdate): added in v0.9.0, remove after 2027-02-28.
4287
+ artifactDataUpdate: z.boolean().optional(),
4288
+ // COMPAT(artifactStoreMove): added in v0.9.0, remove after 2027-02-28.
4289
+ // The host can explicitly transfer a settled artifact between its
4290
+ // repository and host-local stores without changing write preferences.
4291
+ artifactStoreMove: z.boolean().optional(),
4292
+ // COMPAT(artifactProvenance): added in v0.9.0, remove after 2027-02-28.
4293
+ // The host persists and exposes an Artifact's latest durable source.
4294
+ artifactProvenance: z.boolean().optional(),
4295
+ // COMPAT(categoryStorageResolver): added in v0.9.0, remove after 2027-02-28.
4296
+ // An additive shared resolver with a declared supported-category set.
4297
+ categoryStorageResolver: z
4298
+ .object({ categories: z.array(z.string().min(1)) })
4299
+ .passthrough()
4300
+ .optional(),
3991
4301
  // Script discovery - the daemon scans a workspace for the Scripts its
3992
4302
  // project files already declare (package.json scripts, and later
3993
4303
  // Makefile targets, .NET launch profiles) and serves them from
@@ -4112,8 +4422,24 @@ export const ServerInfoStatusPayloadSchema = z
4112
4422
  // The daemon accepts `runs.start` with `draft: true` AND a `runId`,
4113
4423
  // re-saving that draft in place instead of minting a second one.
4114
4424
  runsDraftEdit: z.boolean().optional(),
4425
+ // COMPAT(workflowStartRpc): added in v0.9.0, remove after 2027-02-28.
4426
+ // A new client uses workflows.start when this is true; an older daemon
4427
+ // continues to receive the established runs.start pair.
4428
+ workflowStartRpc: z.boolean().optional(),
4429
+ // COMPAT(workflowStartConfirmation): added in v0.9.0, remove after
4430
+ // 2027-02-28. A new client refuses the start surface rather than
4431
+ // claiming it can enforce agent-count confirmation on an older host.
4432
+ workflowStartConfirmation: z.boolean().optional(),
4115
4433
  // COMPAT(orchestrationGraphs): added in v0.6.7, drop the gate when daemon floor >= v0.6.7.
4116
4434
  orchestrationGraphs: z.boolean().optional(),
4435
+ // COMPAT(graphCheckOutputPorts): added in v0.9.0, remove after 2027-02-28.
4436
+ // A client must not offer Check recovery routing to a host that still
4437
+ // treats a false Check as an unconditional terminal failure.
4438
+ graphCheckOutputPorts: z.boolean().optional(),
4439
+ // COMPAT(scheduleWorkflowTargets): added in v0.9.0, remove after 2027-02-28.
4440
+ // The Schedule editor may select saved Workflow definitions only when
4441
+ // the host performs the project/definition resolution and audit.
4442
+ scheduleWorkflowTargets: z.boolean().optional(),
4117
4443
  // COMPAT(fileOutsideWorkspace): added in v0.5.8, drop the gate when daemon floor >= v0.5.8.
4118
4444
  // Set when the daemon will serve single-file read/write/watch for paths
4119
4445
  // outside every known workspace (bounded only by OS filesystem
@@ -4418,6 +4744,10 @@ export const DaemonConfigChangedStatusPayloadSchema = z
4418
4744
  config: MutableDaemonConfigSchema,
4419
4745
  })
4420
4746
  .passthrough();
4747
+ export const PluginCatalogChangedStatusPayloadSchema = z.object({
4748
+ status: z.literal("plugin_catalog_changed"),
4749
+ pluginId: PluginIdSchema,
4750
+ });
4421
4751
  export const KnownStatusPayloadSchema = z.discriminatedUnion("status", [
4422
4752
  BrainStatusChangedStatusPayloadSchema,
4423
4753
  BrainLogLineAddedStatusPayloadSchema,
@@ -4430,6 +4760,7 @@ export const KnownStatusPayloadSchema = z.discriminatedUnion("status", [
4430
4760
  ShutdownRequestedStatusPayloadSchema,
4431
4761
  RestartRequestedStatusPayloadSchema,
4432
4762
  DaemonConfigChangedStatusPayloadSchema,
4763
+ PluginCatalogChangedStatusPayloadSchema,
4433
4764
  ]);
4434
4765
  export const ArtifactMessageSchema = z.object({
4435
4766
  type: z.literal("artifact"),
@@ -4572,7 +4903,7 @@ const WorkspaceGitRuntimePayloadSchema = z
4572
4903
  })
4573
4904
  .optional()
4574
4905
  .nullable();
4575
- const WorkspaceGitHubRuntimePayloadSchema = z
4906
+ export const WorkspaceGitHubRuntimePayloadSchema = z
4576
4907
  .object({
4577
4908
  featuresEnabled: z.boolean().optional(),
4578
4909
  pullRequest: z
@@ -4650,6 +4981,8 @@ export const WorkspaceDescriptorPayloadSchema = z
4650
4981
  title: z.string().nullable().optional(),
4651
4982
  // COMPAT(workspacePinning): added in v0.1.107, remove optional after 2027-01-12.
4652
4983
  pinnedAt: z.string().nullable().optional(),
4984
+ // COMPAT(workspaceLabels): added in v0.5.0, remove optional after 2027-08-14.
4985
+ labels: z.array(z.string()).optional(),
4653
4986
  archivingAt: z.string().nullable().optional().default(null),
4654
4987
  status: WorkspaceStateBucketSchema,
4655
4988
  // Best-effort workspace status entry timestamp. Old daemons omit the
@@ -4686,6 +5019,8 @@ export const WorkspaceDescriptorPayloadSchema = z
4686
5019
  // Old daemons omit it; absent means the client falls back to GitHub.
4687
5020
  forge: z.string().optional(),
4688
5021
  project: ProjectPlacementPayloadSchema.optional(),
5022
+ // COMPAT(directorySync): sequence of this latest directory projection.
5023
+ syncSeq: z.number().int().positive().optional(),
4689
5024
  })
4690
5025
  .transform((workspace) => ({
4691
5026
  ...workspace,
@@ -4704,10 +5039,14 @@ export const AgentUpdateMessageSchema = z.object({
4704
5039
  kind: z.literal("upsert"),
4705
5040
  agent: AgentSnapshotPayloadSchema,
4706
5041
  project: ProjectPlacementPayloadSchema.nullable().optional(),
5042
+ generation: z.string().optional(),
5043
+ seq: z.number().int().positive().optional(),
4707
5044
  }),
4708
5045
  z.object({
4709
5046
  kind: z.literal("remove"),
4710
5047
  agentId: z.string(),
5048
+ generation: z.string().optional(),
5049
+ seq: z.number().int().positive().optional(),
4711
5050
  }),
4712
5051
  ]),
4713
5052
  });
@@ -4755,6 +5094,8 @@ const AgentDirectoryResponseEntrySchema = z.object({
4755
5094
  // anyway; sending it keeps the client from re-deriving a second opinion that
4756
5095
  // could disagree with the ranking it is explaining.
4757
5096
  searchMatches: z.array(AgentSearchMatchSchema).optional(),
5097
+ // COMPAT(directorySync): sequence of this latest directory projection.
5098
+ syncSeq: z.number().int().positive().optional(),
4758
5099
  });
4759
5100
  const AgentDirectoryPageInfoSchema = z.object({
4760
5101
  nextCursor: z.string().nullable(),
@@ -4768,6 +5109,7 @@ export const FetchAgentsResponseMessageSchema = z.object({
4768
5109
  subscriptionId: z.string().nullable().optional(),
4769
5110
  entries: z.array(AgentDirectoryResponseEntrySchema),
4770
5111
  pageInfo: AgentDirectoryPageInfoSchema,
5112
+ sync: DirectorySyncMetadataSchema.optional(),
4771
5113
  }),
4772
5114
  });
4773
5115
  export const FetchAgentHistoryResponseMessageSchema = z.object({
@@ -4813,10 +5155,20 @@ export const WorkspaceProjectDescriptorPayloadSchema = z.object({
4813
5155
  // COMPAT(projectKnowledgeStoreLocation): added in v0.8.18, drop the optional
4814
5156
  // gate when floor >= v0.8.18.
4815
5157
  projectKnowledgeLocation: ProjectKnowledgeStoreLocationValueSchema.nullable().optional(),
5158
+ // COMPAT(artifactStoreLocation): added in v0.9.0, remove after 2027-02-28.
5159
+ projectArtifactLocation: ProjectArtifactStoreLocationValueSchema.nullable().optional(),
5160
+ // COMPAT(categoryStorageResolver): added in v0.9.0, remove after 2027-02-28.
5161
+ projectWorkflowLocation: z.enum(["repository", "host"]).nullable().optional(),
4816
5162
  // COMPAT(projectCustomIcon): added in v0.2.0, remove after 2027-01-20.
4817
5163
  projectCustomIconRevision: z.string().nullable().optional(),
5164
+ // Fingerprints the effective icon, including automatic discovery and the
5165
+ // absence of an icon. Clients may persist icon results against this value.
5166
+ // COMPAT(projectIconCache): added in v0.2.7, remove optional after 2027-02-12.
5167
+ projectIconRevision: z.string().optional(),
4818
5168
  projectRootPath: z.string(),
4819
5169
  projectKind: z.enum(["git", "non_git", "directory"]),
5170
+ // COMPAT(directorySync): sequence of this latest directory projection.
5171
+ syncSeq: z.number().int().positive().optional(),
4820
5172
  });
4821
5173
  export const FetchWorkspacesResponseMessageSchema = z.object({
4822
5174
  type: z.literal("fetch_workspaces_response"),
@@ -4833,6 +5185,7 @@ export const FetchWorkspacesResponseMessageSchema = z.object({
4833
5185
  prevCursor: z.string().nullable(),
4834
5186
  hasMore: z.boolean(),
4835
5187
  }),
5188
+ sync: DirectorySyncMetadataSchema.optional(),
4836
5189
  }),
4837
5190
  });
4838
5191
  export const WorkspaceUpdateMessageSchema = z.object({
@@ -4841,6 +5194,8 @@ export const WorkspaceUpdateMessageSchema = z.object({
4841
5194
  z.object({
4842
5195
  kind: z.literal("upsert"),
4843
5196
  workspace: WorkspaceDescriptorPayloadSchema,
5197
+ generation: z.string().optional(),
5198
+ seq: z.number().int().positive().optional(),
4844
5199
  }),
4845
5200
  z.object({
4846
5201
  kind: z.literal("remove"),
@@ -4855,6 +5210,8 @@ export const WorkspaceUpdateMessageSchema = z.object({
4855
5210
  // Project removal is represented on the existing workspace update channel
4856
5211
  // so old clients can still parse the message and ignore the extra field.
4857
5212
  removedProjectId: z.string().optional(),
5213
+ generation: z.string().optional(),
5214
+ seq: z.number().int().positive().optional(),
4858
5215
  }),
4859
5216
  ]),
4860
5217
  });
@@ -4874,11 +5231,83 @@ export const ProjectUpdatedNotificationSchema = z.object({
4874
5231
  hasActiveWorkspaces: z.boolean(),
4875
5232
  }),
4876
5233
  });
5234
+ const WorkspaceLabelSyncMetadataSchema = z.object({
5235
+ mode: z.enum(["snapshot", "changes"]),
5236
+ generation: z.string(),
5237
+ headSeq: z.number().int().nonnegative(),
5238
+ removals: z.array(z.object({ name: z.string(), seq: z.number().int().positive() })),
5239
+ });
5240
+ export const WorkspaceLabelListResponseSchema = z.object({
5241
+ type: z.literal("workspace.label.list.response"),
5242
+ payload: z.object({
5243
+ requestId: z.string(),
5244
+ labels: z.array(WorkspaceLabelDefinitionSchema),
5245
+ sync: WorkspaceLabelSyncMetadataSchema,
5246
+ }),
5247
+ });
5248
+ export const WorkspaceLabelUpdateSchema = z.object({
5249
+ type: z.literal("workspace.label.update"),
5250
+ payload: z.discriminatedUnion("kind", [
5251
+ z.object({
5252
+ kind: z.literal("upsert"),
5253
+ label: WorkspaceLabelDefinitionSchema,
5254
+ previousName: z.string().optional(),
5255
+ generation: z.string(),
5256
+ seq: z.number().int().positive(),
5257
+ }),
5258
+ z.object({
5259
+ kind: z.literal("remove"),
5260
+ name: z.string(),
5261
+ generation: z.string(),
5262
+ seq: z.number().int().positive(),
5263
+ }),
5264
+ ]),
5265
+ });
5266
+ export const WorkspaceLabelAssignmentSetResponseSchema = z.object({
5267
+ type: z.literal("workspace.label.assignment.set.response"),
5268
+ payload: z.object({
5269
+ requestId: z.string(),
5270
+ label: WorkspaceLabelDefinitionSchema,
5271
+ workspaceLabels: z.array(z.string()),
5272
+ }),
5273
+ });
5274
+ export const WorkspaceLabelUpdateResponseSchema = z.object({
5275
+ type: z.literal("workspace.label.update.response"),
5276
+ payload: z.object({
5277
+ requestId: z.string(),
5278
+ label: WorkspaceLabelDefinitionSchema,
5279
+ affectedWorkspaceCount: z.number().int().nonnegative(),
5280
+ }),
5281
+ });
5282
+ export const WorkspaceLabelDeleteResponseSchema = z.object({
5283
+ type: z.literal("workspace.label.delete.response"),
5284
+ payload: z.object({
5285
+ requestId: z.string(),
5286
+ affectedWorkspaceCount: z.number().int().nonnegative(),
5287
+ }),
5288
+ });
5289
+ export const WorkspaceLabelDeleteInspectResponseSchema = z.object({
5290
+ type: z.literal("workspace.label.delete.inspect.response"),
5291
+ payload: z.object({
5292
+ requestId: z.string(),
5293
+ affectedWorkspaceCount: z.number().int().nonnegative(),
5294
+ }),
5295
+ });
4877
5296
  export const ProjectUpdateMessageSchema = z.object({
4878
5297
  type: z.literal("project.update"),
4879
5298
  payload: z.discriminatedUnion("kind", [
4880
- z.object({ kind: z.literal("upsert"), project: WorkspaceProjectDescriptorPayloadSchema }),
4881
- z.object({ kind: z.literal("remove"), projectId: z.string() }),
5299
+ z.object({
5300
+ kind: z.literal("upsert"),
5301
+ project: WorkspaceProjectDescriptorPayloadSchema,
5302
+ generation: z.string().optional(),
5303
+ seq: z.number().int().positive().optional(),
5304
+ }),
5305
+ z.object({
5306
+ kind: z.literal("remove"),
5307
+ projectId: z.string(),
5308
+ generation: z.string().optional(),
5309
+ seq: z.number().int().positive().optional(),
5310
+ }),
4882
5311
  ]),
4883
5312
  });
4884
5313
  export const ProjectListResponseMessageSchema = z.object({
@@ -4886,6 +5315,7 @@ export const ProjectListResponseMessageSchema = z.object({
4886
5315
  payload: z.object({
4887
5316
  requestId: z.string(),
4888
5317
  projects: z.array(WorkspaceProjectDescriptorPayloadSchema),
5318
+ sync: DirectorySyncMetadataSchema.optional(),
4889
5319
  }),
4890
5320
  });
4891
5321
  export const ProjectResolveWorkspaceForPathResponseSchema = z.object({
@@ -5165,6 +5595,7 @@ const AgentTimelineSeqRangeSchema = z.object({
5165
5595
  export const AgentTimelineEntryPayloadSchema = z.object({
5166
5596
  provider: AgentProviderSchema,
5167
5597
  item: AgentTimelineItemPayloadSchema,
5598
+ turnId: z.string().optional(),
5168
5599
  timestamp: z.string(),
5169
5600
  seqStart: z.number().int().nonnegative(),
5170
5601
  seqEnd: z.number().int().nonnegative(),
@@ -5480,6 +5911,17 @@ export const DaemonGetPairingOfferResponseSchema = z.object({
5480
5911
  })
5481
5912
  .passthrough(),
5482
5913
  });
5914
+ export const DaemonConfigReloadResponseSchema = z.object({
5915
+ type: z.literal("daemon.config.reload.response"),
5916
+ payload: z
5917
+ .object({
5918
+ requestId: z.string(),
5919
+ appliedPaths: z.array(z.string()),
5920
+ restartRequiredPaths: z.array(z.string()),
5921
+ overrideControlledPaths: z.array(z.string()),
5922
+ })
5923
+ .passthrough(),
5924
+ });
5483
5925
  export const DiagnosticsResponseSchema = z.object({
5484
5926
  type: z.literal("diagnostics.response"),
5485
5927
  payload: z
@@ -5737,6 +6179,10 @@ export const CheckoutPrStatusSchema = z.object({
5737
6179
  status: z.string(),
5738
6180
  url: z.string().nullable(),
5739
6181
  workflow: z.string().optional(),
6182
+ /**
6183
+ * Formatted by the forge adapter: how long a finished check took, or how long a
6184
+ * running one has been going. Raw timestamps stay off the wire.
6185
+ */
5740
6186
  duration: z.string().optional(),
5741
6187
  checkRunId: z.number().optional(),
5742
6188
  workflowRunId: z.number().optional(),
@@ -6990,6 +7436,91 @@ export function parseHubExecutionOutboundMessage(value) {
6990
7436
  }
6991
7437
  return message;
6992
7438
  }
7439
+ export const PluginCatalogGetResponseSchema = z.object({
7440
+ type: z.literal("plugin.catalog.get.response"),
7441
+ payload: z.object({
7442
+ requestId: z.string(),
7443
+ plugins: z.array(z.object({
7444
+ id: PluginIdSchema,
7445
+ clientBundle: z.string(),
7446
+ })),
7447
+ }),
7448
+ });
7449
+ export const PluginStatusSchema = z.enum(["running", "disabled", "failed"]);
7450
+ export const PluginListItemSchema = z.object({
7451
+ id: PluginIdSchema,
7452
+ path: z.string(),
7453
+ enabled: z.boolean(),
7454
+ status: PluginStatusSchema,
7455
+ error: z.string().optional(),
7456
+ });
7457
+ export const PluginLogEntrySchema = z.object({
7458
+ sequence: z.number().int().nonnegative(),
7459
+ timestamp: z.string().datetime(),
7460
+ stream: z.enum(["stdout", "stderr"]),
7461
+ message: z.string(),
7462
+ });
7463
+ export const PluginListResponseSchema = z.object({
7464
+ type: z.literal("plugin.list.response"),
7465
+ payload: z.object({ requestId: z.string(), plugins: z.array(PluginListItemSchema) }),
7466
+ });
7467
+ export const PluginLogsGetResponseSchema = z.object({
7468
+ type: z.literal("plugin.logs.get.response"),
7469
+ payload: z.object({
7470
+ requestId: z.string(),
7471
+ pluginId: PluginIdSchema,
7472
+ entries: z.array(PluginLogEntrySchema),
7473
+ }),
7474
+ });
7475
+ export const PluginDirectoryInstallResponseSchema = z.object({
7476
+ type: z.literal("plugin.directory.install.response"),
7477
+ payload: z.object({ requestId: z.string(), plugin: PluginListItemSchema }),
7478
+ });
7479
+ export const PluginDirectoryInspectResponseSchema = z.object({
7480
+ type: z.literal("plugin.directory.inspect.response"),
7481
+ payload: z.object({ requestId: z.string(), id: PluginIdSchema }),
7482
+ });
7483
+ function pluginActionResponse(type) {
7484
+ return z.object({
7485
+ type: z.literal(type),
7486
+ payload: z.object({ requestId: z.string(), plugin: PluginListItemSchema }),
7487
+ });
7488
+ }
7489
+ export const PluginReloadResponseSchema = pluginActionResponse("plugin.reload.response");
7490
+ export const PluginEnableResponseSchema = pluginActionResponse("plugin.enable.response");
7491
+ export const PluginDisableResponseSchema = pluginActionResponse("plugin.disable.response");
7492
+ export const PluginRemoveResponseSchema = z.object({
7493
+ type: z.literal("plugin.remove.response"),
7494
+ payload: z.object({ requestId: z.string() }).strict(),
7495
+ });
7496
+ export const PluginRpcInvokeResponseSchema = z.object({
7497
+ type: z.literal("plugin.rpc.invoke.response"),
7498
+ payload: z.object({
7499
+ requestId: z.string(),
7500
+ output: z.unknown(),
7501
+ }),
7502
+ });
7503
+ function agentSkillsStatusResponse(type) {
7504
+ return z.object({
7505
+ type: z.literal(type),
7506
+ payload: AgentSkillsStatusSchema.extend({ requestId: z.string() }),
7507
+ });
7508
+ }
7509
+ export const AgentSkillsGetStatusResponseSchema = agentSkillsStatusResponse("agent.skills.get_status.response");
7510
+ export const AgentSkillsReconcileResponseSchema = agentSkillsStatusResponse("agent.skills.reconcile.response");
7511
+ export const AgentSkillsUninstallResponseSchema = agentSkillsStatusResponse("agent.skills.uninstall.response");
7512
+ export const AgentSkillsSaveSelectionResponseSchema = z.object({
7513
+ type: z.literal("agent.skills.save_selection.response"),
7514
+ payload: AgentSkillsSaveResultSchema.extend({ requestId: z.string() }),
7515
+ });
7516
+ export const AgentSkillsImportLegacySelectionResponseSchema = z.object({
7517
+ type: z.literal("agent.skills.import_legacy_selection.response"),
7518
+ payload: z.object({
7519
+ requestId: z.string(),
7520
+ imported: z.boolean(),
7521
+ selection: AgentSkillSelectionSchema,
7522
+ }),
7523
+ });
6993
7524
  export const SessionOutboundMessageSchema = z.discriminatedUnion("type", [
6994
7525
  HubExecutionAgentCreateResponseSchema,
6995
7526
  HubExecutionAgentValidateResponseSchema,
@@ -6997,6 +7528,21 @@ export const SessionOutboundMessageSchema = z.discriminatedUnion("type", [
6997
7528
  HubExecutionAgentUpdateSchema,
6998
7529
  HubExecutionAgentStreamSchema,
6999
7530
  BrowserAutomationExecuteRequestSchema,
7531
+ PluginCatalogGetResponseSchema,
7532
+ PluginListResponseSchema,
7533
+ PluginLogsGetResponseSchema,
7534
+ PluginDirectoryInstallResponseSchema,
7535
+ PluginDirectoryInspectResponseSchema,
7536
+ PluginReloadResponseSchema,
7537
+ PluginEnableResponseSchema,
7538
+ PluginDisableResponseSchema,
7539
+ PluginRemoveResponseSchema,
7540
+ PluginRpcInvokeResponseSchema,
7541
+ AgentSkillsGetStatusResponseSchema,
7542
+ AgentSkillsReconcileResponseSchema,
7543
+ AgentSkillsUninstallResponseSchema,
7544
+ AgentSkillsSaveSelectionResponseSchema,
7545
+ AgentSkillsImportLegacySelectionResponseSchema,
7000
7546
  ActivityLogMessageSchema,
7001
7547
  AssistantChunkMessageSchema,
7002
7548
  AudioOutputMessageSchema,
@@ -7015,6 +7561,12 @@ export const SessionOutboundMessageSchema = z.discriminatedUnion("type", [
7015
7561
  ArtifactUpdateMessageSchema,
7016
7562
  AgentUpdateMessageSchema,
7017
7563
  WorkspaceUpdateMessageSchema,
7564
+ WorkspaceLabelListResponseSchema,
7565
+ WorkspaceLabelUpdateSchema,
7566
+ WorkspaceLabelAssignmentSetResponseSchema,
7567
+ WorkspaceLabelUpdateResponseSchema,
7568
+ WorkspaceLabelDeleteResponseSchema,
7569
+ WorkspaceLabelDeleteInspectResponseSchema,
7018
7570
  ProjectUpdateMessageSchema,
7019
7571
  ProjectListResponseMessageSchema,
7020
7572
  ProjectResolveWorkspaceForPathResponseSchema,
@@ -7062,6 +7614,7 @@ export const SessionOutboundMessageSchema = z.discriminatedUnion("type", [
7062
7614
  SetVoiceModeResponseMessageSchema,
7063
7615
  DaemonGetStatusResponseSchema,
7064
7616
  DaemonGetPairingOfferResponseSchema,
7617
+ DaemonConfigReloadResponseSchema,
7065
7618
  HubManagementDaemonConnectResponseSchema,
7066
7619
  HubManagementDaemonGetStatusResponseSchema,
7067
7620
  HubManagementDaemonDisconnectResponseSchema,
@@ -7208,11 +7761,21 @@ export const SessionOutboundMessageSchema = z.discriminatedUnion("type", [
7208
7761
  RunsGraphsSaveResponseSchema,
7209
7762
  RunsGraphsDeleteResponseSchema,
7210
7763
  RunsGraphsChangedNotificationSchema,
7764
+ WorkflowsGraphsListResponseSchema,
7765
+ WorkflowsGraphSaveResponseSchema,
7766
+ WorkflowsGraphExportResponseSchema,
7767
+ WorkflowsGraphImportResponseSchema,
7211
7768
  RunsTemplatesListResponseSchema,
7212
7769
  RunsTemplatesSaveResponseSchema,
7213
7770
  RunsTemplatesDeleteResponseSchema,
7214
7771
  RunsTemplatesChangedNotificationSchema,
7772
+ WorkflowsTemplatesListResponseSchema,
7773
+ WorkflowsTemplateSaveResponseSchema,
7774
+ WorkflowsStorageTransferResponseSchema,
7775
+ WorkflowsStartResponseSchema,
7215
7776
  RunsStartResponseSchema,
7777
+ WorkflowsStartConfirmationRespondResponseSchema,
7778
+ ProjectWorkflowStoreSetResponseSchema,
7216
7779
  CheckoutMergeResponseSchema,
7217
7780
  CheckoutMergeFromBaseResponseSchema,
7218
7781
  CheckoutPullResponseSchema,
@@ -7381,9 +7944,23 @@ export const SessionOutboundMessageSchema = z.discriminatedUnion("type", [
7381
7944
  ArtifactDeleteResponseSchema,
7382
7945
  ArtifactStarResponseSchema,
7383
7946
  ArtifactGetContentResponseSchema,
7947
+ ArtifactRepairResponseSchema,
7948
+ ArtifactDataGetResponseSchema,
7949
+ ArtifactDataUpdateResponseSchema,
7950
+ ArtifactStoreMoveResponseSchema,
7951
+ ProjectArtifactStoreSetResponseSchema,
7384
7952
  ArtifactCreatedNotificationSchema,
7385
7953
  ArtifactUpdatedNotificationSchema,
7386
7954
  ArtifactDeletedNotificationSchema,
7955
+ ArchitecturalViewsDeliverResponseSchema,
7956
+ ArchitecturalViewsListResponseSchema,
7957
+ ArchitecturalViewsGetContentResponseSchema,
7958
+ ArchitecturalViewsDraftCreateResponseSchema,
7959
+ ArchitecturalViewsDraftUpdateResponseSchema,
7960
+ ArchitecturalViewsDraftPublishResponseSchema,
7961
+ ArchitecturalViewsDraftDiscardResponseSchema,
7962
+ ArchitecturalViewsDraftGetContentResponseSchema,
7963
+ ArchitecturalViewsOpenNotificationSchema,
7387
7964
  ]);
7388
7965
  export * from "./kanban.js";
7389
7966
  // ============================================================================
@@ -7478,7 +8055,7 @@ export * from "./meetings.js";
7478
8055
  export * from "./personality-schemas.js";
7479
8056
  // The Brain, Preview and Meetings schema modules own these, but messages.ts stays
7480
8057
  // the public import surface for everything it ever exported.
7481
- export * from "./orchestration.js";
8058
+ export * from "./workflow.js";
7482
8059
  export * from "./integration-authorization.js";
7483
8060
  export * from "./communications.js";
7484
8061
  export * from "./context.js";
@@ -7494,5 +8071,5 @@ export * from "./storage.js";
7494
8071
  export * from "./suggested-tasks.js";
7495
8072
  export * from "./worktree-ops.js";
7496
8073
  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";
8074
+ 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
8075
  //# sourceMappingURL=messages.js.map