@otto-code/protocol 0.8.5 → 0.8.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/messages.js CHANGED
@@ -608,6 +608,15 @@ export const MutableDaemonConfigSchema = z
608
608
  attachmentImageMaxAgeDays: z.number().int().min(0).default(30),
609
609
  attachmentImageMaxTotalMb: z.number().int().min(0).default(512),
610
610
  enableTerminalAgentHooks: z.boolean().default(false),
611
+ // Gated by server_info.features.terminalTitleSettings. The daemon owns
612
+ // title policy because terminals can be created from any connected client.
613
+ terminalTitleMode: z.enum(["auto", "default"]).optional(),
614
+ terminalTitleIncludePaths: z.boolean().optional(),
615
+ // Windows-only preference for ordinary interactive terminals. Absent keeps
616
+ // the operating system's normal default shell on every platform.
617
+ defaultTerminalShell: z
618
+ .enum(["command-prompt", "windows-powershell", "powershell-7"])
619
+ .optional(),
611
620
  appendSystemPrompt: z.string().default(""),
612
621
  terminalProfiles: z.array(TerminalProfileSchema).optional(),
613
622
  // Absent on daemons without the speechSettings feature.
@@ -681,6 +690,11 @@ export const MutableDaemonConfigPatchSchema = z
681
690
  attachmentImageMaxAgeDays: z.number().int().min(0).optional(),
682
691
  attachmentImageMaxTotalMb: z.number().int().min(0).optional(),
683
692
  enableTerminalAgentHooks: z.boolean().optional(),
693
+ terminalTitleMode: z.enum(["auto", "default"]).optional(),
694
+ terminalTitleIncludePaths: z.boolean().optional(),
695
+ defaultTerminalShell: z
696
+ .enum(["command-prompt", "windows-powershell", "powershell-7"])
697
+ .optional(),
684
698
  appendSystemPrompt: z.string().optional(),
685
699
  terminalProfiles: z.array(TerminalProfileSchema).optional(),
686
700
  // Gated by server_info features.speechSettings; every field is optional so
@@ -1323,6 +1337,9 @@ export const AgentSnapshotPayloadSchema = z.object({
1323
1337
  attentionReason: z.enum(["finished", "error", "permission"]).nullable().optional(),
1324
1338
  attentionTimestamp: z.string().nullable().optional(),
1325
1339
  archivedAt: z.string().nullable().optional(),
1340
+ // Bytes in Otto's record captured at archive time. This is a projection,
1341
+ // never a transcript rescan during rendering.
1342
+ archiveBytes: z.number().int().nonnegative().optional(),
1326
1343
  providerUnavailable: z.boolean().optional(),
1327
1344
  // Attendability. "observed" marks a provider-managed subagent (Claude Task /
1328
1345
  // ultracode fan-out) that the user can watch but not prompt or reconfigure -
@@ -1430,12 +1447,8 @@ export const CloseItemsRequestMessageSchema = z.object({
1430
1447
  // to be server-side because the history list is cursor-paginated across hosts,
1431
1448
  // so the client never holds the whole archived set.
1432
1449
  //
1433
- // Deleting a chat removes OTTO's record only. The provider's own on-disk
1434
- // transcript (Claude's `~/.claude/projects/**/<sessionId>.jsonl`, Codex threads,
1435
- // OpenCode sessions) is deliberately left in place: Otto never created it,
1436
- // another tool still reads it, and silently deleting another tool's state is not
1437
- // ours to do. There is intentionally **no** opt-in flag for provider data on the
1438
- // wire - the UI discloses what stays behind instead. See docs/chat-lifecycle.md.
1450
+ // Deleting a chat removes Otto's record only. Provider-owned session data is
1451
+ // deliberately left in place. See docs/chat-lifecycle.md.
1439
1452
  // Gated by server_info.features.historyDelete.
1440
1453
  export const HistoryAgentsClearArchivedRequestSchema = z.object({
1441
1454
  type: z.literal("history.agents.clear_archived.request"),
@@ -1461,6 +1474,21 @@ export const HistoryAgentsClearArchivedResponseSchema = z.object({
1461
1474
  dryRun: z.boolean(),
1462
1475
  error: z.string().nullable(),
1463
1476
  requestId: z.string(),
1477
+ ottoBytes: z.number().int().nonnegative().optional(),
1478
+ reclaimedBytes: z.number().int().nonnegative().optional(),
1479
+ }),
1480
+ });
1481
+ export const HistoryAgentsStorageStatsRequestSchema = z.object({
1482
+ type: z.literal("history.agents.get_storage_stats.request"),
1483
+ requestId: z.string(),
1484
+ });
1485
+ export const HistoryAgentsStorageStatsResponseSchema = z.object({
1486
+ type: z.literal("history.agents.get_storage_stats.response"),
1487
+ payload: z.object({
1488
+ archivedCount: z.number().int().nonnegative(),
1489
+ totalBytes: z.number().nonnegative(),
1490
+ error: z.string().nullable(),
1491
+ requestId: z.string(),
1464
1492
  }),
1465
1493
  });
1466
1494
  export const UpdateAgentRequestMessageSchema = z.object({
@@ -1561,6 +1589,10 @@ export const BrainCapabilitiesSchema = z
1561
1589
  liveInference: z.boolean().default(false),
1562
1590
  /** Whether writes are permitted right now (the brain's allowRemoteConfig). */
1563
1591
  writable: z.boolean().default(false),
1592
+ /** The remote brain owns benchmark jobs and can list/cancel them. */
1593
+ jobs: z.boolean().default(false),
1594
+ /** The brain can ask its owning daemon to restart it. */
1595
+ restart: z.boolean().default(false),
1564
1596
  })
1565
1597
  .passthrough();
1566
1598
  // The brain's host status, as the daemon derives it: liveness plus the fields
@@ -2707,6 +2739,11 @@ export const ProjectListRequestMessageSchema = z.object({
2707
2739
  type: z.literal("project.list.request"),
2708
2740
  requestId: z.string(),
2709
2741
  });
2742
+ export const ProjectResolveWorkspaceForPathRequestSchema = z.object({
2743
+ type: z.literal("project.resolveWorkspaceForPath.request"),
2744
+ requestId: z.string(),
2745
+ path: z.string(),
2746
+ });
2710
2747
  export const FetchAgentHistoryRequestMessageSchema = z.object({
2711
2748
  type: z.literal("fetch_agent_history_request"),
2712
2749
  requestId: z.string(),
@@ -3706,6 +3743,9 @@ export const ContextReportSchema = z.object({
3706
3743
  // is a z.enum travelling daemon->client, so a new member would make a new
3707
3744
  // daemon's report unparseable by an older client.
3708
3745
  personalityMemoryTokens: z.number().optional(),
3746
+ // COMPAT(projectKnowledge): additive; repo-owned knowledge is folded into
3747
+ // otto_injected, while this field keeps its recurring cost inspectable.
3748
+ projectKnowledgeTokens: z.number().optional(),
3709
3749
  });
3710
3750
  // Pushed with the full current report whenever a watched context file changes.
3711
3751
  // Full-report reconciliation, same idiom as suggested_tasks_changed.
@@ -3773,6 +3813,226 @@ export const ContextPromptPreviewGetResponseMessageSchema = z.object({
3773
3813
  preview: ContextPromptPreviewSchema.nullable(),
3774
3814
  }),
3775
3815
  });
3816
+ // Repo-owned project knowledge is canonical Markdown under `.otto/knowledge`,
3817
+ // with daemon-owned writes so worktrees resolve to one store and every truth
3818
+ // change retains its timeline evidence.
3819
+ export const ProjectKnowledgeKindSchema = z.enum([
3820
+ "decision",
3821
+ "constraint",
3822
+ "requirement",
3823
+ "architecture",
3824
+ "project",
3825
+ "reference",
3826
+ ]);
3827
+ export const ProjectKnowledgeStatusSchema = z.enum(["proposed", "confirmed", "superseded"]);
3828
+ export const ProjectDeliveryStatusSchema = z.enum([
3829
+ "charter",
3830
+ "in_build",
3831
+ "partial",
3832
+ "blocked",
3833
+ "complete",
3834
+ "reference",
3835
+ "deferred",
3836
+ "cancelled",
3837
+ ]);
3838
+ export const ProjectReferenceDispositionSchema = z.enum([
3839
+ "unevaluated",
3840
+ "read",
3841
+ "adopted",
3842
+ "rejected",
3843
+ "dependency",
3844
+ ]);
3845
+ export const ProjectProgressSchema = z.object({
3846
+ completed: z.number().int().nonnegative(),
3847
+ total: z.number().int().positive(),
3848
+ unit: z.string().min(1).max(48),
3849
+ });
3850
+ export const ProjectKnowledgeRecordSchema = z.object({
3851
+ id: z.string(),
3852
+ kind: ProjectKnowledgeKindSchema,
3853
+ title: z.string(),
3854
+ statement: z.string(),
3855
+ statementDigest: z.string().optional(),
3856
+ evidence: z.string().optional(),
3857
+ tags: z.array(z.string()),
3858
+ status: ProjectKnowledgeStatusSchema,
3859
+ deliveryStatus: ProjectDeliveryStatusSchema.optional(),
3860
+ progress: ProjectProgressSchema.optional(),
3861
+ referenceDisposition: ProjectReferenceDispositionSchema.optional(),
3862
+ sourceUrl: z.string().optional(),
3863
+ createdAt: z.string(),
3864
+ updatedAt: z.string(),
3865
+ provenance: z
3866
+ .array(z.object({
3867
+ text: z.string(),
3868
+ recordedAt: z.string(),
3869
+ source: z.string().optional(),
3870
+ kind: z.string().optional(),
3871
+ affects: z.array(z.string()).optional(),
3872
+ }))
3873
+ .optional(),
3874
+ path: z.string().optional(),
3875
+ });
3876
+ export const ProjectKnowledgeFindingSchema = z.object({
3877
+ kind: z.enum(["stale", "overlapping_tags", "overlapping_statement"]),
3878
+ recordId: z.string(),
3879
+ relatedRecordId: z.string().optional(),
3880
+ message: z.string(),
3881
+ });
3882
+ export const ProjectKnowledgeRootPageSchema = z.object({
3883
+ slug: z.string(),
3884
+ title: z.string(),
3885
+ path: z.string(),
3886
+ body: z.string(),
3887
+ });
3888
+ export const ProjectKnowledgeListRequestMessageSchema = z.object({
3889
+ type: z.literal("project.knowledge.list.request"),
3890
+ requestId: z.string(),
3891
+ workspaceId: z.string(),
3892
+ });
3893
+ export const ProjectKnowledgeListResponseMessageSchema = z.object({
3894
+ type: z.literal("project.knowledge.list.response"),
3895
+ payload: z.object({
3896
+ requestId: z.string(),
3897
+ records: z.array(ProjectKnowledgeRecordSchema),
3898
+ rootPages: z.array(ProjectKnowledgeRootPageSchema).optional(),
3899
+ findings: z.array(ProjectKnowledgeFindingSchema),
3900
+ brief: z.string(),
3901
+ briefTokens: z.number(),
3902
+ includedIds: z.array(z.string()),
3903
+ omittedCount: z.number(),
3904
+ }),
3905
+ });
3906
+ export const ProjectKnowledgeGetRequestMessageSchema = z.object({
3907
+ type: z.literal("project.knowledge.get.request"),
3908
+ requestId: z.string(),
3909
+ workspaceId: z.string(),
3910
+ id: z.string(),
3911
+ });
3912
+ export const ProjectKnowledgeGetResponseMessageSchema = z.object({
3913
+ type: z.literal("project.knowledge.get.response"),
3914
+ payload: z.object({ requestId: z.string(), record: ProjectKnowledgeRecordSchema.nullable() }),
3915
+ });
3916
+ export const ProjectKnowledgeCreateRequestMessageSchema = z.object({
3917
+ type: z.literal("project.knowledge.create.request"),
3918
+ requestId: z.string(),
3919
+ workspaceId: z.string(),
3920
+ id: z.string().optional(),
3921
+ kind: ProjectKnowledgeKindSchema,
3922
+ title: z.string().max(160),
3923
+ statement: z.string(),
3924
+ evidence: z.string().optional(),
3925
+ tags: z.array(z.string().max(48)).max(32).optional(),
3926
+ affects: z.array(z.string()).optional(),
3927
+ status: ProjectKnowledgeStatusSchema.optional(),
3928
+ deliveryStatus: ProjectDeliveryStatusSchema.optional(),
3929
+ progress: ProjectProgressSchema.optional(),
3930
+ referenceDisposition: ProjectReferenceDispositionSchema.optional(),
3931
+ sourceUrl: z.string().optional(),
3932
+ });
3933
+ export const ProjectKnowledgeCreateResponseMessageSchema = z.object({
3934
+ type: z.literal("project.knowledge.create.response"),
3935
+ payload: z.object({ requestId: z.string(), record: ProjectKnowledgeRecordSchema }),
3936
+ });
3937
+ export const ProjectKnowledgeApplyRequestMessageSchema = z.object({
3938
+ type: z.literal("project.knowledge.apply.request"),
3939
+ requestId: z.string(),
3940
+ workspaceId: z.string(),
3941
+ id: z.string(),
3942
+ title: z.string().max(160).optional(),
3943
+ statement: z.string().optional(),
3944
+ evidence: z.string().optional(),
3945
+ provenanceText: z.string().optional(),
3946
+ provenanceSource: z.string().max(160).optional(),
3947
+ provenanceAffects: z.array(z.string()).optional(),
3948
+ expectedUpdatedAt: z.string().optional(),
3949
+ });
3950
+ export const ProjectKnowledgeApplyResponseMessageSchema = z.object({
3951
+ type: z.literal("project.knowledge.apply.response"),
3952
+ payload: z.object({
3953
+ requestId: z.string(),
3954
+ record: ProjectKnowledgeRecordSchema.nullable(),
3955
+ error: z.string().optional(),
3956
+ }),
3957
+ });
3958
+ export const ProjectKnowledgeStatusRequestMessageSchema = z.object({
3959
+ type: z.literal("project.knowledge.status.request"),
3960
+ requestId: z.string(),
3961
+ workspaceId: z.string(),
3962
+ id: z.string(),
3963
+ status: ProjectKnowledgeStatusSchema,
3964
+ reason: z.string().optional(),
3965
+ });
3966
+ export const ProjectKnowledgeStatusResponseMessageSchema = z.object({
3967
+ type: z.literal("project.knowledge.status.response"),
3968
+ payload: z.object({ requestId: z.string(), record: ProjectKnowledgeRecordSchema.nullable() }),
3969
+ });
3970
+ export const ProjectKnowledgeProjectApplyRequestMessageSchema = z.object({
3971
+ type: z.literal("project.knowledge.project.apply.request"),
3972
+ requestId: z.string(),
3973
+ workspaceId: z.string(),
3974
+ id: z.string(),
3975
+ deliveryStatus: ProjectDeliveryStatusSchema.optional(),
3976
+ progress: ProjectProgressSchema.nullable().optional(),
3977
+ reason: z.string(),
3978
+ expectedUpdatedAt: z.string().optional(),
3979
+ });
3980
+ export const ProjectKnowledgeProjectApplyResponseMessageSchema = z.object({
3981
+ type: z.literal("project.knowledge.project.apply.response"),
3982
+ payload: z.object({
3983
+ requestId: z.string(),
3984
+ record: ProjectKnowledgeRecordSchema.nullable(),
3985
+ error: z.string().optional(),
3986
+ }),
3987
+ });
3988
+ export const ProjectKnowledgeReferenceApplyRequestMessageSchema = z.object({
3989
+ type: z.literal("project.knowledge.reference.apply.request"),
3990
+ requestId: z.string(),
3991
+ workspaceId: z.string(),
3992
+ id: z.string(),
3993
+ disposition: ProjectReferenceDispositionSchema.optional(),
3994
+ sourceUrl: z.string().nullable().optional(),
3995
+ reason: z.string(),
3996
+ expectedUpdatedAt: z.string().optional(),
3997
+ });
3998
+ export const ProjectKnowledgeReferenceApplyResponseMessageSchema = z.object({
3999
+ type: z.literal("project.knowledge.reference.apply.response"),
4000
+ payload: z.object({
4001
+ requestId: z.string(),
4002
+ record: ProjectKnowledgeRecordSchema.nullable(),
4003
+ error: z.string().optional(),
4004
+ }),
4005
+ });
4006
+ export const ProjectKnowledgeRootApplyRequestMessageSchema = z.object({
4007
+ type: z.literal("project.knowledge.root.apply.request"),
4008
+ requestId: z.string(),
4009
+ workspaceId: z.string(),
4010
+ slug: z.string(),
4011
+ body: z.string(),
4012
+ });
4013
+ export const ProjectKnowledgeRootApplyResponseMessageSchema = z.object({
4014
+ type: z.literal("project.knowledge.root.apply.response"),
4015
+ payload: z.object({
4016
+ requestId: z.string(),
4017
+ page: ProjectKnowledgeRootPageSchema.nullable(),
4018
+ }),
4019
+ });
4020
+ export const ProjectKnowledgeDeleteRequestMessageSchema = z.object({
4021
+ type: z.literal("project.knowledge.delete.request"),
4022
+ requestId: z.string(),
4023
+ workspaceId: z.string(),
4024
+ id: z.string(),
4025
+ reason: z.string(),
4026
+ expectedUpdatedAt: z.string().optional(),
4027
+ });
4028
+ export const ProjectKnowledgeDeleteResponseMessageSchema = z.object({
4029
+ type: z.literal("project.knowledge.delete.response"),
4030
+ payload: z.object({
4031
+ requestId: z.string(),
4032
+ deleted: z.boolean(),
4033
+ error: z.string().optional(),
4034
+ }),
4035
+ });
3776
4036
  // Converts one edge between "always loaded" and "link only". Server-side
3777
4037
  // because the parent file may live outside the workspace root.
3778
4038
  export const ContextEdgeConvertRequestMessageSchema = z.object({
@@ -5787,6 +6047,9 @@ export const RenameTerminalRequestSchema = z.object({
5787
6047
  type: z.literal("terminal.rename.request"),
5788
6048
  terminalId: z.string(),
5789
6049
  title: z.string(),
6050
+ // COMPAT(terminalTitleSettings): old daemons ignore this field and retain
6051
+ // their existing rename behavior.
6052
+ clear: z.boolean().optional(),
5790
6053
  requestId: z.string(),
5791
6054
  });
5792
6055
  export const StartWorkspaceScriptRequestSchema = z.object({
@@ -5904,11 +6167,13 @@ export const SessionInboundMessageSchema = z.discriminatedUnion("type", [
5904
6167
  FetchRecentProviderSessionsRequestMessageSchema,
5905
6168
  FetchWorkspacesRequestMessageSchema,
5906
6169
  ProjectListRequestMessageSchema,
6170
+ ProjectResolveWorkspaceForPathRequestSchema,
5907
6171
  FetchAgentRequestMessageSchema,
5908
6172
  DeleteAgentRequestMessageSchema,
5909
6173
  ArchiveAgentRequestMessageSchema,
5910
6174
  CloseItemsRequestMessageSchema,
5911
6175
  HistoryAgentsClearArchivedRequestSchema,
6176
+ HistoryAgentsStorageStatsRequestSchema,
5912
6177
  AttachmentsImagesStatsRequestSchema,
5913
6178
  AttachmentsImagesClearRequestSchema,
5914
6179
  BrainHostStatusRequestSchema,
@@ -5992,6 +6257,15 @@ export const SessionInboundMessageSchema = z.discriminatedUnion("type", [
5992
6257
  StatsActivityGetRequestMessageSchema,
5993
6258
  ContextReportGetRequestMessageSchema,
5994
6259
  ContextPromptPreviewGetRequestMessageSchema,
6260
+ ProjectKnowledgeListRequestMessageSchema,
6261
+ ProjectKnowledgeGetRequestMessageSchema,
6262
+ ProjectKnowledgeCreateRequestMessageSchema,
6263
+ ProjectKnowledgeApplyRequestMessageSchema,
6264
+ ProjectKnowledgeStatusRequestMessageSchema,
6265
+ ProjectKnowledgeProjectApplyRequestMessageSchema,
6266
+ ProjectKnowledgeReferenceApplyRequestMessageSchema,
6267
+ ProjectKnowledgeRootApplyRequestMessageSchema,
6268
+ ProjectKnowledgeDeleteRequestMessageSchema,
5995
6269
  ContextEdgeConvertRequestMessageSchema,
5996
6270
  ContextFindingsFixRequestMessageSchema,
5997
6271
  PersonalityMemoryListRequestMessageSchema,
@@ -6327,6 +6601,15 @@ export const ServerInfoStatusPayloadSchema = z
6327
6601
  serverId: z.string().trim().min(1),
6328
6602
  hostname: ServerInfoHostnameSchema.optional(),
6329
6603
  version: ServerInfoVersionSchema.optional(),
6604
+ // The daemon's OS and detected interactive shells. Optional so older hosts
6605
+ // remain parseable; only Windows hosts advertise terminalShells.
6606
+ platform: z.string().optional(),
6607
+ terminalShells: z
6608
+ .array(z.object({
6609
+ id: z.enum(["command-prompt", "windows-powershell", "powershell-7"]),
6610
+ label: z.string(),
6611
+ }))
6612
+ .optional(),
6330
6613
  // COMPAT(desktopManaged): added in v0.1.X, remove optional parsing after 2027-01-16.
6331
6614
  desktopManaged: z.boolean().optional(),
6332
6615
  capabilities: ServerCapabilitiesFromUnknownSchema.optional(),
@@ -6348,6 +6631,8 @@ export const ServerInfoStatusPayloadSchema = z
6348
6631
  daemonStatusRpc: z.boolean().optional(),
6349
6632
  // COMPAT(terminalRestoreModes): added in v0.1.81, remove gate after 2026-11-23.
6350
6633
  "terminal-restore-modes": z.boolean().optional(),
6634
+ // COMPAT(terminalTitleSettings): added in v0.8.5, remove gate after 2027-02-07.
6635
+ terminalTitleSettings: z.boolean().optional(),
6351
6636
  // COMPAT(rewind): added in v0.1.X, drop the gate when floor >= v0.1.X.
6352
6637
  rewind: z.boolean().optional(),
6353
6638
  // COMPAT(checkoutRefresh): added in v0.1.86, remove gate after 2026-11-29.
@@ -6493,6 +6778,8 @@ export const ServerInfoStatusPayloadSchema = z
6493
6778
  // client-side fallback could read.
6494
6779
  // COMPAT(personalityMemory): added in v0.7.0, drop the gate when daemon floor >= v0.7.0.
6495
6780
  personalityMemory: z.boolean().optional(),
6781
+ // COMPAT(projectKnowledge): added in v0.8.5, drop the gate when daemon floor >= v0.8.5.
6782
+ projectKnowledge: z.boolean().optional(),
6496
6783
  // Script discovery - the daemon scans a workspace for the Scripts its
6497
6784
  // project files already declare (package.json scripts, and later
6498
6785
  // Makefile targets, .NET launch profiles) and serves them from
@@ -6715,6 +7002,8 @@ export const ServerInfoStatusPayloadSchema = z
6715
7002
  // the daemon half of the Storage section; the app-side preview cache row
6716
7003
  // is local and always shown.
6717
7004
  attachmentStorage: z.boolean().optional(),
7005
+ // COMPAT(historyStorage): added in v0.7.2, drop the gate when daemon floor >= v0.7.2.
7006
+ historyStorage: z.boolean().optional(),
6718
7007
  // COMPAT(agentWorkspaceTransfer): added in v0.7.4, drop the gate when
6719
7008
  // daemon floor >= v0.7.4. Set when the daemon serves
6720
7009
  // `agent.workspace.transfer` - moving a chat to another workspace over
@@ -7327,6 +7616,13 @@ export const ProjectListResponseMessageSchema = z.object({
7327
7616
  projects: z.array(WorkspaceProjectDescriptorPayloadSchema),
7328
7617
  }),
7329
7618
  });
7619
+ export const ProjectResolveWorkspaceForPathResponseSchema = z.object({
7620
+ type: z.literal("project.resolveWorkspaceForPath.response"),
7621
+ payload: z.object({
7622
+ requestId: z.string(),
7623
+ workspaceId: z.string().nullable(),
7624
+ }),
7625
+ });
7330
7626
  export const ScriptStatusUpdateMessageSchema = z.object({
7331
7627
  type: z.literal("script_status_update"),
7332
7628
  payload: z.object({
@@ -10396,6 +10692,7 @@ export const SessionOutboundMessageSchema = z.discriminatedUnion("type", [
10396
10692
  WorkspaceUpdateMessageSchema,
10397
10693
  ProjectUpdateMessageSchema,
10398
10694
  ProjectListResponseMessageSchema,
10695
+ ProjectResolveWorkspaceForPathResponseSchema,
10399
10696
  ScriptStatusUpdateMessageSchema,
10400
10697
  WorkspaceSetupProgressMessageSchema,
10401
10698
  WorkspaceSetupStatusResponseMessageSchema,
@@ -10494,6 +10791,7 @@ export const SessionOutboundMessageSchema = z.discriminatedUnion("type", [
10494
10791
  AgentPermissionResolvedMessageSchema,
10495
10792
  AgentDeletedMessageSchema,
10496
10793
  HistoryAgentsClearArchivedResponseSchema,
10794
+ HistoryAgentsStorageStatsResponseSchema,
10497
10795
  AttachmentsImagesStatsResponseSchema,
10498
10796
  AttachmentsImagesClearResponseSchema,
10499
10797
  BrainHostStatusResponseSchema,
@@ -10644,6 +10942,15 @@ export const SessionOutboundMessageSchema = z.discriminatedUnion("type", [
10644
10942
  StatsActivityGetResponseMessageSchema,
10645
10943
  ContextReportGetResponseMessageSchema,
10646
10944
  ContextPromptPreviewGetResponseMessageSchema,
10945
+ ProjectKnowledgeListResponseMessageSchema,
10946
+ ProjectKnowledgeGetResponseMessageSchema,
10947
+ ProjectKnowledgeCreateResponseMessageSchema,
10948
+ ProjectKnowledgeApplyResponseMessageSchema,
10949
+ ProjectKnowledgeStatusResponseMessageSchema,
10950
+ ProjectKnowledgeProjectApplyResponseMessageSchema,
10951
+ ProjectKnowledgeReferenceApplyResponseMessageSchema,
10952
+ ProjectKnowledgeRootApplyResponseMessageSchema,
10953
+ ProjectKnowledgeDeleteResponseMessageSchema,
10647
10954
  ContextEdgeConvertResponseMessageSchema,
10648
10955
  ContextFindingsFixResponseMessageSchema,
10649
10956
  PersonalityMemoryListResponseMessageSchema,