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(
4252 rename = "serverInfo",
4253 default,
4254 skip_serializing_if = "Option::is_none"
4255 )]
4256 pub server_info: Option<McpServerInfo>,
4257 #[serde(default)]
4258 pub tools: std::collections::BTreeMap<String, Tool>,
4259 #[serde(
4262 rename = "toolsError",
4263 default,
4264 skip_serializing_if = "Option::is_none"
4265 )]
4266 pub tools_error: Option<String>,
4267}
4268
4269#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
4270pub enum McpServerStatusDetail {
4271 #[serde(rename = "full")]
4272 Full,
4273 #[serde(rename = "toolsAndAuthOnly")]
4274 ToolsAndAuthOnly,
4275}
4276
4277#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4278#[serde(rename_all = "camelCase")]
4279pub struct McpServerStatusUpdatedNotification {
4280 #[serde(default, skip_serializing_if = "Option::is_none")]
4281 pub error: Option<String>,
4282 #[serde(
4283 rename = "failureReason",
4284 default,
4285 skip_serializing_if = "Option::is_none"
4286 )]
4287 pub failure_reason: Option<McpServerStartupFailureReason>,
4288 #[serde(default)]
4289 pub name: String,
4290 #[serde()]
4291 pub status: McpServerStartupState,
4292 #[serde(rename = "threadId", default, skip_serializing_if = "Option::is_none")]
4293 pub thread_id: Option<String>,
4294}
4295
4296#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4297#[serde(rename_all = "camelCase")]
4298pub struct McpServerToolCallParams {
4299 #[serde(default, skip_serializing_if = "Option::is_none")]
4300 pub _meta: Option<Value>,
4301 #[serde(default, skip_serializing_if = "Option::is_none")]
4302 pub arguments: Option<Value>,
4303 #[serde(default)]
4304 pub server: String,
4305 #[serde(rename = "threadId", default)]
4306 pub thread_id: String,
4307 #[serde(default)]
4308 pub tool: String,
4309}
4310
4311#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4312#[serde(rename_all = "camelCase")]
4313pub struct McpServerToolCallResponse {
4314 #[serde(default, skip_serializing_if = "Option::is_none")]
4315 pub _meta: Option<Value>,
4316 #[serde(default)]
4317 pub content: Vec<Value>,
4318 #[serde(rename = "isError", default, skip_serializing_if = "Option::is_none")]
4319 pub is_error: Option<bool>,
4320 #[serde(
4321 rename = "structuredContent",
4322 default,
4323 skip_serializing_if = "Option::is_none"
4324 )]
4325 pub structured_content: Option<Value>,
4326}
4327
4328#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4329#[serde(rename_all = "camelCase")]
4330pub struct McpToolCallAppContext {
4331 #[serde(
4332 rename = "actionName",
4333 default,
4334 skip_serializing_if = "Option::is_none"
4335 )]
4336 pub action_name: Option<String>,
4337 #[serde(rename = "appName", default, skip_serializing_if = "Option::is_none")]
4338 pub app_name: Option<String>,
4339 #[serde(rename = "connectorId", default)]
4340 pub connector_id: String,
4341 #[serde(rename = "linkId", default, skip_serializing_if = "Option::is_none")]
4342 pub link_id: Option<String>,
4343 #[serde(
4344 rename = "resourceUri",
4345 default,
4346 skip_serializing_if = "Option::is_none"
4347 )]
4348 pub resource_uri: Option<String>,
4349}
4350
4351#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4352#[serde(rename_all = "camelCase")]
4353pub struct McpToolCallError {
4354 #[serde(default)]
4355 pub message: String,
4356}
4357
4358#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4359#[serde(rename_all = "camelCase")]
4360pub struct McpToolCallProgressNotification {
4361 #[serde(rename = "itemId", default)]
4362 pub item_id: String,
4363 #[serde(default)]
4364 pub message: String,
4365 #[serde(rename = "threadId", default)]
4366 pub thread_id: String,
4367 #[serde(rename = "turnId", default)]
4368 pub turn_id: String,
4369}
4370
4371#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4372#[serde(rename_all = "camelCase")]
4373pub struct McpToolCallResult {
4374 #[serde(default, skip_serializing_if = "Option::is_none")]
4375 pub _meta: Option<Value>,
4376 #[serde(default)]
4377 pub content: Vec<Value>,
4378 #[serde(
4379 rename = "structuredContent",
4380 default,
4381 skip_serializing_if = "Option::is_none"
4382 )]
4383 pub structured_content: Option<Value>,
4384}
4385
4386#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
4387pub enum McpToolCallStatus {
4388 #[serde(rename = "inProgress")]
4389 InProgress,
4390 #[serde(rename = "completed")]
4391 Completed,
4392 #[serde(rename = "failed")]
4393 Failed,
4394}
4395
4396#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4397#[serde(rename_all = "camelCase")]
4398pub struct MemoryCitation {
4399 #[serde(default)]
4400 pub entries: Vec<MemoryCitationEntry>,
4401 #[serde(rename = "threadIds", default)]
4402 pub thread_ids: Vec<String>,
4403}
4404
4405#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4406#[serde(rename_all = "camelCase")]
4407pub struct MemoryCitationEntry {
4408 #[serde(rename = "lineEnd", default)]
4409 pub line_end: i64,
4410 #[serde(rename = "lineStart", default)]
4411 pub line_start: i64,
4412 #[serde(default)]
4413 pub note: String,
4414 #[serde(default)]
4415 pub path: String,
4416}
4417
4418#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
4419pub enum MergeStrategy {
4420 #[serde(rename = "replace")]
4421 Replace,
4422 #[serde(rename = "upsert")]
4423 Upsert,
4424}
4425
4426#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)]
4427pub enum MessagePhase {
4428 #[serde(rename = "commentary")]
4429 Commentary,
4430 #[serde(rename = "final_answer")]
4431 FinalAnswer,
4432}
4433
4434#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4435#[serde(rename_all = "camelCase")]
4436pub struct MigrationDetails {
4437 #[serde(default, skip_serializing_if = "Option::is_none")]
4438 pub commands: Option<Vec<CommandMigration>>,
4439 #[serde(default, skip_serializing_if = "Option::is_none")]
4440 pub hooks: Option<Vec<HookMigration>>,
4441 #[serde(
4442 rename = "mcpServers",
4443 default,
4444 skip_serializing_if = "Option::is_none"
4445 )]
4446 pub mcp_servers: Option<Vec<McpServerMigration>>,
4447 #[serde(default, skip_serializing_if = "Option::is_none")]
4448 pub memory: Option<Vec<String>>,
4449 #[serde(default, skip_serializing_if = "Option::is_none")]
4450 pub plugins: Option<Vec<PluginsMigration>>,
4451 #[serde(default, skip_serializing_if = "Option::is_none")]
4452 pub sessions: Option<Vec<SessionMigration>>,
4453 #[serde(default, skip_serializing_if = "Option::is_none")]
4454 pub skills: Option<Vec<SkillMigration>>,
4455 #[serde(default, skip_serializing_if = "Option::is_none")]
4456 pub subagents: Option<Vec<SubagentMigration>>,
4457}
4458
4459#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4462#[serde(rename_all = "camelCase")]
4463pub struct MisalignmentErrorDetails {
4464 #[serde(
4465 rename = "detailedExplanation",
4466 default,
4467 skip_serializing_if = "Option::is_none"
4468 )]
4469 pub detailed_explanation: Option<String>,
4470 #[serde(rename = "errorType", default, skip_serializing_if = "Option::is_none")]
4472 pub error_type: Option<String>,
4473 #[serde(default, skip_serializing_if = "Option::is_none")]
4476 pub steer: Option<MisalignmentSteer>,
4477}
4478
4479#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4481#[serde(rename_all = "camelCase")]
4482pub struct MisalignmentSteer {
4483 #[serde(default)]
4484 pub message: String,
4485}
4486
4487#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
4488pub enum ModeKind {
4489 #[serde(rename = "plan")]
4490 Plan,
4491 #[serde(rename = "default")]
4492 Default,
4493}
4494
4495#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4496#[serde(rename_all = "camelCase")]
4497pub struct Model {
4498 #[serde(
4499 rename = "additionalSpeedTiers",
4500 default,
4501 skip_serializing_if = "Option::is_none"
4502 )]
4503 pub additional_speed_tiers: Option<Vec<String>>,
4504 #[serde(
4505 rename = "availabilityNux",
4506 default,
4507 skip_serializing_if = "Option::is_none"
4508 )]
4509 pub availability_nux: Option<ModelAvailabilityNux>,
4510 #[serde(rename = "defaultReasoningEffort")]
4511 pub default_reasoning_effort: ReasoningEffort,
4512 #[serde(
4513 rename = "defaultServiceTier",
4514 default,
4515 skip_serializing_if = "Option::is_none"
4516 )]
4517 pub default_service_tier: Option<String>,
4518 #[serde(default)]
4519 pub description: String,
4520 #[serde(rename = "displayName", default)]
4521 pub display_name: String,
4522 #[serde(default)]
4523 pub hidden: bool,
4524 #[serde(default)]
4525 pub id: String,
4526 #[serde(
4527 rename = "inputModalities",
4528 default,
4529 skip_serializing_if = "Option::is_none"
4530 )]
4531 pub input_modalities: Option<Vec<InputModality>>,
4532 #[serde(rename = "isDefault", default)]
4533 pub is_default: bool,
4534 #[serde(default)]
4535 pub model: String,
4536 #[serde(
4537 rename = "modelSpecialty",
4538 default,
4539 skip_serializing_if = "Option::is_none"
4540 )]
4541 pub model_specialty: Option<String>,
4542 #[serde(
4543 rename = "multiAgentVersion",
4544 default,
4545 skip_serializing_if = "Option::is_none"
4546 )]
4547 pub multi_agent_version: Option<MultiAgentVersion>,
4548 #[serde(
4549 rename = "serviceTiers",
4550 default,
4551 skip_serializing_if = "Option::is_none"
4552 )]
4553 pub service_tiers: Option<Vec<ModelServiceTier>>,
4554 #[serde(rename = "supportedReasoningEfforts", default)]
4555 pub supported_reasoning_efforts: Vec<ReasoningEffortOption>,
4556 #[serde(
4557 rename = "supportsPersonality",
4558 default,
4559 skip_serializing_if = "Option::is_none"
4560 )]
4561 pub supports_personality: Option<bool>,
4562 #[serde(default, skip_serializing_if = "Option::is_none")]
4563 pub upgrade: Option<String>,
4564 #[serde(
4565 rename = "upgradeInfo",
4566 default,
4567 skip_serializing_if = "Option::is_none"
4568 )]
4569 pub upgrade_info: Option<ModelUpgradeInfo>,
4570}
4571
4572#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4573#[serde(rename_all = "camelCase")]
4574pub struct ModelAvailabilityNux {
4575 #[serde(default)]
4576 pub message: String,
4577}
4578
4579#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4580#[serde(rename_all = "camelCase")]
4581pub struct ModelListParams {
4582 #[serde(default, skip_serializing_if = "Option::is_none")]
4583 pub cursor: Option<String>,
4584 #[serde(
4585 rename = "includeHidden",
4586 default,
4587 skip_serializing_if = "Option::is_none"
4588 )]
4589 pub include_hidden: Option<bool>,
4590 #[serde(default, skip_serializing_if = "Option::is_none")]
4591 pub limit: Option<i64>,
4592}
4593
4594#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4595#[serde(rename_all = "camelCase")]
4596pub struct ModelListResponse {
4597 #[serde(default)]
4598 pub data: Vec<Model>,
4599 #[serde(
4600 rename = "nextCursor",
4601 default,
4602 skip_serializing_if = "Option::is_none"
4603 )]
4604 pub next_cursor: Option<String>,
4605}
4606
4607#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4608#[serde(rename_all = "camelCase")]
4609pub struct ModelProviderCapabilitiesReadParams {
4610 #[serde(flatten, default, skip_serializing_if = "serde_json::Map::is_empty")]
4611 pub extra: serde_json::Map<String, Value>,
4612}
4613
4614#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4615#[serde(rename_all = "camelCase")]
4616pub struct ModelProviderCapabilitiesReadResponse {
4617 #[serde(rename = "imageGeneration", default)]
4618 pub image_generation: bool,
4619 #[serde(rename = "namespaceTools", default)]
4620 pub namespace_tools: bool,
4621 #[serde(rename = "webSearch", default)]
4622 pub web_search: bool,
4623}
4624
4625#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
4626pub enum ModelRerouteReason {
4627 #[serde(rename = "highRiskCyberActivity")]
4628 HighRiskCyberActivity,
4629}
4630
4631#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4632#[serde(rename_all = "camelCase")]
4633pub struct ModelReroutedNotification {
4634 #[serde(rename = "fromModel", default)]
4635 pub from_model: String,
4636 #[serde()]
4637 pub reason: ModelRerouteReason,
4638 #[serde(rename = "threadId", default)]
4639 pub thread_id: String,
4640 #[serde(rename = "toModel", default)]
4641 pub to_model: String,
4642 #[serde(rename = "turnId", default)]
4643 pub turn_id: String,
4644}
4645
4646#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4647#[serde(rename_all = "camelCase")]
4648pub struct ModelSafetyBufferingUpdatedNotification {
4649 #[serde(
4650 rename = "fasterModel",
4651 default,
4652 skip_serializing_if = "Option::is_none"
4653 )]
4654 pub faster_model: Option<String>,
4655 #[serde(default)]
4656 pub model: String,
4657 #[serde(default)]
4658 pub reasons: Vec<String>,
4659 #[serde(rename = "showBufferingUi", default)]
4660 pub show_buffering_ui: bool,
4661 #[serde(rename = "threadId", default)]
4662 pub thread_id: String,
4663 #[serde(rename = "turnId", default)]
4664 pub turn_id: String,
4665 #[serde(rename = "useCases", default)]
4666 pub use_cases: Vec<String>,
4667}
4668
4669#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4670#[serde(rename_all = "camelCase")]
4671pub struct ModelServiceTier {
4672 #[serde(default)]
4673 pub description: String,
4674 #[serde(default)]
4675 pub id: String,
4676 #[serde(default)]
4677 pub name: String,
4678}
4679
4680#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4681#[serde(rename_all = "camelCase")]
4682pub struct ModelUpgradeInfo {
4683 #[serde(
4684 rename = "migrationMarkdown",
4685 default,
4686 skip_serializing_if = "Option::is_none"
4687 )]
4688 pub migration_markdown: Option<String>,
4689 #[serde(default)]
4690 pub model: String,
4691 #[serde(
4694 rename = "retirementAt",
4695 default,
4696 skip_serializing_if = "Option::is_none"
4697 )]
4698 pub retirement_at: Option<i64>,
4699 #[serde(rename = "modelLink", default, skip_serializing_if = "Option::is_none")]
4700 pub model_link: Option<String>,
4701 #[serde(
4702 rename = "upgradeCopy",
4703 default,
4704 skip_serializing_if = "Option::is_none"
4705 )]
4706 pub upgrade_copy: Option<String>,
4707}
4708
4709#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
4710pub enum ModelVerification {
4711 #[serde(rename = "trustedAccessForCyber")]
4712 TrustedAccessForCyber,
4713}
4714
4715#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4716#[serde(rename_all = "camelCase")]
4717pub struct ModelVerificationNotification {
4718 #[serde(rename = "threadId", default)]
4719 pub thread_id: String,
4720 #[serde(rename = "turnId", default)]
4721 pub turn_id: String,
4722 #[serde(default)]
4723 pub verifications: Vec<ModelVerification>,
4724}
4725
4726#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4727#[serde(rename_all = "camelCase")]
4728pub struct ModelsRequirements {
4729 #[serde(rename = "newThread", default, skip_serializing_if = "Option::is_none")]
4730 pub new_thread: Option<NewThreadModelDefaults>,
4731}
4732
4733#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
4734pub enum MultiAgentVersion {
4735 #[serde(rename = "disabled")]
4736 Disabled,
4737 #[serde(rename = "v1")]
4738 V1,
4739 #[serde(rename = "v2")]
4740 V2,
4741}
4742
4743#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
4744pub enum NetworkAccess {
4745 #[serde(rename = "restricted")]
4746 Restricted,
4747 #[serde(rename = "enabled")]
4748 Enabled,
4749}
4750
4751#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4752#[serde(rename_all = "camelCase")]
4753pub struct NetworkApprovalContext {
4754 #[serde(default)]
4755 pub host: String,
4756 #[serde()]
4757 pub protocol: NetworkApprovalProtocol,
4758}
4759
4760#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
4761pub enum NetworkApprovalProtocol {
4762 #[serde(rename = "http")]
4763 Http,
4764 #[serde(rename = "https")]
4765 Https,
4766 #[serde(rename = "socks5Tcp")]
4767 Socks5Tcp,
4768 #[serde(rename = "socks5Udp")]
4769 Socks5Udp,
4770}
4771
4772#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4773#[serde(rename_all = "camelCase")]
4774pub struct NetworkPolicyAmendment {
4775 #[serde()]
4776 pub action: NetworkPolicyRuleAction,
4777 #[serde(default)]
4778 pub host: String,
4779}
4780
4781#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
4782pub enum NetworkPolicyRuleAction {
4783 #[serde(rename = "allow")]
4784 Allow,
4785 #[serde(rename = "deny")]
4786 Deny,
4787}
4788
4789#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4790#[serde(rename_all = "camelCase")]
4791pub struct NewThreadModelDefaults {
4792 #[serde(default, skip_serializing_if = "Option::is_none")]
4793 pub model: Option<String>,
4794 #[serde(
4795 rename = "modelReasoningEffort",
4796 default,
4797 skip_serializing_if = "Option::is_none"
4798 )]
4799 pub model_reasoning_effort: Option<ReasoningEffort>,
4800 #[serde(
4801 rename = "serviceTier",
4802 default,
4803 skip_serializing_if = "Option::is_none"
4804 )]
4805 pub service_tier: Option<String>,
4806}
4807
4808#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
4809pub enum NonSteerableTurnKind {
4810 #[serde(rename = "review")]
4811 Review,
4812 #[serde(rename = "compact")]
4813 Compact,
4814}
4815
4816#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4817#[serde(rename_all = "camelCase")]
4818pub struct OverriddenMetadata {
4819 #[serde(rename = "effectiveValue", default)]
4820 pub effective_value: Value,
4821 #[serde(default)]
4822 pub message: String,
4823 #[serde(rename = "overridingLayer")]
4824 pub overriding_layer: ConfigLayerMetadata,
4825}
4826
4827#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4828#[serde(tag = "type", rename_all = "camelCase")]
4829pub enum ParsedCommand {
4830 Read {
4831 cmd: String,
4832 name: String,
4833 path: String,
4834 },
4835 List_files {
4836 cmd: String,
4837 #[serde(default, skip_serializing_if = "Option::is_none")]
4838 path: Option<String>,
4839 },
4840 Search {
4841 cmd: String,
4842 #[serde(default, skip_serializing_if = "Option::is_none")]
4843 path: Option<String>,
4844 #[serde(default, skip_serializing_if = "Option::is_none")]
4845 query: Option<String>,
4846 },
4847 Unknown {
4848 cmd: String,
4849 },
4850}
4851
4852#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
4853pub enum PatchApplyStatus {
4854 #[serde(rename = "inProgress")]
4855 InProgress,
4856 #[serde(rename = "completed")]
4857 Completed,
4858 #[serde(rename = "failed")]
4859 Failed,
4860 #[serde(rename = "declined")]
4861 Declined,
4862}
4863
4864#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4865#[serde(tag = "type", rename_all = "camelCase")]
4866pub enum PatchChangeKind {
4867 Add,
4868 Delete,
4869 Update {
4870 #[serde(default, skip_serializing_if = "Option::is_none")]
4871 move_path: Option<String>,
4872 },
4873}
4874
4875#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
4876pub enum PermissionGrantScope {
4877 #[serde(rename = "turn")]
4878 Turn,
4879 #[serde(rename = "session")]
4880 Session,
4881}
4882
4883#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4884#[serde(rename_all = "camelCase")]
4885pub struct PermissionProfileListParams {
4886 #[serde(default, skip_serializing_if = "Option::is_none")]
4887 pub cursor: Option<String>,
4888 #[serde(default, skip_serializing_if = "Option::is_none")]
4889 pub cwd: Option<String>,
4890 #[serde(default, skip_serializing_if = "Option::is_none")]
4891 pub limit: Option<i64>,
4892}
4893
4894#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4895#[serde(rename_all = "camelCase")]
4896pub struct PermissionProfileListResponse {
4897 #[serde(default)]
4898 pub data: Vec<PermissionProfileSummary>,
4899 #[serde(
4900 rename = "nextCursor",
4901 default,
4902 skip_serializing_if = "Option::is_none"
4903 )]
4904 pub next_cursor: Option<String>,
4905}
4906
4907#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4908#[serde(rename_all = "camelCase")]
4909pub struct PermissionProfileSummary {
4910 #[serde(default)]
4911 pub allowed: bool,
4912 #[serde(default, skip_serializing_if = "Option::is_none")]
4913 pub description: Option<String>,
4914 #[serde(default)]
4915 pub id: String,
4916}
4917
4918#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4919#[serde(rename_all = "camelCase")]
4920pub struct PermissionsRequestApprovalParams {
4921 #[serde()]
4922 pub cwd: LegacyAppPathString,
4923 #[serde(
4924 rename = "environmentId",
4925 default,
4926 skip_serializing_if = "Option::is_none"
4927 )]
4928 pub environment_id: Option<String>,
4929 #[serde(rename = "itemId", default)]
4930 pub item_id: String,
4931 #[serde()]
4932 pub permissions: RequestPermissionProfile,
4933 #[serde(default, skip_serializing_if = "Option::is_none")]
4934 pub reason: Option<String>,
4935 #[serde(rename = "startedAtMs", default)]
4936 pub started_at_ms: i64,
4937 #[serde(rename = "threadId", default)]
4938 pub thread_id: String,
4939 #[serde(rename = "turnId", default)]
4940 pub turn_id: String,
4941}
4942
4943#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
4944#[serde(rename_all = "camelCase")]
4945pub struct PermissionsRequestApprovalResponse {
4946 #[serde()]
4947 pub permissions: GrantedPermissionProfile,
4948 #[serde(default, skip_serializing_if = "Option::is_none")]
4949 pub scope: Option<Value>,
4950 #[serde(
4951 rename = "strictAutoReview",
4952 default,
4953 skip_serializing_if = "Option::is_none"
4954 )]
4955 pub strict_auto_review: Option<bool>,
4956}
4957
4958#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
4959pub enum Personality {
4960 #[serde(rename = "none")]
4961 None,
4962 #[serde(rename = "friendly")]
4963 Friendly,
4964 #[serde(rename = "pragmatic")]
4965 Pragmatic,
4966}
4967
4968#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
4969#[serde(rename_all = "camelCase")]
4970pub struct PlanDeltaNotification {
4971 #[serde(default)]
4972 pub delta: String,
4973 #[serde(rename = "itemId", default)]
4974 pub item_id: String,
4975 #[serde(rename = "threadId", default)]
4976 pub thread_id: String,
4977 #[serde(rename = "turnId", default)]
4978 pub turn_id: String,
4979}
4980
4981#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
4982pub enum PlanType {
4983 #[serde(rename = "free")]
4984 Free,
4985 #[serde(rename = "go")]
4986 Go,
4987 #[serde(rename = "plus")]
4988 Plus,
4989 #[serde(rename = "pro")]
4990 Pro,
4991 #[serde(rename = "prolite")]
4992 Prolite,
4993 #[serde(rename = "edu_plus")]
4994 Edu_plus,
4995 #[serde(rename = "edu_pro")]
4996 Edu_pro,
4997 #[serde(rename = "team")]
4998 Team,
4999 #[serde(rename = "self_serve_business_prolite")]
5000 Self_serve_business_prolite,
5001 #[serde(rename = "self_serve_business_usage_based")]
5002 Self_serve_business_usage_based,
5003 #[serde(rename = "business")]
5004 Business,
5005 #[serde(rename = "ent26")]
5006 Ent26,
5007 #[serde(rename = "enterprise_cbp_automation")]
5008 Enterprise_cbp_automation,
5009 #[serde(rename = "enterprise_cbp_usage_based")]
5010 Enterprise_cbp_usage_based,
5011 #[serde(rename = "enterprise")]
5012 Enterprise,
5013 #[serde(rename = "edu")]
5014 Edu,
5015 #[serde(rename = "unknown")]
5016 Unknown,
5017}
5018
5019#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
5020pub enum PluginAuthPolicy {
5021 #[serde(rename = "ON_INSTALL")]
5022 ON_INSTALL,
5023 #[serde(rename = "ON_USE")]
5024 ON_USE,
5025}
5026
5027#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)]
5028pub enum PluginAvailability {
5029 #[serde(rename = "DISABLED_BY_ADMIN")]
5030 DISABLEDBYADMIN,
5031 AVAILABLE,
5032}
5033
5034#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5035#[serde(rename_all = "camelCase")]
5036pub struct PluginDetail {
5037 #[serde(rename = "appTemplates", default)]
5038 pub app_templates: Vec<AppTemplateSummary>,
5039 #[serde(default)]
5040 pub apps: Vec<AppSummary>,
5041 #[serde(default, skip_serializing_if = "Option::is_none")]
5042 pub description: Option<String>,
5043 #[serde(default)]
5044 pub hooks: Vec<PluginHookSummary>,
5045 #[serde(rename = "marketplaceName", default)]
5046 pub marketplace_name: String,
5047 #[serde(
5048 rename = "marketplacePath",
5049 default,
5050 skip_serializing_if = "Option::is_none"
5051 )]
5052 pub marketplace_path: Option<AbsolutePathBuf>,
5053 #[serde(rename = "mcpServers", default)]
5054 pub mcp_servers: Vec<String>,
5055 #[serde(
5056 rename = "scheduledTasks",
5057 default,
5058 skip_serializing_if = "Option::is_none"
5059 )]
5060 pub scheduled_tasks: Option<Vec<ScheduledTaskSummary>>,
5061 #[serde(rename = "shareUrl", default, skip_serializing_if = "Option::is_none")]
5062 pub share_url: Option<String>,
5063 #[serde(default)]
5064 pub skills: Vec<SkillSummary>,
5065 #[serde()]
5066 pub summary: PluginSummary,
5067}
5068
5069#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
5070pub enum PluginDisabledReason {
5071 #[serde(rename = "disabled_by_admin")]
5072 Disabled_by_admin,
5073 #[serde(rename = "plan_not_eligible")]
5074 Plan_not_eligible,
5075 #[serde(rename = "required_app_unavailable")]
5076 Required_app_unavailable,
5077 #[serde(rename = "unknown")]
5078 Unknown,
5079}
5080
5081#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5082#[serde(rename_all = "camelCase")]
5083pub struct PluginHookSummary {
5084 #[serde(rename = "eventName")]
5085 pub event_name: HookEventName,
5086 #[serde(default)]
5087 pub key: String,
5088}
5089
5090#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5091#[serde(rename_all = "camelCase")]
5092pub struct PluginInstallParams {
5093 #[serde(
5094 rename = "installAttemptId",
5095 default,
5096 skip_serializing_if = "Option::is_none"
5097 )]
5098 pub install_attempt_id: Option<String>,
5099 #[serde(
5100 rename = "marketplacePath",
5101 default,
5102 skip_serializing_if = "Option::is_none"
5103 )]
5104 pub marketplace_path: Option<AbsolutePathBuf>,
5105 #[serde(rename = "pluginName", default)]
5106 pub plugin_name: String,
5107 #[serde(
5108 rename = "remoteMarketplaceName",
5109 default,
5110 skip_serializing_if = "Option::is_none"
5111 )]
5112 pub remote_marketplace_name: Option<String>,
5113}
5114
5115#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
5116pub enum PluginInstallPolicy {
5117 #[serde(rename = "NOT_AVAILABLE")]
5118 NOT_AVAILABLE,
5119 #[serde(rename = "AVAILABLE")]
5120 AVAILABLE,
5121 #[serde(rename = "INSTALLED_BY_DEFAULT")]
5122 INSTALLED_BY_DEFAULT,
5123}
5124
5125#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
5126pub enum PluginInstallPolicySource {
5127 #[serde(rename = "WORKSPACE_SETTING")]
5128 WORKSPACE_SETTING,
5129 #[serde(rename = "IMPLICIT_CANONICAL_APP")]
5130 IMPLICIT_CANONICAL_APP,
5131}
5132
5133#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5134#[serde(rename_all = "camelCase")]
5135pub struct PluginInstallResponse {
5136 #[serde(rename = "appsNeedingAuth", default)]
5137 pub apps_needing_auth: Vec<AppSummary>,
5138 #[serde(rename = "authPolicy")]
5139 pub auth_policy: PluginAuthPolicy,
5140}
5141
5142#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5143#[serde(rename_all = "camelCase")]
5144pub struct PluginInstalledParams {
5145 #[serde(default, skip_serializing_if = "Option::is_none")]
5146 pub cwds: Option<Vec<AbsolutePathBuf>>,
5147 #[serde(
5148 rename = "installSuggestionPluginNames",
5149 default,
5150 skip_serializing_if = "Option::is_none"
5151 )]
5152 pub install_suggestion_plugin_names: Option<Vec<String>>,
5153}
5154
5155#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5156#[serde(rename_all = "camelCase")]
5157pub struct PluginInstalledResponse {
5158 #[serde(
5159 rename = "marketplaceLoadErrors",
5160 default,
5161 skip_serializing_if = "Option::is_none"
5162 )]
5163 pub marketplace_load_errors: Option<Vec<MarketplaceLoadErrorInfo>>,
5164 #[serde(default)]
5165 pub marketplaces: Vec<PluginMarketplaceEntry>,
5166}
5167
5168#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5169#[serde(rename_all = "camelCase")]
5170pub struct PluginInterface {
5171 #[serde(
5172 rename = "brandColor",
5173 default,
5174 skip_serializing_if = "Option::is_none"
5175 )]
5176 pub brand_color: Option<String>,
5177 #[serde(default)]
5178 pub capabilities: Vec<String>,
5179 #[serde(default, skip_serializing_if = "Option::is_none")]
5180 pub category: Option<String>,
5181 #[serde(
5182 rename = "composerIcon",
5183 default,
5184 skip_serializing_if = "Option::is_none"
5185 )]
5186 pub composer_icon: Option<AbsolutePathBuf>,
5187 #[serde(
5188 rename = "composerIconUrl",
5189 default,
5190 skip_serializing_if = "Option::is_none"
5191 )]
5192 pub composer_icon_url: Option<String>,
5193 #[serde(
5194 rename = "defaultPrompt",
5195 default,
5196 skip_serializing_if = "Option::is_none"
5197 )]
5198 pub default_prompt: Option<Vec<String>>,
5199 #[serde(
5200 rename = "developerName",
5201 default,
5202 skip_serializing_if = "Option::is_none"
5203 )]
5204 pub developer_name: Option<String>,
5205 #[serde(
5206 rename = "displayName",
5207 default,
5208 skip_serializing_if = "Option::is_none"
5209 )]
5210 pub display_name: Option<String>,
5211 #[serde(default, skip_serializing_if = "Option::is_none")]
5212 pub logo: Option<AbsolutePathBuf>,
5213 #[serde(rename = "logoDark", default, skip_serializing_if = "Option::is_none")]
5214 pub logo_dark: Option<AbsolutePathBuf>,
5215 #[serde(rename = "logoUrl", default, skip_serializing_if = "Option::is_none")]
5216 pub logo_url: Option<String>,
5217 #[serde(
5218 rename = "logoUrlDark",
5219 default,
5220 skip_serializing_if = "Option::is_none"
5221 )]
5222 pub logo_url_dark: Option<String>,
5223 #[serde(
5224 rename = "longDescription",
5225 default,
5226 skip_serializing_if = "Option::is_none"
5227 )]
5228 pub long_description: Option<String>,
5229 #[serde(
5230 rename = "privacyPolicyUrl",
5231 default,
5232 skip_serializing_if = "Option::is_none"
5233 )]
5234 pub privacy_policy_url: Option<String>,
5235 #[serde(rename = "screenshotUrls", default)]
5236 pub screenshot_urls: Vec<String>,
5237 #[serde(default)]
5238 pub screenshots: Vec<AbsolutePathBuf>,
5239 #[serde(
5240 rename = "shortDescription",
5241 default,
5242 skip_serializing_if = "Option::is_none"
5243 )]
5244 pub short_description: Option<String>,
5245 #[serde(
5246 rename = "termsOfServiceUrl",
5247 default,
5248 skip_serializing_if = "Option::is_none"
5249 )]
5250 pub terms_of_service_url: Option<String>,
5251 #[serde(
5252 rename = "websiteUrl",
5253 default,
5254 skip_serializing_if = "Option::is_none"
5255 )]
5256 pub website_url: Option<String>,
5257}
5258
5259#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
5260pub enum PluginListMarketplaceKind {
5261 #[serde(rename = "local")]
5262 Local,
5263 #[serde(rename = "vertical")]
5264 Vertical,
5265 #[serde(rename = "workspace-directory")]
5266 Workspace_directory,
5267 #[serde(rename = "shared-with-me")]
5268 Shared_with_me,
5269 #[serde(rename = "created-by-me-remote")]
5270 Created_by_me_remote,
5271}
5272
5273#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5274#[serde(rename_all = "camelCase")]
5275pub struct PluginListParams {
5276 #[serde(default, skip_serializing_if = "Option::is_none")]
5277 pub cwds: Option<Vec<AbsolutePathBuf>>,
5278 #[serde(
5279 rename = "forceRefetch",
5280 default,
5281 skip_serializing_if = "Option::is_none"
5282 )]
5283 pub force_refetch: Option<bool>,
5284 #[serde(
5285 rename = "marketplaceKinds",
5286 default,
5287 skip_serializing_if = "Option::is_none"
5288 )]
5289 pub marketplace_kinds: Option<Vec<PluginListMarketplaceKind>>,
5290}
5291
5292#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5293#[serde(rename_all = "camelCase")]
5294pub struct PluginListResponse {
5295 #[serde(
5296 rename = "featuredPluginIds",
5297 default,
5298 skip_serializing_if = "Option::is_none"
5299 )]
5300 pub featured_plugin_ids: Option<Vec<String>>,
5301 #[serde(
5302 rename = "marketplaceLoadErrors",
5303 default,
5304 skip_serializing_if = "Option::is_none"
5305 )]
5306 pub marketplace_load_errors: Option<Vec<MarketplaceLoadErrorInfo>>,
5307 #[serde(default)]
5308 pub marketplaces: Vec<PluginMarketplaceEntry>,
5309}
5310
5311#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5312#[serde(rename_all = "camelCase")]
5313pub struct PluginMarketplaceEntry {
5314 #[serde(default, skip_serializing_if = "Option::is_none")]
5315 pub interface: Option<MarketplaceInterface>,
5316 #[serde(default)]
5317 pub name: String,
5318 #[serde(default, skip_serializing_if = "Option::is_none")]
5319 pub path: Option<AbsolutePathBuf>,
5320 #[serde(default)]
5321 pub plugins: Vec<PluginSummary>,
5322}
5323
5324#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5325#[serde(rename_all = "camelCase")]
5326pub struct PluginReadParams {
5327 #[serde(
5328 rename = "marketplacePath",
5329 default,
5330 skip_serializing_if = "Option::is_none"
5331 )]
5332 pub marketplace_path: Option<AbsolutePathBuf>,
5333 #[serde(rename = "pluginName", default)]
5334 pub plugin_name: String,
5335 #[serde(
5336 rename = "remoteMarketplaceName",
5337 default,
5338 skip_serializing_if = "Option::is_none"
5339 )]
5340 pub remote_marketplace_name: Option<String>,
5341}
5342
5343#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5344#[serde(rename_all = "camelCase")]
5345pub struct PluginReadResponse {
5346 #[serde()]
5347 pub plugin: PluginDetail,
5348}
5349
5350#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5356#[serde(rename_all = "camelCase")]
5357pub struct PluginReconcileChangedPlugin {
5358 #[serde(rename = "hasApps", default)]
5359 pub has_apps: bool,
5360 #[serde(rename = "hasHooks", default)]
5361 pub has_hooks: bool,
5362 #[serde(rename = "hasMcps", default)]
5363 pub has_mcps: bool,
5364 #[serde(rename = "hasSkills", default)]
5367 pub has_skills: bool,
5368 #[serde(default)]
5370 pub id: String,
5371}
5372
5373#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5374#[serde(rename_all = "camelCase")]
5375pub struct PluginReconcileParams {
5376 #[serde(default, skip_serializing_if = "Option::is_none")]
5379 pub reason: Option<String>,
5380}
5381
5382#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5386#[serde(rename_all = "camelCase")]
5387pub struct PluginReconcileResponse {
5388 #[serde(rename = "changedPlugins", default)]
5393 pub changed_plugins: Vec<PluginReconcileChangedPlugin>,
5394 #[serde(rename = "failedMaterializationRemotePluginIds", default)]
5397 pub failed_materialization_remote_plugin_ids: Vec<String>,
5398 #[serde(rename = "failedRemotePluginIds", default)]
5400 pub failed_remote_plugin_ids: Vec<String>,
5401}
5402
5403#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5404#[serde(rename_all = "camelCase")]
5405pub struct PluginShareCheckoutParams {
5406 #[serde(rename = "remotePluginId", default)]
5407 pub remote_plugin_id: String,
5408}
5409
5410#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5411#[serde(rename_all = "camelCase")]
5412pub struct PluginShareCheckoutResponse {
5413 #[serde(rename = "marketplaceName", default)]
5414 pub marketplace_name: String,
5415 #[serde(rename = "marketplacePath")]
5416 pub marketplace_path: AbsolutePathBuf,
5417 #[serde(rename = "pluginId", default)]
5418 pub plugin_id: String,
5419 #[serde(rename = "pluginName", default)]
5420 pub plugin_name: String,
5421 #[serde(rename = "pluginPath")]
5422 pub plugin_path: AbsolutePathBuf,
5423 #[serde(rename = "remotePluginId", default)]
5424 pub remote_plugin_id: String,
5425 #[serde(
5426 rename = "remoteVersion",
5427 default,
5428 skip_serializing_if = "Option::is_none"
5429 )]
5430 pub remote_version: Option<String>,
5431}
5432
5433#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5434#[serde(rename_all = "camelCase")]
5435pub struct PluginShareContext {
5436 #[serde(
5437 rename = "canPublishToWorkspace",
5438 default,
5439 skip_serializing_if = "Option::is_none"
5440 )]
5441 pub can_publish_to_workspace: Option<bool>,
5442 #[serde(
5443 rename = "creatorAccountUserId",
5444 default,
5445 skip_serializing_if = "Option::is_none"
5446 )]
5447 pub creator_account_user_id: Option<String>,
5448 #[serde(
5449 rename = "creatorName",
5450 default,
5451 skip_serializing_if = "Option::is_none"
5452 )]
5453 pub creator_name: Option<String>,
5454 #[serde(default, skip_serializing_if = "Option::is_none")]
5455 pub discoverability: Option<PluginShareDiscoverability>,
5456 #[serde(rename = "remotePluginId", default)]
5457 pub remote_plugin_id: String,
5458 #[serde(
5459 rename = "remoteVersion",
5460 default,
5461 skip_serializing_if = "Option::is_none"
5462 )]
5463 pub remote_version: Option<String>,
5464 #[serde(
5465 rename = "sharePrincipals",
5466 default,
5467 skip_serializing_if = "Option::is_none"
5468 )]
5469 pub share_principals: Option<Vec<PluginSharePrincipal>>,
5470 #[serde(rename = "shareUrl", default, skip_serializing_if = "Option::is_none")]
5471 pub share_url: Option<String>,
5472}
5473
5474#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5475#[serde(rename_all = "camelCase")]
5476pub struct PluginShareDeleteParams {
5477 #[serde(rename = "remotePluginId", default)]
5478 pub remote_plugin_id: String,
5479}
5480
5481#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5482#[serde(rename_all = "camelCase")]
5483pub struct PluginShareDeleteResponse {
5484 #[serde(flatten, default, skip_serializing_if = "serde_json::Map::is_empty")]
5485 pub extra: serde_json::Map<String, Value>,
5486}
5487
5488#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
5489pub enum PluginShareDiscoverability {
5490 #[serde(rename = "LISTED")]
5491 LISTED,
5492 #[serde(rename = "UNLISTED")]
5493 UNLISTED,
5494 #[serde(rename = "PRIVATE")]
5495 PRIVATE,
5496}
5497
5498#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5499#[serde(rename_all = "camelCase")]
5500pub struct PluginShareListItem {
5501 #[serde(
5502 rename = "localPluginPath",
5503 default,
5504 skip_serializing_if = "Option::is_none"
5505 )]
5506 pub local_plugin_path: Option<AbsolutePathBuf>,
5507 #[serde()]
5508 pub plugin: PluginSummary,
5509}
5510
5511#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5512#[serde(rename_all = "camelCase")]
5513pub struct PluginShareListParams {
5514 #[serde(flatten, default, skip_serializing_if = "serde_json::Map::is_empty")]
5515 pub extra: serde_json::Map<String, Value>,
5516}
5517
5518#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5519#[serde(rename_all = "camelCase")]
5520pub struct PluginShareListResponse {
5521 #[serde(default)]
5522 pub data: Vec<PluginShareListItem>,
5523}
5524
5525#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5526#[serde(rename_all = "camelCase")]
5527pub struct PluginSharePrincipal {
5528 #[serde(default)]
5529 pub name: String,
5530 #[serde(rename = "principalId", default)]
5531 pub principal_id: String,
5532 #[serde(rename = "principalType")]
5533 pub principal_type: PluginSharePrincipalType,
5534 #[serde()]
5535 pub role: PluginSharePrincipalRole,
5536}
5537
5538#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
5539pub enum PluginSharePrincipalRole {
5540 #[serde(rename = "reader")]
5541 Reader,
5542 #[serde(rename = "editor")]
5543 Editor,
5544 #[serde(rename = "owner")]
5545 Owner,
5546}
5547
5548#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
5549pub enum PluginSharePrincipalType {
5550 #[serde(rename = "user")]
5551 User,
5552 #[serde(rename = "group")]
5553 Group,
5554 #[serde(rename = "workspace")]
5555 Workspace,
5556}
5557
5558#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5559#[serde(rename_all = "camelCase")]
5560pub struct PluginShareSaveParams {
5561 #[serde(default, skip_serializing_if = "Option::is_none")]
5562 pub discoverability: Option<PluginShareDiscoverability>,
5563 #[serde(rename = "pluginPath")]
5564 pub plugin_path: AbsolutePathBuf,
5565 #[serde(
5566 rename = "remotePluginId",
5567 default,
5568 skip_serializing_if = "Option::is_none"
5569 )]
5570 pub remote_plugin_id: Option<String>,
5571 #[serde(
5572 rename = "shareTargets",
5573 default,
5574 skip_serializing_if = "Option::is_none"
5575 )]
5576 pub share_targets: Option<Vec<PluginShareTarget>>,
5577}
5578
5579#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5580#[serde(rename_all = "camelCase")]
5581pub struct PluginShareSaveResponse {
5582 #[serde(
5583 rename = "canPublishToWorkspace",
5584 default,
5585 skip_serializing_if = "Option::is_none"
5586 )]
5587 pub can_publish_to_workspace: Option<bool>,
5588 #[serde(rename = "remotePluginId", default)]
5589 pub remote_plugin_id: String,
5590 #[serde(rename = "shareUrl", default)]
5591 pub share_url: String,
5592}
5593
5594#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5595#[serde(rename_all = "camelCase")]
5596pub struct PluginShareTarget {
5597 #[serde(rename = "principalId", default)]
5598 pub principal_id: String,
5599 #[serde(rename = "principalType")]
5600 pub principal_type: PluginSharePrincipalType,
5601 #[serde()]
5602 pub role: PluginShareTargetRole,
5603}
5604
5605#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
5606pub enum PluginShareTargetRole {
5607 #[serde(rename = "reader")]
5608 Reader,
5609 #[serde(rename = "editor")]
5610 Editor,
5611}
5612
5613#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
5614pub enum PluginShareUpdateDiscoverability {
5615 #[serde(rename = "UNLISTED")]
5616 UNLISTED,
5617 #[serde(rename = "PRIVATE")]
5618 PRIVATE,
5619 #[serde(rename = "LISTED")]
5620 LISTED,
5621}
5622
5623#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5624#[serde(rename_all = "camelCase")]
5625pub struct PluginShareUpdateTargetsParams {
5626 #[serde()]
5627 pub discoverability: PluginShareUpdateDiscoverability,
5628 #[serde(rename = "remotePluginId", default)]
5629 pub remote_plugin_id: String,
5630 #[serde(rename = "shareTargets", default)]
5631 pub share_targets: Vec<PluginShareTarget>,
5632}
5633
5634#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5635#[serde(rename_all = "camelCase")]
5636pub struct PluginShareUpdateTargetsResponse {
5637 #[serde()]
5638 pub discoverability: PluginShareDiscoverability,
5639 #[serde(default)]
5640 pub principals: Vec<PluginSharePrincipal>,
5641}
5642
5643#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5644#[serde(rename_all = "camelCase")]
5645pub struct PluginSkillReadParams {
5646 #[serde(rename = "remoteMarketplaceName", default)]
5647 pub remote_marketplace_name: String,
5648 #[serde(rename = "remotePluginId", default)]
5649 pub remote_plugin_id: String,
5650 #[serde(rename = "skillName", default)]
5651 pub skill_name: String,
5652}
5653
5654#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5655#[serde(rename_all = "camelCase")]
5656pub struct PluginSkillReadResponse {
5657 #[serde(default, skip_serializing_if = "Option::is_none")]
5658 pub contents: Option<String>,
5659}
5660
5661#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5662#[serde(tag = "type", rename_all = "camelCase")]
5663pub enum PluginSource {
5664 Local {
5665 path: AbsolutePathBuf,
5666 },
5667 Git {
5668 #[serde(default, skip_serializing_if = "Option::is_none")]
5669 path: Option<String>,
5670 #[serde(rename = "refName", default, skip_serializing_if = "Option::is_none")]
5671 ref_name: Option<String>,
5672 #[serde(default, skip_serializing_if = "Option::is_none")]
5673 sha: Option<String>,
5674 url: String,
5675 },
5676 Npm {
5677 package: String,
5678 #[serde(default, skip_serializing_if = "Option::is_none")]
5679 registry: Option<String>,
5680 #[serde(default, skip_serializing_if = "Option::is_none")]
5681 version: Option<String>,
5682 },
5683 Remote,
5684}
5685
5686#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5687#[serde(rename_all = "camelCase")]
5688pub struct PluginSummary {
5689 #[serde(rename = "authPolicy")]
5690 pub auth_policy: PluginAuthPolicy,
5691 #[serde(default, skip_serializing_if = "Option::is_none")]
5692 pub availability: Option<Value>,
5693 #[serde(
5694 rename = "disabledReason",
5695 default,
5696 skip_serializing_if = "Option::is_none"
5697 )]
5698 pub disabled_reason: Option<PluginDisabledReason>,
5699 #[serde(
5700 rename = "eligiblePlanTypes",
5701 default,
5702 skip_serializing_if = "Option::is_none"
5703 )]
5704 pub eligible_plan_types: Option<Vec<String>>,
5705 #[serde(default)]
5706 pub enabled: bool,
5707 #[serde(default)]
5708 pub id: String,
5709 #[serde(rename = "installPolicy")]
5710 pub install_policy: PluginInstallPolicy,
5711 #[serde(
5712 rename = "installPolicySource",
5713 default,
5714 skip_serializing_if = "Option::is_none"
5715 )]
5716 pub install_policy_source: Option<PluginInstallPolicySource>,
5717 #[serde(default)]
5718 pub installed: bool,
5719 #[serde(
5720 rename = "installedAt",
5721 default,
5722 skip_serializing_if = "Option::is_none"
5723 )]
5724 pub installed_at: Option<i64>,
5725 #[serde(default, skip_serializing_if = "Option::is_none")]
5726 pub interface: Option<PluginInterface>,
5727 #[serde(default, skip_serializing_if = "Option::is_none")]
5728 pub keywords: Option<Vec<String>>,
5729 #[serde(
5730 rename = "localVersion",
5731 default,
5732 skip_serializing_if = "Option::is_none"
5733 )]
5734 pub local_version: Option<String>,
5735 #[serde(
5736 rename = "mustShowInstallationInterstitial",
5737 default,
5738 skip_serializing_if = "Option::is_none"
5739 )]
5740 pub must_show_installation_interstitial: Option<bool>,
5741 #[serde(default)]
5742 pub name: String,
5743 #[serde(
5744 rename = "remotePluginId",
5745 default,
5746 skip_serializing_if = "Option::is_none"
5747 )]
5748 pub remote_plugin_id: Option<String>,
5749 #[serde(
5750 rename = "shareContext",
5751 default,
5752 skip_serializing_if = "Option::is_none"
5753 )]
5754 pub share_context: Option<PluginShareContext>,
5755 #[serde()]
5756 pub source: PluginSource,
5757 #[serde(default, skip_serializing_if = "Option::is_none")]
5758 pub version: Option<String>,
5759}
5760
5761#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5762#[serde(rename_all = "camelCase")]
5763pub struct PluginUninstallParams {
5764 #[serde(rename = "pluginId", default)]
5765 pub plugin_id: String,
5766}
5767
5768#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5769#[serde(rename_all = "camelCase")]
5770pub struct PluginUninstallResponse {
5771 #[serde(flatten, default, skip_serializing_if = "serde_json::Map::is_empty")]
5772 pub extra: serde_json::Map<String, Value>,
5773}
5774
5775#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5776#[serde(rename_all = "camelCase")]
5777pub struct PluginsMigration {
5778 #[serde(rename = "marketplaceName", default)]
5779 pub marketplace_name: String,
5780 #[serde(rename = "pluginNames", default)]
5781 pub plugin_names: Vec<String>,
5782}
5783
5784#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5785#[serde(rename_all = "camelCase")]
5786pub struct ProcessExitedNotification {
5787 #[serde(rename = "exitCode", default)]
5788 pub exit_code: i64,
5789 #[serde(rename = "processHandle", default)]
5790 pub process_handle: String,
5791 #[serde(default)]
5792 pub stderr: String,
5793 #[serde(rename = "stderrCapReached", default)]
5794 pub stderr_cap_reached: bool,
5795 #[serde(default)]
5796 pub stdout: String,
5797 #[serde(rename = "stdoutCapReached", default)]
5798 pub stdout_cap_reached: bool,
5799}
5800
5801#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5802#[serde(rename_all = "camelCase")]
5803pub struct ProcessOutputDeltaNotification {
5804 #[serde(rename = "capReached", default)]
5805 pub cap_reached: bool,
5806 #[serde(rename = "deltaBase64", default)]
5807 pub delta_base64: String,
5808 #[serde(rename = "processHandle", default)]
5809 pub process_handle: String,
5810 #[serde(default)]
5811 pub stream: Value,
5812}
5813
5814#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)]
5815pub enum ProcessOutputStream {
5816 #[serde(rename = "stdout")]
5817 Stdout,
5818 #[serde(rename = "stderr")]
5819 Stderr,
5820}
5821
5822#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
5823pub enum RateLimitReachedType {
5824 #[serde(rename = "rate_limit_reached")]
5825 Rate_limit_reached,
5826 #[serde(rename = "workspace_owner_credits_depleted")]
5827 Workspace_owner_credits_depleted,
5828 #[serde(rename = "workspace_member_credits_depleted")]
5829 Workspace_member_credits_depleted,
5830 #[serde(rename = "workspace_owner_usage_limit_reached")]
5831 Workspace_owner_usage_limit_reached,
5832 #[serde(rename = "workspace_member_usage_limit_reached")]
5833 Workspace_member_usage_limit_reached,
5834}
5835
5836#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5837#[serde(rename_all = "camelCase")]
5838pub struct RateLimitResetCredit {
5839 #[serde(default, skip_serializing_if = "Option::is_none")]
5840 pub description: Option<String>,
5841 #[serde(rename = "expiresAt", default, skip_serializing_if = "Option::is_none")]
5842 pub expires_at: Option<i64>,
5843 #[serde(rename = "grantedAt", default)]
5844 pub granted_at: i64,
5845 #[serde(default)]
5846 pub id: String,
5847 #[serde(rename = "resetType")]
5848 pub reset_type: RateLimitResetType,
5849 #[serde()]
5850 pub status: RateLimitResetCreditStatus,
5851 #[serde(default, skip_serializing_if = "Option::is_none")]
5852 pub title: Option<String>,
5853}
5854
5855#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
5856pub enum RateLimitResetCreditStatus {
5857 #[serde(rename = "available")]
5858 Available,
5859 #[serde(rename = "redeeming")]
5860 Redeeming,
5861 #[serde(rename = "redeemed")]
5862 Redeemed,
5863 #[serde(rename = "unknown")]
5864 Unknown,
5865}
5866
5867#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5868#[serde(rename_all = "camelCase")]
5869pub struct RateLimitResetCreditsSummary {
5870 #[serde(rename = "availableCount", default)]
5871 pub available_count: i64,
5872 #[serde(default, skip_serializing_if = "Option::is_none")]
5873 pub credits: Option<Vec<RateLimitResetCredit>>,
5874}
5875
5876#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
5877pub enum RateLimitResetType {
5878 #[serde(rename = "codexRateLimits")]
5879 CodexRateLimits,
5880 #[serde(rename = "unknown")]
5881 Unknown,
5882}
5883
5884#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5885#[serde(rename_all = "camelCase")]
5886pub struct RateLimitSnapshot {
5887 #[serde(default, skip_serializing_if = "Option::is_none")]
5888 pub credits: Option<CreditsSnapshot>,
5889 #[serde(
5890 rename = "individualLimit",
5891 default,
5892 skip_serializing_if = "Option::is_none"
5893 )]
5894 pub individual_limit: Option<SpendControlLimitSnapshot>,
5895 #[serde(rename = "limitId", default, skip_serializing_if = "Option::is_none")]
5896 pub limit_id: Option<String>,
5897 #[serde(rename = "limitName", default, skip_serializing_if = "Option::is_none")]
5898 pub limit_name: Option<String>,
5899 #[serde(
5902 rename = "normalModelSlug",
5903 default,
5904 skip_serializing_if = "Option::is_none"
5905 )]
5906 pub normal_model_slug: Option<String>,
5907 #[serde(rename = "planType", default, skip_serializing_if = "Option::is_none")]
5908 pub plan_type: Option<PlanType>,
5909 #[serde(default, skip_serializing_if = "Option::is_none")]
5910 pub primary: Option<RateLimitWindow>,
5911 #[serde(
5912 rename = "rateLimitReachedType",
5913 default,
5914 skip_serializing_if = "Option::is_none"
5915 )]
5916 pub rate_limit_reached_type: Option<RateLimitReachedType>,
5917 #[serde(default, skip_serializing_if = "Option::is_none")]
5918 pub secondary: Option<RateLimitWindow>,
5919 #[serde(
5920 rename = "spendControlReached",
5921 default,
5922 skip_serializing_if = "Option::is_none"
5923 )]
5924 pub spend_control_reached: Option<bool>,
5925}
5926
5927#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5928#[serde(rename_all = "camelCase")]
5929pub struct RateLimitWindow {
5930 #[serde(rename = "resetsAt", default, skip_serializing_if = "Option::is_none")]
5931 pub resets_at: Option<i64>,
5932 #[serde(rename = "usedPercent", default)]
5933 pub used_percent: i64,
5934 #[serde(
5935 rename = "windowDurationMins",
5936 default,
5937 skip_serializing_if = "Option::is_none"
5938 )]
5939 pub window_duration_mins: Option<i64>,
5940}
5941
5942#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
5943pub enum RealtimeConversationVersion {
5944 #[serde(rename = "v1")]
5945 V1,
5946 #[serde(rename = "v2")]
5947 V2,
5948 #[serde(rename = "v3")]
5949 V3,
5950}
5951
5952#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq, Hash)]
5954#[serde(transparent)]
5955pub struct ReasoningEffort(pub String);
5956
5957#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5958#[serde(rename_all = "camelCase")]
5959pub struct ReasoningEffortOption {
5960 #[serde(default)]
5961 pub description: String,
5962 #[serde(rename = "reasoningEffort")]
5963 pub reasoning_effort: ReasoningEffort,
5964}
5965
5966#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)]
5967pub enum ReasoningSummary {
5968 #[serde(rename = "auto")]
5969 Auto,
5970 #[serde(rename = "concise")]
5971 Concise,
5972 #[serde(rename = "detailed")]
5973 Detailed,
5974 #[serde(rename = "none")]
5975 None,
5976}
5977
5978#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5979#[serde(rename_all = "camelCase")]
5980pub struct ReasoningSummaryPartAddedNotification {
5981 #[serde(rename = "itemId", default)]
5982 pub item_id: String,
5983 #[serde(rename = "summaryIndex", default)]
5984 pub summary_index: i64,
5985 #[serde(rename = "threadId", default)]
5986 pub thread_id: String,
5987 #[serde(rename = "turnId", default)]
5988 pub turn_id: String,
5989}
5990
5991#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
5992#[serde(rename_all = "camelCase")]
5993pub struct ReasoningSummaryTextDeltaNotification {
5994 #[serde(default)]
5995 pub delta: String,
5996 #[serde(rename = "itemId", default)]
5997 pub item_id: String,
5998 #[serde(rename = "summaryIndex", default)]
5999 pub summary_index: i64,
6000 #[serde(rename = "threadId", default)]
6001 pub thread_id: String,
6002 #[serde(rename = "turnId", default)]
6003 pub turn_id: String,
6004}
6005
6006#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6007#[serde(rename_all = "camelCase")]
6008pub struct ReasoningTextDeltaNotification {
6009 #[serde(rename = "contentIndex", default)]
6010 pub content_index: i64,
6011 #[serde(default)]
6012 pub delta: String,
6013 #[serde(rename = "itemId", default)]
6014 pub item_id: String,
6015 #[serde(rename = "threadId", default)]
6016 pub thread_id: String,
6017 #[serde(rename = "turnId", default)]
6018 pub turn_id: String,
6019}
6020
6021#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
6022pub enum RemoteControlConnectionStatus {
6023 #[serde(rename = "disabled")]
6024 Disabled,
6025 #[serde(rename = "connecting")]
6026 Connecting,
6027 #[serde(rename = "connected")]
6028 Connected,
6029 #[serde(rename = "errored")]
6030 Errored,
6031}
6032
6033#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6034#[serde(rename_all = "camelCase")]
6035pub struct RemoteControlStatusChangedNotification {
6036 #[serde(
6037 rename = "environmentId",
6038 default,
6039 skip_serializing_if = "Option::is_none"
6040 )]
6041 pub environment_id: Option<String>,
6042 #[serde(rename = "installationId", default)]
6043 pub installation_id: String,
6044 #[serde(rename = "serverName", default)]
6045 pub server_name: String,
6046 #[serde()]
6047 pub status: RemoteControlConnectionStatus,
6048}
6049
6050#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6051#[serde(untagged)]
6052pub enum RequestId {
6053 Variant0(String),
6054 Variant1(i64),
6055}
6056
6057#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6058#[serde(rename_all = "camelCase")]
6059pub struct RequestPermissionProfile {
6060 #[serde(
6061 rename = "fileSystem",
6062 default,
6063 skip_serializing_if = "Option::is_none"
6064 )]
6065 pub file_system: Option<AdditionalFileSystemPermissions>,
6066 #[serde(default, skip_serializing_if = "Option::is_none")]
6067 pub network: Option<AdditionalNetworkPermissions>,
6068}
6069
6070#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
6071pub enum ResidencyRequirement {
6072 #[serde(rename = "us")]
6073 Us,
6074}
6075
6076#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6077#[serde(rename_all = "camelCase")]
6078pub struct Resource {
6079 #[serde(default, skip_serializing_if = "Option::is_none")]
6080 pub _meta: Option<Value>,
6081 #[serde(default, skip_serializing_if = "Option::is_none")]
6082 pub annotations: Option<Value>,
6083 #[serde(default, skip_serializing_if = "Option::is_none")]
6084 pub description: Option<String>,
6085 #[serde(default, skip_serializing_if = "Option::is_none")]
6086 pub icons: Option<Vec<Value>>,
6087 #[serde(rename = "mimeType", default, skip_serializing_if = "Option::is_none")]
6088 pub mime_type: Option<String>,
6089 #[serde(default)]
6090 pub name: String,
6091 #[serde(default, skip_serializing_if = "Option::is_none")]
6092 pub size: Option<i64>,
6093 #[serde(default, skip_serializing_if = "Option::is_none")]
6094 pub title: Option<String>,
6095 #[serde(default)]
6096 pub uri: String,
6097}
6098
6099#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6100#[serde(untagged)]
6101pub enum ResourceContent {
6102 Variant0(Value),
6103 Variant1(Value),
6104}
6105
6106#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6107#[serde(rename_all = "camelCase")]
6108pub struct ResourceTemplate {
6109 #[serde(default, skip_serializing_if = "Option::is_none")]
6110 pub annotations: Option<Value>,
6111 #[serde(default, skip_serializing_if = "Option::is_none")]
6112 pub description: Option<String>,
6113 #[serde(rename = "mimeType", default, skip_serializing_if = "Option::is_none")]
6114 pub mime_type: Option<String>,
6115 #[serde(default)]
6116 pub name: String,
6117 #[serde(default, skip_serializing_if = "Option::is_none")]
6118 pub title: Option<String>,
6119 #[serde(rename = "uriTemplate", default)]
6120 pub uri_template: String,
6121}
6122
6123#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6125#[serde(rename_all = "camelCase")]
6126pub struct ResponseUsageMetadata {
6127 #[serde(default, skip_serializing_if = "Option::is_none")]
6128 pub amount: Option<String>,
6129 #[serde(default, skip_serializing_if = "Option::is_none")]
6130 pub metadata: Option<Value>,
6131}
6132
6133#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
6134pub enum ReviewDecision {
6135 #[serde(rename = "approved")]
6136 Approved,
6137 #[serde(rename = "approved_execpolicy_amendment")]
6138 ApprovedExecpolicyAmendment {
6139 proposed_execpolicy_amendment: Vec<String>,
6140 },
6141 #[serde(rename = "approved_for_session")]
6142 ApprovedForSession,
6143 #[serde(rename = "approved_mcp_policy_amendment")]
6144 ApprovedMcpPolicyAmendment,
6145 #[serde(rename = "network_policy_amendment")]
6146 NetworkPolicyAmendment {
6147 network_policy_amendment: NetworkPolicyAmendment,
6148 },
6149 #[serde(rename = "denied")]
6150 Denied { rejection: String },
6151 #[serde(rename = "timed_out")]
6152 TimedOut,
6153 #[serde(rename = "abort")]
6154 Abort,
6155}
6156
6157#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
6158pub enum ReviewDelivery {
6159 #[serde(rename = "inline")]
6160 Inline,
6161 #[serde(rename = "detached")]
6162 Detached,
6163}
6164
6165#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6166#[serde(rename_all = "camelCase")]
6167pub struct ReviewStartParams {
6168 #[serde(default, skip_serializing_if = "Option::is_none")]
6169 pub delivery: Option<ReviewDelivery>,
6170 #[serde()]
6171 pub target: ReviewTarget,
6172 #[serde(rename = "threadId", default)]
6173 pub thread_id: String,
6174}
6175
6176#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6177#[serde(rename_all = "camelCase")]
6178pub struct ReviewStartResponse {
6179 #[serde(rename = "reviewThreadId", default)]
6180 pub review_thread_id: String,
6181 #[serde()]
6182 pub turn: Turn,
6183}
6184
6185#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6186#[serde(tag = "type", rename_all = "camelCase")]
6187pub enum ReviewTarget {
6188 #[serde(rename = "uncommittedChanges")]
6189 UncommittedChanges,
6190 #[serde(rename = "baseBranch")]
6191 BaseBranch {
6192 branch: String,
6193 },
6194 Commit {
6195 sha: String,
6196 #[serde(default, skip_serializing_if = "Option::is_none")]
6197 title: Option<String>,
6198 },
6199 Custom {
6200 instructions: String,
6201 },
6202}
6203
6204#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6206pub enum AgentMessageDelivery {
6207 #[serde(rename = "async")]
6208 Async,
6209}
6210
6211#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6213pub enum CliAuthCredentialsStoreMode {
6214 #[serde(rename = "file")]
6215 File,
6216 #[serde(rename = "keyring")]
6217 Keyring,
6218 #[serde(rename = "auto")]
6219 Auto,
6220 #[serde(rename = "ephemeral")]
6221 Ephemeral,
6222}
6223
6224#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6226pub struct Project {
6227 #[serde(rename = "createdAt", default)]
6228 pub created_at: i64,
6229 #[serde(default)]
6230 pub id: String,
6231 #[serde(default)]
6232 pub metadata: std::collections::HashMap<String, String>,
6233 #[serde(default)]
6234 pub name: String,
6235 #[serde(default)]
6236 pub position: i64,
6237 #[serde(rename = "recencyAt", default, skip_serializing_if = "Option::is_none")]
6240 pub recency_at: Option<i64>,
6241 #[serde(default)]
6242 pub roots: Vec<ProjectRoot>,
6243 #[serde(rename = "updatedAt", default)]
6244 pub updated_at: i64,
6245}
6246
6247#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
6249pub enum ProjectSortKey {
6250 #[serde(rename = "position")]
6251 Position,
6252 #[serde(rename = "recencyAt")]
6253 RecencyAt,
6254}
6255
6256#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6257pub enum ProjectChangeType {
6258 #[serde(rename = "created")]
6259 Created,
6260 #[serde(rename = "updated")]
6261 Updated,
6262 #[serde(rename = "deleted")]
6263 Deleted,
6264}
6265
6266#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6268pub struct ProjectChangedNotification {
6269 #[serde(rename = "changeType")]
6270 pub change_type: ProjectChangeType,
6271 #[serde(rename = "projectId", default)]
6272 pub project_id: String,
6273}
6274
6275#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6276pub struct ProjectRoot {
6277 pub path: AbsolutePathBuf,
6278}
6279
6280#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6282pub struct QueuedSubmission {
6283 #[serde(rename = "clientUserMessageId", default)]
6284 pub client_user_message_id: String,
6285 #[serde(default)]
6286 pub id: String,
6287 #[serde(default)]
6288 pub input: Vec<UserInput>,
6289}
6290
6291#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6293pub struct StrictReviewRequiredNotification {
6294 #[serde(rename = "startedAtMs", default)]
6296 pub started_at_ms: i64,
6297 #[serde(rename = "threadId", default)]
6298 pub thread_id: String,
6299 #[serde(rename = "turnId", default)]
6300 pub turn_id: String,
6301}
6302
6303#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6305pub struct ThreadProjectUpdatedNotification {
6306 #[serde(rename = "projectId", default)]
6307 pub project_id: Option<String>,
6308 #[serde(rename = "threadId", default)]
6309 pub thread_id: String,
6310}
6311
6312#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6314pub struct ThreadQueueChangedNotification {
6315 #[serde(rename = "threadId", default)]
6316 pub thread_id: String,
6317}
6318
6319#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6321pub struct ThreadRevertedNotification {
6322 #[serde(rename = "threadId", default)]
6323 pub thread_id: String,
6324}
6325
6326#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6328#[serde(rename_all = "camelCase")]
6329pub struct InAppBrowserRequirements {
6330 #[serde(
6331 rename = "allowExternalBrowserSettingsImport",
6332 default,
6333 skip_serializing_if = "Option::is_none"
6334 )]
6335 pub allow_external_browser_settings_import: Option<bool>,
6336}
6337
6338#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6340pub struct McpServerEventNotification {
6341 #[serde(default)]
6342 pub method: String,
6343 #[serde(default)]
6344 pub params: Value,
6345}
6346
6347#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6350pub struct McpServerEventStreamNotification {
6351 pub notification: McpServerEventNotification,
6352 #[serde(rename = "subscriptionId", default)]
6353 pub subscription_id: String,
6354}
6355
6356#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
6359pub enum AllowDenyRequirement {
6360 #[serde(rename = "allow")]
6361 Allow,
6362 #[serde(rename = "deny")]
6363 Deny,
6364}
6365
6366#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
6368pub enum BrowserUseAccessApprovalLifetime {
6369 #[serde(rename = "turn")]
6370 Turn,
6371 #[serde(rename = "thread")]
6372 Thread,
6373}
6374
6375#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
6377pub enum McpServerConnectionStatus {
6378 #[serde(rename = "notStarted")]
6379 NotStarted,
6380 #[serde(rename = "starting")]
6381 Starting,
6382 #[serde(rename = "connected")]
6383 Connected,
6384 #[serde(rename = "authenticationRequired")]
6385 AuthenticationRequired,
6386 #[serde(rename = "failed")]
6387 Failed,
6388 #[serde(rename = "cancelled")]
6389 Cancelled,
6390 #[serde(rename = "disabled")]
6391 Disabled,
6392}
6393
6394#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6396#[serde(rename_all = "camelCase")]
6397pub struct BrowserUseOriginPolicy {
6398 #[serde(default, skip_serializing_if = "Option::is_none")]
6399 pub access: Option<AllowDenyRequirement>,
6400 #[serde(
6401 rename = "accessApprovalLifetime",
6402 default,
6403 skip_serializing_if = "Option::is_none"
6404 )]
6405 pub access_approval_lifetime: Option<BrowserUseAccessApprovalLifetime>,
6406 #[serde(
6407 rename = "autoReview",
6408 default,
6409 skip_serializing_if = "Option::is_none"
6410 )]
6411 pub auto_review: Option<AllowDenyRequirement>,
6412 #[serde(default, skip_serializing_if = "Option::is_none")]
6413 pub downloads: Option<AllowDenyRequirement>,
6414 #[serde(
6415 rename = "fullCdpAccess",
6416 default,
6417 skip_serializing_if = "Option::is_none"
6418 )]
6419 pub full_cdp_access: Option<AllowDenyRequirement>,
6420 #[serde(
6421 rename = "persistentApproval",
6422 default,
6423 skip_serializing_if = "Option::is_none"
6424 )]
6425 pub persistent_approval: Option<bool>,
6426 #[serde(default, skip_serializing_if = "Option::is_none")]
6427 pub uploads: Option<AllowDenyRequirement>,
6428}
6429
6430#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6432pub struct BrowserUseOriginPolicyConfig {
6433 #[serde(default, skip_serializing_if = "Option::is_none")]
6434 pub access: Option<AllowDenyRequirement>,
6435 #[serde(default, skip_serializing_if = "Option::is_none")]
6436 pub downloads: Option<AllowDenyRequirement>,
6437 #[serde(default, skip_serializing_if = "Option::is_none")]
6438 pub full_cdp_access: Option<AllowDenyRequirement>,
6439 #[serde(default, skip_serializing_if = "Option::is_none")]
6440 pub uploads: Option<AllowDenyRequirement>,
6441}
6442
6443#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6445pub struct BrowserUseConfig {
6446 #[serde(default, skip_serializing_if = "Option::is_none")]
6447 pub allow_history_access: Option<bool>,
6448 #[serde(default, skip_serializing_if = "Option::is_none")]
6449 pub default_origin_policy: Option<BrowserUseOriginPolicyConfig>,
6450 #[serde(default, skip_serializing_if = "Option::is_none")]
6451 pub origins: Option<std::collections::HashMap<String, BrowserUseOriginPolicyConfig>>,
6452}
6453
6454#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6456pub struct ComputerUseConfig {
6457 #[serde(default, skip_serializing_if = "Option::is_none")]
6458 pub default_app_access: Option<AllowDenyRequirement>,
6459 #[serde(default, skip_serializing_if = "Option::is_none")]
6460 pub macos: Option<ComputerUseMacosConfig>,
6461 #[serde(default, skip_serializing_if = "Option::is_none")]
6462 pub windows: Option<ComputerUseWindowsConfig>,
6463}
6464
6465#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6466pub struct ComputerUseMacosConfig {
6467 #[serde(default, skip_serializing_if = "Option::is_none")]
6468 pub bundle_ids: Option<std::collections::HashMap<String, AllowDenyRequirement>>,
6469}
6470
6471#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6472pub struct ComputerUseWindowsConfig {
6473 #[serde(default, skip_serializing_if = "Option::is_none")]
6474 pub aumids: Option<std::collections::HashMap<String, AllowDenyRequirement>>,
6475 #[serde(default, skip_serializing_if = "Option::is_none")]
6476 pub exes: Option<Vec<ComputerUseWindowsExeConfig>>,
6477}
6478
6479#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6480pub struct ComputerUseWindowsExeConfig {
6481 pub access: AllowDenyRequirement,
6482 #[serde(default, skip_serializing_if = "Option::is_none")]
6483 pub binary_name: Option<String>,
6484 #[serde(default)]
6485 pub product_name: String,
6486 #[serde(default)]
6487 pub publisher_name: String,
6488}
6489
6490#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6492#[serde(rename_all = "camelCase")]
6493pub struct ComputerUseMacosRequirements {
6494 #[serde(rename = "bundleIds", default, skip_serializing_if = "Option::is_none")]
6495 pub bundle_ids: Option<std::collections::HashMap<String, AllowDenyRequirement>>,
6496}
6497
6498#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6499#[serde(rename_all = "camelCase")]
6500pub struct ComputerUseWindowsRequirements {
6501 #[serde(default, skip_serializing_if = "Option::is_none")]
6502 pub aumids: Option<std::collections::HashMap<String, AllowDenyRequirement>>,
6503 #[serde(default, skip_serializing_if = "Option::is_none")]
6504 pub exes: Option<Vec<ComputerUseWindowsExeRequirement>>,
6505}
6506
6507#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6508#[serde(rename_all = "camelCase")]
6509pub struct ComputerUseWindowsExeRequirement {
6510 pub access: AllowDenyRequirement,
6511 #[serde(
6512 rename = "binaryName",
6513 default,
6514 skip_serializing_if = "Option::is_none"
6515 )]
6516 pub binary_name: Option<String>,
6517 #[serde(rename = "productName", default)]
6518 pub product_name: String,
6519 #[serde(rename = "publisherName", default)]
6520 pub publisher_name: String,
6521}
6522
6523#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
6524pub enum SandboxMode {
6525 #[serde(rename = "read-only")]
6526 Read_only,
6527 #[serde(rename = "workspace-write")]
6528 Workspace_write,
6529 #[serde(rename = "danger-full-access")]
6530 Danger_full_access,
6531}
6532
6533#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6534#[serde(tag = "type", rename_all = "camelCase")]
6535pub enum SandboxPolicy {
6536 #[serde(rename = "dangerFullAccess")]
6537 DangerFullAccess,
6538 #[serde(rename = "readOnly")]
6539 ReadOnly {
6540 #[serde(
6541 rename = "networkAccess",
6542 default,
6543 skip_serializing_if = "Option::is_none"
6544 )]
6545 network_access: Option<bool>,
6546 },
6547 #[serde(rename = "externalSandbox")]
6548 ExternalSandbox {
6549 #[serde(
6550 rename = "networkAccess",
6551 default,
6552 skip_serializing_if = "Option::is_none"
6553 )]
6554 network_access: Option<Value>,
6555 },
6556 #[serde(rename = "workspaceWrite")]
6557 WorkspaceWrite {
6558 #[serde(
6559 rename = "excludeSlashTmp",
6560 default,
6561 skip_serializing_if = "Option::is_none"
6562 )]
6563 exclude_slash_tmp: Option<bool>,
6564 #[serde(
6565 rename = "excludeTmpdirEnvVar",
6566 default,
6567 skip_serializing_if = "Option::is_none"
6568 )]
6569 exclude_tmpdir_env_var: Option<bool>,
6570 #[serde(
6571 rename = "networkAccess",
6572 default,
6573 skip_serializing_if = "Option::is_none"
6574 )]
6575 network_access: Option<bool>,
6576 #[serde(
6577 rename = "writableRoots",
6578 default,
6579 skip_serializing_if = "Option::is_none"
6580 )]
6581 writable_roots: Option<Vec<AbsolutePathBuf>>,
6582 },
6583}
6584
6585#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6586#[serde(rename_all = "snake_case")]
6587pub struct SandboxWorkspaceWrite {
6588 #[serde(default, skip_serializing_if = "Option::is_none")]
6589 pub exclude_slash_tmp: Option<bool>,
6590 #[serde(default, skip_serializing_if = "Option::is_none")]
6591 pub exclude_tmpdir_env_var: Option<bool>,
6592 #[serde(default, skip_serializing_if = "Option::is_none")]
6593 pub network_access: Option<bool>,
6594 #[serde(default, skip_serializing_if = "Option::is_none")]
6595 pub writable_roots: Option<Vec<String>>,
6596}
6597
6598#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6599#[serde(tag = "type", rename_all = "camelCase")]
6600pub enum ScheduledTaskSchedule {
6601 Hourly {
6602 #[serde(default, skip_serializing_if = "Option::is_none")]
6603 days: Option<Vec<ScheduledTaskWeekday>>,
6604 #[serde(rename = "intervalHours")]
6605 interval_hours: i64,
6606 },
6607 Daily {
6608 time: String,
6609 },
6610 Weekdays {
6611 time: String,
6612 },
6613 Weekly {
6614 days: Vec<ScheduledTaskWeekday>,
6615 time: String,
6616 },
6617}
6618
6619#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6620#[serde(rename_all = "camelCase")]
6621pub struct ScheduledTaskSummary {
6622 #[serde(default)]
6623 pub key: String,
6624 #[serde(default)]
6625 pub name: String,
6626 #[serde(default)]
6627 pub prompt: String,
6628 #[serde()]
6629 pub schedule: ScheduledTaskSchedule,
6630}
6631
6632#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
6633pub enum ScheduledTaskWeekday {
6634 #[serde(rename = "MO")]
6635 MO,
6636 #[serde(rename = "TU")]
6637 TU,
6638 #[serde(rename = "WE")]
6639 WE,
6640 #[serde(rename = "TH")]
6641 TH,
6642 #[serde(rename = "FR")]
6643 FR,
6644 #[serde(rename = "SA")]
6645 SA,
6646 #[serde(rename = "SU")]
6647 SU,
6648}
6649
6650#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6651#[serde(rename_all = "camelCase")]
6652pub struct SendAddCreditsNudgeEmailParams {
6653 #[serde(rename = "creditType")]
6654 pub credit_type: AddCreditsNudgeCreditType,
6655}
6656
6657#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6658#[serde(rename_all = "camelCase")]
6659pub struct SendAddCreditsNudgeEmailResponse {
6660 #[serde()]
6661 pub status: AddCreditsNudgeEmailStatus,
6662}
6663
6664#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6665#[serde(rename_all = "camelCase")]
6666pub struct ServerRequestResolvedNotification {
6667 #[serde(rename = "requestId")]
6668 pub request_id: RequestId,
6669 #[serde(rename = "threadId", default)]
6670 pub thread_id: String,
6671}
6672
6673#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6674#[serde(rename_all = "camelCase")]
6675pub struct SessionMigration {
6676 #[serde(default)]
6677 pub cwd: String,
6678 #[serde(default)]
6679 pub path: String,
6680 #[serde(default, skip_serializing_if = "Option::is_none")]
6681 pub title: Option<String>,
6682}
6683
6684#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
6685pub enum SessionSource {
6686 #[serde(rename = "cli")]
6687 Cli,
6688 #[serde(rename = "vscode")]
6689 Vscode,
6690 #[serde(rename = "exec")]
6691 Exec,
6692 #[serde(rename = "appServer")]
6693 AppServer,
6694 #[serde(rename = "unknown")]
6695 Unknown,
6696 #[serde(rename = "custom")]
6697 Custom(String),
6698 #[serde(rename = "subAgent")]
6699 SubAgent(SubAgentSource),
6700}
6701
6702#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6703#[serde(rename_all = "camelCase")]
6704pub struct Settings {
6705 #[serde(default, skip_serializing_if = "Option::is_none")]
6706 pub developer_instructions: Option<String>,
6707 #[serde(default)]
6708 pub model: String,
6709 #[serde(default, skip_serializing_if = "Option::is_none")]
6710 pub reasoning_effort: Option<ReasoningEffort>,
6711}
6712
6713#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6714#[serde(rename_all = "camelCase")]
6715pub struct SkillDependencies {
6716 #[serde(default)]
6717 pub tools: Vec<SkillToolDependency>,
6718}
6719
6720#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6721#[serde(rename_all = "camelCase")]
6722pub struct SkillErrorInfo {
6723 #[serde(default)]
6724 pub message: String,
6725 #[serde(default)]
6726 pub path: String,
6727}
6728
6729#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6730#[serde(rename_all = "camelCase")]
6731pub struct SkillInterface {
6732 #[serde(
6733 rename = "brandColor",
6734 default,
6735 skip_serializing_if = "Option::is_none"
6736 )]
6737 pub brand_color: Option<String>,
6738 #[serde(
6739 rename = "defaultPrompt",
6740 default,
6741 skip_serializing_if = "Option::is_none"
6742 )]
6743 pub default_prompt: Option<String>,
6744 #[serde(
6745 rename = "displayName",
6746 default,
6747 skip_serializing_if = "Option::is_none"
6748 )]
6749 pub display_name: Option<String>,
6750 #[serde(rename = "iconLarge", default, skip_serializing_if = "Option::is_none")]
6751 pub icon_large: Option<AbsolutePathBuf>,
6752 #[serde(
6753 rename = "iconLargeUrl",
6754 default,
6755 skip_serializing_if = "Option::is_none"
6756 )]
6757 pub icon_large_url: Option<String>,
6758 #[serde(rename = "iconSmall", default, skip_serializing_if = "Option::is_none")]
6759 pub icon_small: Option<AbsolutePathBuf>,
6760 #[serde(
6761 rename = "iconSmallUrl",
6762 default,
6763 skip_serializing_if = "Option::is_none"
6764 )]
6765 pub icon_small_url: Option<String>,
6766 #[serde(
6767 rename = "shortDescription",
6768 default,
6769 skip_serializing_if = "Option::is_none"
6770 )]
6771 pub short_description: Option<String>,
6772}
6773
6774#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6775#[serde(rename_all = "camelCase")]
6776pub struct SkillMetadata {
6777 #[serde(default, skip_serializing_if = "Option::is_none")]
6778 pub dependencies: Option<SkillDependencies>,
6779 #[serde(default)]
6780 pub description: String,
6781 #[serde(default)]
6782 pub enabled: bool,
6783 #[serde(default, skip_serializing_if = "Option::is_none")]
6784 pub interface: Option<SkillInterface>,
6785 #[serde(default)]
6786 pub name: String,
6787 #[serde()]
6788 pub path: AbsolutePathBuf,
6789 #[serde(rename = "pluginId", default, skip_serializing_if = "Option::is_none")]
6790 pub plugin_id: Option<String>,
6791 #[serde()]
6792 pub scope: SkillScope,
6793 #[serde(
6794 rename = "shortDescription",
6795 default,
6796 skip_serializing_if = "Option::is_none"
6797 )]
6798 pub short_description: Option<String>,
6799}
6800
6801#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6802#[serde(rename_all = "camelCase")]
6803pub struct SkillMigration {
6804 #[serde(default)]
6805 pub name: String,
6806}
6807
6808#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
6809pub enum SkillScope {
6810 #[serde(rename = "user")]
6811 User,
6812 #[serde(rename = "repo")]
6813 Repo,
6814 #[serde(rename = "system")]
6815 System,
6816 #[serde(rename = "admin")]
6817 Admin,
6818}
6819
6820#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6821#[serde(rename_all = "camelCase")]
6822pub struct SkillSummary {
6823 #[serde(default)]
6824 pub description: String,
6825 #[serde(default)]
6826 pub enabled: bool,
6827 #[serde(default, skip_serializing_if = "Option::is_none")]
6828 pub interface: Option<SkillInterface>,
6829 #[serde(default)]
6830 pub name: String,
6831 #[serde(default, skip_serializing_if = "Option::is_none")]
6832 pub path: Option<AbsolutePathBuf>,
6833 #[serde(
6834 rename = "shortDescription",
6835 default,
6836 skip_serializing_if = "Option::is_none"
6837 )]
6838 pub short_description: Option<String>,
6839}
6840
6841#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6842#[serde(rename_all = "camelCase")]
6843pub struct SkillToolDependency {
6844 #[serde(default, skip_serializing_if = "Option::is_none")]
6845 pub command: Option<String>,
6846 #[serde(default, skip_serializing_if = "Option::is_none")]
6847 pub description: Option<String>,
6848 #[serde(default, skip_serializing_if = "Option::is_none")]
6849 pub transport: Option<String>,
6850 #[serde(rename = "type", default)]
6851 pub type_: String,
6852 #[serde(default, skip_serializing_if = "Option::is_none")]
6853 pub url: Option<String>,
6854 #[serde(default)]
6855 pub value: String,
6856}
6857
6858#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6859#[serde(rename_all = "camelCase")]
6860pub struct SkillsChangedNotification {
6861 #[serde(flatten, default, skip_serializing_if = "serde_json::Map::is_empty")]
6862 pub extra: serde_json::Map<String, Value>,
6863}
6864
6865#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6866#[serde(rename_all = "camelCase")]
6867pub struct SkillsConfigWriteParams {
6868 #[serde(default)]
6869 pub enabled: bool,
6870 #[serde(default, skip_serializing_if = "Option::is_none")]
6871 pub name: Option<String>,
6872 #[serde(default, skip_serializing_if = "Option::is_none")]
6873 pub path: Option<AbsolutePathBuf>,
6874}
6875
6876#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6877#[serde(rename_all = "camelCase")]
6878pub struct SkillsConfigWriteResponse {
6879 #[serde(rename = "effectiveEnabled", default)]
6880 pub effective_enabled: bool,
6881}
6882
6883#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6884#[serde(rename_all = "camelCase")]
6885pub struct SkillsExtraRootsSetParams {
6886 #[serde(rename = "extraRoots", default)]
6887 pub extra_roots: Vec<AbsolutePathBuf>,
6888}
6889
6890#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6891#[serde(rename_all = "camelCase")]
6892pub struct SkillsExtraRootsSetResponse {
6893 #[serde(flatten, default, skip_serializing_if = "serde_json::Map::is_empty")]
6894 pub extra: serde_json::Map<String, Value>,
6895}
6896
6897#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6898#[serde(rename_all = "camelCase")]
6899pub struct SkillsListEntry {
6900 #[serde(default)]
6901 pub cwd: String,
6902 #[serde(default)]
6903 pub errors: Vec<SkillErrorInfo>,
6904 #[serde(default)]
6905 pub skills: Vec<SkillMetadata>,
6906}
6907
6908#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6909#[serde(rename_all = "camelCase")]
6910pub struct SkillsListParams {
6911 #[serde(default, skip_serializing_if = "Option::is_none")]
6912 pub cwds: Option<Vec<String>>,
6913 #[serde(
6914 rename = "forceReload",
6915 default,
6916 skip_serializing_if = "Option::is_none"
6917 )]
6918 pub force_reload: Option<bool>,
6919}
6920
6921#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6922#[serde(rename_all = "camelCase")]
6923pub struct SkillsListResponse {
6924 #[serde(default)]
6925 pub data: Vec<SkillsListEntry>,
6926}
6927
6928#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
6929pub enum SortDirection {
6930 #[serde(rename = "asc")]
6931 Asc,
6932 #[serde(rename = "desc")]
6933 Desc,
6934}
6935
6936#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6937#[serde(rename_all = "camelCase")]
6938pub struct SpendControlLimitSnapshot {
6939 #[serde(default)]
6940 pub limit: String,
6941 #[serde(rename = "remainingPercent", default)]
6942 pub remaining_percent: i64,
6943 #[serde(rename = "resetsAt", default)]
6944 pub resets_at: i64,
6945 #[serde(default)]
6946 pub used: String,
6947}
6948
6949#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
6950pub enum SubAgentActivityKind {
6951 #[serde(rename = "started")]
6952 Started,
6953 #[serde(rename = "interacted")]
6954 Interacted,
6955 #[serde(rename = "interrupted")]
6956 Interrupted,
6957 #[serde(rename = "completed")]
6958 Completed,
6959}
6960
6961#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
6962pub enum SubAgentSource {
6963 #[serde(rename = "review")]
6964 Review,
6965 #[serde(rename = "compact")]
6966 Compact,
6967 #[serde(rename = "memory_consolidation")]
6968 MemoryConsolidation,
6969 #[serde(rename = "thread_spawn")]
6970 ThreadSpawn {
6971 #[serde(default, skip_serializing_if = "Option::is_none")]
6972 agent_nickname: Option<String>,
6973 #[serde(default, skip_serializing_if = "Option::is_none")]
6974 agent_path: Option<AgentPath>,
6975 #[serde(default, skip_serializing_if = "Option::is_none")]
6976 agent_role: Option<String>,
6977 depth: i64,
6978 parent_thread_id: ThreadId,
6979 },
6980 #[serde(rename = "other")]
6981 Other(String),
6982}
6983
6984#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6985#[serde(rename_all = "camelCase")]
6986pub struct SubagentMigration {
6987 #[serde(default)]
6988 pub name: String,
6989}
6990
6991#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
6992#[serde(rename_all = "camelCase")]
6993pub struct TerminalInteractionNotification {
6994 #[serde(rename = "itemId", default)]
6995 pub item_id: String,
6996 #[serde(rename = "processId", default)]
6997 pub process_id: String,
6998 #[serde(default)]
6999 pub stdin: String,
7000 #[serde(rename = "threadId", default)]
7001 pub thread_id: String,
7002 #[serde(rename = "turnId", default)]
7003 pub turn_id: String,
7004}
7005
7006#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7007#[serde(rename_all = "camelCase")]
7008pub struct TextElement {
7009 #[serde(rename = "byteRange", default)]
7010 pub byte_range: Value,
7011 #[serde(default, skip_serializing_if = "Option::is_none")]
7012 pub placeholder: Option<String>,
7013}
7014
7015#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7016#[serde(rename_all = "camelCase")]
7017pub struct TextPosition {
7018 #[serde(default)]
7019 pub column: i64,
7020 #[serde(default)]
7021 pub line: i64,
7022}
7023
7024#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7025#[serde(rename_all = "camelCase")]
7026pub struct TextRange {
7027 #[serde()]
7028 pub end: TextPosition,
7029 #[serde()]
7030 pub start: TextPosition,
7031}
7032
7033#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7034#[serde(rename_all = "camelCase")]
7035pub struct Thread {
7036 #[serde(
7037 rename = "agentNickname",
7038 default,
7039 skip_serializing_if = "Option::is_none"
7040 )]
7041 pub agent_nickname: Option<String>,
7042 #[serde(rename = "agentRole", default, skip_serializing_if = "Option::is_none")]
7043 pub agent_role: Option<String>,
7044 #[serde(rename = "cliVersion", default)]
7045 pub cli_version: String,
7046 #[serde(rename = "createdAt", default)]
7047 pub created_at: i64,
7048 #[serde(default)]
7049 pub cwd: Value,
7050 #[serde(default)]
7051 pub ephemeral: bool,
7052 #[serde(
7053 rename = "forkedFromId",
7054 default,
7055 skip_serializing_if = "Option::is_none"
7056 )]
7057 pub forked_from_id: Option<String>,
7058 #[serde(rename = "gitInfo", default, skip_serializing_if = "Option::is_none")]
7059 pub git_info: Option<GitInfo>,
7060 #[serde(
7063 rename = "historyMode",
7064 default,
7065 skip_serializing_if = "Option::is_none"
7066 )]
7067 pub history_mode: Option<ThreadHistoryMode>,
7068 #[serde(rename = "projectId", default, skip_serializing_if = "Option::is_none")]
7071 pub project_id: Option<String>,
7072 #[serde(default)]
7073 pub id: String,
7074 #[serde(default, skip_serializing_if = "Option::is_none")]
7077 pub model: Option<String>,
7078 #[serde(rename = "modelProvider", default)]
7079 pub model_provider: String,
7080 #[serde(default, skip_serializing_if = "Option::is_none")]
7081 pub name: Option<String>,
7082 #[serde(default, skip_serializing_if = "Option::is_none")]
7086 pub originator: Option<String>,
7087 #[serde(
7088 rename = "parentThreadId",
7089 default,
7090 skip_serializing_if = "Option::is_none"
7091 )]
7092 pub parent_thread_id: Option<String>,
7093 #[serde(default, skip_serializing_if = "Option::is_none")]
7094 pub path: Option<String>,
7095 #[serde(default)]
7096 pub preview: String,
7097 #[serde(
7101 rename = "reasoningEffort",
7102 default,
7103 skip_serializing_if = "Option::is_none"
7104 )]
7105 pub reasoning_effort: Option<ReasoningEffort>,
7106 #[serde(rename = "recencyAt", default, skip_serializing_if = "Option::is_none")]
7107 pub recency_at: Option<i64>,
7108 #[serde(default, skip_serializing_if = "Option::is_none")]
7109 pub section: Option<ThreadSection>,
7110 #[serde(
7111 rename = "sectionEnteredAt",
7112 default,
7113 skip_serializing_if = "Option::is_none"
7114 )]
7115 pub section_entered_at: Option<i64>,
7116 #[serde(rename = "sessionId", default)]
7117 pub session_id: String,
7118 #[serde(default)]
7119 pub source: Value,
7120 #[serde(default)]
7121 pub status: Value,
7122 #[serde(
7123 rename = "threadSource",
7124 default,
7125 skip_serializing_if = "Option::is_none"
7126 )]
7127 pub thread_source: Option<ThreadSource>,
7128 #[serde(default)]
7129 pub turns: Vec<Turn>,
7130 #[serde(rename = "updatedAt", default)]
7131 pub updated_at: i64,
7132}
7133
7134#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
7135pub enum ThreadActiveFlag {
7136 #[serde(rename = "waitingOnApproval")]
7137 WaitingOnApproval,
7138 #[serde(rename = "waitingOnUserInput")]
7139 WaitingOnUserInput,
7140}
7141
7142#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7143#[serde(rename_all = "camelCase")]
7144pub struct ThreadApproveGuardianDeniedActionParams {
7145 #[serde(default)]
7146 pub event: Value,
7147 #[serde(rename = "threadId", default)]
7148 pub thread_id: String,
7149}
7150
7151#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7152#[serde(rename_all = "camelCase")]
7153pub struct ThreadApproveGuardianDeniedActionResponse {
7154 #[serde(flatten, default, skip_serializing_if = "serde_json::Map::is_empty")]
7155 pub extra: serde_json::Map<String, Value>,
7156}
7157
7158#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7159#[serde(rename_all = "camelCase")]
7160pub struct ThreadArchiveParams {
7161 #[serde(rename = "threadId", default)]
7162 pub thread_id: String,
7163}
7164
7165#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7166#[serde(rename_all = "camelCase")]
7167pub struct ThreadArchiveResponse {
7168 #[serde(flatten, default, skip_serializing_if = "serde_json::Map::is_empty")]
7169 pub extra: serde_json::Map<String, Value>,
7170}
7171
7172#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7173#[serde(rename_all = "camelCase")]
7174pub struct ThreadArchivedNotification {
7175 #[serde(rename = "threadId", default)]
7176 pub thread_id: String,
7177}
7178
7179#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7181#[serde(rename_all = "camelCase")]
7182pub struct ThreadAttachment {
7183 #[serde(rename = "attachmentType", default)]
7184 pub attachment_type: String,
7185 #[serde(rename = "createdAt", default)]
7186 pub created_at: i64,
7187 #[serde(default)]
7188 pub id: String,
7189 #[serde(rename = "identityKey", default)]
7190 pub identity_key: String,
7191 #[serde(default)]
7192 pub payload: Value,
7193}
7194
7195#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
7197pub enum ThreadAttachmentAddOutcome {
7198 #[serde(rename = "created")]
7199 Created,
7200 #[serde(rename = "existing")]
7201 Existing,
7202}
7203
7204#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7206#[serde(rename_all = "camelCase")]
7207pub struct ThreadAttachmentAddParams {
7208 #[serde(rename = "attachmentType", default)]
7209 pub attachment_type: String,
7210 #[serde(rename = "identityKey", default)]
7211 pub identity_key: String,
7212 #[serde(default)]
7213 pub payload: Value,
7214 #[serde(rename = "threadId", default)]
7215 pub thread_id: String,
7216}
7217
7218#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7220#[serde(rename_all = "camelCase")]
7221pub struct ThreadAttachmentAddResponse {
7222 pub attachment: ThreadAttachment,
7223 pub outcome: ThreadAttachmentAddOutcome,
7224}
7225
7226#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7228#[serde(rename_all = "camelCase")]
7229pub struct ThreadAttachmentListParams {
7230 #[serde(default, skip_serializing_if = "Option::is_none")]
7231 pub cursor: Option<String>,
7232 #[serde(default, skip_serializing_if = "Option::is_none")]
7233 pub limit: Option<i64>,
7234 #[serde(rename = "threadId", default)]
7235 pub thread_id: String,
7236}
7237
7238#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7240#[serde(rename_all = "camelCase")]
7241pub struct ThreadAttachmentListResponse {
7242 #[serde(default)]
7243 pub data: Vec<ThreadAttachment>,
7244 #[serde(
7245 rename = "nextCursor",
7246 default,
7247 skip_serializing_if = "Option::is_none"
7248 )]
7249 pub next_cursor: Option<String>,
7250}
7251
7252#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
7254pub enum ThreadAttachmentOperation {
7255 #[serde(rename = "created")]
7256 Created,
7257 #[serde(rename = "deleted")]
7258 Deleted,
7259}
7260
7261#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7263#[serde(rename_all = "camelCase")]
7264pub struct ThreadAttachmentRemoveParams {
7265 #[serde(rename = "attachmentType", default)]
7266 pub attachment_type: String,
7267 #[serde(rename = "identityKey", default)]
7268 pub identity_key: String,
7269 #[serde(rename = "threadId", default)]
7270 pub thread_id: String,
7271}
7272
7273#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7275#[serde(rename_all = "camelCase")]
7276pub struct ThreadAttachmentRemoveResponse {
7277 #[serde(flatten, default, skip_serializing_if = "serde_json::Map::is_empty")]
7278 pub extra: serde_json::Map<String, Value>,
7279}
7280
7281#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7283#[serde(rename_all = "camelCase")]
7284pub struct ThreadAttachmentUpdatedNotification {
7285 #[serde(rename = "attachmentId", default)]
7286 pub attachment_id: String,
7287 #[serde(rename = "attachmentType", default)]
7288 pub attachment_type: String,
7289 #[serde(rename = "identityKey", default)]
7290 pub identity_key: String,
7291 pub operation: ThreadAttachmentOperation,
7292 #[serde(rename = "threadId", default)]
7293 pub thread_id: String,
7294}
7295
7296#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7297#[serde(rename_all = "camelCase")]
7298pub struct ThreadClosedNotification {
7299 #[serde(rename = "threadId", default)]
7300 pub thread_id: String,
7301}
7302
7303#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7304#[serde(rename_all = "camelCase")]
7305pub struct ThreadCompactStartParams {
7306 #[serde(rename = "threadId", default)]
7307 pub thread_id: String,
7308}
7309
7310#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7311#[serde(rename_all = "camelCase")]
7312pub struct ThreadCompactStartResponse {
7313 #[serde(flatten, default, skip_serializing_if = "serde_json::Map::is_empty")]
7314 pub extra: serde_json::Map<String, Value>,
7315}
7316
7317#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7318#[serde(rename_all = "camelCase")]
7319pub struct ThreadDeleteParams {
7320 #[serde(rename = "threadId", default)]
7321 pub thread_id: String,
7322}
7323
7324#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7325#[serde(rename_all = "camelCase")]
7326pub struct ThreadDeleteResponse {
7327 #[serde(flatten, default, skip_serializing_if = "serde_json::Map::is_empty")]
7328 pub extra: serde_json::Map<String, Value>,
7329}
7330
7331#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7332#[serde(rename_all = "camelCase")]
7333pub struct ThreadDeletedNotification {
7334 #[serde(rename = "threadId", default)]
7335 pub thread_id: String,
7336}
7337
7338#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7339#[serde(rename_all = "camelCase")]
7340pub struct ThreadForkParams {
7341 #[serde(
7342 rename = "approvalPolicy",
7343 default,
7344 skip_serializing_if = "Option::is_none"
7345 )]
7346 pub approval_policy: Option<AskForApproval>,
7347 #[serde(
7348 rename = "approvalsReviewer",
7349 default,
7350 skip_serializing_if = "Option::is_none"
7351 )]
7352 pub approvals_reviewer: Option<ApprovalsReviewer>,
7353 #[serde(
7354 rename = "baseInstructions",
7355 default,
7356 skip_serializing_if = "Option::is_none"
7357 )]
7358 pub base_instructions: Option<String>,
7359 #[serde(default, skip_serializing_if = "Option::is_none")]
7360 pub config: Option<Value>,
7361 #[serde(default, skip_serializing_if = "Option::is_none")]
7362 pub cwd: Option<String>,
7363 #[serde(
7364 rename = "developerInstructions",
7365 default,
7366 skip_serializing_if = "Option::is_none"
7367 )]
7368 pub developer_instructions: Option<String>,
7369 #[serde(default, skip_serializing_if = "Option::is_none")]
7370 pub ephemeral: Option<bool>,
7371 #[serde(
7372 rename = "excludeTurns",
7373 default,
7374 skip_serializing_if = "Option::is_none"
7375 )]
7376 pub exclude_turns: Option<bool>,
7377 #[serde(
7378 rename = "lastTurnId",
7379 default,
7380 skip_serializing_if = "Option::is_none"
7381 )]
7382 pub last_turn_id: Option<String>,
7383 #[serde(default, skip_serializing_if = "Option::is_none")]
7384 pub model: Option<String>,
7385 #[serde(
7386 rename = "modelProvider",
7387 default,
7388 skip_serializing_if = "Option::is_none"
7389 )]
7390 pub model_provider: Option<String>,
7391 #[serde(default, skip_serializing_if = "Option::is_none")]
7392 pub sandbox: Option<SandboxMode>,
7393 #[serde(
7394 rename = "serviceTier",
7395 default,
7396 skip_serializing_if = "Option::is_none"
7397 )]
7398 pub service_tier: Option<String>,
7399 #[serde(rename = "threadId", default)]
7400 pub thread_id: String,
7401 #[serde(
7402 rename = "threadSource",
7403 default,
7404 skip_serializing_if = "Option::is_none"
7405 )]
7406 pub thread_source: Option<ThreadSource>,
7407}
7408
7409#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7410#[serde(rename_all = "camelCase")]
7411pub struct ThreadForkResponse {
7412 #[serde(rename = "approvalPolicy")]
7413 pub approval_policy: AskForApproval,
7414 #[serde(rename = "approvalsReviewer", default)]
7415 pub approvals_reviewer: Value,
7416 #[serde()]
7417 pub cwd: AbsolutePathBuf,
7418 #[serde(
7419 rename = "instructionSources",
7420 default,
7421 skip_serializing_if = "Option::is_none"
7422 )]
7423 pub instruction_sources: Option<Vec<LegacyAppPathString>>,
7424 #[serde(default)]
7425 pub model: String,
7426 #[serde(rename = "modelProvider", default)]
7427 pub model_provider: String,
7428 #[serde(
7429 rename = "reasoningEffort",
7430 default,
7431 skip_serializing_if = "Option::is_none"
7432 )]
7433 pub reasoning_effort: Option<ReasoningEffort>,
7434 #[serde(default)]
7435 pub sandbox: Value,
7436 #[serde(
7437 rename = "serviceTier",
7438 default,
7439 skip_serializing_if = "Option::is_none"
7440 )]
7441 pub service_tier: Option<String>,
7442 #[serde()]
7443 pub thread: Thread,
7444}
7445
7446#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7447#[serde(rename_all = "camelCase")]
7448pub struct ThreadGoal {
7449 #[serde(rename = "createdAt", default)]
7450 pub created_at: i64,
7451 #[serde(default)]
7452 pub objective: String,
7453 #[serde()]
7454 pub status: ThreadGoalStatus,
7455 #[serde(rename = "threadId", default)]
7456 pub thread_id: String,
7457 #[serde(rename = "timeUsedSeconds", default)]
7458 pub time_used_seconds: i64,
7459 #[serde(
7460 rename = "tokenBudget",
7461 default,
7462 skip_serializing_if = "Option::is_none"
7463 )]
7464 pub token_budget: Option<i64>,
7465 #[serde(rename = "tokensUsed", default)]
7466 pub tokens_used: i64,
7467 #[serde(rename = "updatedAt", default)]
7468 pub updated_at: i64,
7469}
7470
7471#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7472#[serde(rename_all = "camelCase")]
7473pub struct ThreadGoalClearParams {
7474 #[serde(rename = "threadId", default)]
7475 pub thread_id: String,
7476}
7477
7478#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7479#[serde(rename_all = "camelCase")]
7480pub struct ThreadGoalClearResponse {
7481 #[serde(default)]
7482 pub cleared: bool,
7483}
7484
7485#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7486#[serde(rename_all = "camelCase")]
7487pub struct ThreadGoalClearedNotification {
7488 #[serde(rename = "threadId", default)]
7489 pub thread_id: String,
7490}
7491
7492#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7493#[serde(rename_all = "camelCase")]
7494pub struct ThreadGoalGetParams {
7495 #[serde(rename = "threadId", default)]
7496 pub thread_id: String,
7497}
7498
7499#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7500#[serde(rename_all = "camelCase")]
7501pub struct ThreadGoalGetResponse {
7502 #[serde(default, skip_serializing_if = "Option::is_none")]
7503 pub goal: Option<ThreadGoal>,
7504}
7505
7506#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7507#[serde(rename_all = "camelCase")]
7508pub struct ThreadGoalSetParams {
7509 #[serde(default, skip_serializing_if = "Option::is_none")]
7510 pub objective: Option<String>,
7511 #[serde(default, skip_serializing_if = "Option::is_none")]
7512 pub status: Option<ThreadGoalStatus>,
7513 #[serde(rename = "threadId", default)]
7514 pub thread_id: String,
7515 #[serde(
7516 rename = "tokenBudget",
7517 default,
7518 skip_serializing_if = "Option::is_none"
7519 )]
7520 pub token_budget: Option<i64>,
7521}
7522
7523#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7524#[serde(rename_all = "camelCase")]
7525pub struct ThreadGoalSetResponse {
7526 #[serde()]
7527 pub goal: ThreadGoal,
7528}
7529
7530#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
7531pub enum ThreadGoalStatus {
7532 #[serde(rename = "active")]
7533 Active,
7534 #[serde(rename = "paused")]
7535 Paused,
7536 #[serde(rename = "blocked")]
7537 Blocked,
7538 #[serde(rename = "usageLimited")]
7539 UsageLimited,
7540 #[serde(rename = "budgetLimited")]
7541 BudgetLimited,
7542 #[serde(rename = "complete")]
7543 Complete,
7544}
7545
7546#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7547#[serde(rename_all = "camelCase")]
7548pub struct ThreadGoalUpdatedNotification {
7549 #[serde()]
7550 pub goal: ThreadGoal,
7551 #[serde(rename = "threadId", default)]
7552 pub thread_id: String,
7553 #[serde(rename = "turnId", default, skip_serializing_if = "Option::is_none")]
7554 pub turn_id: Option<String>,
7555}
7556
7557#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq, Hash)]
7558#[serde(transparent)]
7559pub struct ThreadId(pub String);
7560
7561#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7562#[serde(rename_all = "camelCase")]
7563pub struct ThreadInjectItemsParams {
7564 #[serde(default)]
7565 pub items: Vec<Value>,
7566 #[serde(rename = "threadId", default)]
7567 pub thread_id: String,
7568}
7569
7570#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7571#[serde(rename_all = "camelCase")]
7572pub struct ThreadInjectItemsResponse {
7573 #[serde(flatten, default, skip_serializing_if = "serde_json::Map::is_empty")]
7574 pub extra: serde_json::Map<String, Value>,
7575}
7576
7577#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7578#[serde(tag = "type", rename_all = "camelCase")]
7579pub enum ThreadItem {
7580 #[serde(rename = "userMessage")]
7581 UserMessage {
7582 #[serde(rename = "clientId", default, skip_serializing_if = "Option::is_none")]
7583 client_id: Option<String>,
7584 content: Vec<UserInput>,
7585 id: String,
7586 },
7587 #[serde(rename = "hookPrompt")]
7588 HookPrompt {
7589 fragments: Vec<HookPromptFragment>,
7590 id: String,
7591 },
7592 #[serde(rename = "agentMessage")]
7593 AgentMessage {
7594 #[serde(default, skip_serializing_if = "Option::is_none")]
7595 delivery: Option<AgentMessageDelivery>,
7596 id: String,
7597 #[serde(
7598 rename = "memoryCitation",
7599 default,
7600 skip_serializing_if = "Option::is_none"
7601 )]
7602 memory_citation: Option<MemoryCitation>,
7603 #[serde(default, skip_serializing_if = "Option::is_none")]
7604 phase: Option<MessagePhase>,
7605 #[serde(default, skip_serializing_if = "Option::is_none")]
7606 questions: Option<Vec<AsyncUserInputQuestion>>,
7607 text: String,
7608 },
7609 Plan {
7610 id: String,
7611 text: String,
7612 },
7613 Reasoning {
7614 #[serde(default, skip_serializing_if = "Option::is_none")]
7615 content: Option<Vec<String>>,
7616 id: String,
7617 #[serde(default, skip_serializing_if = "Option::is_none")]
7618 summary: Option<Vec<String>>,
7619 },
7620 #[serde(rename = "commandExecution")]
7621 CommandExecution {
7622 #[serde(
7623 rename = "aggregatedOutput",
7624 default,
7625 skip_serializing_if = "Option::is_none"
7626 )]
7627 aggregated_output: Option<String>,
7628 command: String,
7629 #[serde(rename = "commandActions")]
7630 command_actions: Vec<CommandAction>,
7631 cwd: Value,
7632 #[serde(
7633 rename = "durationMs",
7634 default,
7635 skip_serializing_if = "Option::is_none"
7636 )]
7637 duration_ms: Option<i64>,
7638 #[serde(rename = "exitCode", default, skip_serializing_if = "Option::is_none")]
7639 exit_code: Option<i64>,
7640 id: String,
7641 #[serde(rename = "pluginId", default, skip_serializing_if = "Option::is_none")]
7642 plugin_id: Option<String>,
7643 #[serde(rename = "processId", default, skip_serializing_if = "Option::is_none")]
7644 process_id: Option<String>,
7645 #[serde(
7646 rename = "scriptPath",
7647 default,
7648 skip_serializing_if = "Option::is_none"
7649 )]
7650 script_path: Option<String>,
7651 #[serde(default, skip_serializing_if = "Option::is_none")]
7652 source: Option<Value>,
7653 status: CommandExecutionStatus,
7654 },
7655 #[serde(rename = "fileChange")]
7656 FileChange {
7657 changes: Vec<FileUpdateChange>,
7658 id: String,
7659 status: PatchApplyStatus,
7660 },
7661 #[serde(rename = "mcpToolCall")]
7662 McpToolCall {
7663 #[serde(
7664 rename = "appContext",
7665 default,
7666 skip_serializing_if = "Option::is_none"
7667 )]
7668 app_context: Option<McpToolCallAppContext>,
7669 arguments: Value,
7670 #[serde(
7671 rename = "durationMs",
7672 default,
7673 skip_serializing_if = "Option::is_none"
7674 )]
7675 duration_ms: Option<i64>,
7676 #[serde(default, skip_serializing_if = "Option::is_none")]
7677 error: Option<McpToolCallError>,
7678 id: String,
7679 #[serde(
7680 rename = "mcpAppResourceUri",
7681 default,
7682 skip_serializing_if = "Option::is_none"
7683 )]
7684 mcp_app_resource_uri: Option<String>,
7685 #[serde(rename = "pluginId", default, skip_serializing_if = "Option::is_none")]
7686 plugin_id: Option<String>,
7687 #[serde(
7688 rename = "readOnlyHint",
7689 default,
7690 skip_serializing_if = "Option::is_none"
7691 )]
7692 read_only_hint: Option<bool>,
7693 #[serde(default, skip_serializing_if = "Option::is_none")]
7694 result: Option<McpToolCallResult>,
7695 server: String,
7696 status: McpToolCallStatus,
7697 tool: String,
7698 },
7699 #[serde(rename = "dynamicToolCall")]
7700 DynamicToolCall {
7701 arguments: Value,
7702 #[serde(
7703 rename = "contentItems",
7704 default,
7705 skip_serializing_if = "Option::is_none"
7706 )]
7707 content_items: Option<Vec<DynamicToolCallOutputContentItem>>,
7708 #[serde(
7709 rename = "durationMs",
7710 default,
7711 skip_serializing_if = "Option::is_none"
7712 )]
7713 duration_ms: Option<i64>,
7714 id: String,
7715 #[serde(default, skip_serializing_if = "Option::is_none")]
7716 namespace: Option<String>,
7717 status: DynamicToolCallStatus,
7718 #[serde(default, skip_serializing_if = "Option::is_none")]
7719 success: Option<bool>,
7720 tool: String,
7721 },
7722 #[serde(rename = "collabAgentToolCall")]
7723 CollabAgentToolCall {
7724 #[serde(rename = "agentsStates")]
7725 agents_states: std::collections::BTreeMap<String, CollabAgentState>,
7726 id: String,
7727 #[serde(default, skip_serializing_if = "Option::is_none")]
7728 model: Option<String>,
7729 #[serde(default, skip_serializing_if = "Option::is_none")]
7730 prompt: Option<String>,
7731 #[serde(
7732 rename = "reasoningEffort",
7733 default,
7734 skip_serializing_if = "Option::is_none"
7735 )]
7736 reasoning_effort: Option<ReasoningEffort>,
7737 #[serde(rename = "receiverThreadIds")]
7738 receiver_thread_ids: Vec<String>,
7739 #[serde(rename = "senderThreadId")]
7740 sender_thread_id: String,
7741 status: Value,
7742 tool: Value,
7743 },
7744 #[serde(rename = "subAgentActivity")]
7745 SubAgentActivity {
7746 #[serde(rename = "agentPath")]
7747 agent_path: String,
7748 #[serde(rename = "agentThreadId")]
7749 agent_thread_id: String,
7750 id: String,
7751 kind: SubAgentActivityKind,
7752 },
7753 #[serde(rename = "webSearch")]
7754 WebSearch {
7755 #[serde(default, skip_serializing_if = "Option::is_none")]
7756 action: Option<WebSearchAction>,
7757 id: String,
7758 query: String,
7759 #[serde(default, skip_serializing_if = "Option::is_none")]
7760 results: Option<Vec<Value>>,
7761 },
7762 #[serde(rename = "imageView")]
7763 ImageView {
7764 id: String,
7765 path: LegacyAppPathString,
7766 },
7767 Sleep {
7768 #[serde(rename = "durationMs")]
7769 duration_ms: i64,
7770 id: String,
7771 },
7772 #[serde(rename = "imageGeneration")]
7773 ImageGeneration {
7774 #[serde(default, skip_serializing_if = "Option::is_none")]
7775 failure: Option<ImageGenerationFailure>,
7776 id: String,
7777 result: String,
7778 #[serde(
7779 rename = "revisedPrompt",
7780 default,
7781 skip_serializing_if = "Option::is_none"
7782 )]
7783 revised_prompt: Option<String>,
7784 #[serde(rename = "savedPath", default, skip_serializing_if = "Option::is_none")]
7785 saved_path: Option<AbsolutePathBuf>,
7786 status: String,
7787 #[serde(
7788 rename = "transparentBackground",
7789 default,
7790 skip_serializing_if = "Option::is_none"
7791 )]
7792 transparent_background: Option<bool>,
7793 },
7794 #[serde(rename = "enteredReviewMode")]
7795 EnteredReviewMode {
7796 id: String,
7797 review: String,
7798 },
7799 #[serde(rename = "exitedReviewMode")]
7800 ExitedReviewMode {
7801 id: String,
7802 review: String,
7803 },
7804 #[serde(rename = "contextCompaction")]
7805 ContextCompaction {
7806 id: String,
7807 },
7808 #[serde(rename = "functionCallOutput")]
7809 FunctionCallOutput {
7810 id: String,
7811 name: String,
7812 #[serde(default, skip_serializing_if = "Option::is_none")]
7813 namespace: Option<String>,
7814 output: FunctionCallOutputBody,
7815 },
7816}
7817
7818#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7819#[serde(untagged)]
7820pub enum ThreadListCwdFilter {
7821 Variant0(String),
7822 Variant1(Vec<String>),
7823}
7824
7825#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7826#[serde(rename_all = "camelCase")]
7827pub struct ThreadListParams {
7828 #[serde(default, skip_serializing_if = "Option::is_none")]
7829 pub archived: Option<bool>,
7830 #[serde(default, skip_serializing_if = "Option::is_none")]
7831 pub cursor: Option<String>,
7832 #[serde(default, skip_serializing_if = "Option::is_none")]
7833 pub cwd: Option<ThreadListCwdFilter>,
7834 #[serde(default, skip_serializing_if = "Option::is_none")]
7835 pub limit: Option<i64>,
7836 #[serde(
7837 rename = "modelProviders",
7838 default,
7839 skip_serializing_if = "Option::is_none"
7840 )]
7841 pub model_providers: Option<Vec<String>>,
7842 #[serde(default, skip_serializing_if = "Option::is_none")]
7846 pub originators: Option<Vec<String>>,
7847 #[serde(
7848 rename = "searchTerm",
7849 default,
7850 skip_serializing_if = "Option::is_none"
7851 )]
7852 pub search_term: Option<String>,
7853 #[serde(rename = "sectionId", default, skip_serializing_if = "Option::is_none")]
7854 pub section_id: Option<String>,
7855 #[serde(
7856 rename = "sortDirection",
7857 default,
7858 skip_serializing_if = "Option::is_none"
7859 )]
7860 pub sort_direction: Option<SortDirection>,
7861 #[serde(rename = "sortKey", default, skip_serializing_if = "Option::is_none")]
7862 pub sort_key: Option<ThreadSortKey>,
7863 #[serde(
7864 rename = "sourceKinds",
7865 default,
7866 skip_serializing_if = "Option::is_none"
7867 )]
7868 pub source_kinds: Option<Vec<ThreadSourceKind>>,
7869 #[serde(
7870 rename = "useStateDbOnly",
7871 default,
7872 skip_serializing_if = "Option::is_none"
7873 )]
7874 pub use_state_db_only: Option<bool>,
7875}
7876
7877#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7878#[serde(rename_all = "camelCase")]
7879pub struct ThreadListResponse {
7880 #[serde(
7881 rename = "backwardsCursor",
7882 default,
7883 skip_serializing_if = "Option::is_none"
7884 )]
7885 pub backwards_cursor: Option<String>,
7886 #[serde(default)]
7887 pub data: Vec<Thread>,
7888 #[serde(
7889 rename = "nextCursor",
7890 default,
7891 skip_serializing_if = "Option::is_none"
7892 )]
7893 pub next_cursor: Option<String>,
7894}
7895
7896#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7897#[serde(rename_all = "camelCase")]
7898pub struct ThreadLoadedListParams {
7899 #[serde(default, skip_serializing_if = "Option::is_none")]
7900 pub cursor: Option<String>,
7901 #[serde(default, skip_serializing_if = "Option::is_none")]
7902 pub limit: Option<i64>,
7903}
7904
7905#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7906#[serde(rename_all = "camelCase")]
7907pub struct ThreadLoadedListResponse {
7908 #[serde(default)]
7909 pub data: Vec<String>,
7910 #[serde(
7911 rename = "nextCursor",
7912 default,
7913 skip_serializing_if = "Option::is_none"
7914 )]
7915 pub next_cursor: Option<String>,
7916}
7917
7918#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7919#[serde(rename_all = "camelCase")]
7920pub struct ThreadMetadataGitInfoUpdateParams {
7921 #[serde(default, skip_serializing_if = "Option::is_none")]
7922 pub branch: Option<String>,
7923 #[serde(rename = "originUrl", default, skip_serializing_if = "Option::is_none")]
7924 pub origin_url: Option<String>,
7925 #[serde(default, skip_serializing_if = "Option::is_none")]
7926 pub sha: Option<String>,
7927}
7928
7929#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7930#[serde(rename_all = "camelCase")]
7931pub struct ThreadMetadataUpdateParams {
7932 #[serde(rename = "gitInfo", default, skip_serializing_if = "Option::is_none")]
7933 pub git_info: Option<ThreadMetadataGitInfoUpdateParams>,
7934 #[serde(rename = "threadId", default)]
7935 pub thread_id: String,
7936}
7937
7938#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7939#[serde(rename_all = "camelCase")]
7940pub struct ThreadMetadataUpdateResponse {
7941 #[serde()]
7942 pub thread: Thread,
7943}
7944
7945#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7946#[serde(rename_all = "camelCase")]
7947pub struct ThreadNameUpdatedNotification {
7948 #[serde(rename = "threadId", default)]
7949 pub thread_id: String,
7950 #[serde(
7951 rename = "threadName",
7952 default,
7953 skip_serializing_if = "Option::is_none"
7954 )]
7955 pub thread_name: Option<String>,
7956}
7957
7958#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7959#[serde(rename_all = "camelCase")]
7960pub struct ThreadReadParams {
7961 #[serde(
7962 rename = "includeTurns",
7963 default,
7964 skip_serializing_if = "Option::is_none"
7965 )]
7966 pub include_turns: Option<bool>,
7967 #[serde(rename = "threadId", default)]
7968 pub thread_id: String,
7969}
7970
7971#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7972#[serde(rename_all = "camelCase")]
7973pub struct ThreadReadResponse {
7974 #[serde()]
7975 pub thread: Thread,
7976}
7977
7978#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7979#[serde(rename_all = "camelCase")]
7980pub struct ThreadRealtimeAudioChunk {
7981 #[serde(default)]
7982 pub data: String,
7983 #[serde(rename = "itemId", default, skip_serializing_if = "Option::is_none")]
7984 pub item_id: Option<String>,
7985 #[serde(rename = "numChannels", default)]
7986 pub num_channels: i64,
7987 #[serde(rename = "sampleRate", default)]
7988 pub sample_rate: i64,
7989 #[serde(
7990 rename = "samplesPerChannel",
7991 default,
7992 skip_serializing_if = "Option::is_none"
7993 )]
7994 pub samples_per_channel: Option<i64>,
7995}
7996
7997#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
7998#[serde(rename_all = "camelCase")]
7999pub struct ThreadRealtimeClosedNotification {
8000 #[serde(default, skip_serializing_if = "Option::is_none")]
8001 pub reason: Option<String>,
8002 #[serde(rename = "threadId", default)]
8003 pub thread_id: String,
8004}
8005
8006#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8007#[serde(rename_all = "camelCase")]
8008pub struct ThreadRealtimeErrorNotification {
8009 #[serde(default)]
8010 pub message: String,
8011 #[serde(rename = "threadId", default)]
8012 pub thread_id: String,
8013}
8014
8015#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8016#[serde(rename_all = "camelCase")]
8017pub struct ThreadRealtimeItemAddedNotification {
8018 #[serde(default)]
8019 pub item: Value,
8020 #[serde(rename = "threadId", default)]
8021 pub thread_id: String,
8022}
8023
8024#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8025#[serde(rename_all = "camelCase")]
8026pub struct ThreadRealtimeOutputAudioDeltaNotification {
8027 #[serde()]
8028 pub audio: ThreadRealtimeAudioChunk,
8029 #[serde(rename = "threadId", default)]
8030 pub thread_id: String,
8031}
8032
8033#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8034#[serde(rename_all = "camelCase")]
8035pub struct ThreadRealtimeSdpNotification {
8036 #[serde(default)]
8037 pub sdp: String,
8038 #[serde(rename = "threadId", default)]
8039 pub thread_id: String,
8040}
8041
8042#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8043#[serde(rename_all = "camelCase")]
8044pub struct ThreadRealtimeStartedNotification {
8045 #[serde(
8046 rename = "realtimeSessionId",
8047 default,
8048 skip_serializing_if = "Option::is_none"
8049 )]
8050 pub realtime_session_id: Option<String>,
8051 #[serde(rename = "threadId", default)]
8052 pub thread_id: String,
8053 #[serde()]
8054 pub version: RealtimeConversationVersion,
8055}
8056
8057#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8058#[serde(rename_all = "camelCase")]
8059pub struct ThreadRealtimeTranscriptDeltaNotification {
8060 #[serde(default)]
8061 pub delta: String,
8062 #[serde(default)]
8063 pub role: String,
8064 #[serde(rename = "threadId", default)]
8065 pub thread_id: String,
8066}
8067
8068#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8069#[serde(rename_all = "camelCase")]
8070pub struct ThreadRealtimeTranscriptDoneNotification {
8071 #[serde(default)]
8072 pub role: String,
8073 #[serde(default)]
8074 pub text: String,
8075 #[serde(rename = "threadId", default)]
8076 pub thread_id: String,
8077}
8078
8079#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8080#[serde(rename_all = "camelCase")]
8081pub struct ThreadResumeParams {
8082 #[serde(
8083 rename = "approvalPolicy",
8084 default,
8085 skip_serializing_if = "Option::is_none"
8086 )]
8087 pub approval_policy: Option<AskForApproval>,
8088 #[serde(
8089 rename = "approvalsReviewer",
8090 default,
8091 skip_serializing_if = "Option::is_none"
8092 )]
8093 pub approvals_reviewer: Option<ApprovalsReviewer>,
8094 #[serde(
8095 rename = "baseInstructions",
8096 default,
8097 skip_serializing_if = "Option::is_none"
8098 )]
8099 pub base_instructions: Option<String>,
8100 #[serde(default, skip_serializing_if = "Option::is_none")]
8101 pub config: Option<Value>,
8102 #[serde(default, skip_serializing_if = "Option::is_none")]
8103 pub cwd: Option<String>,
8104 #[serde(
8105 rename = "developerInstructions",
8106 default,
8107 skip_serializing_if = "Option::is_none"
8108 )]
8109 pub developer_instructions: Option<String>,
8110 #[serde(default, skip_serializing_if = "Option::is_none")]
8111 pub model: Option<String>,
8112 #[serde(
8113 rename = "modelProvider",
8114 default,
8115 skip_serializing_if = "Option::is_none"
8116 )]
8117 pub model_provider: Option<String>,
8118 #[serde(default, skip_serializing_if = "Option::is_none")]
8119 pub personality: Option<Personality>,
8120 #[serde(default, skip_serializing_if = "Option::is_none")]
8121 pub sandbox: Option<SandboxMode>,
8122 #[serde(
8123 rename = "serviceTier",
8124 default,
8125 skip_serializing_if = "Option::is_none"
8126 )]
8127 pub service_tier: Option<String>,
8128 #[serde(rename = "threadId", default)]
8129 pub thread_id: String,
8130 #[serde(
8131 rename = "excludeTurns",
8132 default,
8133 skip_serializing_if = "Option::is_none"
8134 )]
8135 pub exclude_turns: Option<bool>,
8136}
8137
8138#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8139#[serde(rename_all = "camelCase")]
8140pub struct ThreadResumeResponse {
8141 #[serde(rename = "approvalPolicy")]
8142 pub approval_policy: AskForApproval,
8143 #[serde(rename = "approvalsReviewer", default)]
8144 pub approvals_reviewer: Value,
8145 #[serde()]
8146 pub cwd: AbsolutePathBuf,
8147 #[serde(
8148 rename = "instructionSources",
8149 default,
8150 skip_serializing_if = "Option::is_none"
8151 )]
8152 pub instruction_sources: Option<Vec<LegacyAppPathString>>,
8153 #[serde(
8156 rename = "itemsBackwardsCursor",
8157 default,
8158 skip_serializing_if = "Option::is_none"
8159 )]
8160 pub items_backwards_cursor: Option<String>,
8161 #[serde(default)]
8162 pub model: String,
8163 #[serde(rename = "modelProvider", default)]
8164 pub model_provider: String,
8165 #[serde(
8166 rename = "reasoningEffort",
8167 default,
8168 skip_serializing_if = "Option::is_none"
8169 )]
8170 pub reasoning_effort: Option<ReasoningEffort>,
8171 #[serde(default)]
8172 pub sandbox: Value,
8173 #[serde(
8174 rename = "serviceTier",
8175 default,
8176 skip_serializing_if = "Option::is_none"
8177 )]
8178 pub service_tier: Option<String>,
8179 #[serde()]
8180 pub thread: Thread,
8181 #[serde(
8184 rename = "turnsBackwardsCursor",
8185 default,
8186 skip_serializing_if = "Option::is_none"
8187 )]
8188 pub turns_backwards_cursor: Option<String>,
8189}
8190
8191#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
8193pub enum ThreadHistoryMode {
8194 #[serde(rename = "legacy")]
8195 Legacy,
8196 #[serde(rename = "paginated")]
8197 Paginated,
8198}
8199
8200#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8203#[serde(rename_all = "camelCase")]
8204pub struct ThreadItemEntry {
8205 #[serde()]
8206 pub item: ThreadItem,
8207 #[serde(rename = "turnId", default)]
8208 pub turn_id: String,
8209}
8210
8211#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8213#[serde(rename_all = "camelCase")]
8214pub struct ThreadItemsListParams {
8215 #[serde(default, skip_serializing_if = "Option::is_none")]
8216 pub cursor: Option<String>,
8217 #[serde(default, skip_serializing_if = "Option::is_none")]
8218 pub limit: Option<u32>,
8219 #[serde(
8220 rename = "sortDirection",
8221 default,
8222 skip_serializing_if = "Option::is_none"
8223 )]
8224 pub sort_direction: Option<SortDirection>,
8225 #[serde(rename = "threadId", default)]
8226 pub thread_id: String,
8227 #[serde(rename = "turnId", default, skip_serializing_if = "Option::is_none")]
8229 pub turn_id: Option<String>,
8230}
8231
8232#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8234#[serde(rename_all = "camelCase")]
8235pub struct ThreadItemsListResponse {
8236 #[serde(
8237 rename = "backwardsCursor",
8238 default,
8239 skip_serializing_if = "Option::is_none"
8240 )]
8241 pub backwards_cursor: Option<String>,
8242 #[serde(default)]
8243 pub data: Vec<ThreadItemEntry>,
8244 #[serde(
8245 rename = "nextCursor",
8246 default,
8247 skip_serializing_if = "Option::is_none"
8248 )]
8249 pub next_cursor: Option<String>,
8250}
8251
8252#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8256pub struct ThreadRealtimeItem {
8257 #[serde(default)]
8258 pub id: String,
8259 #[serde(rename = "realtimeSessionId", default)]
8260 pub realtime_session_id: String,
8261 #[serde(flatten)]
8262 pub detail: ThreadRealtimeItemDetail,
8263}
8264
8265#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8267#[serde(tag = "type", rename_all = "camelCase")]
8268pub enum ThreadRealtimeItemDetail {
8269 #[serde(rename = "realtimeSessionStarted")]
8270 RealtimeSessionStarted,
8271 #[serde(rename = "transcriptSegment")]
8272 TranscriptSegment {
8273 role: ThreadRealtimeTranscriptRole,
8274 text: String,
8275 },
8276 #[serde(rename = "bemItemPromoted")]
8277 BemItemPromoted {
8278 item_id: String,
8279 presentation: ThreadRealtimeBemItemPresentation,
8280 turn_id: String,
8281 },
8282 #[serde(rename = "realtimeSessionClosed")]
8283 RealtimeSessionClosed {
8284 outcome: ThreadRealtimeSessionOutcome,
8285 },
8286}
8287
8288#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8291#[serde(tag = "type", rename_all = "camelCase")]
8292pub enum ThreadRealtimeBemItemPresentation {
8293 #[serde(rename = "wholeItem")]
8294 WholeItem,
8295 #[serde(rename = "inlineMarkdown")]
8296 InlineMarkdown,
8297 #[serde(rename = "inlineVisualization")]
8298 InlineVisualization { index: u32 },
8299}
8300
8301#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8303#[serde(rename_all = "camelCase")]
8304pub struct ThreadRealtimeItemStartedNotification {
8305 #[serde()]
8306 pub item: ThreadRealtimeItem,
8307 #[serde(rename = "threadId", default)]
8308 pub thread_id: String,
8309}
8310
8311#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8313#[serde(rename_all = "camelCase")]
8314pub struct ThreadRealtimeItemCompletedNotification {
8315 #[serde()]
8316 pub item: ThreadRealtimeItem,
8317 #[serde(rename = "threadId", default)]
8318 pub thread_id: String,
8319}
8320
8321#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8324#[serde(rename_all = "camelCase")]
8325pub struct ThreadRealtimeItemTranscriptDeltaNotification {
8326 #[serde(default)]
8327 pub delta: String,
8328 #[serde(rename = "itemId", default)]
8329 pub item_id: String,
8330 #[serde(rename = "threadId", default)]
8331 pub thread_id: String,
8332}
8333
8334#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
8336pub enum ThreadRealtimeSessionOutcome {
8337 #[serde(rename = "ended")]
8338 Ended,
8339 #[serde(rename = "failed")]
8340 Failed,
8341}
8342
8343#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
8345pub enum ThreadRealtimeTranscriptRole {
8346 #[serde(rename = "user")]
8347 User,
8348 #[serde(rename = "assistant")]
8349 Assistant,
8350}
8351
8352#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8356#[serde(rename_all = "camelCase")]
8357pub struct ThreadRevertParams {
8358 #[serde(rename = "beforeTurnId", default)]
8360 pub before_turn_id: String,
8361 #[serde(rename = "threadId", default)]
8362 pub thread_id: String,
8363}
8364
8365#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8368#[serde(rename_all = "camelCase")]
8369pub struct ThreadRevertResponse {
8370 #[serde(
8371 rename = "itemsBackwardsCursor",
8372 default,
8373 skip_serializing_if = "Option::is_none"
8374 )]
8375 pub items_backwards_cursor: Option<String>,
8376 #[serde()]
8377 pub thread: Thread,
8378 #[serde(
8379 rename = "turnsBackwardsCursor",
8380 default,
8381 skip_serializing_if = "Option::is_none"
8382 )]
8383 pub turns_backwards_cursor: Option<String>,
8384}
8385
8386#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8387#[serde(rename_all = "camelCase")]
8388pub struct ThreadRollbackParams {
8389 #[serde(rename = "numTurns", default)]
8390 pub num_turns: i64,
8391 #[serde(rename = "threadId", default)]
8392 pub thread_id: String,
8393}
8394
8395#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8396#[serde(rename_all = "camelCase")]
8397pub struct ThreadRollbackResponse {
8398 #[serde(default)]
8399 pub thread: Value,
8400}
8401
8402#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8403#[serde(rename_all = "camelCase")]
8404pub struct ThreadSection {
8405 #[serde(default, skip_serializing_if = "Option::is_none")]
8406 pub appearance: Option<ThreadSectionAppearance>,
8407 #[serde(default)]
8408 pub id: String,
8409 #[serde(default)]
8410 pub name: String,
8411}
8412
8413#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8414#[serde(rename_all = "camelCase")]
8415pub struct ThreadSectionAppearance {
8416 #[serde(default, skip_serializing_if = "Option::is_none")]
8417 pub color: Option<String>,
8418 #[serde(default, skip_serializing_if = "Option::is_none")]
8419 pub icon: Option<String>,
8420}
8421
8422#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8423#[serde(rename_all = "camelCase")]
8424pub struct ThreadSectionCreateParams {
8425 #[serde(default, skip_serializing_if = "Option::is_none")]
8426 pub appearance: Option<ThreadSectionAppearance>,
8427 #[serde(default)]
8428 pub name: String,
8429}
8430
8431#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8432#[serde(rename_all = "camelCase")]
8433pub struct ThreadSectionCreateResponse {
8434 #[serde()]
8435 pub section: ThreadSection,
8436}
8437
8438#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8439#[serde(rename_all = "camelCase")]
8440pub struct ThreadSectionDeleteParams {
8441 #[serde(rename = "sectionId", default)]
8442 pub section_id: String,
8443}
8444
8445#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8446#[serde(rename_all = "camelCase")]
8447pub struct ThreadSectionDeleteResponse {
8448 #[serde(flatten, default, skip_serializing_if = "serde_json::Map::is_empty")]
8449 pub extra: serde_json::Map<String, Value>,
8450}
8451
8452#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8453#[serde(rename_all = "camelCase")]
8454pub struct ThreadSectionListParams {
8455 #[serde(default, skip_serializing_if = "Option::is_none")]
8456 pub cursor: Option<String>,
8457 #[serde(default, skip_serializing_if = "Option::is_none")]
8458 pub limit: Option<i64>,
8459}
8460
8461#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8462#[serde(rename_all = "camelCase")]
8463pub struct ThreadSectionListResponse {
8464 #[serde(default)]
8465 pub data: Vec<ThreadSection>,
8466 #[serde(
8467 rename = "nextCursor",
8468 default,
8469 skip_serializing_if = "Option::is_none"
8470 )]
8471 pub next_cursor: Option<String>,
8472}
8473
8474#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8475#[serde(rename_all = "camelCase")]
8476pub struct ThreadSectionMoveParams {
8477 #[serde(
8478 rename = "beforeThreadId",
8479 default,
8480 skip_serializing_if = "Option::is_none"
8481 )]
8482 pub before_thread_id: Option<String>,
8483 #[serde(rename = "sectionId", default, skip_serializing_if = "Option::is_none")]
8484 pub section_id: Option<String>,
8485 #[serde(rename = "threadId", default)]
8486 pub thread_id: String,
8487}
8488
8489#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8490#[serde(rename_all = "camelCase")]
8491pub struct ThreadSectionMoveResponse {
8492 #[serde(flatten, default, skip_serializing_if = "serde_json::Map::is_empty")]
8493 pub extra: serde_json::Map<String, Value>,
8494}
8495
8496#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8497#[serde(rename_all = "camelCase")]
8498pub struct ThreadSectionUpdateParams {
8499 #[serde(default, skip_serializing_if = "Option::is_none")]
8500 pub appearance: Option<ThreadSectionAppearance>,
8501 #[serde(default)]
8502 pub name: String,
8503 #[serde(rename = "sectionId", default)]
8504 pub section_id: String,
8505}
8506
8507#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8508#[serde(rename_all = "camelCase")]
8509pub struct ThreadSectionUpdateResponse {
8510 #[serde()]
8511 pub section: ThreadSection,
8512}
8513
8514#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8515#[serde(rename_all = "camelCase")]
8516pub struct ThreadSetNameParams {
8517 #[serde(default)]
8518 pub name: String,
8519 #[serde(rename = "threadId", default)]
8520 pub thread_id: String,
8521}
8522
8523#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8524#[serde(rename_all = "camelCase")]
8525pub struct ThreadSetNameResponse {
8526 #[serde(flatten, default, skip_serializing_if = "serde_json::Map::is_empty")]
8527 pub extra: serde_json::Map<String, Value>,
8528}
8529
8530#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8531#[serde(rename_all = "camelCase")]
8532pub struct ThreadSettings {
8533 #[serde(
8534 rename = "activePermissionProfile",
8535 default,
8536 skip_serializing_if = "Option::is_none"
8537 )]
8538 pub active_permission_profile: Option<ActivePermissionProfile>,
8539 #[serde(rename = "approvalPolicy")]
8540 pub approval_policy: AskForApproval,
8541 #[serde(rename = "approvalsReviewer")]
8542 pub approvals_reviewer: ApprovalsReviewer,
8543 #[serde(rename = "collaborationMode")]
8544 pub collaboration_mode: CollaborationMode,
8545 #[serde()]
8546 pub cwd: AbsolutePathBuf,
8547 #[serde(default, skip_serializing_if = "Option::is_none")]
8548 pub effort: Option<ReasoningEffort>,
8549 #[serde(default)]
8550 pub model: String,
8551 #[serde(rename = "modelProvider", default)]
8552 pub model_provider: String,
8553 #[serde(default, skip_serializing_if = "Option::is_none")]
8554 pub personality: Option<Personality>,
8555 #[serde(rename = "sandboxPolicy")]
8556 pub sandbox_policy: SandboxPolicy,
8557 #[serde(
8558 rename = "serviceTier",
8559 default,
8560 skip_serializing_if = "Option::is_none"
8561 )]
8562 pub service_tier: Option<String>,
8563 #[serde(default, skip_serializing_if = "Option::is_none")]
8564 pub summary: Option<ReasoningSummary>,
8565}
8566
8567#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8568#[serde(rename_all = "camelCase")]
8569pub struct ThreadSettingsUpdatedNotification {
8570 #[serde(rename = "threadId", default)]
8571 pub thread_id: String,
8572 #[serde(rename = "threadSettings")]
8573 pub thread_settings: ThreadSettings,
8574}
8575
8576#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8577#[serde(rename_all = "camelCase")]
8578pub struct ThreadShellCommandParams {
8579 #[serde(default)]
8580 pub command: String,
8581 #[serde(rename = "threadId", default)]
8582 pub thread_id: String,
8583 #[serde(rename = "timeoutMs", default, skip_serializing_if = "Option::is_none")]
8586 pub timeout_ms: Option<i64>,
8587}
8588
8589#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8590#[serde(rename_all = "camelCase")]
8591pub struct ThreadShellCommandResponse {
8592 #[serde(flatten, default, skip_serializing_if = "serde_json::Map::is_empty")]
8593 pub extra: serde_json::Map<String, Value>,
8594}
8595
8596#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
8597pub enum ThreadSortKey {
8598 #[serde(rename = "created_at")]
8599 Created_at,
8600 #[serde(rename = "updated_at")]
8601 Updated_at,
8602 #[serde(rename = "recency_at")]
8603 Recency_at,
8604 #[serde(rename = "section_position")]
8605 Section_position,
8606}
8607
8608#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq, Hash)]
8609#[serde(transparent)]
8610pub struct ThreadSource(pub String);
8611
8612#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
8613pub enum ThreadSourceKind {
8614 #[serde(rename = "cli")]
8615 Cli,
8616 #[serde(rename = "vscode")]
8617 Vscode,
8618 #[serde(rename = "exec")]
8619 Exec,
8620 #[serde(rename = "appServer")]
8621 AppServer,
8622 #[serde(rename = "subAgent")]
8623 SubAgent,
8624 #[serde(rename = "subAgentReview")]
8625 SubAgentReview,
8626 #[serde(rename = "subAgentCompact")]
8627 SubAgentCompact,
8628 #[serde(rename = "subAgentThreadSpawn")]
8629 SubAgentThreadSpawn,
8630 #[serde(rename = "subAgentOther")]
8631 SubAgentOther,
8632 #[serde(rename = "unknown")]
8633 Unknown,
8634}
8635
8636#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8637#[serde(rename_all = "camelCase")]
8638pub struct ThreadStartParams {
8639 #[serde(
8640 rename = "approvalPolicy",
8641 default,
8642 skip_serializing_if = "Option::is_none"
8643 )]
8644 pub approval_policy: Option<AskForApproval>,
8645 #[serde(
8646 rename = "approvalsReviewer",
8647 default,
8648 skip_serializing_if = "Option::is_none"
8649 )]
8650 pub approvals_reviewer: Option<ApprovalsReviewer>,
8651 #[serde(
8652 rename = "baseInstructions",
8653 default,
8654 skip_serializing_if = "Option::is_none"
8655 )]
8656 pub base_instructions: Option<String>,
8657 #[serde(default, skip_serializing_if = "Option::is_none")]
8658 pub config: Option<Value>,
8659 #[serde(default, skip_serializing_if = "Option::is_none")]
8660 pub cwd: Option<String>,
8661 #[serde(
8662 rename = "developerInstructions",
8663 default,
8664 skip_serializing_if = "Option::is_none"
8665 )]
8666 pub developer_instructions: Option<String>,
8667 #[serde(default, skip_serializing_if = "Option::is_none")]
8668 pub ephemeral: Option<bool>,
8669 #[serde(default, skip_serializing_if = "Option::is_none")]
8670 pub model: Option<String>,
8671 #[serde(
8672 rename = "modelProvider",
8673 default,
8674 skip_serializing_if = "Option::is_none"
8675 )]
8676 pub model_provider: Option<String>,
8677 #[serde(default, skip_serializing_if = "Option::is_none")]
8678 pub personality: Option<Personality>,
8679 #[serde(default, skip_serializing_if = "Option::is_none")]
8680 pub sandbox: Option<SandboxMode>,
8681 #[serde(
8682 rename = "serviceName",
8683 default,
8684 skip_serializing_if = "Option::is_none"
8685 )]
8686 pub service_name: Option<String>,
8687 #[serde(
8688 rename = "serviceTier",
8689 default,
8690 skip_serializing_if = "Option::is_none"
8691 )]
8692 pub service_tier: Option<String>,
8693 #[serde(
8694 rename = "sessionStartSource",
8695 default,
8696 skip_serializing_if = "Option::is_none"
8697 )]
8698 pub session_start_source: Option<ThreadStartSource>,
8699 #[serde(
8700 rename = "threadSource",
8701 default,
8702 skip_serializing_if = "Option::is_none"
8703 )]
8704 pub thread_source: Option<ThreadSource>,
8705}
8706
8707#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8708#[serde(rename_all = "camelCase")]
8709pub struct ThreadStartResponse {
8710 #[serde(rename = "approvalPolicy")]
8711 pub approval_policy: AskForApproval,
8712 #[serde(rename = "approvalsReviewer", default)]
8713 pub approvals_reviewer: Value,
8714 #[serde()]
8715 pub cwd: AbsolutePathBuf,
8716 #[serde(
8717 rename = "instructionSources",
8718 default,
8719 skip_serializing_if = "Option::is_none"
8720 )]
8721 pub instruction_sources: Option<Vec<LegacyAppPathString>>,
8722 #[serde(default)]
8723 pub model: String,
8724 #[serde(rename = "modelProvider", default)]
8725 pub model_provider: String,
8726 #[serde(
8727 rename = "reasoningEffort",
8728 default,
8729 skip_serializing_if = "Option::is_none"
8730 )]
8731 pub reasoning_effort: Option<ReasoningEffort>,
8732 #[serde(default)]
8733 pub sandbox: Value,
8734 #[serde(
8735 rename = "serviceTier",
8736 default,
8737 skip_serializing_if = "Option::is_none"
8738 )]
8739 pub service_tier: Option<String>,
8740 #[serde()]
8741 pub thread: Thread,
8742}
8743
8744#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
8745pub enum ThreadStartSource {
8746 #[serde(rename = "startup")]
8747 Startup,
8748 #[serde(rename = "clear")]
8749 Clear,
8750}
8751
8752#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8753#[serde(rename_all = "camelCase")]
8754pub struct ThreadStartedNotification {
8755 #[serde()]
8756 pub thread: Thread,
8757}
8758
8759#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8760#[serde(tag = "type", rename_all = "camelCase")]
8761pub enum ThreadStatus {
8762 #[serde(rename = "notLoaded")]
8763 NotLoaded,
8764 Idle,
8765 #[serde(rename = "systemError")]
8766 SystemError,
8767 Active {
8768 #[serde(rename = "activeFlags")]
8769 active_flags: Vec<ThreadActiveFlag>,
8770 },
8771}
8772
8773#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8774#[serde(rename_all = "camelCase")]
8775pub struct ThreadStatusChangedNotification {
8776 #[serde()]
8777 pub status: ThreadStatus,
8778 #[serde(rename = "threadId", default)]
8779 pub thread_id: String,
8780}
8781
8782#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8783#[serde(rename_all = "camelCase")]
8784pub struct ThreadTokenUsage {
8785 #[serde()]
8786 pub last: TokenUsageBreakdown,
8787 #[serde(
8788 rename = "modelContextWindow",
8789 default,
8790 skip_serializing_if = "Option::is_none"
8791 )]
8792 pub model_context_window: Option<i64>,
8793 #[serde()]
8794 pub total: TokenUsageBreakdown,
8795}
8796
8797#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8798#[serde(rename_all = "camelCase")]
8799pub struct ThreadTokenUsageUpdatedNotification {
8800 #[serde(rename = "threadId", default)]
8801 pub thread_id: String,
8802 #[serde(rename = "tokenUsage")]
8803 pub token_usage: ThreadTokenUsage,
8804 #[serde(rename = "turnId", default)]
8805 pub turn_id: String,
8806}
8807
8808#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8809#[serde(rename_all = "camelCase")]
8810pub struct ThreadUnarchiveParams {
8811 #[serde(rename = "threadId", default)]
8812 pub thread_id: String,
8813}
8814
8815#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8816#[serde(rename_all = "camelCase")]
8817pub struct ThreadUnarchiveResponse {
8818 #[serde()]
8819 pub thread: Thread,
8820}
8821
8822#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8823#[serde(rename_all = "camelCase")]
8824pub struct ThreadUnarchivedNotification {
8825 #[serde(rename = "threadId", default)]
8826 pub thread_id: String,
8827}
8828
8829#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8834#[serde(tag = "type", rename_all = "camelCase")]
8835#[allow(clippy::large_enum_variant)] pub enum ThreadTimelineEntry {
8837 Item {
8838 item: ThreadItem,
8839 position: u64,
8840 #[serde(rename = "turnId")]
8841 turn_id: String,
8842 },
8843 Realtime {
8844 item: ThreadRealtimeItem,
8845 position: u64,
8846 },
8847 TurnStarted {
8848 position: u64,
8849 #[serde(default, skip_serializing_if = "Option::is_none")]
8850 started_at: Option<i64>,
8851 turn_id: String,
8852 },
8853 TurnCompleted {
8854 #[serde(default, skip_serializing_if = "Option::is_none")]
8855 completed_at: Option<i64>,
8856 #[serde(default, skip_serializing_if = "Option::is_none")]
8857 duration_ms: Option<i64>,
8858 #[serde(default, skip_serializing_if = "Option::is_none")]
8859 error: Option<TurnError>,
8860 position: u64,
8861 #[serde(default, skip_serializing_if = "Option::is_none")]
8862 started_at: Option<i64>,
8863 status: TurnStatus,
8864 turn_id: String,
8865 },
8866}
8867
8868#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8870#[serde(rename_all = "camelCase")]
8871pub struct ThreadTurnsListParams {
8872 #[serde(default, skip_serializing_if = "Option::is_none")]
8873 pub cursor: Option<String>,
8874 #[serde(rename = "itemsView", default, skip_serializing_if = "Option::is_none")]
8876 pub items_view: Option<TurnItemsView>,
8877 #[serde(default, skip_serializing_if = "Option::is_none")]
8878 pub limit: Option<u32>,
8879 #[serde(
8880 rename = "sortDirection",
8881 default,
8882 skip_serializing_if = "Option::is_none"
8883 )]
8884 pub sort_direction: Option<SortDirection>,
8885 #[serde(rename = "threadId", default)]
8886 pub thread_id: String,
8887}
8888
8889#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8891#[serde(rename_all = "camelCase")]
8892pub struct ThreadTurnsListResponse {
8893 #[serde(
8894 rename = "backwardsCursor",
8895 default,
8896 skip_serializing_if = "Option::is_none"
8897 )]
8898 pub backwards_cursor: Option<String>,
8899 #[serde(default)]
8900 pub data: Vec<Turn>,
8901 #[serde(
8902 rename = "nextCursor",
8903 default,
8904 skip_serializing_if = "Option::is_none"
8905 )]
8906 pub next_cursor: Option<String>,
8907}
8908
8909#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8910#[serde(rename_all = "camelCase")]
8911pub struct ThreadUnsubscribeParams {
8912 #[serde(rename = "threadId", default)]
8913 pub thread_id: String,
8914}
8915
8916#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8917#[serde(rename_all = "camelCase")]
8918pub struct ThreadUnsubscribeResponse {
8919 #[serde()]
8920 pub status: ThreadUnsubscribeStatus,
8921}
8922
8923#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
8924pub enum ThreadUnsubscribeStatus {
8925 #[serde(rename = "notLoaded")]
8926 NotLoaded,
8927 #[serde(rename = "notSubscribed")]
8928 NotSubscribed,
8929 #[serde(rename = "unsubscribed")]
8930 Unsubscribed,
8931}
8932
8933#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8934#[serde(rename_all = "camelCase")]
8935pub struct TokenUsageBreakdown {
8936 #[serde(
8937 rename = "cacheWriteInputTokens",
8938 default,
8939 skip_serializing_if = "Option::is_none"
8940 )]
8941 pub cache_write_input_tokens: Option<i64>,
8942 #[serde(rename = "cachedInputTokens", default)]
8943 pub cached_input_tokens: i64,
8944 #[serde(rename = "inputTokens", default)]
8945 pub input_tokens: i64,
8946 #[serde(rename = "outputTokens", default)]
8947 pub output_tokens: i64,
8948 #[serde(rename = "reasoningOutputTokens", default)]
8949 pub reasoning_output_tokens: i64,
8950 #[serde(rename = "totalTokens", default)]
8951 pub total_tokens: i64,
8952}
8953
8954#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8955#[serde(rename_all = "camelCase")]
8956pub struct Tool {
8957 #[serde(default, skip_serializing_if = "Option::is_none")]
8958 pub _meta: Option<Value>,
8959 #[serde(default, skip_serializing_if = "Option::is_none")]
8960 pub annotations: Option<Value>,
8961 #[serde(default, skip_serializing_if = "Option::is_none")]
8962 pub description: Option<String>,
8963 #[serde(default, skip_serializing_if = "Option::is_none")]
8964 pub icons: Option<Vec<Value>>,
8965 #[serde(rename = "inputSchema", default)]
8966 pub input_schema: Value,
8967 #[serde(default)]
8968 pub name: String,
8969 #[serde(
8970 rename = "outputSchema",
8971 default,
8972 skip_serializing_if = "Option::is_none"
8973 )]
8974 pub output_schema: Option<Value>,
8975 #[serde(default, skip_serializing_if = "Option::is_none")]
8976 pub title: Option<String>,
8977}
8978
8979#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8980#[serde(rename_all = "camelCase")]
8981pub struct ToolRequestUserInputAnswer {
8982 #[serde(default)]
8983 pub answers: Vec<String>,
8984}
8985
8986#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8987#[serde(rename_all = "camelCase")]
8988pub struct ToolRequestUserInputOption {
8989 #[serde(default)]
8990 pub description: String,
8991 #[serde(default)]
8992 pub label: String,
8993}
8994
8995#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
8996#[serde(rename_all = "camelCase")]
8997pub struct ToolRequestUserInputParams {
8998 #[serde(
8999 rename = "autoResolutionMs",
9000 default,
9001 skip_serializing_if = "Option::is_none"
9002 )]
9003 pub auto_resolution_ms: Option<i64>,
9004 #[serde(rename = "isBlocking", default)]
9005 pub is_blocking: bool,
9006 #[serde(rename = "itemId", default)]
9007 pub item_id: String,
9008 #[serde(default)]
9009 pub questions: Vec<ToolRequestUserInputQuestion>,
9010 #[serde(rename = "threadId", default)]
9011 pub thread_id: String,
9012 #[serde(rename = "turnId", default)]
9013 pub turn_id: String,
9014}
9015
9016#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
9017#[serde(rename_all = "camelCase")]
9018pub struct ToolRequestUserInputQuestion {
9019 #[serde(default)]
9020 pub header: String,
9021 #[serde(default)]
9022 pub id: String,
9023 #[serde(rename = "isOther", default, skip_serializing_if = "Option::is_none")]
9024 pub is_other: Option<bool>,
9025 #[serde(rename = "isSecret", default, skip_serializing_if = "Option::is_none")]
9026 pub is_secret: Option<bool>,
9027 #[serde(default, skip_serializing_if = "Option::is_none")]
9028 pub options: Option<Vec<ToolRequestUserInputOption>>,
9029 #[serde(default)]
9030 pub question: String,
9031}
9032
9033#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
9034#[serde(rename_all = "camelCase")]
9035pub struct ToolRequestUserInputResponse {
9036 #[serde(default)]
9037 pub answers: std::collections::BTreeMap<String, ToolRequestUserInputAnswer>,
9038}
9039
9040#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
9041#[serde(rename_all = "camelCase")]
9042pub struct ToolsV2 {
9043 #[serde(default, skip_serializing_if = "Option::is_none")]
9044 pub web_search: Option<WebSearchToolConfig>,
9045}
9046
9047#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
9048#[serde(rename_all = "camelCase")]
9049pub struct Turn {
9050 #[serde(
9051 rename = "completedAt",
9052 default,
9053 skip_serializing_if = "Option::is_none"
9054 )]
9055 pub completed_at: Option<i64>,
9056 #[serde(
9057 rename = "durationMs",
9058 default,
9059 skip_serializing_if = "Option::is_none"
9060 )]
9061 pub duration_ms: Option<i64>,
9062 #[serde(default, skip_serializing_if = "Option::is_none")]
9063 pub error: Option<TurnError>,
9064 #[serde(default)]
9065 pub id: String,
9066 #[serde(default)]
9067 pub items: Vec<ThreadItem>,
9068 #[serde(rename = "itemsView", default, skip_serializing_if = "Option::is_none")]
9069 pub items_view: Option<Value>,
9070 #[serde(rename = "startedAt", default, skip_serializing_if = "Option::is_none")]
9071 pub started_at: Option<i64>,
9072 #[serde()]
9073 pub status: TurnStatus,
9074}
9075
9076#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
9077#[serde(rename_all = "camelCase")]
9078pub struct TurnCompletedNotification {
9079 #[serde(rename = "threadId", default)]
9080 pub thread_id: String,
9081 #[serde()]
9082 pub turn: Turn,
9083}
9084
9085#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
9086#[serde(rename_all = "camelCase")]
9087pub struct TurnDiffUpdatedNotification {
9088 #[serde(default)]
9089 pub diff: String,
9090 #[serde(rename = "threadId", default)]
9091 pub thread_id: String,
9092 #[serde(rename = "turnId", default)]
9093 pub turn_id: String,
9094}
9095
9096#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
9097#[serde(rename_all = "camelCase")]
9098pub struct TurnError {
9099 #[serde(
9100 rename = "additionalDetails",
9101 default,
9102 skip_serializing_if = "Option::is_none"
9103 )]
9104 pub additional_details: Option<String>,
9105 #[serde(
9106 rename = "codexErrorInfo",
9107 default,
9108 skip_serializing_if = "Option::is_none"
9109 )]
9110 pub codex_error_info: Option<CodexErrorInfo>,
9111 #[serde(default)]
9112 pub message: String,
9113 #[serde(default, skip_serializing_if = "Option::is_none")]
9116 pub misalignment: Option<MisalignmentErrorDetails>,
9117}
9118
9119#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
9120#[serde(rename_all = "camelCase")]
9121pub struct TurnInterruptParams {
9122 #[serde(rename = "threadId", default)]
9123 pub thread_id: String,
9124 #[serde(rename = "turnId", default)]
9125 pub turn_id: String,
9126}
9127
9128#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
9129#[serde(rename_all = "camelCase")]
9130pub struct TurnInterruptResponse {
9131 #[serde(flatten, default, skip_serializing_if = "serde_json::Map::is_empty")]
9132 pub extra: serde_json::Map<String, Value>,
9133}
9134
9135#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)]
9136pub enum TurnItemsView {
9137 #[serde(rename = "notLoaded")]
9138 NotLoaded,
9139 #[serde(rename = "summary")]
9140 Summary,
9141 #[serde(rename = "full")]
9142 Full,
9143}
9144
9145#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
9146#[serde(rename_all = "camelCase")]
9147pub struct TurnModerationMetadataNotification {
9148 #[serde(default)]
9149 pub metadata: Value,
9150 #[serde(rename = "threadId", default)]
9151 pub thread_id: String,
9152 #[serde(rename = "turnId", default)]
9153 pub turn_id: String,
9154}
9155
9156#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
9157#[serde(rename_all = "camelCase")]
9158pub struct TurnPlanStep {
9159 #[serde()]
9160 pub status: TurnPlanStepStatus,
9161 #[serde(default)]
9162 pub step: String,
9163}
9164
9165#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
9166pub enum TurnPlanStepStatus {
9167 #[serde(rename = "pending")]
9168 Pending,
9169 #[serde(rename = "inProgress")]
9170 InProgress,
9171 #[serde(rename = "completed")]
9172 Completed,
9173}
9174
9175#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
9176#[serde(rename_all = "camelCase")]
9177pub struct TurnPlanUpdatedNotification {
9178 #[serde(default, skip_serializing_if = "Option::is_none")]
9179 pub explanation: Option<String>,
9180 #[serde(default)]
9181 pub plan: Vec<TurnPlanStep>,
9182 #[serde(rename = "threadId", default)]
9183 pub thread_id: String,
9184 #[serde(rename = "turnId", default)]
9185 pub turn_id: String,
9186}
9187
9188#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
9189#[serde(rename_all = "camelCase")]
9190pub struct TurnStartParams {
9191 #[serde(
9192 rename = "approvalPolicy",
9193 default,
9194 skip_serializing_if = "Option::is_none"
9195 )]
9196 pub approval_policy: Option<AskForApproval>,
9197 #[serde(
9198 rename = "approvalsReviewer",
9199 default,
9200 skip_serializing_if = "Option::is_none"
9201 )]
9202 pub approvals_reviewer: Option<ApprovalsReviewer>,
9203 #[serde(
9204 rename = "clientUserMessageId",
9205 default,
9206 skip_serializing_if = "Option::is_none"
9207 )]
9208 pub client_user_message_id: Option<String>,
9209 #[serde(default, skip_serializing_if = "Option::is_none")]
9210 pub cwd: Option<String>,
9211 #[serde(default, skip_serializing_if = "Option::is_none")]
9212 pub effort: Option<ReasoningEffort>,
9213 #[serde(default)]
9214 pub input: Vec<UserInput>,
9215 #[serde(default, skip_serializing_if = "Option::is_none")]
9216 pub model: Option<String>,
9217 #[serde(
9218 rename = "outputSchema",
9219 default,
9220 skip_serializing_if = "Option::is_none"
9221 )]
9222 pub output_schema: Option<Value>,
9223 #[serde(default, skip_serializing_if = "Option::is_none")]
9224 pub personality: Option<Personality>,
9225 #[serde(
9226 rename = "sandboxPolicy",
9227 default,
9228 skip_serializing_if = "Option::is_none"
9229 )]
9230 pub sandbox_policy: Option<SandboxPolicy>,
9231 #[serde(
9232 rename = "serviceTier",
9233 default,
9234 skip_serializing_if = "Option::is_none"
9235 )]
9236 pub service_tier: Option<String>,
9237 #[serde(
9240 rename = "serviceTierForTurn",
9241 default,
9242 skip_serializing_if = "Option::is_none"
9243 )]
9244 pub service_tier_for_turn: Option<String>,
9245 #[serde(default, skip_serializing_if = "Option::is_none")]
9246 pub summary: Option<ReasoningSummary>,
9247 #[serde(rename = "threadId", default)]
9248 pub thread_id: String,
9249 #[serde(
9252 rename = "toolOutput",
9253 default,
9254 skip_serializing_if = "Option::is_none"
9255 )]
9256 pub tool_output: Option<TurnToolOutput>,
9257 #[serde(
9260 rename = "turnTrigger",
9261 default,
9262 skip_serializing_if = "Option::is_none"
9263 )]
9264 pub turn_trigger: Option<String>,
9265}
9266
9267#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
9268#[serde(rename_all = "camelCase")]
9269pub struct TurnStartResponse {
9270 #[serde()]
9271 pub turn: Turn,
9272}
9273
9274#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
9275#[serde(rename_all = "camelCase")]
9276pub struct TurnStartedNotification {
9277 #[serde(rename = "threadId", default)]
9278 pub thread_id: String,
9279 #[serde()]
9280 pub turn: Turn,
9281}
9282
9283#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
9284pub enum TurnStatus {
9285 #[serde(rename = "completed")]
9286 Completed,
9287 #[serde(rename = "interrupted")]
9288 Interrupted,
9289 #[serde(rename = "failed")]
9290 Failed,
9291 #[serde(rename = "inProgress")]
9292 InProgress,
9293}
9294
9295#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
9298#[serde(rename_all = "camelCase")]
9299pub struct TurnToolOutput {
9300 #[serde(default)]
9301 pub name: String,
9302 #[serde(default, skip_serializing_if = "Option::is_none")]
9303 pub namespace: Option<String>,
9304 #[serde()]
9305 pub output: FunctionCallOutputBody,
9306}
9307
9308#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
9309#[serde(rename_all = "camelCase")]
9310pub struct TurnSteerParams {
9311 #[serde(
9312 rename = "clientUserMessageId",
9313 default,
9314 skip_serializing_if = "Option::is_none"
9315 )]
9316 pub client_user_message_id: Option<String>,
9317 #[serde(rename = "expectedTurnId", default)]
9318 pub expected_turn_id: String,
9319 #[serde(default)]
9320 pub input: Vec<UserInput>,
9321 #[serde(rename = "threadId", default)]
9322 pub thread_id: String,
9323}
9324
9325#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
9326#[serde(rename_all = "camelCase")]
9327pub struct TurnSteerResponse {
9328 #[serde(rename = "turnId", default)]
9329 pub turn_id: String,
9330}
9331
9332#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
9333#[serde(tag = "type", rename_all = "camelCase")]
9334pub enum UserInput {
9335 Text {
9336 text: String,
9337 #[serde(default, skip_serializing_if = "Option::is_none")]
9338 text_elements: Option<Vec<TextElement>>,
9339 },
9340 Image {
9341 #[serde(default, skip_serializing_if = "Option::is_none")]
9342 detail: Option<ImageDetail>,
9343 url: String,
9344 },
9345 #[serde(rename = "localImage")]
9346 LocalImage {
9347 #[serde(default, skip_serializing_if = "Option::is_none")]
9348 detail: Option<ImageDetail>,
9349 path: String,
9350 },
9351 Audio {
9352 url: String,
9353 },
9354 #[serde(rename = "localAudio")]
9355 LocalAudio {
9356 path: String,
9357 },
9358 Skill {
9359 name: String,
9360 path: String,
9361 },
9362 Mention {
9363 name: String,
9364 path: String,
9365 },
9366}
9367
9368#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
9369pub enum Verbosity {
9370 #[serde(rename = "low")]
9371 Low,
9372 #[serde(rename = "medium")]
9373 Medium,
9374 #[serde(rename = "high")]
9375 High,
9376}
9377
9378#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
9379#[serde(rename_all = "camelCase")]
9380pub struct WarningNotification {
9381 #[serde(default)]
9382 pub message: String,
9383 #[serde(rename = "threadId", default, skip_serializing_if = "Option::is_none")]
9384 pub thread_id: Option<String>,
9385}
9386
9387#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
9388#[serde(tag = "type", rename_all = "camelCase")]
9389pub enum WebSearchAction {
9390 Search {
9391 #[serde(default, skip_serializing_if = "Option::is_none")]
9392 queries: Option<Vec<String>>,
9393 #[serde(default, skip_serializing_if = "Option::is_none")]
9394 query: Option<String>,
9395 },
9396 #[serde(rename = "openPage")]
9397 OpenPage {
9398 #[serde(default, skip_serializing_if = "Option::is_none")]
9399 url: Option<String>,
9400 },
9401 #[serde(rename = "findInPage")]
9402 FindInPage {
9403 #[serde(default, skip_serializing_if = "Option::is_none")]
9404 pattern: Option<String>,
9405 #[serde(default, skip_serializing_if = "Option::is_none")]
9406 url: Option<String>,
9407 },
9408 Other,
9409}
9410
9411#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
9412pub enum WebSearchContextSize {
9413 #[serde(rename = "low")]
9414 Low,
9415 #[serde(rename = "medium")]
9416 Medium,
9417 #[serde(rename = "high")]
9418 High,
9419}
9420
9421#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
9422#[serde(rename_all = "camelCase")]
9423pub struct WebSearchLocation {
9424 #[serde(default, skip_serializing_if = "Option::is_none")]
9425 pub city: Option<String>,
9426 #[serde(default, skip_serializing_if = "Option::is_none")]
9427 pub country: Option<String>,
9428 #[serde(default, skip_serializing_if = "Option::is_none")]
9429 pub region: Option<String>,
9430 #[serde(default, skip_serializing_if = "Option::is_none")]
9431 pub timezone: Option<String>,
9432}
9433
9434#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
9435pub enum WebSearchMode {
9436 #[serde(rename = "disabled")]
9437 Disabled,
9438 #[serde(rename = "cached")]
9439 Cached,
9440 #[serde(rename = "indexed")]
9441 Indexed,
9442 #[serde(rename = "live")]
9443 Live,
9444}
9445
9446#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
9447#[serde(rename_all = "camelCase")]
9448pub struct WebSearchToolConfig {
9449 #[serde(default, skip_serializing_if = "Option::is_none")]
9450 pub allowed_domains: Option<Vec<String>>,
9451 #[serde(default, skip_serializing_if = "Option::is_none")]
9452 pub context_size: Option<WebSearchContextSize>,
9453 #[serde(default, skip_serializing_if = "Option::is_none")]
9454 pub location: Option<WebSearchLocation>,
9455}
9456
9457#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
9458pub enum WindowsSandboxReadiness {
9459 #[serde(rename = "ready")]
9460 Ready,
9461 #[serde(rename = "notConfigured")]
9462 NotConfigured,
9463 #[serde(rename = "updateRequired")]
9464 UpdateRequired,
9465}
9466
9467#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
9468#[serde(rename_all = "camelCase")]
9469pub struct WindowsSandboxReadinessResponse {
9470 #[serde()]
9471 pub status: WindowsSandboxReadiness,
9472}
9473
9474#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
9475#[serde(rename_all = "camelCase")]
9476pub struct WindowsSandboxSetupCompletedNotification {
9477 #[serde(default, skip_serializing_if = "Option::is_none")]
9478 pub error: Option<String>,
9479 #[serde()]
9480 pub mode: WindowsSandboxSetupMode,
9481 #[serde(default)]
9482 pub success: bool,
9483}
9484
9485#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
9486pub enum WindowsSandboxSetupMode {
9487 #[serde(rename = "elevated")]
9488 Elevated,
9489 #[serde(rename = "unelevated")]
9490 Unelevated,
9491}
9492
9493#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
9494#[serde(rename_all = "camelCase")]
9495pub struct WindowsSandboxSetupStartParams {
9496 #[serde(default, skip_serializing_if = "Option::is_none")]
9497 pub cwd: Option<AbsolutePathBuf>,
9498 #[serde()]
9499 pub mode: WindowsSandboxSetupMode,
9500}
9501
9502#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
9503#[serde(rename_all = "camelCase")]
9504pub struct WindowsSandboxSetupStartResponse {
9505 #[serde(default)]
9506 pub started: bool,
9507}
9508
9509#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
9510#[serde(rename_all = "camelCase")]
9511pub struct WindowsWorldWritableWarningNotification {
9512 #[serde(rename = "extraCount", default)]
9513 pub extra_count: i64,
9514 #[serde(rename = "failedScan", default)]
9515 pub failed_scan: bool,
9516 #[serde(rename = "samplePaths", default)]
9517 pub sample_paths: Vec<String>,
9518}
9519
9520#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
9521#[serde(rename_all = "camelCase")]
9522pub struct WorkspaceMessage {
9523 #[serde(
9524 rename = "archivedAt",
9525 default,
9526 skip_serializing_if = "Option::is_none"
9527 )]
9528 pub archived_at: Option<i64>,
9529 #[serde(rename = "createdAt", default, skip_serializing_if = "Option::is_none")]
9530 pub created_at: Option<i64>,
9531 #[serde(rename = "messageBody", default)]
9532 pub message_body: String,
9533 #[serde(rename = "messageId", default)]
9534 pub message_id: String,
9535 #[serde(rename = "messageType")]
9536 pub message_type: WorkspaceMessageType,
9537}
9538
9539#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
9540pub enum WorkspaceMessageType {
9541 #[serde(rename = "headline")]
9542 Headline,
9543 #[serde(rename = "announcement")]
9544 Announcement,
9545 #[serde(rename = "unknown")]
9546 Unknown,
9547}
9548
9549#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
9550pub enum WriteStatus {
9551 #[serde(rename = "ok")]
9552 Ok,
9553 #[serde(rename = "okOverridden")]
9554 OkOverridden,
9555}