1#![allow(
9 unused_imports,
10 non_camel_case_types,
11 clippy::large_enum_variant,
12 clippy::enum_variant_names,
13 clippy::empty_docs
14)]
15
16use serde::{Deserialize, Serialize};
17use serde_json::Value;
18
19#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq, Hash)]
23#[serde(transparent)]
24pub struct AbsolutePathBuf(pub String);
25
26#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
27#[serde(tag = "type", rename_all = "camelCase")]
28pub enum Account {
29 #[serde(rename = "apiKey")]
30 ApiKey,
31 Chatgpt {
32 #[serde(default, skip_serializing_if = "Option::is_none")]
33 email: Option<String>,
34 #[serde(rename = "planType")]
35 plan_type: PlanType,
36 },
37 #[serde(rename = "amazonBedrock")]
38 AmazonBedrock {
39 #[serde(
40 rename = "usesCodexManagedCredentials",
41 default,
42 skip_serializing_if = "Option::is_none"
43 )]
44 uses_codex_managed_credentials: Option<bool>,
45 },
46}
47
48#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
49#[serde(rename_all = "camelCase")]
50pub struct AccountLoginCompletedNotification {
51 #[serde(default, skip_serializing_if = "Option::is_none")]
52 pub error: Option<String>,
53 #[serde(rename = "loginId", default, skip_serializing_if = "Option::is_none")]
54 pub login_id: Option<String>,
55 #[serde(
56 rename = "onboardingEntrypoint",
57 default,
58 skip_serializing_if = "Option::is_none"
59 )]
60 pub onboarding_entrypoint: Option<DesktopOnboardingEntrypoint>,
61 #[serde(default)]
62 pub success: bool,
63}
64
65#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
66#[serde(rename_all = "camelCase")]
67pub struct AccountRateLimitsUpdatedNotification {
68 #[serde(rename = "rateLimits")]
69 pub rate_limits: RateLimitSnapshot,
70}
71
72#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
73#[serde(rename_all = "camelCase")]
74pub struct AccountTokenUsageDailyBucket {
75 #[serde(rename = "startDate", default)]
76 pub start_date: String,
77 #[serde(default)]
78 pub tokens: i64,
79}
80
81#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
82#[serde(rename_all = "camelCase")]
83pub struct AccountTokenUsageSummary {
84 #[serde(
85 rename = "currentStreakDays",
86 default,
87 skip_serializing_if = "Option::is_none"
88 )]
89 pub current_streak_days: Option<i64>,
90 #[serde(
91 rename = "lifetimeTokens",
92 default,
93 skip_serializing_if = "Option::is_none"
94 )]
95 pub lifetime_tokens: Option<i64>,
96 #[serde(
97 rename = "longestRunningTurnSec",
98 default,
99 skip_serializing_if = "Option::is_none"
100 )]
101 pub longest_running_turn_sec: Option<i64>,
102 #[serde(
103 rename = "longestStreakDays",
104 default,
105 skip_serializing_if = "Option::is_none"
106 )]
107 pub longest_streak_days: Option<i64>,
108 #[serde(
109 rename = "peakDailyTokens",
110 default,
111 skip_serializing_if = "Option::is_none"
112 )]
113 pub peak_daily_tokens: Option<i64>,
114}
115
116#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
117#[serde(rename_all = "camelCase")]
118pub struct AccountUpdatedNotification {
119 #[serde(rename = "authMode", default, skip_serializing_if = "Option::is_none")]
120 pub auth_mode: Option<AuthMode>,
121 #[serde(rename = "planType", default, skip_serializing_if = "Option::is_none")]
122 pub plan_type: Option<PlanType>,
123}
124
125#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
126#[serde(rename_all = "camelCase")]
127pub struct ActivePermissionProfile {
128 #[serde(default, skip_serializing_if = "Option::is_none")]
129 pub extends: Option<String>,
130 #[serde(default)]
131 pub id: String,
132}
133
134#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
135pub enum AddCreditsNudgeCreditType {
136 #[serde(rename = "credits")]
137 Credits,
138 #[serde(rename = "usage_limit")]
139 Usage_limit,
140}
141
142#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
143pub enum AddCreditsNudgeEmailStatus {
144 #[serde(rename = "sent")]
145 Sent,
146 #[serde(rename = "cooldown_active")]
147 Cooldown_active,
148}
149
150#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
151#[serde(rename_all = "camelCase")]
152pub struct AdditionalFileSystemPermissions {
153 #[serde(default, skip_serializing_if = "Option::is_none")]
154 pub entries: Option<Vec<FileSystemSandboxEntry>>,
155 #[serde(
156 rename = "globScanMaxDepth",
157 default,
158 skip_serializing_if = "Option::is_none"
159 )]
160 pub glob_scan_max_depth: Option<i64>,
161 #[serde(default, skip_serializing_if = "Option::is_none")]
162 pub read: Option<Vec<LegacyAppPathString>>,
163 #[serde(default, skip_serializing_if = "Option::is_none")]
164 pub write: Option<Vec<LegacyAppPathString>>,
165}
166
167#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
168#[serde(rename_all = "camelCase")]
169pub struct AdditionalNetworkPermissions {
170 #[serde(default, skip_serializing_if = "Option::is_none")]
171 pub enabled: Option<bool>,
172}
173
174#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
175#[serde(rename_all = "camelCase")]
176pub struct AgentMessageDeltaNotification {
177 #[serde(default)]
178 pub delta: String,
179 #[serde(rename = "itemId", default)]
180 pub item_id: String,
181 #[serde(rename = "threadId", default)]
182 pub thread_id: String,
183 #[serde(rename = "turnId", default)]
184 pub turn_id: String,
185}
186
187#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq, Hash)]
188#[serde(transparent)]
189pub struct AgentPath(pub String);
190
191#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
192#[serde(rename_all = "snake_case")]
193pub struct AnalyticsConfig {
194 #[serde(default, skip_serializing_if = "Option::is_none")]
195 pub enabled: Option<bool>,
196 #[serde(flatten, default, skip_serializing_if = "serde_json::Map::is_empty")]
197 pub additional: serde_json::Map<String, Value>,
198}
199
200#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
201#[serde(rename_all = "camelCase")]
202pub struct AppBranding {
203 #[serde(default, skip_serializing_if = "Option::is_none")]
204 pub category: Option<String>,
205 #[serde(default, skip_serializing_if = "Option::is_none")]
206 pub developer: Option<String>,
207 #[serde(rename = "isDiscoverableApp", default)]
208 pub is_discoverable_app: bool,
209 #[serde(
210 rename = "privacyPolicy",
211 default,
212 skip_serializing_if = "Option::is_none"
213 )]
214 pub privacy_policy: Option<String>,
215 #[serde(
216 rename = "termsOfService",
217 default,
218 skip_serializing_if = "Option::is_none"
219 )]
220 pub terms_of_service: Option<String>,
221 #[serde(default, skip_serializing_if = "Option::is_none")]
222 pub website: Option<String>,
223}
224
225#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
226#[serde(rename_all = "camelCase")]
227pub struct AppInfo {
228 #[serde(
229 rename = "appMetadata",
230 default,
231 skip_serializing_if = "Option::is_none"
232 )]
233 pub app_metadata: Option<AppMetadata>,
234 #[serde(default, skip_serializing_if = "Option::is_none")]
235 pub branding: Option<AppBranding>,
236 #[serde(default, skip_serializing_if = "Option::is_none")]
237 pub description: Option<String>,
238 #[serde(
239 rename = "distributionChannel",
240 default,
241 skip_serializing_if = "Option::is_none"
242 )]
243 pub distribution_channel: Option<String>,
244 #[serde(
245 rename = "iconAssets",
246 default,
247 skip_serializing_if = "Option::is_none"
248 )]
249 pub icon_assets: Option<std::collections::BTreeMap<String, String>>,
250 #[serde(
251 rename = "iconDarkAssets",
252 default,
253 skip_serializing_if = "Option::is_none"
254 )]
255 pub icon_dark_assets: Option<std::collections::BTreeMap<String, String>>,
256 #[serde(default)]
257 pub id: String,
258 #[serde(
259 rename = "installUrl",
260 default,
261 skip_serializing_if = "Option::is_none"
262 )]
263 pub install_url: Option<String>,
264 #[serde(
265 rename = "isAccessible",
266 default,
267 skip_serializing_if = "Option::is_none"
268 )]
269 pub is_accessible: Option<bool>,
270 #[serde(rename = "isEnabled", default, skip_serializing_if = "Option::is_none")]
271 pub is_enabled: Option<bool>,
272 #[serde(default, skip_serializing_if = "Option::is_none")]
273 pub labels: Option<std::collections::BTreeMap<String, String>>,
274 #[serde(rename = "logoUrl", default, skip_serializing_if = "Option::is_none")]
275 pub logo_url: Option<String>,
276 #[serde(
277 rename = "logoUrlDark",
278 default,
279 skip_serializing_if = "Option::is_none"
280 )]
281 pub logo_url_dark: Option<String>,
282 #[serde(default)]
283 pub name: String,
284 #[serde(
285 rename = "pluginDisplayNames",
286 default,
287 skip_serializing_if = "Option::is_none"
288 )]
289 pub plugin_display_names: Option<Vec<String>>,
290}
291
292#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
293#[serde(rename_all = "camelCase")]
294pub struct AppListUpdatedNotification {
295 #[serde(default)]
296 pub data: Vec<AppInfo>,
297}
298
299#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
300#[serde(rename_all = "camelCase")]
301pub struct AppMetadata {
302 #[serde(default, skip_serializing_if = "Option::is_none")]
303 pub categories: Option<Vec<String>>,
304 #[serde(default, skip_serializing_if = "Option::is_none")]
305 pub developer: Option<String>,
306 #[serde(
307 rename = "firstPartyRequiresInstall",
308 default,
309 skip_serializing_if = "Option::is_none"
310 )]
311 pub first_party_requires_install: Option<bool>,
312 #[serde(default, skip_serializing_if = "Option::is_none")]
313 pub review: Option<AppReview>,
314 #[serde(default, skip_serializing_if = "Option::is_none")]
315 pub screenshots: Option<Vec<AppScreenshot>>,
316 #[serde(
317 rename = "seoDescription",
318 default,
319 skip_serializing_if = "Option::is_none"
320 )]
321 pub seo_description: Option<String>,
322 #[serde(
323 rename = "showInComposerWhenUnlinked",
324 default,
325 skip_serializing_if = "Option::is_none"
326 )]
327 pub show_in_composer_when_unlinked: Option<bool>,
328 #[serde(
329 rename = "subCategories",
330 default,
331 skip_serializing_if = "Option::is_none"
332 )]
333 pub sub_categories: Option<Vec<String>>,
334 #[serde(default, skip_serializing_if = "Option::is_none")]
335 pub version: Option<String>,
336 #[serde(rename = "versionId", default, skip_serializing_if = "Option::is_none")]
337 pub version_id: Option<String>,
338 #[serde(
339 rename = "versionNotes",
340 default,
341 skip_serializing_if = "Option::is_none"
342 )]
343 pub version_notes: Option<String>,
344}
345
346#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
347#[serde(rename_all = "camelCase")]
348pub struct AppReview {
349 #[serde(default)]
350 pub status: String,
351}
352
353#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
354#[serde(rename_all = "camelCase")]
355pub struct AppScreenshot {
356 #[serde(rename = "fileId", default, skip_serializing_if = "Option::is_none")]
357 pub file_id: Option<String>,
358 #[serde(default, skip_serializing_if = "Option::is_none")]
359 pub url: Option<String>,
360 #[serde(rename = "userPrompt", default)]
361 pub user_prompt: String,
362}
363
364#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
365#[serde(rename_all = "camelCase")]
366pub struct AppSummary {
367 #[serde(default, skip_serializing_if = "Option::is_none")]
368 pub category: Option<String>,
369 #[serde(default, skip_serializing_if = "Option::is_none")]
370 pub description: Option<String>,
371 #[serde(default)]
372 pub id: String,
373 #[serde(
374 rename = "installUrl",
375 default,
376 skip_serializing_if = "Option::is_none"
377 )]
378 pub install_url: Option<String>,
379 #[serde(default)]
380 pub name: String,
381}
382
383#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
384#[serde(rename_all = "camelCase")]
385pub struct AppTemplateSummary {
386 #[serde(
387 rename = "canonicalConnectorId",
388 default,
389 skip_serializing_if = "Option::is_none"
390 )]
391 pub canonical_connector_id: Option<String>,
392 #[serde(default, skip_serializing_if = "Option::is_none")]
393 pub category: Option<String>,
394 #[serde(default, skip_serializing_if = "Option::is_none")]
395 pub description: Option<String>,
396 #[serde(rename = "logoUrl", default, skip_serializing_if = "Option::is_none")]
397 pub logo_url: Option<String>,
398 #[serde(
399 rename = "logoUrlDark",
400 default,
401 skip_serializing_if = "Option::is_none"
402 )]
403 pub logo_url_dark: Option<String>,
404 #[serde(rename = "materializedAppIds", default)]
405 pub materialized_app_ids: Vec<String>,
406 #[serde(default)]
407 pub name: String,
408 #[serde(default, skip_serializing_if = "Option::is_none")]
409 pub reason: Option<AppTemplateUnavailableReason>,
410 #[serde(rename = "templateId", default)]
411 pub template_id: String,
412}
413
414#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
415pub enum AppTemplateUnavailableReason {
416 #[serde(rename = "NOT_CONFIGURED_FOR_WORKSPACE")]
417 NOT_CONFIGURED_FOR_WORKSPACE,
418 #[serde(rename = "NO_ACTIVE_WORKSPACE")]
419 NO_ACTIVE_WORKSPACE,
420}
421
422#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
423#[serde(rename_all = "camelCase")]
424pub struct AppToolSummary {
425 #[serde(default)]
426 pub description: String,
427 #[serde(
428 rename = "disabledReason",
429 default,
430 skip_serializing_if = "Option::is_none"
431 )]
432 pub disabled_reason: Option<String>,
433 #[serde(rename = "isEnabled", default, skip_serializing_if = "Option::is_none")]
434 pub is_enabled: Option<bool>,
435 #[serde(
436 rename = "isReadOnly",
437 default,
438 skip_serializing_if = "Option::is_none"
439 )]
440 pub is_read_only: Option<bool>,
441 #[serde(default)]
442 pub name: String,
443 #[serde(default, skip_serializing_if = "Option::is_none")]
444 pub title: Option<String>,
445}
446
447#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
448#[serde(rename_all = "camelCase")]
449pub struct ApplyPatchApprovalParams {
450 #[serde(rename = "callId", default)]
451 pub call_id: String,
452 #[serde(rename = "conversationId")]
453 pub conversation_id: ThreadId,
454 #[serde(rename = "fileChanges", default)]
455 pub file_changes: std::collections::BTreeMap<String, FileChange>,
456 #[serde(rename = "grantRoot", default, skip_serializing_if = "Option::is_none")]
457 pub grant_root: Option<String>,
458 #[serde(default, skip_serializing_if = "Option::is_none")]
459 pub reason: Option<String>,
460}
461
462#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
463#[serde(rename_all = "camelCase")]
464pub struct ApplyPatchApprovalResponse {
465 #[serde()]
466 pub decision: ReviewDecision,
467}
468
469#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
470pub enum ApprovalsReviewer {
471 #[serde(rename = "user")]
472 User,
473 #[serde(rename = "auto_review")]
474 Auto_review,
475 #[serde(rename = "guardian_subagent")]
476 Guardian_subagent,
477}
478
479#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
480#[serde(rename_all = "camelCase")]
481pub struct AppsInstalledParams {
482 #[serde(
483 rename = "forceRefresh",
484 default,
485 skip_serializing_if = "Option::is_none"
486 )]
487 pub force_refresh: Option<bool>,
488 #[serde(rename = "threadId", default, skip_serializing_if = "Option::is_none")]
489 pub thread_id: Option<String>,
490}
491
492#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
493#[serde(rename_all = "camelCase")]
494pub struct AppsInstalledResponse {
495 #[serde(default)]
496 pub apps: Vec<InstalledApp>,
497}
498
499#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
500#[serde(rename_all = "camelCase")]
501pub struct AppsListParams {
502 #[serde(default, skip_serializing_if = "Option::is_none")]
503 pub cursor: Option<String>,
504 #[serde(
505 rename = "forceRefetch",
506 default,
507 skip_serializing_if = "Option::is_none"
508 )]
509 pub force_refetch: Option<bool>,
510 #[serde(default, skip_serializing_if = "Option::is_none")]
511 pub limit: Option<i64>,
512 #[serde(rename = "threadId", default, skip_serializing_if = "Option::is_none")]
513 pub thread_id: Option<String>,
514}
515
516#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
517#[serde(rename_all = "camelCase")]
518pub struct AppsListResponse {
519 #[serde(default)]
520 pub data: Vec<AppInfo>,
521 #[serde(
522 rename = "nextCursor",
523 default,
524 skip_serializing_if = "Option::is_none"
525 )]
526 pub next_cursor: Option<String>,
527}
528
529#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
530#[serde(rename_all = "camelCase")]
531pub struct AppsReadParams {
532 #[serde(rename = "appIds", default)]
533 pub app_ids: Vec<String>,
534 #[serde(
535 rename = "includeTools",
536 default,
537 skip_serializing_if = "Option::is_none"
538 )]
539 pub include_tools: Option<bool>,
540 #[serde(rename = "threadId", default, skip_serializing_if = "Option::is_none")]
541 pub thread_id: Option<String>,
542}
543
544#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
545#[serde(rename_all = "camelCase")]
546pub struct AppsReadResponse {
547 #[serde(default)]
548 pub apps: Vec<ConnectorMetadata>,
549 #[serde(rename = "missingAppIds", default)]
550 pub missing_app_ids: Vec<String>,
551}
552
553#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
554pub enum AskForApproval {
555 #[serde(rename = "untrusted")]
556 Untrusted,
557 #[serde(rename = "on-request")]
558 OnRequest,
559 #[serde(rename = "never")]
560 Never,
561 #[serde(rename = "granular")]
562 Granular {
563 mcp_elicitations: bool,
564 #[serde(default, skip_serializing_if = "Option::is_none")]
565 request_permissions: Option<bool>,
566 rules: bool,
567 sandbox_approval: bool,
568 #[serde(default, skip_serializing_if = "Option::is_none")]
569 skill_approval: Option<bool>,
570 },
571}
572
573#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
574#[serde(rename_all = "camelCase")]
575pub struct AttestationGenerateParams {
576 #[serde(flatten, default, skip_serializing_if = "serde_json::Map::is_empty")]
577 pub extra: serde_json::Map<String, Value>,
578}
579
580#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
581#[serde(rename_all = "camelCase")]
582pub struct AttestationGenerateResponse {
583 #[serde(default)]
584 pub token: String,
585}
586
587#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
591#[serde(rename_all = "camelCase")]
592pub struct AuthRecoveryNotification {
593 #[serde(default)]
594 pub message: String,
595 #[serde(default)]
596 pub provider: String,
597 #[serde(rename = "threadId", default)]
598 pub thread_id: String,
599 #[serde(rename = "turnId", default)]
600 pub turn_id: String,
601}
602
603#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)]
604pub enum AuthMode {
605 #[serde(rename = "apikey")]
606 Apikey,
607 #[serde(rename = "chatgpt")]
608 Chatgpt,
609 #[serde(rename = "chatgptAuthTokens")]
610 ChatgptAuthTokens,
611 #[serde(rename = "headers")]
612 Headers,
613 #[serde(rename = "agentIdentity")]
614 AgentIdentity,
615 #[serde(rename = "personalAccessToken")]
616 PersonalAccessToken,
617 #[serde(rename = "bedrockApiKey")]
618 BedrockApiKey,
619 #[serde(rename = "bedrockAccessKeys")]
620 BedrockAccessKeys,
621}
622
623#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)]
624pub enum AutoCompactTokenLimitScope {
625 #[serde(rename = "total")]
626 Total,
627 #[serde(rename = "body_after_prefix")]
628 BodyAfterPrefix,
629}
630
631#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
632pub enum AutoReviewDecisionSource {
633 #[serde(rename = "agent")]
634 Agent,
635}
636
637#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
638#[serde(rename_all = "camelCase")]
639pub struct AutoReviewRequirements {
640 #[serde(
641 rename = "ignoreRules",
642 default,
643 skip_serializing_if = "Option::is_none"
644 )]
645 pub ignore_rules: Option<Vec<String>>,
646 #[serde(
647 rename = "requiredOnModels",
648 default,
649 skip_serializing_if = "Option::is_none"
650 )]
651 pub required_on_models: Option<Vec<String>>,
652}
653
654#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
655#[serde(rename_all = "camelCase")]
656pub struct BrowserUseRequirements {
657 #[serde(
658 rename = "allowGlobalPersistentApproval",
659 default,
660 skip_serializing_if = "Option::is_none"
661 )]
662 pub allow_global_persistent_approval: Option<bool>,
663 #[serde(
664 rename = "allowHistoryAccess",
665 default,
666 skip_serializing_if = "Option::is_none"
667 )]
668 pub allow_history_access: Option<bool>,
669 #[serde(
670 rename = "defaultOriginPolicy",
671 default,
672 skip_serializing_if = "Option::is_none"
673 )]
674 pub default_origin_policy: Option<BrowserUseOriginPolicy>,
675 #[serde(default, skip_serializing_if = "Option::is_none")]
676 pub origins: Option<std::collections::HashMap<String, BrowserUseOriginPolicy>>,
677 #[serde(
678 rename = "disableAutoReview",
679 default,
680 skip_serializing_if = "Option::is_none"
681 )]
682 pub disable_auto_review: Option<bool>,
683}
684
685#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
686#[serde(rename_all = "camelCase")]
687pub struct ByteRange {
688 #[serde(default)]
689 pub end: i64,
690 #[serde(default)]
691 pub start: i64,
692}
693
694#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
695#[serde(rename_all = "camelCase")]
696pub struct CancelLoginAccountParams {
697 #[serde(rename = "loginId", default)]
698 pub login_id: String,
699}
700
701#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
702#[serde(rename_all = "camelCase")]
703pub struct CancelLoginAccountResponse {
704 #[serde()]
705 pub status: CancelLoginAccountStatus,
706}
707
708#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
709pub enum CancelLoginAccountStatus {
710 #[serde(rename = "canceled")]
711 Canceled,
712 #[serde(rename = "notFound")]
713 NotFound,
714}
715
716#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
717#[serde(rename_all = "camelCase")]
718pub struct ChatgptAuthTokensRefreshParams {
719 #[serde(
720 rename = "previousAccountId",
721 default,
722 skip_serializing_if = "Option::is_none"
723 )]
724 pub previous_account_id: Option<String>,
725 #[serde()]
726 pub reason: ChatgptAuthTokensRefreshReason,
727}
728
729#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)]
730pub enum ChatgptAuthTokensRefreshReason {
731 #[serde(rename = "unauthorized")]
732 Unauthorized,
733}
734
735#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
736#[serde(rename_all = "camelCase")]
737pub struct ChatgptAuthTokensRefreshResponse {
738 #[serde(rename = "accessToken", default)]
739 pub access_token: String,
740 #[serde(rename = "chatgptAccountId", default)]
741 pub chatgpt_account_id: String,
742 #[serde(
743 rename = "chatgptPlanType",
744 default,
745 skip_serializing_if = "Option::is_none"
746 )]
747 pub chatgpt_plan_type: Option<String>,
748}
749
750#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
751#[serde(rename_all = "camelCase")]
752pub struct ClientInfo {
753 #[serde(default)]
754 pub name: String,
755 #[serde(default, skip_serializing_if = "Option::is_none")]
756 pub title: Option<String>,
757 #[serde(default)]
758 pub version: String,
759}
760
761#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
762pub enum CodexErrorInfo {
763 #[serde(rename = "contextWindowExceeded")]
764 ContextWindowExceeded,
765 #[serde(rename = "sessionBudgetExceeded")]
766 SessionBudgetExceeded,
767 #[serde(rename = "usageLimitExceeded")]
768 UsageLimitExceeded,
769 #[serde(rename = "rateLimitExceeded")]
770 RateLimitExceeded,
771 #[serde(rename = "serverOverloaded")]
772 ServerOverloaded,
773 #[serde(rename = "cyberPolicy")]
774 CyberPolicy,
775 #[serde(rename = "misalignmentPolicyViolation")]
776 MisalignmentPolicyViolation,
777 #[serde(rename = "internalServerError")]
778 InternalServerError,
779 #[serde(rename = "unauthorized")]
780 Unauthorized,
781 #[serde(rename = "badRequest")]
782 BadRequest,
783 #[serde(rename = "threadRollbackFailed")]
784 ThreadRollbackFailed,
785 #[serde(rename = "sandboxError")]
786 SandboxError,
787 #[serde(rename = "other")]
788 Other,
789 #[serde(rename = "httpConnectionFailed")]
790 HttpConnectionFailed {
791 #[serde(
792 rename = "httpStatusCode",
793 default,
794 skip_serializing_if = "Option::is_none"
795 )]
796 http_status_code: Option<i64>,
797 },
798 #[serde(rename = "responseStreamConnectionFailed")]
799 ResponseStreamConnectionFailed {
800 #[serde(
801 rename = "httpStatusCode",
802 default,
803 skip_serializing_if = "Option::is_none"
804 )]
805 http_status_code: Option<i64>,
806 },
807 #[serde(rename = "responseStreamDisconnected")]
808 ResponseStreamDisconnected {
809 #[serde(
810 rename = "httpStatusCode",
811 default,
812 skip_serializing_if = "Option::is_none"
813 )]
814 http_status_code: Option<i64>,
815 },
816 #[serde(rename = "responseTooManyFailedAttempts")]
817 ResponseTooManyFailedAttempts {
818 #[serde(
819 rename = "httpStatusCode",
820 default,
821 skip_serializing_if = "Option::is_none"
822 )]
823 http_status_code: Option<i64>,
824 },
825 #[serde(rename = "activeTurnNotSteerable")]
826 ActiveTurnNotSteerable {
827 #[serde(rename = "turnKind")]
828 turn_kind: NonSteerableTurnKind,
829 },
830}
831
832#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
833#[serde(rename_all = "camelCase")]
834pub struct CollabAgentState {
835 #[serde(default, skip_serializing_if = "Option::is_none")]
836 pub message: Option<String>,
837 #[serde()]
838 pub status: CollabAgentStatus,
839}
840
841#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
842pub enum CollabAgentStatus {
843 #[serde(rename = "pendingInit")]
844 PendingInit,
845 #[serde(rename = "running")]
846 Running,
847 #[serde(rename = "interrupted")]
848 Interrupted,
849 #[serde(rename = "completed")]
850 Completed,
851 #[serde(rename = "errored")]
852 Errored,
853 #[serde(rename = "shutdown")]
854 Shutdown,
855 #[serde(rename = "notFound")]
856 NotFound,
857}
858
859#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
860pub enum CollabAgentTool {
861 #[serde(rename = "spawnAgent")]
862 SpawnAgent,
863 #[serde(rename = "sendInput")]
864 SendInput,
865 #[serde(rename = "resumeAgent")]
866 ResumeAgent,
867 #[serde(rename = "wait")]
868 Wait,
869 #[serde(rename = "closeAgent")]
870 CloseAgent,
871 #[serde(rename = "sendMessage")]
872 SendMessage,
873 #[serde(rename = "followupTask")]
874 FollowupTask,
875 #[serde(rename = "interruptAgent")]
876 InterruptAgent,
877 #[serde(rename = "listAgents")]
878 ListAgents,
879}
880
881#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
882pub enum CollabAgentToolCallStatus {
883 #[serde(rename = "inProgress")]
884 InProgress,
885 #[serde(rename = "completed")]
886 Completed,
887 #[serde(rename = "failed")]
888 Failed,
889 #[serde(rename = "interrupted")]
890 Interrupted,
891}
892
893#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
896pub enum CyberAccessProgram {
897 #[serde(rename = "standard")]
898 Standard,
899 #[serde(rename = "daybreakBlue")]
900 DaybreakBlue,
901 #[serde(rename = "daybreakRed")]
902 DaybreakRed,
903}
904
905#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
906#[serde(rename_all = "camelCase")]
907pub struct CollaborationMode {
908 #[serde()]
909 pub mode: ModeKind,
910 #[serde()]
911 pub settings: Settings,
912}
913
914#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
915#[serde(tag = "type", rename_all = "camelCase")]
916pub enum CommandAction {
917 Read {
918 command: String,
919 name: String,
920 path: LegacyAppPathString,
921 },
922 #[serde(rename = "listFiles")]
923 ListFiles {
924 command: String,
925 #[serde(default, skip_serializing_if = "Option::is_none")]
926 path: Option<String>,
927 },
928 Search {
929 command: String,
930 #[serde(default, skip_serializing_if = "Option::is_none")]
931 path: Option<String>,
932 #[serde(default, skip_serializing_if = "Option::is_none")]
933 query: Option<String>,
934 },
935 Unknown {
936 command: String,
937 },
938}
939
940#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
941#[serde(rename_all = "camelCase")]
942pub struct CommandExecOutputDeltaNotification {
943 #[serde(rename = "capReached", default)]
944 pub cap_reached: bool,
945 #[serde(rename = "deltaBase64", default)]
946 pub delta_base64: String,
947 #[serde(rename = "processId", default)]
948 pub process_id: String,
949 #[serde(default)]
950 pub stream: Value,
951}
952
953#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)]
954pub enum CommandExecOutputStream {
955 #[serde(rename = "stdout")]
956 Stdout,
957 #[serde(rename = "stderr")]
958 Stderr,
959}
960
961#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
962#[serde(rename_all = "camelCase")]
963pub struct CommandExecParams {
964 #[serde(default)]
965 pub command: Vec<String>,
966 #[serde(default, skip_serializing_if = "Option::is_none")]
967 pub cwd: Option<String>,
968 #[serde(
969 rename = "disableOutputCap",
970 default,
971 skip_serializing_if = "Option::is_none"
972 )]
973 pub disable_output_cap: Option<bool>,
974 #[serde(
975 rename = "disableTimeout",
976 default,
977 skip_serializing_if = "Option::is_none"
978 )]
979 pub disable_timeout: Option<bool>,
980 #[serde(default, skip_serializing_if = "Option::is_none")]
981 pub env: Option<std::collections::BTreeMap<String, Option<String>>>,
982 #[serde(
983 rename = "outputBytesCap",
984 default,
985 skip_serializing_if = "Option::is_none"
986 )]
987 pub output_bytes_cap: Option<i64>,
988 #[serde(rename = "processId", default, skip_serializing_if = "Option::is_none")]
989 pub process_id: Option<String>,
990 #[serde(
991 rename = "sandboxPolicy",
992 default,
993 skip_serializing_if = "Option::is_none"
994 )]
995 pub sandbox_policy: Option<SandboxPolicy>,
996 #[serde(default, skip_serializing_if = "Option::is_none")]
997 pub size: Option<CommandExecTerminalSize>,
998 #[serde(
999 rename = "streamStdin",
1000 default,
1001 skip_serializing_if = "Option::is_none"
1002 )]
1003 pub stream_stdin: Option<bool>,
1004 #[serde(
1005 rename = "streamStdoutStderr",
1006 default,
1007 skip_serializing_if = "Option::is_none"
1008 )]
1009 pub stream_stdout_stderr: Option<bool>,
1010 #[serde(rename = "timeoutMs", default, skip_serializing_if = "Option::is_none")]
1011 pub timeout_ms: Option<i64>,
1012 #[serde(default, skip_serializing_if = "Option::is_none")]
1013 pub tty: Option<bool>,
1014}
1015
1016#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
1017#[serde(rename_all = "camelCase")]
1018pub struct CommandExecResizeParams {
1019 #[serde(rename = "processId", default)]
1020 pub process_id: String,
1021 #[serde(default)]
1022 pub size: Value,
1023}
1024
1025#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
1026#[serde(rename_all = "camelCase")]
1027pub struct CommandExecResizeResponse {
1028 #[serde(flatten, default, skip_serializing_if = "serde_json::Map::is_empty")]
1029 pub extra: serde_json::Map<String, Value>,
1030}
1031
1032#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
1033#[serde(rename_all = "camelCase")]
1034pub struct CommandExecResponse {
1035 #[serde(rename = "exitCode", default)]
1036 pub exit_code: i64,
1037 #[serde(default)]
1038 pub stderr: String,
1039 #[serde(default)]
1040 pub stdout: String,
1041}
1042
1043#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
1044#[serde(rename_all = "camelCase")]
1045pub struct CommandExecTerminalSize {
1046 #[serde(default)]
1047 pub cols: i64,
1048 #[serde(default)]
1049 pub rows: i64,
1050}
1051
1052#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
1053#[serde(rename_all = "camelCase")]
1054pub struct CommandExecTerminateParams {
1055 #[serde(rename = "processId", default)]
1056 pub process_id: String,
1057}
1058
1059#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
1060#[serde(rename_all = "camelCase")]
1061pub struct CommandExecTerminateResponse {
1062 #[serde(flatten, default, skip_serializing_if = "serde_json::Map::is_empty")]
1063 pub extra: serde_json::Map<String, Value>,
1064}
1065
1066#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
1067#[serde(rename_all = "camelCase")]
1068pub struct CommandExecWriteParams {
1069 #[serde(
1070 rename = "closeStdin",
1071 default,
1072 skip_serializing_if = "Option::is_none"
1073 )]
1074 pub close_stdin: Option<bool>,
1075 #[serde(
1076 rename = "deltaBase64",
1077 default,
1078 skip_serializing_if = "Option::is_none"
1079 )]
1080 pub delta_base64: Option<String>,
1081 #[serde(rename = "processId", default)]
1082 pub process_id: String,
1083}
1084
1085#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
1086#[serde(rename_all = "camelCase")]
1087pub struct CommandExecWriteResponse {
1088 #[serde(flatten, default, skip_serializing_if = "serde_json::Map::is_empty")]
1089 pub extra: serde_json::Map<String, Value>,
1090}
1091
1092#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
1093pub enum CommandExecutionApprovalDecision {
1094 #[serde(rename = "accept")]
1095 Accept,
1096 #[serde(rename = "acceptForSession")]
1097 AcceptForSession,
1098 #[serde(rename = "acceptWithExecpolicyAmendment")]
1099 AcceptWithExecpolicyAmendment { execpolicy_amendment: Vec<String> },
1100 #[serde(rename = "applyNetworkPolicyAmendment")]
1101 ApplyNetworkPolicyAmendment {
1102 network_policy_amendment: NetworkPolicyAmendment,
1103 },
1104 #[serde(rename = "decline")]
1105 Decline,
1106 #[serde(rename = "cancel")]
1107 Cancel,
1108}
1109
1110#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
1113pub enum CommandExecutionApprovalKind {
1114 #[serde(rename = "command")]
1115 Command,
1116 #[serde(rename = "writeStdin")]
1117 WriteStdin,
1118}
1119
1120#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
1121#[serde(rename_all = "camelCase")]
1122pub struct CommandExecutionOutputDeltaNotification {
1123 #[serde(default)]
1124 pub delta: String,
1125 #[serde(rename = "itemId", default)]
1126 pub item_id: String,
1127 #[serde(rename = "threadId", default)]
1128 pub thread_id: String,
1129 #[serde(rename = "turnId", default)]
1130 pub turn_id: String,
1131}
1132
1133#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
1134#[serde(rename_all = "camelCase")]
1135pub struct CommandExecutionRequestApprovalParams {
1136 #[serde(
1137 rename = "approvalId",
1138 default,
1139 skip_serializing_if = "Option::is_none"
1140 )]
1141 pub approval_id: Option<String>,
1142 #[serde(default, skip_serializing_if = "Option::is_none")]
1143 pub command: Option<String>,
1144 #[serde(
1145 rename = "commandActions",
1146 default,
1147 skip_serializing_if = "Option::is_none"
1148 )]
1149 pub command_actions: Option<Vec<CommandAction>>,
1150 #[serde(default, skip_serializing_if = "Option::is_none")]
1151 pub cwd: Option<LegacyAppPathString>,
1152 #[serde(
1153 rename = "environmentId",
1154 default,
1155 skip_serializing_if = "Option::is_none"
1156 )]
1157 pub environment_id: Option<String>,
1158 #[serde(rename = "itemId", default)]
1159 pub item_id: String,
1160 #[serde(default, skip_serializing_if = "Option::is_none")]
1163 pub kind: Option<CommandExecutionApprovalKind>,
1164 #[serde(
1165 rename = "networkApprovalContext",
1166 default,
1167 skip_serializing_if = "Option::is_none"
1168 )]
1169 pub network_approval_context: Option<NetworkApprovalContext>,
1170 #[serde(
1171 rename = "proposedExecpolicyAmendment",
1172 default,
1173 skip_serializing_if = "Option::is_none"
1174 )]
1175 pub proposed_execpolicy_amendment: Option<Vec<String>>,
1176 #[serde(
1177 rename = "proposedNetworkPolicyAmendments",
1178 default,
1179 skip_serializing_if = "Option::is_none"
1180 )]
1181 pub proposed_network_policy_amendments: Option<Vec<NetworkPolicyAmendment>>,
1182 #[serde(default, skip_serializing_if = "Option::is_none")]
1183 pub reason: Option<String>,
1184 #[serde(rename = "startedAtMs", default)]
1185 pub started_at_ms: i64,
1186 #[serde(rename = "threadId", default)]
1187 pub thread_id: String,
1188 #[serde(rename = "turnId", default)]
1189 pub turn_id: String,
1190}
1191
1192#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1193#[serde(rename_all = "camelCase")]
1194pub struct CommandExecutionRequestApprovalResponse {
1195 #[serde()]
1196 pub decision: CommandExecutionApprovalDecision,
1197}
1198
1199#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
1200pub enum CommandExecutionSource {
1201 #[serde(rename = "agent")]
1202 Agent,
1203 #[serde(rename = "userShell")]
1204 UserShell,
1205 #[serde(rename = "unifiedExecStartup")]
1206 UnifiedExecStartup,
1207 #[serde(rename = "unifiedExecInteraction")]
1208 UnifiedExecInteraction,
1209}
1210
1211#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
1212pub enum CommandExecutionStatus {
1213 #[serde(rename = "inProgress")]
1214 InProgress,
1215 #[serde(rename = "completed")]
1216 Completed,
1217 #[serde(rename = "failed")]
1218 Failed,
1219 #[serde(rename = "declined")]
1220 Declined,
1221}
1222
1223#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
1224#[serde(rename_all = "camelCase")]
1225pub struct CommandMigration {
1226 #[serde(default)]
1227 pub name: String,
1228}
1229
1230#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
1231#[serde(rename_all = "camelCase")]
1232pub struct ComputerUseRequirements {
1233 #[serde(
1234 rename = "allowPersistentApproval",
1235 default,
1236 skip_serializing_if = "Option::is_none"
1237 )]
1238 pub allow_persistent_approval: Option<bool>,
1239 #[serde(
1240 rename = "defaultAppAccess",
1241 default,
1242 skip_serializing_if = "Option::is_none"
1243 )]
1244 pub default_app_access: Option<AllowDenyRequirement>,
1245 #[serde(default, skip_serializing_if = "Option::is_none")]
1246 pub macos: Option<ComputerUseMacosRequirements>,
1247 #[serde(default, skip_serializing_if = "Option::is_none")]
1248 pub windows: Option<ComputerUseWindowsRequirements>,
1249 #[serde(
1250 rename = "allowLockedComputerUse",
1251 default,
1252 skip_serializing_if = "Option::is_none"
1253 )]
1254 pub allow_locked_computer_use: Option<bool>,
1255}
1256
1257#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
1258#[serde(rename_all = "snake_case")]
1259pub struct Config {
1260 #[serde(default, skip_serializing_if = "Option::is_none")]
1261 pub analytics: Option<AnalyticsConfig>,
1262 #[serde(default, skip_serializing_if = "Option::is_none")]
1263 pub browser_use: Option<BrowserUseConfig>,
1264 #[serde(default, skip_serializing_if = "Option::is_none")]
1265 pub computer_use: Option<ComputerUseConfig>,
1266 #[serde(default, skip_serializing_if = "Option::is_none")]
1267 pub approval_policy: Option<AskForApproval>,
1268 #[serde(default, skip_serializing_if = "Option::is_none")]
1269 pub approvals_reviewer: Option<ApprovalsReviewer>,
1270 #[serde(default, skip_serializing_if = "Option::is_none")]
1271 pub compact_prompt: Option<String>,
1272 #[serde(default, skip_serializing_if = "Option::is_none")]
1273 pub desktop: Option<Value>,
1274 #[serde(default, skip_serializing_if = "Option::is_none")]
1275 pub developer_instructions: Option<String>,
1276 #[serde(default, skip_serializing_if = "Option::is_none")]
1277 pub forced_chatgpt_workspace_id: Option<ForcedChatgptWorkspaceIds>,
1278 #[serde(default, skip_serializing_if = "Option::is_none")]
1279 pub forced_login_method: Option<ForcedLoginMethod>,
1280 #[serde(default, skip_serializing_if = "Option::is_none")]
1281 pub instructions: Option<String>,
1282 #[serde(default, skip_serializing_if = "Option::is_none")]
1283 pub model: Option<String>,
1284 #[serde(default, skip_serializing_if = "Option::is_none")]
1285 pub model_auto_compact_token_limit: Option<i64>,
1286 #[serde(default, skip_serializing_if = "Option::is_none")]
1287 pub model_auto_compact_token_limit_scope: Option<AutoCompactTokenLimitScope>,
1288 #[serde(default, skip_serializing_if = "Option::is_none")]
1289 pub model_context_window: Option<i64>,
1290 #[serde(default, skip_serializing_if = "Option::is_none")]
1291 pub model_provider: Option<String>,
1292 #[serde(default, skip_serializing_if = "Option::is_none")]
1293 pub model_reasoning_effort: Option<ReasoningEffort>,
1294 #[serde(default, skip_serializing_if = "Option::is_none")]
1295 pub model_reasoning_summary: Option<ReasoningSummary>,
1296 #[serde(default, skip_serializing_if = "Option::is_none")]
1297 pub model_verbosity: Option<Verbosity>,
1298 #[serde(default, skip_serializing_if = "Option::is_none")]
1299 pub review_model: Option<String>,
1300 #[serde(default, skip_serializing_if = "Option::is_none")]
1301 pub sandbox_mode: Option<SandboxMode>,
1302 #[serde(default, skip_serializing_if = "Option::is_none")]
1303 pub sandbox_workspace_write: Option<SandboxWorkspaceWrite>,
1304 #[serde(default, skip_serializing_if = "Option::is_none")]
1305 pub service_tier: Option<String>,
1306 #[serde(default, skip_serializing_if = "Option::is_none")]
1307 pub tools: Option<ToolsV2>,
1308 #[serde(default, skip_serializing_if = "Option::is_none")]
1309 pub web_search: Option<WebSearchMode>,
1310 #[serde(flatten, default, skip_serializing_if = "serde_json::Map::is_empty")]
1311 pub additional: serde_json::Map<String, Value>,
1312}
1313
1314#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
1315#[serde(rename_all = "camelCase")]
1316pub struct ConfigBatchWriteParams {
1317 #[serde(default)]
1318 pub edits: Vec<ConfigEdit>,
1319 #[serde(
1320 rename = "expectedVersion",
1321 default,
1322 skip_serializing_if = "Option::is_none"
1323 )]
1324 pub expected_version: Option<String>,
1325 #[serde(rename = "filePath", default, skip_serializing_if = "Option::is_none")]
1326 pub file_path: Option<String>,
1327 #[serde(
1328 rename = "reloadUserConfig",
1329 default,
1330 skip_serializing_if = "Option::is_none"
1331 )]
1332 pub reload_user_config: Option<bool>,
1333}
1334
1335#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1336#[serde(rename_all = "camelCase")]
1337pub struct ConfigEdit {
1338 #[serde(rename = "keyPath", default)]
1339 pub key_path: String,
1340 #[serde(rename = "mergeStrategy")]
1341 pub merge_strategy: MergeStrategy,
1342 #[serde(default)]
1343 pub value: Value,
1344}
1345
1346#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1347#[serde(rename_all = "camelCase")]
1348pub struct ConfigLayer {
1349 #[serde(default)]
1350 pub config: Value,
1351 #[serde(
1352 rename = "disabledReason",
1353 default,
1354 skip_serializing_if = "Option::is_none"
1355 )]
1356 pub disabled_reason: Option<String>,
1357 #[serde()]
1358 pub name: ConfigLayerSource,
1359 #[serde(default)]
1360 pub version: String,
1361}
1362
1363#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1364#[serde(rename_all = "camelCase")]
1365pub struct ConfigLayerMetadata {
1366 #[serde()]
1367 pub name: ConfigLayerSource,
1368 #[serde(default)]
1369 pub version: String,
1370}
1371
1372#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1373#[serde(tag = "type", rename_all = "camelCase")]
1374pub enum ConfigLayerSource {
1375 #[serde(rename = "packagedDefaults")]
1376 PackagedDefaults {
1377 file: Value,
1378 },
1379 Mdm {
1380 domain: String,
1381 key: String,
1382 },
1383 System {
1384 file: Value,
1385 },
1386 #[serde(rename = "enterpriseManaged")]
1387 EnterpriseManaged {
1388 id: String,
1389 name: String,
1390 },
1391 User {
1392 file: Value,
1393 #[serde(default, skip_serializing_if = "Option::is_none")]
1394 profile: Option<String>,
1395 },
1396 Project {
1397 #[serde(rename = "dotCodexFolder")]
1398 dot_codex_folder: AbsolutePathBuf,
1399 },
1400 #[serde(rename = "sessionFlags")]
1401 SessionFlags,
1402 #[serde(rename = "legacyManagedConfigTomlFromFile")]
1403 LegacyManagedConfigTomlFromFile {
1404 file: AbsolutePathBuf,
1405 },
1406 #[serde(rename = "legacyManagedConfigTomlFromMdm")]
1407 LegacyManagedConfigTomlFromMdm,
1408}
1409
1410#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
1411#[serde(rename_all = "camelCase")]
1412pub struct ConfigReadParams {
1413 #[serde(default, skip_serializing_if = "Option::is_none")]
1414 pub cwd: Option<String>,
1415 #[serde(
1416 rename = "includeLayers",
1417 default,
1418 skip_serializing_if = "Option::is_none"
1419 )]
1420 pub include_layers: Option<bool>,
1421}
1422
1423#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1424#[serde(rename_all = "camelCase")]
1425pub struct ConfigReadResponse {
1426 #[serde()]
1427 pub config: Config,
1428 #[serde(default, skip_serializing_if = "Option::is_none")]
1429 pub layers: Option<Vec<ConfigLayer>>,
1430 #[serde(default)]
1431 pub origins: std::collections::BTreeMap<String, ConfigLayerMetadata>,
1432}
1433
1434#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
1435#[serde(rename_all = "camelCase")]
1436pub struct ConfigRequirements {
1437 #[serde(
1438 rename = "allowBrowserAndComputerUse",
1439 default,
1440 skip_serializing_if = "Option::is_none"
1441 )]
1442 pub allow_browser_and_computer_use: Option<bool>,
1443 #[serde(
1444 rename = "additionalDeveloperInstructions",
1445 default,
1446 skip_serializing_if = "Option::is_none"
1447 )]
1448 pub additional_developer_instructions: Option<String>,
1449 #[serde(
1450 rename = "inAppBrowser",
1451 default,
1452 skip_serializing_if = "Option::is_none"
1453 )]
1454 pub in_app_browser: Option<InAppBrowserRequirements>,
1455 #[serde(
1456 rename = "chatgptBaseUrl",
1457 default,
1458 skip_serializing_if = "Option::is_none"
1459 )]
1460 pub chatgpt_base_url: Option<String>,
1461 #[serde(
1462 rename = "cliAuthCredentialsStore",
1463 default,
1464 skip_serializing_if = "Option::is_none"
1465 )]
1466 pub cli_auth_credentials_store: Option<CliAuthCredentialsStoreMode>,
1467 #[serde(
1468 rename = "allowAppshots",
1469 default,
1470 skip_serializing_if = "Option::is_none"
1471 )]
1472 pub allow_appshots: Option<bool>,
1473 #[serde(
1474 rename = "allowLoginShell",
1475 default,
1476 skip_serializing_if = "Option::is_none"
1477 )]
1478 pub allow_login_shell: Option<bool>,
1479 #[serde(
1480 rename = "allowManagedHooksOnly",
1481 default,
1482 skip_serializing_if = "Option::is_none"
1483 )]
1484 pub allow_managed_hooks_only: Option<bool>,
1485 #[serde(
1486 rename = "allowRemoteControl",
1487 default,
1488 skip_serializing_if = "Option::is_none"
1489 )]
1490 pub allow_remote_control: Option<bool>,
1491 #[serde(
1492 rename = "allowedApprovalPolicies",
1493 default,
1494 skip_serializing_if = "Option::is_none"
1495 )]
1496 pub allowed_approval_policies: Option<Vec<AskForApproval>>,
1497 #[serde(
1498 rename = "allowedPermissionProfiles",
1499 default,
1500 skip_serializing_if = "Option::is_none"
1501 )]
1502 pub allowed_permission_profiles: Option<std::collections::BTreeMap<String, bool>>,
1503 #[serde(
1504 rename = "allowedSandboxModes",
1505 default,
1506 skip_serializing_if = "Option::is_none"
1507 )]
1508 pub allowed_sandbox_modes: Option<Vec<SandboxMode>>,
1509 #[serde(
1510 rename = "allowedWebSearchModes",
1511 default,
1512 skip_serializing_if = "Option::is_none"
1513 )]
1514 pub allowed_web_search_modes: Option<Vec<WebSearchMode>>,
1515 #[serde(
1516 rename = "allowedWindowsSandboxImplementations",
1517 default,
1518 skip_serializing_if = "Option::is_none"
1519 )]
1520 pub allowed_windows_sandbox_implementations: Option<Vec<WindowsSandboxSetupMode>>,
1521 #[serde(
1522 rename = "autoReview",
1523 default,
1524 skip_serializing_if = "Option::is_none"
1525 )]
1526 pub auto_review: Option<AutoReviewRequirements>,
1527 #[serde(
1528 rename = "browserUse",
1529 default,
1530 skip_serializing_if = "Option::is_none"
1531 )]
1532 pub browser_use: Option<BrowserUseRequirements>,
1533 #[serde(
1534 rename = "checkForUpdateOnStartup",
1535 default,
1536 skip_serializing_if = "Option::is_none"
1537 )]
1538 pub check_for_update_on_startup: Option<bool>,
1539 #[serde(
1540 rename = "computerUse",
1541 default,
1542 skip_serializing_if = "Option::is_none"
1543 )]
1544 pub computer_use: Option<ComputerUseRequirements>,
1545 #[serde(
1546 rename = "defaultPermissions",
1547 default,
1548 skip_serializing_if = "Option::is_none"
1549 )]
1550 pub default_permissions: Option<String>,
1551 #[serde(
1552 rename = "enforceResidency",
1553 default,
1554 skip_serializing_if = "Option::is_none"
1555 )]
1556 pub enforce_residency: Option<ResidencyRequirement>,
1557 #[serde(
1558 rename = "featureRequirements",
1559 default,
1560 skip_serializing_if = "Option::is_none"
1561 )]
1562 pub feature_requirements: Option<std::collections::BTreeMap<String, bool>>,
1563 #[serde(default, skip_serializing_if = "Option::is_none")]
1564 pub feedback: Option<FeedbackRequirements>,
1565 #[serde(rename = "logDir", default, skip_serializing_if = "Option::is_none")]
1566 pub log_dir: Option<String>,
1567 #[serde(
1568 rename = "modelCatalogJson",
1569 default,
1570 skip_serializing_if = "Option::is_none"
1571 )]
1572 pub model_catalog_json: Option<String>,
1573 #[serde(default, skip_serializing_if = "Option::is_none")]
1574 pub models: Option<ModelsRequirements>,
1575 #[serde(
1576 rename = "sqliteHome",
1577 default,
1578 skip_serializing_if = "Option::is_none"
1579 )]
1580 pub sqlite_home: Option<String>,
1581 #[serde(
1582 rename = "windowsSandboxPrivateDesktop",
1583 default,
1584 skip_serializing_if = "Option::is_none"
1585 )]
1586 pub windows_sandbox_private_desktop: Option<bool>,
1587}
1588
1589#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
1590#[serde(rename_all = "camelCase")]
1591pub struct ConfigRequirementsReadResponse {
1592 #[serde(default, skip_serializing_if = "Option::is_none")]
1593 pub requirements: Option<ConfigRequirements>,
1594}
1595
1596#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1597#[serde(rename_all = "camelCase")]
1598pub struct ConfigValueWriteParams {
1599 #[serde(
1600 rename = "expectedVersion",
1601 default,
1602 skip_serializing_if = "Option::is_none"
1603 )]
1604 pub expected_version: Option<String>,
1605 #[serde(rename = "filePath", default, skip_serializing_if = "Option::is_none")]
1606 pub file_path: Option<String>,
1607 #[serde(rename = "keyPath", default)]
1608 pub key_path: String,
1609 #[serde(rename = "mergeStrategy")]
1610 pub merge_strategy: MergeStrategy,
1611 #[serde(default)]
1612 pub value: Value,
1613}
1614
1615#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
1616#[serde(rename_all = "camelCase")]
1617pub struct ConfigWarningNotification {
1618 #[serde(default, skip_serializing_if = "Option::is_none")]
1619 pub details: Option<String>,
1620 #[serde(default, skip_serializing_if = "Option::is_none")]
1621 pub path: Option<String>,
1622 #[serde(default, skip_serializing_if = "Option::is_none")]
1623 pub range: Option<TextRange>,
1624 #[serde(default)]
1625 pub summary: String,
1626}
1627
1628#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1629#[serde(rename_all = "camelCase")]
1630pub struct ConfigWriteResponse {
1631 #[serde(rename = "filePath", default)]
1632 pub file_path: Value,
1633 #[serde(
1634 rename = "overriddenMetadata",
1635 default,
1636 skip_serializing_if = "Option::is_none"
1637 )]
1638 pub overridden_metadata: Option<OverriddenMetadata>,
1639 #[serde()]
1640 pub status: WriteStatus,
1641 #[serde(default)]
1642 pub version: String,
1643}
1644
1645#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
1646#[serde(rename_all = "camelCase")]
1647pub struct ConnectorMetadata {
1648 #[serde(default, skip_serializing_if = "Option::is_none")]
1649 pub description: Option<String>,
1650 #[serde(
1651 rename = "distributionChannel",
1652 default,
1653 skip_serializing_if = "Option::is_none"
1654 )]
1655 pub distribution_channel: Option<String>,
1656 #[serde(rename = "iconUrl", default, skip_serializing_if = "Option::is_none")]
1657 pub icon_url: Option<String>,
1658 #[serde(
1659 rename = "iconUrlDark",
1660 default,
1661 skip_serializing_if = "Option::is_none"
1662 )]
1663 pub icon_url_dark: Option<String>,
1664 #[serde(default)]
1665 pub id: String,
1666 #[serde(
1667 rename = "installUrl",
1668 default,
1669 skip_serializing_if = "Option::is_none"
1670 )]
1671 pub install_url: Option<String>,
1672 #[serde(default)]
1673 pub name: String,
1674 #[serde(
1675 rename = "pluginDisplayNames",
1676 default,
1677 skip_serializing_if = "Option::is_none"
1678 )]
1679 pub plugin_display_names: Option<Vec<String>>,
1680 #[serde(
1681 rename = "toolSummaries",
1682 default,
1683 skip_serializing_if = "Option::is_none"
1684 )]
1685 pub tool_summaries: Option<Vec<AppToolSummary>>,
1686}
1687
1688#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)]
1689pub enum ConsumeAccountRateLimitResetCreditOutcome {
1690 #[serde(rename = "reset")]
1691 Reset,
1692 #[serde(rename = "nothingToReset")]
1693 NothingToReset,
1694 #[serde(rename = "noCredit")]
1695 NoCredit,
1696 #[serde(rename = "alreadyRedeemed")]
1697 AlreadyRedeemed,
1698}
1699
1700#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
1701#[serde(rename_all = "camelCase")]
1702pub struct ConsumeAccountRateLimitResetCreditParams {
1703 #[serde(rename = "creditId", default, skip_serializing_if = "Option::is_none")]
1704 pub credit_id: Option<String>,
1705 #[serde(rename = "idempotencyKey", default)]
1706 pub idempotency_key: String,
1707}
1708
1709#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1710#[serde(rename_all = "camelCase")]
1711pub struct ConsumeAccountRateLimitResetCreditResponse {
1712 #[serde()]
1713 pub outcome: ConsumeAccountRateLimitResetCreditOutcome,
1714}
1715
1716#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
1717#[serde(rename_all = "camelCase")]
1718pub struct ContextCompactedNotification {
1719 #[serde(rename = "threadId", default)]
1720 pub thread_id: String,
1721 #[serde(rename = "turnId", default)]
1722 pub turn_id: String,
1723}
1724
1725#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
1726#[serde(rename_all = "camelCase")]
1727pub struct CreditsSnapshot {
1728 #[serde(default, skip_serializing_if = "Option::is_none")]
1729 pub balance: Option<String>,
1730 #[serde(rename = "hasCredits", default)]
1731 pub has_credits: bool,
1732 #[serde(default)]
1733 pub unlimited: bool,
1734}
1735
1736#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
1737#[serde(rename_all = "camelCase")]
1738pub struct DeprecationNoticeNotification {
1739 #[serde(default, skip_serializing_if = "Option::is_none")]
1740 pub details: Option<String>,
1741 #[serde(default)]
1742 pub summary: String,
1743}
1744
1745#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
1746pub enum DesktopOnboardingEntrypoint {
1747 #[serde(rename = "life_sciences")]
1748 Life_sciences,
1749}
1750
1751#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1752#[serde(tag = "type", rename_all = "camelCase")]
1753pub enum DynamicToolCallOutputContentItem {
1754 #[serde(rename = "inputText")]
1755 InputText { text: String },
1756 #[serde(rename = "inputImage")]
1757 InputImage {
1758 #[serde(rename = "imageUrl")]
1759 image_url: String,
1760 },
1761 #[serde(rename = "inputAudio")]
1762 InputAudio {
1763 #[serde(rename = "audioUrl")]
1764 audio_url: String,
1765 },
1766}
1767
1768#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
1769#[serde(rename_all = "camelCase")]
1770pub struct DynamicToolCallParams {
1771 #[serde(default)]
1772 pub arguments: Value,
1773 #[serde(rename = "callId", default)]
1774 pub call_id: String,
1775 #[serde(default, skip_serializing_if = "Option::is_none")]
1776 pub namespace: Option<String>,
1777 #[serde(rename = "threadId", default)]
1778 pub thread_id: String,
1779 #[serde(default)]
1780 pub tool: String,
1781 #[serde(rename = "turnId", default)]
1782 pub turn_id: String,
1783}
1784
1785#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
1786#[serde(rename_all = "camelCase")]
1787pub struct DynamicToolCallResponse {
1788 #[serde(rename = "contentItems", default)]
1789 pub content_items: Vec<DynamicToolCallOutputContentItem>,
1790 #[serde(default)]
1791 pub success: bool,
1792}
1793
1794#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
1795pub enum DynamicToolCallStatus {
1796 #[serde(rename = "inProgress")]
1797 InProgress,
1798 #[serde(rename = "completed")]
1799 Completed,
1800 #[serde(rename = "failed")]
1801 Failed,
1802}
1803
1804#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
1805#[serde(rename_all = "camelCase")]
1806pub struct EnvironmentConnectionNotification {
1807 #[serde(rename = "environmentId", default)]
1808 pub environment_id: String,
1809 #[serde(rename = "threadId", default)]
1810 pub thread_id: String,
1811}
1812
1813#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1814#[serde(rename_all = "camelCase")]
1815pub struct ErrorNotification {
1816 #[serde()]
1817 pub error: TurnError,
1818 #[serde(rename = "threadId", default)]
1819 pub thread_id: String,
1820 #[serde(rename = "turnId", default)]
1821 pub turn_id: String,
1822 #[serde(rename = "willRetry", default)]
1823 pub will_retry: bool,
1824}
1825
1826#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1827#[serde(rename_all = "camelCase")]
1828pub struct ExecCommandApprovalParams {
1829 #[serde(
1830 rename = "approvalId",
1831 default,
1832 skip_serializing_if = "Option::is_none"
1833 )]
1834 pub approval_id: Option<String>,
1835 #[serde(rename = "callId", default)]
1836 pub call_id: String,
1837 #[serde(default)]
1838 pub command: Vec<String>,
1839 #[serde(rename = "conversationId")]
1840 pub conversation_id: ThreadId,
1841 #[serde(default)]
1842 pub cwd: String,
1843 #[serde(rename = "parsedCmd", default)]
1844 pub parsed_cmd: Vec<ParsedCommand>,
1845 #[serde(default, skip_serializing_if = "Option::is_none")]
1846 pub reason: Option<String>,
1847}
1848
1849#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1850#[serde(rename_all = "camelCase")]
1851pub struct ExecCommandApprovalResponse {
1852 #[serde()]
1853 pub decision: ReviewDecision,
1854}
1855
1856#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
1857#[serde(rename_all = "camelCase")]
1858pub struct ExperimentalFeature {
1859 #[serde(default, skip_serializing_if = "Option::is_none")]
1860 pub announcement: Option<String>,
1861 #[serde(rename = "defaultEnabled", default)]
1862 pub default_enabled: bool,
1863 #[serde(default, skip_serializing_if = "Option::is_none")]
1864 pub description: Option<String>,
1865 #[serde(
1866 rename = "displayName",
1867 default,
1868 skip_serializing_if = "Option::is_none"
1869 )]
1870 pub display_name: Option<String>,
1871 #[serde(default)]
1872 pub enabled: bool,
1873 #[serde(default)]
1874 pub name: String,
1875 #[serde(default)]
1876 pub stage: Value,
1877}
1878
1879#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
1880#[serde(rename_all = "camelCase")]
1881pub struct ExperimentalFeatureEnablementSetParams {
1882 #[serde(default)]
1883 pub enablement: std::collections::BTreeMap<String, bool>,
1884}
1885
1886#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
1887#[serde(rename_all = "camelCase")]
1888pub struct ExperimentalFeatureEnablementSetResponse {
1889 #[serde(default)]
1890 pub enablement: std::collections::BTreeMap<String, bool>,
1891}
1892
1893#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
1894#[serde(rename_all = "camelCase")]
1895pub struct ExperimentalFeatureListParams {
1896 #[serde(default, skip_serializing_if = "Option::is_none")]
1897 pub cursor: Option<String>,
1898 #[serde(default, skip_serializing_if = "Option::is_none")]
1899 pub limit: Option<i64>,
1900 #[serde(rename = "threadId", default, skip_serializing_if = "Option::is_none")]
1901 pub thread_id: Option<String>,
1902}
1903
1904#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
1905#[serde(rename_all = "camelCase")]
1906pub struct ExperimentalFeatureListResponse {
1907 #[serde(default)]
1908 pub data: Vec<ExperimentalFeature>,
1909 #[serde(
1910 rename = "nextCursor",
1911 default,
1912 skip_serializing_if = "Option::is_none"
1913 )]
1914 pub next_cursor: Option<String>,
1915}
1916
1917#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)]
1918pub enum ExperimentalFeatureStage {
1919 #[serde(rename = "beta")]
1920 Beta,
1921 #[serde(rename = "underDevelopment")]
1922 UnderDevelopment,
1923 #[serde(rename = "stable")]
1924 Stable,
1925 #[serde(rename = "deprecated")]
1926 Deprecated,
1927 #[serde(rename = "removed")]
1928 Removed,
1929}
1930
1931#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
1932#[serde(rename_all = "camelCase")]
1933pub struct ExternalAgentConfigDetectParams {
1934 #[serde(default, skip_serializing_if = "Option::is_none")]
1935 pub cwds: Option<Vec<String>>,
1936 #[serde(
1937 rename = "includeHome",
1938 default,
1939 skip_serializing_if = "Option::is_none"
1940 )]
1941 pub include_home: Option<bool>,
1942 #[serde(
1943 rename = "maxSessionAgeDays",
1944 default,
1945 skip_serializing_if = "Option::is_none"
1946 )]
1947 pub max_session_age_days: Option<i64>,
1948 #[serde(
1949 rename = "maxSessions",
1950 default,
1951 skip_serializing_if = "Option::is_none"
1952 )]
1953 pub max_sessions: Option<i64>,
1954 #[serde(
1955 rename = "migrationSource",
1956 default,
1957 skip_serializing_if = "Option::is_none"
1958 )]
1959 pub migration_source: Option<String>,
1960 #[serde(default, skip_serializing_if = "Option::is_none")]
1961 pub source: Option<String>,
1962}
1963
1964#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
1965#[serde(rename_all = "camelCase")]
1966pub struct ExternalAgentConfigDetectResponse {
1967 #[serde(default, skip_serializing_if = "Option::is_none")]
1968 pub connectors: Option<Vec<ExternalAgentDetectedConnectorCandidate>>,
1969 #[serde(default)]
1970 pub items: Vec<ExternalAgentConfigMigrationItem>,
1971}
1972
1973#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
1974#[serde(rename_all = "camelCase")]
1975pub struct ExternalAgentConfigImportCompletedNotification {
1976 #[serde(rename = "importId", default)]
1977 pub import_id: String,
1978 #[serde(rename = "itemTypeResults", default)]
1979 pub item_type_results: Vec<ExternalAgentConfigImportTypeResult>,
1980}
1981
1982#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
1983#[serde(rename_all = "camelCase")]
1984pub struct ExternalAgentConfigImportHistoriesReadResponse {
1985 #[serde(default)]
1986 pub connectors: Vec<ExternalAgentImportedConnectorCandidate>,
1987 #[serde(default)]
1988 pub data: Vec<ExternalAgentConfigImportHistory>,
1989}
1990
1991#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
1992#[serde(rename_all = "camelCase")]
1993pub struct ExternalAgentConfigImportHistory {
1994 #[serde(rename = "completedAtMs", default)]
1995 pub completed_at_ms: i64,
1996 #[serde(default)]
1997 pub failures: Vec<ExternalAgentConfigImportItemTypeFailure>,
1998 #[serde(rename = "importId", default)]
1999 pub import_id: String,
2000 #[serde(
2001 rename = "providerId",
2002 default,
2003 skip_serializing_if = "Option::is_none"
2004 )]
2005 pub provider_id: Option<String>,
2006 #[serde(default)]
2007 pub successes: Vec<ExternalAgentConfigImportItemTypeSuccess>,
2008}
2009
2010#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
2011#[serde(rename_all = "camelCase")]
2012pub struct ExternalAgentConfigImportHistoryRecordParams {
2013 #[serde(rename = "itemTypeResults", default)]
2014 pub item_type_results: Vec<ExternalAgentConfigImportHistoryRecordTypeResultParams>,
2015 #[serde(rename = "providerId", default)]
2016 pub provider_id: String,
2017}
2018
2019#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
2020#[serde(rename_all = "camelCase")]
2021pub struct ExternalAgentConfigImportHistoryRecordResponse {
2022 #[serde(rename = "importId", default)]
2023 pub import_id: String,
2024}
2025
2026#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2027#[serde(rename_all = "camelCase")]
2028pub struct ExternalAgentConfigImportHistoryRecordSuccessParams {
2029 #[serde(default, skip_serializing_if = "Option::is_none")]
2030 pub cwd: Option<String>,
2031 #[serde(rename = "itemType")]
2032 pub item_type: ExternalAgentConfigMigrationItemType,
2033 #[serde(default, skip_serializing_if = "Option::is_none")]
2034 pub source: Option<String>,
2035 #[serde(default, skip_serializing_if = "Option::is_none")]
2036 pub target: Option<String>,
2037 #[serde(default, skip_serializing_if = "Option::is_none")]
2038 pub title: Option<String>,
2039}
2040
2041#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2042#[serde(rename_all = "camelCase")]
2043pub struct ExternalAgentConfigImportHistoryRecordTypeResultParams {
2044 #[serde(default)]
2045 pub failures: Vec<ExternalAgentConfigImportItemTypeFailure>,
2046 #[serde(rename = "itemType")]
2047 pub item_type: ExternalAgentConfigMigrationItemType,
2048 #[serde(default)]
2049 pub successes: Vec<ExternalAgentConfigImportHistoryRecordSuccessParams>,
2050}
2051
2052#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2053#[serde(rename_all = "camelCase")]
2054pub struct ExternalAgentConfigImportItemTypeFailure {
2055 #[serde(default, skip_serializing_if = "Option::is_none")]
2056 pub cwd: Option<String>,
2057 #[serde(rename = "errorType", default, skip_serializing_if = "Option::is_none")]
2058 pub error_type: Option<String>,
2059 #[serde(rename = "failureStage", default)]
2060 pub failure_stage: String,
2061 #[serde(rename = "itemType")]
2062 pub item_type: ExternalAgentConfigMigrationItemType,
2063 #[serde(default)]
2064 pub message: String,
2065 #[serde(default, skip_serializing_if = "Option::is_none")]
2066 pub source: Option<String>,
2067 #[serde(
2068 rename = "subErrorType",
2069 default,
2070 skip_serializing_if = "Option::is_none"
2071 )]
2072 pub sub_error_type: Option<String>,
2073}
2074
2075#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2076#[serde(rename_all = "camelCase")]
2077pub struct ExternalAgentConfigImportItemTypeSuccess {
2078 #[serde(default, skip_serializing_if = "Option::is_none")]
2079 pub cwd: Option<String>,
2080 #[serde(rename = "itemType")]
2081 pub item_type: ExternalAgentConfigMigrationItemType,
2082 #[serde(default, skip_serializing_if = "Option::is_none")]
2083 pub source: Option<String>,
2084 #[serde(default, skip_serializing_if = "Option::is_none")]
2085 pub target: Option<String>,
2086 #[serde(default, skip_serializing_if = "Option::is_none")]
2087 pub title: Option<String>,
2088}
2089
2090#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
2091#[serde(rename_all = "camelCase")]
2092pub struct ExternalAgentConfigImportParams {
2093 #[serde(rename = "migrationItems", default)]
2094 pub migration_items: Vec<ExternalAgentConfigMigrationItem>,
2095 #[serde(
2096 rename = "migrationSource",
2097 default,
2098 skip_serializing_if = "Option::is_none"
2099 )]
2100 pub migration_source: Option<String>,
2101 #[serde(
2102 rename = "providerId",
2103 default,
2104 skip_serializing_if = "Option::is_none"
2105 )]
2106 pub provider_id: Option<String>,
2107 #[serde(default, skip_serializing_if = "Option::is_none")]
2108 pub source: Option<String>,
2109}
2110
2111#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
2112#[serde(rename_all = "camelCase")]
2113pub struct ExternalAgentConfigImportProgressNotification {
2114 #[serde(rename = "importId", default)]
2115 pub import_id: String,
2116 #[serde(rename = "itemTypeResults", default)]
2117 pub item_type_results: Vec<ExternalAgentConfigImportTypeResult>,
2118}
2119
2120#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
2121#[serde(rename_all = "camelCase")]
2122pub struct ExternalAgentConfigImportResponse {
2123 #[serde(rename = "importId", default)]
2124 pub import_id: String,
2125}
2126
2127#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2128#[serde(rename_all = "camelCase")]
2129pub struct ExternalAgentConfigImportTypeResult {
2130 #[serde(default)]
2131 pub failures: Vec<ExternalAgentConfigImportItemTypeFailure>,
2132 #[serde(rename = "itemType")]
2133 pub item_type: ExternalAgentConfigMigrationItemType,
2134 #[serde(default)]
2135 pub successes: Vec<ExternalAgentConfigImportItemTypeSuccess>,
2136}
2137
2138#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2139#[serde(rename_all = "camelCase")]
2140pub struct ExternalAgentConfigMigrationItem {
2141 #[serde(default, skip_serializing_if = "Option::is_none")]
2142 pub cwd: Option<String>,
2143 #[serde(default)]
2144 pub description: String,
2145 #[serde(default, skip_serializing_if = "Option::is_none")]
2146 pub details: Option<MigrationDetails>,
2147 #[serde(rename = "itemType")]
2148 pub item_type: ExternalAgentConfigMigrationItemType,
2149}
2150
2151#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
2152pub enum ExternalAgentConfigMigrationItemType {
2153 #[serde(rename = "AGENTS_MD")]
2154 AGENTS_MD,
2155 #[serde(rename = "CONFIG")]
2156 CONFIG,
2157 #[serde(rename = "SKILLS")]
2158 SKILLS,
2159 #[serde(rename = "PLUGINS")]
2160 PLUGINS,
2161 #[serde(rename = "MCP_SERVER_CONFIG")]
2162 MCP_SERVER_CONFIG,
2163 #[serde(rename = "SUBAGENTS")]
2164 SUBAGENTS,
2165 #[serde(rename = "HOOKS")]
2166 HOOKS,
2167 #[serde(rename = "COMMANDS")]
2168 COMMANDS,
2169 #[serde(rename = "MEMORY")]
2170 MEMORY,
2171 #[serde(rename = "SESSIONS")]
2172 SESSIONS,
2173}
2174
2175#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2176#[serde(rename_all = "camelCase")]
2177pub struct ExternalAgentDetectedConnectorCandidate {
2178 #[serde(default)]
2179 pub name: String,
2180 #[serde(rename = "sessionCount", default)]
2181 pub session_count: i64,
2182 #[serde()]
2183 pub source: ExternalAgentDetectedConnectorSource,
2184}
2185
2186#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
2187pub enum ExternalAgentDetectedConnectorSource {
2188 #[serde(rename = "remoteMcpServersConfig")]
2189 RemoteMcpServersConfig,
2190 #[serde(rename = "sessionToolUse")]
2191 SessionToolUse,
2192}
2193
2194#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2195#[serde(rename_all = "camelCase")]
2196pub struct ExternalAgentImportedConnectorCandidate {
2197 #[serde(default)]
2198 pub name: String,
2199 #[serde(rename = "sessionCount", default)]
2200 pub session_count: i64,
2201 #[serde()]
2202 pub source: ExternalAgentImportedConnectorSource,
2203}
2204
2205#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
2206pub enum ExternalAgentImportedConnectorSource {
2207 #[serde(rename = "remoteMcpServersConfig")]
2208 RemoteMcpServersConfig,
2209}
2210
2211#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
2212#[serde(rename_all = "camelCase")]
2213pub struct FeedbackRequirements {
2214 #[serde(default, skip_serializing_if = "Option::is_none")]
2215 pub enabled: Option<bool>,
2216}
2217
2218#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
2219#[serde(rename_all = "camelCase")]
2220pub struct FeedbackUploadParams {
2221 #[serde(default)]
2222 pub classification: String,
2223 #[serde(
2224 rename = "extraLogFiles",
2225 default,
2226 skip_serializing_if = "Option::is_none"
2227 )]
2228 pub extra_log_files: Option<Vec<String>>,
2229 #[serde(
2230 rename = "includeLogs",
2231 default,
2232 skip_serializing_if = "Option::is_none"
2233 )]
2234 pub include_logs: Option<bool>,
2235 #[serde(default, skip_serializing_if = "Option::is_none")]
2236 pub reason: Option<String>,
2237 #[serde(default, skip_serializing_if = "Option::is_none")]
2238 pub tags: Option<std::collections::BTreeMap<String, String>>,
2239 #[serde(rename = "threadId", default, skip_serializing_if = "Option::is_none")]
2240 pub thread_id: Option<String>,
2241}
2242
2243#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
2244#[serde(rename_all = "camelCase")]
2245pub struct FeedbackUploadResponse {
2246 #[serde(rename = "threadId", default)]
2247 pub thread_id: String,
2248}
2249
2250#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2251#[serde(tag = "type", rename_all = "camelCase")]
2252pub enum FileChange {
2253 Add {
2254 content: String,
2255 },
2256 Delete {
2257 content: String,
2258 },
2259 Update {
2260 #[serde(default, skip_serializing_if = "Option::is_none")]
2261 move_path: Option<String>,
2262 unified_diff: String,
2263 },
2264}
2265
2266#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)]
2267pub enum FileChangeApprovalDecision {
2268 #[serde(rename = "accept")]
2269 Accept,
2270 #[serde(rename = "acceptForSession")]
2271 AcceptForSession,
2272 #[serde(rename = "decline")]
2273 Decline,
2274 #[serde(rename = "cancel")]
2275 Cancel,
2276}
2277
2278#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
2279#[serde(rename_all = "camelCase")]
2280pub struct FileChangeOutputDeltaNotification {
2281 #[serde(default)]
2282 pub delta: String,
2283 #[serde(rename = "itemId", default)]
2284 pub item_id: String,
2285 #[serde(rename = "threadId", default)]
2286 pub thread_id: String,
2287 #[serde(rename = "turnId", default)]
2288 pub turn_id: String,
2289}
2290
2291#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
2292#[serde(rename_all = "camelCase")]
2293pub struct FileChangePatchUpdatedNotification {
2294 #[serde(default)]
2295 pub changes: Vec<FileUpdateChange>,
2296 #[serde(rename = "itemId", default)]
2297 pub item_id: String,
2298 #[serde(rename = "threadId", default)]
2299 pub thread_id: String,
2300 #[serde(rename = "turnId", default)]
2301 pub turn_id: String,
2302}
2303
2304#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
2305#[serde(rename_all = "camelCase")]
2306pub struct FileChangeRequestApprovalParams {
2307 #[serde(rename = "grantRoot", default, skip_serializing_if = "Option::is_none")]
2308 pub grant_root: Option<String>,
2309 #[serde(rename = "itemId", default)]
2310 pub item_id: String,
2311 #[serde(default, skip_serializing_if = "Option::is_none")]
2312 pub reason: Option<String>,
2313 #[serde(rename = "startedAtMs", default)]
2314 pub started_at_ms: i64,
2315 #[serde(rename = "threadId", default)]
2316 pub thread_id: String,
2317 #[serde(rename = "turnId", default)]
2318 pub turn_id: String,
2319}
2320
2321#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2322#[serde(rename_all = "camelCase")]
2323pub struct FileChangeRequestApprovalResponse {
2324 #[serde()]
2325 pub decision: FileChangeApprovalDecision,
2326}
2327
2328#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
2329pub enum FileSystemAccessMode {
2330 #[serde(rename = "read")]
2331 Read,
2332 #[serde(rename = "write")]
2333 Write,
2334 #[serde(rename = "deny")]
2335 Deny,
2336}
2337
2338#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2339#[serde(tag = "type", rename_all = "camelCase")]
2340pub enum FileSystemPath {
2341 Path { path: LegacyAppPathString },
2342 Glob_pattern { pattern: String },
2343 Special { value: FileSystemSpecialPath },
2344}
2345
2346#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2347#[serde(rename_all = "camelCase")]
2348pub struct FileSystemSandboxEntry {
2349 #[serde()]
2350 pub access: FileSystemAccessMode,
2351 #[serde()]
2352 pub path: FileSystemPath,
2353}
2354
2355#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2356#[serde(tag = "kind", rename_all = "camelCase")]
2357pub enum FileSystemSpecialPath {
2358 Root,
2359 Minimal,
2360 ProjectRoots {
2361 #[serde(default, skip_serializing_if = "Option::is_none")]
2362 subpath: Option<LegacyAppPathString>,
2363 },
2364 Tmpdir,
2365 SlashTmp,
2366 Unknown {
2367 path: String,
2368 #[serde(default, skip_serializing_if = "Option::is_none")]
2369 subpath: Option<LegacyAppPathString>,
2370 },
2371}
2372
2373#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2374#[serde(rename_all = "camelCase")]
2375pub struct FileUpdateChange {
2376 #[serde(default)]
2377 pub diff: String,
2378 #[serde()]
2379 pub kind: PatchChangeKind,
2380 #[serde(default)]
2381 pub path: String,
2382}
2383
2384#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2385#[serde(untagged)]
2386pub enum ForcedChatgptWorkspaceIds {
2387 Variant0(String),
2388 Variant1(Vec<String>),
2389}
2390
2391#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
2392pub enum ForcedLoginMethod {
2393 #[serde(rename = "chatgpt")]
2394 Chatgpt,
2395 #[serde(rename = "api")]
2396 Api,
2397}
2398
2399#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
2400#[serde(rename_all = "camelCase")]
2401pub struct FsChangedNotification {
2402 #[serde(rename = "changedPaths", default)]
2403 pub changed_paths: Vec<AbsolutePathBuf>,
2404 #[serde(rename = "watchId", default)]
2405 pub watch_id: String,
2406}
2407
2408#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
2409#[serde(rename_all = "camelCase")]
2410pub struct FsCopyParams {
2411 #[serde(rename = "destinationPath", default)]
2412 pub destination_path: Value,
2413 #[serde(default, skip_serializing_if = "Option::is_none")]
2414 pub recursive: Option<bool>,
2415 #[serde(rename = "sourcePath", default)]
2416 pub source_path: Value,
2417}
2418
2419#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
2420#[serde(rename_all = "camelCase")]
2421pub struct FsCopyResponse {
2422 #[serde(flatten, default, skip_serializing_if = "serde_json::Map::is_empty")]
2423 pub extra: serde_json::Map<String, Value>,
2424}
2425
2426#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
2427#[serde(rename_all = "camelCase")]
2428pub struct FsCreateDirectoryParams {
2429 #[serde(default)]
2430 pub path: Value,
2431 #[serde(default, skip_serializing_if = "Option::is_none")]
2432 pub recursive: Option<bool>,
2433}
2434
2435#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
2436#[serde(rename_all = "camelCase")]
2437pub struct FsCreateDirectoryResponse {
2438 #[serde(flatten, default, skip_serializing_if = "serde_json::Map::is_empty")]
2439 pub extra: serde_json::Map<String, Value>,
2440}
2441
2442#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
2443#[serde(rename_all = "camelCase")]
2444pub struct FsGetMetadataParams {
2445 #[serde(default)]
2446 pub path: Value,
2447}
2448
2449#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
2450#[serde(rename_all = "camelCase")]
2451pub struct FsGetMetadataResponse {
2452 #[serde(rename = "createdAtMs", default)]
2453 pub created_at_ms: i64,
2454 #[serde(rename = "isDirectory", default)]
2455 pub is_directory: bool,
2456 #[serde(rename = "isFile", default)]
2457 pub is_file: bool,
2458 #[serde(rename = "isSymlink", default)]
2459 pub is_symlink: bool,
2460 #[serde(rename = "modifiedAtMs", default)]
2461 pub modified_at_ms: i64,
2462}
2463
2464#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
2465#[serde(rename_all = "camelCase")]
2466pub struct FsReadDirectoryEntry {
2467 #[serde(rename = "fileName", default)]
2468 pub file_name: String,
2469 #[serde(rename = "isDirectory", default)]
2470 pub is_directory: bool,
2471 #[serde(rename = "isFile", default)]
2472 pub is_file: bool,
2473}
2474
2475#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
2476#[serde(rename_all = "camelCase")]
2477pub struct FsReadDirectoryParams {
2478 #[serde(default)]
2479 pub path: Value,
2480}
2481
2482#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
2483#[serde(rename_all = "camelCase")]
2484pub struct FsReadDirectoryResponse {
2485 #[serde(default)]
2486 pub entries: Vec<FsReadDirectoryEntry>,
2487}
2488
2489#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
2490#[serde(rename_all = "camelCase")]
2491pub struct FsReadFileParams {
2492 #[serde(default)]
2493 pub path: Value,
2494}
2495
2496#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
2497#[serde(rename_all = "camelCase")]
2498pub struct FsReadFileResponse {
2499 #[serde(rename = "dataBase64", default)]
2500 pub data_base64: String,
2501}
2502
2503#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
2504#[serde(rename_all = "camelCase")]
2505pub struct FsRemoveParams {
2506 #[serde(default, skip_serializing_if = "Option::is_none")]
2507 pub force: Option<bool>,
2508 #[serde(default)]
2509 pub path: Value,
2510 #[serde(default, skip_serializing_if = "Option::is_none")]
2511 pub recursive: Option<bool>,
2512}
2513
2514#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
2515#[serde(rename_all = "camelCase")]
2516pub struct FsRemoveResponse {
2517 #[serde(flatten, default, skip_serializing_if = "serde_json::Map::is_empty")]
2518 pub extra: serde_json::Map<String, Value>,
2519}
2520
2521#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
2522#[serde(rename_all = "camelCase")]
2523pub struct FsUnwatchParams {
2524 #[serde(rename = "watchId", default)]
2525 pub watch_id: String,
2526}
2527
2528#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
2529#[serde(rename_all = "camelCase")]
2530pub struct FsUnwatchResponse {
2531 #[serde(flatten, default, skip_serializing_if = "serde_json::Map::is_empty")]
2532 pub extra: serde_json::Map<String, Value>,
2533}
2534
2535#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
2536#[serde(rename_all = "camelCase")]
2537pub struct FsWatchParams {
2538 #[serde(default)]
2539 pub path: Value,
2540 #[serde(rename = "watchId", default)]
2541 pub watch_id: String,
2542}
2543
2544#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
2545#[serde(rename_all = "camelCase")]
2546pub struct FsWatchResponse {
2547 #[serde(default)]
2548 pub path: Value,
2549}
2550
2551#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
2552#[serde(rename_all = "camelCase")]
2553pub struct FsWriteFileParams {
2554 #[serde(rename = "dataBase64", default)]
2555 pub data_base64: String,
2556 #[serde(default)]
2557 pub path: Value,
2558}
2559
2560#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
2561#[serde(rename_all = "camelCase")]
2562pub struct FsWriteFileResponse {
2563 #[serde(flatten, default, skip_serializing_if = "serde_json::Map::is_empty")]
2564 pub extra: serde_json::Map<String, Value>,
2565}
2566
2567#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
2568pub enum FuzzyFileSearchMatchType {
2569 #[serde(rename = "file")]
2570 File,
2571 #[serde(rename = "directory")]
2572 Directory,
2573}
2574
2575#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
2576#[serde(rename_all = "camelCase")]
2577pub struct FuzzyFileSearchParams {
2578 #[serde(
2579 rename = "cancellationToken",
2580 default,
2581 skip_serializing_if = "Option::is_none"
2582 )]
2583 pub cancellation_token: Option<String>,
2584 #[serde(default)]
2585 pub query: String,
2586 #[serde(default)]
2587 pub roots: Vec<String>,
2588}
2589
2590#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
2591#[serde(rename_all = "camelCase")]
2592pub struct FuzzyFileSearchResponse {
2593 #[serde(default)]
2594 pub files: Vec<FuzzyFileSearchResult>,
2595}
2596
2597#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2600#[serde(untagged)]
2601pub enum FunctionCallOutputBody {
2602 Text(String),
2603 Items(Vec<FunctionCallOutputContentItem>),
2604}
2605
2606#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2610#[serde(tag = "type")]
2611pub enum FunctionCallOutputContentItem {
2612 #[serde(rename = "input_text")]
2613 InputText { text: String },
2614 #[serde(rename = "input_image")]
2615 InputImage {
2616 #[serde(default, skip_serializing_if = "Option::is_none")]
2617 detail: Option<ImageDetail>,
2618 image_url: String,
2619 },
2620 #[serde(rename = "input_audio")]
2621 InputAudio { audio_url: String },
2622 #[serde(rename = "encrypted_content")]
2623 EncryptedContent { encrypted_content: String },
2624}
2625
2626#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2627#[serde(rename_all = "camelCase")]
2628pub struct FuzzyFileSearchResult {
2629 #[serde(default)]
2630 pub file_name: String,
2631 #[serde(default, skip_serializing_if = "Option::is_none")]
2632 pub indices: Option<Vec<i64>>,
2633 #[serde()]
2634 pub match_type: FuzzyFileSearchMatchType,
2635 #[serde(default)]
2636 pub path: String,
2637 #[serde(default)]
2638 pub root: String,
2639 #[serde(default)]
2640 pub score: i64,
2641}
2642
2643#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
2644#[serde(rename_all = "camelCase")]
2645pub struct FuzzyFileSearchSessionCompletedNotification {
2646 #[serde(rename = "sessionId", default)]
2647 pub session_id: String,
2648}
2649
2650#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
2651#[serde(rename_all = "camelCase")]
2652pub struct FuzzyFileSearchSessionUpdatedNotification {
2653 #[serde(default)]
2654 pub files: Vec<FuzzyFileSearchResult>,
2655 #[serde(default)]
2656 pub query: String,
2657 #[serde(rename = "sessionId", default)]
2658 pub session_id: String,
2659}
2660
2661#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
2662#[serde(rename_all = "camelCase")]
2663pub struct GetAccountParams {
2664 #[serde(
2665 rename = "refreshToken",
2666 default,
2667 skip_serializing_if = "Option::is_none"
2668 )]
2669 pub refresh_token: Option<bool>,
2670}
2671
2672#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
2673#[serde(rename_all = "camelCase")]
2674pub struct GetAccountRateLimitsResponse {
2675 #[serde(rename = "accountId", default, skip_serializing_if = "Option::is_none")]
2676 pub account_id: Option<String>,
2677 #[serde(
2678 rename = "rateLimitResetCredits",
2679 default,
2680 skip_serializing_if = "Option::is_none"
2681 )]
2682 pub rate_limit_reset_credits: Option<RateLimitResetCreditsSummary>,
2683 #[serde(
2684 rename = "rateLimitUpsell",
2685 default,
2686 skip_serializing_if = "Option::is_none"
2687 )]
2688 pub rate_limit_upsell: Option<Value>,
2689 #[serde(rename = "rateLimits", default)]
2690 pub rate_limits: Value,
2691 #[serde(
2692 rename = "rateLimitsByLimitId",
2693 default,
2694 skip_serializing_if = "Option::is_none"
2695 )]
2696 pub rate_limits_by_limit_id: Option<std::collections::BTreeMap<String, RateLimitSnapshot>>,
2697}
2698
2699#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
2700#[serde(rename_all = "camelCase")]
2701pub struct GetAccountResponse {
2702 #[serde(default, skip_serializing_if = "Option::is_none")]
2703 pub account: Option<Account>,
2704 #[serde(rename = "requiresOpenaiAuth", default)]
2705 pub requires_openai_auth: bool,
2706}
2707
2708#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2709#[serde(rename_all = "camelCase")]
2710pub struct GetAccountTokenUsageResponse {
2711 #[serde(
2712 rename = "dailyUsageBuckets",
2713 default,
2714 skip_serializing_if = "Option::is_none"
2715 )]
2716 pub daily_usage_buckets: Option<Vec<AccountTokenUsageDailyBucket>>,
2717 #[serde()]
2718 pub summary: AccountTokenUsageSummary,
2719 #[serde(
2720 rename = "threadUsage",
2721 default,
2722 skip_serializing_if = "Option::is_none"
2723 )]
2724 pub thread_usage: Option<ThreadUsage>,
2725}
2726
2727#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
2728#[serde(rename_all = "camelCase")]
2729pub struct GetAccountTokenUsageParams {
2730 #[serde(rename = "threadId", default, skip_serializing_if = "Option::is_none")]
2731 pub thread_id: Option<String>,
2732}
2733
2734#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
2735#[serde(rename_all = "camelCase")]
2736pub struct ThreadUsage {
2737 #[serde(rename = "estimatedUsageCreditsMicros", default)]
2738 pub estimated_usage_credits_micros: i64,
2739 #[serde(
2740 rename = "estimatedUsageUsdMicros",
2741 default,
2742 skip_serializing_if = "Option::is_none"
2743 )]
2744 pub estimated_usage_usd_micros: Option<i64>,
2745 #[serde(default)]
2746 pub groups: Vec<ThreadUsageBreakdownGroup>,
2747 #[serde(rename = "threadId", default)]
2748 pub thread_id: String,
2749}
2750
2751#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
2752#[serde(rename_all = "camelCase")]
2753pub struct ThreadUsageBreakdownGroup {
2754 #[serde(
2755 rename = "cachedInputTokens",
2756 default,
2757 skip_serializing_if = "Option::is_none"
2758 )]
2759 pub cached_input_tokens: Option<i64>,
2760 #[serde(rename = "estimatedUsageCreditsMicros", default)]
2761 pub estimated_usage_credits_micros: i64,
2762 #[serde(
2763 rename = "inputTokens",
2764 default,
2765 skip_serializing_if = "Option::is_none"
2766 )]
2767 pub input_tokens: Option<i64>,
2768 #[serde(default, skip_serializing_if = "Option::is_none")]
2769 pub model: Option<String>,
2770 #[serde(
2771 rename = "netNewInputTokens",
2772 default,
2773 skip_serializing_if = "Option::is_none"
2774 )]
2775 pub net_new_input_tokens: Option<i64>,
2776 #[serde(
2777 rename = "outputTokens",
2778 default,
2779 skip_serializing_if = "Option::is_none"
2780 )]
2781 pub output_tokens: Option<i64>,
2782 #[serde(
2783 rename = "reasoningEffort",
2784 default,
2785 skip_serializing_if = "Option::is_none"
2786 )]
2787 pub reasoning_effort: Option<String>,
2788 #[serde(default, skip_serializing_if = "Option::is_none")]
2789 pub speed: Option<String>,
2790 #[serde(
2791 rename = "totalTokens",
2792 default,
2793 skip_serializing_if = "Option::is_none"
2794 )]
2795 pub total_tokens: Option<i64>,
2796}
2797
2798#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2799#[serde(tag = "type", rename_all = "camelCase")]
2800pub enum ImageGenerationFailure {
2801 #[serde(rename = "usageLimitExceeded")]
2802 UsageLimitExceeded {
2803 #[serde(rename = "limitId")]
2804 limit_id: String,
2805 #[serde(rename = "resetsAt", default, skip_serializing_if = "Option::is_none")]
2806 resets_at: Option<i64>,
2807 },
2808}
2809
2810#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2811#[serde(rename_all = "lowercase")]
2812pub enum McpServerOauthClientRegistration {
2813 Auto,
2814 Cimd,
2815 Dcr,
2816}
2817
2818#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
2819#[serde(rename_all = "camelCase")]
2820pub struct GetWorkspaceMessagesResponse {
2821 #[serde(rename = "featureEnabled", default)]
2822 pub feature_enabled: bool,
2823 #[serde(default)]
2824 pub messages: Vec<WorkspaceMessage>,
2825}
2826
2827#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
2828#[serde(rename_all = "camelCase")]
2829pub struct GitInfo {
2830 #[serde(default, skip_serializing_if = "Option::is_none")]
2831 pub branch: Option<String>,
2832 #[serde(rename = "originUrl", default, skip_serializing_if = "Option::is_none")]
2833 pub origin_url: Option<String>,
2834 #[serde(default, skip_serializing_if = "Option::is_none")]
2835 pub sha: Option<String>,
2836}
2837
2838#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
2839#[serde(rename_all = "camelCase")]
2840pub struct GrantedPermissionProfile {
2841 #[serde(
2842 rename = "fileSystem",
2843 default,
2844 skip_serializing_if = "Option::is_none"
2845 )]
2846 pub file_system: Option<AdditionalFileSystemPermissions>,
2847 #[serde(default, skip_serializing_if = "Option::is_none")]
2848 pub network: Option<AdditionalNetworkPermissions>,
2849}
2850
2851#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2852#[serde(rename_all = "camelCase")]
2853pub struct GuardianApprovalReview {
2854 #[serde(default, skip_serializing_if = "Option::is_none")]
2855 pub rationale: Option<String>,
2856 #[serde(rename = "riskLevel", default, skip_serializing_if = "Option::is_none")]
2857 pub risk_level: Option<GuardianRiskLevel>,
2858 #[serde()]
2859 pub status: GuardianApprovalReviewStatus,
2860 #[serde(
2861 rename = "userAuthorization",
2862 default,
2863 skip_serializing_if = "Option::is_none"
2864 )]
2865 pub user_authorization: Option<GuardianUserAuthorization>,
2866}
2867
2868#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2869#[serde(tag = "type", rename_all = "camelCase")]
2870pub enum GuardianApprovalReviewAction {
2871 Command {
2872 command: String,
2873 cwd: AbsolutePathBuf,
2874 source: GuardianCommandSource,
2875 },
2876 Execve {
2877 argv: Vec<String>,
2878 cwd: AbsolutePathBuf,
2879 program: String,
2880 source: GuardianCommandSource,
2881 },
2882 #[serde(rename = "writeStdin")]
2883 WriteStdin {
2884 #[serde(rename = "approvalId")]
2885 approval_id: String,
2886 cwd: LegacyAppPathString,
2887 #[serde(rename = "processId")]
2888 process_id: String,
2889 stdin: String,
2890 },
2891 #[serde(rename = "applyPatch")]
2892 ApplyPatch {
2893 cwd: AbsolutePathBuf,
2894 files: Vec<AbsolutePathBuf>,
2895 },
2896 #[serde(rename = "networkAccess")]
2897 NetworkAccess {
2898 host: String,
2899 port: i64,
2900 protocol: NetworkApprovalProtocol,
2901 target: String,
2902 },
2903 #[serde(rename = "mcpToolCall")]
2904 McpToolCall {
2905 #[serde(
2906 rename = "connectorId",
2907 default,
2908 skip_serializing_if = "Option::is_none"
2909 )]
2910 connector_id: Option<String>,
2911 #[serde(
2912 rename = "connectorName",
2913 default,
2914 skip_serializing_if = "Option::is_none"
2915 )]
2916 connector_name: Option<String>,
2917 server: String,
2918 #[serde(rename = "toolName")]
2919 tool_name: String,
2920 #[serde(rename = "toolTitle", default, skip_serializing_if = "Option::is_none")]
2921 tool_title: Option<String>,
2922 },
2923 #[serde(rename = "requestPermissions")]
2924 RequestPermissions {
2925 permissions: RequestPermissionProfile,
2926 #[serde(default, skip_serializing_if = "Option::is_none")]
2927 reason: Option<String>,
2928 },
2929}
2930
2931#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
2932pub enum GuardianApprovalReviewStatus {
2933 #[serde(rename = "inProgress")]
2934 InProgress,
2935 #[serde(rename = "approved")]
2936 Approved,
2937 #[serde(rename = "denied")]
2938 Denied,
2939 #[serde(rename = "timedOut")]
2940 TimedOut,
2941 #[serde(rename = "aborted")]
2942 Aborted,
2943}
2944
2945#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
2946pub enum GuardianCommandSource {
2947 #[serde(rename = "shell")]
2948 Shell,
2949 #[serde(rename = "unifiedExec")]
2950 UnifiedExec,
2951}
2952
2953#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
2954pub enum GuardianRiskLevel {
2955 #[serde(rename = "low")]
2956 Low,
2957 #[serde(rename = "medium")]
2958 Medium,
2959 #[serde(rename = "high")]
2960 High,
2961 #[serde(rename = "critical")]
2962 Critical,
2963}
2964
2965#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
2966pub enum GuardianUserAuthorization {
2967 #[serde(rename = "unknown")]
2968 Unknown,
2969 #[serde(rename = "low")]
2970 Low,
2971 #[serde(rename = "medium")]
2972 Medium,
2973 #[serde(rename = "high")]
2974 High,
2975}
2976
2977#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
2978#[serde(rename_all = "camelCase")]
2979pub struct GuardianWarningNotification {
2980 #[serde(default)]
2981 pub message: String,
2982 #[serde(rename = "threadId", default)]
2983 pub thread_id: String,
2984}
2985
2986#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
2987#[serde(rename_all = "camelCase")]
2988pub struct HookCompletedNotification {
2989 #[serde()]
2990 pub run: HookRunSummary,
2991 #[serde(rename = "threadId", default)]
2992 pub thread_id: String,
2993 #[serde(rename = "turnId", default, skip_serializing_if = "Option::is_none")]
2994 pub turn_id: Option<String>,
2995}
2996
2997#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
2998#[serde(rename_all = "camelCase")]
2999pub struct HookErrorInfo {
3000 #[serde(default)]
3001 pub message: String,
3002 #[serde(default)]
3003 pub path: String,
3004}
3005
3006#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
3007pub enum HookEventName {
3008 #[serde(rename = "preToolUse")]
3009 PreToolUse,
3010 #[serde(rename = "permissionRequest")]
3011 PermissionRequest,
3012 #[serde(rename = "postToolUse")]
3013 PostToolUse,
3014 #[serde(rename = "preCompact")]
3015 PreCompact,
3016 #[serde(rename = "postCompact")]
3017 PostCompact,
3018 #[serde(rename = "sessionStart")]
3019 SessionStart,
3020 #[serde(rename = "sessionEnd")]
3021 SessionEnd,
3022 #[serde(rename = "userPromptSubmit")]
3023 UserPromptSubmit,
3024 #[serde(rename = "subagentStart")]
3025 SubagentStart,
3026 #[serde(rename = "subagentStop")]
3027 SubagentStop,
3028 #[serde(rename = "stop")]
3029 Stop,
3030 #[serde(rename = "interrupt")]
3031 Interrupt,
3032}
3033
3034#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
3035pub enum HookExecutionMode {
3036 #[serde(rename = "sync")]
3037 Sync,
3038 #[serde(rename = "async")]
3039 Async,
3040}
3041
3042#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
3043pub enum HookHandlerType {
3044 #[serde(rename = "command")]
3045 Command,
3046 #[serde(rename = "mcpTool")]
3047 McpTool,
3048 #[serde(rename = "prompt")]
3049 Prompt,
3050 #[serde(rename = "agent")]
3051 Agent,
3052}
3053
3054#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3055#[serde(rename_all = "camelCase")]
3056pub struct HookMetadata {
3057 #[serde(
3058 rename = "additionalContextLimit",
3059 default,
3060 skip_serializing_if = "Option::is_none"
3061 )]
3062 pub additional_context_limit: Option<i64>,
3063 #[serde(rename = "async", default, skip_serializing_if = "Option::is_none")]
3064 pub is_async: Option<bool>,
3065 #[serde(default, skip_serializing_if = "Option::is_none")]
3066 pub command: Option<String>,
3067 #[serde(rename = "currentHash", default)]
3068 pub current_hash: String,
3069 #[serde(default, skip_serializing_if = "Option::is_none")]
3071 pub server: Option<String>,
3072 #[serde(default, skip_serializing_if = "Option::is_none")]
3074 pub tool: Option<String>,
3075 #[serde(rename = "displayOrder", default)]
3076 pub display_order: i64,
3077 #[serde(default)]
3078 pub enabled: bool,
3079 #[serde(rename = "eventName")]
3080 pub event_name: HookEventName,
3081 #[serde(
3082 rename = "executionMode",
3083 default,
3084 skip_serializing_if = "Option::is_none"
3085 )]
3086 pub execution_mode: Option<Value>,
3087 #[serde(rename = "handlerType")]
3088 pub handler_type: HookHandlerType,
3089 #[serde(rename = "isManaged", default)]
3090 pub is_managed: bool,
3091 #[serde(default)]
3092 pub key: String,
3093 #[serde(default, skip_serializing_if = "Option::is_none")]
3094 pub matcher: Option<String>,
3095 #[serde(rename = "pluginId", default, skip_serializing_if = "Option::is_none")]
3096 pub plugin_id: Option<String>,
3097 #[serde()]
3098 pub source: HookSource,
3099 #[serde(rename = "sourcePath")]
3100 pub source_path: AbsolutePathBuf,
3101 #[serde(
3102 rename = "statusMessage",
3103 default,
3104 skip_serializing_if = "Option::is_none"
3105 )]
3106 pub status_message: Option<String>,
3107 #[serde(rename = "timeoutSec", default)]
3108 pub timeout_sec: i64,
3109 #[serde(rename = "trustStatus")]
3110 pub trust_status: HookTrustStatus,
3111}
3112
3113#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
3114#[serde(rename_all = "camelCase")]
3115pub struct HookMigration {
3116 #[serde(default)]
3117 pub name: String,
3118}
3119
3120#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3121#[serde(rename_all = "camelCase")]
3122pub struct HookOutputEntry {
3123 #[serde()]
3124 pub kind: HookOutputEntryKind,
3125 #[serde(default)]
3126 pub text: String,
3127}
3128
3129#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
3130pub enum HookOutputEntryKind {
3131 #[serde(rename = "warning")]
3132 Warning,
3133 #[serde(rename = "stop")]
3134 Stop,
3135 #[serde(rename = "feedback")]
3136 Feedback,
3137 #[serde(rename = "context")]
3138 Context,
3139 #[serde(rename = "error")]
3140 Error,
3141}
3142
3143#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
3144#[serde(rename_all = "camelCase")]
3145pub struct HookPromptFragment {
3146 #[serde(rename = "hookRunId", default)]
3147 pub hook_run_id: String,
3148 #[serde(default)]
3149 pub text: String,
3150}
3151
3152#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
3153pub enum HookRunStatus {
3154 #[serde(rename = "running")]
3155 Running,
3156 #[serde(rename = "completed")]
3157 Completed,
3158 #[serde(rename = "failed")]
3159 Failed,
3160 #[serde(rename = "blocked")]
3161 Blocked,
3162 #[serde(rename = "stopped")]
3163 Stopped,
3164}
3165
3166#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3167#[serde(rename_all = "camelCase")]
3168pub struct HookRunSummary {
3169 #[serde(
3170 rename = "completedAt",
3171 default,
3172 skip_serializing_if = "Option::is_none"
3173 )]
3174 pub completed_at: Option<i64>,
3175 #[serde(rename = "displayOrder", default)]
3176 pub display_order: i64,
3177 #[serde(
3178 rename = "durationMs",
3179 default,
3180 skip_serializing_if = "Option::is_none"
3181 )]
3182 pub duration_ms: Option<i64>,
3183 #[serde(default)]
3184 pub entries: Vec<HookOutputEntry>,
3185 #[serde(rename = "eventName")]
3186 pub event_name: HookEventName,
3187 #[serde(rename = "executionMode")]
3188 pub execution_mode: HookExecutionMode,
3189 #[serde(rename = "handlerType")]
3190 pub handler_type: HookHandlerType,
3191 #[serde(default)]
3192 pub id: String,
3193 #[serde()]
3194 pub scope: HookScope,
3195 #[serde(default, skip_serializing_if = "Option::is_none")]
3196 pub source: Option<Value>,
3197 #[serde(rename = "sourcePath")]
3198 pub source_path: AbsolutePathBuf,
3199 #[serde(rename = "startedAt", default)]
3200 pub started_at: i64,
3201 #[serde()]
3202 pub status: HookRunStatus,
3203 #[serde(
3204 rename = "statusMessage",
3205 default,
3206 skip_serializing_if = "Option::is_none"
3207 )]
3208 pub status_message: Option<String>,
3209}
3210
3211#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
3212pub enum HookScope {
3213 #[serde(rename = "thread")]
3214 Thread,
3215 #[serde(rename = "turn")]
3216 Turn,
3217}
3218
3219#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
3220pub enum HookSource {
3221 #[serde(rename = "system")]
3222 System,
3223 #[serde(rename = "user")]
3224 User,
3225 #[serde(rename = "project")]
3226 Project,
3227 #[serde(rename = "mdm")]
3228 Mdm,
3229 #[serde(rename = "sessionFlags")]
3230 SessionFlags,
3231 #[serde(rename = "plugin")]
3232 Plugin,
3233 #[serde(rename = "cloudRequirements")]
3234 CloudRequirements,
3235 #[serde(rename = "cloudManagedConfig")]
3236 CloudManagedConfig,
3237 #[serde(rename = "legacyManagedConfigFile")]
3238 LegacyManagedConfigFile,
3239 #[serde(rename = "legacyManagedConfigMdm")]
3240 LegacyManagedConfigMdm,
3241 #[serde(rename = "unknown")]
3242 Unknown,
3243}
3244
3245#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3246#[serde(rename_all = "camelCase")]
3247pub struct HookStartedNotification {
3248 #[serde()]
3249 pub run: HookRunSummary,
3250 #[serde(rename = "threadId", default)]
3251 pub thread_id: String,
3252 #[serde(rename = "turnId", default, skip_serializing_if = "Option::is_none")]
3253 pub turn_id: Option<String>,
3254}
3255
3256#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
3257pub enum HookTrustStatus {
3258 #[serde(rename = "managed")]
3259 Managed,
3260 #[serde(rename = "untrusted")]
3261 Untrusted,
3262 #[serde(rename = "trusted")]
3263 Trusted,
3264 #[serde(rename = "modified")]
3265 Modified,
3266}
3267
3268#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
3269#[serde(rename_all = "camelCase")]
3270pub struct HooksListEntry {
3271 #[serde(default)]
3272 pub cwd: String,
3273 #[serde(default)]
3274 pub errors: Vec<HookErrorInfo>,
3275 #[serde(default)]
3276 pub hooks: Vec<HookMetadata>,
3277 #[serde(default)]
3278 pub warnings: Vec<String>,
3279}
3280
3281#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
3282#[serde(rename_all = "camelCase")]
3283pub struct HooksListParams {
3284 #[serde(default, skip_serializing_if = "Option::is_none")]
3285 pub cwds: Option<Vec<String>>,
3286}
3287
3288#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
3289#[serde(rename_all = "camelCase")]
3290pub struct HooksListResponse {
3291 #[serde(default)]
3292 pub data: Vec<HooksListEntry>,
3293}
3294
3295#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
3296pub enum ImageDetail {
3297 #[serde(rename = "auto")]
3298 Auto,
3299 #[serde(rename = "low")]
3300 Low,
3301 #[serde(rename = "high")]
3302 High,
3303 #[serde(rename = "original")]
3304 Original,
3305}
3306
3307#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
3308#[serde(rename_all = "camelCase")]
3309pub struct InitializeCapabilities {
3310 #[serde(
3311 rename = "experimentalApi",
3312 default,
3313 skip_serializing_if = "Option::is_none"
3314 )]
3315 pub experimental_api: Option<bool>,
3316 #[serde(default, skip_serializing_if = "Option::is_none")]
3317 pub extensions: Option<Value>,
3318 #[serde(
3319 rename = "mcpServerOpenaiFormElicitation",
3320 default,
3321 skip_serializing_if = "Option::is_none"
3322 )]
3323 pub mcp_server_openai_form_elicitation: Option<bool>,
3324 #[serde(
3325 rename = "optOutNotificationMethods",
3326 default,
3327 skip_serializing_if = "Option::is_none"
3328 )]
3329 pub opt_out_notification_methods: Option<Vec<String>>,
3330 #[serde(
3331 rename = "requestAttestation",
3332 default,
3333 skip_serializing_if = "Option::is_none"
3334 )]
3335 pub request_attestation: Option<bool>,
3336}
3337
3338#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3339#[serde(rename_all = "camelCase")]
3340pub struct InitializeParams {
3341 #[serde(default, skip_serializing_if = "Option::is_none")]
3342 pub capabilities: Option<InitializeCapabilities>,
3343 #[serde(rename = "clientInfo")]
3344 pub client_info: ClientInfo,
3345}
3346
3347#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
3348#[serde(rename_all = "camelCase")]
3349pub struct InitializeResponse {
3350 #[serde(rename = "codexHome", default)]
3351 pub codex_home: Value,
3352 #[serde(rename = "platformFamily", default)]
3353 pub platform_family: String,
3354 #[serde(rename = "platformOs", default)]
3355 pub platform_os: String,
3356 #[serde(rename = "userAgent", default)]
3357 pub user_agent: String,
3358}
3359
3360#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)]
3361pub enum InputModality {
3362 #[serde(rename = "text")]
3363 Text,
3364 #[serde(rename = "image")]
3365 Image,
3366 #[serde(rename = "audio")]
3367 Audio,
3368}
3369
3370#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
3371#[serde(rename_all = "camelCase")]
3372pub struct InstalledApp {
3373 #[serde(default)]
3374 pub callable: bool,
3375 #[serde(default)]
3376 pub enabled: bool,
3377 #[serde(default)]
3378 pub id: String,
3379 #[serde(
3380 rename = "runtimeName",
3381 default,
3382 skip_serializing_if = "Option::is_none"
3383 )]
3384 pub runtime_name: Option<String>,
3385}
3386
3387#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3388#[serde(rename_all = "camelCase")]
3389pub struct ItemCompletedNotification {
3390 #[serde(rename = "completedAtMs", default)]
3391 pub completed_at_ms: i64,
3392 #[serde()]
3393 pub item: ThreadItem,
3394 #[serde(rename = "threadId", default)]
3395 pub thread_id: String,
3396 #[serde(rename = "turnId", default)]
3397 pub turn_id: String,
3398}
3399
3400#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3401#[serde(rename_all = "camelCase")]
3402pub struct ItemGuardianApprovalReviewCompletedNotification {
3403 #[serde()]
3404 pub action: GuardianApprovalReviewAction,
3405 #[serde(rename = "completedAtMs", default)]
3406 pub completed_at_ms: i64,
3407 #[serde(rename = "decisionSource")]
3408 pub decision_source: AutoReviewDecisionSource,
3409 #[serde()]
3410 pub review: GuardianApprovalReview,
3411 #[serde(rename = "reviewId", default)]
3412 pub review_id: String,
3413 #[serde(rename = "startedAtMs", default)]
3414 pub started_at_ms: i64,
3415 #[serde(
3416 rename = "targetItemId",
3417 default,
3418 skip_serializing_if = "Option::is_none"
3419 )]
3420 pub target_item_id: Option<String>,
3421 #[serde(rename = "threadId", default)]
3422 pub thread_id: String,
3423 #[serde(rename = "turnId", default)]
3424 pub turn_id: String,
3425}
3426
3427#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3428#[serde(rename_all = "camelCase")]
3429pub struct ItemGuardianApprovalReviewStartedNotification {
3430 #[serde()]
3431 pub action: GuardianApprovalReviewAction,
3432 #[serde()]
3433 pub review: GuardianApprovalReview,
3434 #[serde(rename = "reviewId", default)]
3435 pub review_id: String,
3436 #[serde(rename = "startedAtMs", default)]
3437 pub started_at_ms: i64,
3438 #[serde(
3439 rename = "targetItemId",
3440 default,
3441 skip_serializing_if = "Option::is_none"
3442 )]
3443 pub target_item_id: Option<String>,
3444 #[serde(rename = "threadId", default)]
3445 pub thread_id: String,
3446 #[serde(rename = "turnId", default)]
3447 pub turn_id: String,
3448}
3449
3450#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3451#[serde(rename_all = "camelCase")]
3452pub struct ItemStartedNotification {
3453 #[serde()]
3454 pub item: ThreadItem,
3455 #[serde(rename = "startedAtMs", default)]
3456 pub started_at_ms: i64,
3457 #[serde(rename = "threadId", default)]
3458 pub thread_id: String,
3459 #[serde(rename = "turnId", default)]
3460 pub turn_id: String,
3461}
3462
3463#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3464#[serde(rename_all = "camelCase")]
3465pub struct JSONRPCResponse {
3466 #[serde()]
3467 pub id: RequestId,
3468 #[serde(default)]
3469 pub result: Value,
3470}
3471
3472#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq, Hash)]
3473#[serde(transparent)]
3474pub struct LegacyAppPathString(pub String);
3475
3476#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
3477#[serde(rename_all = "camelCase")]
3478pub struct ListMcpServerStatusParams {
3479 #[serde(default, skip_serializing_if = "Option::is_none")]
3480 pub cursor: Option<String>,
3481 #[serde(default, skip_serializing_if = "Option::is_none")]
3482 pub detail: Option<McpServerStatusDetail>,
3483 #[serde(default, skip_serializing_if = "Option::is_none")]
3484 pub limit: Option<i64>,
3485 #[serde(rename = "threadId", default, skip_serializing_if = "Option::is_none")]
3486 pub thread_id: Option<String>,
3487}
3488
3489#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
3490#[serde(rename_all = "camelCase")]
3491pub struct ListMcpServerStatusResponse {
3492 #[serde(default)]
3493 pub data: Vec<McpServerStatus>,
3494 #[serde(
3495 rename = "nextCursor",
3496 default,
3497 skip_serializing_if = "Option::is_none"
3498 )]
3499 pub next_cursor: Option<String>,
3500}
3501
3502#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3503#[serde(tag = "type", rename_all = "camelCase")]
3504pub enum LoginAccountParams {
3505 #[serde(rename = "apiKey")]
3506 ApiKey {
3507 #[serde(rename = "apiKey")]
3508 api_key: String,
3509 },
3510 Chatgpt {
3511 #[serde(rename = "appBrand", default, skip_serializing_if = "Option::is_none")]
3512 app_brand: Option<LoginAppBrand>,
3513 #[serde(
3514 rename = "codexStreamlinedLogin",
3515 default,
3516 skip_serializing_if = "Option::is_none"
3517 )]
3518 codex_streamlined_login: Option<bool>,
3519 #[serde(
3520 rename = "useHostedLoginSuccessPage",
3521 default,
3522 skip_serializing_if = "Option::is_none"
3523 )]
3524 use_hosted_login_success_page: Option<bool>,
3525 },
3526 #[serde(rename = "chatgptDeviceCode")]
3527 ChatgptDeviceCode,
3528 #[serde(rename = "chatgptAuthTokens")]
3529 ChatgptAuthTokens {
3530 #[serde(rename = "accessToken")]
3531 access_token: String,
3532 #[serde(rename = "chatgptAccountId")]
3533 chatgpt_account_id: String,
3534 #[serde(
3535 rename = "chatgptPlanType",
3536 default,
3537 skip_serializing_if = "Option::is_none"
3538 )]
3539 chatgpt_plan_type: Option<String>,
3540 },
3541 #[serde(rename = "amazonBedrock")]
3542 AmazonBedrock {
3543 #[serde(rename = "apiKey")]
3544 api_key: String,
3545 region: String,
3546 },
3547 #[serde(rename = "amazonBedrockAccessKeys")]
3548 AmazonBedrockAccessKeys {
3549 #[serde(rename = "accessKeyId")]
3550 access_key_id: String,
3551 region: String,
3552 #[serde(rename = "secretAccessKey")]
3553 secret_access_key: String,
3554 #[serde(
3555 rename = "sessionToken",
3556 default,
3557 skip_serializing_if = "Option::is_none"
3558 )]
3559 session_token: Option<String>,
3560 },
3561}
3562
3563#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3564#[serde(tag = "type", rename_all = "camelCase")]
3565pub enum LoginAccountResponse {
3566 #[serde(rename = "apiKey")]
3567 ApiKey,
3568 Chatgpt {
3569 #[serde(rename = "authUrl")]
3570 auth_url: String,
3571 #[serde(rename = "loginId")]
3572 login_id: String,
3573 },
3574 #[serde(rename = "chatgptDeviceCode")]
3575 ChatgptDeviceCode {
3576 #[serde(rename = "loginId")]
3577 login_id: String,
3578 #[serde(rename = "userCode")]
3579 user_code: String,
3580 #[serde(rename = "verificationUrl")]
3581 verification_url: String,
3582 },
3583 #[serde(rename = "chatgptAuthTokens")]
3584 ChatgptAuthTokens,
3585 #[serde(rename = "amazonBedrock")]
3586 AmazonBedrock,
3587}
3588
3589#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
3590pub enum LoginAppBrand {
3591 #[serde(rename = "codex")]
3592 Codex,
3593 #[serde(rename = "chatgpt")]
3594 Chatgpt,
3595}
3596
3597#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
3598#[serde(rename_all = "camelCase")]
3599pub struct LogoutAccountResponse {
3600 #[serde(flatten, default, skip_serializing_if = "serde_json::Map::is_empty")]
3601 pub extra: serde_json::Map<String, Value>,
3602}
3603
3604#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
3605#[serde(rename_all = "camelCase")]
3606pub struct MarketplaceAddParams {
3607 #[serde(rename = "refName", default, skip_serializing_if = "Option::is_none")]
3608 pub ref_name: Option<String>,
3609 #[serde(default)]
3610 pub source: String,
3611 #[serde(
3612 rename = "sparsePaths",
3613 default,
3614 skip_serializing_if = "Option::is_none"
3615 )]
3616 pub sparse_paths: Option<Vec<String>>,
3617}
3618
3619#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3620#[serde(rename_all = "camelCase")]
3621pub struct MarketplaceAddResponse {
3622 #[serde(rename = "alreadyAdded", default)]
3623 pub already_added: bool,
3624 #[serde(rename = "installedRoot")]
3625 pub installed_root: AbsolutePathBuf,
3626 #[serde(rename = "marketplaceName", default)]
3627 pub marketplace_name: String,
3628}
3629
3630#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
3631#[serde(rename_all = "camelCase")]
3632pub struct MarketplaceInterface {
3633 #[serde(
3634 rename = "displayName",
3635 default,
3636 skip_serializing_if = "Option::is_none"
3637 )]
3638 pub display_name: Option<String>,
3639}
3640
3641#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3642#[serde(rename_all = "camelCase")]
3643pub struct MarketplaceLoadErrorInfo {
3644 #[serde(rename = "marketplacePath")]
3645 pub marketplace_path: AbsolutePathBuf,
3646 #[serde(default)]
3647 pub message: String,
3648}
3649
3650#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
3651#[serde(rename_all = "camelCase")]
3652pub struct MarketplaceRemoveParams {
3653 #[serde(rename = "marketplaceName", default)]
3654 pub marketplace_name: String,
3655}
3656
3657#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
3658#[serde(rename_all = "camelCase")]
3659pub struct MarketplaceRemoveResponse {
3660 #[serde(
3661 rename = "installedRoot",
3662 default,
3663 skip_serializing_if = "Option::is_none"
3664 )]
3665 pub installed_root: Option<AbsolutePathBuf>,
3666 #[serde(rename = "marketplaceName", default)]
3667 pub marketplace_name: String,
3668}
3669
3670#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
3671#[serde(rename_all = "camelCase")]
3672pub struct MarketplaceUpgradeErrorInfo {
3673 #[serde(rename = "marketplaceName", default)]
3674 pub marketplace_name: String,
3675 #[serde(default)]
3676 pub message: String,
3677}
3678
3679#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
3680#[serde(rename_all = "camelCase")]
3681pub struct MarketplaceUpgradeParams {
3682 #[serde(
3683 rename = "marketplaceName",
3684 default,
3685 skip_serializing_if = "Option::is_none"
3686 )]
3687 pub marketplace_name: Option<String>,
3688}
3689
3690#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
3691#[serde(rename_all = "camelCase")]
3692pub struct MarketplaceUpgradeResponse {
3693 #[serde(default)]
3694 pub errors: Vec<MarketplaceUpgradeErrorInfo>,
3695 #[serde(rename = "selectedMarketplaces", default)]
3696 pub selected_marketplaces: Vec<String>,
3697 #[serde(rename = "upgradedRoots", default)]
3698 pub upgraded_roots: Vec<AbsolutePathBuf>,
3699}
3700
3701#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
3702pub enum McpAuthStatus {
3703 #[serde(rename = "unknown")]
3704 Unknown,
3705 #[serde(rename = "unsupported")]
3706 Unsupported,
3707 #[serde(rename = "notLoggedIn")]
3708 NotLoggedIn,
3709 #[serde(rename = "bearerToken")]
3710 BearerToken,
3711 #[serde(rename = "oAuth")]
3712 OAuth,
3713}
3714
3715#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
3716pub enum McpElicitationArrayType {
3717 #[serde(rename = "array")]
3718 Array,
3719}
3720
3721#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3722#[serde(rename_all = "camelCase")]
3723pub struct McpElicitationBooleanSchema {
3724 #[serde(default, skip_serializing_if = "Option::is_none")]
3725 pub default: Option<bool>,
3726 #[serde(default, skip_serializing_if = "Option::is_none")]
3727 pub description: Option<String>,
3728 #[serde(default, skip_serializing_if = "Option::is_none")]
3729 pub title: Option<String>,
3730 #[serde(rename = "type")]
3731 pub type_: McpElicitationBooleanType,
3732}
3733
3734#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
3735pub enum McpElicitationBooleanType {
3736 #[serde(rename = "boolean")]
3737 Boolean,
3738}
3739
3740#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
3741#[serde(rename_all = "camelCase")]
3742pub struct McpElicitationConstOption {
3743 #[serde(rename = "const", default)]
3744 pub const_: String,
3745 #[serde(default)]
3746 pub title: String,
3747}
3748
3749#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3750#[serde(untagged)]
3751pub enum McpElicitationEnumSchema {
3752 McpElicitationSingleSelectEnumSchema(McpElicitationSingleSelectEnumSchema),
3753 McpElicitationMultiSelectEnumSchema(McpElicitationMultiSelectEnumSchema),
3754 McpElicitationLegacyTitledEnumSchema(McpElicitationLegacyTitledEnumSchema),
3755}
3756
3757#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3758#[serde(rename_all = "camelCase")]
3759pub struct McpElicitationLegacyTitledEnumSchema {
3760 #[serde(default, skip_serializing_if = "Option::is_none")]
3761 pub default: Option<String>,
3762 #[serde(default, skip_serializing_if = "Option::is_none")]
3763 pub description: Option<String>,
3764 #[serde(rename = "enum", default)]
3765 pub enum_: Vec<String>,
3766 #[serde(rename = "enumNames", default, skip_serializing_if = "Option::is_none")]
3767 pub enum_names: Option<Vec<String>>,
3768 #[serde(default, skip_serializing_if = "Option::is_none")]
3769 pub title: Option<String>,
3770 #[serde(rename = "type")]
3771 pub type_: McpElicitationStringType,
3772}
3773
3774#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3775#[serde(untagged)]
3776pub enum McpElicitationMultiSelectEnumSchema {
3777 McpElicitationUntitledMultiSelectEnumSchema(McpElicitationUntitledMultiSelectEnumSchema),
3778 McpElicitationTitledMultiSelectEnumSchema(McpElicitationTitledMultiSelectEnumSchema),
3779}
3780
3781#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3782#[serde(rename_all = "camelCase")]
3783pub struct McpElicitationNumberSchema {
3784 #[serde(default, skip_serializing_if = "Option::is_none")]
3785 pub default: Option<f64>,
3786 #[serde(default, skip_serializing_if = "Option::is_none")]
3787 pub description: Option<String>,
3788 #[serde(default, skip_serializing_if = "Option::is_none")]
3789 pub maximum: Option<f64>,
3790 #[serde(default, skip_serializing_if = "Option::is_none")]
3791 pub minimum: Option<f64>,
3792 #[serde(default, skip_serializing_if = "Option::is_none")]
3793 pub title: Option<String>,
3794 #[serde(rename = "type")]
3795 pub type_: McpElicitationNumberType,
3796}
3797
3798#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
3799pub enum McpElicitationNumberType {
3800 #[serde(rename = "number")]
3801 Number,
3802 #[serde(rename = "integer")]
3803 Integer,
3804}
3805
3806#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
3807pub enum McpElicitationObjectType {
3808 #[serde(rename = "object")]
3809 Object,
3810}
3811
3812#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3813#[serde(untagged)]
3814pub enum McpElicitationPrimitiveSchema {
3815 McpElicitationEnumSchema(McpElicitationEnumSchema),
3816 McpElicitationStringSchema(McpElicitationStringSchema),
3817 McpElicitationNumberSchema(McpElicitationNumberSchema),
3818 McpElicitationBooleanSchema(McpElicitationBooleanSchema),
3819}
3820
3821#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3822#[serde(rename_all = "camelCase")]
3823pub struct McpElicitationSchema {
3824 #[serde(rename = "$schema", default, skip_serializing_if = "Option::is_none")]
3825 pub schema: Option<String>,
3826 #[serde(default)]
3827 pub properties: std::collections::BTreeMap<String, McpElicitationPrimitiveSchema>,
3828 #[serde(default, skip_serializing_if = "Option::is_none")]
3829 pub required: Option<Vec<String>>,
3830 #[serde(rename = "type")]
3831 pub type_: McpElicitationObjectType,
3832}
3833
3834#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3835#[serde(untagged)]
3836pub enum McpElicitationSingleSelectEnumSchema {
3837 McpElicitationUntitledSingleSelectEnumSchema(McpElicitationUntitledSingleSelectEnumSchema),
3838 McpElicitationTitledSingleSelectEnumSchema(McpElicitationTitledSingleSelectEnumSchema),
3839}
3840
3841#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
3842pub enum McpElicitationStringFormat {
3843 #[serde(rename = "email")]
3844 Email,
3845 #[serde(rename = "uri")]
3846 Uri,
3847 #[serde(rename = "date")]
3848 Date,
3849 #[serde(rename = "date-time")]
3850 Date_time,
3851}
3852
3853#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3854#[serde(rename_all = "camelCase")]
3855pub struct McpElicitationStringSchema {
3856 #[serde(default, skip_serializing_if = "Option::is_none")]
3857 pub default: Option<String>,
3858 #[serde(default, skip_serializing_if = "Option::is_none")]
3859 pub description: Option<String>,
3860 #[serde(default, skip_serializing_if = "Option::is_none")]
3861 pub format: Option<McpElicitationStringFormat>,
3862 #[serde(rename = "maxLength", default, skip_serializing_if = "Option::is_none")]
3863 pub max_length: Option<i64>,
3864 #[serde(rename = "minLength", default, skip_serializing_if = "Option::is_none")]
3865 pub min_length: Option<i64>,
3866 #[serde(default, skip_serializing_if = "Option::is_none")]
3867 pub title: Option<String>,
3868 #[serde(rename = "type")]
3869 pub type_: McpElicitationStringType,
3870}
3871
3872#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
3873pub enum McpElicitationStringType {
3874 #[serde(rename = "string")]
3875 String,
3876}
3877
3878#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
3879#[serde(rename_all = "camelCase")]
3880pub struct McpElicitationTitledEnumItems {
3881 #[serde(rename = "anyOf", default)]
3882 pub any_of: Vec<McpElicitationConstOption>,
3883}
3884
3885#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3886#[serde(rename_all = "camelCase")]
3887pub struct McpElicitationTitledMultiSelectEnumSchema {
3888 #[serde(default, skip_serializing_if = "Option::is_none")]
3889 pub default: Option<Vec<String>>,
3890 #[serde(default, skip_serializing_if = "Option::is_none")]
3891 pub description: Option<String>,
3892 #[serde()]
3893 pub items: McpElicitationTitledEnumItems,
3894 #[serde(rename = "maxItems", default, skip_serializing_if = "Option::is_none")]
3895 pub max_items: Option<i64>,
3896 #[serde(rename = "minItems", default, skip_serializing_if = "Option::is_none")]
3897 pub min_items: Option<i64>,
3898 #[serde(default, skip_serializing_if = "Option::is_none")]
3899 pub title: Option<String>,
3900 #[serde(rename = "type")]
3901 pub type_: McpElicitationArrayType,
3902}
3903
3904#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3905#[serde(rename_all = "camelCase")]
3906pub struct McpElicitationTitledSingleSelectEnumSchema {
3907 #[serde(default, skip_serializing_if = "Option::is_none")]
3908 pub default: Option<String>,
3909 #[serde(default, skip_serializing_if = "Option::is_none")]
3910 pub description: Option<String>,
3911 #[serde(rename = "oneOf", default)]
3912 pub one_of: Vec<McpElicitationConstOption>,
3913 #[serde(default, skip_serializing_if = "Option::is_none")]
3914 pub title: Option<String>,
3915 #[serde(rename = "type")]
3916 pub type_: McpElicitationStringType,
3917}
3918
3919#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3920#[serde(rename_all = "camelCase")]
3921pub struct McpElicitationUntitledEnumItems {
3922 #[serde(rename = "enum", default)]
3923 pub enum_: Vec<String>,
3924 #[serde(rename = "type")]
3925 pub type_: McpElicitationStringType,
3926}
3927
3928#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3929#[serde(rename_all = "camelCase")]
3930pub struct McpElicitationUntitledMultiSelectEnumSchema {
3931 #[serde(default, skip_serializing_if = "Option::is_none")]
3932 pub default: Option<Vec<String>>,
3933 #[serde(default, skip_serializing_if = "Option::is_none")]
3934 pub description: Option<String>,
3935 #[serde()]
3936 pub items: McpElicitationUntitledEnumItems,
3937 #[serde(rename = "maxItems", default, skip_serializing_if = "Option::is_none")]
3938 pub max_items: Option<i64>,
3939 #[serde(rename = "minItems", default, skip_serializing_if = "Option::is_none")]
3940 pub min_items: Option<i64>,
3941 #[serde(default, skip_serializing_if = "Option::is_none")]
3942 pub title: Option<String>,
3943 #[serde(rename = "type")]
3944 pub type_: McpElicitationArrayType,
3945}
3946
3947#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
3948#[serde(rename_all = "camelCase")]
3949pub struct McpElicitationUntitledSingleSelectEnumSchema {
3950 #[serde(default, skip_serializing_if = "Option::is_none")]
3951 pub default: Option<String>,
3952 #[serde(default, skip_serializing_if = "Option::is_none")]
3953 pub description: Option<String>,
3954 #[serde(rename = "enum", default)]
3955 pub enum_: Vec<String>,
3956 #[serde(default, skip_serializing_if = "Option::is_none")]
3957 pub title: Option<String>,
3958 #[serde(rename = "type")]
3959 pub type_: McpElicitationStringType,
3960}
3961
3962#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
3963#[serde(rename_all = "camelCase")]
3964pub struct McpResourceReadParams {
3965 #[serde(
3966 rename = "connectorId",
3967 default,
3968 skip_serializing_if = "Option::is_none"
3969 )]
3970 pub connector_id: Option<String>,
3971 #[serde(
3973 rename = "originCallId",
3974 default,
3975 skip_serializing_if = "Option::is_none"
3976 )]
3977 pub origin_call_id: Option<String>,
3978 #[serde(default)]
3979 pub server: String,
3980 #[serde(rename = "threadId", default, skip_serializing_if = "Option::is_none")]
3981 pub thread_id: Option<String>,
3982 #[serde(default)]
3983 pub uri: String,
3984}
3985
3986#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
3987#[serde(rename_all = "camelCase")]
3988pub struct McpResourceReadResponse {
3989 #[serde(default)]
3990 pub contents: Vec<ResourceContent>,
3991 #[serde(
3994 rename = "originCallId",
3995 default,
3996 skip_serializing_if = "Option::is_none"
3997 )]
3998 pub origin_call_id: Option<String>,
3999}
4000
4001#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
4002pub enum McpServerElicitationAction {
4003 #[serde(rename = "accept")]
4004 Accept,
4005 #[serde(rename = "decline")]
4006 Decline,
4007 #[serde(rename = "cancel")]
4008 Cancel,
4009}
4010
4011#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4012#[serde(tag = "mode", rename_all = "camelCase")]
4013pub enum McpServerElicitationRequestParams {
4014 Form {
4015 #[serde(default, skip_serializing_if = "Option::is_none")]
4016 _meta: Option<Value>,
4017 message: String,
4018 #[serde(rename = "requestedSchema")]
4019 requested_schema: McpElicitationSchema,
4020 },
4021 #[serde(rename = "openai/form")]
4022 OpenaiForm {
4023 #[serde(default, skip_serializing_if = "Option::is_none")]
4024 _meta: Option<Value>,
4025 message: String,
4026 #[serde(rename = "requestedSchema")]
4027 requested_schema: Value,
4028 },
4029 #[serde(rename = "openaiForm")]
4030 OpenAiElicitationForm {
4031 #[serde(default, skip_serializing_if = "Option::is_none")]
4032 _meta: Option<Value>,
4033 message: String,
4034 #[serde(rename = "requestedSchema")]
4035 requested_schema: Value,
4036 },
4037 Url {
4038 #[serde(default, skip_serializing_if = "Option::is_none")]
4039 _meta: Option<Value>,
4040 #[serde(rename = "elicitationId")]
4041 elicitation_id: String,
4042 message: String,
4043 url: String,
4044 },
4045}
4046
4047#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4048#[serde(rename_all = "camelCase")]
4049pub struct McpServerElicitationRequestResponse {
4050 #[serde(default, skip_serializing_if = "Option::is_none")]
4051 pub _meta: Option<Value>,
4052 #[serde()]
4053 pub action: McpServerElicitationAction,
4054 #[serde(default, skip_serializing_if = "Option::is_none")]
4055 pub content: Option<Value>,
4056}
4057
4058#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4059#[serde(rename_all = "camelCase")]
4060pub struct McpServerInfo {
4061 #[serde(default, skip_serializing_if = "Option::is_none")]
4062 pub description: Option<String>,
4063 #[serde(default, skip_serializing_if = "Option::is_none")]
4064 pub icons: Option<Vec<Value>>,
4065 #[serde(default)]
4066 pub name: String,
4067 #[serde(default, skip_serializing_if = "Option::is_none")]
4068 pub title: Option<String>,
4069 #[serde(default)]
4070 pub version: String,
4071 #[serde(
4072 rename = "websiteUrl",
4073 default,
4074 skip_serializing_if = "Option::is_none"
4075 )]
4076 pub website_url: Option<String>,
4077}
4078
4079#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4080#[serde(rename_all = "camelCase")]
4081pub struct McpServerMigration {
4082 #[serde(default)]
4083 pub name: String,
4084}
4085
4086#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4087#[serde(rename_all = "camelCase")]
4088pub struct McpServerOauthLoginCompletedNotification {
4089 #[serde(default, skip_serializing_if = "Option::is_none")]
4090 pub error: Option<String>,
4091 #[serde(default)]
4092 pub name: String,
4093 #[serde(default)]
4094 pub success: bool,
4095 #[serde(rename = "threadId", default, skip_serializing_if = "Option::is_none")]
4096 pub thread_id: Option<String>,
4097}
4098
4099#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4100#[serde(rename_all = "camelCase")]
4101pub struct McpServerOauthLoginParams {
4102 #[serde(
4103 rename = "clientRegistration",
4104 default,
4105 skip_serializing_if = "Option::is_none"
4106 )]
4107 pub client_registration: Option<McpServerOauthClientRegistration>,
4108 #[serde(default)]
4109 pub name: String,
4110 #[serde(default, skip_serializing_if = "Option::is_none")]
4111 pub scopes: Option<Vec<String>>,
4112 #[serde(rename = "threadId", default, skip_serializing_if = "Option::is_none")]
4113 pub thread_id: Option<String>,
4114 #[serde(
4115 rename = "timeoutSecs",
4116 default,
4117 skip_serializing_if = "Option::is_none"
4118 )]
4119 pub timeout_secs: Option<i64>,
4120}
4121
4122#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4123#[serde(rename_all = "camelCase")]
4124pub struct McpServerOauthLoginResponse {
4125 #[serde(rename = "authorizationUrl", default)]
4126 pub authorization_url: String,
4127}
4128
4129#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4130#[serde(rename_all = "camelCase")]
4131pub struct McpServerRefreshResponse {
4132 #[serde(flatten, default, skip_serializing_if = "serde_json::Map::is_empty")]
4133 pub extra: serde_json::Map<String, Value>,
4134}
4135
4136#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
4137pub enum McpServerStartupFailureReason {
4138 #[serde(rename = "reauthenticationRequired")]
4139 ReauthenticationRequired,
4140}
4141
4142#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
4143pub enum McpServerStartupState {
4144 #[serde(rename = "starting")]
4145 Starting,
4146 #[serde(rename = "ready")]
4147 Ready,
4148 #[serde(rename = "failed")]
4149 Failed,
4150 #[serde(rename = "cancelled")]
4151 Cancelled,
4152}
4153
4154#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4155#[serde(rename_all = "camelCase")]
4156pub struct McpServerStatus {
4157 #[serde(rename = "authStatus")]
4158 pub auth_status: McpAuthStatus,
4159 #[serde(
4161 rename = "runtimeStatus",
4162 default,
4163 skip_serializing_if = "Option::is_none"
4164 )]
4165 pub runtime_status: Option<McpServerConnectionStatus>,
4166 #[serde(default)]
4167 pub name: String,
4168 #[serde(rename = "pluginId", default, skip_serializing_if = "Option::is_none")]
4169 pub plugin_id: Option<String>,
4170 #[serde(rename = "resourceTemplates", default)]
4171 pub resource_templates: Vec<ResourceTemplate>,
4172 #[serde(default)]
4173 pub resources: Vec<Resource>,
4174 #[serde(
4175 rename = "serverInfo",
4176 default,
4177 skip_serializing_if = "Option::is_none"
4178 )]
4179 pub server_info: Option<McpServerInfo>,
4180 #[serde(default)]
4181 pub tools: std::collections::BTreeMap<String, Tool>,
4182}
4183
4184#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
4185pub enum McpServerStatusDetail {
4186 #[serde(rename = "full")]
4187 Full,
4188 #[serde(rename = "toolsAndAuthOnly")]
4189 ToolsAndAuthOnly,
4190}
4191
4192#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4193#[serde(rename_all = "camelCase")]
4194pub struct McpServerStatusUpdatedNotification {
4195 #[serde(default, skip_serializing_if = "Option::is_none")]
4196 pub error: Option<String>,
4197 #[serde(
4198 rename = "failureReason",
4199 default,
4200 skip_serializing_if = "Option::is_none"
4201 )]
4202 pub failure_reason: Option<McpServerStartupFailureReason>,
4203 #[serde(default)]
4204 pub name: String,
4205 #[serde()]
4206 pub status: McpServerStartupState,
4207 #[serde(rename = "threadId", default, skip_serializing_if = "Option::is_none")]
4208 pub thread_id: Option<String>,
4209}
4210
4211#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4212#[serde(rename_all = "camelCase")]
4213pub struct McpServerToolCallParams {
4214 #[serde(default, skip_serializing_if = "Option::is_none")]
4215 pub _meta: Option<Value>,
4216 #[serde(default, skip_serializing_if = "Option::is_none")]
4217 pub arguments: Option<Value>,
4218 #[serde(default)]
4219 pub server: String,
4220 #[serde(rename = "threadId", default)]
4221 pub thread_id: String,
4222 #[serde(default)]
4223 pub tool: String,
4224}
4225
4226#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4227#[serde(rename_all = "camelCase")]
4228pub struct McpServerToolCallResponse {
4229 #[serde(default, skip_serializing_if = "Option::is_none")]
4230 pub _meta: Option<Value>,
4231 #[serde(default)]
4232 pub content: Vec<Value>,
4233 #[serde(rename = "isError", default, skip_serializing_if = "Option::is_none")]
4234 pub is_error: Option<bool>,
4235 #[serde(
4236 rename = "structuredContent",
4237 default,
4238 skip_serializing_if = "Option::is_none"
4239 )]
4240 pub structured_content: Option<Value>,
4241}
4242
4243#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4244#[serde(rename_all = "camelCase")]
4245pub struct McpToolCallAppContext {
4246 #[serde(
4247 rename = "actionName",
4248 default,
4249 skip_serializing_if = "Option::is_none"
4250 )]
4251 pub action_name: Option<String>,
4252 #[serde(rename = "appName", default, skip_serializing_if = "Option::is_none")]
4253 pub app_name: Option<String>,
4254 #[serde(rename = "connectorId", default)]
4255 pub connector_id: String,
4256 #[serde(rename = "linkId", default, skip_serializing_if = "Option::is_none")]
4257 pub link_id: Option<String>,
4258 #[serde(
4259 rename = "resourceUri",
4260 default,
4261 skip_serializing_if = "Option::is_none"
4262 )]
4263 pub resource_uri: Option<String>,
4264}
4265
4266#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4267#[serde(rename_all = "camelCase")]
4268pub struct McpToolCallError {
4269 #[serde(default)]
4270 pub message: String,
4271}
4272
4273#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4274#[serde(rename_all = "camelCase")]
4275pub struct McpToolCallProgressNotification {
4276 #[serde(rename = "itemId", default)]
4277 pub item_id: String,
4278 #[serde(default)]
4279 pub message: String,
4280 #[serde(rename = "threadId", default)]
4281 pub thread_id: String,
4282 #[serde(rename = "turnId", default)]
4283 pub turn_id: String,
4284}
4285
4286#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4287#[serde(rename_all = "camelCase")]
4288pub struct McpToolCallResult {
4289 #[serde(default, skip_serializing_if = "Option::is_none")]
4290 pub _meta: Option<Value>,
4291 #[serde(default)]
4292 pub content: Vec<Value>,
4293 #[serde(
4294 rename = "structuredContent",
4295 default,
4296 skip_serializing_if = "Option::is_none"
4297 )]
4298 pub structured_content: Option<Value>,
4299}
4300
4301#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
4302pub enum McpToolCallStatus {
4303 #[serde(rename = "inProgress")]
4304 InProgress,
4305 #[serde(rename = "completed")]
4306 Completed,
4307 #[serde(rename = "failed")]
4308 Failed,
4309}
4310
4311#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4312#[serde(rename_all = "camelCase")]
4313pub struct MemoryCitation {
4314 #[serde(default)]
4315 pub entries: Vec<MemoryCitationEntry>,
4316 #[serde(rename = "threadIds", default)]
4317 pub thread_ids: Vec<String>,
4318}
4319
4320#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4321#[serde(rename_all = "camelCase")]
4322pub struct MemoryCitationEntry {
4323 #[serde(rename = "lineEnd", default)]
4324 pub line_end: i64,
4325 #[serde(rename = "lineStart", default)]
4326 pub line_start: i64,
4327 #[serde(default)]
4328 pub note: String,
4329 #[serde(default)]
4330 pub path: String,
4331}
4332
4333#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
4334pub enum MergeStrategy {
4335 #[serde(rename = "replace")]
4336 Replace,
4337 #[serde(rename = "upsert")]
4338 Upsert,
4339}
4340
4341#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)]
4342pub enum MessagePhase {
4343 #[serde(rename = "commentary")]
4344 Commentary,
4345 #[serde(rename = "final_answer")]
4346 FinalAnswer,
4347}
4348
4349#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4350#[serde(rename_all = "camelCase")]
4351pub struct MigrationDetails {
4352 #[serde(default, skip_serializing_if = "Option::is_none")]
4353 pub commands: Option<Vec<CommandMigration>>,
4354 #[serde(default, skip_serializing_if = "Option::is_none")]
4355 pub hooks: Option<Vec<HookMigration>>,
4356 #[serde(
4357 rename = "mcpServers",
4358 default,
4359 skip_serializing_if = "Option::is_none"
4360 )]
4361 pub mcp_servers: Option<Vec<McpServerMigration>>,
4362 #[serde(default, skip_serializing_if = "Option::is_none")]
4363 pub memory: Option<Vec<String>>,
4364 #[serde(default, skip_serializing_if = "Option::is_none")]
4365 pub plugins: Option<Vec<PluginsMigration>>,
4366 #[serde(default, skip_serializing_if = "Option::is_none")]
4367 pub sessions: Option<Vec<SessionMigration>>,
4368 #[serde(default, skip_serializing_if = "Option::is_none")]
4369 pub skills: Option<Vec<SkillMigration>>,
4370 #[serde(default, skip_serializing_if = "Option::is_none")]
4371 pub subagents: Option<Vec<SubagentMigration>>,
4372}
4373
4374#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4377#[serde(rename_all = "camelCase")]
4378pub struct MisalignmentErrorDetails {
4379 #[serde(
4380 rename = "detailedExplanation",
4381 default,
4382 skip_serializing_if = "Option::is_none"
4383 )]
4384 pub detailed_explanation: Option<String>,
4385 #[serde(rename = "errorType", default, skip_serializing_if = "Option::is_none")]
4387 pub error_type: Option<String>,
4388 #[serde(default, skip_serializing_if = "Option::is_none")]
4391 pub steer: Option<MisalignmentSteer>,
4392}
4393
4394#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4396#[serde(rename_all = "camelCase")]
4397pub struct MisalignmentSteer {
4398 #[serde(default)]
4399 pub message: String,
4400}
4401
4402#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
4403pub enum ModeKind {
4404 #[serde(rename = "plan")]
4405 Plan,
4406 #[serde(rename = "default")]
4407 Default,
4408}
4409
4410#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4411#[serde(rename_all = "camelCase")]
4412pub struct Model {
4413 #[serde(
4414 rename = "additionalSpeedTiers",
4415 default,
4416 skip_serializing_if = "Option::is_none"
4417 )]
4418 pub additional_speed_tiers: Option<Vec<String>>,
4419 #[serde(
4420 rename = "availabilityNux",
4421 default,
4422 skip_serializing_if = "Option::is_none"
4423 )]
4424 pub availability_nux: Option<ModelAvailabilityNux>,
4425 #[serde(rename = "defaultReasoningEffort")]
4426 pub default_reasoning_effort: ReasoningEffort,
4427 #[serde(
4428 rename = "defaultServiceTier",
4429 default,
4430 skip_serializing_if = "Option::is_none"
4431 )]
4432 pub default_service_tier: Option<String>,
4433 #[serde(default)]
4434 pub description: String,
4435 #[serde(rename = "displayName", default)]
4436 pub display_name: String,
4437 #[serde(default)]
4438 pub hidden: bool,
4439 #[serde(default)]
4440 pub id: String,
4441 #[serde(
4442 rename = "inputModalities",
4443 default,
4444 skip_serializing_if = "Option::is_none"
4445 )]
4446 pub input_modalities: Option<Vec<InputModality>>,
4447 #[serde(rename = "isDefault", default)]
4448 pub is_default: bool,
4449 #[serde(default)]
4450 pub model: String,
4451 #[serde(
4452 rename = "modelSpecialty",
4453 default,
4454 skip_serializing_if = "Option::is_none"
4455 )]
4456 pub model_specialty: Option<String>,
4457 #[serde(
4458 rename = "multiAgentVersion",
4459 default,
4460 skip_serializing_if = "Option::is_none"
4461 )]
4462 pub multi_agent_version: Option<MultiAgentVersion>,
4463 #[serde(
4464 rename = "serviceTiers",
4465 default,
4466 skip_serializing_if = "Option::is_none"
4467 )]
4468 pub service_tiers: Option<Vec<ModelServiceTier>>,
4469 #[serde(rename = "supportedReasoningEfforts", default)]
4470 pub supported_reasoning_efforts: Vec<ReasoningEffortOption>,
4471 #[serde(
4472 rename = "supportsPersonality",
4473 default,
4474 skip_serializing_if = "Option::is_none"
4475 )]
4476 pub supports_personality: Option<bool>,
4477 #[serde(default, skip_serializing_if = "Option::is_none")]
4478 pub upgrade: Option<String>,
4479 #[serde(
4480 rename = "upgradeInfo",
4481 default,
4482 skip_serializing_if = "Option::is_none"
4483 )]
4484 pub upgrade_info: Option<ModelUpgradeInfo>,
4485}
4486
4487#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4488#[serde(rename_all = "camelCase")]
4489pub struct ModelAvailabilityNux {
4490 #[serde(default)]
4491 pub message: String,
4492}
4493
4494#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4495#[serde(rename_all = "camelCase")]
4496pub struct ModelListParams {
4497 #[serde(default, skip_serializing_if = "Option::is_none")]
4498 pub cursor: Option<String>,
4499 #[serde(
4500 rename = "includeHidden",
4501 default,
4502 skip_serializing_if = "Option::is_none"
4503 )]
4504 pub include_hidden: Option<bool>,
4505 #[serde(default, skip_serializing_if = "Option::is_none")]
4506 pub limit: Option<i64>,
4507}
4508
4509#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4510#[serde(rename_all = "camelCase")]
4511pub struct ModelListResponse {
4512 #[serde(default)]
4513 pub data: Vec<Model>,
4514 #[serde(
4515 rename = "nextCursor",
4516 default,
4517 skip_serializing_if = "Option::is_none"
4518 )]
4519 pub next_cursor: Option<String>,
4520}
4521
4522#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4523#[serde(rename_all = "camelCase")]
4524pub struct ModelProviderCapabilitiesReadParams {
4525 #[serde(flatten, default, skip_serializing_if = "serde_json::Map::is_empty")]
4526 pub extra: serde_json::Map<String, Value>,
4527}
4528
4529#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4530#[serde(rename_all = "camelCase")]
4531pub struct ModelProviderCapabilitiesReadResponse {
4532 #[serde(rename = "imageGeneration", default)]
4533 pub image_generation: bool,
4534 #[serde(rename = "namespaceTools", default)]
4535 pub namespace_tools: bool,
4536 #[serde(rename = "webSearch", default)]
4537 pub web_search: bool,
4538}
4539
4540#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
4541pub enum ModelRerouteReason {
4542 #[serde(rename = "highRiskCyberActivity")]
4543 HighRiskCyberActivity,
4544}
4545
4546#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4547#[serde(rename_all = "camelCase")]
4548pub struct ModelReroutedNotification {
4549 #[serde(rename = "fromModel", default)]
4550 pub from_model: String,
4551 #[serde()]
4552 pub reason: ModelRerouteReason,
4553 #[serde(rename = "threadId", default)]
4554 pub thread_id: String,
4555 #[serde(rename = "toModel", default)]
4556 pub to_model: String,
4557 #[serde(rename = "turnId", default)]
4558 pub turn_id: String,
4559}
4560
4561#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4562#[serde(rename_all = "camelCase")]
4563pub struct ModelSafetyBufferingUpdatedNotification {
4564 #[serde(
4565 rename = "fasterModel",
4566 default,
4567 skip_serializing_if = "Option::is_none"
4568 )]
4569 pub faster_model: Option<String>,
4570 #[serde(default)]
4571 pub model: String,
4572 #[serde(default)]
4573 pub reasons: Vec<String>,
4574 #[serde(rename = "showBufferingUi", default)]
4575 pub show_buffering_ui: bool,
4576 #[serde(rename = "threadId", default)]
4577 pub thread_id: String,
4578 #[serde(rename = "turnId", default)]
4579 pub turn_id: String,
4580 #[serde(rename = "useCases", default)]
4581 pub use_cases: Vec<String>,
4582}
4583
4584#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4585#[serde(rename_all = "camelCase")]
4586pub struct ModelServiceTier {
4587 #[serde(default)]
4588 pub description: String,
4589 #[serde(default)]
4590 pub id: String,
4591 #[serde(default)]
4592 pub name: String,
4593}
4594
4595#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4596#[serde(rename_all = "camelCase")]
4597pub struct ModelUpgradeInfo {
4598 #[serde(
4599 rename = "migrationMarkdown",
4600 default,
4601 skip_serializing_if = "Option::is_none"
4602 )]
4603 pub migration_markdown: Option<String>,
4604 #[serde(default)]
4605 pub model: String,
4606 #[serde(
4609 rename = "retirementAt",
4610 default,
4611 skip_serializing_if = "Option::is_none"
4612 )]
4613 pub retirement_at: Option<i64>,
4614 #[serde(rename = "modelLink", default, skip_serializing_if = "Option::is_none")]
4615 pub model_link: Option<String>,
4616 #[serde(
4617 rename = "upgradeCopy",
4618 default,
4619 skip_serializing_if = "Option::is_none"
4620 )]
4621 pub upgrade_copy: Option<String>,
4622}
4623
4624#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
4625pub enum ModelVerification {
4626 #[serde(rename = "trustedAccessForCyber")]
4627 TrustedAccessForCyber,
4628}
4629
4630#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4631#[serde(rename_all = "camelCase")]
4632pub struct ModelVerificationNotification {
4633 #[serde(rename = "threadId", default)]
4634 pub thread_id: String,
4635 #[serde(rename = "turnId", default)]
4636 pub turn_id: String,
4637 #[serde(default)]
4638 pub verifications: Vec<ModelVerification>,
4639}
4640
4641#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4642#[serde(rename_all = "camelCase")]
4643pub struct ModelsRequirements {
4644 #[serde(rename = "newThread", default, skip_serializing_if = "Option::is_none")]
4645 pub new_thread: Option<NewThreadModelDefaults>,
4646}
4647
4648#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
4649pub enum MultiAgentVersion {
4650 #[serde(rename = "disabled")]
4651 Disabled,
4652 #[serde(rename = "v1")]
4653 V1,
4654 #[serde(rename = "v2")]
4655 V2,
4656}
4657
4658#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
4659pub enum NetworkAccess {
4660 #[serde(rename = "restricted")]
4661 Restricted,
4662 #[serde(rename = "enabled")]
4663 Enabled,
4664}
4665
4666#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4667#[serde(rename_all = "camelCase")]
4668pub struct NetworkApprovalContext {
4669 #[serde(default)]
4670 pub host: String,
4671 #[serde()]
4672 pub protocol: NetworkApprovalProtocol,
4673}
4674
4675#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
4676pub enum NetworkApprovalProtocol {
4677 #[serde(rename = "http")]
4678 Http,
4679 #[serde(rename = "https")]
4680 Https,
4681 #[serde(rename = "socks5Tcp")]
4682 Socks5Tcp,
4683 #[serde(rename = "socks5Udp")]
4684 Socks5Udp,
4685}
4686
4687#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4688#[serde(rename_all = "camelCase")]
4689pub struct NetworkPolicyAmendment {
4690 #[serde()]
4691 pub action: NetworkPolicyRuleAction,
4692 #[serde(default)]
4693 pub host: String,
4694}
4695
4696#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
4697pub enum NetworkPolicyRuleAction {
4698 #[serde(rename = "allow")]
4699 Allow,
4700 #[serde(rename = "deny")]
4701 Deny,
4702}
4703
4704#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4705#[serde(rename_all = "camelCase")]
4706pub struct NewThreadModelDefaults {
4707 #[serde(default, skip_serializing_if = "Option::is_none")]
4708 pub model: Option<String>,
4709 #[serde(
4710 rename = "modelReasoningEffort",
4711 default,
4712 skip_serializing_if = "Option::is_none"
4713 )]
4714 pub model_reasoning_effort: Option<ReasoningEffort>,
4715 #[serde(
4716 rename = "serviceTier",
4717 default,
4718 skip_serializing_if = "Option::is_none"
4719 )]
4720 pub service_tier: Option<String>,
4721}
4722
4723#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
4724pub enum NonSteerableTurnKind {
4725 #[serde(rename = "review")]
4726 Review,
4727 #[serde(rename = "compact")]
4728 Compact,
4729}
4730
4731#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4732#[serde(rename_all = "camelCase")]
4733pub struct OverriddenMetadata {
4734 #[serde(rename = "effectiveValue", default)]
4735 pub effective_value: Value,
4736 #[serde(default)]
4737 pub message: String,
4738 #[serde(rename = "overridingLayer")]
4739 pub overriding_layer: ConfigLayerMetadata,
4740}
4741
4742#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4743#[serde(tag = "type", rename_all = "camelCase")]
4744pub enum ParsedCommand {
4745 Read {
4746 cmd: String,
4747 name: String,
4748 path: String,
4749 },
4750 List_files {
4751 cmd: String,
4752 #[serde(default, skip_serializing_if = "Option::is_none")]
4753 path: Option<String>,
4754 },
4755 Search {
4756 cmd: String,
4757 #[serde(default, skip_serializing_if = "Option::is_none")]
4758 path: Option<String>,
4759 #[serde(default, skip_serializing_if = "Option::is_none")]
4760 query: Option<String>,
4761 },
4762 Unknown {
4763 cmd: String,
4764 },
4765}
4766
4767#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
4768pub enum PatchApplyStatus {
4769 #[serde(rename = "inProgress")]
4770 InProgress,
4771 #[serde(rename = "completed")]
4772 Completed,
4773 #[serde(rename = "failed")]
4774 Failed,
4775 #[serde(rename = "declined")]
4776 Declined,
4777}
4778
4779#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4780#[serde(tag = "type", rename_all = "camelCase")]
4781pub enum PatchChangeKind {
4782 Add,
4783 Delete,
4784 Update {
4785 #[serde(default, skip_serializing_if = "Option::is_none")]
4786 move_path: Option<String>,
4787 },
4788}
4789
4790#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
4791pub enum PermissionGrantScope {
4792 #[serde(rename = "turn")]
4793 Turn,
4794 #[serde(rename = "session")]
4795 Session,
4796}
4797
4798#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4799#[serde(rename_all = "camelCase")]
4800pub struct PermissionProfileListParams {
4801 #[serde(default, skip_serializing_if = "Option::is_none")]
4802 pub cursor: Option<String>,
4803 #[serde(default, skip_serializing_if = "Option::is_none")]
4804 pub cwd: Option<String>,
4805 #[serde(default, skip_serializing_if = "Option::is_none")]
4806 pub limit: Option<i64>,
4807}
4808
4809#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4810#[serde(rename_all = "camelCase")]
4811pub struct PermissionProfileListResponse {
4812 #[serde(default)]
4813 pub data: Vec<PermissionProfileSummary>,
4814 #[serde(
4815 rename = "nextCursor",
4816 default,
4817 skip_serializing_if = "Option::is_none"
4818 )]
4819 pub next_cursor: Option<String>,
4820}
4821
4822#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4823#[serde(rename_all = "camelCase")]
4824pub struct PermissionProfileSummary {
4825 #[serde(default)]
4826 pub allowed: bool,
4827 #[serde(default, skip_serializing_if = "Option::is_none")]
4828 pub description: Option<String>,
4829 #[serde(default)]
4830 pub id: String,
4831}
4832
4833#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4834#[serde(rename_all = "camelCase")]
4835pub struct PermissionsRequestApprovalParams {
4836 #[serde()]
4837 pub cwd: AbsolutePathBuf,
4838 #[serde(
4839 rename = "environmentId",
4840 default,
4841 skip_serializing_if = "Option::is_none"
4842 )]
4843 pub environment_id: Option<String>,
4844 #[serde(rename = "itemId", default)]
4845 pub item_id: String,
4846 #[serde()]
4847 pub permissions: RequestPermissionProfile,
4848 #[serde(default, skip_serializing_if = "Option::is_none")]
4849 pub reason: Option<String>,
4850 #[serde(rename = "startedAtMs", default)]
4851 pub started_at_ms: i64,
4852 #[serde(rename = "threadId", default)]
4853 pub thread_id: String,
4854 #[serde(rename = "turnId", default)]
4855 pub turn_id: String,
4856}
4857
4858#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4859#[serde(rename_all = "camelCase")]
4860pub struct PermissionsRequestApprovalResponse {
4861 #[serde()]
4862 pub permissions: GrantedPermissionProfile,
4863 #[serde(default, skip_serializing_if = "Option::is_none")]
4864 pub scope: Option<Value>,
4865 #[serde(
4866 rename = "strictAutoReview",
4867 default,
4868 skip_serializing_if = "Option::is_none"
4869 )]
4870 pub strict_auto_review: Option<bool>,
4871}
4872
4873#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
4874pub enum Personality {
4875 #[serde(rename = "none")]
4876 None,
4877 #[serde(rename = "friendly")]
4878 Friendly,
4879 #[serde(rename = "pragmatic")]
4880 Pragmatic,
4881}
4882
4883#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4884#[serde(rename_all = "camelCase")]
4885pub struct PlanDeltaNotification {
4886 #[serde(default)]
4887 pub delta: String,
4888 #[serde(rename = "itemId", default)]
4889 pub item_id: String,
4890 #[serde(rename = "threadId", default)]
4891 pub thread_id: String,
4892 #[serde(rename = "turnId", default)]
4893 pub turn_id: String,
4894}
4895
4896#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
4897pub enum PlanType {
4898 #[serde(rename = "free")]
4899 Free,
4900 #[serde(rename = "go")]
4901 Go,
4902 #[serde(rename = "plus")]
4903 Plus,
4904 #[serde(rename = "pro")]
4905 Pro,
4906 #[serde(rename = "prolite")]
4907 Prolite,
4908 #[serde(rename = "edu_plus")]
4909 Edu_plus,
4910 #[serde(rename = "edu_pro")]
4911 Edu_pro,
4912 #[serde(rename = "team")]
4913 Team,
4914 #[serde(rename = "self_serve_business_prolite")]
4915 Self_serve_business_prolite,
4916 #[serde(rename = "self_serve_business_usage_based")]
4917 Self_serve_business_usage_based,
4918 #[serde(rename = "business")]
4919 Business,
4920 #[serde(rename = "ent26")]
4921 Ent26,
4922 #[serde(rename = "enterprise_cbp_automation")]
4923 Enterprise_cbp_automation,
4924 #[serde(rename = "enterprise_cbp_usage_based")]
4925 Enterprise_cbp_usage_based,
4926 #[serde(rename = "enterprise")]
4927 Enterprise,
4928 #[serde(rename = "edu")]
4929 Edu,
4930 #[serde(rename = "unknown")]
4931 Unknown,
4932}
4933
4934#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
4935pub enum PluginAuthPolicy {
4936 #[serde(rename = "ON_INSTALL")]
4937 ON_INSTALL,
4938 #[serde(rename = "ON_USE")]
4939 ON_USE,
4940}
4941
4942#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)]
4943pub enum PluginAvailability {
4944 #[serde(rename = "DISABLED_BY_ADMIN")]
4945 DISABLEDBYADMIN,
4946 AVAILABLE,
4947}
4948
4949#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4950#[serde(rename_all = "camelCase")]
4951pub struct PluginDetail {
4952 #[serde(rename = "appTemplates", default)]
4953 pub app_templates: Vec<AppTemplateSummary>,
4954 #[serde(default)]
4955 pub apps: Vec<AppSummary>,
4956 #[serde(default, skip_serializing_if = "Option::is_none")]
4957 pub description: Option<String>,
4958 #[serde(default)]
4959 pub hooks: Vec<PluginHookSummary>,
4960 #[serde(rename = "marketplaceName", default)]
4961 pub marketplace_name: String,
4962 #[serde(
4963 rename = "marketplacePath",
4964 default,
4965 skip_serializing_if = "Option::is_none"
4966 )]
4967 pub marketplace_path: Option<AbsolutePathBuf>,
4968 #[serde(rename = "mcpServers", default)]
4969 pub mcp_servers: Vec<String>,
4970 #[serde(
4971 rename = "scheduledTasks",
4972 default,
4973 skip_serializing_if = "Option::is_none"
4974 )]
4975 pub scheduled_tasks: Option<Vec<ScheduledTaskSummary>>,
4976 #[serde(rename = "shareUrl", default, skip_serializing_if = "Option::is_none")]
4977 pub share_url: Option<String>,
4978 #[serde(default)]
4979 pub skills: Vec<SkillSummary>,
4980 #[serde()]
4981 pub summary: PluginSummary,
4982}
4983
4984#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
4985pub enum PluginDisabledReason {
4986 #[serde(rename = "disabled_by_admin")]
4987 Disabled_by_admin,
4988 #[serde(rename = "plan_not_eligible")]
4989 Plan_not_eligible,
4990 #[serde(rename = "required_app_unavailable")]
4991 Required_app_unavailable,
4992 #[serde(rename = "unknown")]
4993 Unknown,
4994}
4995
4996#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4997#[serde(rename_all = "camelCase")]
4998pub struct PluginHookSummary {
4999 #[serde(rename = "eventName")]
5000 pub event_name: HookEventName,
5001 #[serde(default)]
5002 pub key: String,
5003}
5004
5005#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5006#[serde(rename_all = "camelCase")]
5007pub struct PluginInstallParams {
5008 #[serde(
5009 rename = "installAttemptId",
5010 default,
5011 skip_serializing_if = "Option::is_none"
5012 )]
5013 pub install_attempt_id: Option<String>,
5014 #[serde(
5015 rename = "marketplacePath",
5016 default,
5017 skip_serializing_if = "Option::is_none"
5018 )]
5019 pub marketplace_path: Option<AbsolutePathBuf>,
5020 #[serde(rename = "pluginName", default)]
5021 pub plugin_name: String,
5022 #[serde(
5023 rename = "remoteMarketplaceName",
5024 default,
5025 skip_serializing_if = "Option::is_none"
5026 )]
5027 pub remote_marketplace_name: Option<String>,
5028}
5029
5030#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
5031pub enum PluginInstallPolicy {
5032 #[serde(rename = "NOT_AVAILABLE")]
5033 NOT_AVAILABLE,
5034 #[serde(rename = "AVAILABLE")]
5035 AVAILABLE,
5036 #[serde(rename = "INSTALLED_BY_DEFAULT")]
5037 INSTALLED_BY_DEFAULT,
5038}
5039
5040#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
5041pub enum PluginInstallPolicySource {
5042 #[serde(rename = "WORKSPACE_SETTING")]
5043 WORKSPACE_SETTING,
5044 #[serde(rename = "IMPLICIT_CANONICAL_APP")]
5045 IMPLICIT_CANONICAL_APP,
5046}
5047
5048#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5049#[serde(rename_all = "camelCase")]
5050pub struct PluginInstallResponse {
5051 #[serde(rename = "appsNeedingAuth", default)]
5052 pub apps_needing_auth: Vec<AppSummary>,
5053 #[serde(rename = "authPolicy")]
5054 pub auth_policy: PluginAuthPolicy,
5055}
5056
5057#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5058#[serde(rename_all = "camelCase")]
5059pub struct PluginInstalledParams {
5060 #[serde(default, skip_serializing_if = "Option::is_none")]
5061 pub cwds: Option<Vec<AbsolutePathBuf>>,
5062 #[serde(
5063 rename = "installSuggestionPluginNames",
5064 default,
5065 skip_serializing_if = "Option::is_none"
5066 )]
5067 pub install_suggestion_plugin_names: Option<Vec<String>>,
5068}
5069
5070#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5071#[serde(rename_all = "camelCase")]
5072pub struct PluginInstalledResponse {
5073 #[serde(
5074 rename = "marketplaceLoadErrors",
5075 default,
5076 skip_serializing_if = "Option::is_none"
5077 )]
5078 pub marketplace_load_errors: Option<Vec<MarketplaceLoadErrorInfo>>,
5079 #[serde(default)]
5080 pub marketplaces: Vec<PluginMarketplaceEntry>,
5081}
5082
5083#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5084#[serde(rename_all = "camelCase")]
5085pub struct PluginInterface {
5086 #[serde(
5087 rename = "brandColor",
5088 default,
5089 skip_serializing_if = "Option::is_none"
5090 )]
5091 pub brand_color: Option<String>,
5092 #[serde(default)]
5093 pub capabilities: Vec<String>,
5094 #[serde(default, skip_serializing_if = "Option::is_none")]
5095 pub category: Option<String>,
5096 #[serde(
5097 rename = "composerIcon",
5098 default,
5099 skip_serializing_if = "Option::is_none"
5100 )]
5101 pub composer_icon: Option<AbsolutePathBuf>,
5102 #[serde(
5103 rename = "composerIconUrl",
5104 default,
5105 skip_serializing_if = "Option::is_none"
5106 )]
5107 pub composer_icon_url: Option<String>,
5108 #[serde(
5109 rename = "defaultPrompt",
5110 default,
5111 skip_serializing_if = "Option::is_none"
5112 )]
5113 pub default_prompt: Option<Vec<String>>,
5114 #[serde(
5115 rename = "developerName",
5116 default,
5117 skip_serializing_if = "Option::is_none"
5118 )]
5119 pub developer_name: Option<String>,
5120 #[serde(
5121 rename = "displayName",
5122 default,
5123 skip_serializing_if = "Option::is_none"
5124 )]
5125 pub display_name: Option<String>,
5126 #[serde(default, skip_serializing_if = "Option::is_none")]
5127 pub logo: Option<AbsolutePathBuf>,
5128 #[serde(rename = "logoDark", default, skip_serializing_if = "Option::is_none")]
5129 pub logo_dark: Option<AbsolutePathBuf>,
5130 #[serde(rename = "logoUrl", default, skip_serializing_if = "Option::is_none")]
5131 pub logo_url: Option<String>,
5132 #[serde(
5133 rename = "logoUrlDark",
5134 default,
5135 skip_serializing_if = "Option::is_none"
5136 )]
5137 pub logo_url_dark: Option<String>,
5138 #[serde(
5139 rename = "longDescription",
5140 default,
5141 skip_serializing_if = "Option::is_none"
5142 )]
5143 pub long_description: Option<String>,
5144 #[serde(
5145 rename = "privacyPolicyUrl",
5146 default,
5147 skip_serializing_if = "Option::is_none"
5148 )]
5149 pub privacy_policy_url: Option<String>,
5150 #[serde(rename = "screenshotUrls", default)]
5151 pub screenshot_urls: Vec<String>,
5152 #[serde(default)]
5153 pub screenshots: Vec<AbsolutePathBuf>,
5154 #[serde(
5155 rename = "shortDescription",
5156 default,
5157 skip_serializing_if = "Option::is_none"
5158 )]
5159 pub short_description: Option<String>,
5160 #[serde(
5161 rename = "termsOfServiceUrl",
5162 default,
5163 skip_serializing_if = "Option::is_none"
5164 )]
5165 pub terms_of_service_url: Option<String>,
5166 #[serde(
5167 rename = "websiteUrl",
5168 default,
5169 skip_serializing_if = "Option::is_none"
5170 )]
5171 pub website_url: Option<String>,
5172}
5173
5174#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
5175pub enum PluginListMarketplaceKind {
5176 #[serde(rename = "local")]
5177 Local,
5178 #[serde(rename = "vertical")]
5179 Vertical,
5180 #[serde(rename = "workspace-directory")]
5181 Workspace_directory,
5182 #[serde(rename = "shared-with-me")]
5183 Shared_with_me,
5184 #[serde(rename = "created-by-me-remote")]
5185 Created_by_me_remote,
5186}
5187
5188#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5189#[serde(rename_all = "camelCase")]
5190pub struct PluginListParams {
5191 #[serde(default, skip_serializing_if = "Option::is_none")]
5192 pub cwds: Option<Vec<AbsolutePathBuf>>,
5193 #[serde(
5194 rename = "forceRefetch",
5195 default,
5196 skip_serializing_if = "Option::is_none"
5197 )]
5198 pub force_refetch: Option<bool>,
5199 #[serde(
5200 rename = "marketplaceKinds",
5201 default,
5202 skip_serializing_if = "Option::is_none"
5203 )]
5204 pub marketplace_kinds: Option<Vec<PluginListMarketplaceKind>>,
5205}
5206
5207#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5208#[serde(rename_all = "camelCase")]
5209pub struct PluginListResponse {
5210 #[serde(
5211 rename = "featuredPluginIds",
5212 default,
5213 skip_serializing_if = "Option::is_none"
5214 )]
5215 pub featured_plugin_ids: Option<Vec<String>>,
5216 #[serde(
5217 rename = "marketplaceLoadErrors",
5218 default,
5219 skip_serializing_if = "Option::is_none"
5220 )]
5221 pub marketplace_load_errors: Option<Vec<MarketplaceLoadErrorInfo>>,
5222 #[serde(default)]
5223 pub marketplaces: Vec<PluginMarketplaceEntry>,
5224}
5225
5226#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5227#[serde(rename_all = "camelCase")]
5228pub struct PluginMarketplaceEntry {
5229 #[serde(default, skip_serializing_if = "Option::is_none")]
5230 pub interface: Option<MarketplaceInterface>,
5231 #[serde(default)]
5232 pub name: String,
5233 #[serde(default, skip_serializing_if = "Option::is_none")]
5234 pub path: Option<AbsolutePathBuf>,
5235 #[serde(default)]
5236 pub plugins: Vec<PluginSummary>,
5237}
5238
5239#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5240#[serde(rename_all = "camelCase")]
5241pub struct PluginReadParams {
5242 #[serde(
5243 rename = "marketplacePath",
5244 default,
5245 skip_serializing_if = "Option::is_none"
5246 )]
5247 pub marketplace_path: Option<AbsolutePathBuf>,
5248 #[serde(rename = "pluginName", default)]
5249 pub plugin_name: String,
5250 #[serde(
5251 rename = "remoteMarketplaceName",
5252 default,
5253 skip_serializing_if = "Option::is_none"
5254 )]
5255 pub remote_marketplace_name: Option<String>,
5256}
5257
5258#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5259#[serde(rename_all = "camelCase")]
5260pub struct PluginReadResponse {
5261 #[serde()]
5262 pub plugin: PluginDetail,
5263}
5264
5265#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5266#[serde(rename_all = "camelCase")]
5267pub struct PluginShareCheckoutParams {
5268 #[serde(rename = "remotePluginId", default)]
5269 pub remote_plugin_id: String,
5270}
5271
5272#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5273#[serde(rename_all = "camelCase")]
5274pub struct PluginShareCheckoutResponse {
5275 #[serde(rename = "marketplaceName", default)]
5276 pub marketplace_name: String,
5277 #[serde(rename = "marketplacePath")]
5278 pub marketplace_path: AbsolutePathBuf,
5279 #[serde(rename = "pluginId", default)]
5280 pub plugin_id: String,
5281 #[serde(rename = "pluginName", default)]
5282 pub plugin_name: String,
5283 #[serde(rename = "pluginPath")]
5284 pub plugin_path: AbsolutePathBuf,
5285 #[serde(rename = "remotePluginId", default)]
5286 pub remote_plugin_id: String,
5287 #[serde(
5288 rename = "remoteVersion",
5289 default,
5290 skip_serializing_if = "Option::is_none"
5291 )]
5292 pub remote_version: Option<String>,
5293}
5294
5295#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5296#[serde(rename_all = "camelCase")]
5297pub struct PluginShareContext {
5298 #[serde(
5299 rename = "canPublishToWorkspace",
5300 default,
5301 skip_serializing_if = "Option::is_none"
5302 )]
5303 pub can_publish_to_workspace: Option<bool>,
5304 #[serde(
5305 rename = "creatorAccountUserId",
5306 default,
5307 skip_serializing_if = "Option::is_none"
5308 )]
5309 pub creator_account_user_id: Option<String>,
5310 #[serde(
5311 rename = "creatorName",
5312 default,
5313 skip_serializing_if = "Option::is_none"
5314 )]
5315 pub creator_name: Option<String>,
5316 #[serde(default, skip_serializing_if = "Option::is_none")]
5317 pub discoverability: Option<PluginShareDiscoverability>,
5318 #[serde(rename = "remotePluginId", default)]
5319 pub remote_plugin_id: String,
5320 #[serde(
5321 rename = "remoteVersion",
5322 default,
5323 skip_serializing_if = "Option::is_none"
5324 )]
5325 pub remote_version: Option<String>,
5326 #[serde(
5327 rename = "sharePrincipals",
5328 default,
5329 skip_serializing_if = "Option::is_none"
5330 )]
5331 pub share_principals: Option<Vec<PluginSharePrincipal>>,
5332 #[serde(rename = "shareUrl", default, skip_serializing_if = "Option::is_none")]
5333 pub share_url: Option<String>,
5334}
5335
5336#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5337#[serde(rename_all = "camelCase")]
5338pub struct PluginShareDeleteParams {
5339 #[serde(rename = "remotePluginId", default)]
5340 pub remote_plugin_id: String,
5341}
5342
5343#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5344#[serde(rename_all = "camelCase")]
5345pub struct PluginShareDeleteResponse {
5346 #[serde(flatten, default, skip_serializing_if = "serde_json::Map::is_empty")]
5347 pub extra: serde_json::Map<String, Value>,
5348}
5349
5350#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
5351pub enum PluginShareDiscoverability {
5352 #[serde(rename = "LISTED")]
5353 LISTED,
5354 #[serde(rename = "UNLISTED")]
5355 UNLISTED,
5356 #[serde(rename = "PRIVATE")]
5357 PRIVATE,
5358}
5359
5360#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5361#[serde(rename_all = "camelCase")]
5362pub struct PluginShareListItem {
5363 #[serde(
5364 rename = "localPluginPath",
5365 default,
5366 skip_serializing_if = "Option::is_none"
5367 )]
5368 pub local_plugin_path: Option<AbsolutePathBuf>,
5369 #[serde()]
5370 pub plugin: PluginSummary,
5371}
5372
5373#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5374#[serde(rename_all = "camelCase")]
5375pub struct PluginShareListParams {
5376 #[serde(flatten, default, skip_serializing_if = "serde_json::Map::is_empty")]
5377 pub extra: serde_json::Map<String, Value>,
5378}
5379
5380#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5381#[serde(rename_all = "camelCase")]
5382pub struct PluginShareListResponse {
5383 #[serde(default)]
5384 pub data: Vec<PluginShareListItem>,
5385}
5386
5387#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5388#[serde(rename_all = "camelCase")]
5389pub struct PluginSharePrincipal {
5390 #[serde(default)]
5391 pub name: String,
5392 #[serde(rename = "principalId", default)]
5393 pub principal_id: String,
5394 #[serde(rename = "principalType")]
5395 pub principal_type: PluginSharePrincipalType,
5396 #[serde()]
5397 pub role: PluginSharePrincipalRole,
5398}
5399
5400#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
5401pub enum PluginSharePrincipalRole {
5402 #[serde(rename = "reader")]
5403 Reader,
5404 #[serde(rename = "editor")]
5405 Editor,
5406 #[serde(rename = "owner")]
5407 Owner,
5408}
5409
5410#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
5411pub enum PluginSharePrincipalType {
5412 #[serde(rename = "user")]
5413 User,
5414 #[serde(rename = "group")]
5415 Group,
5416 #[serde(rename = "workspace")]
5417 Workspace,
5418}
5419
5420#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5421#[serde(rename_all = "camelCase")]
5422pub struct PluginShareSaveParams {
5423 #[serde(default, skip_serializing_if = "Option::is_none")]
5424 pub discoverability: Option<PluginShareDiscoverability>,
5425 #[serde(rename = "pluginPath")]
5426 pub plugin_path: AbsolutePathBuf,
5427 #[serde(
5428 rename = "remotePluginId",
5429 default,
5430 skip_serializing_if = "Option::is_none"
5431 )]
5432 pub remote_plugin_id: Option<String>,
5433 #[serde(
5434 rename = "shareTargets",
5435 default,
5436 skip_serializing_if = "Option::is_none"
5437 )]
5438 pub share_targets: Option<Vec<PluginShareTarget>>,
5439}
5440
5441#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5442#[serde(rename_all = "camelCase")]
5443pub struct PluginShareSaveResponse {
5444 #[serde(
5445 rename = "canPublishToWorkspace",
5446 default,
5447 skip_serializing_if = "Option::is_none"
5448 )]
5449 pub can_publish_to_workspace: Option<bool>,
5450 #[serde(rename = "remotePluginId", default)]
5451 pub remote_plugin_id: String,
5452 #[serde(rename = "shareUrl", default)]
5453 pub share_url: String,
5454}
5455
5456#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5457#[serde(rename_all = "camelCase")]
5458pub struct PluginShareTarget {
5459 #[serde(rename = "principalId", default)]
5460 pub principal_id: String,
5461 #[serde(rename = "principalType")]
5462 pub principal_type: PluginSharePrincipalType,
5463 #[serde()]
5464 pub role: PluginShareTargetRole,
5465}
5466
5467#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
5468pub enum PluginShareTargetRole {
5469 #[serde(rename = "reader")]
5470 Reader,
5471 #[serde(rename = "editor")]
5472 Editor,
5473}
5474
5475#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
5476pub enum PluginShareUpdateDiscoverability {
5477 #[serde(rename = "UNLISTED")]
5478 UNLISTED,
5479 #[serde(rename = "PRIVATE")]
5480 PRIVATE,
5481 #[serde(rename = "LISTED")]
5482 LISTED,
5483}
5484
5485#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5486#[serde(rename_all = "camelCase")]
5487pub struct PluginShareUpdateTargetsParams {
5488 #[serde()]
5489 pub discoverability: PluginShareUpdateDiscoverability,
5490 #[serde(rename = "remotePluginId", default)]
5491 pub remote_plugin_id: String,
5492 #[serde(rename = "shareTargets", default)]
5493 pub share_targets: Vec<PluginShareTarget>,
5494}
5495
5496#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5497#[serde(rename_all = "camelCase")]
5498pub struct PluginShareUpdateTargetsResponse {
5499 #[serde()]
5500 pub discoverability: PluginShareDiscoverability,
5501 #[serde(default)]
5502 pub principals: Vec<PluginSharePrincipal>,
5503}
5504
5505#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5506#[serde(rename_all = "camelCase")]
5507pub struct PluginSkillReadParams {
5508 #[serde(rename = "remoteMarketplaceName", default)]
5509 pub remote_marketplace_name: String,
5510 #[serde(rename = "remotePluginId", default)]
5511 pub remote_plugin_id: String,
5512 #[serde(rename = "skillName", default)]
5513 pub skill_name: String,
5514}
5515
5516#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5517#[serde(rename_all = "camelCase")]
5518pub struct PluginSkillReadResponse {
5519 #[serde(default, skip_serializing_if = "Option::is_none")]
5520 pub contents: Option<String>,
5521}
5522
5523#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5524#[serde(tag = "type", rename_all = "camelCase")]
5525pub enum PluginSource {
5526 Local {
5527 path: AbsolutePathBuf,
5528 },
5529 Git {
5530 #[serde(default, skip_serializing_if = "Option::is_none")]
5531 path: Option<String>,
5532 #[serde(rename = "refName", default, skip_serializing_if = "Option::is_none")]
5533 ref_name: Option<String>,
5534 #[serde(default, skip_serializing_if = "Option::is_none")]
5535 sha: Option<String>,
5536 url: String,
5537 },
5538 Npm {
5539 package: String,
5540 #[serde(default, skip_serializing_if = "Option::is_none")]
5541 registry: Option<String>,
5542 #[serde(default, skip_serializing_if = "Option::is_none")]
5543 version: Option<String>,
5544 },
5545 Remote,
5546}
5547
5548#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5549#[serde(rename_all = "camelCase")]
5550pub struct PluginSummary {
5551 #[serde(rename = "authPolicy")]
5552 pub auth_policy: PluginAuthPolicy,
5553 #[serde(default, skip_serializing_if = "Option::is_none")]
5554 pub availability: Option<Value>,
5555 #[serde(
5556 rename = "disabledReason",
5557 default,
5558 skip_serializing_if = "Option::is_none"
5559 )]
5560 pub disabled_reason: Option<PluginDisabledReason>,
5561 #[serde(
5562 rename = "eligiblePlanTypes",
5563 default,
5564 skip_serializing_if = "Option::is_none"
5565 )]
5566 pub eligible_plan_types: Option<Vec<String>>,
5567 #[serde(default)]
5568 pub enabled: bool,
5569 #[serde(default)]
5570 pub id: String,
5571 #[serde(rename = "installPolicy")]
5572 pub install_policy: PluginInstallPolicy,
5573 #[serde(
5574 rename = "installPolicySource",
5575 default,
5576 skip_serializing_if = "Option::is_none"
5577 )]
5578 pub install_policy_source: Option<PluginInstallPolicySource>,
5579 #[serde(default)]
5580 pub installed: bool,
5581 #[serde(
5582 rename = "installedAt",
5583 default,
5584 skip_serializing_if = "Option::is_none"
5585 )]
5586 pub installed_at: Option<i64>,
5587 #[serde(default, skip_serializing_if = "Option::is_none")]
5588 pub interface: Option<PluginInterface>,
5589 #[serde(default, skip_serializing_if = "Option::is_none")]
5590 pub keywords: Option<Vec<String>>,
5591 #[serde(
5592 rename = "localVersion",
5593 default,
5594 skip_serializing_if = "Option::is_none"
5595 )]
5596 pub local_version: Option<String>,
5597 #[serde(
5598 rename = "mustShowInstallationInterstitial",
5599 default,
5600 skip_serializing_if = "Option::is_none"
5601 )]
5602 pub must_show_installation_interstitial: Option<bool>,
5603 #[serde(default)]
5604 pub name: String,
5605 #[serde(
5606 rename = "remotePluginId",
5607 default,
5608 skip_serializing_if = "Option::is_none"
5609 )]
5610 pub remote_plugin_id: Option<String>,
5611 #[serde(
5612 rename = "shareContext",
5613 default,
5614 skip_serializing_if = "Option::is_none"
5615 )]
5616 pub share_context: Option<PluginShareContext>,
5617 #[serde()]
5618 pub source: PluginSource,
5619 #[serde(default, skip_serializing_if = "Option::is_none")]
5620 pub version: Option<String>,
5621}
5622
5623#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5624#[serde(rename_all = "camelCase")]
5625pub struct PluginUninstallParams {
5626 #[serde(rename = "pluginId", default)]
5627 pub plugin_id: String,
5628}
5629
5630#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5631#[serde(rename_all = "camelCase")]
5632pub struct PluginUninstallResponse {
5633 #[serde(flatten, default, skip_serializing_if = "serde_json::Map::is_empty")]
5634 pub extra: serde_json::Map<String, Value>,
5635}
5636
5637#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5638#[serde(rename_all = "camelCase")]
5639pub struct PluginsMigration {
5640 #[serde(rename = "marketplaceName", default)]
5641 pub marketplace_name: String,
5642 #[serde(rename = "pluginNames", default)]
5643 pub plugin_names: Vec<String>,
5644}
5645
5646#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5647#[serde(rename_all = "camelCase")]
5648pub struct ProcessExitedNotification {
5649 #[serde(rename = "exitCode", default)]
5650 pub exit_code: i64,
5651 #[serde(rename = "processHandle", default)]
5652 pub process_handle: String,
5653 #[serde(default)]
5654 pub stderr: String,
5655 #[serde(rename = "stderrCapReached", default)]
5656 pub stderr_cap_reached: bool,
5657 #[serde(default)]
5658 pub stdout: String,
5659 #[serde(rename = "stdoutCapReached", default)]
5660 pub stdout_cap_reached: bool,
5661}
5662
5663#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5664#[serde(rename_all = "camelCase")]
5665pub struct ProcessOutputDeltaNotification {
5666 #[serde(rename = "capReached", default)]
5667 pub cap_reached: bool,
5668 #[serde(rename = "deltaBase64", default)]
5669 pub delta_base64: String,
5670 #[serde(rename = "processHandle", default)]
5671 pub process_handle: String,
5672 #[serde(default)]
5673 pub stream: Value,
5674}
5675
5676#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)]
5677pub enum ProcessOutputStream {
5678 #[serde(rename = "stdout")]
5679 Stdout,
5680 #[serde(rename = "stderr")]
5681 Stderr,
5682}
5683
5684#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
5685pub enum RateLimitReachedType {
5686 #[serde(rename = "rate_limit_reached")]
5687 Rate_limit_reached,
5688 #[serde(rename = "workspace_owner_credits_depleted")]
5689 Workspace_owner_credits_depleted,
5690 #[serde(rename = "workspace_member_credits_depleted")]
5691 Workspace_member_credits_depleted,
5692 #[serde(rename = "workspace_owner_usage_limit_reached")]
5693 Workspace_owner_usage_limit_reached,
5694 #[serde(rename = "workspace_member_usage_limit_reached")]
5695 Workspace_member_usage_limit_reached,
5696}
5697
5698#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5699#[serde(rename_all = "camelCase")]
5700pub struct RateLimitResetCredit {
5701 #[serde(default, skip_serializing_if = "Option::is_none")]
5702 pub description: Option<String>,
5703 #[serde(rename = "expiresAt", default, skip_serializing_if = "Option::is_none")]
5704 pub expires_at: Option<i64>,
5705 #[serde(rename = "grantedAt", default)]
5706 pub granted_at: i64,
5707 #[serde(default)]
5708 pub id: String,
5709 #[serde(rename = "resetType")]
5710 pub reset_type: RateLimitResetType,
5711 #[serde()]
5712 pub status: RateLimitResetCreditStatus,
5713 #[serde(default, skip_serializing_if = "Option::is_none")]
5714 pub title: Option<String>,
5715}
5716
5717#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
5718pub enum RateLimitResetCreditStatus {
5719 #[serde(rename = "available")]
5720 Available,
5721 #[serde(rename = "redeeming")]
5722 Redeeming,
5723 #[serde(rename = "redeemed")]
5724 Redeemed,
5725 #[serde(rename = "unknown")]
5726 Unknown,
5727}
5728
5729#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5730#[serde(rename_all = "camelCase")]
5731pub struct RateLimitResetCreditsSummary {
5732 #[serde(rename = "availableCount", default)]
5733 pub available_count: i64,
5734 #[serde(default, skip_serializing_if = "Option::is_none")]
5735 pub credits: Option<Vec<RateLimitResetCredit>>,
5736}
5737
5738#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
5739pub enum RateLimitResetType {
5740 #[serde(rename = "codexRateLimits")]
5741 CodexRateLimits,
5742 #[serde(rename = "unknown")]
5743 Unknown,
5744}
5745
5746#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5747#[serde(rename_all = "camelCase")]
5748pub struct RateLimitSnapshot {
5749 #[serde(default, skip_serializing_if = "Option::is_none")]
5750 pub credits: Option<CreditsSnapshot>,
5751 #[serde(
5752 rename = "individualLimit",
5753 default,
5754 skip_serializing_if = "Option::is_none"
5755 )]
5756 pub individual_limit: Option<SpendControlLimitSnapshot>,
5757 #[serde(rename = "limitId", default, skip_serializing_if = "Option::is_none")]
5758 pub limit_id: Option<String>,
5759 #[serde(rename = "limitName", default, skip_serializing_if = "Option::is_none")]
5760 pub limit_name: Option<String>,
5761 #[serde(rename = "planType", default, skip_serializing_if = "Option::is_none")]
5762 pub plan_type: Option<PlanType>,
5763 #[serde(default, skip_serializing_if = "Option::is_none")]
5764 pub primary: Option<RateLimitWindow>,
5765 #[serde(
5766 rename = "rateLimitReachedType",
5767 default,
5768 skip_serializing_if = "Option::is_none"
5769 )]
5770 pub rate_limit_reached_type: Option<RateLimitReachedType>,
5771 #[serde(default, skip_serializing_if = "Option::is_none")]
5772 pub secondary: Option<RateLimitWindow>,
5773 #[serde(
5774 rename = "spendControlReached",
5775 default,
5776 skip_serializing_if = "Option::is_none"
5777 )]
5778 pub spend_control_reached: Option<bool>,
5779}
5780
5781#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5782#[serde(rename_all = "camelCase")]
5783pub struct RateLimitWindow {
5784 #[serde(rename = "resetsAt", default, skip_serializing_if = "Option::is_none")]
5785 pub resets_at: Option<i64>,
5786 #[serde(rename = "usedPercent", default)]
5787 pub used_percent: i64,
5788 #[serde(
5789 rename = "windowDurationMins",
5790 default,
5791 skip_serializing_if = "Option::is_none"
5792 )]
5793 pub window_duration_mins: Option<i64>,
5794}
5795
5796#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
5797pub enum RealtimeConversationVersion {
5798 #[serde(rename = "v1")]
5799 V1,
5800 #[serde(rename = "v2")]
5801 V2,
5802 #[serde(rename = "v3")]
5803 V3,
5804}
5805
5806#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq, Hash)]
5808#[serde(transparent)]
5809pub struct ReasoningEffort(pub String);
5810
5811#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5812#[serde(rename_all = "camelCase")]
5813pub struct ReasoningEffortOption {
5814 #[serde(default)]
5815 pub description: String,
5816 #[serde(rename = "reasoningEffort")]
5817 pub reasoning_effort: ReasoningEffort,
5818}
5819
5820#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)]
5821pub enum ReasoningSummary {
5822 #[serde(rename = "auto")]
5823 Auto,
5824 #[serde(rename = "concise")]
5825 Concise,
5826 #[serde(rename = "detailed")]
5827 Detailed,
5828 #[serde(rename = "none")]
5829 None,
5830}
5831
5832#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5833#[serde(rename_all = "camelCase")]
5834pub struct ReasoningSummaryPartAddedNotification {
5835 #[serde(rename = "itemId", default)]
5836 pub item_id: String,
5837 #[serde(rename = "summaryIndex", default)]
5838 pub summary_index: i64,
5839 #[serde(rename = "threadId", default)]
5840 pub thread_id: String,
5841 #[serde(rename = "turnId", default)]
5842 pub turn_id: String,
5843}
5844
5845#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5846#[serde(rename_all = "camelCase")]
5847pub struct ReasoningSummaryTextDeltaNotification {
5848 #[serde(default)]
5849 pub delta: String,
5850 #[serde(rename = "itemId", default)]
5851 pub item_id: String,
5852 #[serde(rename = "summaryIndex", default)]
5853 pub summary_index: i64,
5854 #[serde(rename = "threadId", default)]
5855 pub thread_id: String,
5856 #[serde(rename = "turnId", default)]
5857 pub turn_id: String,
5858}
5859
5860#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5861#[serde(rename_all = "camelCase")]
5862pub struct ReasoningTextDeltaNotification {
5863 #[serde(rename = "contentIndex", default)]
5864 pub content_index: i64,
5865 #[serde(default)]
5866 pub delta: String,
5867 #[serde(rename = "itemId", default)]
5868 pub item_id: String,
5869 #[serde(rename = "threadId", default)]
5870 pub thread_id: String,
5871 #[serde(rename = "turnId", default)]
5872 pub turn_id: String,
5873}
5874
5875#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
5876pub enum RemoteControlConnectionStatus {
5877 #[serde(rename = "disabled")]
5878 Disabled,
5879 #[serde(rename = "connecting")]
5880 Connecting,
5881 #[serde(rename = "connected")]
5882 Connected,
5883 #[serde(rename = "errored")]
5884 Errored,
5885}
5886
5887#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5888#[serde(rename_all = "camelCase")]
5889pub struct RemoteControlStatusChangedNotification {
5890 #[serde(
5891 rename = "environmentId",
5892 default,
5893 skip_serializing_if = "Option::is_none"
5894 )]
5895 pub environment_id: Option<String>,
5896 #[serde(rename = "installationId", default)]
5897 pub installation_id: String,
5898 #[serde(rename = "serverName", default)]
5899 pub server_name: String,
5900 #[serde()]
5901 pub status: RemoteControlConnectionStatus,
5902}
5903
5904#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5905#[serde(untagged)]
5906pub enum RequestId {
5907 Variant0(String),
5908 Variant1(i64),
5909}
5910
5911#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5912#[serde(rename_all = "camelCase")]
5913pub struct RequestPermissionProfile {
5914 #[serde(
5915 rename = "fileSystem",
5916 default,
5917 skip_serializing_if = "Option::is_none"
5918 )]
5919 pub file_system: Option<AdditionalFileSystemPermissions>,
5920 #[serde(default, skip_serializing_if = "Option::is_none")]
5921 pub network: Option<AdditionalNetworkPermissions>,
5922}
5923
5924#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
5925pub enum ResidencyRequirement {
5926 #[serde(rename = "us")]
5927 Us,
5928}
5929
5930#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5931#[serde(rename_all = "camelCase")]
5932pub struct Resource {
5933 #[serde(default, skip_serializing_if = "Option::is_none")]
5934 pub _meta: Option<Value>,
5935 #[serde(default, skip_serializing_if = "Option::is_none")]
5936 pub annotations: Option<Value>,
5937 #[serde(default, skip_serializing_if = "Option::is_none")]
5938 pub description: Option<String>,
5939 #[serde(default, skip_serializing_if = "Option::is_none")]
5940 pub icons: Option<Vec<Value>>,
5941 #[serde(rename = "mimeType", default, skip_serializing_if = "Option::is_none")]
5942 pub mime_type: Option<String>,
5943 #[serde(default)]
5944 pub name: String,
5945 #[serde(default, skip_serializing_if = "Option::is_none")]
5946 pub size: Option<i64>,
5947 #[serde(default, skip_serializing_if = "Option::is_none")]
5948 pub title: Option<String>,
5949 #[serde(default)]
5950 pub uri: String,
5951}
5952
5953#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5954#[serde(untagged)]
5955pub enum ResourceContent {
5956 Variant0(Value),
5957 Variant1(Value),
5958}
5959
5960#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5961#[serde(rename_all = "camelCase")]
5962pub struct ResourceTemplate {
5963 #[serde(default, skip_serializing_if = "Option::is_none")]
5964 pub annotations: Option<Value>,
5965 #[serde(default, skip_serializing_if = "Option::is_none")]
5966 pub description: Option<String>,
5967 #[serde(rename = "mimeType", default, skip_serializing_if = "Option::is_none")]
5968 pub mime_type: Option<String>,
5969 #[serde(default)]
5970 pub name: String,
5971 #[serde(default, skip_serializing_if = "Option::is_none")]
5972 pub title: Option<String>,
5973 #[serde(rename = "uriTemplate", default)]
5974 pub uri_template: String,
5975}
5976
5977#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5979#[serde(rename_all = "camelCase")]
5980pub struct ResponseUsageMetadata {
5981 #[serde(default, skip_serializing_if = "Option::is_none")]
5982 pub amount: Option<String>,
5983}
5984
5985#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
5986pub enum ReviewDecision {
5987 #[serde(rename = "approved")]
5988 Approved,
5989 #[serde(rename = "approved_execpolicy_amendment")]
5990 ApprovedExecpolicyAmendment {
5991 proposed_execpolicy_amendment: Vec<String>,
5992 },
5993 #[serde(rename = "approved_for_session")]
5994 ApprovedForSession,
5995 #[serde(rename = "approved_mcp_policy_amendment")]
5996 ApprovedMcpPolicyAmendment,
5997 #[serde(rename = "network_policy_amendment")]
5998 NetworkPolicyAmendment {
5999 network_policy_amendment: NetworkPolicyAmendment,
6000 },
6001 #[serde(rename = "denied")]
6002 Denied { rejection: String },
6003 #[serde(rename = "timed_out")]
6004 TimedOut,
6005 #[serde(rename = "abort")]
6006 Abort,
6007}
6008
6009#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
6010pub enum ReviewDelivery {
6011 #[serde(rename = "inline")]
6012 Inline,
6013 #[serde(rename = "detached")]
6014 Detached,
6015}
6016
6017#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6018#[serde(rename_all = "camelCase")]
6019pub struct ReviewStartParams {
6020 #[serde(default, skip_serializing_if = "Option::is_none")]
6021 pub delivery: Option<ReviewDelivery>,
6022 #[serde()]
6023 pub target: ReviewTarget,
6024 #[serde(rename = "threadId", default)]
6025 pub thread_id: String,
6026}
6027
6028#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6029#[serde(rename_all = "camelCase")]
6030pub struct ReviewStartResponse {
6031 #[serde(rename = "reviewThreadId", default)]
6032 pub review_thread_id: String,
6033 #[serde()]
6034 pub turn: Turn,
6035}
6036
6037#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6038#[serde(tag = "type", rename_all = "camelCase")]
6039pub enum ReviewTarget {
6040 #[serde(rename = "uncommittedChanges")]
6041 UncommittedChanges,
6042 #[serde(rename = "baseBranch")]
6043 BaseBranch {
6044 branch: String,
6045 },
6046 Commit {
6047 sha: String,
6048 #[serde(default, skip_serializing_if = "Option::is_none")]
6049 title: Option<String>,
6050 },
6051 Custom {
6052 instructions: String,
6053 },
6054}
6055
6056#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6058pub enum AgentMessageDelivery {
6059 #[serde(rename = "async")]
6060 Async,
6061}
6062
6063#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6065pub enum CliAuthCredentialsStoreMode {
6066 #[serde(rename = "file")]
6067 File,
6068 #[serde(rename = "keyring")]
6069 Keyring,
6070 #[serde(rename = "auto")]
6071 Auto,
6072 #[serde(rename = "ephemeral")]
6073 Ephemeral,
6074}
6075
6076#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6078pub struct Project {
6079 #[serde(rename = "createdAt", default)]
6080 pub created_at: i64,
6081 #[serde(default)]
6082 pub id: String,
6083 #[serde(default)]
6084 pub metadata: std::collections::HashMap<String, String>,
6085 #[serde(default)]
6086 pub name: String,
6087 #[serde(default)]
6088 pub position: i64,
6089 #[serde(rename = "recencyAt", default, skip_serializing_if = "Option::is_none")]
6092 pub recency_at: Option<i64>,
6093 #[serde(default)]
6094 pub roots: Vec<ProjectRoot>,
6095 #[serde(rename = "updatedAt", default)]
6096 pub updated_at: i64,
6097}
6098
6099#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
6101pub enum ProjectSortKey {
6102 #[serde(rename = "position")]
6103 Position,
6104 #[serde(rename = "recencyAt")]
6105 RecencyAt,
6106}
6107
6108#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6109pub enum ProjectChangeType {
6110 #[serde(rename = "created")]
6111 Created,
6112 #[serde(rename = "updated")]
6113 Updated,
6114 #[serde(rename = "deleted")]
6115 Deleted,
6116}
6117
6118#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6120pub struct ProjectChangedNotification {
6121 #[serde(rename = "changeType")]
6122 pub change_type: ProjectChangeType,
6123 #[serde(rename = "projectId", default)]
6124 pub project_id: String,
6125}
6126
6127#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6128pub struct ProjectRoot {
6129 pub path: AbsolutePathBuf,
6130}
6131
6132#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6134pub struct QueuedSubmission {
6135 #[serde(rename = "clientUserMessageId", default)]
6136 pub client_user_message_id: String,
6137 #[serde(default)]
6138 pub id: String,
6139 #[serde(default)]
6140 pub input: Vec<UserInput>,
6141}
6142
6143#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6145pub struct StrictReviewRequiredNotification {
6146 #[serde(rename = "startedAtMs", default)]
6148 pub started_at_ms: i64,
6149 #[serde(rename = "threadId", default)]
6150 pub thread_id: String,
6151 #[serde(rename = "turnId", default)]
6152 pub turn_id: String,
6153}
6154
6155#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6157pub struct ThreadProjectUpdatedNotification {
6158 #[serde(rename = "projectId", default)]
6159 pub project_id: Option<String>,
6160 #[serde(rename = "threadId", default)]
6161 pub thread_id: String,
6162}
6163
6164#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6166pub struct ThreadQueueChangedNotification {
6167 #[serde(rename = "threadId", default)]
6168 pub thread_id: String,
6169}
6170
6171#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6173pub struct ThreadRevertedNotification {
6174 #[serde(rename = "threadId", default)]
6175 pub thread_id: String,
6176}
6177
6178#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6180#[serde(rename_all = "camelCase")]
6181pub struct InAppBrowserRequirements {
6182 #[serde(
6183 rename = "allowExternalBrowserSettingsImport",
6184 default,
6185 skip_serializing_if = "Option::is_none"
6186 )]
6187 pub allow_external_browser_settings_import: Option<bool>,
6188}
6189
6190#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6192pub struct McpServerEventNotification {
6193 #[serde(default)]
6194 pub method: String,
6195 #[serde(default)]
6196 pub params: Value,
6197}
6198
6199#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6202pub struct McpServerEventStreamNotification {
6203 pub notification: McpServerEventNotification,
6204 #[serde(rename = "subscriptionId", default)]
6205 pub subscription_id: String,
6206}
6207
6208#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
6211pub enum AllowDenyRequirement {
6212 #[serde(rename = "allow")]
6213 Allow,
6214 #[serde(rename = "deny")]
6215 Deny,
6216}
6217
6218#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
6220pub enum BrowserUseAccessApprovalLifetime {
6221 #[serde(rename = "turn")]
6222 Turn,
6223 #[serde(rename = "thread")]
6224 Thread,
6225}
6226
6227#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
6229pub enum McpServerConnectionStatus {
6230 #[serde(rename = "notStarted")]
6231 NotStarted,
6232 #[serde(rename = "starting")]
6233 Starting,
6234 #[serde(rename = "connected")]
6235 Connected,
6236 #[serde(rename = "authenticationRequired")]
6237 AuthenticationRequired,
6238 #[serde(rename = "failed")]
6239 Failed,
6240 #[serde(rename = "cancelled")]
6241 Cancelled,
6242 #[serde(rename = "disabled")]
6243 Disabled,
6244}
6245
6246#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6248#[serde(rename_all = "camelCase")]
6249pub struct BrowserUseOriginPolicy {
6250 #[serde(default, skip_serializing_if = "Option::is_none")]
6251 pub access: Option<AllowDenyRequirement>,
6252 #[serde(
6253 rename = "accessApprovalLifetime",
6254 default,
6255 skip_serializing_if = "Option::is_none"
6256 )]
6257 pub access_approval_lifetime: Option<BrowserUseAccessApprovalLifetime>,
6258 #[serde(
6259 rename = "autoReview",
6260 default,
6261 skip_serializing_if = "Option::is_none"
6262 )]
6263 pub auto_review: Option<AllowDenyRequirement>,
6264 #[serde(default, skip_serializing_if = "Option::is_none")]
6265 pub downloads: Option<AllowDenyRequirement>,
6266 #[serde(
6267 rename = "fullCdpAccess",
6268 default,
6269 skip_serializing_if = "Option::is_none"
6270 )]
6271 pub full_cdp_access: Option<AllowDenyRequirement>,
6272 #[serde(
6273 rename = "persistentApproval",
6274 default,
6275 skip_serializing_if = "Option::is_none"
6276 )]
6277 pub persistent_approval: Option<bool>,
6278 #[serde(default, skip_serializing_if = "Option::is_none")]
6279 pub uploads: Option<AllowDenyRequirement>,
6280}
6281
6282#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6284pub struct BrowserUseOriginPolicyConfig {
6285 #[serde(default, skip_serializing_if = "Option::is_none")]
6286 pub access: Option<AllowDenyRequirement>,
6287 #[serde(default, skip_serializing_if = "Option::is_none")]
6288 pub downloads: Option<AllowDenyRequirement>,
6289 #[serde(default, skip_serializing_if = "Option::is_none")]
6290 pub full_cdp_access: Option<AllowDenyRequirement>,
6291 #[serde(default, skip_serializing_if = "Option::is_none")]
6292 pub uploads: Option<AllowDenyRequirement>,
6293}
6294
6295#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6297pub struct BrowserUseConfig {
6298 #[serde(default, skip_serializing_if = "Option::is_none")]
6299 pub allow_history_access: Option<bool>,
6300 #[serde(default, skip_serializing_if = "Option::is_none")]
6301 pub default_origin_policy: Option<BrowserUseOriginPolicyConfig>,
6302 #[serde(default, skip_serializing_if = "Option::is_none")]
6303 pub origins: Option<std::collections::HashMap<String, BrowserUseOriginPolicyConfig>>,
6304}
6305
6306#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6308pub struct ComputerUseConfig {
6309 #[serde(default, skip_serializing_if = "Option::is_none")]
6310 pub default_app_access: Option<AllowDenyRequirement>,
6311 #[serde(default, skip_serializing_if = "Option::is_none")]
6312 pub macos: Option<ComputerUseMacosConfig>,
6313 #[serde(default, skip_serializing_if = "Option::is_none")]
6314 pub windows: Option<ComputerUseWindowsConfig>,
6315}
6316
6317#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6318pub struct ComputerUseMacosConfig {
6319 #[serde(default, skip_serializing_if = "Option::is_none")]
6320 pub bundle_ids: Option<std::collections::HashMap<String, AllowDenyRequirement>>,
6321}
6322
6323#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6324pub struct ComputerUseWindowsConfig {
6325 #[serde(default, skip_serializing_if = "Option::is_none")]
6326 pub aumids: Option<std::collections::HashMap<String, AllowDenyRequirement>>,
6327 #[serde(default, skip_serializing_if = "Option::is_none")]
6328 pub exes: Option<Vec<ComputerUseWindowsExeConfig>>,
6329}
6330
6331#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6332pub struct ComputerUseWindowsExeConfig {
6333 pub access: AllowDenyRequirement,
6334 #[serde(default, skip_serializing_if = "Option::is_none")]
6335 pub binary_name: Option<String>,
6336 #[serde(default)]
6337 pub product_name: String,
6338 #[serde(default)]
6339 pub publisher_name: String,
6340}
6341
6342#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6344#[serde(rename_all = "camelCase")]
6345pub struct ComputerUseMacosRequirements {
6346 #[serde(rename = "bundleIds", default, skip_serializing_if = "Option::is_none")]
6347 pub bundle_ids: Option<std::collections::HashMap<String, AllowDenyRequirement>>,
6348}
6349
6350#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6351#[serde(rename_all = "camelCase")]
6352pub struct ComputerUseWindowsRequirements {
6353 #[serde(default, skip_serializing_if = "Option::is_none")]
6354 pub aumids: Option<std::collections::HashMap<String, AllowDenyRequirement>>,
6355 #[serde(default, skip_serializing_if = "Option::is_none")]
6356 pub exes: Option<Vec<ComputerUseWindowsExeRequirement>>,
6357}
6358
6359#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6360#[serde(rename_all = "camelCase")]
6361pub struct ComputerUseWindowsExeRequirement {
6362 pub access: AllowDenyRequirement,
6363 #[serde(
6364 rename = "binaryName",
6365 default,
6366 skip_serializing_if = "Option::is_none"
6367 )]
6368 pub binary_name: Option<String>,
6369 #[serde(rename = "productName", default)]
6370 pub product_name: String,
6371 #[serde(rename = "publisherName", default)]
6372 pub publisher_name: String,
6373}
6374
6375#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
6376pub enum SandboxMode {
6377 #[serde(rename = "read-only")]
6378 Read_only,
6379 #[serde(rename = "workspace-write")]
6380 Workspace_write,
6381 #[serde(rename = "danger-full-access")]
6382 Danger_full_access,
6383}
6384
6385#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6386#[serde(tag = "type", rename_all = "camelCase")]
6387pub enum SandboxPolicy {
6388 #[serde(rename = "dangerFullAccess")]
6389 DangerFullAccess,
6390 #[serde(rename = "readOnly")]
6391 ReadOnly {
6392 #[serde(
6393 rename = "networkAccess",
6394 default,
6395 skip_serializing_if = "Option::is_none"
6396 )]
6397 network_access: Option<bool>,
6398 },
6399 #[serde(rename = "externalSandbox")]
6400 ExternalSandbox {
6401 #[serde(
6402 rename = "networkAccess",
6403 default,
6404 skip_serializing_if = "Option::is_none"
6405 )]
6406 network_access: Option<Value>,
6407 },
6408 #[serde(rename = "workspaceWrite")]
6409 WorkspaceWrite {
6410 #[serde(
6411 rename = "excludeSlashTmp",
6412 default,
6413 skip_serializing_if = "Option::is_none"
6414 )]
6415 exclude_slash_tmp: Option<bool>,
6416 #[serde(
6417 rename = "excludeTmpdirEnvVar",
6418 default,
6419 skip_serializing_if = "Option::is_none"
6420 )]
6421 exclude_tmpdir_env_var: Option<bool>,
6422 #[serde(
6423 rename = "networkAccess",
6424 default,
6425 skip_serializing_if = "Option::is_none"
6426 )]
6427 network_access: Option<bool>,
6428 #[serde(
6429 rename = "writableRoots",
6430 default,
6431 skip_serializing_if = "Option::is_none"
6432 )]
6433 writable_roots: Option<Vec<AbsolutePathBuf>>,
6434 },
6435}
6436
6437#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6438#[serde(rename_all = "snake_case")]
6439pub struct SandboxWorkspaceWrite {
6440 #[serde(default, skip_serializing_if = "Option::is_none")]
6441 pub exclude_slash_tmp: Option<bool>,
6442 #[serde(default, skip_serializing_if = "Option::is_none")]
6443 pub exclude_tmpdir_env_var: Option<bool>,
6444 #[serde(default, skip_serializing_if = "Option::is_none")]
6445 pub network_access: Option<bool>,
6446 #[serde(default, skip_serializing_if = "Option::is_none")]
6447 pub writable_roots: Option<Vec<String>>,
6448}
6449
6450#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6451#[serde(tag = "type", rename_all = "camelCase")]
6452pub enum ScheduledTaskSchedule {
6453 Hourly {
6454 #[serde(default, skip_serializing_if = "Option::is_none")]
6455 days: Option<Vec<ScheduledTaskWeekday>>,
6456 #[serde(rename = "intervalHours")]
6457 interval_hours: i64,
6458 },
6459 Daily {
6460 time: String,
6461 },
6462 Weekdays {
6463 time: String,
6464 },
6465 Weekly {
6466 days: Vec<ScheduledTaskWeekday>,
6467 time: String,
6468 },
6469}
6470
6471#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6472#[serde(rename_all = "camelCase")]
6473pub struct ScheduledTaskSummary {
6474 #[serde(default)]
6475 pub key: String,
6476 #[serde(default)]
6477 pub name: String,
6478 #[serde(default)]
6479 pub prompt: String,
6480 #[serde()]
6481 pub schedule: ScheduledTaskSchedule,
6482}
6483
6484#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
6485pub enum ScheduledTaskWeekday {
6486 #[serde(rename = "MO")]
6487 MO,
6488 #[serde(rename = "TU")]
6489 TU,
6490 #[serde(rename = "WE")]
6491 WE,
6492 #[serde(rename = "TH")]
6493 TH,
6494 #[serde(rename = "FR")]
6495 FR,
6496 #[serde(rename = "SA")]
6497 SA,
6498 #[serde(rename = "SU")]
6499 SU,
6500}
6501
6502#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6503#[serde(rename_all = "camelCase")]
6504pub struct SendAddCreditsNudgeEmailParams {
6505 #[serde(rename = "creditType")]
6506 pub credit_type: AddCreditsNudgeCreditType,
6507}
6508
6509#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6510#[serde(rename_all = "camelCase")]
6511pub struct SendAddCreditsNudgeEmailResponse {
6512 #[serde()]
6513 pub status: AddCreditsNudgeEmailStatus,
6514}
6515
6516#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6517#[serde(rename_all = "camelCase")]
6518pub struct ServerRequestResolvedNotification {
6519 #[serde(rename = "requestId")]
6520 pub request_id: RequestId,
6521 #[serde(rename = "threadId", default)]
6522 pub thread_id: String,
6523}
6524
6525#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6526#[serde(rename_all = "camelCase")]
6527pub struct SessionMigration {
6528 #[serde(default)]
6529 pub cwd: String,
6530 #[serde(default)]
6531 pub path: String,
6532 #[serde(default, skip_serializing_if = "Option::is_none")]
6533 pub title: Option<String>,
6534}
6535
6536#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
6537pub enum SessionSource {
6538 #[serde(rename = "cli")]
6539 Cli,
6540 #[serde(rename = "vscode")]
6541 Vscode,
6542 #[serde(rename = "exec")]
6543 Exec,
6544 #[serde(rename = "appServer")]
6545 AppServer,
6546 #[serde(rename = "unknown")]
6547 Unknown,
6548 #[serde(rename = "custom")]
6549 Custom(String),
6550 #[serde(rename = "subAgent")]
6551 SubAgent(SubAgentSource),
6552}
6553
6554#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6555#[serde(rename_all = "camelCase")]
6556pub struct Settings {
6557 #[serde(default, skip_serializing_if = "Option::is_none")]
6558 pub developer_instructions: Option<String>,
6559 #[serde(default)]
6560 pub model: String,
6561 #[serde(default, skip_serializing_if = "Option::is_none")]
6562 pub reasoning_effort: Option<ReasoningEffort>,
6563}
6564
6565#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6566#[serde(rename_all = "camelCase")]
6567pub struct SkillDependencies {
6568 #[serde(default)]
6569 pub tools: Vec<SkillToolDependency>,
6570}
6571
6572#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6573#[serde(rename_all = "camelCase")]
6574pub struct SkillErrorInfo {
6575 #[serde(default)]
6576 pub message: String,
6577 #[serde(default)]
6578 pub path: String,
6579}
6580
6581#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6582#[serde(rename_all = "camelCase")]
6583pub struct SkillInterface {
6584 #[serde(
6585 rename = "brandColor",
6586 default,
6587 skip_serializing_if = "Option::is_none"
6588 )]
6589 pub brand_color: Option<String>,
6590 #[serde(
6591 rename = "defaultPrompt",
6592 default,
6593 skip_serializing_if = "Option::is_none"
6594 )]
6595 pub default_prompt: Option<String>,
6596 #[serde(
6597 rename = "displayName",
6598 default,
6599 skip_serializing_if = "Option::is_none"
6600 )]
6601 pub display_name: Option<String>,
6602 #[serde(rename = "iconLarge", default, skip_serializing_if = "Option::is_none")]
6603 pub icon_large: Option<AbsolutePathBuf>,
6604 #[serde(
6605 rename = "iconLargeUrl",
6606 default,
6607 skip_serializing_if = "Option::is_none"
6608 )]
6609 pub icon_large_url: Option<String>,
6610 #[serde(rename = "iconSmall", default, skip_serializing_if = "Option::is_none")]
6611 pub icon_small: Option<AbsolutePathBuf>,
6612 #[serde(
6613 rename = "iconSmallUrl",
6614 default,
6615 skip_serializing_if = "Option::is_none"
6616 )]
6617 pub icon_small_url: Option<String>,
6618 #[serde(
6619 rename = "shortDescription",
6620 default,
6621 skip_serializing_if = "Option::is_none"
6622 )]
6623 pub short_description: Option<String>,
6624}
6625
6626#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6627#[serde(rename_all = "camelCase")]
6628pub struct SkillMetadata {
6629 #[serde(default, skip_serializing_if = "Option::is_none")]
6630 pub dependencies: Option<SkillDependencies>,
6631 #[serde(default)]
6632 pub description: String,
6633 #[serde(default)]
6634 pub enabled: bool,
6635 #[serde(default, skip_serializing_if = "Option::is_none")]
6636 pub interface: Option<SkillInterface>,
6637 #[serde(default)]
6638 pub name: String,
6639 #[serde()]
6640 pub path: AbsolutePathBuf,
6641 #[serde(rename = "pluginId", default, skip_serializing_if = "Option::is_none")]
6642 pub plugin_id: Option<String>,
6643 #[serde()]
6644 pub scope: SkillScope,
6645 #[serde(
6646 rename = "shortDescription",
6647 default,
6648 skip_serializing_if = "Option::is_none"
6649 )]
6650 pub short_description: Option<String>,
6651}
6652
6653#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6654#[serde(rename_all = "camelCase")]
6655pub struct SkillMigration {
6656 #[serde(default)]
6657 pub name: String,
6658}
6659
6660#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
6661pub enum SkillScope {
6662 #[serde(rename = "user")]
6663 User,
6664 #[serde(rename = "repo")]
6665 Repo,
6666 #[serde(rename = "system")]
6667 System,
6668 #[serde(rename = "admin")]
6669 Admin,
6670}
6671
6672#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6673#[serde(rename_all = "camelCase")]
6674pub struct SkillSummary {
6675 #[serde(default)]
6676 pub description: String,
6677 #[serde(default)]
6678 pub enabled: bool,
6679 #[serde(default, skip_serializing_if = "Option::is_none")]
6680 pub interface: Option<SkillInterface>,
6681 #[serde(default)]
6682 pub name: String,
6683 #[serde(default, skip_serializing_if = "Option::is_none")]
6684 pub path: Option<AbsolutePathBuf>,
6685 #[serde(
6686 rename = "shortDescription",
6687 default,
6688 skip_serializing_if = "Option::is_none"
6689 )]
6690 pub short_description: Option<String>,
6691}
6692
6693#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6694#[serde(rename_all = "camelCase")]
6695pub struct SkillToolDependency {
6696 #[serde(default, skip_serializing_if = "Option::is_none")]
6697 pub command: Option<String>,
6698 #[serde(default, skip_serializing_if = "Option::is_none")]
6699 pub description: Option<String>,
6700 #[serde(default, skip_serializing_if = "Option::is_none")]
6701 pub transport: Option<String>,
6702 #[serde(rename = "type", default)]
6703 pub type_: String,
6704 #[serde(default, skip_serializing_if = "Option::is_none")]
6705 pub url: Option<String>,
6706 #[serde(default)]
6707 pub value: String,
6708}
6709
6710#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6711#[serde(rename_all = "camelCase")]
6712pub struct SkillsChangedNotification {
6713 #[serde(flatten, default, skip_serializing_if = "serde_json::Map::is_empty")]
6714 pub extra: serde_json::Map<String, Value>,
6715}
6716
6717#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6718#[serde(rename_all = "camelCase")]
6719pub struct SkillsConfigWriteParams {
6720 #[serde(default)]
6721 pub enabled: bool,
6722 #[serde(default, skip_serializing_if = "Option::is_none")]
6723 pub name: Option<String>,
6724 #[serde(default, skip_serializing_if = "Option::is_none")]
6725 pub path: Option<AbsolutePathBuf>,
6726}
6727
6728#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6729#[serde(rename_all = "camelCase")]
6730pub struct SkillsConfigWriteResponse {
6731 #[serde(rename = "effectiveEnabled", default)]
6732 pub effective_enabled: bool,
6733}
6734
6735#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6736#[serde(rename_all = "camelCase")]
6737pub struct SkillsExtraRootsSetParams {
6738 #[serde(rename = "extraRoots", default)]
6739 pub extra_roots: Vec<AbsolutePathBuf>,
6740}
6741
6742#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6743#[serde(rename_all = "camelCase")]
6744pub struct SkillsExtraRootsSetResponse {
6745 #[serde(flatten, default, skip_serializing_if = "serde_json::Map::is_empty")]
6746 pub extra: serde_json::Map<String, Value>,
6747}
6748
6749#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6750#[serde(rename_all = "camelCase")]
6751pub struct SkillsListEntry {
6752 #[serde(default)]
6753 pub cwd: String,
6754 #[serde(default)]
6755 pub errors: Vec<SkillErrorInfo>,
6756 #[serde(default)]
6757 pub skills: Vec<SkillMetadata>,
6758}
6759
6760#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6761#[serde(rename_all = "camelCase")]
6762pub struct SkillsListParams {
6763 #[serde(default, skip_serializing_if = "Option::is_none")]
6764 pub cwds: Option<Vec<String>>,
6765 #[serde(
6766 rename = "forceReload",
6767 default,
6768 skip_serializing_if = "Option::is_none"
6769 )]
6770 pub force_reload: Option<bool>,
6771}
6772
6773#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6774#[serde(rename_all = "camelCase")]
6775pub struct SkillsListResponse {
6776 #[serde(default)]
6777 pub data: Vec<SkillsListEntry>,
6778}
6779
6780#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
6781pub enum SortDirection {
6782 #[serde(rename = "asc")]
6783 Asc,
6784 #[serde(rename = "desc")]
6785 Desc,
6786}
6787
6788#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6789#[serde(rename_all = "camelCase")]
6790pub struct SpendControlLimitSnapshot {
6791 #[serde(default)]
6792 pub limit: String,
6793 #[serde(rename = "remainingPercent", default)]
6794 pub remaining_percent: i64,
6795 #[serde(rename = "resetsAt", default)]
6796 pub resets_at: i64,
6797 #[serde(default)]
6798 pub used: String,
6799}
6800
6801#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
6802pub enum SubAgentActivityKind {
6803 #[serde(rename = "started")]
6804 Started,
6805 #[serde(rename = "interacted")]
6806 Interacted,
6807 #[serde(rename = "interrupted")]
6808 Interrupted,
6809 #[serde(rename = "completed")]
6810 Completed,
6811}
6812
6813#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
6814pub enum SubAgentSource {
6815 #[serde(rename = "review")]
6816 Review,
6817 #[serde(rename = "compact")]
6818 Compact,
6819 #[serde(rename = "memory_consolidation")]
6820 MemoryConsolidation,
6821 #[serde(rename = "thread_spawn")]
6822 ThreadSpawn {
6823 #[serde(default, skip_serializing_if = "Option::is_none")]
6824 agent_nickname: Option<String>,
6825 #[serde(default, skip_serializing_if = "Option::is_none")]
6826 agent_path: Option<AgentPath>,
6827 #[serde(default, skip_serializing_if = "Option::is_none")]
6828 agent_role: Option<String>,
6829 depth: i64,
6830 parent_thread_id: ThreadId,
6831 },
6832 #[serde(rename = "other")]
6833 Other(String),
6834}
6835
6836#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6837#[serde(rename_all = "camelCase")]
6838pub struct SubagentMigration {
6839 #[serde(default)]
6840 pub name: String,
6841}
6842
6843#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6844#[serde(rename_all = "camelCase")]
6845pub struct TerminalInteractionNotification {
6846 #[serde(rename = "itemId", default)]
6847 pub item_id: String,
6848 #[serde(rename = "processId", default)]
6849 pub process_id: String,
6850 #[serde(default)]
6851 pub stdin: String,
6852 #[serde(rename = "threadId", default)]
6853 pub thread_id: String,
6854 #[serde(rename = "turnId", default)]
6855 pub turn_id: String,
6856}
6857
6858#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6859#[serde(rename_all = "camelCase")]
6860pub struct TextElement {
6861 #[serde(rename = "byteRange", default)]
6862 pub byte_range: Value,
6863 #[serde(default, skip_serializing_if = "Option::is_none")]
6864 pub placeholder: Option<String>,
6865}
6866
6867#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6868#[serde(rename_all = "camelCase")]
6869pub struct TextPosition {
6870 #[serde(default)]
6871 pub column: i64,
6872 #[serde(default)]
6873 pub line: i64,
6874}
6875
6876#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6877#[serde(rename_all = "camelCase")]
6878pub struct TextRange {
6879 #[serde()]
6880 pub end: TextPosition,
6881 #[serde()]
6882 pub start: TextPosition,
6883}
6884
6885#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6886#[serde(rename_all = "camelCase")]
6887pub struct Thread {
6888 #[serde(
6889 rename = "agentNickname",
6890 default,
6891 skip_serializing_if = "Option::is_none"
6892 )]
6893 pub agent_nickname: Option<String>,
6894 #[serde(rename = "agentRole", default, skip_serializing_if = "Option::is_none")]
6895 pub agent_role: Option<String>,
6896 #[serde(rename = "cliVersion", default)]
6897 pub cli_version: String,
6898 #[serde(rename = "createdAt", default)]
6899 pub created_at: i64,
6900 #[serde(default)]
6901 pub cwd: Value,
6902 #[serde(default)]
6903 pub ephemeral: bool,
6904 #[serde(
6905 rename = "forkedFromId",
6906 default,
6907 skip_serializing_if = "Option::is_none"
6908 )]
6909 pub forked_from_id: Option<String>,
6910 #[serde(rename = "gitInfo", default, skip_serializing_if = "Option::is_none")]
6911 pub git_info: Option<GitInfo>,
6912 #[serde(
6915 rename = "historyMode",
6916 default,
6917 skip_serializing_if = "Option::is_none"
6918 )]
6919 pub history_mode: Option<ThreadHistoryMode>,
6920 #[serde(rename = "projectId", default, skip_serializing_if = "Option::is_none")]
6923 pub project_id: Option<String>,
6924 #[serde(default)]
6925 pub id: String,
6926 #[serde(rename = "modelProvider", default)]
6927 pub model_provider: String,
6928 #[serde(default, skip_serializing_if = "Option::is_none")]
6929 pub name: Option<String>,
6930 #[serde(
6931 rename = "parentThreadId",
6932 default,
6933 skip_serializing_if = "Option::is_none"
6934 )]
6935 pub parent_thread_id: Option<String>,
6936 #[serde(default, skip_serializing_if = "Option::is_none")]
6937 pub path: Option<String>,
6938 #[serde(default)]
6939 pub preview: String,
6940 #[serde(rename = "recencyAt", default, skip_serializing_if = "Option::is_none")]
6941 pub recency_at: Option<i64>,
6942 #[serde(default, skip_serializing_if = "Option::is_none")]
6943 pub section: Option<ThreadSection>,
6944 #[serde(
6945 rename = "sectionEnteredAt",
6946 default,
6947 skip_serializing_if = "Option::is_none"
6948 )]
6949 pub section_entered_at: Option<i64>,
6950 #[serde(rename = "sessionId", default)]
6951 pub session_id: String,
6952 #[serde(default)]
6953 pub source: Value,
6954 #[serde(default)]
6955 pub status: Value,
6956 #[serde(
6957 rename = "threadSource",
6958 default,
6959 skip_serializing_if = "Option::is_none"
6960 )]
6961 pub thread_source: Option<ThreadSource>,
6962 #[serde(default)]
6963 pub turns: Vec<Turn>,
6964 #[serde(rename = "updatedAt", default)]
6965 pub updated_at: i64,
6966}
6967
6968#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
6969pub enum ThreadActiveFlag {
6970 #[serde(rename = "waitingOnApproval")]
6971 WaitingOnApproval,
6972 #[serde(rename = "waitingOnUserInput")]
6973 WaitingOnUserInput,
6974}
6975
6976#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6977#[serde(rename_all = "camelCase")]
6978pub struct ThreadApproveGuardianDeniedActionParams {
6979 #[serde(default)]
6980 pub event: Value,
6981 #[serde(rename = "threadId", default)]
6982 pub thread_id: String,
6983}
6984
6985#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6986#[serde(rename_all = "camelCase")]
6987pub struct ThreadApproveGuardianDeniedActionResponse {
6988 #[serde(flatten, default, skip_serializing_if = "serde_json::Map::is_empty")]
6989 pub extra: serde_json::Map<String, Value>,
6990}
6991
6992#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6993#[serde(rename_all = "camelCase")]
6994pub struct ThreadArchiveParams {
6995 #[serde(rename = "threadId", default)]
6996 pub thread_id: String,
6997}
6998
6999#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7000#[serde(rename_all = "camelCase")]
7001pub struct ThreadArchiveResponse {
7002 #[serde(flatten, default, skip_serializing_if = "serde_json::Map::is_empty")]
7003 pub extra: serde_json::Map<String, Value>,
7004}
7005
7006#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7007#[serde(rename_all = "camelCase")]
7008pub struct ThreadArchivedNotification {
7009 #[serde(rename = "threadId", default)]
7010 pub thread_id: String,
7011}
7012
7013#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7014#[serde(rename_all = "camelCase")]
7015pub struct ThreadClosedNotification {
7016 #[serde(rename = "threadId", default)]
7017 pub thread_id: String,
7018}
7019
7020#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7021#[serde(rename_all = "camelCase")]
7022pub struct ThreadCompactStartParams {
7023 #[serde(rename = "threadId", default)]
7024 pub thread_id: String,
7025}
7026
7027#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7028#[serde(rename_all = "camelCase")]
7029pub struct ThreadCompactStartResponse {
7030 #[serde(flatten, default, skip_serializing_if = "serde_json::Map::is_empty")]
7031 pub extra: serde_json::Map<String, Value>,
7032}
7033
7034#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7035#[serde(rename_all = "camelCase")]
7036pub struct ThreadDeleteParams {
7037 #[serde(rename = "threadId", default)]
7038 pub thread_id: String,
7039}
7040
7041#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7042#[serde(rename_all = "camelCase")]
7043pub struct ThreadDeleteResponse {
7044 #[serde(flatten, default, skip_serializing_if = "serde_json::Map::is_empty")]
7045 pub extra: serde_json::Map<String, Value>,
7046}
7047
7048#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7049#[serde(rename_all = "camelCase")]
7050pub struct ThreadDeletedNotification {
7051 #[serde(rename = "threadId", default)]
7052 pub thread_id: String,
7053}
7054
7055#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7056#[serde(rename_all = "camelCase")]
7057pub struct ThreadForkParams {
7058 #[serde(
7059 rename = "approvalPolicy",
7060 default,
7061 skip_serializing_if = "Option::is_none"
7062 )]
7063 pub approval_policy: Option<AskForApproval>,
7064 #[serde(
7065 rename = "approvalsReviewer",
7066 default,
7067 skip_serializing_if = "Option::is_none"
7068 )]
7069 pub approvals_reviewer: Option<ApprovalsReviewer>,
7070 #[serde(
7071 rename = "baseInstructions",
7072 default,
7073 skip_serializing_if = "Option::is_none"
7074 )]
7075 pub base_instructions: Option<String>,
7076 #[serde(default, skip_serializing_if = "Option::is_none")]
7077 pub config: Option<Value>,
7078 #[serde(default, skip_serializing_if = "Option::is_none")]
7079 pub cwd: Option<String>,
7080 #[serde(
7081 rename = "developerInstructions",
7082 default,
7083 skip_serializing_if = "Option::is_none"
7084 )]
7085 pub developer_instructions: Option<String>,
7086 #[serde(default, skip_serializing_if = "Option::is_none")]
7087 pub ephemeral: Option<bool>,
7088 #[serde(
7089 rename = "excludeTurns",
7090 default,
7091 skip_serializing_if = "Option::is_none"
7092 )]
7093 pub exclude_turns: Option<bool>,
7094 #[serde(
7095 rename = "lastTurnId",
7096 default,
7097 skip_serializing_if = "Option::is_none"
7098 )]
7099 pub last_turn_id: Option<String>,
7100 #[serde(default, skip_serializing_if = "Option::is_none")]
7101 pub model: Option<String>,
7102 #[serde(
7103 rename = "modelProvider",
7104 default,
7105 skip_serializing_if = "Option::is_none"
7106 )]
7107 pub model_provider: Option<String>,
7108 #[serde(default, skip_serializing_if = "Option::is_none")]
7109 pub sandbox: Option<SandboxMode>,
7110 #[serde(
7111 rename = "serviceTier",
7112 default,
7113 skip_serializing_if = "Option::is_none"
7114 )]
7115 pub service_tier: Option<String>,
7116 #[serde(rename = "threadId", default)]
7117 pub thread_id: String,
7118 #[serde(
7119 rename = "threadSource",
7120 default,
7121 skip_serializing_if = "Option::is_none"
7122 )]
7123 pub thread_source: Option<ThreadSource>,
7124}
7125
7126#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7127#[serde(rename_all = "camelCase")]
7128pub struct ThreadForkResponse {
7129 #[serde(rename = "approvalPolicy")]
7130 pub approval_policy: AskForApproval,
7131 #[serde(rename = "approvalsReviewer", default)]
7132 pub approvals_reviewer: Value,
7133 #[serde()]
7134 pub cwd: AbsolutePathBuf,
7135 #[serde(
7136 rename = "instructionSources",
7137 default,
7138 skip_serializing_if = "Option::is_none"
7139 )]
7140 pub instruction_sources: Option<Vec<LegacyAppPathString>>,
7141 #[serde(default)]
7142 pub model: String,
7143 #[serde(rename = "modelProvider", default)]
7144 pub model_provider: String,
7145 #[serde(
7146 rename = "reasoningEffort",
7147 default,
7148 skip_serializing_if = "Option::is_none"
7149 )]
7150 pub reasoning_effort: Option<ReasoningEffort>,
7151 #[serde(default)]
7152 pub sandbox: Value,
7153 #[serde(
7154 rename = "serviceTier",
7155 default,
7156 skip_serializing_if = "Option::is_none"
7157 )]
7158 pub service_tier: Option<String>,
7159 #[serde()]
7160 pub thread: Thread,
7161}
7162
7163#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7164#[serde(rename_all = "camelCase")]
7165pub struct ThreadGoal {
7166 #[serde(rename = "createdAt", default)]
7167 pub created_at: i64,
7168 #[serde(default)]
7169 pub objective: String,
7170 #[serde()]
7171 pub status: ThreadGoalStatus,
7172 #[serde(rename = "threadId", default)]
7173 pub thread_id: String,
7174 #[serde(rename = "timeUsedSeconds", default)]
7175 pub time_used_seconds: i64,
7176 #[serde(
7177 rename = "tokenBudget",
7178 default,
7179 skip_serializing_if = "Option::is_none"
7180 )]
7181 pub token_budget: Option<i64>,
7182 #[serde(rename = "tokensUsed", default)]
7183 pub tokens_used: i64,
7184 #[serde(rename = "updatedAt", default)]
7185 pub updated_at: i64,
7186}
7187
7188#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7189#[serde(rename_all = "camelCase")]
7190pub struct ThreadGoalClearParams {
7191 #[serde(rename = "threadId", default)]
7192 pub thread_id: String,
7193}
7194
7195#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7196#[serde(rename_all = "camelCase")]
7197pub struct ThreadGoalClearResponse {
7198 #[serde(default)]
7199 pub cleared: bool,
7200}
7201
7202#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7203#[serde(rename_all = "camelCase")]
7204pub struct ThreadGoalClearedNotification {
7205 #[serde(rename = "threadId", default)]
7206 pub thread_id: String,
7207}
7208
7209#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7210#[serde(rename_all = "camelCase")]
7211pub struct ThreadGoalGetParams {
7212 #[serde(rename = "threadId", default)]
7213 pub thread_id: String,
7214}
7215
7216#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7217#[serde(rename_all = "camelCase")]
7218pub struct ThreadGoalGetResponse {
7219 #[serde(default, skip_serializing_if = "Option::is_none")]
7220 pub goal: Option<ThreadGoal>,
7221}
7222
7223#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7224#[serde(rename_all = "camelCase")]
7225pub struct ThreadGoalSetParams {
7226 #[serde(default, skip_serializing_if = "Option::is_none")]
7227 pub objective: Option<String>,
7228 #[serde(default, skip_serializing_if = "Option::is_none")]
7229 pub status: Option<ThreadGoalStatus>,
7230 #[serde(rename = "threadId", default)]
7231 pub thread_id: String,
7232 #[serde(
7233 rename = "tokenBudget",
7234 default,
7235 skip_serializing_if = "Option::is_none"
7236 )]
7237 pub token_budget: Option<i64>,
7238}
7239
7240#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7241#[serde(rename_all = "camelCase")]
7242pub struct ThreadGoalSetResponse {
7243 #[serde()]
7244 pub goal: ThreadGoal,
7245}
7246
7247#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
7248pub enum ThreadGoalStatus {
7249 #[serde(rename = "active")]
7250 Active,
7251 #[serde(rename = "paused")]
7252 Paused,
7253 #[serde(rename = "blocked")]
7254 Blocked,
7255 #[serde(rename = "usageLimited")]
7256 UsageLimited,
7257 #[serde(rename = "budgetLimited")]
7258 BudgetLimited,
7259 #[serde(rename = "complete")]
7260 Complete,
7261}
7262
7263#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7264#[serde(rename_all = "camelCase")]
7265pub struct ThreadGoalUpdatedNotification {
7266 #[serde()]
7267 pub goal: ThreadGoal,
7268 #[serde(rename = "threadId", default)]
7269 pub thread_id: String,
7270 #[serde(rename = "turnId", default, skip_serializing_if = "Option::is_none")]
7271 pub turn_id: Option<String>,
7272}
7273
7274#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq, Hash)]
7275#[serde(transparent)]
7276pub struct ThreadId(pub String);
7277
7278#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7279#[serde(rename_all = "camelCase")]
7280pub struct ThreadInjectItemsParams {
7281 #[serde(default)]
7282 pub items: Vec<Value>,
7283 #[serde(rename = "threadId", default)]
7284 pub thread_id: String,
7285}
7286
7287#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7288#[serde(rename_all = "camelCase")]
7289pub struct ThreadInjectItemsResponse {
7290 #[serde(flatten, default, skip_serializing_if = "serde_json::Map::is_empty")]
7291 pub extra: serde_json::Map<String, Value>,
7292}
7293
7294#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7295#[serde(tag = "type", rename_all = "camelCase")]
7296pub enum ThreadItem {
7297 #[serde(rename = "userMessage")]
7298 UserMessage {
7299 #[serde(rename = "clientId", default, skip_serializing_if = "Option::is_none")]
7300 client_id: Option<String>,
7301 content: Vec<UserInput>,
7302 id: String,
7303 },
7304 #[serde(rename = "hookPrompt")]
7305 HookPrompt {
7306 fragments: Vec<HookPromptFragment>,
7307 id: String,
7308 },
7309 #[serde(rename = "agentMessage")]
7310 AgentMessage {
7311 #[serde(default, skip_serializing_if = "Option::is_none")]
7312 delivery: Option<AgentMessageDelivery>,
7313 id: String,
7314 #[serde(
7315 rename = "memoryCitation",
7316 default,
7317 skip_serializing_if = "Option::is_none"
7318 )]
7319 memory_citation: Option<MemoryCitation>,
7320 #[serde(default, skip_serializing_if = "Option::is_none")]
7321 phase: Option<MessagePhase>,
7322 text: String,
7323 },
7324 Plan {
7325 id: String,
7326 text: String,
7327 },
7328 Reasoning {
7329 #[serde(default, skip_serializing_if = "Option::is_none")]
7330 content: Option<Vec<String>>,
7331 id: String,
7332 #[serde(default, skip_serializing_if = "Option::is_none")]
7333 summary: Option<Vec<String>>,
7334 },
7335 #[serde(rename = "commandExecution")]
7336 CommandExecution {
7337 #[serde(
7338 rename = "aggregatedOutput",
7339 default,
7340 skip_serializing_if = "Option::is_none"
7341 )]
7342 aggregated_output: Option<String>,
7343 command: String,
7344 #[serde(rename = "commandActions")]
7345 command_actions: Vec<CommandAction>,
7346 cwd: Value,
7347 #[serde(
7348 rename = "durationMs",
7349 default,
7350 skip_serializing_if = "Option::is_none"
7351 )]
7352 duration_ms: Option<i64>,
7353 #[serde(rename = "exitCode", default, skip_serializing_if = "Option::is_none")]
7354 exit_code: Option<i64>,
7355 id: String,
7356 #[serde(rename = "pluginId", default, skip_serializing_if = "Option::is_none")]
7357 plugin_id: Option<String>,
7358 #[serde(rename = "processId", default, skip_serializing_if = "Option::is_none")]
7359 process_id: Option<String>,
7360 #[serde(
7361 rename = "scriptPath",
7362 default,
7363 skip_serializing_if = "Option::is_none"
7364 )]
7365 script_path: Option<String>,
7366 #[serde(default, skip_serializing_if = "Option::is_none")]
7367 source: Option<Value>,
7368 status: CommandExecutionStatus,
7369 },
7370 #[serde(rename = "fileChange")]
7371 FileChange {
7372 changes: Vec<FileUpdateChange>,
7373 id: String,
7374 status: PatchApplyStatus,
7375 },
7376 #[serde(rename = "mcpToolCall")]
7377 McpToolCall {
7378 #[serde(
7379 rename = "appContext",
7380 default,
7381 skip_serializing_if = "Option::is_none"
7382 )]
7383 app_context: Option<McpToolCallAppContext>,
7384 arguments: Value,
7385 #[serde(
7386 rename = "durationMs",
7387 default,
7388 skip_serializing_if = "Option::is_none"
7389 )]
7390 duration_ms: Option<i64>,
7391 #[serde(default, skip_serializing_if = "Option::is_none")]
7392 error: Option<McpToolCallError>,
7393 id: String,
7394 #[serde(
7395 rename = "mcpAppResourceUri",
7396 default,
7397 skip_serializing_if = "Option::is_none"
7398 )]
7399 mcp_app_resource_uri: Option<String>,
7400 #[serde(rename = "pluginId", default, skip_serializing_if = "Option::is_none")]
7401 plugin_id: Option<String>,
7402 #[serde(
7403 rename = "readOnlyHint",
7404 default,
7405 skip_serializing_if = "Option::is_none"
7406 )]
7407 read_only_hint: Option<bool>,
7408 #[serde(default, skip_serializing_if = "Option::is_none")]
7409 result: Option<McpToolCallResult>,
7410 server: String,
7411 status: McpToolCallStatus,
7412 tool: String,
7413 },
7414 #[serde(rename = "dynamicToolCall")]
7415 DynamicToolCall {
7416 arguments: Value,
7417 #[serde(
7418 rename = "contentItems",
7419 default,
7420 skip_serializing_if = "Option::is_none"
7421 )]
7422 content_items: Option<Vec<DynamicToolCallOutputContentItem>>,
7423 #[serde(
7424 rename = "durationMs",
7425 default,
7426 skip_serializing_if = "Option::is_none"
7427 )]
7428 duration_ms: Option<i64>,
7429 id: String,
7430 #[serde(default, skip_serializing_if = "Option::is_none")]
7431 namespace: Option<String>,
7432 status: DynamicToolCallStatus,
7433 #[serde(default, skip_serializing_if = "Option::is_none")]
7434 success: Option<bool>,
7435 tool: String,
7436 },
7437 #[serde(rename = "collabAgentToolCall")]
7438 CollabAgentToolCall {
7439 #[serde(rename = "agentsStates")]
7440 agents_states: std::collections::BTreeMap<String, CollabAgentState>,
7441 id: String,
7442 #[serde(default, skip_serializing_if = "Option::is_none")]
7443 model: Option<String>,
7444 #[serde(default, skip_serializing_if = "Option::is_none")]
7445 prompt: Option<String>,
7446 #[serde(
7447 rename = "reasoningEffort",
7448 default,
7449 skip_serializing_if = "Option::is_none"
7450 )]
7451 reasoning_effort: Option<ReasoningEffort>,
7452 #[serde(rename = "receiverThreadIds")]
7453 receiver_thread_ids: Vec<String>,
7454 #[serde(rename = "senderThreadId")]
7455 sender_thread_id: String,
7456 status: Value,
7457 tool: Value,
7458 },
7459 #[serde(rename = "subAgentActivity")]
7460 SubAgentActivity {
7461 #[serde(rename = "agentPath")]
7462 agent_path: String,
7463 #[serde(rename = "agentThreadId")]
7464 agent_thread_id: String,
7465 id: String,
7466 kind: SubAgentActivityKind,
7467 },
7468 #[serde(rename = "webSearch")]
7469 WebSearch {
7470 #[serde(default, skip_serializing_if = "Option::is_none")]
7471 action: Option<WebSearchAction>,
7472 id: String,
7473 query: String,
7474 #[serde(default, skip_serializing_if = "Option::is_none")]
7475 results: Option<Vec<Value>>,
7476 },
7477 #[serde(rename = "imageView")]
7478 ImageView {
7479 id: String,
7480 path: LegacyAppPathString,
7481 },
7482 Sleep {
7483 #[serde(rename = "durationMs")]
7484 duration_ms: i64,
7485 id: String,
7486 },
7487 #[serde(rename = "imageGeneration")]
7488 ImageGeneration {
7489 #[serde(default, skip_serializing_if = "Option::is_none")]
7490 failure: Option<ImageGenerationFailure>,
7491 id: String,
7492 result: String,
7493 #[serde(
7494 rename = "revisedPrompt",
7495 default,
7496 skip_serializing_if = "Option::is_none"
7497 )]
7498 revised_prompt: Option<String>,
7499 #[serde(rename = "savedPath", default, skip_serializing_if = "Option::is_none")]
7500 saved_path: Option<AbsolutePathBuf>,
7501 status: String,
7502 #[serde(
7503 rename = "transparentBackground",
7504 default,
7505 skip_serializing_if = "Option::is_none"
7506 )]
7507 transparent_background: Option<bool>,
7508 },
7509 #[serde(rename = "enteredReviewMode")]
7510 EnteredReviewMode {
7511 id: String,
7512 review: String,
7513 },
7514 #[serde(rename = "exitedReviewMode")]
7515 ExitedReviewMode {
7516 id: String,
7517 review: String,
7518 },
7519 #[serde(rename = "contextCompaction")]
7520 ContextCompaction {
7521 id: String,
7522 },
7523 #[serde(rename = "functionCallOutput")]
7524 FunctionCallOutput {
7525 id: String,
7526 name: String,
7527 #[serde(default, skip_serializing_if = "Option::is_none")]
7528 namespace: Option<String>,
7529 output: FunctionCallOutputBody,
7530 },
7531}
7532
7533#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7534#[serde(untagged)]
7535pub enum ThreadListCwdFilter {
7536 Variant0(String),
7537 Variant1(Vec<String>),
7538}
7539
7540#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7541#[serde(rename_all = "camelCase")]
7542pub struct ThreadListParams {
7543 #[serde(default, skip_serializing_if = "Option::is_none")]
7544 pub archived: Option<bool>,
7545 #[serde(default, skip_serializing_if = "Option::is_none")]
7546 pub cursor: Option<String>,
7547 #[serde(default, skip_serializing_if = "Option::is_none")]
7548 pub cwd: Option<ThreadListCwdFilter>,
7549 #[serde(default, skip_serializing_if = "Option::is_none")]
7550 pub limit: Option<i64>,
7551 #[serde(
7552 rename = "modelProviders",
7553 default,
7554 skip_serializing_if = "Option::is_none"
7555 )]
7556 pub model_providers: Option<Vec<String>>,
7557 #[serde(
7558 rename = "searchTerm",
7559 default,
7560 skip_serializing_if = "Option::is_none"
7561 )]
7562 pub search_term: Option<String>,
7563 #[serde(rename = "sectionId", default, skip_serializing_if = "Option::is_none")]
7564 pub section_id: Option<String>,
7565 #[serde(
7566 rename = "sortDirection",
7567 default,
7568 skip_serializing_if = "Option::is_none"
7569 )]
7570 pub sort_direction: Option<SortDirection>,
7571 #[serde(rename = "sortKey", default, skip_serializing_if = "Option::is_none")]
7572 pub sort_key: Option<ThreadSortKey>,
7573 #[serde(
7574 rename = "sourceKinds",
7575 default,
7576 skip_serializing_if = "Option::is_none"
7577 )]
7578 pub source_kinds: Option<Vec<ThreadSourceKind>>,
7579 #[serde(
7580 rename = "useStateDbOnly",
7581 default,
7582 skip_serializing_if = "Option::is_none"
7583 )]
7584 pub use_state_db_only: Option<bool>,
7585}
7586
7587#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7588#[serde(rename_all = "camelCase")]
7589pub struct ThreadListResponse {
7590 #[serde(
7591 rename = "backwardsCursor",
7592 default,
7593 skip_serializing_if = "Option::is_none"
7594 )]
7595 pub backwards_cursor: Option<String>,
7596 #[serde(default)]
7597 pub data: Vec<Thread>,
7598 #[serde(
7599 rename = "nextCursor",
7600 default,
7601 skip_serializing_if = "Option::is_none"
7602 )]
7603 pub next_cursor: Option<String>,
7604}
7605
7606#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7607#[serde(rename_all = "camelCase")]
7608pub struct ThreadLoadedListParams {
7609 #[serde(default, skip_serializing_if = "Option::is_none")]
7610 pub cursor: Option<String>,
7611 #[serde(default, skip_serializing_if = "Option::is_none")]
7612 pub limit: Option<i64>,
7613}
7614
7615#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7616#[serde(rename_all = "camelCase")]
7617pub struct ThreadLoadedListResponse {
7618 #[serde(default)]
7619 pub data: Vec<String>,
7620 #[serde(
7621 rename = "nextCursor",
7622 default,
7623 skip_serializing_if = "Option::is_none"
7624 )]
7625 pub next_cursor: Option<String>,
7626}
7627
7628#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7629#[serde(rename_all = "camelCase")]
7630pub struct ThreadMetadataGitInfoUpdateParams {
7631 #[serde(default, skip_serializing_if = "Option::is_none")]
7632 pub branch: Option<String>,
7633 #[serde(rename = "originUrl", default, skip_serializing_if = "Option::is_none")]
7634 pub origin_url: Option<String>,
7635 #[serde(default, skip_serializing_if = "Option::is_none")]
7636 pub sha: Option<String>,
7637}
7638
7639#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7640#[serde(rename_all = "camelCase")]
7641pub struct ThreadMetadataUpdateParams {
7642 #[serde(rename = "gitInfo", default, skip_serializing_if = "Option::is_none")]
7643 pub git_info: Option<ThreadMetadataGitInfoUpdateParams>,
7644 #[serde(rename = "threadId", default)]
7645 pub thread_id: String,
7646}
7647
7648#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7649#[serde(rename_all = "camelCase")]
7650pub struct ThreadMetadataUpdateResponse {
7651 #[serde()]
7652 pub thread: Thread,
7653}
7654
7655#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7656#[serde(rename_all = "camelCase")]
7657pub struct ThreadNameUpdatedNotification {
7658 #[serde(rename = "threadId", default)]
7659 pub thread_id: String,
7660 #[serde(
7661 rename = "threadName",
7662 default,
7663 skip_serializing_if = "Option::is_none"
7664 )]
7665 pub thread_name: Option<String>,
7666}
7667
7668#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7669#[serde(rename_all = "camelCase")]
7670pub struct ThreadReadParams {
7671 #[serde(
7672 rename = "includeTurns",
7673 default,
7674 skip_serializing_if = "Option::is_none"
7675 )]
7676 pub include_turns: Option<bool>,
7677 #[serde(rename = "threadId", default)]
7678 pub thread_id: String,
7679}
7680
7681#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7682#[serde(rename_all = "camelCase")]
7683pub struct ThreadReadResponse {
7684 #[serde()]
7685 pub thread: Thread,
7686}
7687
7688#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7689#[serde(rename_all = "camelCase")]
7690pub struct ThreadRealtimeAudioChunk {
7691 #[serde(default)]
7692 pub data: String,
7693 #[serde(rename = "itemId", default, skip_serializing_if = "Option::is_none")]
7694 pub item_id: Option<String>,
7695 #[serde(rename = "numChannels", default)]
7696 pub num_channels: i64,
7697 #[serde(rename = "sampleRate", default)]
7698 pub sample_rate: i64,
7699 #[serde(
7700 rename = "samplesPerChannel",
7701 default,
7702 skip_serializing_if = "Option::is_none"
7703 )]
7704 pub samples_per_channel: Option<i64>,
7705}
7706
7707#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7708#[serde(rename_all = "camelCase")]
7709pub struct ThreadRealtimeClosedNotification {
7710 #[serde(default, skip_serializing_if = "Option::is_none")]
7711 pub reason: Option<String>,
7712 #[serde(rename = "threadId", default)]
7713 pub thread_id: String,
7714}
7715
7716#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7717#[serde(rename_all = "camelCase")]
7718pub struct ThreadRealtimeErrorNotification {
7719 #[serde(default)]
7720 pub message: String,
7721 #[serde(rename = "threadId", default)]
7722 pub thread_id: String,
7723}
7724
7725#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7726#[serde(rename_all = "camelCase")]
7727pub struct ThreadRealtimeItemAddedNotification {
7728 #[serde(default)]
7729 pub item: Value,
7730 #[serde(rename = "threadId", default)]
7731 pub thread_id: String,
7732}
7733
7734#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7735#[serde(rename_all = "camelCase")]
7736pub struct ThreadRealtimeOutputAudioDeltaNotification {
7737 #[serde()]
7738 pub audio: ThreadRealtimeAudioChunk,
7739 #[serde(rename = "threadId", default)]
7740 pub thread_id: String,
7741}
7742
7743#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7744#[serde(rename_all = "camelCase")]
7745pub struct ThreadRealtimeSdpNotification {
7746 #[serde(default)]
7747 pub sdp: String,
7748 #[serde(rename = "threadId", default)]
7749 pub thread_id: String,
7750}
7751
7752#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7753#[serde(rename_all = "camelCase")]
7754pub struct ThreadRealtimeStartedNotification {
7755 #[serde(
7756 rename = "realtimeSessionId",
7757 default,
7758 skip_serializing_if = "Option::is_none"
7759 )]
7760 pub realtime_session_id: Option<String>,
7761 #[serde(rename = "threadId", default)]
7762 pub thread_id: String,
7763 #[serde()]
7764 pub version: RealtimeConversationVersion,
7765}
7766
7767#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7768#[serde(rename_all = "camelCase")]
7769pub struct ThreadRealtimeTranscriptDeltaNotification {
7770 #[serde(default)]
7771 pub delta: String,
7772 #[serde(default)]
7773 pub role: String,
7774 #[serde(rename = "threadId", default)]
7775 pub thread_id: String,
7776}
7777
7778#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7779#[serde(rename_all = "camelCase")]
7780pub struct ThreadRealtimeTranscriptDoneNotification {
7781 #[serde(default)]
7782 pub role: String,
7783 #[serde(default)]
7784 pub text: String,
7785 #[serde(rename = "threadId", default)]
7786 pub thread_id: String,
7787}
7788
7789#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7790#[serde(rename_all = "camelCase")]
7791pub struct ThreadResumeParams {
7792 #[serde(
7793 rename = "approvalPolicy",
7794 default,
7795 skip_serializing_if = "Option::is_none"
7796 )]
7797 pub approval_policy: Option<AskForApproval>,
7798 #[serde(
7799 rename = "approvalsReviewer",
7800 default,
7801 skip_serializing_if = "Option::is_none"
7802 )]
7803 pub approvals_reviewer: Option<ApprovalsReviewer>,
7804 #[serde(
7805 rename = "baseInstructions",
7806 default,
7807 skip_serializing_if = "Option::is_none"
7808 )]
7809 pub base_instructions: Option<String>,
7810 #[serde(default, skip_serializing_if = "Option::is_none")]
7811 pub config: Option<Value>,
7812 #[serde(default, skip_serializing_if = "Option::is_none")]
7813 pub cwd: Option<String>,
7814 #[serde(
7815 rename = "developerInstructions",
7816 default,
7817 skip_serializing_if = "Option::is_none"
7818 )]
7819 pub developer_instructions: Option<String>,
7820 #[serde(default, skip_serializing_if = "Option::is_none")]
7821 pub model: Option<String>,
7822 #[serde(
7823 rename = "modelProvider",
7824 default,
7825 skip_serializing_if = "Option::is_none"
7826 )]
7827 pub model_provider: Option<String>,
7828 #[serde(default, skip_serializing_if = "Option::is_none")]
7829 pub personality: Option<Personality>,
7830 #[serde(default, skip_serializing_if = "Option::is_none")]
7831 pub sandbox: Option<SandboxMode>,
7832 #[serde(
7833 rename = "serviceTier",
7834 default,
7835 skip_serializing_if = "Option::is_none"
7836 )]
7837 pub service_tier: Option<String>,
7838 #[serde(rename = "threadId", default)]
7839 pub thread_id: String,
7840 #[serde(
7841 rename = "excludeTurns",
7842 default,
7843 skip_serializing_if = "Option::is_none"
7844 )]
7845 pub exclude_turns: Option<bool>,
7846}
7847
7848#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7849#[serde(rename_all = "camelCase")]
7850pub struct ThreadResumeResponse {
7851 #[serde(rename = "approvalPolicy")]
7852 pub approval_policy: AskForApproval,
7853 #[serde(rename = "approvalsReviewer", default)]
7854 pub approvals_reviewer: Value,
7855 #[serde()]
7856 pub cwd: AbsolutePathBuf,
7857 #[serde(
7858 rename = "instructionSources",
7859 default,
7860 skip_serializing_if = "Option::is_none"
7861 )]
7862 pub instruction_sources: Option<Vec<LegacyAppPathString>>,
7863 #[serde(
7866 rename = "itemsBackwardsCursor",
7867 default,
7868 skip_serializing_if = "Option::is_none"
7869 )]
7870 pub items_backwards_cursor: Option<String>,
7871 #[serde(default)]
7872 pub model: String,
7873 #[serde(rename = "modelProvider", default)]
7874 pub model_provider: String,
7875 #[serde(
7876 rename = "reasoningEffort",
7877 default,
7878 skip_serializing_if = "Option::is_none"
7879 )]
7880 pub reasoning_effort: Option<ReasoningEffort>,
7881 #[serde(default)]
7882 pub sandbox: Value,
7883 #[serde(
7884 rename = "serviceTier",
7885 default,
7886 skip_serializing_if = "Option::is_none"
7887 )]
7888 pub service_tier: Option<String>,
7889 #[serde()]
7890 pub thread: Thread,
7891 #[serde(
7894 rename = "turnsBackwardsCursor",
7895 default,
7896 skip_serializing_if = "Option::is_none"
7897 )]
7898 pub turns_backwards_cursor: Option<String>,
7899}
7900
7901#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
7903pub enum ThreadHistoryMode {
7904 #[serde(rename = "legacy")]
7905 Legacy,
7906 #[serde(rename = "paginated")]
7907 Paginated,
7908}
7909
7910#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7913#[serde(rename_all = "camelCase")]
7914pub struct ThreadItemEntry {
7915 #[serde()]
7916 pub item: ThreadItem,
7917 #[serde(rename = "turnId", default)]
7918 pub turn_id: String,
7919}
7920
7921#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7923#[serde(rename_all = "camelCase")]
7924pub struct ThreadItemsListParams {
7925 #[serde(default, skip_serializing_if = "Option::is_none")]
7926 pub cursor: Option<String>,
7927 #[serde(default, skip_serializing_if = "Option::is_none")]
7928 pub limit: Option<u32>,
7929 #[serde(
7930 rename = "sortDirection",
7931 default,
7932 skip_serializing_if = "Option::is_none"
7933 )]
7934 pub sort_direction: Option<SortDirection>,
7935 #[serde(rename = "threadId", default)]
7936 pub thread_id: String,
7937 #[serde(rename = "turnId", default, skip_serializing_if = "Option::is_none")]
7939 pub turn_id: Option<String>,
7940}
7941
7942#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7944#[serde(rename_all = "camelCase")]
7945pub struct ThreadItemsListResponse {
7946 #[serde(
7947 rename = "backwardsCursor",
7948 default,
7949 skip_serializing_if = "Option::is_none"
7950 )]
7951 pub backwards_cursor: Option<String>,
7952 #[serde(default)]
7953 pub data: Vec<ThreadItemEntry>,
7954 #[serde(
7955 rename = "nextCursor",
7956 default,
7957 skip_serializing_if = "Option::is_none"
7958 )]
7959 pub next_cursor: Option<String>,
7960}
7961
7962#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7966pub struct ThreadRealtimeItem {
7967 #[serde(default)]
7968 pub id: String,
7969 #[serde(rename = "realtimeSessionId", default)]
7970 pub realtime_session_id: String,
7971 #[serde(flatten)]
7972 pub detail: ThreadRealtimeItemDetail,
7973}
7974
7975#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7977#[serde(tag = "type", rename_all = "camelCase")]
7978pub enum ThreadRealtimeItemDetail {
7979 #[serde(rename = "realtimeSessionStarted")]
7980 RealtimeSessionStarted,
7981 #[serde(rename = "transcriptSegment")]
7982 TranscriptSegment {
7983 role: ThreadRealtimeTranscriptRole,
7984 text: String,
7985 },
7986 #[serde(rename = "bemItemPromoted")]
7987 BemItemPromoted {
7988 item_id: String,
7989 presentation: ThreadRealtimeBemItemPresentation,
7990 turn_id: String,
7991 },
7992 #[serde(rename = "realtimeSessionClosed")]
7993 RealtimeSessionClosed {
7994 outcome: ThreadRealtimeSessionOutcome,
7995 },
7996}
7997
7998#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8001#[serde(tag = "type", rename_all = "camelCase")]
8002pub enum ThreadRealtimeBemItemPresentation {
8003 #[serde(rename = "wholeItem")]
8004 WholeItem,
8005 #[serde(rename = "inlineMarkdown")]
8006 InlineMarkdown,
8007 #[serde(rename = "inlineVisualization")]
8008 InlineVisualization { index: u32 },
8009}
8010
8011#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8013#[serde(rename_all = "camelCase")]
8014pub struct ThreadRealtimeItemStartedNotification {
8015 #[serde()]
8016 pub item: ThreadRealtimeItem,
8017 #[serde(rename = "threadId", default)]
8018 pub thread_id: String,
8019}
8020
8021#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8023#[serde(rename_all = "camelCase")]
8024pub struct ThreadRealtimeItemCompletedNotification {
8025 #[serde()]
8026 pub item: ThreadRealtimeItem,
8027 #[serde(rename = "threadId", default)]
8028 pub thread_id: String,
8029}
8030
8031#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8034#[serde(rename_all = "camelCase")]
8035pub struct ThreadRealtimeItemTranscriptDeltaNotification {
8036 #[serde(default)]
8037 pub delta: String,
8038 #[serde(rename = "itemId", default)]
8039 pub item_id: String,
8040 #[serde(rename = "threadId", default)]
8041 pub thread_id: String,
8042}
8043
8044#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
8046pub enum ThreadRealtimeSessionOutcome {
8047 #[serde(rename = "ended")]
8048 Ended,
8049 #[serde(rename = "failed")]
8050 Failed,
8051}
8052
8053#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
8055pub enum ThreadRealtimeTranscriptRole {
8056 #[serde(rename = "user")]
8057 User,
8058 #[serde(rename = "assistant")]
8059 Assistant,
8060}
8061
8062#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8066#[serde(rename_all = "camelCase")]
8067pub struct ThreadRevertParams {
8068 #[serde(rename = "beforeTurnId", default)]
8070 pub before_turn_id: String,
8071 #[serde(rename = "threadId", default)]
8072 pub thread_id: String,
8073}
8074
8075#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8078#[serde(rename_all = "camelCase")]
8079pub struct ThreadRevertResponse {
8080 #[serde(
8081 rename = "itemsBackwardsCursor",
8082 default,
8083 skip_serializing_if = "Option::is_none"
8084 )]
8085 pub items_backwards_cursor: Option<String>,
8086 #[serde()]
8087 pub thread: Thread,
8088 #[serde(
8089 rename = "turnsBackwardsCursor",
8090 default,
8091 skip_serializing_if = "Option::is_none"
8092 )]
8093 pub turns_backwards_cursor: Option<String>,
8094}
8095
8096#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8097#[serde(rename_all = "camelCase")]
8098pub struct ThreadRollbackParams {
8099 #[serde(rename = "numTurns", default)]
8100 pub num_turns: i64,
8101 #[serde(rename = "threadId", default)]
8102 pub thread_id: String,
8103}
8104
8105#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8106#[serde(rename_all = "camelCase")]
8107pub struct ThreadRollbackResponse {
8108 #[serde(default)]
8109 pub thread: Value,
8110}
8111
8112#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8113#[serde(rename_all = "camelCase")]
8114pub struct ThreadSection {
8115 #[serde(default, skip_serializing_if = "Option::is_none")]
8116 pub appearance: Option<ThreadSectionAppearance>,
8117 #[serde(default)]
8118 pub id: String,
8119 #[serde(default)]
8120 pub name: String,
8121}
8122
8123#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8124#[serde(rename_all = "camelCase")]
8125pub struct ThreadSectionAppearance {
8126 #[serde(default, skip_serializing_if = "Option::is_none")]
8127 pub color: Option<String>,
8128 #[serde(default, skip_serializing_if = "Option::is_none")]
8129 pub icon: Option<String>,
8130}
8131
8132#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8133#[serde(rename_all = "camelCase")]
8134pub struct ThreadSectionCreateParams {
8135 #[serde(default, skip_serializing_if = "Option::is_none")]
8136 pub appearance: Option<ThreadSectionAppearance>,
8137 #[serde(default)]
8138 pub name: String,
8139}
8140
8141#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8142#[serde(rename_all = "camelCase")]
8143pub struct ThreadSectionCreateResponse {
8144 #[serde()]
8145 pub section: ThreadSection,
8146}
8147
8148#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8149#[serde(rename_all = "camelCase")]
8150pub struct ThreadSectionDeleteParams {
8151 #[serde(rename = "sectionId", default)]
8152 pub section_id: String,
8153}
8154
8155#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8156#[serde(rename_all = "camelCase")]
8157pub struct ThreadSectionDeleteResponse {
8158 #[serde(flatten, default, skip_serializing_if = "serde_json::Map::is_empty")]
8159 pub extra: serde_json::Map<String, Value>,
8160}
8161
8162#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8163#[serde(rename_all = "camelCase")]
8164pub struct ThreadSectionListParams {
8165 #[serde(default, skip_serializing_if = "Option::is_none")]
8166 pub cursor: Option<String>,
8167 #[serde(default, skip_serializing_if = "Option::is_none")]
8168 pub limit: Option<i64>,
8169}
8170
8171#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8172#[serde(rename_all = "camelCase")]
8173pub struct ThreadSectionListResponse {
8174 #[serde(default)]
8175 pub data: Vec<ThreadSection>,
8176 #[serde(
8177 rename = "nextCursor",
8178 default,
8179 skip_serializing_if = "Option::is_none"
8180 )]
8181 pub next_cursor: Option<String>,
8182}
8183
8184#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8185#[serde(rename_all = "camelCase")]
8186pub struct ThreadSectionMoveParams {
8187 #[serde(
8188 rename = "beforeThreadId",
8189 default,
8190 skip_serializing_if = "Option::is_none"
8191 )]
8192 pub before_thread_id: Option<String>,
8193 #[serde(rename = "sectionId", default, skip_serializing_if = "Option::is_none")]
8194 pub section_id: Option<String>,
8195 #[serde(rename = "threadId", default)]
8196 pub thread_id: String,
8197}
8198
8199#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8200#[serde(rename_all = "camelCase")]
8201pub struct ThreadSectionMoveResponse {
8202 #[serde(flatten, default, skip_serializing_if = "serde_json::Map::is_empty")]
8203 pub extra: serde_json::Map<String, Value>,
8204}
8205
8206#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8207#[serde(rename_all = "camelCase")]
8208pub struct ThreadSectionUpdateParams {
8209 #[serde(default, skip_serializing_if = "Option::is_none")]
8210 pub appearance: Option<ThreadSectionAppearance>,
8211 #[serde(default)]
8212 pub name: String,
8213 #[serde(rename = "sectionId", default)]
8214 pub section_id: String,
8215}
8216
8217#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8218#[serde(rename_all = "camelCase")]
8219pub struct ThreadSectionUpdateResponse {
8220 #[serde()]
8221 pub section: ThreadSection,
8222}
8223
8224#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8225#[serde(rename_all = "camelCase")]
8226pub struct ThreadSetNameParams {
8227 #[serde(default)]
8228 pub name: String,
8229 #[serde(rename = "threadId", default)]
8230 pub thread_id: String,
8231}
8232
8233#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8234#[serde(rename_all = "camelCase")]
8235pub struct ThreadSetNameResponse {
8236 #[serde(flatten, default, skip_serializing_if = "serde_json::Map::is_empty")]
8237 pub extra: serde_json::Map<String, Value>,
8238}
8239
8240#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8241#[serde(rename_all = "camelCase")]
8242pub struct ThreadSettings {
8243 #[serde(
8244 rename = "activePermissionProfile",
8245 default,
8246 skip_serializing_if = "Option::is_none"
8247 )]
8248 pub active_permission_profile: Option<ActivePermissionProfile>,
8249 #[serde(rename = "approvalPolicy")]
8250 pub approval_policy: AskForApproval,
8251 #[serde(rename = "approvalsReviewer")]
8252 pub approvals_reviewer: ApprovalsReviewer,
8253 #[serde(rename = "collaborationMode")]
8254 pub collaboration_mode: CollaborationMode,
8255 #[serde()]
8256 pub cwd: AbsolutePathBuf,
8257 #[serde(default, skip_serializing_if = "Option::is_none")]
8258 pub effort: Option<ReasoningEffort>,
8259 #[serde(default)]
8260 pub model: String,
8261 #[serde(rename = "modelProvider", default)]
8262 pub model_provider: String,
8263 #[serde(default, skip_serializing_if = "Option::is_none")]
8264 pub personality: Option<Personality>,
8265 #[serde(rename = "sandboxPolicy")]
8266 pub sandbox_policy: SandboxPolicy,
8267 #[serde(
8268 rename = "serviceTier",
8269 default,
8270 skip_serializing_if = "Option::is_none"
8271 )]
8272 pub service_tier: Option<String>,
8273 #[serde(default, skip_serializing_if = "Option::is_none")]
8274 pub summary: Option<ReasoningSummary>,
8275}
8276
8277#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8278#[serde(rename_all = "camelCase")]
8279pub struct ThreadSettingsUpdatedNotification {
8280 #[serde(rename = "threadId", default)]
8281 pub thread_id: String,
8282 #[serde(rename = "threadSettings")]
8283 pub thread_settings: ThreadSettings,
8284}
8285
8286#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8287#[serde(rename_all = "camelCase")]
8288pub struct ThreadShellCommandParams {
8289 #[serde(default)]
8290 pub command: String,
8291 #[serde(rename = "threadId", default)]
8292 pub thread_id: String,
8293 #[serde(rename = "timeoutMs", default, skip_serializing_if = "Option::is_none")]
8296 pub timeout_ms: Option<i64>,
8297}
8298
8299#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8300#[serde(rename_all = "camelCase")]
8301pub struct ThreadShellCommandResponse {
8302 #[serde(flatten, default, skip_serializing_if = "serde_json::Map::is_empty")]
8303 pub extra: serde_json::Map<String, Value>,
8304}
8305
8306#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
8307pub enum ThreadSortKey {
8308 #[serde(rename = "created_at")]
8309 Created_at,
8310 #[serde(rename = "updated_at")]
8311 Updated_at,
8312 #[serde(rename = "recency_at")]
8313 Recency_at,
8314 #[serde(rename = "section_position")]
8315 Section_position,
8316}
8317
8318#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq, Hash)]
8319#[serde(transparent)]
8320pub struct ThreadSource(pub String);
8321
8322#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
8323pub enum ThreadSourceKind {
8324 #[serde(rename = "cli")]
8325 Cli,
8326 #[serde(rename = "vscode")]
8327 Vscode,
8328 #[serde(rename = "exec")]
8329 Exec,
8330 #[serde(rename = "appServer")]
8331 AppServer,
8332 #[serde(rename = "subAgent")]
8333 SubAgent,
8334 #[serde(rename = "subAgentReview")]
8335 SubAgentReview,
8336 #[serde(rename = "subAgentCompact")]
8337 SubAgentCompact,
8338 #[serde(rename = "subAgentThreadSpawn")]
8339 SubAgentThreadSpawn,
8340 #[serde(rename = "subAgentOther")]
8341 SubAgentOther,
8342 #[serde(rename = "unknown")]
8343 Unknown,
8344}
8345
8346#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8347#[serde(rename_all = "camelCase")]
8348pub struct ThreadStartParams {
8349 #[serde(
8350 rename = "approvalPolicy",
8351 default,
8352 skip_serializing_if = "Option::is_none"
8353 )]
8354 pub approval_policy: Option<AskForApproval>,
8355 #[serde(
8356 rename = "approvalsReviewer",
8357 default,
8358 skip_serializing_if = "Option::is_none"
8359 )]
8360 pub approvals_reviewer: Option<ApprovalsReviewer>,
8361 #[serde(
8362 rename = "baseInstructions",
8363 default,
8364 skip_serializing_if = "Option::is_none"
8365 )]
8366 pub base_instructions: Option<String>,
8367 #[serde(default, skip_serializing_if = "Option::is_none")]
8368 pub config: Option<Value>,
8369 #[serde(default, skip_serializing_if = "Option::is_none")]
8370 pub cwd: Option<String>,
8371 #[serde(
8372 rename = "developerInstructions",
8373 default,
8374 skip_serializing_if = "Option::is_none"
8375 )]
8376 pub developer_instructions: Option<String>,
8377 #[serde(default, skip_serializing_if = "Option::is_none")]
8378 pub ephemeral: Option<bool>,
8379 #[serde(default, skip_serializing_if = "Option::is_none")]
8380 pub model: Option<String>,
8381 #[serde(
8382 rename = "modelProvider",
8383 default,
8384 skip_serializing_if = "Option::is_none"
8385 )]
8386 pub model_provider: Option<String>,
8387 #[serde(default, skip_serializing_if = "Option::is_none")]
8388 pub personality: Option<Personality>,
8389 #[serde(default, skip_serializing_if = "Option::is_none")]
8390 pub sandbox: Option<SandboxMode>,
8391 #[serde(
8392 rename = "serviceName",
8393 default,
8394 skip_serializing_if = "Option::is_none"
8395 )]
8396 pub service_name: Option<String>,
8397 #[serde(
8398 rename = "serviceTier",
8399 default,
8400 skip_serializing_if = "Option::is_none"
8401 )]
8402 pub service_tier: Option<String>,
8403 #[serde(
8404 rename = "sessionStartSource",
8405 default,
8406 skip_serializing_if = "Option::is_none"
8407 )]
8408 pub session_start_source: Option<ThreadStartSource>,
8409 #[serde(
8410 rename = "threadSource",
8411 default,
8412 skip_serializing_if = "Option::is_none"
8413 )]
8414 pub thread_source: Option<ThreadSource>,
8415}
8416
8417#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8418#[serde(rename_all = "camelCase")]
8419pub struct ThreadStartResponse {
8420 #[serde(rename = "approvalPolicy")]
8421 pub approval_policy: AskForApproval,
8422 #[serde(rename = "approvalsReviewer", default)]
8423 pub approvals_reviewer: Value,
8424 #[serde()]
8425 pub cwd: AbsolutePathBuf,
8426 #[serde(
8427 rename = "instructionSources",
8428 default,
8429 skip_serializing_if = "Option::is_none"
8430 )]
8431 pub instruction_sources: Option<Vec<LegacyAppPathString>>,
8432 #[serde(default)]
8433 pub model: String,
8434 #[serde(rename = "modelProvider", default)]
8435 pub model_provider: String,
8436 #[serde(
8437 rename = "reasoningEffort",
8438 default,
8439 skip_serializing_if = "Option::is_none"
8440 )]
8441 pub reasoning_effort: Option<ReasoningEffort>,
8442 #[serde(default)]
8443 pub sandbox: Value,
8444 #[serde(
8445 rename = "serviceTier",
8446 default,
8447 skip_serializing_if = "Option::is_none"
8448 )]
8449 pub service_tier: Option<String>,
8450 #[serde()]
8451 pub thread: Thread,
8452}
8453
8454#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
8455pub enum ThreadStartSource {
8456 #[serde(rename = "startup")]
8457 Startup,
8458 #[serde(rename = "clear")]
8459 Clear,
8460}
8461
8462#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8463#[serde(rename_all = "camelCase")]
8464pub struct ThreadStartedNotification {
8465 #[serde()]
8466 pub thread: Thread,
8467}
8468
8469#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8470#[serde(tag = "type", rename_all = "camelCase")]
8471pub enum ThreadStatus {
8472 #[serde(rename = "notLoaded")]
8473 NotLoaded,
8474 Idle,
8475 #[serde(rename = "systemError")]
8476 SystemError,
8477 Active {
8478 #[serde(rename = "activeFlags")]
8479 active_flags: Vec<ThreadActiveFlag>,
8480 },
8481}
8482
8483#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8484#[serde(rename_all = "camelCase")]
8485pub struct ThreadStatusChangedNotification {
8486 #[serde()]
8487 pub status: ThreadStatus,
8488 #[serde(rename = "threadId", default)]
8489 pub thread_id: String,
8490}
8491
8492#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8493#[serde(rename_all = "camelCase")]
8494pub struct ThreadTokenUsage {
8495 #[serde()]
8496 pub last: TokenUsageBreakdown,
8497 #[serde(
8498 rename = "modelContextWindow",
8499 default,
8500 skip_serializing_if = "Option::is_none"
8501 )]
8502 pub model_context_window: Option<i64>,
8503 #[serde()]
8504 pub total: TokenUsageBreakdown,
8505}
8506
8507#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8508#[serde(rename_all = "camelCase")]
8509pub struct ThreadTokenUsageUpdatedNotification {
8510 #[serde(rename = "threadId", default)]
8511 pub thread_id: String,
8512 #[serde(rename = "tokenUsage")]
8513 pub token_usage: ThreadTokenUsage,
8514 #[serde(rename = "turnId", default)]
8515 pub turn_id: String,
8516}
8517
8518#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8519#[serde(rename_all = "camelCase")]
8520pub struct ThreadUnarchiveParams {
8521 #[serde(rename = "threadId", default)]
8522 pub thread_id: String,
8523}
8524
8525#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8526#[serde(rename_all = "camelCase")]
8527pub struct ThreadUnarchiveResponse {
8528 #[serde()]
8529 pub thread: Thread,
8530}
8531
8532#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8533#[serde(rename_all = "camelCase")]
8534pub struct ThreadUnarchivedNotification {
8535 #[serde(rename = "threadId", default)]
8536 pub thread_id: String,
8537}
8538
8539#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8544#[serde(tag = "type", rename_all = "camelCase")]
8545#[allow(clippy::large_enum_variant)] pub enum ThreadTimelineEntry {
8547 Item {
8548 item: ThreadItem,
8549 position: u64,
8550 #[serde(rename = "turnId")]
8551 turn_id: String,
8552 },
8553 Realtime {
8554 item: ThreadRealtimeItem,
8555 position: u64,
8556 },
8557 TurnStarted {
8558 position: u64,
8559 #[serde(default, skip_serializing_if = "Option::is_none")]
8560 started_at: Option<i64>,
8561 turn_id: String,
8562 },
8563 TurnCompleted {
8564 #[serde(default, skip_serializing_if = "Option::is_none")]
8565 completed_at: Option<i64>,
8566 #[serde(default, skip_serializing_if = "Option::is_none")]
8567 duration_ms: Option<i64>,
8568 #[serde(default, skip_serializing_if = "Option::is_none")]
8569 error: Option<TurnError>,
8570 position: u64,
8571 #[serde(default, skip_serializing_if = "Option::is_none")]
8572 started_at: Option<i64>,
8573 status: TurnStatus,
8574 turn_id: String,
8575 },
8576}
8577
8578#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8580#[serde(rename_all = "camelCase")]
8581pub struct ThreadTurnsListParams {
8582 #[serde(default, skip_serializing_if = "Option::is_none")]
8583 pub cursor: Option<String>,
8584 #[serde(rename = "itemsView", default, skip_serializing_if = "Option::is_none")]
8586 pub items_view: Option<TurnItemsView>,
8587 #[serde(default, skip_serializing_if = "Option::is_none")]
8588 pub limit: Option<u32>,
8589 #[serde(
8590 rename = "sortDirection",
8591 default,
8592 skip_serializing_if = "Option::is_none"
8593 )]
8594 pub sort_direction: Option<SortDirection>,
8595 #[serde(rename = "threadId", default)]
8596 pub thread_id: String,
8597}
8598
8599#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8601#[serde(rename_all = "camelCase")]
8602pub struct ThreadTurnsListResponse {
8603 #[serde(
8604 rename = "backwardsCursor",
8605 default,
8606 skip_serializing_if = "Option::is_none"
8607 )]
8608 pub backwards_cursor: Option<String>,
8609 #[serde(default)]
8610 pub data: Vec<Turn>,
8611 #[serde(
8612 rename = "nextCursor",
8613 default,
8614 skip_serializing_if = "Option::is_none"
8615 )]
8616 pub next_cursor: Option<String>,
8617}
8618
8619#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8620#[serde(rename_all = "camelCase")]
8621pub struct ThreadUnsubscribeParams {
8622 #[serde(rename = "threadId", default)]
8623 pub thread_id: String,
8624}
8625
8626#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8627#[serde(rename_all = "camelCase")]
8628pub struct ThreadUnsubscribeResponse {
8629 #[serde()]
8630 pub status: ThreadUnsubscribeStatus,
8631}
8632
8633#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
8634pub enum ThreadUnsubscribeStatus {
8635 #[serde(rename = "notLoaded")]
8636 NotLoaded,
8637 #[serde(rename = "notSubscribed")]
8638 NotSubscribed,
8639 #[serde(rename = "unsubscribed")]
8640 Unsubscribed,
8641}
8642
8643#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8644#[serde(rename_all = "camelCase")]
8645pub struct TokenUsageBreakdown {
8646 #[serde(
8647 rename = "cacheWriteInputTokens",
8648 default,
8649 skip_serializing_if = "Option::is_none"
8650 )]
8651 pub cache_write_input_tokens: Option<i64>,
8652 #[serde(rename = "cachedInputTokens", default)]
8653 pub cached_input_tokens: i64,
8654 #[serde(rename = "inputTokens", default)]
8655 pub input_tokens: i64,
8656 #[serde(rename = "outputTokens", default)]
8657 pub output_tokens: i64,
8658 #[serde(rename = "reasoningOutputTokens", default)]
8659 pub reasoning_output_tokens: i64,
8660 #[serde(rename = "totalTokens", default)]
8661 pub total_tokens: i64,
8662}
8663
8664#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8665#[serde(rename_all = "camelCase")]
8666pub struct Tool {
8667 #[serde(default, skip_serializing_if = "Option::is_none")]
8668 pub _meta: Option<Value>,
8669 #[serde(default, skip_serializing_if = "Option::is_none")]
8670 pub annotations: Option<Value>,
8671 #[serde(default, skip_serializing_if = "Option::is_none")]
8672 pub description: Option<String>,
8673 #[serde(default, skip_serializing_if = "Option::is_none")]
8674 pub icons: Option<Vec<Value>>,
8675 #[serde(rename = "inputSchema", default)]
8676 pub input_schema: Value,
8677 #[serde(default)]
8678 pub name: String,
8679 #[serde(
8680 rename = "outputSchema",
8681 default,
8682 skip_serializing_if = "Option::is_none"
8683 )]
8684 pub output_schema: Option<Value>,
8685 #[serde(default, skip_serializing_if = "Option::is_none")]
8686 pub title: Option<String>,
8687}
8688
8689#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8690#[serde(rename_all = "camelCase")]
8691pub struct ToolRequestUserInputAnswer {
8692 #[serde(default)]
8693 pub answers: Vec<String>,
8694}
8695
8696#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8697#[serde(rename_all = "camelCase")]
8698pub struct ToolRequestUserInputOption {
8699 #[serde(default)]
8700 pub description: String,
8701 #[serde(default)]
8702 pub label: String,
8703}
8704
8705#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8706#[serde(rename_all = "camelCase")]
8707pub struct ToolRequestUserInputParams {
8708 #[serde(
8709 rename = "autoResolutionMs",
8710 default,
8711 skip_serializing_if = "Option::is_none"
8712 )]
8713 pub auto_resolution_ms: Option<i64>,
8714 #[serde(rename = "isBlocking", default)]
8715 pub is_blocking: bool,
8716 #[serde(rename = "itemId", default)]
8717 pub item_id: String,
8718 #[serde(default)]
8719 pub questions: Vec<ToolRequestUserInputQuestion>,
8720 #[serde(rename = "threadId", default)]
8721 pub thread_id: String,
8722 #[serde(rename = "turnId", default)]
8723 pub turn_id: String,
8724}
8725
8726#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8727#[serde(rename_all = "camelCase")]
8728pub struct ToolRequestUserInputQuestion {
8729 #[serde(default)]
8730 pub header: String,
8731 #[serde(default)]
8732 pub id: String,
8733 #[serde(rename = "isOther", default, skip_serializing_if = "Option::is_none")]
8734 pub is_other: Option<bool>,
8735 #[serde(rename = "isSecret", default, skip_serializing_if = "Option::is_none")]
8736 pub is_secret: Option<bool>,
8737 #[serde(default, skip_serializing_if = "Option::is_none")]
8738 pub options: Option<Vec<ToolRequestUserInputOption>>,
8739 #[serde(default)]
8740 pub question: String,
8741}
8742
8743#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8744#[serde(rename_all = "camelCase")]
8745pub struct ToolRequestUserInputResponse {
8746 #[serde(default)]
8747 pub answers: std::collections::BTreeMap<String, ToolRequestUserInputAnswer>,
8748}
8749
8750#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8751#[serde(rename_all = "camelCase")]
8752pub struct ToolsV2 {
8753 #[serde(default, skip_serializing_if = "Option::is_none")]
8754 pub web_search: Option<WebSearchToolConfig>,
8755}
8756
8757#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8758#[serde(rename_all = "camelCase")]
8759pub struct Turn {
8760 #[serde(
8761 rename = "completedAt",
8762 default,
8763 skip_serializing_if = "Option::is_none"
8764 )]
8765 pub completed_at: Option<i64>,
8766 #[serde(
8767 rename = "durationMs",
8768 default,
8769 skip_serializing_if = "Option::is_none"
8770 )]
8771 pub duration_ms: Option<i64>,
8772 #[serde(default, skip_serializing_if = "Option::is_none")]
8773 pub error: Option<TurnError>,
8774 #[serde(default)]
8775 pub id: String,
8776 #[serde(default)]
8777 pub items: Vec<ThreadItem>,
8778 #[serde(rename = "itemsView", default, skip_serializing_if = "Option::is_none")]
8779 pub items_view: Option<Value>,
8780 #[serde(rename = "startedAt", default, skip_serializing_if = "Option::is_none")]
8781 pub started_at: Option<i64>,
8782 #[serde()]
8783 pub status: TurnStatus,
8784}
8785
8786#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8787#[serde(rename_all = "camelCase")]
8788pub struct TurnCompletedNotification {
8789 #[serde(rename = "threadId", default)]
8790 pub thread_id: String,
8791 #[serde()]
8792 pub turn: Turn,
8793}
8794
8795#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8796#[serde(rename_all = "camelCase")]
8797pub struct TurnDiffUpdatedNotification {
8798 #[serde(default)]
8799 pub diff: String,
8800 #[serde(rename = "threadId", default)]
8801 pub thread_id: String,
8802 #[serde(rename = "turnId", default)]
8803 pub turn_id: String,
8804}
8805
8806#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8807#[serde(rename_all = "camelCase")]
8808pub struct TurnError {
8809 #[serde(
8810 rename = "additionalDetails",
8811 default,
8812 skip_serializing_if = "Option::is_none"
8813 )]
8814 pub additional_details: Option<String>,
8815 #[serde(
8816 rename = "codexErrorInfo",
8817 default,
8818 skip_serializing_if = "Option::is_none"
8819 )]
8820 pub codex_error_info: Option<CodexErrorInfo>,
8821 #[serde(default)]
8822 pub message: String,
8823 #[serde(default, skip_serializing_if = "Option::is_none")]
8826 pub misalignment: Option<MisalignmentErrorDetails>,
8827}
8828
8829#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8830#[serde(rename_all = "camelCase")]
8831pub struct TurnInterruptParams {
8832 #[serde(rename = "threadId", default)]
8833 pub thread_id: String,
8834 #[serde(rename = "turnId", default)]
8835 pub turn_id: String,
8836}
8837
8838#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8839#[serde(rename_all = "camelCase")]
8840pub struct TurnInterruptResponse {
8841 #[serde(flatten, default, skip_serializing_if = "serde_json::Map::is_empty")]
8842 pub extra: serde_json::Map<String, Value>,
8843}
8844
8845#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)]
8846pub enum TurnItemsView {
8847 #[serde(rename = "notLoaded")]
8848 NotLoaded,
8849 #[serde(rename = "summary")]
8850 Summary,
8851 #[serde(rename = "full")]
8852 Full,
8853}
8854
8855#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8856#[serde(rename_all = "camelCase")]
8857pub struct TurnModerationMetadataNotification {
8858 #[serde(default)]
8859 pub metadata: Value,
8860 #[serde(rename = "threadId", default)]
8861 pub thread_id: String,
8862 #[serde(rename = "turnId", default)]
8863 pub turn_id: String,
8864}
8865
8866#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8867#[serde(rename_all = "camelCase")]
8868pub struct TurnPlanStep {
8869 #[serde()]
8870 pub status: TurnPlanStepStatus,
8871 #[serde(default)]
8872 pub step: String,
8873}
8874
8875#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
8876pub enum TurnPlanStepStatus {
8877 #[serde(rename = "pending")]
8878 Pending,
8879 #[serde(rename = "inProgress")]
8880 InProgress,
8881 #[serde(rename = "completed")]
8882 Completed,
8883}
8884
8885#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8886#[serde(rename_all = "camelCase")]
8887pub struct TurnPlanUpdatedNotification {
8888 #[serde(default, skip_serializing_if = "Option::is_none")]
8889 pub explanation: Option<String>,
8890 #[serde(default)]
8891 pub plan: Vec<TurnPlanStep>,
8892 #[serde(rename = "threadId", default)]
8893 pub thread_id: String,
8894 #[serde(rename = "turnId", default)]
8895 pub turn_id: String,
8896}
8897
8898#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8899#[serde(rename_all = "camelCase")]
8900pub struct TurnStartParams {
8901 #[serde(
8902 rename = "approvalPolicy",
8903 default,
8904 skip_serializing_if = "Option::is_none"
8905 )]
8906 pub approval_policy: Option<AskForApproval>,
8907 #[serde(
8908 rename = "approvalsReviewer",
8909 default,
8910 skip_serializing_if = "Option::is_none"
8911 )]
8912 pub approvals_reviewer: Option<ApprovalsReviewer>,
8913 #[serde(
8914 rename = "clientUserMessageId",
8915 default,
8916 skip_serializing_if = "Option::is_none"
8917 )]
8918 pub client_user_message_id: Option<String>,
8919 #[serde(default, skip_serializing_if = "Option::is_none")]
8920 pub cwd: Option<String>,
8921 #[serde(default, skip_serializing_if = "Option::is_none")]
8922 pub effort: Option<ReasoningEffort>,
8923 #[serde(default)]
8924 pub input: Vec<UserInput>,
8925 #[serde(default, skip_serializing_if = "Option::is_none")]
8926 pub model: Option<String>,
8927 #[serde(
8928 rename = "outputSchema",
8929 default,
8930 skip_serializing_if = "Option::is_none"
8931 )]
8932 pub output_schema: Option<Value>,
8933 #[serde(default, skip_serializing_if = "Option::is_none")]
8934 pub personality: Option<Personality>,
8935 #[serde(
8936 rename = "sandboxPolicy",
8937 default,
8938 skip_serializing_if = "Option::is_none"
8939 )]
8940 pub sandbox_policy: Option<SandboxPolicy>,
8941 #[serde(
8942 rename = "serviceTier",
8943 default,
8944 skip_serializing_if = "Option::is_none"
8945 )]
8946 pub service_tier: Option<String>,
8947 #[serde(
8950 rename = "serviceTierForTurn",
8951 default,
8952 skip_serializing_if = "Option::is_none"
8953 )]
8954 pub service_tier_for_turn: Option<String>,
8955 #[serde(default, skip_serializing_if = "Option::is_none")]
8956 pub summary: Option<ReasoningSummary>,
8957 #[serde(rename = "threadId", default)]
8958 pub thread_id: String,
8959 #[serde(
8962 rename = "toolOutput",
8963 default,
8964 skip_serializing_if = "Option::is_none"
8965 )]
8966 pub tool_output: Option<TurnToolOutput>,
8967 #[serde(
8970 rename = "turnTrigger",
8971 default,
8972 skip_serializing_if = "Option::is_none"
8973 )]
8974 pub turn_trigger: Option<String>,
8975}
8976
8977#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8978#[serde(rename_all = "camelCase")]
8979pub struct TurnStartResponse {
8980 #[serde()]
8981 pub turn: Turn,
8982}
8983
8984#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8985#[serde(rename_all = "camelCase")]
8986pub struct TurnStartedNotification {
8987 #[serde(rename = "threadId", default)]
8988 pub thread_id: String,
8989 #[serde()]
8990 pub turn: Turn,
8991}
8992
8993#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
8994pub enum TurnStatus {
8995 #[serde(rename = "completed")]
8996 Completed,
8997 #[serde(rename = "interrupted")]
8998 Interrupted,
8999 #[serde(rename = "failed")]
9000 Failed,
9001 #[serde(rename = "inProgress")]
9002 InProgress,
9003}
9004
9005#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
9008#[serde(rename_all = "camelCase")]
9009pub struct TurnToolOutput {
9010 #[serde(default)]
9011 pub name: String,
9012 #[serde(default, skip_serializing_if = "Option::is_none")]
9013 pub namespace: Option<String>,
9014 #[serde()]
9015 pub output: FunctionCallOutputBody,
9016}
9017
9018#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
9019#[serde(rename_all = "camelCase")]
9020pub struct TurnSteerParams {
9021 #[serde(
9022 rename = "clientUserMessageId",
9023 default,
9024 skip_serializing_if = "Option::is_none"
9025 )]
9026 pub client_user_message_id: Option<String>,
9027 #[serde(rename = "expectedTurnId", default)]
9028 pub expected_turn_id: String,
9029 #[serde(default)]
9030 pub input: Vec<UserInput>,
9031 #[serde(rename = "threadId", default)]
9032 pub thread_id: String,
9033}
9034
9035#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
9036#[serde(rename_all = "camelCase")]
9037pub struct TurnSteerResponse {
9038 #[serde(rename = "turnId", default)]
9039 pub turn_id: String,
9040}
9041
9042#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
9043#[serde(tag = "type", rename_all = "camelCase")]
9044pub enum UserInput {
9045 Text {
9046 text: String,
9047 #[serde(default, skip_serializing_if = "Option::is_none")]
9048 text_elements: Option<Vec<TextElement>>,
9049 },
9050 Image {
9051 #[serde(default, skip_serializing_if = "Option::is_none")]
9052 detail: Option<ImageDetail>,
9053 url: String,
9054 },
9055 #[serde(rename = "localImage")]
9056 LocalImage {
9057 #[serde(default, skip_serializing_if = "Option::is_none")]
9058 detail: Option<ImageDetail>,
9059 path: String,
9060 },
9061 Audio {
9062 url: String,
9063 },
9064 #[serde(rename = "localAudio")]
9065 LocalAudio {
9066 path: String,
9067 },
9068 Skill {
9069 name: String,
9070 path: String,
9071 },
9072 Mention {
9073 name: String,
9074 path: String,
9075 },
9076}
9077
9078#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
9079pub enum Verbosity {
9080 #[serde(rename = "low")]
9081 Low,
9082 #[serde(rename = "medium")]
9083 Medium,
9084 #[serde(rename = "high")]
9085 High,
9086}
9087
9088#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
9089#[serde(rename_all = "camelCase")]
9090pub struct WarningNotification {
9091 #[serde(default)]
9092 pub message: String,
9093 #[serde(rename = "threadId", default, skip_serializing_if = "Option::is_none")]
9094 pub thread_id: Option<String>,
9095}
9096
9097#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
9098#[serde(tag = "type", rename_all = "camelCase")]
9099pub enum WebSearchAction {
9100 Search {
9101 #[serde(default, skip_serializing_if = "Option::is_none")]
9102 queries: Option<Vec<String>>,
9103 #[serde(default, skip_serializing_if = "Option::is_none")]
9104 query: Option<String>,
9105 },
9106 #[serde(rename = "openPage")]
9107 OpenPage {
9108 #[serde(default, skip_serializing_if = "Option::is_none")]
9109 url: Option<String>,
9110 },
9111 #[serde(rename = "findInPage")]
9112 FindInPage {
9113 #[serde(default, skip_serializing_if = "Option::is_none")]
9114 pattern: Option<String>,
9115 #[serde(default, skip_serializing_if = "Option::is_none")]
9116 url: Option<String>,
9117 },
9118 Other,
9119}
9120
9121#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
9122pub enum WebSearchContextSize {
9123 #[serde(rename = "low")]
9124 Low,
9125 #[serde(rename = "medium")]
9126 Medium,
9127 #[serde(rename = "high")]
9128 High,
9129}
9130
9131#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
9132#[serde(rename_all = "camelCase")]
9133pub struct WebSearchLocation {
9134 #[serde(default, skip_serializing_if = "Option::is_none")]
9135 pub city: Option<String>,
9136 #[serde(default, skip_serializing_if = "Option::is_none")]
9137 pub country: Option<String>,
9138 #[serde(default, skip_serializing_if = "Option::is_none")]
9139 pub region: Option<String>,
9140 #[serde(default, skip_serializing_if = "Option::is_none")]
9141 pub timezone: Option<String>,
9142}
9143
9144#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
9145pub enum WebSearchMode {
9146 #[serde(rename = "disabled")]
9147 Disabled,
9148 #[serde(rename = "cached")]
9149 Cached,
9150 #[serde(rename = "indexed")]
9151 Indexed,
9152 #[serde(rename = "live")]
9153 Live,
9154}
9155
9156#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
9157#[serde(rename_all = "camelCase")]
9158pub struct WebSearchToolConfig {
9159 #[serde(default, skip_serializing_if = "Option::is_none")]
9160 pub allowed_domains: Option<Vec<String>>,
9161 #[serde(default, skip_serializing_if = "Option::is_none")]
9162 pub context_size: Option<WebSearchContextSize>,
9163 #[serde(default, skip_serializing_if = "Option::is_none")]
9164 pub location: Option<WebSearchLocation>,
9165}
9166
9167#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
9168pub enum WindowsSandboxReadiness {
9169 #[serde(rename = "ready")]
9170 Ready,
9171 #[serde(rename = "notConfigured")]
9172 NotConfigured,
9173 #[serde(rename = "updateRequired")]
9174 UpdateRequired,
9175}
9176
9177#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
9178#[serde(rename_all = "camelCase")]
9179pub struct WindowsSandboxReadinessResponse {
9180 #[serde()]
9181 pub status: WindowsSandboxReadiness,
9182}
9183
9184#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
9185#[serde(rename_all = "camelCase")]
9186pub struct WindowsSandboxSetupCompletedNotification {
9187 #[serde(default, skip_serializing_if = "Option::is_none")]
9188 pub error: Option<String>,
9189 #[serde()]
9190 pub mode: WindowsSandboxSetupMode,
9191 #[serde(default)]
9192 pub success: bool,
9193}
9194
9195#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
9196pub enum WindowsSandboxSetupMode {
9197 #[serde(rename = "elevated")]
9198 Elevated,
9199 #[serde(rename = "unelevated")]
9200 Unelevated,
9201}
9202
9203#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
9204#[serde(rename_all = "camelCase")]
9205pub struct WindowsSandboxSetupStartParams {
9206 #[serde(default, skip_serializing_if = "Option::is_none")]
9207 pub cwd: Option<AbsolutePathBuf>,
9208 #[serde()]
9209 pub mode: WindowsSandboxSetupMode,
9210}
9211
9212#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
9213#[serde(rename_all = "camelCase")]
9214pub struct WindowsSandboxSetupStartResponse {
9215 #[serde(default)]
9216 pub started: bool,
9217}
9218
9219#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
9220#[serde(rename_all = "camelCase")]
9221pub struct WindowsWorldWritableWarningNotification {
9222 #[serde(rename = "extraCount", default)]
9223 pub extra_count: i64,
9224 #[serde(rename = "failedScan", default)]
9225 pub failed_scan: bool,
9226 #[serde(rename = "samplePaths", default)]
9227 pub sample_paths: Vec<String>,
9228}
9229
9230#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
9231#[serde(rename_all = "camelCase")]
9232pub struct WorkspaceMessage {
9233 #[serde(
9234 rename = "archivedAt",
9235 default,
9236 skip_serializing_if = "Option::is_none"
9237 )]
9238 pub archived_at: Option<i64>,
9239 #[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
9240 pub created_at: Option<i64>,
9241 #[serde(rename = "messageBody", default)]
9242 pub message_body: String,
9243 #[serde(rename = "messageId", default)]
9244 pub message_id: String,
9245 #[serde(rename = "messageType")]
9246 pub message_type: WorkspaceMessageType,
9247}
9248
9249#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
9250pub enum WorkspaceMessageType {
9251 #[serde(rename = "headline")]
9252 Headline,
9253 #[serde(rename = "announcement")]
9254 Announcement,
9255 #[serde(rename = "unknown")]
9256 Unknown,
9257}
9258
9259#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
9260pub enum WriteStatus {
9261 #[serde(rename = "ok")]
9262 Ok,
9263 #[serde(rename = "okOverridden")]
9264 OkOverridden,
9265}