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