@otto-code/protocol 0.8.9 → 0.8.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/dist/agent-queue.d.ts +87 -0
  2. package/dist/agent-queue.js +106 -0
  3. package/dist/brain.d.ts +2321 -0
  4. package/dist/brain.js +1082 -0
  5. package/dist/client-capabilities.d.ts +2 -0
  6. package/dist/client-capabilities.js +10 -0
  7. package/dist/code-intelligence.d.ts +917 -0
  8. package/dist/code-intelligence.js +699 -0
  9. package/dist/communications.d.ts +1106 -0
  10. package/dist/communications.js +384 -0
  11. package/dist/context.d.ts +787 -0
  12. package/dist/context.js +295 -0
  13. package/dist/daemon-config.d.ts +377 -0
  14. package/dist/daemon-config.js +395 -0
  15. package/dist/file-operations.d.ts +380 -0
  16. package/dist/file-operations.js +282 -0
  17. package/dist/generated/validation/ws-outbound.aot.js +54927 -48878
  18. package/dist/git-hosting.d.ts +117 -0
  19. package/dist/git-hosting.js +109 -0
  20. package/dist/git-operations.d.ts +255 -0
  21. package/dist/git-operations.js +221 -0
  22. package/dist/integration-authorization.d.ts +195 -0
  23. package/dist/integration-authorization.js +125 -0
  24. package/dist/kanban.d.ts +341 -0
  25. package/dist/kanban.js +273 -0
  26. package/dist/loop/rpc-schemas.d.ts +6 -6
  27. package/dist/meetings.d.ts +95 -0
  28. package/dist/meetings.js +57 -0
  29. package/dist/messages.d.ts +21054 -24042
  30. package/dist/messages.js +4355 -8731
  31. package/dist/orchestration.d.ts +726 -0
  32. package/dist/orchestration.js +232 -0
  33. package/dist/personality-schemas.d.ts +221 -0
  34. package/dist/personality-schemas.js +340 -0
  35. package/dist/preview.d.ts +140 -0
  36. package/dist/preview.js +98 -0
  37. package/dist/project-knowledge.d.ts +740 -0
  38. package/dist/project-knowledge.js +229 -0
  39. package/dist/project-links.d.ts +102 -0
  40. package/dist/project-links.js +62 -0
  41. package/dist/provider-config.d.ts +87 -2
  42. package/dist/provider-config.js +110 -0
  43. package/dist/refine.d.ts +93 -0
  44. package/dist/refine.js +78 -0
  45. package/dist/schedule/rpc-schemas.d.ts +47 -47
  46. package/dist/schedule/types.d.ts +13 -13
  47. package/dist/speech.d.ts +180 -0
  48. package/dist/speech.js +177 -0
  49. package/dist/storage.d.ts +79 -0
  50. package/dist/storage.js +107 -0
  51. package/dist/suggested-tasks.d.ts +106 -0
  52. package/dist/suggested-tasks.js +81 -0
  53. package/dist/terminal-compatibility.d.ts +55 -0
  54. package/dist/terminal-compatibility.js +35 -0
  55. package/dist/usage-stats.d.ts +255 -0
  56. package/dist/usage-stats.js +162 -0
  57. package/dist/validation/ws-outbound-schema-metadata.d.ts +1404 -274
  58. package/dist/worktree-ops.d.ts +81 -0
  59. package/dist/worktree-ops.js +88 -0
  60. package/package.json +1 -1
@@ -0,0 +1,295 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * Otto Context Management wire schemas: the context report, findings, prompt
4
+ * preview and edge-conversion RPCs (see docs/context-management.md).
5
+ *
6
+ * Context Management is a fork-only capability, so its schemas live in their own
7
+ * protocol module rather than inside messages.ts, matching kanban.ts, brain.ts
8
+ * and the other Otto domains. messages.ts re-exports them for back-compat.
9
+ */
10
+ // Context Management - the daemon's accounting of everything a provider sends
11
+ // before the user types (see docs/context-management.md).
12
+ //
13
+ // Two distinctions carry the whole feature and must not be collapsed on the
14
+ // wire: an `import` edge is inlined into the request while a `reference` edge
15
+ // costs only its link text, and `costClass` separates weight that rides every
16
+ // request from weight that loads only when the agent touches an area.
17
+ //
18
+ // All numbers are estimates (chars/4) and `confidence` says how much to trust
19
+ // the file set: `exact` when Otto composed the payload itself, `convention`
20
+ // when resolved from a provider's documented layout, `unverified` for
21
+ // subprocess-owned agents we cannot see into.
22
+ // COMPAT(contextManagement): added in v0.6.5, drop the gate when daemon floor >= v0.6.5.
23
+ export const ContextScopeSchema = z.enum([
24
+ "enterprise",
25
+ "global",
26
+ "project",
27
+ "local",
28
+ "subdirectory",
29
+ "runtime",
30
+ ]);
31
+ export const ContextCategorySchema = z.enum([
32
+ "context_files",
33
+ "memory_index",
34
+ "skills_roster",
35
+ "mcp_tools",
36
+ "otto_injected",
37
+ "system_prompt",
38
+ ]);
39
+ export const ContextCostClassSchema = z.enum(["fixed", "conditional", "referenced"]);
40
+ export const ContextSeveritySchema = z.enum(["ok", "notice", "warn", "critical"]);
41
+ export const ContextConfidenceSchema = z.enum(["exact", "convention", "unverified"]);
42
+ // Per-category disclosure of how well the daemon can see a provider's payload.
43
+ // `not_visible` is the reason this exists: a CLI-backed provider composes its
44
+ // own preset and hands MCP servers to a subprocess, so those categories are
45
+ // unmeasurable rather than empty, and the row has to be able to say which.
46
+ export const ContextCategoryVisibilitySchema = z.enum([
47
+ "exact",
48
+ "convention",
49
+ "unverified",
50
+ "not_visible",
51
+ ]);
52
+ export const ContextFindingKindSchema = z.enum([
53
+ "dead_import",
54
+ "dead_reference",
55
+ "duplicate_across_scope",
56
+ "duplicate_within_file",
57
+ "oversized_memory_entry",
58
+ "import_cycle",
59
+ "depth_capped",
60
+ ]);
61
+ export const ContextRangeSchema = z.object({
62
+ start: z.number(),
63
+ end: z.number(),
64
+ });
65
+ export const ContextFindingSchema = z.object({
66
+ kind: ContextFindingKindSchema,
67
+ message: z.string(),
68
+ range: ContextRangeSchema.optional(),
69
+ relatedNodeIds: z.array(z.string()).optional(),
70
+ // The node this finding is about. Redundant while the finding sits on its
71
+ // node, load-bearing once the report flattens them all into one list - that
72
+ // list is the "Issues" tab, and without this a row cannot say where it came
73
+ // from or take you there.
74
+ nodeId: z.string().optional(),
75
+ // 1-based line of `range.start` in that node's file, so the fix list can jump
76
+ // the editor without the client re-reading bytes to count newlines.
77
+ line: z.number().optional(),
78
+ // Last line of the range, so the client can select the whole offending span
79
+ // rather than dropping a cursor at the top of it.
80
+ lineEnd: z.number().optional(),
81
+ // True for kinds a mechanical delete can resolve on its own (dead links, a
82
+ // duplicate block) - false/absent for kinds that need judgment (which side
83
+ // of an import cycle to cut, how to split an oversized entry). Computed
84
+ // server-side, once, in `locateFinding` - the only place that knows the kind
85
+ // vocabulary, so the fix-all button never has to guess.
86
+ fixable: z.boolean().optional(),
87
+ // The exact text at `range` when the file was scanned. `context.findings.fix`
88
+ // verifies this still matches before deleting, the same staleness guard
89
+ // `context.edge.convert` uses for `rawTarget`.
90
+ snippet: z.string().optional(),
91
+ });
92
+ export const ContextNodeSchema = z.object({
93
+ id: z.string(),
94
+ path: z.string(),
95
+ relPath: z.string(),
96
+ scope: ContextScopeSchema,
97
+ category: ContextCategorySchema,
98
+ costClass: ContextCostClassSchema,
99
+ bytes: z.number(),
100
+ estTokens: z.number(),
101
+ // Extra parents that also reach this node. The node is listed and counted
102
+ // exactly once; these render as a dimmed "also imported by" chip.
103
+ alsoImportedByNodeIds: z.array(z.string()),
104
+ findings: z.array(ContextFindingSchema),
105
+ });
106
+ export const ContextEdgeSchema = z.object({
107
+ fromNodeId: z.string(),
108
+ // Null when the target could not be resolved - pairs with a dead_* finding.
109
+ toNodeId: z.string().nullable(),
110
+ kind: z.enum(["import", "reference"]),
111
+ rawTarget: z.string(),
112
+ // Byte range of the whole reference token in the parent file, which is what
113
+ // makes "Always load" <-> "Link only" a single-span edit.
114
+ range: ContextRangeSchema,
115
+ });
116
+ export const ContextCategoryTotalSchema = z.object({
117
+ category: ContextCategorySchema,
118
+ estTokens: z.number(),
119
+ sharePercent: z.number(),
120
+ severity: ContextSeveritySchema,
121
+ // COMPAT(contextCategoryVisibility): added in v0.7.1, drop the optionality
122
+ // when the floor is >= v0.7.1. An older client ignores the field and still
123
+ // gets correct totals; a newer client seeing it absent renders no badge.
124
+ visibility: ContextCategoryVisibilitySchema.optional(),
125
+ });
126
+ export const ContextReportSchema = z.object({
127
+ workspaceId: z.string(),
128
+ provider: z.string(),
129
+ // The window the report was evaluated against - from the active model, or
130
+ // the client's what-if picker. Severity is meaningless without it.
131
+ windowTokens: z.number(),
132
+ scannedAt: z.string(),
133
+ confidence: ContextConfidenceSchema,
134
+ supported: z.boolean(),
135
+ supportsImports: z.boolean(),
136
+ nodes: z.array(ContextNodeSchema),
137
+ edges: z.array(ContextEdgeSchema),
138
+ categoryTotals: z.array(ContextCategoryTotalSchema),
139
+ fixedTotal: z.number(),
140
+ conditionalTotal: z.number(),
141
+ referencedTotal: z.number(),
142
+ workingRoom: z.number(),
143
+ aggregateSeverity: ContextSeveritySchema,
144
+ findings: z.array(ContextFindingSchema),
145
+ // Which personality this report was evaluated FOR. Context became
146
+ // personality-specific once personalities accrue memory, so a report is only
147
+ // interpretable alongside the identity it was measured against.
148
+ // COMPAT(personalityMemory): additive; absent = the pre-memory, personality-agnostic report.
149
+ personalityId: z.string().optional(),
150
+ // That personality's injected memory brief, in tokens. Folded into the
151
+ // `otto_injected` category total rather than a new category: ContextCategory
152
+ // is a z.enum travelling daemon->client, so a new member would make a new
153
+ // daemon's report unparseable by an older client.
154
+ personalityMemoryTokens: z.number().optional(),
155
+ // COMPAT(projectKnowledge): additive; repo-owned knowledge is folded into
156
+ // otto_injected, while this field keeps its recurring cost inspectable.
157
+ projectKnowledgeTokens: z.number().optional(),
158
+ });
159
+ // Pushed with the full current report whenever a watched context file changes.
160
+ // Full-report reconciliation, same idiom as suggested_tasks_changed.
161
+ export const ContextReportChangedSchema = z.object({
162
+ type: z.literal("context_report_changed"),
163
+ payload: z.object({
164
+ workspaceId: z.string(),
165
+ report: ContextReportSchema.nullable(),
166
+ }),
167
+ });
168
+ // `provider` and `windowTokens` are the what-if pickers: omitted means "the
169
+ // active agent's provider and its model's real window".
170
+ export const ContextReportGetRequestMessageSchema = z.object({
171
+ type: z.literal("context.report.get.request"),
172
+ requestId: z.string(),
173
+ workspaceId: z.string(),
174
+ provider: z.string().optional(),
175
+ windowTokens: z.number().optional(),
176
+ // "Evaluate as if this personality were running here": folds that
177
+ // personality's injected memory brief into the report's fixed weight. Omitted
178
+ // means the personality-agnostic report.
179
+ personalityId: z.string().optional(),
180
+ });
181
+ export const ContextReportGetResponseMessageSchema = z.object({
182
+ type: z.literal("context.report.get.response"),
183
+ payload: z.object({
184
+ requestId: z.string(),
185
+ report: ContextReportSchema.nullable(),
186
+ }),
187
+ });
188
+ // One readable block of the assembled prompt. `text` is absent exactly when
189
+ // `visibility` is "not_visible" - the provider composes that part internally and
190
+ // Otto has nothing to show, which the section states rather than hides.
191
+ export const ContextPromptSectionSchema = z.object({
192
+ category: ContextCategorySchema,
193
+ label: z.string(),
194
+ visibility: ContextCategoryVisibilitySchema,
195
+ text: z.string().optional(),
196
+ estTokens: z.number(),
197
+ });
198
+ export const ContextPromptPreviewSchema = z.object({
199
+ sections: z.array(ContextPromptSectionSchema),
200
+ estTokens: z.number(),
201
+ });
202
+ // Read-only by design: there is no matching write RPC. Editing happens per file
203
+ // through the existing file pane, against the real file rather than a
204
+ // concatenation of several.
205
+ export const ContextPromptPreviewGetRequestMessageSchema = z.object({
206
+ type: z.literal("context.prompt.preview.get.request"),
207
+ requestId: z.string(),
208
+ workspaceId: z.string(),
209
+ provider: z.string().optional(),
210
+ windowTokens: z.number().optional(),
211
+ personalityId: z.string().optional(),
212
+ // Assemble only this category. The tab reads one section at a time - the user
213
+ // clicked a row in the tree - and assembling the rest would re-read every
214
+ // context file on disk to build text nobody asked to see. Omitted means all,
215
+ // which is what an older client sends.
216
+ category: ContextCategorySchema.optional(),
217
+ });
218
+ export const ContextPromptPreviewGetResponseMessageSchema = z.object({
219
+ type: z.literal("context.prompt.preview.get.response"),
220
+ payload: z.object({
221
+ requestId: z.string(),
222
+ preview: ContextPromptPreviewSchema.nullable(),
223
+ }),
224
+ });
225
+ // Converts one edge between "always loaded" and "link only". Server-side
226
+ // because the parent file may live outside the workspace root.
227
+ export const ContextEdgeConvertRequestMessageSchema = z.object({
228
+ type: z.literal("context.edge.convert.request"),
229
+ requestId: z.string(),
230
+ workspaceId: z.string(),
231
+ // The parent file holding the reference - its `ContextNode.path`, not its
232
+ // id: ids are case-folded on Windows and are not safe to write through.
233
+ filePath: z.string(),
234
+ rawTarget: z.string(),
235
+ range: ContextRangeSchema,
236
+ target: z.enum(["import", "reference"]),
237
+ });
238
+ export const ContextEdgeConvertResponseMessageSchema = z.object({
239
+ type: z.literal("context.edge.convert.response"),
240
+ payload: z.object({
241
+ requestId: z.string(),
242
+ ok: z.boolean(),
243
+ error: z.string().optional(),
244
+ }),
245
+ });
246
+ // Deletes every mechanically-fixable finding's range in one pass - the
247
+ // "Fix all" button in the Issues tab. Each item names the file, the range the
248
+ // scan flagged, and the snippet expected there; a file that changed since the
249
+ // scan is skipped rather than corrupted (charter §7.5).
250
+ export const ContextFindingsFixRequestMessageSchema = z.object({
251
+ type: z.literal("context.findings.fix.request"),
252
+ requestId: z.string(),
253
+ workspaceId: z.string(),
254
+ findings: z.array(z.object({
255
+ filePath: z.string(),
256
+ range: ContextRangeSchema,
257
+ snippet: z.string(),
258
+ })),
259
+ });
260
+ export const ContextFindingsFixResponseMessageSchema = z.object({
261
+ type: z.literal("context.findings.fix.response"),
262
+ payload: z.object({
263
+ requestId: z.string(),
264
+ fixedCount: z.number(),
265
+ failedCount: z.number(),
266
+ errors: z.array(z.string()),
267
+ }),
268
+ });
269
+ export const AgentContextGetUsageRequestMessageSchema = z.object({
270
+ type: z.literal("agent.context.get_usage.request"),
271
+ agentId: z.string(),
272
+ requestId: z.string(),
273
+ });
274
+ export const AgentContextUsageCategorySchema = z.object({
275
+ /** Provider-supplied display label, e.g. "Messages", "System prompt". Not translated. */
276
+ name: z.string(),
277
+ tokens: z.number(),
278
+ /** Deferred content (e.g. on-demand tool schemas) is not counted in totalTokens. */
279
+ isDeferred: z.boolean().optional(),
280
+ });
281
+ export const AgentContextUsageSchema = z.object({
282
+ categories: z.array(AgentContextUsageCategorySchema),
283
+ totalTokens: z.number(),
284
+ maxTokens: z.number(),
285
+ });
286
+ export const AgentContextGetUsageResponseMessageSchema = z.object({
287
+ type: z.literal("agent.context.get_usage.response"),
288
+ payload: z.object({
289
+ requestId: z.string(),
290
+ agentId: z.string(),
291
+ /** Null when the agent's provider cannot report a context breakdown. */
292
+ usage: AgentContextUsageSchema.nullable(),
293
+ }),
294
+ });
295
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1,377 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * Otto's mutable daemon-config fragments: the per-feature config sections Paseo's MutableDaemonConfigSchema composes. Each Otto feature registers one field there; the section schema lives here.
4
+ */
5
+ export declare const MutableAgentBehaviorsConfigSchema: z.ZodObject<{
6
+ promptSuggestions: z.ZodDefault<z.ZodBoolean>;
7
+ agentProgressSummaries: z.ZodDefault<z.ZodBoolean>;
8
+ notifyOnFinishDefault: z.ZodDefault<z.ZodBoolean>;
9
+ todoNudge: z.ZodDefault<z.ZodBoolean>;
10
+ todoReconcileOnIdle: z.ZodDefault<z.ZodBoolean>;
11
+ stallGuardThreshold: z.ZodDefault<z.ZodNumber>;
12
+ }, z.core.$loose>;
13
+ /**
14
+ * Language-server code intelligence, host-scoped because the servers are processes
15
+ * on the daemon's machine - they follow the host, not the client.
16
+ *
17
+ * `enabled` defaults **on** and that is safe: nothing spawns until a
18
+ * code-intelligence action needs a language in a workspace, so an unused language
19
+ * costs nothing. What the switch guarantees is that off means off - no server
20
+ * spawns for any workspace, and the ctags index still serves the outline and the
21
+ * fuzzy finder.
22
+ *
23
+ * `languages` keys are registry row ids (`typescript`, `python`, `csharp`, …). An
24
+ * absent key means "use the row's own default", so a new row ships with its
25
+ * intended default rather than reading as disabled.
26
+ */
27
+ export declare const MutableLspConfigSchema: z.ZodObject<{
28
+ enabled: z.ZodDefault<z.ZodBoolean>;
29
+ languages: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
30
+ csharpProjectScope: z.ZodOptional<z.ZodEnum<{
31
+ solution: "solution";
32
+ allProjects: "allProjects";
33
+ }>>;
34
+ maxRunningServers: z.ZodDefault<z.ZodNumber>;
35
+ idleMinutes: z.ZodDefault<z.ZodNumber>;
36
+ backgroundIdleMinutes: z.ZodDefault<z.ZodNumber>;
37
+ }, z.core.$loose>;
38
+ /**
39
+ * "Microsoft .NET Solution Management" - the Solution view's own switch.
40
+ *
41
+ * **A sibling of `lsp`, not a member of it.** Turning C# code intelligence off does not turn
42
+ * this off and vice versa: they are independent capabilities that happen to share a language,
43
+ * and nesting this inside the LSP settings object would imply exactly the coupling that
44
+ * decision rejects. (It would also be wrong on the facts - LSP has no project-structure
45
+ * request, so nothing here rides on a language server.)
46
+ *
47
+ * Defaults **off**: the feature spawns a process and evaluates MSBuild. Disabled is genuinely
48
+ * off, not merely hidden - no discovery walk, no `.sln` read, no `.csproj` parse, no sidecar,
49
+ * no cache, no watcher, and no view switcher. The daemon reads this before scheduling any work,
50
+ * so a disabled feature costs exactly one boolean check.
51
+ */
52
+ export declare const MutableDotnetSolutionConfigSchema: z.ZodObject<{
53
+ enabled: z.ZodDefault<z.ZodBoolean>;
54
+ maxRunningProbes: z.ZodDefault<z.ZodNumber>;
55
+ idleMinutes: z.ZodDefault<z.ZodNumber>;
56
+ }, z.core.$loose>;
57
+ export declare const MutableGitHostingBitbucketCloudConfigSchema: z.ZodObject<{
58
+ email: z.ZodOptional<z.ZodString>;
59
+ apiToken: z.ZodOptional<z.ZodString>;
60
+ }, z.core.$loose>;
61
+ export declare const MutableGitHostingAtlassianConfigSchema: z.ZodObject<{
62
+ email: z.ZodOptional<z.ZodString>;
63
+ apiToken: z.ZodOptional<z.ZodString>;
64
+ jiraSiteUrl: z.ZodOptional<z.ZodString>;
65
+ }, z.core.$loose>;
66
+ export declare const MutableGitHostingProvidersConfigSchema: z.ZodObject<{
67
+ bitbucketCloud: z.ZodOptional<z.ZodObject<{
68
+ email: z.ZodOptional<z.ZodString>;
69
+ apiToken: z.ZodOptional<z.ZodString>;
70
+ }, z.core.$loose>>;
71
+ atlassian: z.ZodOptional<z.ZodObject<{
72
+ email: z.ZodOptional<z.ZodString>;
73
+ apiToken: z.ZodOptional<z.ZodString>;
74
+ jiraSiteUrl: z.ZodOptional<z.ZodString>;
75
+ }, z.core.$loose>>;
76
+ }, z.core.$loose>;
77
+ export declare const MutableGitHostingConfigSchema: z.ZodObject<{
78
+ providers: z.ZodOptional<z.ZodObject<{
79
+ bitbucketCloud: z.ZodOptional<z.ZodObject<{
80
+ email: z.ZodOptional<z.ZodString>;
81
+ apiToken: z.ZodOptional<z.ZodString>;
82
+ }, z.core.$loose>>;
83
+ atlassian: z.ZodOptional<z.ZodObject<{
84
+ email: z.ZodOptional<z.ZodString>;
85
+ apiToken: z.ZodOptional<z.ZodString>;
86
+ jiraSiteUrl: z.ZodOptional<z.ZodString>;
87
+ }, z.core.$loose>>;
88
+ }, z.core.$loose>>;
89
+ }, z.core.$loose>;
90
+ export type MutableGitHostingConfig = z.infer<typeof MutableGitHostingConfigSchema>;
91
+ export declare const MutableKanbanConfigSchema: z.ZodObject<{
92
+ providers: z.ZodOptional<z.ZodObject<{
93
+ github: z.ZodObject<{
94
+ token: z.ZodOptional<z.ZodString>;
95
+ }, z.core.$loose>;
96
+ jira: z.ZodObject<{
97
+ token: z.ZodOptional<z.ZodString>;
98
+ }, z.core.$loose>;
99
+ }, z.core.$loose>>;
100
+ }, z.core.$loose>;
101
+ export type MutableKanbanConfig = z.infer<typeof MutableKanbanConfigSchema>;
102
+ export declare const MutableAgentPersonalitiesConfigSchema: z.ZodObject<{
103
+ personalities: z.ZodDefault<z.ZodArray<z.ZodObject<{
104
+ id: z.ZodString;
105
+ name: z.ZodString;
106
+ provider: z.ZodString;
107
+ model: z.ZodString;
108
+ effortLevel: z.ZodOptional<z.ZodString>;
109
+ modeId: z.ZodOptional<z.ZodString>;
110
+ personalityPrompt: z.ZodOptional<z.ZodString>;
111
+ respectGlobalAppendPrompt: z.ZodOptional<z.ZodBoolean>;
112
+ roles: z.ZodOptional<z.ZodArray<z.ZodString>>;
113
+ spinner: z.ZodOptional<z.ZodObject<{
114
+ glowA: z.ZodString;
115
+ glowB: z.ZodString;
116
+ }, z.core.$loose>>;
117
+ voice: z.ZodOptional<z.ZodObject<{
118
+ provider: z.ZodString;
119
+ model: z.ZodString;
120
+ name: z.ZodString;
121
+ }, z.core.$loose>>;
122
+ voiceCues: z.ZodOptional<z.ZodObject<{
123
+ join: z.ZodOptional<z.ZodArray<z.ZodString>>;
124
+ thinking: z.ZodOptional<z.ZodArray<z.ZodString>>;
125
+ waiting: z.ZodOptional<z.ZodArray<z.ZodString>>;
126
+ done: z.ZodOptional<z.ZodArray<z.ZodString>>;
127
+ }, z.core.$loose>>;
128
+ memoryEnabled: z.ZodOptional<z.ZodBoolean>;
129
+ }, z.core.$loose>>>;
130
+ }, z.core.$loose>;
131
+ export declare const MutableAgentPersonalitiesConfigPatchSchema: z.ZodObject<{
132
+ personalities: z.ZodOptional<z.ZodArray<z.ZodObject<{
133
+ id: z.ZodString;
134
+ name: z.ZodString;
135
+ provider: z.ZodString;
136
+ model: z.ZodString;
137
+ effortLevel: z.ZodOptional<z.ZodString>;
138
+ modeId: z.ZodOptional<z.ZodString>;
139
+ personalityPrompt: z.ZodOptional<z.ZodString>;
140
+ respectGlobalAppendPrompt: z.ZodOptional<z.ZodBoolean>;
141
+ roles: z.ZodOptional<z.ZodArray<z.ZodString>>;
142
+ spinner: z.ZodOptional<z.ZodObject<{
143
+ glowA: z.ZodString;
144
+ glowB: z.ZodString;
145
+ }, z.core.$loose>>;
146
+ voice: z.ZodOptional<z.ZodObject<{
147
+ provider: z.ZodString;
148
+ model: z.ZodString;
149
+ name: z.ZodString;
150
+ }, z.core.$loose>>;
151
+ voiceCues: z.ZodOptional<z.ZodObject<{
152
+ join: z.ZodOptional<z.ZodArray<z.ZodString>>;
153
+ thinking: z.ZodOptional<z.ZodArray<z.ZodString>>;
154
+ waiting: z.ZodOptional<z.ZodArray<z.ZodString>>;
155
+ done: z.ZodOptional<z.ZodArray<z.ZodString>>;
156
+ }, z.core.$loose>>;
157
+ memoryEnabled: z.ZodOptional<z.ZodBoolean>;
158
+ }, z.core.$loose>>>;
159
+ }, z.core.$loose>;
160
+ export declare const MutableAgentTeamsConfigSchema: z.ZodObject<{
161
+ teams: z.ZodDefault<z.ZodArray<z.ZodObject<{
162
+ id: z.ZodString;
163
+ name: z.ZodString;
164
+ avatar: z.ZodOptional<z.ZodObject<{
165
+ color: z.ZodOptional<z.ZodString>;
166
+ imageId: z.ZodOptional<z.ZodString>;
167
+ }, z.core.$loose>>;
168
+ teamPrompt: z.ZodOptional<z.ZodString>;
169
+ memberIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
170
+ }, z.core.$loose>>>;
171
+ activeTeamId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
172
+ }, z.core.$loose>;
173
+ export declare const MutableAgentTeamsConfigPatchSchema: z.ZodObject<{
174
+ teams: z.ZodOptional<z.ZodArray<z.ZodObject<{
175
+ id: z.ZodString;
176
+ name: z.ZodString;
177
+ avatar: z.ZodOptional<z.ZodObject<{
178
+ color: z.ZodOptional<z.ZodString>;
179
+ imageId: z.ZodOptional<z.ZodString>;
180
+ }, z.core.$loose>>;
181
+ teamPrompt: z.ZodOptional<z.ZodString>;
182
+ memberIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
183
+ }, z.core.$loose>>>;
184
+ activeTeamId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
185
+ }, z.core.$loose>;
186
+ export declare const MutableBrainTlsConfigSchema: z.ZodObject<{
187
+ mode: z.ZodDefault<z.ZodEnum<{
188
+ off: "off";
189
+ files: "files";
190
+ "self-signed": "self-signed";
191
+ tailscale: "tailscale";
192
+ }>>;
193
+ certFile: z.ZodDefault<z.ZodNullable<z.ZodString>>;
194
+ keyFile: z.ZodDefault<z.ZodNullable<z.ZodString>>;
195
+ hostname: z.ZodDefault<z.ZodNullable<z.ZodString>>;
196
+ certDir: z.ZodDefault<z.ZodNullable<z.ZodString>>;
197
+ renewBeforeDays: z.ZodDefault<z.ZodNumber>;
198
+ }, z.core.$loose>;
199
+ export declare const MutableBrainRemoteConfigSchema: z.ZodObject<{
200
+ host: z.ZodDefault<z.ZodString>;
201
+ port: z.ZodDefault<z.ZodNumber>;
202
+ secure: z.ZodDefault<z.ZodBoolean>;
203
+ authToken: z.ZodDefault<z.ZodNullable<z.ZodString>>;
204
+ certFingerprint: z.ZodDefault<z.ZodNullable<z.ZodString>>;
205
+ }, z.core.$loose>;
206
+ export declare const MutableBrainConfigSchema: z.ZodObject<{
207
+ enabled: z.ZodDefault<z.ZodBoolean>;
208
+ autoStart: z.ZodDefault<z.ZodBoolean>;
209
+ mode: z.ZodDefault<z.ZodEnum<{
210
+ local: "local";
211
+ remote: "remote";
212
+ }>>;
213
+ remote: z.ZodDefault<z.ZodObject<{
214
+ host: z.ZodDefault<z.ZodString>;
215
+ port: z.ZodDefault<z.ZodNumber>;
216
+ secure: z.ZodDefault<z.ZodBoolean>;
217
+ authToken: z.ZodDefault<z.ZodNullable<z.ZodString>>;
218
+ certFingerprint: z.ZodDefault<z.ZodNullable<z.ZodString>>;
219
+ }, z.core.$loose>>;
220
+ listen: z.ZodDefault<z.ZodObject<{
221
+ host: z.ZodDefault<z.ZodString>;
222
+ port: z.ZodDefault<z.ZodNumber>;
223
+ }, z.core.$loose>>;
224
+ defaultModel: z.ZodDefault<z.ZodNullable<z.ZodString>>;
225
+ runtime: z.ZodDefault<z.ZodObject<{
226
+ source: z.ZodDefault<z.ZodEnum<{
227
+ auto: "auto";
228
+ managed: "managed";
229
+ lmstudio: "lmstudio";
230
+ }>>;
231
+ path: z.ZodDefault<z.ZodNullable<z.ZodString>>;
232
+ logVerbosity: z.ZodDefault<z.ZodNumber>;
233
+ }, z.core.$strip>>;
234
+ lockModel: z.ZodDefault<z.ZodBoolean>;
235
+ allowRemoteConfig: z.ZodDefault<z.ZodBoolean>;
236
+ allowInsecureBind: z.ZodDefault<z.ZodBoolean>;
237
+ authMode: z.ZodDefault<z.ZodEnum<{
238
+ none: "none";
239
+ token: "token";
240
+ }>>;
241
+ authToken: z.ZodDefault<z.ZodNullable<z.ZodString>>;
242
+ tls: z.ZodDefault<z.ZodObject<{
243
+ mode: z.ZodDefault<z.ZodEnum<{
244
+ off: "off";
245
+ files: "files";
246
+ "self-signed": "self-signed";
247
+ tailscale: "tailscale";
248
+ }>>;
249
+ certFile: z.ZodDefault<z.ZodNullable<z.ZodString>>;
250
+ keyFile: z.ZodDefault<z.ZodNullable<z.ZodString>>;
251
+ hostname: z.ZodDefault<z.ZodNullable<z.ZodString>>;
252
+ certDir: z.ZodDefault<z.ZodNullable<z.ZodString>>;
253
+ renewBeforeDays: z.ZodDefault<z.ZodNumber>;
254
+ }, z.core.$loose>>;
255
+ }, z.core.$loose>;
256
+ export type MutableBrainConfig = z.infer<typeof MutableBrainConfigSchema>;
257
+ export declare const MutableBrainTlsPatchSchema: z.ZodObject<{
258
+ mode: z.ZodOptional<z.ZodEnum<{
259
+ off: "off";
260
+ files: "files";
261
+ "self-signed": "self-signed";
262
+ tailscale: "tailscale";
263
+ }>>;
264
+ certFile: z.ZodOptional<z.ZodNullable<z.ZodString>>;
265
+ keyFile: z.ZodOptional<z.ZodNullable<z.ZodString>>;
266
+ hostname: z.ZodOptional<z.ZodNullable<z.ZodString>>;
267
+ certDir: z.ZodOptional<z.ZodNullable<z.ZodString>>;
268
+ renewBeforeDays: z.ZodOptional<z.ZodNumber>;
269
+ }, z.core.$loose>;
270
+ export declare const MutableBrainRemotePatchSchema: z.ZodObject<{
271
+ host: z.ZodOptional<z.ZodString>;
272
+ port: z.ZodOptional<z.ZodNumber>;
273
+ secure: z.ZodOptional<z.ZodBoolean>;
274
+ authToken: z.ZodOptional<z.ZodNullable<z.ZodString>>;
275
+ certFingerprint: z.ZodOptional<z.ZodNullable<z.ZodString>>;
276
+ }, z.core.$loose>;
277
+ export declare const MutableBrainListenPatchSchema: z.ZodObject<{
278
+ host: z.ZodOptional<z.ZodString>;
279
+ port: z.ZodOptional<z.ZodNumber>;
280
+ }, z.core.$loose>;
281
+ export declare const MutableBrainConfigPatchSchema: z.ZodObject<{
282
+ enabled: z.ZodOptional<z.ZodBoolean>;
283
+ autoStart: z.ZodOptional<z.ZodBoolean>;
284
+ mode: z.ZodOptional<z.ZodEnum<{
285
+ local: "local";
286
+ remote: "remote";
287
+ }>>;
288
+ remote: z.ZodOptional<z.ZodObject<{
289
+ host: z.ZodOptional<z.ZodString>;
290
+ port: z.ZodOptional<z.ZodNumber>;
291
+ secure: z.ZodOptional<z.ZodBoolean>;
292
+ authToken: z.ZodOptional<z.ZodNullable<z.ZodString>>;
293
+ certFingerprint: z.ZodOptional<z.ZodNullable<z.ZodString>>;
294
+ }, z.core.$loose>>;
295
+ listen: z.ZodOptional<z.ZodObject<{
296
+ host: z.ZodOptional<z.ZodString>;
297
+ port: z.ZodOptional<z.ZodNumber>;
298
+ }, z.core.$loose>>;
299
+ defaultModel: z.ZodOptional<z.ZodNullable<z.ZodString>>;
300
+ runtime: z.ZodOptional<z.ZodObject<{
301
+ source: z.ZodOptional<z.ZodEnum<{
302
+ auto: "auto";
303
+ managed: "managed";
304
+ lmstudio: "lmstudio";
305
+ }>>;
306
+ path: z.ZodOptional<z.ZodNullable<z.ZodString>>;
307
+ logVerbosity: z.ZodOptional<z.ZodNumber>;
308
+ }, z.core.$strip>>;
309
+ lockModel: z.ZodOptional<z.ZodBoolean>;
310
+ allowRemoteConfig: z.ZodOptional<z.ZodBoolean>;
311
+ allowInsecureBind: z.ZodOptional<z.ZodBoolean>;
312
+ authMode: z.ZodOptional<z.ZodEnum<{
313
+ none: "none";
314
+ token: "token";
315
+ }>>;
316
+ authToken: z.ZodOptional<z.ZodNullable<z.ZodString>>;
317
+ tls: z.ZodOptional<z.ZodObject<{
318
+ mode: z.ZodOptional<z.ZodEnum<{
319
+ off: "off";
320
+ files: "files";
321
+ "self-signed": "self-signed";
322
+ tailscale: "tailscale";
323
+ }>>;
324
+ certFile: z.ZodOptional<z.ZodNullable<z.ZodString>>;
325
+ keyFile: z.ZodOptional<z.ZodNullable<z.ZodString>>;
326
+ hostname: z.ZodOptional<z.ZodNullable<z.ZodString>>;
327
+ certDir: z.ZodOptional<z.ZodNullable<z.ZodString>>;
328
+ renewBeforeDays: z.ZodOptional<z.ZodNumber>;
329
+ }, z.core.$loose>>;
330
+ }, z.core.$loose>;
331
+ export declare const DEFAULT_MUTABLE_BRAIN_CONFIG: {
332
+ enabled: boolean;
333
+ autoStart: boolean;
334
+ mode: "local";
335
+ remote: {
336
+ host: string;
337
+ port: number;
338
+ secure: boolean;
339
+ authToken: null;
340
+ certFingerprint: null;
341
+ };
342
+ listen: {
343
+ host: string;
344
+ port: number;
345
+ };
346
+ defaultModel: null;
347
+ runtime: {
348
+ source: "auto";
349
+ path: null;
350
+ logVerbosity: number;
351
+ };
352
+ lockModel: boolean;
353
+ allowRemoteConfig: boolean;
354
+ allowInsecureBind: boolean;
355
+ authMode: "none";
356
+ authToken: null;
357
+ tls: {
358
+ mode: "off";
359
+ certFile: null;
360
+ keyFile: null;
361
+ hostname: null;
362
+ certDir: null;
363
+ renewBeforeDays: number;
364
+ };
365
+ };
366
+ export declare const GIT_FETCH_INTERVAL_SECONDS: readonly [60, 180, 300, 600, 900, 1800, 3600];
367
+ export declare const MutableGitFetchConfigSchema: z.ZodObject<{
368
+ enabled: z.ZodBoolean;
369
+ intervalSeconds: z.ZodUnion<readonly [z.ZodLiteral<60>, z.ZodLiteral<180>, z.ZodLiteral<300>, z.ZodLiteral<600>, z.ZodLiteral<900>, z.ZodLiteral<1800>, z.ZodLiteral<3600>]>;
370
+ }, z.core.$strip>;
371
+ export declare const DEFAULT_MUTABLE_GIT_FETCH_CONFIG: {
372
+ enabled: boolean;
373
+ intervalSeconds: number;
374
+ };
375
+ export type MutableLspConfig = z.infer<typeof MutableLspConfigSchema>;
376
+ export type MutableDotnetSolutionConfig = z.infer<typeof MutableDotnetSolutionConfigSchema>;
377
+ //# sourceMappingURL=daemon-config.d.ts.map