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