@otto-code/protocol 0.8.17 → 0.8.18
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/agent-types.d.ts +8 -0
- package/dist/daemon-config.d.ts +12 -0
- package/dist/daemon-config.js +14 -0
- package/dist/generated/validation/ws-outbound.aot.js +63449 -62917
- package/dist/messages.d.ts +651 -354
- package/dist/messages.js +63 -6
- package/dist/project-knowledge.d.ts +126 -0
- package/dist/project-knowledge.js +89 -0
- package/dist/provider-config.d.ts +71 -25
- package/dist/provider-config.js +166 -19
- package/dist/validation/ws-outbound-schema-metadata.d.ts +131 -44
- package/package.json +1 -1
package/dist/provider-config.js
CHANGED
|
@@ -39,6 +39,10 @@ export const ProviderProfileModelSchema = z.object({
|
|
|
39
39
|
* Otto tools natively (see the openai-compat provider) can be scoped to a subset
|
|
40
40
|
* of these groups; omitting the selection means all groups. Kept deliberately
|
|
41
41
|
* coarse - users pick groups, not individual tools.
|
|
42
|
+
*
|
|
43
|
+
* The list is APPEND-ONLY, and the wire never carries it as a closed enum (see
|
|
44
|
+
* normalizeOttoToolGroups): an older peer must be able to parse a newer peer's
|
|
45
|
+
* selection, dropping names it does not know rather than failing the message.
|
|
42
46
|
*/
|
|
43
47
|
export const OTTO_TOOL_GROUPS = [
|
|
44
48
|
"preview",
|
|
@@ -50,29 +54,165 @@ export const OTTO_TOOL_GROUPS = [
|
|
|
50
54
|
"artifacts",
|
|
51
55
|
"widgets",
|
|
52
56
|
"workspace",
|
|
57
|
+
// Split out of the "agents" catch-all, which had grown to hold 60% of the
|
|
58
|
+
// catalog and so could not be switched off for one reason without losing six
|
|
59
|
+
// unrelated capabilities with it.
|
|
60
|
+
"orchestration",
|
|
61
|
+
"knowledge",
|
|
62
|
+
"memory",
|
|
63
|
+
"permissions",
|
|
64
|
+
"providers",
|
|
65
|
+
"tasks",
|
|
66
|
+
"voice",
|
|
67
|
+
];
|
|
68
|
+
/**
|
|
69
|
+
* The taxonomy as it stood before the "agents" split. A stored selection that
|
|
70
|
+
* uses only these names predates the split and is migrated forward by
|
|
71
|
+
* expandLegacyOttoToolGroups.
|
|
72
|
+
*/
|
|
73
|
+
export const LEGACY_OTTO_TOOL_GROUPS = [
|
|
74
|
+
"preview",
|
|
75
|
+
"browser",
|
|
76
|
+
"web",
|
|
77
|
+
"agents",
|
|
78
|
+
"terminals",
|
|
79
|
+
"schedules",
|
|
80
|
+
"artifacts",
|
|
81
|
+
"widgets",
|
|
82
|
+
"workspace",
|
|
83
|
+
];
|
|
84
|
+
/**
|
|
85
|
+
* The categories carved out of the legacy "agents" catch-all. They inherit
|
|
86
|
+
* "agents" when a pre-split selection is migrated forward, and collapse back
|
|
87
|
+
* into it when a current selection is projected back for an older peer.
|
|
88
|
+
*/
|
|
89
|
+
export const AGENTS_DERIVED_TOOL_GROUPS = [
|
|
90
|
+
"orchestration",
|
|
91
|
+
"knowledge",
|
|
92
|
+
"memory",
|
|
93
|
+
"permissions",
|
|
94
|
+
"providers",
|
|
95
|
+
"tasks",
|
|
96
|
+
"voice",
|
|
97
|
+
];
|
|
98
|
+
const OTTO_TOOL_GROUP_SET = new Set(OTTO_TOOL_GROUPS);
|
|
99
|
+
const LEGACY_OTTO_TOOL_GROUP_SET = new Set(LEGACY_OTTO_TOOL_GROUPS);
|
|
100
|
+
const AGENTS_DERIVED_TOOL_GROUP_SET = new Set(AGENTS_DERIVED_TOOL_GROUPS);
|
|
101
|
+
export function isOttoToolGroup(value) {
|
|
102
|
+
return typeof value === "string" && OTTO_TOOL_GROUP_SET.has(value);
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Post-validation normalization for a stored or wire-carried group selection.
|
|
106
|
+
* The schemas that carry it are `string[]` on purpose - wire schemas are pure
|
|
107
|
+
* structural declarations - and this is the one place unknown names are
|
|
108
|
+
* dropped, so a group added by a newer peer degrades to "not selected" instead
|
|
109
|
+
* of failing the whole message.
|
|
110
|
+
*
|
|
111
|
+
* Returns undefined for a non-array, which every caller reads as "all groups".
|
|
112
|
+
*/
|
|
113
|
+
export function normalizeOttoToolGroups(value) {
|
|
114
|
+
if (!Array.isArray(value)) {
|
|
115
|
+
return undefined;
|
|
116
|
+
}
|
|
117
|
+
const seen = new Set(value.filter(isOttoToolGroup));
|
|
118
|
+
return OTTO_TOOL_GROUPS.filter((group) => seen.has(group));
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Migrate a pre-split selection forward: every category carved out of "agents"
|
|
122
|
+
* inherits whatever "agents" was set to. Without this, upgrading would silently
|
|
123
|
+
* strip project knowledge, orchestration, memory, permissions, provider lookups,
|
|
124
|
+
* tasks and voice from anyone who had ever touched a tool toggle.
|
|
125
|
+
*/
|
|
126
|
+
export function expandLegacyOttoToolGroups(groups) {
|
|
127
|
+
const selected = new Set(groups.filter((group) => LEGACY_OTTO_TOOL_GROUP_SET.has(group)));
|
|
128
|
+
if (selected.has("agents")) {
|
|
129
|
+
for (const derived of AGENTS_DERIVED_TOOL_GROUPS) {
|
|
130
|
+
selected.add(derived);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return OTTO_TOOL_GROUPS.filter((group) => selected.has(group));
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Project a current selection back into the pre-split taxonomy for the legacy
|
|
137
|
+
* key we keep writing. "agents" stands in for the whole family, so a peer that
|
|
138
|
+
* predates the split still grants the tools the user left enabled rather than
|
|
139
|
+
* withholding them.
|
|
140
|
+
*/
|
|
141
|
+
export function toLegacyOttoToolGroups(groups) {
|
|
142
|
+
const selected = new Set(groups.filter((group) => LEGACY_OTTO_TOOL_GROUP_SET.has(group)));
|
|
143
|
+
if (groups.some((group) => AGENTS_DERIVED_TOOL_GROUP_SET.has(group))) {
|
|
144
|
+
selected.add("agents");
|
|
145
|
+
}
|
|
146
|
+
return LEGACY_OTTO_TOOL_GROUPS.filter((group) => selected.has(group));
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Read a persisted selection that may be in either taxonomy.
|
|
150
|
+
*
|
|
151
|
+
* COMPAT(ottoToolGroupsV2): added in v0.8.20. The v2 key wins when present; the
|
|
152
|
+
* legacy key is migrated forward otherwise. A second key rather than a
|
|
153
|
+
* heuristic, because the two shapes are genuinely ambiguous - "no new groups
|
|
154
|
+
* listed" reads as "pre-split config" one way and "the user turned all seven
|
|
155
|
+
* off" the other, and silently re-enabling tools somebody disabled is the worse
|
|
156
|
+
* way to be wrong. Drop the legacy branch when the floor is >= v0.8.20.
|
|
157
|
+
*/
|
|
158
|
+
export function resolveStoredOttoToolGroups(input) {
|
|
159
|
+
const v2 = normalizeOttoToolGroups(input.v2);
|
|
160
|
+
if (v2) {
|
|
161
|
+
return v2;
|
|
162
|
+
}
|
|
163
|
+
const legacy = normalizeOttoToolGroups(input.legacy);
|
|
164
|
+
return legacy ? expandLegacyOttoToolGroups(legacy) : undefined;
|
|
165
|
+
}
|
|
166
|
+
/** Both persisted shapes for one selection: the current key and its legacy projection. */
|
|
167
|
+
export function serializeOttoToolGroups(groups) {
|
|
168
|
+
const normalized = OTTO_TOOL_GROUPS.filter((group) => groups.includes(group));
|
|
169
|
+
return { toolGroups: toLegacyOttoToolGroups(normalized), toolGroupsV2: normalized };
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Ordered: the first matching rule wins, so a name that could satisfy two rules
|
|
173
|
+
* resolves the same way every time. Prefer a shared substring over an exact-name
|
|
174
|
+
* list, so a tool added later lands in its category without a second edit here.
|
|
175
|
+
*/
|
|
176
|
+
const OTTO_TOOL_GROUP_RULES = [
|
|
177
|
+
{ group: "preview", prefixes: ["preview_"] },
|
|
178
|
+
{ group: "browser", prefixes: ["browser_"] },
|
|
179
|
+
{ group: "web", names: ["web_search", "web_fetch"] },
|
|
180
|
+
{ group: "terminals", contains: ["terminal"] },
|
|
181
|
+
// "heartbeat" rather than just create_heartbeat: delete_heartbeat used to fall
|
|
182
|
+
// through to the catch-all, so switching Schedules off left an agent able to
|
|
183
|
+
// delete heartbeats it could no longer create.
|
|
184
|
+
{ group: "schedules", contains: ["schedule", "heartbeat"] },
|
|
185
|
+
{ group: "artifacts", contains: ["artifact"] },
|
|
186
|
+
{ group: "widgets", names: ["show_widget", "widget_contract"] },
|
|
187
|
+
{ group: "workspace", contains: ["worktree", "workspace"] },
|
|
188
|
+
{ group: "orchestration", contains: ["orchestration"] },
|
|
189
|
+
{ group: "knowledge", contains: ["project_"] },
|
|
190
|
+
{ group: "memory", contains: ["lesson"] },
|
|
191
|
+
{ group: "permissions", contains: ["permission"] },
|
|
192
|
+
{ group: "tasks", contains: ["task"] },
|
|
193
|
+
// "model" must stay below the rules above it: it is one character from
|
|
194
|
+
// matching set_chat_mode, which belongs to the chat family.
|
|
195
|
+
{ group: "providers", contains: ["provider", "model"] },
|
|
196
|
+
{ group: "voice", names: ["speak"] },
|
|
53
197
|
];
|
|
54
198
|
/**
|
|
55
199
|
* Map a tool name to its group. Covers both Otto's catalog tools and the
|
|
56
|
-
* openai-compat builtin web tools (web_search/web_fetch → "web").
|
|
57
|
-
*
|
|
200
|
+
* openai-compat builtin web tools (web_search/web_fetch → "web").
|
|
201
|
+
*
|
|
202
|
+
* "agents" is still the fallback, but it now means what it says - spawning and
|
|
203
|
+
* steering chats - instead of "everything not otherwise classified". It used to
|
|
204
|
+
* collect 43 of the catalog's 72 tools, which made it impossible to switch off
|
|
205
|
+
* one capability without losing six unrelated ones.
|
|
58
206
|
*/
|
|
59
207
|
export function ottoToolGroupForName(name) {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
if (name.includes("schedule") || name === "create_heartbeat")
|
|
69
|
-
return "schedules";
|
|
70
|
-
if (name.includes("artifact"))
|
|
71
|
-
return "artifacts";
|
|
72
|
-
if (name === "show_widget" || name === "widget_contract")
|
|
73
|
-
return "widgets";
|
|
74
|
-
if (name.includes("worktree") || name.includes("workspace"))
|
|
75
|
-
return "workspace";
|
|
208
|
+
for (const rule of OTTO_TOOL_GROUP_RULES) {
|
|
209
|
+
if (rule.prefixes?.some((prefix) => name.startsWith(prefix)))
|
|
210
|
+
return rule.group;
|
|
211
|
+
if (rule.names?.includes(name))
|
|
212
|
+
return rule.group;
|
|
213
|
+
if (rule.contains?.some((fragment) => name.includes(fragment)))
|
|
214
|
+
return rule.group;
|
|
215
|
+
}
|
|
76
216
|
return "agents";
|
|
77
217
|
}
|
|
78
218
|
const McpStdioServerConfigSchema = z.object({
|
|
@@ -339,8 +479,15 @@ export const ProviderOverrideSchema = z.object({
|
|
|
339
479
|
/**
|
|
340
480
|
* Which Otto tool groups to inject for this provider (natively-injected
|
|
341
481
|
* providers only). Omitted = all groups. Empty array = no Otto tools.
|
|
482
|
+
*
|
|
483
|
+
* COMPAT(ottoToolGroupsV2): added in v0.8.20. `ottoToolGroups` is the legacy
|
|
484
|
+
* projection kept for older peers; `ottoToolGroupsV2` is authoritative. Both
|
|
485
|
+
* are `string[]` rather than an enum so an older peer drops group names it
|
|
486
|
+
* does not know instead of failing to parse the provider entry - read them
|
|
487
|
+
* through resolveStoredOttoToolGroups, never directly.
|
|
342
488
|
*/
|
|
343
|
-
ottoToolGroups: z.array(z.
|
|
489
|
+
ottoToolGroups: z.array(z.string().min(1)).optional(),
|
|
490
|
+
ottoToolGroupsV2: z.array(z.string().min(1)).optional(),
|
|
344
491
|
/**
|
|
345
492
|
* MCP servers for providers whose tool loop the daemon hosts (openai-compat).
|
|
346
493
|
* Merged with any per-agent AgentSessionConfig.mcpServers; the per-agent
|
|
@@ -1414,6 +1414,10 @@ export declare const WSOutboundMessageSchema: {
|
|
|
1414
1414
|
}>;
|
|
1415
1415
|
boardId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
1416
1416
|
}, import("zod/v4/core").$loose>>>;
|
|
1417
|
+
projectKnowledgeLocation: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodEnum<{
|
|
1418
|
+
repository: "repository";
|
|
1419
|
+
host: "host";
|
|
1420
|
+
}>>>;
|
|
1417
1421
|
projectCustomIconRevision: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
1418
1422
|
projectRootPath: import("zod").ZodString;
|
|
1419
1423
|
projectKind: import("zod").ZodEnum<{
|
|
@@ -1440,6 +1444,10 @@ export declare const WSOutboundMessageSchema: {
|
|
|
1440
1444
|
}>;
|
|
1441
1445
|
boardId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
1442
1446
|
}, import("zod/v4/core").$loose>>>;
|
|
1447
|
+
projectKnowledgeLocation: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodEnum<{
|
|
1448
|
+
repository: "repository";
|
|
1449
|
+
host: "host";
|
|
1450
|
+
}>>>;
|
|
1443
1451
|
projectCustomIconRevision: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
1444
1452
|
projectRootPath: import("zod").ZodString;
|
|
1445
1453
|
projectKind: import("zod").ZodEnum<{
|
|
@@ -1468,6 +1476,10 @@ export declare const WSOutboundMessageSchema: {
|
|
|
1468
1476
|
}>;
|
|
1469
1477
|
boardId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
1470
1478
|
}, import("zod/v4/core").$loose>>>;
|
|
1479
|
+
projectKnowledgeLocation: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodEnum<{
|
|
1480
|
+
repository: "repository";
|
|
1481
|
+
host: "host";
|
|
1482
|
+
}>>>;
|
|
1471
1483
|
projectCustomIconRevision: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
1472
1484
|
projectRootPath: import("zod").ZodString;
|
|
1473
1485
|
projectKind: import("zod").ZodEnum<{
|
|
@@ -2717,6 +2729,10 @@ export declare const WSOutboundMessageSchema: {
|
|
|
2717
2729
|
}>;
|
|
2718
2730
|
boardId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
2719
2731
|
}, import("zod/v4/core").$loose>>>;
|
|
2732
|
+
projectKnowledgeLocation: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodEnum<{
|
|
2733
|
+
repository: "repository";
|
|
2734
|
+
host: "host";
|
|
2735
|
+
}>>>;
|
|
2720
2736
|
projectCustomIconRevision: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
2721
2737
|
projectRootPath: import("zod").ZodString;
|
|
2722
2738
|
projectKind: import("zod").ZodEnum<{
|
|
@@ -2747,6 +2763,10 @@ export declare const WSOutboundMessageSchema: {
|
|
|
2747
2763
|
}>;
|
|
2748
2764
|
boardId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
2749
2765
|
}, import("zod/v4/core").$loose>>>;
|
|
2766
|
+
projectKnowledgeLocation: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodEnum<{
|
|
2767
|
+
repository: "repository";
|
|
2768
|
+
host: "host";
|
|
2769
|
+
}>>>;
|
|
2750
2770
|
projectCustomIconRevision: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
2751
2771
|
projectRootPath: import("zod").ZodString;
|
|
2752
2772
|
projectKind: import("zod").ZodEnum<{
|
|
@@ -2776,6 +2796,10 @@ export declare const WSOutboundMessageSchema: {
|
|
|
2776
2796
|
}>;
|
|
2777
2797
|
boardId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
2778
2798
|
}, import("zod/v4/core").$loose>>>;
|
|
2799
|
+
projectKnowledgeLocation: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodEnum<{
|
|
2800
|
+
repository: "repository";
|
|
2801
|
+
host: "host";
|
|
2802
|
+
}>>>;
|
|
2779
2803
|
projectCustomIconRevision: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
2780
2804
|
projectRootPath: import("zod").ZodString;
|
|
2781
2805
|
projectKind: import("zod").ZodEnum<{
|
|
@@ -2839,6 +2863,10 @@ export declare const WSOutboundMessageSchema: {
|
|
|
2839
2863
|
}>;
|
|
2840
2864
|
boardId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
2841
2865
|
}, import("zod/v4/core").$loose>>>;
|
|
2866
|
+
projectKnowledgeLocation: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodEnum<{
|
|
2867
|
+
repository: "repository";
|
|
2868
|
+
host: "host";
|
|
2869
|
+
}>>>;
|
|
2842
2870
|
projectCustomIconRevision: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
2843
2871
|
projectRootPath: import("zod").ZodString;
|
|
2844
2872
|
projectKind: import("zod").ZodEnum<{
|
|
@@ -3422,6 +3450,10 @@ export declare const WSOutboundMessageSchema: {
|
|
|
3422
3450
|
}>;
|
|
3423
3451
|
boardId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
3424
3452
|
}, import("zod/v4/core").$loose>>>;
|
|
3453
|
+
projectKnowledgeLocation: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodEnum<{
|
|
3454
|
+
repository: "repository";
|
|
3455
|
+
host: "host";
|
|
3456
|
+
}>>>;
|
|
3425
3457
|
projectCustomIconRevision: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
3426
3458
|
projectRootPath: import("zod").ZodString;
|
|
3427
3459
|
projectKind: import("zod").ZodEnum<{
|
|
@@ -5570,17 +5602,8 @@ export declare const WSOutboundMessageSchema: {
|
|
|
5570
5602
|
}, import("zod/v4/core").$loose>>;
|
|
5571
5603
|
mcp: import("zod").ZodObject<{
|
|
5572
5604
|
injectIntoAgents: import("zod").ZodBoolean;
|
|
5573
|
-
toolGroups: import("zod").ZodOptional<import("zod").ZodArray<import("zod").
|
|
5574
|
-
|
|
5575
|
-
browser: "browser";
|
|
5576
|
-
web: "web";
|
|
5577
|
-
agents: "agents";
|
|
5578
|
-
terminals: "terminals";
|
|
5579
|
-
schedules: "schedules";
|
|
5580
|
-
artifacts: "artifacts";
|
|
5581
|
-
widgets: "widgets";
|
|
5582
|
-
workspace: "workspace";
|
|
5583
|
-
}>>>;
|
|
5605
|
+
toolGroups: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
|
|
5606
|
+
toolGroupsV2: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
|
|
5584
5607
|
}, import("zod/v4/core").$loose>;
|
|
5585
5608
|
browserTools: import("zod").ZodDefault<import("zod").ZodObject<{
|
|
5586
5609
|
enabled: import("zod").ZodDefault<import("zod").ZodBoolean>;
|
|
@@ -5601,17 +5624,8 @@ export declare const WSOutboundMessageSchema: {
|
|
|
5601
5624
|
description: import("zod").ZodOptional<import("zod").ZodString>;
|
|
5602
5625
|
isDefault: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
5603
5626
|
}, import("zod/v4/core").$loose>>>;
|
|
5604
|
-
ottoToolGroups: import("zod").ZodOptional<import("zod").ZodArray<import("zod").
|
|
5605
|
-
|
|
5606
|
-
browser: "browser";
|
|
5607
|
-
web: "web";
|
|
5608
|
-
agents: "agents";
|
|
5609
|
-
terminals: "terminals";
|
|
5610
|
-
schedules: "schedules";
|
|
5611
|
-
artifacts: "artifacts";
|
|
5612
|
-
widgets: "widgets";
|
|
5613
|
-
workspace: "workspace";
|
|
5614
|
-
}>>>;
|
|
5627
|
+
ottoToolGroups: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
|
|
5628
|
+
ottoToolGroupsV2: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
|
|
5615
5629
|
}, import("zod/v4/core").$loose>>>;
|
|
5616
5630
|
metadataGeneration: import("zod").ZodDefault<import("zod").ZodObject<{
|
|
5617
5631
|
providers: import("zod").ZodDefault<import("zod").ZodArray<import("zod").ZodObject<{
|
|
@@ -5739,6 +5753,11 @@ export declare const WSOutboundMessageSchema: {
|
|
|
5739
5753
|
modelId: import("zod").ZodString;
|
|
5740
5754
|
tier: import("zod").ZodType<import("../agent-types.js").ModelTier, unknown, import("zod/v4/core").$ZodTypeInternals<import("../agent-types.js").ModelTier, unknown>>;
|
|
5741
5755
|
}, import("zod/v4/core").$loose>>>;
|
|
5756
|
+
modelVisibilityOverrides: import("zod").ZodDefault<import("zod").ZodArray<import("zod").ZodObject<{
|
|
5757
|
+
provider: import("zod").ZodString;
|
|
5758
|
+
modelId: import("zod").ZodString;
|
|
5759
|
+
visible: import("zod").ZodBoolean;
|
|
5760
|
+
}, import("zod/v4/core").$loose>>>;
|
|
5742
5761
|
savedProviderEndpoints: import("zod").ZodDefault<import("zod").ZodArray<import("zod").ZodObject<{
|
|
5743
5762
|
id: import("zod").ZodString;
|
|
5744
5763
|
baseUrlKey: import("zod").ZodString;
|
|
@@ -5870,6 +5889,12 @@ export declare const WSOutboundMessageSchema: {
|
|
|
5870
5889
|
}, import("zod/v4/core").$loose>;
|
|
5871
5890
|
}, import("zod/v4/core").$loose>>;
|
|
5872
5891
|
}, import("zod/v4/core").$loose>>;
|
|
5892
|
+
projectKnowledge: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
5893
|
+
defaultStoreLocation: import("zod").ZodDefault<import("zod").ZodEnum<{
|
|
5894
|
+
repository: "repository";
|
|
5895
|
+
host: "host";
|
|
5896
|
+
}>>;
|
|
5897
|
+
}, import("zod/v4/core").$loose>>;
|
|
5873
5898
|
agentProfiles: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
|
|
5874
5899
|
id: import("zod").ZodString;
|
|
5875
5900
|
name: import("zod").ZodString;
|
|
@@ -5914,17 +5939,8 @@ export declare const WSOutboundMessageSchema: {
|
|
|
5914
5939
|
}, import("zod/v4/core").$loose>>;
|
|
5915
5940
|
mcp: import("zod").ZodObject<{
|
|
5916
5941
|
injectIntoAgents: import("zod").ZodBoolean;
|
|
5917
|
-
toolGroups: import("zod").ZodOptional<import("zod").ZodArray<import("zod").
|
|
5918
|
-
|
|
5919
|
-
browser: "browser";
|
|
5920
|
-
web: "web";
|
|
5921
|
-
agents: "agents";
|
|
5922
|
-
terminals: "terminals";
|
|
5923
|
-
schedules: "schedules";
|
|
5924
|
-
artifacts: "artifacts";
|
|
5925
|
-
widgets: "widgets";
|
|
5926
|
-
workspace: "workspace";
|
|
5927
|
-
}>>>;
|
|
5942
|
+
toolGroups: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
|
|
5943
|
+
toolGroupsV2: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
|
|
5928
5944
|
}, import("zod/v4/core").$loose>;
|
|
5929
5945
|
browserTools: import("zod").ZodDefault<import("zod").ZodObject<{
|
|
5930
5946
|
enabled: import("zod").ZodDefault<import("zod").ZodBoolean>;
|
|
@@ -5945,17 +5961,8 @@ export declare const WSOutboundMessageSchema: {
|
|
|
5945
5961
|
description: import("zod").ZodOptional<import("zod").ZodString>;
|
|
5946
5962
|
isDefault: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
5947
5963
|
}, import("zod/v4/core").$loose>>>;
|
|
5948
|
-
ottoToolGroups: import("zod").ZodOptional<import("zod").ZodArray<import("zod").
|
|
5949
|
-
|
|
5950
|
-
browser: "browser";
|
|
5951
|
-
web: "web";
|
|
5952
|
-
agents: "agents";
|
|
5953
|
-
terminals: "terminals";
|
|
5954
|
-
schedules: "schedules";
|
|
5955
|
-
artifacts: "artifacts";
|
|
5956
|
-
widgets: "widgets";
|
|
5957
|
-
workspace: "workspace";
|
|
5958
|
-
}>>>;
|
|
5964
|
+
ottoToolGroups: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
|
|
5965
|
+
ottoToolGroupsV2: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
|
|
5959
5966
|
}, import("zod/v4/core").$loose>>>;
|
|
5960
5967
|
metadataGeneration: import("zod").ZodDefault<import("zod").ZodObject<{
|
|
5961
5968
|
providers: import("zod").ZodDefault<import("zod").ZodArray<import("zod").ZodObject<{
|
|
@@ -6083,6 +6090,11 @@ export declare const WSOutboundMessageSchema: {
|
|
|
6083
6090
|
modelId: import("zod").ZodString;
|
|
6084
6091
|
tier: import("zod").ZodType<import("../agent-types.js").ModelTier, unknown, import("zod/v4/core").$ZodTypeInternals<import("../agent-types.js").ModelTier, unknown>>;
|
|
6085
6092
|
}, import("zod/v4/core").$loose>>>;
|
|
6093
|
+
modelVisibilityOverrides: import("zod").ZodDefault<import("zod").ZodArray<import("zod").ZodObject<{
|
|
6094
|
+
provider: import("zod").ZodString;
|
|
6095
|
+
modelId: import("zod").ZodString;
|
|
6096
|
+
visible: import("zod").ZodBoolean;
|
|
6097
|
+
}, import("zod/v4/core").$loose>>>;
|
|
6086
6098
|
savedProviderEndpoints: import("zod").ZodDefault<import("zod").ZodArray<import("zod").ZodObject<{
|
|
6087
6099
|
id: import("zod").ZodString;
|
|
6088
6100
|
baseUrlKey: import("zod").ZodString;
|
|
@@ -6214,6 +6226,12 @@ export declare const WSOutboundMessageSchema: {
|
|
|
6214
6226
|
}, import("zod/v4/core").$loose>;
|
|
6215
6227
|
}, import("zod/v4/core").$loose>>;
|
|
6216
6228
|
}, import("zod/v4/core").$loose>>;
|
|
6229
|
+
projectKnowledge: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
6230
|
+
defaultStoreLocation: import("zod").ZodDefault<import("zod").ZodEnum<{
|
|
6231
|
+
repository: "repository";
|
|
6232
|
+
host: "host";
|
|
6233
|
+
}>>;
|
|
6234
|
+
}, import("zod/v4/core").$loose>>;
|
|
6217
6235
|
agentProfiles: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
|
|
6218
6236
|
id: import("zod").ZodString;
|
|
6219
6237
|
name: import("zod").ZodString;
|
|
@@ -7590,6 +7608,10 @@ export declare const WSOutboundMessageSchema: {
|
|
|
7590
7608
|
}>;
|
|
7591
7609
|
boardId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
7592
7610
|
}, import("zod/v4/core").$loose>>>;
|
|
7611
|
+
projectKnowledgeLocation: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodEnum<{
|
|
7612
|
+
repository: "repository";
|
|
7613
|
+
host: "host";
|
|
7614
|
+
}>>>;
|
|
7593
7615
|
projectCustomIconRevision: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
7594
7616
|
projectRootPath: import("zod").ZodString;
|
|
7595
7617
|
projectKind: import("zod").ZodEnum<{
|
|
@@ -12729,6 +12751,7 @@ export declare const WSOutboundMessageSchema: {
|
|
|
12729
12751
|
}, import("zod/v4/core").$strip>>>;
|
|
12730
12752
|
defaultThinkingOptionId: import("zod").ZodOptional<import("zod").ZodString>;
|
|
12731
12753
|
tier: import("zod").ZodOptional<import("zod").ZodType<import("../agent-types.js").ModelTier, unknown, import("zod/v4/core").$ZodTypeInternals<import("../agent-types.js").ModelTier, unknown>>>;
|
|
12754
|
+
isVisible: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
12732
12755
|
supportsAutoMode: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
12733
12756
|
}, import("zod/v4/core").$strip>>>;
|
|
12734
12757
|
error: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
@@ -12823,6 +12846,7 @@ export declare const WSOutboundMessageSchema: {
|
|
|
12823
12846
|
}, import("zod/v4/core").$strip>>>;
|
|
12824
12847
|
defaultThinkingOptionId: import("zod").ZodOptional<import("zod").ZodString>;
|
|
12825
12848
|
tier: import("zod").ZodOptional<import("zod").ZodType<import("../agent-types.js").ModelTier, unknown, import("zod/v4/core").$ZodTypeInternals<import("../agent-types.js").ModelTier, unknown>>>;
|
|
12849
|
+
isVisible: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
12826
12850
|
supportsAutoMode: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
12827
12851
|
}, import("zod/v4/core").$strip>>>;
|
|
12828
12852
|
modes: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodType<import("../agent-types.js").AgentMode, unknown, import("zod/v4/core").$ZodTypeInternals<import("../agent-types.js").AgentMode, unknown>>>>;
|
|
@@ -12858,6 +12882,7 @@ export declare const WSOutboundMessageSchema: {
|
|
|
12858
12882
|
isSelectable: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
12859
12883
|
contextWindowMaxTokens: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
12860
12884
|
defaultThinkingOptionId: import("zod").ZodOptional<import("zod").ZodString>;
|
|
12885
|
+
isVisible: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
12861
12886
|
supportsAutoMode: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
12862
12887
|
thinkingSet: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
12863
12888
|
}, import("zod/v4/core").$strip>>>;
|
|
@@ -12913,6 +12938,7 @@ export declare const WSOutboundMessageSchema: {
|
|
|
12913
12938
|
}, import("zod/v4/core").$strip>>>;
|
|
12914
12939
|
defaultThinkingOptionId: import("zod").ZodOptional<import("zod").ZodString>;
|
|
12915
12940
|
tier: import("zod").ZodOptional<import("zod").ZodType<import("../agent-types.js").ModelTier, unknown, import("zod/v4/core").$ZodTypeInternals<import("../agent-types.js").ModelTier, unknown>>>;
|
|
12941
|
+
isVisible: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
12916
12942
|
supportsAutoMode: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
12917
12943
|
}, import("zod/v4/core").$strip>>>;
|
|
12918
12944
|
modes: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodType<import("../agent-types.js").AgentMode, unknown, import("zod/v4/core").$ZodTypeInternals<import("../agent-types.js").AgentMode, unknown>>>>;
|
|
@@ -12948,6 +12974,7 @@ export declare const WSOutboundMessageSchema: {
|
|
|
12948
12974
|
isSelectable: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
12949
12975
|
contextWindowMaxTokens: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
12950
12976
|
defaultThinkingOptionId: import("zod").ZodOptional<import("zod").ZodString>;
|
|
12977
|
+
isVisible: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
12951
12978
|
supportsAutoMode: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
12952
12979
|
thinkingSet: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
12953
12980
|
}, import("zod/v4/core").$strip>>>;
|
|
@@ -13417,11 +13444,13 @@ export declare const WSOutboundMessageSchema: {
|
|
|
13417
13444
|
affects: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
|
|
13418
13445
|
}, import("zod/v4/core").$strip>>>;
|
|
13419
13446
|
path: import("zod").ZodOptional<import("zod").ZodString>;
|
|
13447
|
+
absolutePath: import("zod").ZodOptional<import("zod").ZodString>;
|
|
13420
13448
|
}, import("zod/v4/core").$strip>>;
|
|
13421
13449
|
rootPages: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
|
|
13422
13450
|
slug: import("zod").ZodString;
|
|
13423
13451
|
title: import("zod").ZodString;
|
|
13424
13452
|
path: import("zod").ZodString;
|
|
13453
|
+
absolutePath: import("zod").ZodOptional<import("zod").ZodString>;
|
|
13425
13454
|
body: import("zod").ZodString;
|
|
13426
13455
|
}, import("zod/v4/core").$strip>>>;
|
|
13427
13456
|
findings: import("zod").ZodArray<import("zod").ZodObject<{
|
|
@@ -13502,6 +13531,7 @@ export declare const WSOutboundMessageSchema: {
|
|
|
13502
13531
|
affects: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
|
|
13503
13532
|
}, import("zod/v4/core").$strip>>>;
|
|
13504
13533
|
path: import("zod").ZodOptional<import("zod").ZodString>;
|
|
13534
|
+
absolutePath: import("zod").ZodOptional<import("zod").ZodString>;
|
|
13505
13535
|
}, import("zod/v4/core").$strip>>;
|
|
13506
13536
|
}, import("zod/v4/core").$strip>;
|
|
13507
13537
|
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
@@ -13562,6 +13592,7 @@ export declare const WSOutboundMessageSchema: {
|
|
|
13562
13592
|
affects: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
|
|
13563
13593
|
}, import("zod/v4/core").$strip>>>;
|
|
13564
13594
|
path: import("zod").ZodOptional<import("zod").ZodString>;
|
|
13595
|
+
absolutePath: import("zod").ZodOptional<import("zod").ZodString>;
|
|
13565
13596
|
}, import("zod/v4/core").$strip>;
|
|
13566
13597
|
}, import("zod/v4/core").$strip>;
|
|
13567
13598
|
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
@@ -13622,6 +13653,7 @@ export declare const WSOutboundMessageSchema: {
|
|
|
13622
13653
|
affects: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
|
|
13623
13654
|
}, import("zod/v4/core").$strip>>>;
|
|
13624
13655
|
path: import("zod").ZodOptional<import("zod").ZodString>;
|
|
13656
|
+
absolutePath: import("zod").ZodOptional<import("zod").ZodString>;
|
|
13625
13657
|
}, import("zod/v4/core").$strip>>;
|
|
13626
13658
|
error: import("zod").ZodOptional<import("zod").ZodString>;
|
|
13627
13659
|
}, import("zod/v4/core").$strip>;
|
|
@@ -13683,6 +13715,7 @@ export declare const WSOutboundMessageSchema: {
|
|
|
13683
13715
|
affects: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
|
|
13684
13716
|
}, import("zod/v4/core").$strip>>>;
|
|
13685
13717
|
path: import("zod").ZodOptional<import("zod").ZodString>;
|
|
13718
|
+
absolutePath: import("zod").ZodOptional<import("zod").ZodString>;
|
|
13686
13719
|
}, import("zod/v4/core").$strip>>;
|
|
13687
13720
|
}, import("zod/v4/core").$strip>;
|
|
13688
13721
|
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
@@ -13743,6 +13776,7 @@ export declare const WSOutboundMessageSchema: {
|
|
|
13743
13776
|
affects: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
|
|
13744
13777
|
}, import("zod/v4/core").$strip>>>;
|
|
13745
13778
|
path: import("zod").ZodOptional<import("zod").ZodString>;
|
|
13779
|
+
absolutePath: import("zod").ZodOptional<import("zod").ZodString>;
|
|
13746
13780
|
}, import("zod/v4/core").$strip>>;
|
|
13747
13781
|
error: import("zod").ZodOptional<import("zod").ZodString>;
|
|
13748
13782
|
}, import("zod/v4/core").$strip>;
|
|
@@ -13804,6 +13838,7 @@ export declare const WSOutboundMessageSchema: {
|
|
|
13804
13838
|
affects: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
|
|
13805
13839
|
}, import("zod/v4/core").$strip>>>;
|
|
13806
13840
|
path: import("zod").ZodOptional<import("zod").ZodString>;
|
|
13841
|
+
absolutePath: import("zod").ZodOptional<import("zod").ZodString>;
|
|
13807
13842
|
}, import("zod/v4/core").$strip>>;
|
|
13808
13843
|
error: import("zod").ZodOptional<import("zod").ZodString>;
|
|
13809
13844
|
}, import("zod/v4/core").$strip>;
|
|
@@ -13815,6 +13850,7 @@ export declare const WSOutboundMessageSchema: {
|
|
|
13815
13850
|
slug: import("zod").ZodString;
|
|
13816
13851
|
title: import("zod").ZodString;
|
|
13817
13852
|
path: import("zod").ZodString;
|
|
13853
|
+
absolutePath: import("zod").ZodOptional<import("zod").ZodString>;
|
|
13818
13854
|
body: import("zod").ZodString;
|
|
13819
13855
|
}, import("zod/v4/core").$strip>>;
|
|
13820
13856
|
}, import("zod/v4/core").$strip>;
|
|
@@ -13825,6 +13861,57 @@ export declare const WSOutboundMessageSchema: {
|
|
|
13825
13861
|
deleted: import("zod").ZodBoolean;
|
|
13826
13862
|
error: import("zod").ZodOptional<import("zod").ZodString>;
|
|
13827
13863
|
}, import("zod/v4/core").$strip>;
|
|
13864
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
13865
|
+
type: import("zod").ZodLiteral<"project.knowledge.store.get.response">;
|
|
13866
|
+
payload: import("zod").ZodObject<{
|
|
13867
|
+
requestId: import("zod").ZodString;
|
|
13868
|
+
store: import("zod").ZodNullable<import("zod").ZodObject<{
|
|
13869
|
+
location: import("zod").ZodEnum<{
|
|
13870
|
+
repository: "repository";
|
|
13871
|
+
host: "host";
|
|
13872
|
+
}>;
|
|
13873
|
+
override: import("zod").ZodNullable<import("zod").ZodEnum<{
|
|
13874
|
+
repository: "repository";
|
|
13875
|
+
host: "host";
|
|
13876
|
+
}>>;
|
|
13877
|
+
hostDefault: import("zod").ZodEnum<{
|
|
13878
|
+
repository: "repository";
|
|
13879
|
+
host: "host";
|
|
13880
|
+
}>;
|
|
13881
|
+
basePath: import("zod").ZodString;
|
|
13882
|
+
projectId: import("zod").ZodNullable<import("zod").ZodString>;
|
|
13883
|
+
hasPages: import("zod").ZodBoolean;
|
|
13884
|
+
otherLocationHasPages: import("zod").ZodBoolean;
|
|
13885
|
+
}, import("zod/v4/core").$strip>>;
|
|
13886
|
+
error: import("zod").ZodNullable<import("zod").ZodString>;
|
|
13887
|
+
}, import("zod/v4/core").$strip>;
|
|
13888
|
+
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
13889
|
+
type: import("zod").ZodLiteral<"project.knowledge.store.set.response">;
|
|
13890
|
+
payload: import("zod").ZodObject<{
|
|
13891
|
+
requestId: import("zod").ZodString;
|
|
13892
|
+
projectId: import("zod").ZodString;
|
|
13893
|
+
accepted: import("zod").ZodBoolean;
|
|
13894
|
+
store: import("zod").ZodNullable<import("zod").ZodObject<{
|
|
13895
|
+
location: import("zod").ZodEnum<{
|
|
13896
|
+
repository: "repository";
|
|
13897
|
+
host: "host";
|
|
13898
|
+
}>;
|
|
13899
|
+
override: import("zod").ZodNullable<import("zod").ZodEnum<{
|
|
13900
|
+
repository: "repository";
|
|
13901
|
+
host: "host";
|
|
13902
|
+
}>>;
|
|
13903
|
+
hostDefault: import("zod").ZodEnum<{
|
|
13904
|
+
repository: "repository";
|
|
13905
|
+
host: "host";
|
|
13906
|
+
}>;
|
|
13907
|
+
basePath: import("zod").ZodString;
|
|
13908
|
+
projectId: import("zod").ZodNullable<import("zod").ZodString>;
|
|
13909
|
+
hasPages: import("zod").ZodBoolean;
|
|
13910
|
+
otherLocationHasPages: import("zod").ZodBoolean;
|
|
13911
|
+
}, import("zod/v4/core").$strip>>;
|
|
13912
|
+
movedPageCount: import("zod").ZodNumber;
|
|
13913
|
+
error: import("zod").ZodNullable<import("zod").ZodString>;
|
|
13914
|
+
}, import("zod/v4/core").$strip>;
|
|
13828
13915
|
}, import("zod/v4/core").$strip>, import("zod").ZodObject<{
|
|
13829
13916
|
type: import("zod").ZodLiteral<"context.edge.convert.response">;
|
|
13830
13917
|
payload: import("zod").ZodObject<{
|