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