@ellipsis-dev/sdk 0.34.1 → 0.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -110,9 +110,9 @@ interface paths {
110
110
  * Get Account Billing
111
111
  * @description Explain whether your account can start sessions.
112
112
  *
113
- * Uses the same account gate as session admission, including credit,
114
- * contact email, and personal subscription eligibility. Scoped
115
- * spend limits are reported separately by /v1/account/budget.
113
+ * Uses the same account gate as session admission, including credit
114
+ * and contact email. Scoped spend limits are reported separately by
115
+ * /v1/account/budget.
116
116
  */
117
117
  get: operations['get_account_billing'];
118
118
  put?: never;
@@ -772,10 +772,11 @@ interface paths {
772
772
  * The same data as the analytics dashboard.
773
773
  *
774
774
  * Windowing: pass explicit start/end, or days (default: the last
775
- * 30 days). account_type in all|user|bot scopes the authors (bot =
776
- * the apps/agents). Available to all credential types: the
777
- * responses expose the organization's own GitHub PR/review activity,
778
- * no secrets.
775
+ * 30 days). `interval` names the width of each entry in `series`,
776
+ * chosen from the window's length. account_type in all|user|bot
777
+ * scopes the authors (bot = the apps/agents). Available to all
778
+ * credential types: the responses expose the organization's own
779
+ * GitHub PR/review activity, no secrets.
779
780
  */
780
781
  get: operations['get_analytics_metrics'];
781
782
  put?: never;
@@ -798,7 +799,9 @@ interface paths {
798
799
  * @description Return pull-request analytics.
799
800
  *
800
801
  * Windowing: pass explicit start/end, or days (default: the last
801
- * 30 days). account_type in all|user|bot scopes the authors.
802
+ * 30 days). `interval` names the width of each entry in `series`,
803
+ * chosen from the window's length. account_type in all|user|bot
804
+ * scopes the authors.
802
805
  */
803
806
  get: operations['get_analytics_pull_requests'];
804
807
  put?: never;
@@ -823,7 +826,8 @@ interface paths {
823
826
  * account_type scopes reviewers (bot|user|all) — e.g. "what apps
824
827
  * review the most PRs?" is the reviewer facets here with
825
828
  * account_type=bot. Windowing: pass explicit start/end, or days
826
- * (default: the last 30 days).
829
+ * (default: the last 30 days). `interval` names the width of each
830
+ * entry in `series`, chosen from the window's length.
827
831
  */
828
832
  get: operations['get_analytics_reviews'];
829
833
  put?: never;
@@ -993,8 +997,9 @@ interface paths {
993
997
  * Only sessions carrying this exact saved handler id are counted;
994
998
  * legacy sessions without handler provenance are excluded.
995
999
  *
996
- * spend_windows reports current trailing 1-, 7-, and 28-day credit
997
- * debits and effective handler budgets across all attributed sessions.
1000
+ * spend_windows reports current trailing 1-, 7-, and 28-day spend,
1001
+ * including subscription tokens, and effective handler budgets across
1002
+ * all attributed sessions.
998
1003
  * Those windows use usage timestamps and are independent of start/end.
999
1004
  *
1000
1005
  * Requires configs:read matching handlers/{service} and unrestricted
@@ -1845,166 +1850,6 @@ interface paths {
1845
1850
  patch?: never;
1846
1851
  trace?: never;
1847
1852
  };
1848
- '/v1/templates': {
1849
- parameters: {
1850
- query?: never;
1851
- header?: never;
1852
- path?: never;
1853
- cookie?: never;
1854
- };
1855
- /**
1856
- * List Agent Templates
1857
- * @description List the built-in starter agent templates.
1858
- *
1859
- * Behind auth but not account-scoped — the data is static
1860
- * product content shared by the dashboard, landing site, and CLI.
1861
- */
1862
- get: operations['list_agent_templates'];
1863
- put?: never;
1864
- post?: never;
1865
- delete?: never;
1866
- options?: never;
1867
- head?: never;
1868
- patch?: never;
1869
- trace?: never;
1870
- };
1871
- '/v1/templates/{id}': {
1872
- parameters: {
1873
- query?: never;
1874
- header?: never;
1875
- path?: never;
1876
- cookie?: never;
1877
- };
1878
- /**
1879
- * Get Agent Template
1880
- * @description Return one built-in agent template by slug.
1881
- */
1882
- get: operations['get_agent_template'];
1883
- put?: never;
1884
- post?: never;
1885
- delete?: never;
1886
- options?: never;
1887
- head?: never;
1888
- patch?: never;
1889
- trace?: never;
1890
- };
1891
- '/v1/user/subscription_tokens': {
1892
- parameters: {
1893
- query?: never;
1894
- header?: never;
1895
- path?: never;
1896
- cookie?: never;
1897
- };
1898
- /**
1899
- * List Subscription Tokens
1900
- * @description List your subscription tokens.
1901
- *
1902
- * One entry per supported provider, whether or not you have saved a
1903
- * token for it. Tokens are write-only: the response carries only
1904
- * `token_last4`, never the token.
1905
- */
1906
- get: operations['list_subscription_tokens'];
1907
- put?: never;
1908
- post?: never;
1909
- delete?: never;
1910
- options?: never;
1911
- head?: never;
1912
- patch?: never;
1913
- trace?: never;
1914
- };
1915
- '/v1/user/subscription_tokens/{provider}': {
1916
- parameters: {
1917
- query?: never;
1918
- header?: never;
1919
- path?: never;
1920
- cookie?: never;
1921
- };
1922
- /**
1923
- * Get Subscription Token
1924
- * @description Get one provider's subscription token.
1925
- *
1926
- * `configured` is false when nothing is saved. The token itself is
1927
- * never returned, only `token_last4`.
1928
- */
1929
- get: operations['get_subscription_token'];
1930
- put?: never;
1931
- /**
1932
- * Set Subscription Token
1933
- * @description Save your subscription token for a provider.
1934
- *
1935
- * Replaces whatever was stored. The token is saved DISABLED and
1936
- * routes nothing until `POST /v1/user/subscription_tokens/{provider}/verify`
1937
- * succeeds. For Claude, use `claude setup-token`. For Codex, paste
1938
- * the auth.json credentials from a ChatGPT login. Each subscription
1939
- * pays only for models from its corresponding provider.
1940
- */
1941
- post: operations['set_subscription_token'];
1942
- /**
1943
- * Delete Subscription Token
1944
- * @description Delete your subscription token for a provider.
1945
- *
1946
- * Your sessions stop billing your subscription immediately, and the
1947
- * usage reading goes with it — it described that token's plan.
1948
- */
1949
- delete: operations['delete_subscription_token'];
1950
- options?: never;
1951
- head?: never;
1952
- patch?: never;
1953
- trace?: never;
1954
- };
1955
- '/v1/user/subscription_tokens/{provider}/usage': {
1956
- parameters: {
1957
- query?: never;
1958
- header?: never;
1959
- path?: never;
1960
- cookie?: never;
1961
- };
1962
- /**
1963
- * Get Subscription Usage
1964
- * @description Get your plan's last-observed rate-limit windows.
1965
- *
1966
- * Display-only, and only as fresh as your last call through Ellipsis
1967
- * (`observed_at`) — the same plan used outside Ellipsis moves the
1968
- * real windows without us seeing them. Null unless a token is
1969
- * enabled for the provider: a disabled token routes nothing, so any
1970
- * reading behind it is stale by construction.
1971
- */
1972
- get: operations['get_subscription_usage'];
1973
- put?: never;
1974
- post?: never;
1975
- delete?: never;
1976
- options?: never;
1977
- head?: never;
1978
- patch?: never;
1979
- trace?: never;
1980
- };
1981
- '/v1/user/subscription_tokens/{provider}/verify': {
1982
- parameters: {
1983
- query?: never;
1984
- header?: never;
1985
- path?: never;
1986
- cookie?: never;
1987
- };
1988
- get?: never;
1989
- put?: never;
1990
- /**
1991
- * Verify Subscription Token
1992
- * @description Verify the stored token by using it.
1993
- *
1994
- * Makes one minimal call on the exact runtime path, so a pass proves
1995
- * the token is what will pay. This is the gate on routing: success
1996
- * enables the token, failure disables it, so verifying a revoked
1997
- * token is how you stop it routing. A 200 with `ok: false` is the
1998
- * normal way a bad token is reported — it is an answer, not a
1999
- * transport failure.
2000
- */
2001
- post: operations['verify_subscription_token'];
2002
- delete?: never;
2003
- options?: never;
2004
- head?: never;
2005
- patch?: never;
2006
- trace?: never;
2007
- };
2008
1853
  '/v1/user/tokens': {
2009
1854
  parameters: {
2010
1855
  query?: never;
@@ -2513,6 +2358,11 @@ interface components {
2513
2358
  * @description The agent's account-unique addressable name (a slug of its display name); usable anywhere an agent is referenced, interchangeably with the id.
2514
2359
  */
2515
2360
  name?: string | null;
2361
+ /**
2362
+ * Next Run At
2363
+ * @description When the agent's cron trigger next starts a session. Null when the agent has no cron trigger, its trigger is paused, or the agent is disabled.
2364
+ */
2365
+ next_run_at?: string | null;
2516
2366
  /**
2517
2367
  * Pending Pull Request Url
2518
2368
  * @description The open pull request that adds this agent's file. Non-null means the agent is not live yet: it starts running once the pull request merges and syncs.
@@ -2672,64 +2522,6 @@ interface components {
2672
2522
  /** @description The tokens the session used. */
2673
2523
  tokens: components['schemas']['Tokens'];
2674
2524
  };
2675
- /**
2676
- * AgentTemplate
2677
- * @description A built-in agent template: a ready-to-use agent plus the
2678
- * metadata that describes it in the template gallery.
2679
- */
2680
- AgentTemplate: {
2681
- /**
2682
- * Description
2683
- * @description A short description of the template.
2684
- */
2685
- description: string;
2686
- /**
2687
- * Name
2688
- * @description The template's display name.
2689
- */
2690
- name: string;
2691
- /**
2692
- * Slug
2693
- * @description The template's unique identifier.
2694
- */
2695
- slug: string;
2696
- /**
2697
- * Summary
2698
- * @description A one-line summary of the template.
2699
- */
2700
- summary: string;
2701
- /**
2702
- * Tags
2703
- * @description Gallery tags for the template.
2704
- */
2705
- tags: string[];
2706
- /**
2707
- * Use Case
2708
- * @description The use case the template is designed for.
2709
- */
2710
- use_case: string;
2711
- /**
2712
- * Yaml
2713
- * @description The complete, schema-valid agent YAML, ready to write to disk.
2714
- */
2715
- yaml: string;
2716
- };
2717
- /**
2718
- * AgentTemplatesListResponse
2719
- * @description The built-in agent templates.
2720
- */
2721
- AgentTemplatesListResponse: {
2722
- /**
2723
- * Templates
2724
- * @description The available templates.
2725
- */
2726
- templates: components['schemas']['AgentTemplate'][];
2727
- /**
2728
- * Walkthrough Yaml
2729
- * @description A fully-populated example agent, for display in setup walkthroughs. Not a template to run as-is.
2730
- */
2731
- walkthrough_yaml: string;
2732
- };
2733
2525
  /**
2734
2526
  * AgentsListResponse
2735
2527
  * @description The caller's agents.
@@ -2852,79 +2644,81 @@ interface components {
2852
2644
  };
2853
2645
  /**
2854
2646
  * AnalyticsMetricsBucket
2855
- * @description Pull-request and review activity on one UTC day. Each count keys on the
2856
- * relevant event's own timestamp: PRs on when they were opened, merged, or
2857
- * closed; review verdicts on when the review was submitted; review comments
2858
- * on when the comment was created. The "shipped" rollup (additions,
2859
- * deletions, commits, active contributors) covers PRs merged that day.
2647
+ * @description Pull-request and review activity in one bucket of the window. Each count
2648
+ * keys on its own event's timestamp. Pull requests count when they were
2649
+ * opened, merged, or closed, review verdicts when the review was submitted,
2650
+ * and review comments when the comment was created. The shipped rollup
2651
+ * (additions, deletions, commits, active contributors) covers pull requests
2652
+ * merged in the bucket.
2860
2653
  */
2861
2654
  AnalyticsMetricsBucket: {
2862
2655
  /**
2863
2656
  * Active Contributors
2864
- * @description Distinct authors who merged a pull request this day.
2657
+ * @description Distinct authors who merged a pull request in this bucket.
2865
2658
  */
2866
2659
  active_contributors: number;
2867
2660
  /**
2868
2661
  * Additions
2869
- * @description Lines added across pull requests merged this day.
2662
+ * @description Lines added across pull requests merged in this bucket.
2870
2663
  */
2871
2664
  additions: number;
2872
2665
  /**
2873
2666
  * Approved
2874
- * @description Approving reviews submitted this day.
2667
+ * @description Approving reviews submitted in this bucket.
2875
2668
  */
2876
2669
  approved: number;
2877
2670
  /**
2878
2671
  * Changes Requested
2879
- * @description Changes-requested reviews submitted this day.
2672
+ * @description Changes-requested reviews submitted in this bucket.
2880
2673
  */
2881
2674
  changes_requested: number;
2882
2675
  /**
2883
2676
  * Commented
2884
- * @description Comment-only reviews submitted this day.
2677
+ * @description Comment-only reviews submitted in this bucket.
2885
2678
  */
2886
2679
  commented: number;
2887
2680
  /**
2888
2681
  * Commits
2889
- * @description Commits across pull requests merged this day.
2682
+ * @description Commits across pull requests merged in this bucket.
2890
2683
  */
2891
2684
  commits: number;
2892
2685
  /**
2893
2686
  * Date
2894
- * @description The UTC day, formatted YYYY-MM-DD.
2687
+ * Format: date-time
2688
+ * @description When the bucket starts, in UTC.
2895
2689
  */
2896
2690
  date: string;
2897
2691
  /**
2898
2692
  * Deletions
2899
- * @description Lines deleted across pull requests merged this day.
2693
+ * @description Lines deleted across pull requests merged in this bucket.
2900
2694
  */
2901
2695
  deletions: number;
2902
2696
  /**
2903
2697
  * Prs Closed
2904
- * @description Pull requests closed without merging this day.
2698
+ * @description Pull requests closed without merging in this bucket.
2905
2699
  */
2906
2700
  prs_closed: number;
2907
2701
  /**
2908
2702
  * Prs Merged
2909
- * @description Pull requests merged this day.
2703
+ * @description Pull requests merged in this bucket.
2910
2704
  */
2911
2705
  prs_merged: number;
2912
2706
  /**
2913
2707
  * Prs Opened
2914
- * @description Pull requests opened this day.
2708
+ * @description Pull requests opened in this bucket.
2915
2709
  */
2916
2710
  prs_opened: number;
2917
2711
  /**
2918
2712
  * Review Comments
2919
- * @description Inline review comments created this day.
2713
+ * @description Inline review comments created in this bucket.
2920
2714
  */
2921
2715
  review_comments: number;
2922
2716
  /**
2923
2717
  * Reviews
2924
- * @description Reviews submitted this day.
2718
+ * @description Reviews submitted in this bucket.
2925
2719
  */
2926
2720
  reviews: number;
2927
- /** @description Time-to-merge percentiles over pull requests merged this day. */
2721
+ /** @description Time-to-merge percentiles over pull requests merged in this bucket. */
2928
2722
  time_to_merge_hours: components['schemas']['DurationPercentiles'];
2929
2723
  };
2930
2724
  /**
@@ -3180,6 +2974,10 @@ interface components {
3180
2974
  };
3181
2975
  /**
3182
2976
  * BillingSource
2977
+ * @description Who paid for a usage event's tokens. Every new request is `platform`.
2978
+ * The subscription values remain on rows written while a developer's own
2979
+ * Claude or ChatGPT plan paid, before Ellipsis retired that route, so past
2980
+ * sessions keep reporting what their tokens cost.
3183
2981
  * @enum {string}
3184
2982
  */
3185
2983
  BillingSource: 'platform' | 'claude_subscription' | 'codex_subscription' | 'unknown';
@@ -3231,9 +3029,9 @@ interface components {
3231
3029
  BillingStatus: {
3232
3030
  /**
3233
3031
  * Workflows Block Reason
3234
- * @description The account gate's reason for blocking new sessions, or null. `automations_require_credit` blocks only programmatic sessions (API keys, reacts, crons): sessions a person starts still run on their subscription. Does not include viewer-specific blocks or scoped spend limits.
3032
+ * @description The account gate's reason for blocking new sessions, or null. Does not include viewer-specific blocks or scoped spend limits.
3235
3033
  */
3236
- workflows_block_reason: ('canceled' | 'out_of_credit' | 'blocked' | 'contact_email_required' | 'subscription_or_credit_required' | 'automations_require_credit') | null;
3034
+ workflows_block_reason: ('canceled' | 'out_of_credit' | 'blocked' | 'contact_email_required') | null;
3237
3035
  };
3238
3036
  /**
3239
3037
  * BudgetAlertThresholds
@@ -3347,7 +3145,7 @@ interface components {
3347
3145
  };
3348
3146
  /**
3349
3147
  * BudgetPolicy
3350
- * @description Limits on actual Ellipsis credit debits, not allocations of credit.
3148
+ * @description Limits on actual spend, including subscription tokens, not allocations of credit.
3351
3149
  *
3352
3150
  * Developer keys are attribution_type:attribution_id; API keys use their
3353
3151
  * stable key ID, never the secret. Unattributed and Ellipsis bot activity is
@@ -3979,7 +3777,7 @@ interface components {
3979
3777
  } & {
3980
3778
  [key: string]: unknown;
3981
3779
  };
3982
- CodexAppServerItem: components['schemas']['CodexUserMessage'] | components['schemas']['CodexAgentMessage'] | components['schemas']['CodexReasoning'] | components['schemas']['CodexPlan'] | components['schemas']['CodexCommandExecution'] | components['schemas']['CodexFileChange'] | components['schemas']['CodexWebSearch'] | components['schemas']['CodexMcpToolCall'] | components['schemas']['CodexContextCompaction'];
3780
+ CodexAppServerItem: components['schemas']['CodexUserMessage'] | components['schemas']['CodexAgentMessage'] | components['schemas']['CodexReasoning'] | components['schemas']['CodexPlan'] | components['schemas']['CodexCommandExecution'] | components['schemas']['CodexFileChange'] | components['schemas']['CodexWebSearch'] | components['schemas']['CodexMcpToolCall'] | components['schemas']['CodexContextCompaction'] | components['schemas']['CodexSubAgentActivity'] | components['schemas']['CodexCollabAgentToolCall'];
3983
3781
  CodexAppServerNotification: components['schemas']['CodexThreadStarted'] | components['schemas']['CodexTurnStarted'] | components['schemas']['CodexTurnCompleted'] | components['schemas']['CodexItemStarted'] | components['schemas']['CodexItemCompleted'] | components['schemas']['CodexTokenUsageUpdated'] | components['schemas']['CodexAppServerError'];
3984
3782
  /** CodexAppServerSessionRecord */
3985
3783
  CodexAppServerSessionRecord: {
@@ -4047,6 +3845,31 @@ interface components {
4047
3845
  */
4048
3846
  turn_id: string | null;
4049
3847
  };
3848
+ /** CodexCollabAgentToolCall */
3849
+ CodexCollabAgentToolCall: {
3850
+ /** Id */
3851
+ id: string;
3852
+ /** Prompt */
3853
+ prompt?: string | null;
3854
+ /** Receiverthreadids */
3855
+ receiverThreadIds: string[];
3856
+ /** Senderthreadid */
3857
+ senderThreadId: string;
3858
+ /**
3859
+ * Status
3860
+ * @enum {string}
3861
+ */
3862
+ status: 'inProgress' | 'completed' | 'failed';
3863
+ /** Tool */
3864
+ tool: string;
3865
+ /**
3866
+ * @description discriminator enum property added by openapi-typescript
3867
+ * @enum {string}
3868
+ */
3869
+ type: 'collabAgentToolCall';
3870
+ } & {
3871
+ [key: string]: unknown;
3872
+ };
4050
3873
  /** CodexCommandExecution */
4051
3874
  CodexCommandExecution: {
4052
3875
  /** Aggregatedoutput */
@@ -4547,6 +4370,27 @@ interface components {
4547
4370
  */
4548
4371
  turn_id: string | null;
4549
4372
  };
4373
+ /**
4374
+ * CodexSubAgentActivity
4375
+ * @description A subagent's spawn or completion, recorded on the spawning thread.
4376
+ */
4377
+ CodexSubAgentActivity: {
4378
+ /** Agentpath */
4379
+ agentPath?: string | null;
4380
+ /** Agentthreadid */
4381
+ agentThreadId: string;
4382
+ /** Id */
4383
+ id: string;
4384
+ /** Kind */
4385
+ kind: string;
4386
+ /**
4387
+ * @description discriminator enum property added by openapi-typescript
4388
+ * @enum {string}
4389
+ */
4390
+ type: 'subAgentActivity';
4391
+ } & {
4392
+ [key: string]: unknown;
4393
+ };
4550
4394
  /** CodexTextInput */
4551
4395
  CodexTextInput: {
4552
4396
  /** Text */
@@ -4964,7 +4808,7 @@ interface components {
4964
4808
  platform_max: number;
4965
4809
  /**
4966
4810
  * Spent
4967
- * @description Recorded credit debits during the window across this configuration's sessions, in millicents.
4811
+ * @description Spend during the window across this configuration's sessions, including subscription tokens, in millicents.
4968
4812
  */
4969
4813
  spent: number;
4970
4814
  /**
@@ -5023,7 +4867,7 @@ interface components {
5023
4867
  Cost: {
5024
4868
  /**
5025
4869
  * Charged
5026
- * @description What Ellipsis charged to credit, in millicents. It is everything except subscription tokens, and it is what the budget caps.
4870
+ * @description What Ellipsis charged to credit, in millicents. It is everything except subscription tokens.
5027
4871
  * @default 0
5028
4872
  */
5029
4873
  charged: number;
@@ -5049,7 +4893,7 @@ interface components {
5049
4893
  memory: number;
5050
4894
  /**
5051
4895
  * Total
5052
- * @description Everything it cost, whoever paid, in millicents. It is the sum of llm.all.total, cpu, memory, and fee.
4896
+ * @description Everything it cost, whoever paid, in millicents. It is the sum of llm.all.total, cpu, memory, and fee, and it is what the budget caps.
5053
4897
  * @default 0
5054
4898
  */
5055
4899
  total: number;
@@ -5647,9 +5491,11 @@ interface components {
5647
5491
  /**
5648
5492
  * EnvironmentHooks
5649
5493
  * @description Environment lifecycle scripts, in order: build_base, after_checkout,
5650
- * before_start. The first two produce reusable snapshots; before_start runs
5651
- * before an agent starts or resumes its session. Scripts run as the environment's
5652
- * user in the workspace directory `/sandbox`. A nonzero exit fails the session.
5494
+ * before_start, validate. The first two produce reusable snapshots;
5495
+ * before_start runs before an agent starts or resumes its session, and
5496
+ * validate runs last to check that the environment has what the agent needs.
5497
+ * Scripts run as the environment's user in the workspace directory
5498
+ * `/sandbox`. A nonzero exit fails the session.
5653
5499
  *
5654
5500
  * Legacy post_start/post_clone scripts remain supported for existing configs;
5655
5501
  * both run after workspace preparation, before the agent starts or resumes.
@@ -5681,13 +5527,20 @@ interface components {
5681
5527
  * @description Legacy session startup script. Use before_start in new configurations.
5682
5528
  */
5683
5529
  post_start?: string | null;
5530
+ /**
5531
+ * Validate
5532
+ * @description Check that the environment works, for example that required tools are on PATH. Runs last, after before_start, each time a session starts or resumes and each time the environment is built after a change. A nonzero exit fails the session or the build. Not cached.
5533
+ */
5534
+ validate?: components['schemas']['EnvironmentScript'] | string | null;
5684
5535
  };
5685
5536
  /**
5686
5537
  * EnvironmentHooks
5687
5538
  * @description Environment lifecycle scripts, in order: build_base, after_checkout,
5688
- * before_start. The first two produce reusable snapshots; before_start runs
5689
- * before an agent starts or resumes its session. Scripts run as the environment's
5690
- * user in the workspace directory `/sandbox`. A nonzero exit fails the session.
5539
+ * before_start, validate. The first two produce reusable snapshots;
5540
+ * before_start runs before an agent starts or resumes its session, and
5541
+ * validate runs last to check that the environment has what the agent needs.
5542
+ * Scripts run as the environment's user in the workspace directory
5543
+ * `/sandbox`. A nonzero exit fails the session.
5691
5544
  *
5692
5545
  * Legacy post_start/post_clone scripts remain supported for existing configs;
5693
5546
  * both run after workspace preparation, before the agent starts or resumes.
@@ -5719,6 +5572,11 @@ interface components {
5719
5572
  * @description Legacy session startup script. Use before_start in new configurations.
5720
5573
  */
5721
5574
  post_start: string | null;
5575
+ /**
5576
+ * Validate
5577
+ * @description Check that the environment works, for example that required tools are on PATH. Runs last, after before_start, each time a session starts or resumes and each time the environment is built after a change. A nonzero exit fails the session or the build. Not cached.
5578
+ */
5579
+ validate: components['schemas']['EnvironmentScript'] | string | null;
5722
5580
  };
5723
5581
  /**
5724
5582
  * EnvironmentIdentity
@@ -6098,7 +5956,7 @@ interface components {
6098
5956
  ErrorInfo: {
6099
5957
  /**
6100
5958
  * Code
6101
- * @description Stable machine-readable error code. Open vocabulary — handle unknown codes by HTTP status. Known values: account_blocked, budget_exceeds_ceiling, conflict, contact_email_required, failed_dependency, forbidden, internal_error, invalid_cursor, invalid_request, not_found, rate_limit_exceeded, rate_limited, session_budget_exhausted, session_closed, session_finished, session_harness_single_turn, session_mention_surface, session_non_interactive, session_not_spawner, unauthorized, unavailable, unsupported_session_combination, user_credential_required, webhook_limit_reached, webhook_not_pending, webhook_ping_rate_limited, webhook_unverified, webhooks_unavailable.
5959
+ * @description Stable machine-readable error code. Open vocabulary — handle unknown codes by HTTP status. Known values: account_blocked, budget_exceeds_ceiling, conflict, contact_email_required, failed_dependency, forbidden, internal_error, invalid_cursor, invalid_request, not_found, rate_limit_exceeded, rate_limited, session_budget_exhausted, session_closed, session_finished, session_harness_single_turn, session_mention_surface, session_non_interactive, session_not_spawner, unauthorized, unavailable, unsupported_session_combination, webhook_limit_reached, webhook_not_pending, webhook_ping_rate_limited, webhook_unverified, webhooks_unavailable.
6102
5960
  */
6103
5961
  code: string;
6104
5962
  /**
@@ -6124,80 +5982,402 @@ interface components {
6124
5982
  fee_schedule: components['schemas']['PublicFeeSchedule'];
6125
5983
  };
6126
5984
  /**
6127
- * GetAnalyticsMetricsResponse
6128
- * @description Organization-wide pull-request and review analytics, aggregated
6129
- * server-side over the requested window and filters, with filter facets
6130
- * derived from the unfiltered pull-request set.
5985
+ * GeminiConfig
5986
+ * @description Native options supported by the current Gemini CLI adapter.
6131
5987
  */
6132
- GetAnalyticsMetricsResponse: {
5988
+ 'GeminiConfig-Input': {
6133
5989
  /**
6134
- * Available Authors
6135
- * @description Author filter options from the unfiltered window.
5990
+ * Model
5991
+ * @description The model the session runs on: a Gemini id from the models table. Required.
6136
5992
  */
6137
- available_authors: components['schemas']['AuthorFacet'][];
5993
+ model: string;
6138
5994
  /**
6139
- * Available Repos
6140
- * @description Repository filter options from the unfiltered window.
5995
+ * Prompt
5996
+ * @description The initial user message, passed verbatim. Omit to start an interactive session with no turn, waiting for a message.
6141
5997
  */
6142
- available_repos: components['schemas']['RepoFacet'][];
5998
+ prompt?: string | null;
5999
+ };
6000
+ /**
6001
+ * GeminiConfig
6002
+ * @description Native options supported by the current Gemini CLI adapter.
6003
+ */
6004
+ 'GeminiConfig-Output': {
6143
6005
  /**
6144
- * Contributors
6145
- * @description Per-contributor breakdown, most merged pull requests first.
6006
+ * Model
6007
+ * @description The model the session runs on: a Gemini id from the models table. Required.
6146
6008
  */
6147
- contributors: components['schemas']['ContributorUsage'][];
6009
+ model: string;
6148
6010
  /**
6149
- * Repositories
6150
- * @description Per-repository breakdown, most merged pull requests first.
6011
+ * Prompt
6012
+ * @description The initial user message, passed verbatim. Omit to start an interactive session with no turn, waiting for a message.
6151
6013
  */
6152
- repositories: components['schemas']['AnalyticsRepoUsage'][];
6014
+ prompt: string | null;
6015
+ };
6016
+ /** GeminiErrorEvent */
6017
+ GeminiErrorEvent: {
6018
+ /** Message */
6019
+ message: string;
6020
+ /** Severity */
6021
+ severity?: string | null;
6022
+ /** Timestamp */
6023
+ timestamp: string;
6153
6024
  /**
6154
- * Reviewers
6155
- * @description Per-reviewer breakdown, most reviews first.
6025
+ * @description discriminator enum property added by openapi-typescript
6026
+ * @enum {string}
6156
6027
  */
6157
- reviewers: components['schemas']['ReviewerUsage'][];
6028
+ type: 'error';
6029
+ } & {
6030
+ [key: string]: unknown;
6031
+ };
6032
+ /** GeminiInitEvent */
6033
+ GeminiInitEvent: {
6034
+ /** Model */
6035
+ model: string;
6036
+ /** Session Id */
6037
+ session_id: string;
6038
+ /** Timestamp */
6039
+ timestamp: string;
6158
6040
  /**
6159
- * Series
6160
- * @description Per-day activity buckets covering the window.
6041
+ * @description discriminator enum property added by openapi-typescript
6042
+ * @enum {string}
6161
6043
  */
6162
- series: components['schemas']['AnalyticsMetricsBucket'][];
6163
- /** @description Window-wide totals. */
6164
- totals: components['schemas']['AnalyticsMetricsTotals'];
6044
+ type: 'init';
6045
+ } & {
6046
+ [key: string]: unknown;
6165
6047
  };
6166
- /**
6167
- * GetAnalyticsPullRequestsResponse
6168
- * @description Pull-request analytics for the requested window: per-day trends with
6169
- * human/bot splits, window totals, filter facets, and the most recent pull
6170
- * requests.
6171
- */
6172
- GetAnalyticsPullRequestsResponse: {
6173
- /** @description Available filter options, from the unfiltered window. */
6174
- facets: components['schemas']['PullRequestFacets'];
6048
+ /** GeminiMessageEvent */
6049
+ GeminiMessageEvent: {
6050
+ /** Content */
6051
+ content: string;
6052
+ /** Delta */
6053
+ delta?: boolean | null;
6175
6054
  /**
6176
- * Recent
6177
- * @description The most recent pull requests, newest first, capped.
6055
+ * Role
6056
+ * @enum {string}
6178
6057
  */
6179
- recent: components['schemas']['RecentPullRequest'][];
6058
+ role: 'user' | 'assistant';
6059
+ /** Timestamp */
6060
+ timestamp: string;
6180
6061
  /**
6181
- * Series
6182
- * @description Per-day activity buckets covering the window.
6062
+ * @description discriminator enum property added by openapi-typescript
6063
+ * @enum {string}
6183
6064
  */
6184
- series: components['schemas']['PullRequestsDayBucket'][];
6185
- /** @description Window-wide totals. */
6186
- totals: components['schemas']['PullRequestsTotals'];
6065
+ type: 'message';
6066
+ } & {
6067
+ [key: string]: unknown;
6068
+ };
6069
+ /** GeminiModelStats */
6070
+ GeminiModelStats: {
6187
6071
  /**
6188
- * Truncated
6189
- * @description True when the window hit the scan limit and the figures undercount.
6072
+ * Cached
6073
+ * @default 0
6190
6074
  */
6191
- truncated: boolean;
6192
- };
6193
- /**
6194
- * GetAnalyticsReviewsResponse
6195
- * @description Review analytics for the requested window: the review and inline-comment
6196
- * feeds, per-day trends, full-set totals, and filter facets.
6075
+ cached: number;
6076
+ /**
6077
+ * Input
6078
+ * @default 0
6079
+ */
6080
+ input: number;
6081
+ /**
6082
+ * Input Tokens
6083
+ * @default 0
6084
+ */
6085
+ input_tokens: number;
6086
+ /**
6087
+ * Output Tokens
6088
+ * @default 0
6089
+ */
6090
+ output_tokens: number;
6091
+ /**
6092
+ * Total Tokens
6093
+ * @default 0
6094
+ */
6095
+ total_tokens: number;
6096
+ } & {
6097
+ [key: string]: unknown;
6098
+ };
6099
+ /**
6100
+ * GeminiOverrides
6101
+ * @description The Gemini CLI options an agent session request may replace. Every
6102
+ * field is optional: an omitted field keeps the agent's value.
6103
+ */
6104
+ GeminiOverrides: {
6105
+ /** Model */
6106
+ model?: string | null;
6107
+ /**
6108
+ * Prompt
6109
+ * @description The initial user message, passed verbatim. Omit to start an interactive session with no turn, waiting for a message.
6110
+ */
6111
+ prompt?: string | null;
6112
+ };
6113
+ /** GeminiResultEvent */
6114
+ GeminiResultEvent: {
6115
+ error?: components['schemas']['GeminiToolError'] | null;
6116
+ stats?: components['schemas']['GeminiStreamStats'] | null;
6117
+ /**
6118
+ * Status
6119
+ * @enum {string}
6120
+ */
6121
+ status: 'success' | 'error';
6122
+ /** Timestamp */
6123
+ timestamp: string;
6124
+ /**
6125
+ * @description discriminator enum property added by openapi-typescript
6126
+ * @enum {string}
6127
+ */
6128
+ type: 'result';
6129
+ } & {
6130
+ [key: string]: unknown;
6131
+ };
6132
+ /** GeminiSessionRecord */
6133
+ GeminiSessionRecord: {
6134
+ /** Cost */
6135
+ cost: number | null;
6136
+ /**
6137
+ * Created At
6138
+ * Format: date-time
6139
+ */
6140
+ created_at: string;
6141
+ /** Duration */
6142
+ duration: number | null;
6143
+ /**
6144
+ * Feed Seq
6145
+ * @description Position in the session feed and the stream's resume cursor.
6146
+ */
6147
+ feed_seq: number;
6148
+ /**
6149
+ * Id
6150
+ * @description Unique identifier of the record.
6151
+ */
6152
+ id: string;
6153
+ /**
6154
+ * Kind
6155
+ * @default gemini
6156
+ * @constant
6157
+ */
6158
+ kind: 'gemini';
6159
+ /** Model */
6160
+ model: string | null;
6161
+ payload: components['schemas']['GeminiStreamEvent'];
6162
+ /**
6163
+ * Record Format
6164
+ * @default gemini_stream_json@1
6165
+ * @constant
6166
+ */
6167
+ record_format: 'gemini_stream_json@1';
6168
+ /**
6169
+ * Record Type
6170
+ * @description Original record type within its format.
6171
+ */
6172
+ record_type: string;
6173
+ /**
6174
+ * Session Id
6175
+ * @description Session containing this record.
6176
+ */
6177
+ session_id: string;
6178
+ /**
6179
+ * Session Message Id
6180
+ * @description Message this record receives, delivers, requeues, or echoes.
6181
+ */
6182
+ session_message_id: string | null;
6183
+ /**
6184
+ * Source
6185
+ * @default gemini
6186
+ * @constant
6187
+ */
6188
+ source: 'gemini';
6189
+ tokens_info: components['schemas']['TokensInfo'] | null;
6190
+ /** Tools */
6191
+ tools: string[] | null;
6192
+ /**
6193
+ * Turn Id
6194
+ * @description Turn containing this record, when applicable.
6195
+ */
6196
+ turn_id: string | null;
6197
+ };
6198
+ GeminiStreamEvent: components['schemas']['GeminiInitEvent'] | components['schemas']['GeminiMessageEvent'] | components['schemas']['GeminiToolUseEvent'] | components['schemas']['GeminiToolResultEvent'] | components['schemas']['GeminiErrorEvent'] | components['schemas']['GeminiResultEvent'];
6199
+ /** GeminiStreamStats */
6200
+ GeminiStreamStats: {
6201
+ /**
6202
+ * Cached
6203
+ * @default 0
6204
+ */
6205
+ cached: number;
6206
+ /**
6207
+ * Duration Ms
6208
+ * @default 0
6209
+ */
6210
+ duration_ms: number;
6211
+ /**
6212
+ * Input
6213
+ * @default 0
6214
+ */
6215
+ input: number;
6216
+ /**
6217
+ * Input Tokens
6218
+ * @default 0
6219
+ */
6220
+ input_tokens: number;
6221
+ /**
6222
+ * Models
6223
+ * @default {}
6224
+ */
6225
+ models: {
6226
+ [key: string]: components['schemas']['GeminiModelStats'];
6227
+ };
6228
+ /**
6229
+ * Output Tokens
6230
+ * @default 0
6231
+ */
6232
+ output_tokens: number;
6233
+ /**
6234
+ * Tool Calls
6235
+ * @default 0
6236
+ */
6237
+ tool_calls: number;
6238
+ /**
6239
+ * Total Tokens
6240
+ * @default 0
6241
+ */
6242
+ total_tokens: number;
6243
+ } & {
6244
+ [key: string]: unknown;
6245
+ };
6246
+ /** GeminiToolError */
6247
+ GeminiToolError: {
6248
+ /** Message */
6249
+ message: string;
6250
+ /** Type */
6251
+ type: string;
6252
+ } & {
6253
+ [key: string]: unknown;
6254
+ };
6255
+ /** GeminiToolResultEvent */
6256
+ GeminiToolResultEvent: {
6257
+ error?: components['schemas']['GeminiToolError'] | null;
6258
+ /** Output */
6259
+ output?: string | null;
6260
+ /**
6261
+ * Status
6262
+ * @enum {string}
6263
+ */
6264
+ status: 'success' | 'error';
6265
+ /** Timestamp */
6266
+ timestamp: string;
6267
+ /** Tool Id */
6268
+ tool_id: string;
6269
+ /**
6270
+ * @description discriminator enum property added by openapi-typescript
6271
+ * @enum {string}
6272
+ */
6273
+ type: 'tool_result';
6274
+ } & {
6275
+ [key: string]: unknown;
6276
+ };
6277
+ /** GeminiToolUseEvent */
6278
+ GeminiToolUseEvent: {
6279
+ /**
6280
+ * Parameters
6281
+ * @default {}
6282
+ */
6283
+ parameters: {
6284
+ [key: string]: unknown;
6285
+ };
6286
+ /** Timestamp */
6287
+ timestamp: string;
6288
+ /** Tool Id */
6289
+ tool_id: string;
6290
+ /** Tool Name */
6291
+ tool_name: string;
6292
+ /**
6293
+ * @description discriminator enum property added by openapi-typescript
6294
+ * @enum {string}
6295
+ */
6296
+ type: 'tool_use';
6297
+ } & {
6298
+ [key: string]: unknown;
6299
+ };
6300
+ /**
6301
+ * GetAnalyticsMetricsResponse
6302
+ * @description Organization-wide pull-request and review analytics, aggregated
6303
+ * server-side over the requested window and filters, with filter facets
6304
+ * derived from the unfiltered pull-request set.
6305
+ */
6306
+ GetAnalyticsMetricsResponse: {
6307
+ /**
6308
+ * Available Authors
6309
+ * @description Author filter options from the unfiltered window.
6310
+ */
6311
+ available_authors: components['schemas']['AuthorFacet'][];
6312
+ /**
6313
+ * Available Repos
6314
+ * @description Repository filter options from the unfiltered window.
6315
+ */
6316
+ available_repos: components['schemas']['RepoFacet'][];
6317
+ /**
6318
+ * Contributors
6319
+ * @description Per-contributor breakdown, most merged pull requests first.
6320
+ */
6321
+ contributors: components['schemas']['ContributorUsage'][];
6322
+ /** @description The width of each bucket in series, chosen from the window's length. */
6323
+ interval: components['schemas']['SeriesInterval'];
6324
+ /**
6325
+ * Repositories
6326
+ * @description Per-repository breakdown, most merged pull requests first.
6327
+ */
6328
+ repositories: components['schemas']['AnalyticsRepoUsage'][];
6329
+ /**
6330
+ * Reviewers
6331
+ * @description Per-reviewer breakdown, most reviews first.
6332
+ */
6333
+ reviewers: components['schemas']['ReviewerUsage'][];
6334
+ /**
6335
+ * Series
6336
+ * @description Buckets covering the window, oldest first, one interval wide each.
6337
+ */
6338
+ series: components['schemas']['AnalyticsMetricsBucket'][];
6339
+ /** @description Window-wide totals. */
6340
+ totals: components['schemas']['AnalyticsMetricsTotals'];
6341
+ };
6342
+ /**
6343
+ * GetAnalyticsPullRequestsResponse
6344
+ * @description Pull-request analytics for the requested window: per-day trends with
6345
+ * human/bot splits, window totals, filter facets, and the most recent pull
6346
+ * requests.
6347
+ */
6348
+ GetAnalyticsPullRequestsResponse: {
6349
+ /** @description Available filter options, from the unfiltered window. */
6350
+ facets: components['schemas']['PullRequestFacets'];
6351
+ /** @description The width of each bucket in series, chosen from the window's length. */
6352
+ interval: components['schemas']['SeriesInterval'];
6353
+ /**
6354
+ * Recent
6355
+ * @description The most recent pull requests, newest first, capped.
6356
+ */
6357
+ recent: components['schemas']['RecentPullRequest'][];
6358
+ /**
6359
+ * Series
6360
+ * @description Buckets covering the window, oldest first, one interval wide each.
6361
+ */
6362
+ series: components['schemas']['PullRequestsBucket'][];
6363
+ /** @description Window-wide totals. */
6364
+ totals: components['schemas']['PullRequestsTotals'];
6365
+ /**
6366
+ * Truncated
6367
+ * @description True when the window hit the scan limit and the figures undercount.
6368
+ */
6369
+ truncated: boolean;
6370
+ };
6371
+ /**
6372
+ * GetAnalyticsReviewsResponse
6373
+ * @description Review analytics for the requested window: the review and inline-comment
6374
+ * feeds, per-day trends, full-set totals, and filter facets.
6197
6375
  */
6198
6376
  GetAnalyticsReviewsResponse: {
6199
6377
  /** @description Available filter options. */
6200
6378
  facets: components['schemas']['ReviewFacets'];
6379
+ /** @description The width of each bucket in series, chosen from the window's length. */
6380
+ interval: components['schemas']['SeriesInterval'];
6201
6381
  /**
6202
6382
  * Review Comments
6203
6383
  * @description The inline-comment feed, newest first, capped.
@@ -6210,9 +6390,9 @@ interface components {
6210
6390
  reviews: components['schemas']['ReviewListItem'][];
6211
6391
  /**
6212
6392
  * Series
6213
- * @description Per-day activity buckets covering the window.
6393
+ * @description Buckets covering the window, oldest first, one interval wide each.
6214
6394
  */
6215
- series: components['schemas']['ReviewsDayBucket'][];
6395
+ series: components['schemas']['ReviewsBucket'][];
6216
6396
  /** @description Window-wide totals. */
6217
6397
  totals: components['schemas']['ReviewsTotals'];
6218
6398
  };
@@ -6653,11 +6833,6 @@ interface components {
6653
6833
  role?: components['schemas']['OrganizationRole'] | null;
6654
6834
  /** @description The Slack identity linked to this member, when one is known. */
6655
6835
  slack?: components['schemas']['LinkedSlackIdentity'] | null;
6656
- /**
6657
- * Subscriptions
6658
- * @description The subscriptions this member has connected, one per provider, in a stable order. Empty when none is saved.
6659
- */
6660
- subscriptions?: components['schemas']['MemberSubscription'][];
6661
6836
  };
6662
6837
  /**
6663
6838
  * GithubMembersListResponse
@@ -7075,7 +7250,7 @@ interface components {
7075
7250
  sessions: components['schemas']['HandlerSessionCounts'];
7076
7251
  /**
7077
7252
  * Spend Windows
7078
- * @description Current trailing 1-, 7-, and 28-day credit debits and enforced handler budgets. Based on usage timestamps across all this handler's sessions and revisions, independently of the start/end session creation filters.
7253
+ * @description Current trailing 1-, 7-, and 28-day spend, including subscription tokens, and enforced handler budgets. Based on usage timestamps across all this handler's sessions and revisions, independently of the start/end session creation filters.
7079
7254
  */
7080
7255
  spend_windows: components['schemas']['ConfigSpendWindow'][];
7081
7256
  /**
@@ -7138,7 +7313,7 @@ interface components {
7138
7313
  * Harness
7139
7314
  * @enum {string}
7140
7315
  */
7141
- Harness: 'claude_code' | 'codex';
7316
+ Harness: 'claude_code' | 'codex' | 'gemini';
7142
7317
  /**
7143
7318
  * Identity
7144
7319
  * @description The identity behind the caller's credential.
@@ -7276,12 +7451,14 @@ interface components {
7276
7451
  /** IntegrationSessionConfig */
7277
7452
  IntegrationSessionConfig: {
7278
7453
  budget?: components['schemas']['BudgetConfig-Output'];
7279
- /** @description Claude Code input and native options. Set exactly one of claude_code or codex. */
7454
+ /** @description Claude Code input and native options. Set exactly one of claude_code, codex, or gemini. */
7280
7455
  claude_code?: components['schemas']['ClaudeConfig-Output'] | null;
7281
- /** @description Codex input and native options. Set exactly one of claude_code or codex. */
7456
+ /** @description Codex input and native options. Set exactly one of claude_code, codex, or gemini. */
7282
7457
  codex?: components['schemas']['CodexConfig-Output'] | null;
7283
7458
  /** Environment */
7284
7459
  environment?: string | components['schemas']['EnvironmentConfig-Output'];
7460
+ /** @description Gemini CLI input and native options. Set exactly one of claude_code, codex, or gemini. */
7461
+ gemini?: components['schemas']['GeminiConfig-Output'] | null;
7285
7462
  /** Metadata */
7286
7463
  metadata?: {
7287
7464
  [key: string]: string;
@@ -7294,11 +7471,19 @@ interface components {
7294
7471
  [key: string]: unknown;
7295
7472
  };
7296
7473
  codex?: null;
7474
+ gemini?: null;
7297
7475
  } | {
7298
7476
  claude_code?: null;
7299
7477
  codex: {
7300
7478
  [key: string]: unknown;
7301
7479
  };
7480
+ gemini?: null;
7481
+ } | {
7482
+ claude_code?: null;
7483
+ codex?: null;
7484
+ gemini: {
7485
+ [key: string]: unknown;
7486
+ };
7302
7487
  });
7303
7488
  /**
7304
7489
  * IssueAction
@@ -7888,27 +8073,6 @@ interface components {
7888
8073
  /** Name */
7889
8074
  name: string;
7890
8075
  };
7891
- /**
7892
- * MemberSubscription
7893
- * @description One subscription a member has connected. Never carries the token or
7894
- * its last characters; those stay on the owner's `/v1/user/subscription_tokens`
7895
- * routes.
7896
- */
7897
- MemberSubscription: {
7898
- /**
7899
- * Enabled
7900
- * @description Whether the subscription is routing. Only the owner's successful verify sets it.
7901
- */
7902
- enabled: boolean;
7903
- /** @description The harness the subscription drives. */
7904
- provider: components['schemas']['SubscriptionProvider'];
7905
- /**
7906
- * Updated At
7907
- * Format: date-time
7908
- * @description When the owner last saved or verified the subscription.
7909
- */
7910
- updated_at: string;
7911
- };
7912
8076
  /**
7913
8077
  * MemorySize
7914
8078
  * @description A memory size as explicit units, summed (binary: 1GB = 1024MB = 1024MiB).
@@ -8226,7 +8390,7 @@ interface components {
8226
8390
  aliases: string[];
8227
8391
  /**
8228
8392
  * Capabilities
8229
- * @description Capabilities supported by this harness/model on the Ellipsis-managed provider route.
8393
+ * @description Capabilities supported by this harness/model.
8230
8394
  */
8231
8395
  capabilities: components['schemas']['SessionCapability'][];
8232
8396
  /**
@@ -8290,7 +8454,7 @@ interface components {
8290
8454
  * Serving path is irrelevant here. Anthropic built every Claude model, so all of
8291
8455
  * them are ANTHROPIC even though OpenRouter is what actually serves them.
8292
8456
  * Likewise the `gpt-5.6-*` rows are OPENAI (OpenAI's models, resold to us by
8293
- * OpenRouter).
8457
+ * OpenRouter) and the `gemini-*` rows are GOOGLE.
8294
8458
  *
8295
8459
  * So this is deliberately NOT derived from `EgressRoute.provider`: routing is an
8296
8460
  * infrastructure fact that changes when we move a model between providers, while
@@ -8301,7 +8465,7 @@ interface components {
8301
8465
  * model.
8302
8466
  * @enum {string}
8303
8467
  */
8304
- ModelManufacturer: 'anthropic' | 'openai';
8468
+ ModelManufacturer: 'anthropic' | 'openai' | 'google';
8305
8469
  /** ModelRateCardApi */
8306
8470
  ModelRateCardApi: {
8307
8471
  /** Cache Read Per 1M Tokens */
@@ -8602,40 +8766,41 @@ interface components {
8602
8766
  repository_name: string;
8603
8767
  };
8604
8768
  /**
8605
- * PullRequestsDayBucket
8606
- * @description Pull-request activity on one UTC day. `prs`, `lines`, `authors`, and
8607
- * `commits` count pull requests created that day; `merged` and `merge_time`
8608
- * cover pull requests merged that day; `closed` counts pull requests closed
8609
- * without merging that day.
8769
+ * PullRequestsBucket
8770
+ * @description Pull-request activity in one bucket of the window. `prs`, `lines`,
8771
+ * `authors`, and `commits` count pull requests created in the bucket.
8772
+ * `merged` and `merge_time` cover pull requests merged in the bucket, and
8773
+ * `closed` counts pull requests closed without merging in the bucket.
8610
8774
  *
8611
- * Each count of created pull requests also splits bots from humans: `*_bot` counts pull
8612
- * requests whose author is a bot (a Bot account or a `[bot]` login),
8613
- * `*_human` is everything else, so the pair always sums to the total.
8775
+ * Each count of created pull requests also splits bots from humans. `*_bot`
8776
+ * counts pull requests whose author is a bot (a Bot account or a `[bot]`
8777
+ * login), and `*_human` is everything else, so the pair always sums to the
8778
+ * total.
8614
8779
  */
8615
- PullRequestsDayBucket: {
8780
+ PullRequestsBucket: {
8616
8781
  /**
8617
8782
  * Authors
8618
- * @description Distinct pull-request authors active this day, humans and bots.
8783
+ * @description Distinct pull-request authors active in this bucket, humans and bots.
8619
8784
  */
8620
8785
  authors: number;
8621
8786
  /**
8622
8787
  * Authors Bot
8623
- * @description Distinct bot authors active this day.
8788
+ * @description Distinct bot authors active in this bucket.
8624
8789
  */
8625
8790
  authors_bot: number;
8626
8791
  /**
8627
8792
  * Authors Human
8628
- * @description Distinct human authors active this day.
8793
+ * @description Distinct human authors active in this bucket.
8629
8794
  */
8630
8795
  authors_human: number;
8631
8796
  /**
8632
8797
  * Closed
8633
- * @description Pull requests closed without merging this day.
8798
+ * @description Pull requests closed without merging in this bucket.
8634
8799
  */
8635
8800
  closed: number;
8636
8801
  /**
8637
8802
  * Commits
8638
- * @description Total commits across pull requests created this day.
8803
+ * @description Total commits across pull requests created in this bucket.
8639
8804
  */
8640
8805
  commits: number;
8641
8806
  /**
@@ -8650,12 +8815,13 @@ interface components {
8650
8815
  commits_human: number;
8651
8816
  /**
8652
8817
  * Date
8653
- * @description The UTC day, formatted YYYY-MM-DD.
8818
+ * Format: date-time
8819
+ * @description When the bucket starts, in UTC.
8654
8820
  */
8655
8821
  date: string;
8656
8822
  /**
8657
8823
  * Lines
8658
- * @description Lines added plus deleted across pull requests created this day.
8824
+ * @description Lines added plus deleted across pull requests created in this bucket.
8659
8825
  */
8660
8826
  lines: number;
8661
8827
  /**
@@ -8672,22 +8838,22 @@ interface components {
8672
8838
  merge_time: components['schemas']['DurationPercentiles'];
8673
8839
  /**
8674
8840
  * Merged
8675
- * @description Pull requests merged this day.
8841
+ * @description Pull requests merged in this bucket.
8676
8842
  */
8677
8843
  merged: number;
8678
8844
  /**
8679
8845
  * Prs
8680
- * @description Pull requests created this day.
8846
+ * @description Pull requests created in this bucket.
8681
8847
  */
8682
8848
  prs: number;
8683
8849
  /**
8684
8850
  * Prs Bot
8685
- * @description Pull requests created this day by bot authors.
8851
+ * @description Pull requests created in this bucket by bot authors.
8686
8852
  */
8687
8853
  prs_bot: number;
8688
8854
  /**
8689
8855
  * Prs Human
8690
- * @description Pull requests created this day by human authors.
8856
+ * @description Pull requests created in this bucket by human authors.
8691
8857
  */
8692
8858
  prs_human: number;
8693
8859
  };
@@ -8740,17 +8906,6 @@ interface components {
8740
8906
  */
8741
8907
  secrets: components['schemas']['SecretInput'][];
8742
8908
  };
8743
- /**
8744
- * PutSubscriptionTokenRequest
8745
- * @description The token to store. Write-only: it is never read back.
8746
- */
8747
- PutSubscriptionTokenRequest: {
8748
- /**
8749
- * Token
8750
- * @description For `claude`, the OAuth token from `claude setup-token`. For `codex`, the JSON contents of auth.json from a ChatGPT login, including tokens.access_token and tokens.account_id.
8751
- */
8752
- token: string;
8753
- };
8754
8909
  /**
8755
8910
  * ReactCheckRun
8756
8911
  * @description A check run changing state on a commit. A check run is a GitHub Actions job or a check another CI app reports. `on` lists the states that fire. `names` matches check names exactly or by a prefix ending in `*`. `branch` is the branch the check ran on. `for` is the author of the commit the check ran on. Needs the Checks permission.
@@ -9314,7 +9469,7 @@ interface components {
9314
9469
  * routes; nothing maps to it yet.
9315
9470
  * @enum {string}
9316
9471
  */
9317
- Resource: 'account' | 'alerts' | 'sessions' | 'configs' | 'defaults' | 'environments' | 'secrets' | 'templates' | 'integrations' | 'reviews' | 'tokens' | 'webhooks' | 'user';
9472
+ Resource: 'account' | 'alerts' | 'sessions' | 'configs' | 'defaults' | 'environments' | 'secrets' | 'integrations' | 'reviews' | 'tokens' | 'webhooks' | 'user';
9318
9473
  /** Review */
9319
9474
  Review: {
9320
9475
  /** Base Sha */
@@ -9482,9 +9637,9 @@ interface components {
9482
9637
  id: number;
9483
9638
  /**
9484
9639
  * Path
9485
- * @description The file path the comment is anchored to.
9640
+ * @description The file path the comment is anchored to, or null when GitHub can't place the comment in the diff.
9486
9641
  */
9487
- path: string;
9642
+ path: string | null;
9488
9643
  /**
9489
9644
  * Pr Html Url
9490
9645
  * @description The parent pull request's URL on GitHub.
@@ -9894,9 +10049,9 @@ interface components {
9894
10049
  Reviewer: {
9895
10050
  /** @default {} */
9896
10051
  budget: components['schemas']['RunBudget'];
9897
- /** @description Claude Code input and native options. Set exactly one of claude_code or codex. */
10052
+ /** @description Claude Code input and native options. Set exactly one of claude_code, codex, or gemini. */
9898
10053
  claude_code?: components['schemas']['ClaudeConfig-Output'] | null;
9899
- /** @description Codex input and native options. Set exactly one of claude_code or codex. */
10054
+ /** @description Codex input and native options. Set exactly one of claude_code, codex, or gemini. */
9900
10055
  codex?: components['schemas']['CodexConfig-Output'] | null;
9901
10056
  /** @default {} */
9902
10057
  comments: components['schemas']['ReviewerComments'];
@@ -9911,6 +10066,8 @@ interface components {
9911
10066
  * }
9912
10067
  */
9913
10068
  environment: string | components['schemas']['EnvironmentConfig-Output'];
10069
+ /** @description Gemini CLI input and native options. Set exactly one of claude_code, codex, or gemini. */
10070
+ gemini?: components['schemas']['GeminiConfig-Output'] | null;
9914
10071
  /** Name */
9915
10072
  name: string;
9916
10073
  /**
@@ -9935,11 +10092,19 @@ interface components {
9935
10092
  [key: string]: unknown;
9936
10093
  };
9937
10094
  codex?: null;
10095
+ gemini?: null;
9938
10096
  } | {
9939
10097
  claude_code?: null;
9940
10098
  codex: {
9941
10099
  [key: string]: unknown;
9942
10100
  };
10101
+ gemini?: null;
10102
+ } | {
10103
+ claude_code?: null;
10104
+ codex?: null;
10105
+ gemini: {
10106
+ [key: string]: unknown;
10107
+ };
9943
10108
  });
9944
10109
  /** ReviewerComments */
9945
10110
  ReviewerComments: {
@@ -9988,65 +10153,66 @@ interface components {
9988
10153
  reviews: number;
9989
10154
  };
9990
10155
  /**
9991
- * ReviewsDayBucket
9992
- * @description Review activity on one UTC day. Verdict counts and distinct-reviewer
9993
- * counts come from the review feed (which is capped); comment counts come
9994
- * from the full, uncapped comment metrics.
10156
+ * ReviewsBucket
10157
+ * @description Review activity in one bucket of the window. Verdict counts and
10158
+ * distinct-reviewer counts come from the review feed (which is capped), and
10159
+ * comment counts come from the full, uncapped comment metrics.
9995
10160
  */
9996
- ReviewsDayBucket: {
10161
+ ReviewsBucket: {
9997
10162
  /**
9998
10163
  * Approved
9999
- * @description Approving reviews this day.
10164
+ * @description Approving reviews in this bucket.
10000
10165
  */
10001
10166
  approved: number;
10002
10167
  /**
10003
10168
  * Changes Requested
10004
- * @description Changes-requested reviews this day.
10169
+ * @description Changes-requested reviews in this bucket.
10005
10170
  */
10006
10171
  changes_requested: number;
10007
10172
  /**
10008
10173
  * Commented
10009
- * @description Comment-only reviews this day.
10174
+ * @description Comment-only reviews in this bucket.
10010
10175
  */
10011
10176
  commented: number;
10012
10177
  /**
10013
10178
  * Comments
10014
- * @description Inline review comments created this day.
10179
+ * @description Inline review comments created in this bucket.
10015
10180
  */
10016
10181
  comments: number;
10017
10182
  /**
10018
10183
  * Comments Bot
10019
- * @description Inline review comments by bot authors this day.
10184
+ * @description Inline review comments by bot authors in this bucket.
10020
10185
  */
10021
10186
  comments_bot: number;
10022
10187
  /**
10023
10188
  * Comments Human
10024
- * @description Inline review comments by human authors this day.
10189
+ * @description Inline review comments by human authors in this bucket.
10025
10190
  */
10026
10191
  comments_human: number;
10027
10192
  /**
10028
10193
  * Date
10029
- * @description The UTC day, formatted YYYY-MM-DD.
10194
+ * Format: date-time
10195
+ * @description When the bucket starts, in UTC.
10030
10196
  */
10031
10197
  date: string;
10032
10198
  /**
10033
10199
  * Reviewers Bot
10034
- * @description Distinct bot reviewers this day.
10200
+ * @description Distinct bot reviewers in this bucket.
10035
10201
  */
10036
10202
  reviewers_bot: number;
10037
10203
  /**
10038
10204
  * Reviewers Human
10039
- * @description Distinct human reviewers this day.
10205
+ * @description Distinct human reviewers in this bucket.
10040
10206
  */
10041
10207
  reviewers_human: number;
10042
10208
  /**
10043
10209
  * Reviewers Total
10044
- * @description Distinct reviewers this day.
10210
+ * @description Distinct reviewers in this bucket.
10045
10211
  */
10046
10212
  reviewers_total: number;
10047
10213
  /**
10048
10214
  * Reviews
10049
- * @description All reviews submitted this day, regardless of verdict.
10215
+ * @description All reviews submitted in this bucket, regardless of verdict.
10050
10216
  */
10051
10217
  reviews: number;
10052
10218
  };
@@ -10618,6 +10784,15 @@ interface components {
10618
10784
  /** Projects */
10619
10785
  projects: string[];
10620
10786
  };
10787
+ /**
10788
+ * SeriesInterval
10789
+ * @description The width of one entry in a time series, chosen from the window's
10790
+ * length. A window of up to 3 days is split by hour, a window of up to 120
10791
+ * days by day, and a longer window by week. Every entry starts on a UTC
10792
+ * boundary of its interval, and a week starts on Monday.
10793
+ * @enum {string}
10794
+ */
10795
+ SeriesInterval: 'hour' | 'day' | 'week';
10621
10796
  /**
10622
10797
  * Session
10623
10798
  * @description An agent session: one conversation with an agent. Returned by
@@ -10638,9 +10813,9 @@ interface components {
10638
10813
  * @default 0
10639
10814
  */
10640
10815
  budget: number;
10641
- /** @description Claude Code input and native options. Set exactly one of claude_code or codex. */
10816
+ /** @description Claude Code input and native options. Set exactly one of claude_code, codex, or gemini. */
10642
10817
  claude_code: components['schemas']['ClaudeConfig-Output'] | null;
10643
- /** @description Codex input and native options. Set exactly one of claude_code or codex. */
10818
+ /** @description Codex input and native options. Set exactly one of claude_code, codex, or gemini. */
10644
10819
  codex: components['schemas']['CodexConfig-Output'] | null;
10645
10820
  /** @description Whether the session can take more messages, and whether an agent is warm to answer one. */
10646
10821
  conversation: components['schemas']['SessionConversation'];
@@ -10659,6 +10834,8 @@ interface components {
10659
10834
  * @description The typed external event that started the session; null for direct and scheduled starts.
10660
10835
  */
10661
10836
  event: (components['schemas']['GithubPullRequestEvent'] | components['schemas']['GithubIssueEvent'] | components['schemas']['GithubPushEvent'] | components['schemas']['GithubCheckRunEvent'] | components['schemas']['GithubCheckSuiteEvent'] | components['schemas']['GithubWorkflowRunEvent'] | components['schemas']['GithubStatusEvent'] | components['schemas']['GithubReleaseEvent'] | components['schemas']['LinearIssueEvent'] | components['schemas']['SlackMessageEvent'] | components['schemas']['SlackChannelCreatedEvent'] | components['schemas']['SentryAlertEvent']) | null;
10837
+ /** @description Gemini CLI input and native options. Set exactly one of claude_code, codex, or gemini. */
10838
+ gemini: components['schemas']['GeminiConfig-Output'] | null;
10662
10839
  /** @description What the session did to git, one entry per repository in its workspace: the commit and branch it sits on, per-file line counts for its uncommitted changes, and the pull requests it opened. Null if nothing was ever captured. */
10663
10840
  git: components['schemas']['SessionGit'] | null;
10664
10841
  /** @description The saved handler and its effective display name when this session started, frozen at creation. Null for built-in responders, legacy sessions, and sessions started without a handler. */
@@ -10706,11 +10883,19 @@ interface components {
10706
10883
  [key: string]: unknown;
10707
10884
  };
10708
10885
  codex: null;
10886
+ gemini: null;
10709
10887
  } | {
10710
10888
  claude_code: null;
10711
10889
  codex: {
10712
10890
  [key: string]: unknown;
10713
10891
  };
10892
+ gemini: null;
10893
+ } | {
10894
+ claude_code: null;
10895
+ codex: null;
10896
+ gemini: {
10897
+ [key: string]: unknown;
10898
+ };
10714
10899
  });
10715
10900
  /**
10716
10901
  * SessionAgent
@@ -10906,13 +11091,15 @@ interface components {
10906
11091
  */
10907
11092
  'SessionConfig-Input': {
10908
11093
  budget?: components['schemas']['BudgetConfig-Input'];
10909
- /** @description Claude Code input and native options. Set exactly one of claude_code or codex. */
11094
+ /** @description Claude Code input and native options. Set exactly one of claude_code, codex, or gemini. */
10910
11095
  claude_code?: components['schemas']['ClaudeConfig-Input'] | null;
10911
- /** @description Codex input and native options. Set exactly one of claude_code or codex. */
11096
+ /** @description Codex input and native options. Set exactly one of claude_code, codex, or gemini. */
10912
11097
  codex?: components['schemas']['CodexConfig-Input'] | null;
10913
11098
  conversation?: components['schemas']['SessionConversationConfig-Input'];
10914
11099
  /** Environment */
10915
11100
  environment?: string | components['schemas']['EnvironmentConfig-Input'];
11101
+ /** @description Gemini CLI input and native options. Set exactly one of claude_code, codex, or gemini. */
11102
+ gemini?: components['schemas']['GeminiConfig-Input'] | null;
10916
11103
  /**
10917
11104
  * Metadata
10918
11105
  * @description Arbitrary string key/value metadata stored on every session.
@@ -10929,11 +11116,19 @@ interface components {
10929
11116
  [key: string]: unknown;
10930
11117
  };
10931
11118
  codex?: null;
11119
+ gemini?: null;
10932
11120
  } | {
10933
11121
  claude_code?: null;
10934
11122
  codex: {
10935
11123
  [key: string]: unknown;
10936
11124
  };
11125
+ gemini?: null;
11126
+ } | {
11127
+ claude_code?: null;
11128
+ codex?: null;
11129
+ gemini: {
11130
+ [key: string]: unknown;
11131
+ };
10937
11132
  });
10938
11133
  /**
10939
11134
  * SessionConfig
@@ -10952,9 +11147,9 @@ interface components {
10952
11147
  'SessionConfig-Output': {
10953
11148
  /** @default {} */
10954
11149
  budget: components['schemas']['BudgetConfig-Output'];
10955
- /** @description Claude Code input and native options. Set exactly one of claude_code or codex. */
11150
+ /** @description Claude Code input and native options. Set exactly one of claude_code, codex, or gemini. */
10956
11151
  claude_code: components['schemas']['ClaudeConfig-Output'] | null;
10957
- /** @description Codex input and native options. Set exactly one of claude_code or codex. */
11152
+ /** @description Codex input and native options. Set exactly one of claude_code, codex, or gemini. */
10958
11153
  codex: components['schemas']['CodexConfig-Output'] | null;
10959
11154
  /**
10960
11155
  * @default {
@@ -10973,6 +11168,8 @@ interface components {
10973
11168
  * }
10974
11169
  */
10975
11170
  environment: string | components['schemas']['EnvironmentConfig-Output'];
11171
+ /** @description Gemini CLI input and native options. Set exactly one of claude_code, codex, or gemini. */
11172
+ gemini: components['schemas']['GeminiConfig-Output'] | null;
10976
11173
  /**
10977
11174
  * Metadata
10978
11175
  * @description Arbitrary string key/value metadata stored on every session.
@@ -10999,11 +11196,19 @@ interface components {
10999
11196
  [key: string]: unknown;
11000
11197
  };
11001
11198
  codex: null;
11199
+ gemini: null;
11002
11200
  } | {
11003
11201
  claude_code: null;
11004
11202
  codex: {
11005
11203
  [key: string]: unknown;
11006
11204
  };
11205
+ gemini: null;
11206
+ } | {
11207
+ claude_code: null;
11208
+ codex: null;
11209
+ gemini: {
11210
+ [key: string]: unknown;
11211
+ };
11007
11212
  });
11008
11213
  /**
11009
11214
  * SessionConversation
@@ -11566,7 +11771,7 @@ interface components {
11566
11771
  */
11567
11772
  status: 'open' | 'draft' | 'merged' | 'closed';
11568
11773
  };
11569
- SessionRecord: components['schemas']['ClaudeSessionRecord'] | components['schemas']['ClaudeNativeSessionRecord'] | components['schemas']['CodexSessionRecord'] | components['schemas']['CodexAppServerSessionRecord'] | components['schemas']['PlatformSessionRecord'] | components['schemas']['UnknownSessionRecord'];
11774
+ SessionRecord: components['schemas']['ClaudeSessionRecord'] | components['schemas']['ClaudeNativeSessionRecord'] | components['schemas']['CodexSessionRecord'] | components['schemas']['CodexAppServerSessionRecord'] | components['schemas']['GeminiSessionRecord'] | components['schemas']['PlatformSessionRecord'] | components['schemas']['UnknownSessionRecord'];
11570
11775
  /** SessionRecordSearchHit */
11571
11776
  SessionRecordSearchHit: {
11572
11777
  /**
@@ -12276,9 +12481,9 @@ interface components {
12276
12481
  StartAgentSessionRequest: {
12277
12482
  /** @description Spend limit for this session: `session` is the most it may spend, in US dollars. Omitted, an agent session keeps the agent's limit and a raw session takes the organization's default. Above the organization's per-session ceiling is a 400. `day`, `week`, and `month` are agent-wide limits and are rejected with a 422. */
12278
12483
  budget?: components['schemas']['RunBudget'] | null;
12279
- /** @description Claude Code options for this session. Sent fields replace the agent's; naming Claude Code on a Codex agent replaces its harness and requires a model. Set at most one of claude_code or codex. */
12484
+ /** @description Claude Code options for this session. Sent fields replace the agent's; naming Claude Code on an agent that runs another harness replaces its harness and requires a model. Set at most one of claude_code, codex, or gemini. */
12280
12485
  claude_code?: components['schemas']['ClaudeOverrides'] | null;
12281
- /** @description Codex options for this session. Sent fields replace the agent's; naming Codex on a Claude Code agent replaces its harness and requires a model. Set at most one of claude_code or codex. */
12486
+ /** @description Codex options for this session. Sent fields replace the agent's; naming Codex on an agent that runs another harness replaces its harness and requires a model. Set at most one of claude_code, codex, or gemini. */
12282
12487
  codex?: components['schemas']['CodexOverrides'] | null;
12283
12488
  /** @description Conversation settings. Omitted, a raw session is interactive and an agent session keeps the agent's setting. State, warmth, prompting, and the turn are server-owned response fields. */
12284
12489
  conversation?: components['schemas']['SessionConversationConfig-Input'];
@@ -12292,6 +12497,8 @@ interface components {
12292
12497
  * @description Skip the image cache for this session's initial provision: a fresh full build whose snapshot then refreshes the cache for later sessions. The CLI's `--rebuild`.
12293
12498
  */
12294
12499
  force_rebuild?: boolean;
12500
+ /** @description Gemini CLI options for this session. Sent fields replace the agent's; naming Gemini CLI on an agent that runs another harness replaces its harness and requires a model. Set at most one of claude_code, codex, or gemini. */
12501
+ gemini?: components['schemas']['GeminiOverrides'] | null;
12295
12502
  /**
12296
12503
  * Images
12297
12504
  * @description Images attached to the first message, base64 inline. Requires the model's `images` capability, listed by `/v1/account/models`. Each becomes an `[Image #N]` placeholder in the prompt and an image block on turn 0. Up to 10, 5 MiB each; PNG, JPEG, GIF, or WebP.
@@ -12374,9 +12581,9 @@ interface components {
12374
12581
  StartSessionRequest: {
12375
12582
  /** @description Spend limit for this session: `session` is the most it may spend, in US dollars. Omitted, an agent session keeps the agent's limit and a raw session takes the organization's default. Above the organization's per-session ceiling is a 400. `day`, `week`, and `month` are agent-wide limits and are rejected with a 422. */
12376
12583
  budget?: components['schemas']['RunBudget'] | null;
12377
- /** @description Claude Code input and native options. Set exactly one of claude_code or codex. */
12584
+ /** @description Claude Code input and native options. Set exactly one of claude_code, codex, or gemini. */
12378
12585
  claude_code?: components['schemas']['ClaudeConfig-Input'] | null;
12379
- /** @description Codex input and native options. Set exactly one of claude_code or codex. */
12586
+ /** @description Codex input and native options. Set exactly one of claude_code, codex, or gemini. */
12380
12587
  codex?: components['schemas']['CodexConfig-Input'] | null;
12381
12588
  /** @description Conversation settings. Omitted, a raw session is interactive and an agent session keeps the agent's setting. State, warmth, prompting, and the turn are server-owned response fields. */
12382
12589
  conversation?: components['schemas']['SessionConversationConfig-Input'];
@@ -12390,6 +12597,8 @@ interface components {
12390
12597
  * @description Skip the image cache for this session's initial provision: a fresh full build whose snapshot then refreshes the cache for later sessions. The CLI's `--rebuild`.
12391
12598
  */
12392
12599
  force_rebuild?: boolean;
12600
+ /** @description Gemini CLI input and native options. Set exactly one of claude_code, codex, or gemini. */
12601
+ gemini?: components['schemas']['GeminiConfig-Input'] | null;
12393
12602
  /**
12394
12603
  * Images
12395
12604
  * @description Images attached to the first message, base64 inline. Requires the model's `images` capability, listed by `/v1/account/models`. Each becomes an `[Image #N]` placeholder in the prompt and an image block on turn 0. Up to 10, 5 MiB each; PNG, JPEG, GIF, or WebP.
@@ -12416,11 +12625,19 @@ interface components {
12416
12625
  [key: string]: unknown;
12417
12626
  };
12418
12627
  codex?: null;
12628
+ gemini?: null;
12419
12629
  } | {
12420
12630
  claude_code?: null;
12421
12631
  codex: {
12422
12632
  [key: string]: unknown;
12423
12633
  };
12634
+ gemini?: null;
12635
+ } | {
12636
+ claude_code?: null;
12637
+ codex?: null;
12638
+ gemini: {
12639
+ [key: string]: unknown;
12640
+ };
12424
12641
  });
12425
12642
  /**
12426
12643
  * StatusAction
@@ -12441,152 +12658,6 @@ interface components {
12441
12658
  /** Ws Url */
12442
12659
  ws_url: string;
12443
12660
  };
12444
- /**
12445
- * SubscriptionOverage
12446
- * @description The plan's paid overage balance, when it has one.
12447
- */
12448
- SubscriptionOverage: {
12449
- /**
12450
- * Disabled Reason
12451
- * @description Why overage is unavailable, in the provider's own words. Empty when it is available or no reason was given.
12452
- * @default
12453
- */
12454
- disabled_reason: string;
12455
- /**
12456
- * In Use
12457
- * @description Whether calls are currently being served from the overage balance rather than the included windows.
12458
- * @default false
12459
- */
12460
- in_use: boolean;
12461
- /**
12462
- * Resets At
12463
- * @description When the overage period rolls over. Null when not reported.
12464
- */
12465
- resets_at?: string | null;
12466
- /**
12467
- * Status
12468
- * @description The provider's verdict on the overage balance itself: `allowed`, `allowed_warning`, or `rejected`. Empty when not reported.
12469
- * @default
12470
- */
12471
- status: string;
12472
- /**
12473
- * Surpassed Threshold
12474
- * @description Whether the provider marks the overage balance as nearly spent. Null when not reported.
12475
- */
12476
- surpassed_threshold?: boolean | null;
12477
- /**
12478
- * Utilization
12479
- * @description Fraction of the overage balance spent this period, 0 to 1. Null when not reported.
12480
- */
12481
- utilization?: number | null;
12482
- };
12483
- /**
12484
- * SubscriptionProvider
12485
- * @description Named for the harness the token drives, not the vendor behind it: a
12486
- * developer connects "my Claude subscription", and the path segment they
12487
- * type is `claude`.
12488
- * @enum {string}
12489
- */
12490
- SubscriptionProvider: 'claude' | 'codex';
12491
- /**
12492
- * SubscriptionToken
12493
- * @description One provider's subscription token, as the API publishes it. The token
12494
- * itself is never here — the store is write-only.
12495
- */
12496
- SubscriptionToken: {
12497
- /**
12498
- * Configured
12499
- * @description Whether a token is saved for this provider. False means nothing is stored and the other fields are empty.
12500
- * @default false
12501
- */
12502
- configured: boolean;
12503
- /**
12504
- * Enabled
12505
- * @description Whether the token is routing. Only a successful verify sets it; a failed verify clears it, so a revoked token stops routing.
12506
- * @default false
12507
- */
12508
- enabled: boolean;
12509
- /** @description The harness the token drives. */
12510
- provider: components['schemas']['SubscriptionProvider'];
12511
- /**
12512
- * Token Last4
12513
- * @description The last four characters of the stored token, for display. The token itself is never returned.
12514
- */
12515
- token_last4?: string | null;
12516
- };
12517
- /**
12518
- * SubscriptionTokensListResponse
12519
- * @description Every provider, whether or not a token is saved for it.
12520
- */
12521
- SubscriptionTokensListResponse: {
12522
- /**
12523
- * Tokens
12524
- * @description One entry per supported provider, in a stable order.
12525
- */
12526
- tokens: components['schemas']['SubscriptionToken'][];
12527
- };
12528
- /**
12529
- * SubscriptionUsage
12530
- * @description The plan's last-observed rate-limit state.
12531
- *
12532
- * Display-only. Nothing routes, retries, or falls back on it, and it is only
12533
- * as fresh as the developer's last call through Ellipsis (`observed_at`) —
12534
- * Claude Code run locally on the same plan moves the real windows without us
12535
- * seeing them.
12536
- */
12537
- SubscriptionUsage: {
12538
- /** @description The rolling five-hour session window. */
12539
- five_hour?: components['schemas']['SubscriptionUsageWindow'] | null;
12540
- /**
12541
- * Observed At
12542
- * Format: date-time
12543
- * @description When the response carrying these windows was received.
12544
- */
12545
- observed_at: string;
12546
- /** @description The paid overage balance the plan draws from once its included windows are exhausted. Null for a plan with no overage. */
12547
- overage?: components['schemas']['SubscriptionOverage'] | null;
12548
- /**
12549
- * Representative Claim
12550
- * @description Which window the provider considers binding right now, e.g. `five_hour`. Null when not reported.
12551
- */
12552
- representative_claim?: string | null;
12553
- /** @description The weekly cap. */
12554
- seven_day?: components['schemas']['SubscriptionUsageWindow'] | null;
12555
- /**
12556
- * Status
12557
- * @description The provider's own verdict on the plan right now: `allowed`, `allowed_warning`, or `rejected`.
12558
- */
12559
- status: string;
12560
- };
12561
- /**
12562
- * SubscriptionUsageResponse
12563
- * @description The usage reading, or nothing to show.
12564
- */
12565
- SubscriptionUsageResponse: {
12566
- /** @description Null when no token is enabled for the provider, or when nothing has been observed yet. */
12567
- usage?: components['schemas']['SubscriptionUsage'] | null;
12568
- };
12569
- /**
12570
- * SubscriptionUsageWindow
12571
- * @description One rate-limit window of the developer's plan.
12572
- */
12573
- SubscriptionUsageWindow: {
12574
- /**
12575
- * Resets At
12576
- * @description When the window rolls over and the allowance is restored. Null when the provider did not report it.
12577
- */
12578
- resets_at?: string | null;
12579
- /**
12580
- * Surpassed Threshold
12581
- * @description Whether the provider marks this window as nearly spent. Null when it did not report it, which is not the same as false.
12582
- */
12583
- surpassed_threshold?: boolean | null;
12584
- /**
12585
- * Utilization
12586
- * @description Fraction of the window consumed, 0 to 1.
12587
- */
12588
- utilization: number;
12589
- };
12590
12661
  /**
12591
12662
  * TokenCounts
12592
12663
  * @description Token counts.
@@ -13305,22 +13376,6 @@ interface components {
13305
13376
  /** Error Type */
13306
13377
  type: string;
13307
13378
  };
13308
- /**
13309
- * VerifySubscriptionTokenResponse
13310
- * @description The outcome of a live call on the stored token.
13311
- */
13312
- VerifySubscriptionTokenResponse: {
13313
- /**
13314
- * Message
13315
- * @description Why, in a sentence a developer can act on.
13316
- */
13317
- message: string;
13318
- /**
13319
- * Ok
13320
- * @description Whether the token answered. True means it is now routing; false means it is not, and `enabled` has been cleared.
13321
- */
13322
- ok: boolean;
13323
- };
13324
13379
  /** Webhook */
13325
13380
  Webhook: {
13326
13381
  /** Activated At */
@@ -18395,468 +18450,19 @@ interface operations {
18395
18450
  };
18396
18451
  content: {
18397
18452
  'application/json': components['schemas']['ErrorResponse'];
18398
- };
18399
- };
18400
- /** @description The credential may not perform this action, or the account is blocked. */
18401
- 403: {
18402
- headers: {
18403
- [name: string]: unknown;
18404
- };
18405
- content: {
18406
- 'application/json': components['schemas']['ErrorResponse'];
18407
- };
18408
- };
18409
- /** @description No such session in your account. */
18410
- 404: {
18411
- headers: {
18412
- [name: string]: unknown;
18413
- };
18414
- content: {
18415
- 'application/json': components['schemas']['ErrorResponse'];
18416
- };
18417
- };
18418
- /** @description No turn is queued, preparing, or running. */
18419
- 409: {
18420
- headers: {
18421
- [name: string]: unknown;
18422
- };
18423
- content: {
18424
- 'application/json': components['schemas']['ErrorResponse'];
18425
- };
18426
- };
18427
- /** @description Validation Error */
18428
- 422: {
18429
- headers: {
18430
- [name: string]: unknown;
18431
- };
18432
- content: {
18433
- 'application/json': components['schemas']['HTTPValidationError'];
18434
- };
18435
- };
18436
- };
18437
- };
18438
- get_session_stream_ticket: {
18439
- parameters: {
18440
- query?: never;
18441
- header?: {
18442
- 'user-agent'?: string | null;
18443
- };
18444
- path: {
18445
- id: string;
18446
- };
18447
- cookie?: never;
18448
- };
18449
- requestBody?: never;
18450
- responses: {
18451
- /** @description Successful Response */
18452
- 200: {
18453
- headers: {
18454
- [name: string]: unknown;
18455
- };
18456
- content: {
18457
- 'application/json': components['schemas']['StreamTicketResponse'];
18458
- };
18459
- };
18460
- /** @description The bearer token is missing, invalid, or revoked. */
18461
- 401: {
18462
- headers: {
18463
- [name: string]: unknown;
18464
- };
18465
- content: {
18466
- 'application/json': components['schemas']['ErrorResponse'];
18467
- };
18468
- };
18469
- /** @description The credential may not perform this action, or the account is blocked. */
18470
- 403: {
18471
- headers: {
18472
- [name: string]: unknown;
18473
- };
18474
- content: {
18475
- 'application/json': components['schemas']['ErrorResponse'];
18476
- };
18477
- };
18478
- /** @description Validation Error */
18479
- 422: {
18480
- headers: {
18481
- [name: string]: unknown;
18482
- };
18483
- content: {
18484
- 'application/json': components['schemas']['HTTPValidationError'];
18485
- };
18486
- };
18487
- };
18488
- };
18489
- ingest_session_transcript: {
18490
- parameters: {
18491
- query?: never;
18492
- header?: {
18493
- 'user-agent'?: string | null;
18494
- };
18495
- path: {
18496
- id: string;
18497
- };
18498
- cookie?: never;
18499
- };
18500
- requestBody: {
18501
- content: {
18502
- 'application/json': components['schemas']['IngestTranscriptRequest'];
18503
- };
18504
- };
18505
- responses: {
18506
- /** @description Successful Response */
18507
- 200: {
18508
- headers: {
18509
- [name: string]: unknown;
18510
- };
18511
- content: {
18512
- 'application/json': components['schemas']['TranscriptIngestResult'];
18513
- };
18514
- };
18515
- /** @description The bearer token is missing, invalid, or revoked. */
18516
- 401: {
18517
- headers: {
18518
- [name: string]: unknown;
18519
- };
18520
- content: {
18521
- 'application/json': components['schemas']['ErrorResponse'];
18522
- };
18523
- };
18524
- /** @description The credential may not perform this action, or the account is blocked. */
18525
- 403: {
18526
- headers: {
18527
- [name: string]: unknown;
18528
- };
18529
- content: {
18530
- 'application/json': components['schemas']['ErrorResponse'];
18531
- };
18532
- };
18533
- /** @description No such session in your account. */
18534
- 404: {
18535
- headers: {
18536
- [name: string]: unknown;
18537
- };
18538
- content: {
18539
- 'application/json': components['schemas']['ErrorResponse'];
18540
- };
18541
- };
18542
- /** @description No turn has started yet. */
18543
- 409: {
18544
- headers: {
18545
- [name: string]: unknown;
18546
- };
18547
- content: {
18548
- 'application/json': components['schemas']['ErrorResponse'];
18549
- };
18550
- };
18551
- /** @description Validation Error */
18552
- 422: {
18553
- headers: {
18554
- [name: string]: unknown;
18555
- };
18556
- content: {
18557
- 'application/json': components['schemas']['HTTPValidationError'];
18558
- };
18559
- };
18560
- };
18561
- };
18562
- get_session_turns: {
18563
- parameters: {
18564
- query?: never;
18565
- header?: {
18566
- 'user-agent'?: string | null;
18567
- };
18568
- path: {
18569
- id: string;
18570
- };
18571
- cookie?: never;
18572
- };
18573
- requestBody?: never;
18574
- responses: {
18575
- /** @description Successful Response */
18576
- 200: {
18577
- headers: {
18578
- [name: string]: unknown;
18579
- };
18580
- content: {
18581
- 'application/json': components['schemas']['SessionTurnsListResponse'];
18582
- };
18583
- };
18584
- /** @description The bearer token is missing, invalid, or revoked. */
18585
- 401: {
18586
- headers: {
18587
- [name: string]: unknown;
18588
- };
18589
- content: {
18590
- 'application/json': components['schemas']['ErrorResponse'];
18591
- };
18592
- };
18593
- /** @description The credential may not perform this action, or the account is blocked. */
18594
- 403: {
18595
- headers: {
18596
- [name: string]: unknown;
18597
- };
18598
- content: {
18599
- 'application/json': components['schemas']['ErrorResponse'];
18600
- };
18601
- };
18602
- /** @description No such session in your account. */
18603
- 404: {
18604
- headers: {
18605
- [name: string]: unknown;
18606
- };
18607
- content: {
18608
- 'application/json': components['schemas']['ErrorResponse'];
18609
- };
18610
- };
18611
- /** @description Validation Error */
18612
- 422: {
18613
- headers: {
18614
- [name: string]: unknown;
18615
- };
18616
- content: {
18617
- 'application/json': components['schemas']['HTTPValidationError'];
18618
- };
18619
- };
18620
- };
18621
- };
18622
- get_session_turn: {
18623
- parameters: {
18624
- query?: never;
18625
- header?: {
18626
- 'user-agent'?: string | null;
18627
- };
18628
- path: {
18629
- session_id: string;
18630
- id: string;
18631
- };
18632
- cookie?: never;
18633
- };
18634
- requestBody?: never;
18635
- responses: {
18636
- /** @description Successful Response */
18637
- 200: {
18638
- headers: {
18639
- [name: string]: unknown;
18640
- };
18641
- content: {
18642
- 'application/json': components['schemas']['SessionTurnResponse'];
18643
- };
18644
- };
18645
- /** @description The bearer token is missing, invalid, or revoked. */
18646
- 401: {
18647
- headers: {
18648
- [name: string]: unknown;
18649
- };
18650
- content: {
18651
- 'application/json': components['schemas']['ErrorResponse'];
18652
- };
18653
- };
18654
- /** @description The credential may not perform this action, or the account is blocked. */
18655
- 403: {
18656
- headers: {
18657
- [name: string]: unknown;
18658
- };
18659
- content: {
18660
- 'application/json': components['schemas']['ErrorResponse'];
18661
- };
18662
- };
18663
- /** @description No such session or turn in your account. */
18664
- 404: {
18665
- headers: {
18666
- [name: string]: unknown;
18667
- };
18668
- content: {
18669
- 'application/json': components['schemas']['ErrorResponse'];
18670
- };
18671
- };
18672
- /** @description Validation Error */
18673
- 422: {
18674
- headers: {
18675
- [name: string]: unknown;
18676
- };
18677
- content: {
18678
- 'application/json': components['schemas']['HTTPValidationError'];
18679
- };
18680
- };
18681
- };
18682
- };
18683
- get_slack_help: {
18684
- parameters: {
18685
- query?: never;
18686
- header?: {
18687
- 'user-agent'?: string | null;
18688
- };
18689
- path?: never;
18690
- cookie?: never;
18691
- };
18692
- requestBody?: never;
18693
- responses: {
18694
- /** @description Successful Response */
18695
- 200: {
18696
- headers: {
18697
- [name: string]: unknown;
18698
- };
18699
- content: {
18700
- 'application/json': components['schemas']['SlackHelpResponse'] | null;
18701
- };
18702
- };
18703
- /** @description The bearer token is missing, invalid, or revoked. */
18704
- 401: {
18705
- headers: {
18706
- [name: string]: unknown;
18707
- };
18708
- content: {
18709
- 'application/json': components['schemas']['ErrorResponse'];
18710
- };
18711
- };
18712
- /** @description The credential may not perform this action, or the account is blocked. */
18713
- 403: {
18714
- headers: {
18715
- [name: string]: unknown;
18716
- };
18717
- content: {
18718
- 'application/json': components['schemas']['ErrorResponse'];
18719
- };
18720
- };
18721
- /** @description Validation Error */
18722
- 422: {
18723
- headers: {
18724
- [name: string]: unknown;
18725
- };
18726
- content: {
18727
- 'application/json': components['schemas']['HTTPValidationError'];
18728
- };
18729
- };
18730
- };
18731
- };
18732
- request_slack_help: {
18733
- parameters: {
18734
- query?: never;
18735
- header?: {
18736
- 'user-agent'?: string | null;
18737
- };
18738
- path?: never;
18739
- cookie?: never;
18740
- };
18741
- requestBody: {
18742
- content: {
18743
- 'application/json': components['schemas']['SlackHelpRequest'];
18744
- };
18745
- };
18746
- responses: {
18747
- /** @description Successful Response */
18748
- 201: {
18749
- headers: {
18750
- [name: string]: unknown;
18751
- };
18752
- content: {
18753
- 'application/json': components['schemas']['SlackHelpResponse'];
18754
- };
18755
- };
18756
- /** @description The bearer token is missing, invalid, or revoked. */
18757
- 401: {
18758
- headers: {
18759
- [name: string]: unknown;
18760
- };
18761
- content: {
18762
- 'application/json': components['schemas']['ErrorResponse'];
18763
- };
18764
- };
18765
- /** @description The credential may not perform this action, or the account is blocked. */
18766
- 403: {
18767
- headers: {
18768
- [name: string]: unknown;
18769
- };
18770
- content: {
18771
- 'application/json': components['schemas']['ErrorResponse'];
18772
- };
18773
- };
18774
- /** @description Validation Error */
18775
- 422: {
18776
- headers: {
18777
- [name: string]: unknown;
18778
- };
18779
- content: {
18780
- 'application/json': components['schemas']['HTTPValidationError'];
18781
- };
18782
- };
18783
- };
18784
- };
18785
- invite_to_slack_help: {
18786
- parameters: {
18787
- query?: never;
18788
- header?: {
18789
- 'user-agent'?: string | null;
18790
- };
18791
- path?: never;
18792
- cookie?: never;
18793
- };
18794
- requestBody: {
18795
- content: {
18796
- 'application/json': components['schemas']['SlackHelpRequest'];
18797
- };
18798
- };
18799
- responses: {
18800
- /** @description Successful Response */
18801
- 200: {
18802
- headers: {
18803
- [name: string]: unknown;
18804
- };
18805
- content: {
18806
- 'application/json': components['schemas']['SlackHelpResponse'];
18807
- };
18808
- };
18809
- /** @description The bearer token is missing, invalid, or revoked. */
18810
- 401: {
18811
- headers: {
18812
- [name: string]: unknown;
18813
- };
18814
- content: {
18815
- 'application/json': components['schemas']['ErrorResponse'];
18816
- };
18817
- };
18818
- /** @description The credential may not perform this action, or the account is blocked. */
18819
- 403: {
18820
- headers: {
18821
- [name: string]: unknown;
18822
- };
18823
- content: {
18824
- 'application/json': components['schemas']['ErrorResponse'];
18825
- };
18826
- };
18827
- /** @description Validation Error */
18828
- 422: {
18829
- headers: {
18830
- [name: string]: unknown;
18831
- };
18832
- content: {
18833
- 'application/json': components['schemas']['HTTPValidationError'];
18834
- };
18835
- };
18836
- };
18837
- };
18838
- list_agent_templates: {
18839
- parameters: {
18840
- query?: never;
18841
- header?: {
18842
- 'user-agent'?: string | null;
18843
- };
18844
- path?: never;
18845
- cookie?: never;
18846
- };
18847
- requestBody?: never;
18848
- responses: {
18849
- /** @description Successful Response */
18850
- 200: {
18453
+ };
18454
+ };
18455
+ /** @description The credential may not perform this action, or the account is blocked. */
18456
+ 403: {
18851
18457
  headers: {
18852
18458
  [name: string]: unknown;
18853
18459
  };
18854
18460
  content: {
18855
- 'application/json': components['schemas']['AgentTemplatesListResponse'];
18461
+ 'application/json': components['schemas']['ErrorResponse'];
18856
18462
  };
18857
18463
  };
18858
- /** @description The bearer token is missing, invalid, or revoked. */
18859
- 401: {
18464
+ /** @description No such session in your account. */
18465
+ 404: {
18860
18466
  headers: {
18861
18467
  [name: string]: unknown;
18862
18468
  };
@@ -18864,8 +18470,8 @@ interface operations {
18864
18470
  'application/json': components['schemas']['ErrorResponse'];
18865
18471
  };
18866
18472
  };
18867
- /** @description The credential may not perform this action, or the account is blocked. */
18868
- 403: {
18473
+ /** @description No turn is queued, preparing, or running. */
18474
+ 409: {
18869
18475
  headers: {
18870
18476
  [name: string]: unknown;
18871
18477
  };
@@ -18884,7 +18490,7 @@ interface operations {
18884
18490
  };
18885
18491
  };
18886
18492
  };
18887
- get_agent_template: {
18493
+ get_session_stream_ticket: {
18888
18494
  parameters: {
18889
18495
  query?: never;
18890
18496
  header?: {
@@ -18903,7 +18509,7 @@ interface operations {
18903
18509
  [name: string]: unknown;
18904
18510
  };
18905
18511
  content: {
18906
- 'application/json': components['schemas']['AgentTemplate'];
18512
+ 'application/json': components['schemas']['StreamTicketResponse'];
18907
18513
  };
18908
18514
  };
18909
18515
  /** @description The bearer token is missing, invalid, or revoked. */
@@ -18924,15 +18530,6 @@ interface operations {
18924
18530
  'application/json': components['schemas']['ErrorResponse'];
18925
18531
  };
18926
18532
  };
18927
- /** @description No such template. */
18928
- 404: {
18929
- headers: {
18930
- [name: string]: unknown;
18931
- };
18932
- content: {
18933
- 'application/json': components['schemas']['ErrorResponse'];
18934
- };
18935
- };
18936
18533
  /** @description Validation Error */
18937
18534
  422: {
18938
18535
  headers: {
@@ -18944,16 +18541,22 @@ interface operations {
18944
18541
  };
18945
18542
  };
18946
18543
  };
18947
- list_subscription_tokens: {
18544
+ ingest_session_transcript: {
18948
18545
  parameters: {
18949
18546
  query?: never;
18950
18547
  header?: {
18951
18548
  'user-agent'?: string | null;
18952
18549
  };
18953
- path?: never;
18550
+ path: {
18551
+ id: string;
18552
+ };
18954
18553
  cookie?: never;
18955
18554
  };
18956
- requestBody?: never;
18555
+ requestBody: {
18556
+ content: {
18557
+ 'application/json': components['schemas']['IngestTranscriptRequest'];
18558
+ };
18559
+ };
18957
18560
  responses: {
18958
18561
  /** @description Successful Response */
18959
18562
  200: {
@@ -18961,11 +18564,11 @@ interface operations {
18961
18564
  [name: string]: unknown;
18962
18565
  };
18963
18566
  content: {
18964
- 'application/json': components['schemas']['SubscriptionTokensListResponse'];
18567
+ 'application/json': components['schemas']['TranscriptIngestResult'];
18965
18568
  };
18966
18569
  };
18967
- /** @description The credential carries no developer, so there is no subscription to act on (an organization API key). */
18968
- 400: {
18570
+ /** @description The bearer token is missing, invalid, or revoked. */
18571
+ 401: {
18969
18572
  headers: {
18970
18573
  [name: string]: unknown;
18971
18574
  };
@@ -18973,8 +18576,8 @@ interface operations {
18973
18576
  'application/json': components['schemas']['ErrorResponse'];
18974
18577
  };
18975
18578
  };
18976
- /** @description The bearer token is missing, invalid, or revoked. */
18977
- 401: {
18579
+ /** @description The credential may not perform this action, or the account is blocked. */
18580
+ 403: {
18978
18581
  headers: {
18979
18582
  [name: string]: unknown;
18980
18583
  };
@@ -18982,8 +18585,17 @@ interface operations {
18982
18585
  'application/json': components['schemas']['ErrorResponse'];
18983
18586
  };
18984
18587
  };
18985
- /** @description The credential may not perform this action, or the account is blocked. */
18986
- 403: {
18588
+ /** @description No such session in your account. */
18589
+ 404: {
18590
+ headers: {
18591
+ [name: string]: unknown;
18592
+ };
18593
+ content: {
18594
+ 'application/json': components['schemas']['ErrorResponse'];
18595
+ };
18596
+ };
18597
+ /** @description No turn has started yet. */
18598
+ 409: {
18987
18599
  headers: {
18988
18600
  [name: string]: unknown;
18989
18601
  };
@@ -19002,14 +18614,14 @@ interface operations {
19002
18614
  };
19003
18615
  };
19004
18616
  };
19005
- get_subscription_token: {
18617
+ get_session_turns: {
19006
18618
  parameters: {
19007
18619
  query?: never;
19008
18620
  header?: {
19009
18621
  'user-agent'?: string | null;
19010
18622
  };
19011
18623
  path: {
19012
- provider: components['schemas']['SubscriptionProvider'];
18624
+ id: string;
19013
18625
  };
19014
18626
  cookie?: never;
19015
18627
  };
@@ -19021,11 +18633,11 @@ interface operations {
19021
18633
  [name: string]: unknown;
19022
18634
  };
19023
18635
  content: {
19024
- 'application/json': components['schemas']['SubscriptionToken'];
18636
+ 'application/json': components['schemas']['SessionTurnsListResponse'];
19025
18637
  };
19026
18638
  };
19027
- /** @description The credential carries no developer, so there is no subscription to act on (an organization API key). */
19028
- 400: {
18639
+ /** @description The bearer token is missing, invalid, or revoked. */
18640
+ 401: {
19029
18641
  headers: {
19030
18642
  [name: string]: unknown;
19031
18643
  };
@@ -19033,8 +18645,8 @@ interface operations {
19033
18645
  'application/json': components['schemas']['ErrorResponse'];
19034
18646
  };
19035
18647
  };
19036
- /** @description The bearer token is missing, invalid, or revoked. */
19037
- 401: {
18648
+ /** @description The credential may not perform this action, or the account is blocked. */
18649
+ 403: {
19038
18650
  headers: {
19039
18651
  [name: string]: unknown;
19040
18652
  };
@@ -19042,8 +18654,8 @@ interface operations {
19042
18654
  'application/json': components['schemas']['ErrorResponse'];
19043
18655
  };
19044
18656
  };
19045
- /** @description The credential may not perform this action, or the account is blocked. */
19046
- 403: {
18657
+ /** @description No such session in your account. */
18658
+ 404: {
19047
18659
  headers: {
19048
18660
  [name: string]: unknown;
19049
18661
  };
@@ -19062,22 +18674,19 @@ interface operations {
19062
18674
  };
19063
18675
  };
19064
18676
  };
19065
- set_subscription_token: {
18677
+ get_session_turn: {
19066
18678
  parameters: {
19067
18679
  query?: never;
19068
18680
  header?: {
19069
18681
  'user-agent'?: string | null;
19070
18682
  };
19071
18683
  path: {
19072
- provider: components['schemas']['SubscriptionProvider'];
18684
+ session_id: string;
18685
+ id: string;
19073
18686
  };
19074
18687
  cookie?: never;
19075
18688
  };
19076
- requestBody: {
19077
- content: {
19078
- 'application/json': components['schemas']['PutSubscriptionTokenRequest'];
19079
- };
19080
- };
18689
+ requestBody?: never;
19081
18690
  responses: {
19082
18691
  /** @description Successful Response */
19083
18692
  200: {
@@ -19085,11 +18694,11 @@ interface operations {
19085
18694
  [name: string]: unknown;
19086
18695
  };
19087
18696
  content: {
19088
- 'application/json': components['schemas']['SubscriptionToken'];
18697
+ 'application/json': components['schemas']['SessionTurnResponse'];
19089
18698
  };
19090
18699
  };
19091
- /** @description The provider does not route yet, the token is not a subscription OAuth token, or the credential carries no developer (an organization API key). */
19092
- 400: {
18700
+ /** @description The bearer token is missing, invalid, or revoked. */
18701
+ 401: {
19093
18702
  headers: {
19094
18703
  [name: string]: unknown;
19095
18704
  };
@@ -19097,8 +18706,8 @@ interface operations {
19097
18706
  'application/json': components['schemas']['ErrorResponse'];
19098
18707
  };
19099
18708
  };
19100
- /** @description The bearer token is missing, invalid, or revoked. */
19101
- 401: {
18709
+ /** @description The credential may not perform this action, or the account is blocked. */
18710
+ 403: {
19102
18711
  headers: {
19103
18712
  [name: string]: unknown;
19104
18713
  };
@@ -19106,8 +18715,8 @@ interface operations {
19106
18715
  'application/json': components['schemas']['ErrorResponse'];
19107
18716
  };
19108
18717
  };
19109
- /** @description The credential may not perform this action, or the account is blocked. */
19110
- 403: {
18718
+ /** @description No such session or turn in your account. */
18719
+ 404: {
19111
18720
  headers: {
19112
18721
  [name: string]: unknown;
19113
18722
  };
@@ -19126,33 +18735,24 @@ interface operations {
19126
18735
  };
19127
18736
  };
19128
18737
  };
19129
- delete_subscription_token: {
18738
+ get_slack_help: {
19130
18739
  parameters: {
19131
18740
  query?: never;
19132
18741
  header?: {
19133
18742
  'user-agent'?: string | null;
19134
18743
  };
19135
- path: {
19136
- provider: components['schemas']['SubscriptionProvider'];
19137
- };
18744
+ path?: never;
19138
18745
  cookie?: never;
19139
18746
  };
19140
18747
  requestBody?: never;
19141
18748
  responses: {
19142
18749
  /** @description Successful Response */
19143
- 204: {
19144
- headers: {
19145
- [name: string]: unknown;
19146
- };
19147
- content?: never;
19148
- };
19149
- /** @description The credential carries no developer, so there is no subscription to act on (an organization API key). */
19150
- 400: {
18750
+ 200: {
19151
18751
  headers: {
19152
18752
  [name: string]: unknown;
19153
18753
  };
19154
18754
  content: {
19155
- 'application/json': components['schemas']['ErrorResponse'];
18755
+ 'application/json': components['schemas']['SlackHelpResponse'] | null;
19156
18756
  };
19157
18757
  };
19158
18758
  /** @description The bearer token is missing, invalid, or revoked. */
@@ -19184,35 +18784,28 @@ interface operations {
19184
18784
  };
19185
18785
  };
19186
18786
  };
19187
- get_subscription_usage: {
18787
+ request_slack_help: {
19188
18788
  parameters: {
19189
18789
  query?: never;
19190
18790
  header?: {
19191
18791
  'user-agent'?: string | null;
19192
18792
  };
19193
- path: {
19194
- provider: components['schemas']['SubscriptionProvider'];
19195
- };
18793
+ path?: never;
19196
18794
  cookie?: never;
19197
18795
  };
19198
- requestBody?: never;
18796
+ requestBody: {
18797
+ content: {
18798
+ 'application/json': components['schemas']['SlackHelpRequest'];
18799
+ };
18800
+ };
19199
18801
  responses: {
19200
18802
  /** @description Successful Response */
19201
- 200: {
19202
- headers: {
19203
- [name: string]: unknown;
19204
- };
19205
- content: {
19206
- 'application/json': components['schemas']['SubscriptionUsageResponse'];
19207
- };
19208
- };
19209
- /** @description The credential carries no developer, so there is no subscription to act on (an organization API key). */
19210
- 400: {
18803
+ 201: {
19211
18804
  headers: {
19212
18805
  [name: string]: unknown;
19213
18806
  };
19214
18807
  content: {
19215
- 'application/json': components['schemas']['ErrorResponse'];
18808
+ 'application/json': components['schemas']['SlackHelpResponse'];
19216
18809
  };
19217
18810
  };
19218
18811
  /** @description The bearer token is missing, invalid, or revoked. */
@@ -19244,18 +18837,20 @@ interface operations {
19244
18837
  };
19245
18838
  };
19246
18839
  };
19247
- verify_subscription_token: {
18840
+ invite_to_slack_help: {
19248
18841
  parameters: {
19249
18842
  query?: never;
19250
18843
  header?: {
19251
18844
  'user-agent'?: string | null;
19252
18845
  };
19253
- path: {
19254
- provider: components['schemas']['SubscriptionProvider'];
19255
- };
18846
+ path?: never;
19256
18847
  cookie?: never;
19257
18848
  };
19258
- requestBody?: never;
18849
+ requestBody: {
18850
+ content: {
18851
+ 'application/json': components['schemas']['SlackHelpRequest'];
18852
+ };
18853
+ };
19259
18854
  responses: {
19260
18855
  /** @description Successful Response */
19261
18856
  200: {
@@ -19263,16 +18858,7 @@ interface operations {
19263
18858
  [name: string]: unknown;
19264
18859
  };
19265
18860
  content: {
19266
- 'application/json': components['schemas']['VerifySubscriptionTokenResponse'];
19267
- };
19268
- };
19269
- /** @description The credential carries no developer, so there is no subscription to act on (an organization API key). */
19270
- 400: {
19271
- headers: {
19272
- [name: string]: unknown;
19273
- };
19274
- content: {
19275
- 'application/json': components['schemas']['ErrorResponse'];
18861
+ 'application/json': components['schemas']['SlackHelpResponse'];
19276
18862
  };
19277
18863
  };
19278
18864
  /** @description The bearer token is missing, invalid, or revoked. */
@@ -20335,7 +19921,7 @@ interface operations {
20335
19921
  }
20336
19922
 
20337
19923
  /**
20338
- * One server-to-client frame of the Ellipsis session stream protocol v7 (WS /v1/sessions/{id}/stream?protocol=7). Clients MUST ignore frames with unknown `type` values — additive frames are not a protocol break.
19924
+ * One server-to-client frame of the Ellipsis session stream (WS /v1/sessions/{id}/stream). Clients ignore frames with unknown `type` values.
20339
19925
  */
20340
19926
  type SessionStreamFrame = SnapshotFrame | RecordsAppendFrame | SessionFrame | DeltaFrame | HeartbeatFrame | DoneFrame | ErrorFrame;
20341
19927
  type AttributionType = 'github_user' | 'linear_user' | 'slack_user' | 'api_key';
@@ -20361,11 +19947,11 @@ type Session = {
20361
19947
  */
20362
19948
  budget: number;
20363
19949
  /**
20364
- * Claude Code input and native options. Set exactly one of claude_code or codex.
19950
+ * Claude Code input and native options. Set exactly one of claude_code, codex, or gemini.
20365
19951
  */
20366
19952
  claude_code: ClaudeConfig | null;
20367
19953
  /**
20368
- * Codex input and native options. Set exactly one of claude_code or codex.
19954
+ * Codex input and native options. Set exactly one of claude_code, codex, or gemini.
20369
19955
  */
20370
19956
  codex: CodexConfig | null;
20371
19957
  conversation: SessionConversation;
@@ -20379,6 +19965,10 @@ type Session = {
20379
19965
  * The typed external event that started the session; null for direct and scheduled starts.
20380
19966
  */
20381
19967
  event: (GithubPullRequestEvent | GithubIssueEvent | GithubPushEvent | GithubCheckRunEvent | GithubCheckSuiteEvent | GithubWorkflowRunEvent | GithubStatusEvent | GithubReleaseEvent | LinearIssueEvent | SlackMessageEvent | SlackChannelCreatedEvent | SentryAlertEvent) | null;
19968
+ /**
19969
+ * Gemini CLI input and native options. Set exactly one of claude_code, codex, or gemini.
19970
+ */
19971
+ gemini: GeminiConfig | null;
20382
19972
  /**
20383
19973
  * What the session did to git, one entry per repository in its workspace: the commit and branch it sits on, per-file line counts for its uncommitted changes, and the pull requests it opened. Null if nothing was ever captured.
20384
19974
  */
@@ -20429,11 +20019,19 @@ type Session = {
20429
20019
  [k: string]: unknown;
20430
20020
  };
20431
20021
  codex: null;
20022
+ gemini: null;
20432
20023
  } | {
20433
20024
  claude_code: null;
20434
20025
  codex: {
20435
20026
  [k: string]: unknown;
20436
20027
  };
20028
+ gemini: null;
20029
+ } | {
20030
+ claude_code: null;
20031
+ codex: null;
20032
+ gemini: {
20033
+ [k: string]: unknown;
20034
+ };
20437
20035
  });
20438
20036
  /**
20439
20037
  * What one session runs on: its selected harness, where it runs, what it
@@ -20451,15 +20049,19 @@ type Session = {
20451
20049
  type SessionConfig = {
20452
20050
  budget: BudgetConfig;
20453
20051
  /**
20454
- * Claude Code input and native options. Set exactly one of claude_code or codex.
20052
+ * Claude Code input and native options. Set exactly one of claude_code, codex, or gemini.
20455
20053
  */
20456
20054
  claude_code: ClaudeConfig | null;
20457
20055
  /**
20458
- * Codex input and native options. Set exactly one of claude_code or codex.
20056
+ * Codex input and native options. Set exactly one of claude_code, codex, or gemini.
20459
20057
  */
20460
20058
  codex: CodexConfig | null;
20461
20059
  conversation: SessionConversationConfig;
20462
20060
  environment: string | EnvironmentConfig;
20061
+ /**
20062
+ * Gemini CLI input and native options. Set exactly one of claude_code, codex, or gemini.
20063
+ */
20064
+ gemini: GeminiConfig | null;
20463
20065
  /**
20464
20066
  * Arbitrary string key/value metadata stored on every session.
20465
20067
  */
@@ -20474,11 +20076,19 @@ type SessionConfig = {
20474
20076
  [k: string]: unknown;
20475
20077
  };
20476
20078
  codex: null;
20079
+ gemini: null;
20477
20080
  } | {
20478
20081
  claude_code: null;
20479
20082
  codex: {
20480
20083
  [k: string]: unknown;
20481
20084
  };
20085
+ gemini: null;
20086
+ } | {
20087
+ claude_code: null;
20088
+ codex: null;
20089
+ gemini: {
20090
+ [k: string]: unknown;
20091
+ };
20482
20092
  });
20483
20093
  type EffortLevel = 'low' | 'medium' | 'high' | 'xhigh' | 'max';
20484
20094
  type CodexEffortLevel = 'none' | 'low' | 'medium' | 'high' | 'xhigh' | 'max';
@@ -20556,10 +20166,11 @@ type TurnReason = 'error' | 'tool_call_failed' | 'budget_hit' | 'payment_require
20556
20166
  * Where the turn is.
20557
20167
  */
20558
20168
  type TurnStatus = 'queued' | 'preparing' | 'running' | 'completed' | 'failed' | 'stopped' | 'cancelled';
20559
- type SessionRecord$1 = ClaudeSessionRecord | ClaudeNativeSessionRecord | CodexSessionRecord | CodexAppServerSessionRecord | PlatformSessionRecord | UnknownSessionRecord;
20169
+ type SessionRecord$1 = ClaudeSessionRecord | ClaudeNativeSessionRecord | CodexSessionRecord | CodexAppServerSessionRecord | GeminiSessionRecord | PlatformSessionRecord | UnknownSessionRecord;
20560
20170
  type CodexAppServerNotification = CodexThreadStarted | CodexTurnStarted | CodexTurnCompleted | CodexItemStarted | CodexItemCompleted | CodexTokenUsageUpdated | CodexAppServerError;
20561
- type CodexAppServerItem = CodexUserMessage | CodexAgentMessage | CodexReasoning | CodexPlan | CodexCommandExecution | CodexFileChange | CodexWebSearch | CodexMcpToolCall | CodexContextCompaction;
20171
+ type CodexAppServerItem = CodexUserMessage | CodexAgentMessage | CodexReasoning | CodexPlan | CodexCommandExecution | CodexFileChange | CodexWebSearch | CodexMcpToolCall | CodexContextCompaction | CodexSubAgentActivity | CodexCollabAgentToolCall;
20562
20172
  type CodexUserInput = CodexTextInput | CodexLocalImageInput;
20173
+ type GeminiStreamEvent$1 = GeminiInitEvent | GeminiMessageEvent | GeminiToolUseEvent | GeminiToolResultEvent | GeminiErrorEvent | GeminiResultEvent;
20563
20174
  type PlatformSessionRecord = SessionClosedRecord | MessageReceivedRecord | MessageDeliveredRecord | MessageRequeuedRecord | TurnQueuedRecord | TurnStartedRecord | TurnEndedRecord | EnvironmentPhaseRecord | EnvironmentOutputRecord | EnvironmentReadyRecord;
20564
20175
  /**
20565
20176
  * The session's current state.
@@ -20579,11 +20190,11 @@ type Session1 = {
20579
20190
  */
20580
20191
  budget: number;
20581
20192
  /**
20582
- * Claude Code input and native options. Set exactly one of claude_code or codex.
20193
+ * Claude Code input and native options. Set exactly one of claude_code, codex, or gemini.
20583
20194
  */
20584
20195
  claude_code: ClaudeConfig | null;
20585
20196
  /**
20586
- * Codex input and native options. Set exactly one of claude_code or codex.
20197
+ * Codex input and native options. Set exactly one of claude_code, codex, or gemini.
20587
20198
  */
20588
20199
  codex: CodexConfig | null;
20589
20200
  conversation: SessionConversation;
@@ -20597,6 +20208,10 @@ type Session1 = {
20597
20208
  * The typed external event that started the session; null for direct and scheduled starts.
20598
20209
  */
20599
20210
  event: (GithubPullRequestEvent | GithubIssueEvent | GithubPushEvent | GithubCheckRunEvent | GithubCheckSuiteEvent | GithubWorkflowRunEvent | GithubStatusEvent | GithubReleaseEvent | LinearIssueEvent | SlackMessageEvent | SlackChannelCreatedEvent | SentryAlertEvent) | null;
20211
+ /**
20212
+ * Gemini CLI input and native options. Set exactly one of claude_code, codex, or gemini.
20213
+ */
20214
+ gemini: GeminiConfig | null;
20600
20215
  /**
20601
20216
  * What the session did to git, one entry per repository in its workspace: the commit and branch it sits on, per-file line counts for its uncommitted changes, and the pull requests it opened. Null if nothing was ever captured.
20602
20217
  */
@@ -20647,11 +20262,19 @@ type Session1 = {
20647
20262
  [k: string]: unknown;
20648
20263
  };
20649
20264
  codex: null;
20265
+ gemini: null;
20650
20266
  } | {
20651
20267
  claude_code: null;
20652
20268
  codex: {
20653
20269
  [k: string]: unknown;
20654
20270
  };
20271
+ gemini: null;
20272
+ } | {
20273
+ claude_code: null;
20274
+ codex: null;
20275
+ gemini: {
20276
+ [k: string]: unknown;
20277
+ };
20655
20278
  });
20656
20279
  /**
20657
20280
  * The first frame after the stream connects: the session plus its open
@@ -20666,10 +20289,6 @@ interface SnapshotFrame {
20666
20289
  * The session's open (pending) inbox messages.
20667
20290
  */
20668
20291
  messages: SessionMessage[];
20669
- /**
20670
- * Echoes the protocol version the server is serving.
20671
- */
20672
- protocol: number;
20673
20292
  session: Session;
20674
20293
  type: 'snapshot';
20675
20294
  }
@@ -20965,9 +20584,11 @@ interface Duration {
20965
20584
  }
20966
20585
  /**
20967
20586
  * Environment lifecycle scripts, in order: build_base, after_checkout,
20968
- * before_start. The first two produce reusable snapshots; before_start runs
20969
- * before an agent starts or resumes its session. Scripts run as the environment's
20970
- * user in the workspace directory `/sandbox`. A nonzero exit fails the session.
20587
+ * before_start, validate. The first two produce reusable snapshots;
20588
+ * before_start runs before an agent starts or resumes its session, and
20589
+ * validate runs last to check that the environment has what the agent needs.
20590
+ * Scripts run as the environment's user in the workspace directory
20591
+ * `/sandbox`. A nonzero exit fails the session.
20971
20592
  *
20972
20593
  * Legacy post_start/post_clone scripts remain supported for existing configs;
20973
20594
  * both run after workspace preparation, before the agent starts or resumes.
@@ -20994,6 +20615,10 @@ interface EnvironmentHooks {
20994
20615
  * Legacy session startup script. Use before_start in new configurations.
20995
20616
  */
20996
20617
  post_start: string | null;
20618
+ /**
20619
+ * Check that the environment works, for example that required tools are on PATH. Runs last, after before_start, each time a session starts or resumes and each time the environment is built after a change. A nonzero exit fails the session or the build. Not cached.
20620
+ */
20621
+ validate: EnvironmentScript | string | null;
20997
20622
  }
20998
20623
  /**
20999
20624
  * An inline shell script run as the environment's user, with the workspace
@@ -21074,6 +20699,19 @@ interface EnvironmentVariable {
21074
20699
  name: string;
21075
20700
  value: string | null;
21076
20701
  }
20702
+ /**
20703
+ * Native options supported by the current Gemini CLI adapter.
20704
+ */
20705
+ interface GeminiConfig {
20706
+ /**
20707
+ * The model the session runs on: a Gemini id from the models table. Required.
20708
+ */
20709
+ model: string;
20710
+ /**
20711
+ * The initial user message, passed verbatim. Omit to start an interactive session with no turn, waiting for a message.
20712
+ */
20713
+ prompt: string | null;
20714
+ }
21077
20715
  /**
21078
20716
  * JSON Schema for the harness's structured result, when certified.
21079
20717
  */
@@ -21371,7 +21009,7 @@ interface SessionPrompting {
21371
21009
  */
21372
21010
  interface Cost {
21373
21011
  /**
21374
- * What Ellipsis charged to credit, in millicents. It is everything except subscription tokens, and it is what the budget caps.
21012
+ * What Ellipsis charged to credit, in millicents. It is everything except subscription tokens.
21375
21013
  */
21376
21014
  charged: number;
21377
21015
  /**
@@ -21388,7 +21026,7 @@ interface Cost {
21388
21026
  */
21389
21027
  memory: number;
21390
21028
  /**
21391
- * Everything it cost, whoever paid, in millicents. It is the sum of llm.all.total, cpu, memory, and fee.
21029
+ * Everything it cost, whoever paid, in millicents. It is the sum of llm.all.total, cpu, memory, and fee, and it is what the budget caps.
21392
21030
  */
21393
21031
  total: number;
21394
21032
  }
@@ -21493,9 +21131,11 @@ interface ComputeConfig1 {
21493
21131
  }
21494
21132
  /**
21495
21133
  * Environment lifecycle scripts, in order: build_base, after_checkout,
21496
- * before_start. The first two produce reusable snapshots; before_start runs
21497
- * before an agent starts or resumes its session. Scripts run as the environment's
21498
- * user in the workspace directory `/sandbox`. A nonzero exit fails the session.
21134
+ * before_start, validate. The first two produce reusable snapshots;
21135
+ * before_start runs before an agent starts or resumes its session, and
21136
+ * validate runs last to check that the environment has what the agent needs.
21137
+ * Scripts run as the environment's user in the workspace directory
21138
+ * `/sandbox`. A nonzero exit fails the session.
21499
21139
  *
21500
21140
  * Legacy post_start/post_clone scripts remain supported for existing configs;
21501
21141
  * both run after workspace preparation, before the agent starts or resumes.
@@ -21522,6 +21162,10 @@ interface EnvironmentHooks1 {
21522
21162
  * Legacy session startup script. Use before_start in new configurations.
21523
21163
  */
21524
21164
  post_start: string | null;
21165
+ /**
21166
+ * Check that the environment works, for example that required tools are on PATH. Runs last, after before_start, each time a session starts or resumes and each time the environment is built after a change. A nonzero exit fails the session or the build. Not cached.
21167
+ */
21168
+ validate: EnvironmentScript | string | null;
21525
21169
  }
21526
21170
  interface GithubPullRequestEvent {
21527
21171
  action: PullRequestAction | 'review_commented';
@@ -21889,7 +21533,7 @@ interface SessionTurn {
21889
21533
  */
21890
21534
  interface Cost1 {
21891
21535
  /**
21892
- * What Ellipsis charged to credit, in millicents. It is everything except subscription tokens, and it is what the budget caps.
21536
+ * What Ellipsis charged to credit, in millicents. It is everything except subscription tokens.
21893
21537
  */
21894
21538
  charged: number;
21895
21539
  /**
@@ -21906,7 +21550,7 @@ interface Cost1 {
21906
21550
  */
21907
21551
  memory: number;
21908
21552
  /**
21909
- * Everything it cost, whoever paid, in millicents. It is the sum of llm.all.total, cpu, memory, and fee.
21553
+ * Everything it cost, whoever paid, in millicents. It is the sum of llm.all.total, cpu, memory, and fee, and it is what the budget caps.
21910
21554
  */
21911
21555
  total: number;
21912
21556
  }
@@ -22625,6 +22269,27 @@ interface CodexContextCompaction {
22625
22269
  type: 'contextCompaction';
22626
22270
  [k: string]: unknown;
22627
22271
  }
22272
+ /**
22273
+ * A subagent's spawn or completion, recorded on the spawning thread.
22274
+ */
22275
+ interface CodexSubAgentActivity {
22276
+ agentPath?: string | null;
22277
+ agentThreadId: string;
22278
+ id: string;
22279
+ kind: string;
22280
+ type: 'subAgentActivity';
22281
+ [k: string]: unknown;
22282
+ }
22283
+ interface CodexCollabAgentToolCall {
22284
+ id: string;
22285
+ prompt?: string | null;
22286
+ receiverThreadIds: string[];
22287
+ senderThreadId: string;
22288
+ status: 'inProgress' | 'completed' | 'failed';
22289
+ tool: string;
22290
+ type: 'collabAgentToolCall';
22291
+ [k: string]: unknown;
22292
+ }
22628
22293
  interface CodexTurnStarted {
22629
22294
  method: 'turn/started';
22630
22295
  params: CodexTurnParams;
@@ -22694,6 +22359,117 @@ interface CodexErrorParams {
22694
22359
  willRetry: boolean;
22695
22360
  [k: string]: unknown;
22696
22361
  }
22362
+ interface GeminiSessionRecord {
22363
+ cost: number | null;
22364
+ created_at: string;
22365
+ duration: number | null;
22366
+ /**
22367
+ * Position in the session feed and the stream's resume cursor.
22368
+ */
22369
+ feed_seq: number;
22370
+ /**
22371
+ * Unique identifier of the record.
22372
+ */
22373
+ id: string;
22374
+ kind: 'gemini';
22375
+ model: string | null;
22376
+ payload: GeminiStreamEvent$1;
22377
+ record_format: 'gemini_stream_json@1';
22378
+ /**
22379
+ * Original record type within its format.
22380
+ */
22381
+ record_type: string;
22382
+ /**
22383
+ * Session containing this record.
22384
+ */
22385
+ session_id: string;
22386
+ /**
22387
+ * Message this record receives, delivers, requeues, or echoes.
22388
+ */
22389
+ session_message_id: string | null;
22390
+ source: 'gemini';
22391
+ tokens_info: TokensInfo | null;
22392
+ tools: string[] | null;
22393
+ /**
22394
+ * Turn containing this record, when applicable.
22395
+ */
22396
+ turn_id: string | null;
22397
+ }
22398
+ interface GeminiInitEvent {
22399
+ model: string;
22400
+ session_id: string;
22401
+ timestamp: string;
22402
+ type: 'init';
22403
+ [k: string]: unknown;
22404
+ }
22405
+ interface GeminiMessageEvent {
22406
+ content: string;
22407
+ delta?: boolean | null;
22408
+ role: 'user' | 'assistant';
22409
+ timestamp: string;
22410
+ type: 'message';
22411
+ [k: string]: unknown;
22412
+ }
22413
+ interface GeminiToolUseEvent {
22414
+ parameters?: {
22415
+ [k: string]: unknown;
22416
+ };
22417
+ timestamp: string;
22418
+ tool_id: string;
22419
+ tool_name: string;
22420
+ type: 'tool_use';
22421
+ [k: string]: unknown;
22422
+ }
22423
+ interface GeminiToolResultEvent {
22424
+ error?: GeminiToolError | null;
22425
+ output?: string | null;
22426
+ status: 'success' | 'error';
22427
+ timestamp: string;
22428
+ tool_id: string;
22429
+ type: 'tool_result';
22430
+ [k: string]: unknown;
22431
+ }
22432
+ interface GeminiToolError {
22433
+ message: string;
22434
+ type: string;
22435
+ [k: string]: unknown;
22436
+ }
22437
+ interface GeminiErrorEvent {
22438
+ message: string;
22439
+ severity?: string | null;
22440
+ timestamp: string;
22441
+ type: 'error';
22442
+ [k: string]: unknown;
22443
+ }
22444
+ interface GeminiResultEvent {
22445
+ error?: GeminiToolError | null;
22446
+ stats?: GeminiStreamStats | null;
22447
+ status: 'success' | 'error';
22448
+ timestamp: string;
22449
+ type: 'result';
22450
+ [k: string]: unknown;
22451
+ }
22452
+ interface GeminiStreamStats {
22453
+ cached?: number;
22454
+ duration_ms?: number;
22455
+ input?: number;
22456
+ input_tokens?: number;
22457
+ models?: {
22458
+ [k: string]: GeminiModelStats;
22459
+ };
22460
+ output_tokens?: number;
22461
+ tool_calls?: number;
22462
+ total_tokens?: number;
22463
+ [k: string]: unknown;
22464
+ }
22465
+ interface GeminiModelStats {
22466
+ cached?: number;
22467
+ input?: number;
22468
+ input_tokens?: number;
22469
+ output_tokens?: number;
22470
+ total_tokens?: number;
22471
+ [k: string]: unknown;
22472
+ }
22697
22473
  interface SessionClosedRecord {
22698
22474
  cost: number | null;
22699
22475
  created_at: string;
@@ -23261,6 +23037,7 @@ type SdkRateLimitRecord = Extract<SdkRecord, {
23261
23037
  type SdkContentBlock = NonNullable<SdkAssistantRecord['content']>[number];
23262
23038
  type CodexEvent = CodexSessionRecord['payload'];
23263
23039
  type CodexAppServerEvent = CodexAppServerSessionRecord['payload'];
23040
+ type GeminiStreamEvent = GeminiSessionRecord['payload'];
23264
23041
  type CodexItem = Extract<CodexEvent, {
23265
23042
  type: 'item.completed';
23266
23043
  }>['item'];
@@ -23283,4 +23060,4 @@ type ReviewsListResponse = components['schemas']['ReviewsListResponse'];
23283
23060
  type ReviewConfig = components['schemas']['ReviewConfig'];
23284
23061
  type ReviewConfigsListResponse = components['schemas']['ReviewConfigsListResponse'];
23285
23062
 
23286
- export type { CodexPlan as $, AgentConfig as A, BudgetConfig as B, CheckRunAction as C, CodexCommandExecutionItem as D, CodexConfig as E, CodexContextCompaction as F, CodexEffortLevel as G, CodexErrorEvent as H, CodexErrorItem as I, CodexErrorParams as J, CodexEvent as K, CodexFileChange as L, CodexFileChangeItem as M, CodexFileUpdate as N, CodexItem as O, CodexItemCompleted as P, CodexItemCompletedEvent as Q, CodexItemParams as R, CodexItemStarted as S, CodexItemStartedEvent as T, CodexItemUpdatedEvent as U, CodexLocalImageInput as V, CodexMcpToolCall as W, CodexMcpToolCallAppContext as X, CodexMcpToolCallError as Y, CodexMcpToolCallItem as Z, CodexMcpToolCallResult as _, AgentIdentity as a, GithubStatusEvent as a$, CodexReasoning as a0, CodexReasoningItem as a1, CodexSessionRecord as a2, CodexTextInput as a3, CodexThread as a4, CodexThreadStarted as a5, CodexThreadStartedEvent as a6, CodexThreadStartedParams as a7, CodexThreadTokenUsage as a8, CodexTodoListItem as a9, EllipsisGrant as aA, EllipsisPermissions as aB, EnvironmentBaseBuild as aC, EnvironmentConfig as aD, EnvironmentHooks as aE, EnvironmentHooks1 as aF, EnvironmentOutputPayload as aG, EnvironmentOutputRecord as aH, EnvironmentPhasePayload as aI, EnvironmentPhaseRecord as aJ, EnvironmentReadyPayload as aK, EnvironmentReadyRecord as aL, EnvironmentScript as aM, EnvironmentSource as aN, EnvironmentVariable as aO, ErrorFrame as aP, GithubAccountFilter as aQ, GithubAccountSelector as aR, GithubAccountSnippet as aS, GithubAccountType as aT, GithubCheckRunEvent as aU, GithubCheckSuiteEvent as aV, GithubIssueEvent as aW, GithubPermissions as aX, GithubPullRequestEvent as aY, GithubPushEvent as aZ, GithubReleaseEvent as a_, CodexTokenUsageBreakdown as aa, CodexTokenUsageParams as ab, CodexTokenUsageUpdated as ac, CodexTurn as ad, CodexTurnCompleted as ae, CodexTurnCompletedEvent as af, CodexTurnError as ag, CodexTurnFailedEvent as ah, CodexTurnParams as ai, CodexTurnStarted as aj, CodexTurnStartedEvent as ak, CodexUsage as al, CodexUserInput as am, CodexUserMessage as an, CodexWebSearch as ao, CodexWebSearchItem as ap, ComputeConfig as aq, ComputeConfig1 as ar, ConfigMetadata as as, Cost as at, Cost1 as au, CronTrigger as av, DeltaFrame as aw, DoneFrame as ax, Duration as ay, EffortLevel as az, AttributionType as b, SdkServerToolResultBlock as b$, GithubWorkflowRunEvent as b0, HandlerService as b1, HeartbeatFrame as b2, InputContract as b3, IssueAction as b4, LegacyAssistantPayload as b5, LegacyNativeUsage as b6, LegacyResultPayload as b7, Level as b8, LifecycleSessionRecord as b9, ReactPullRequest as bA, ReactPush as bB, ReactRelease as bC, ReactSentry as bD, ReactSlackChannel as bE, ReactStatus as bF, ReactTrigger as bG, ReactWorkflowRun as bH, RecordsAppendFrame as bI, ReleaseAction as bJ, RepositoryFilter as bK, RepositoryRef as bL, Review as bM, ReviewComment as bN, ReviewConfig as bO, ReviewConfigsListResponse as bP, ReviewPullRequest as bQ, ReviewPullRequestAuthor as bR, ReviewReviewer as bS, ReviewSummary as bT, ReviewsListResponse as bU, SdkAssistantRecord as bV, SdkCacheCreation as bW, SdkContentBlock as bX, SdkRateLimitRecord as bY, SdkRecord as bZ, SdkResultRecord as b_, LinearIssueAction as ba, LinearIssueEvent as bb, LlmCost as bc, LlmCostSplit as bd, McpRemoteServer as be, McpServerRef as bf, McpStdioServer as bg, MemorySize as bh, MessageDeliveredPayload as bi, MessageDeliveredRecord as bj, MessageReceivedPayload as bk, MessageReceivedRecord as bl, MessageRequeuedPayload as bm, MessageRequeuedRecord as bn, ModelLlmCostSplit as bo, ModelTokenCounts as bp, OutputConfig as bq, PermissionsConfig as br, PermissionsConfig1 as bs, PlatformSessionRecord as bt, PromptBlockedReason as bu, PullRequestAction as bv, ReactCheckRun as bw, ReactCheckSuite as bx, ReactIssue as by, ReactLinearIssue as bz, components as c, TurnReason as c$, SdkServerToolUseBlock as c0, SdkSystemRecord as c1, SdkTextBlock as c2, SdkThinkingBlock as c3, SdkToolResultBlock as c4, SdkToolUseBlock as c5, SdkUserRecord as c6, SendSessionMessageRequest as c7, SentryAction as c8, SentryAlertEvent as c9, SessionRecord as cA, SessionRecordsListResponse as cB, SessionResponse as cC, SessionSource as cD, SessionState as cE, SessionStopped as cF, SessionStreamFrame as cG, SessionSummary as cH, SessionTurn as cI, SessionTurnResponse as cJ, SessionTurnsListResponse as cK, SessionsListResponse as cL, SettingsRef as cM, SkillRef as cN, SlackChannelCreatedEvent as cO, SlackMessageEvent as cP, SnapshotFrame as cQ, StatusAction as cR, StreamFrame as cS, TokenCounts as cT, Tokens as cU, Tokens1 as cV, TokensInfo as cW, TurnEndedPayload as cX, TurnEndedRecord as cY, TurnQueuedPayload as cZ, TurnQueuedRecord as c_, Session as ca, Session1 as cb, SessionAgent as cc, SessionArchived as cd, SessionAttribution as ce, SessionClosedPayload as cf, SessionClosedRecord as cg, SessionConfig as ch, SessionConversation as ci, SessionConversationConfig as cj, SessionEnvironment as ck, SessionEventActor as cl, SessionFrame as cm, SessionGit as cn, SessionGitCommit as co, SessionGitFile as cp, SessionGitPr as cq, SessionGitRepo as cr, SessionHandler as cs, SessionMessage as ct, SessionMessageImage as cu, SessionMessageResponse as cv, SessionMessageStatus as cw, SessionOutput as cx, SessionParent as cy, SessionPrompting as cz, CheckSuiteAction as d, TurnStartedPayload as d0, TurnStartedRecord as d1, TurnStatus as d2, UnknownSessionRecord as d3, UpdateSessionRequest as d4, WorkflowRunAction as d5, paths as d6, ClaudeAssistantEvent as e, ClaudeAssistantMessage as f, ClaudeConfig as g, ClaudeConversationResetEvent as h, ClaudeNativeEvent as i, ClaudeNativeSessionRecord as j, ClaudeNativeUsage as k, ClaudeRateLimitEvent as l, ClaudeRateLimitInfo as m, ClaudeResultEvent as n, ClaudeSessionRecord as o, ClaudeSystemEvent as p, ClaudeUserEvent as q, ClaudeUserMessage as r, CodexAgentMessage as s, CodexAgentMessageItem as t, CodexAppServerError as u, CodexAppServerEvent as v, CodexAppServerItem as w, CodexAppServerNotification as x, CodexAppServerSessionRecord as y, CodexCommandExecution as z };
23063
+ export type { CodexMcpToolCallResult as $, AgentConfig as A, BudgetConfig as B, CheckRunAction as C, CodexCommandExecution as D, CodexCommandExecutionItem as E, CodexConfig as F, CodexContextCompaction as G, CodexEffortLevel as H, CodexErrorEvent as I, CodexErrorItem as J, CodexErrorParams as K, CodexEvent as L, CodexFileChange as M, CodexFileChangeItem as N, CodexFileUpdate as O, CodexItem as P, CodexItemCompleted as Q, CodexItemCompletedEvent as R, CodexItemParams as S, CodexItemStarted as T, CodexItemStartedEvent as U, CodexItemUpdatedEvent as V, CodexLocalImageInput as W, CodexMcpToolCall as X, CodexMcpToolCallAppContext as Y, CodexMcpToolCallError as Z, CodexMcpToolCallItem as _, AgentIdentity as a, GeminiToolError as a$, CodexPlan as a0, CodexReasoning as a1, CodexReasoningItem as a2, CodexSessionRecord as a3, CodexSubAgentActivity as a4, CodexTextInput as a5, CodexThread as a6, CodexThreadStarted as a7, CodexThreadStartedEvent as a8, CodexThreadStartedParams as a9, Duration as aA, EffortLevel as aB, EllipsisGrant as aC, EllipsisPermissions as aD, EnvironmentBaseBuild as aE, EnvironmentConfig as aF, EnvironmentHooks as aG, EnvironmentHooks1 as aH, EnvironmentOutputPayload as aI, EnvironmentOutputRecord as aJ, EnvironmentPhasePayload as aK, EnvironmentPhaseRecord as aL, EnvironmentReadyPayload as aM, EnvironmentReadyRecord as aN, EnvironmentScript as aO, EnvironmentSource as aP, EnvironmentVariable as aQ, ErrorFrame as aR, GeminiConfig as aS, GeminiErrorEvent as aT, GeminiInitEvent as aU, GeminiMessageEvent as aV, GeminiModelStats as aW, GeminiResultEvent as aX, GeminiSessionRecord as aY, GeminiStreamEvent as aZ, GeminiStreamStats as a_, CodexThreadTokenUsage as aa, CodexTodoListItem as ab, CodexTokenUsageBreakdown as ac, CodexTokenUsageParams as ad, CodexTokenUsageUpdated as ae, CodexTurn as af, CodexTurnCompleted as ag, CodexTurnCompletedEvent as ah, CodexTurnError as ai, CodexTurnFailedEvent as aj, CodexTurnParams as ak, CodexTurnStarted as al, CodexTurnStartedEvent as am, CodexUsage as an, CodexUserInput as ao, CodexUserMessage as ap, CodexWebSearch as aq, CodexWebSearchItem as ar, ComputeConfig as as, ComputeConfig1 as at, ConfigMetadata as au, Cost as av, Cost1 as aw, CronTrigger as ax, DeltaFrame as ay, DoneFrame as az, AttributionType as b, ReviewComment as b$, GeminiToolResultEvent as b0, GeminiToolUseEvent as b1, GithubAccountFilter as b2, GithubAccountSelector as b3, GithubAccountSnippet as b4, GithubAccountType as b5, GithubCheckRunEvent as b6, GithubCheckSuiteEvent as b7, GithubIssueEvent as b8, GithubPermissions as b9, MessageRequeuedPayload as bA, MessageRequeuedRecord as bB, ModelLlmCostSplit as bC, ModelTokenCounts as bD, OutputConfig as bE, PermissionsConfig as bF, PermissionsConfig1 as bG, PlatformSessionRecord as bH, PromptBlockedReason as bI, PullRequestAction as bJ, ReactCheckRun as bK, ReactCheckSuite as bL, ReactIssue as bM, ReactLinearIssue as bN, ReactPullRequest as bO, ReactPush as bP, ReactRelease as bQ, ReactSentry as bR, ReactSlackChannel as bS, ReactStatus as bT, ReactTrigger as bU, ReactWorkflowRun as bV, RecordsAppendFrame as bW, ReleaseAction as bX, RepositoryFilter as bY, RepositoryRef as bZ, Review as b_, GithubPullRequestEvent as ba, GithubPushEvent as bb, GithubReleaseEvent as bc, GithubStatusEvent as bd, GithubWorkflowRunEvent as be, HandlerService as bf, HeartbeatFrame as bg, InputContract as bh, IssueAction as bi, LegacyAssistantPayload as bj, LegacyNativeUsage as bk, LegacyResultPayload as bl, Level as bm, LifecycleSessionRecord as bn, LinearIssueAction as bo, LinearIssueEvent as bp, LlmCost as bq, LlmCostSplit as br, McpRemoteServer as bs, McpServerRef as bt, McpStdioServer as bu, MemorySize as bv, MessageDeliveredPayload as bw, MessageDeliveredRecord as bx, MessageReceivedPayload as by, MessageReceivedRecord as bz, components as c, SkillRef as c$, ReviewConfig as c0, ReviewConfigsListResponse as c1, ReviewPullRequest as c2, ReviewPullRequestAuthor as c3, ReviewReviewer as c4, ReviewSummary as c5, ReviewsListResponse as c6, SdkAssistantRecord as c7, SdkCacheCreation as c8, SdkContentBlock as c9, SessionFrame as cA, SessionGit as cB, SessionGitCommit as cC, SessionGitFile as cD, SessionGitPr as cE, SessionGitRepo as cF, SessionHandler as cG, SessionMessage as cH, SessionMessageImage as cI, SessionMessageResponse as cJ, SessionMessageStatus as cK, SessionOutput as cL, SessionParent as cM, SessionPrompting as cN, SessionRecord as cO, SessionRecordsListResponse as cP, SessionResponse as cQ, SessionSource as cR, SessionState as cS, SessionStopped as cT, SessionStreamFrame as cU, SessionSummary as cV, SessionTurn as cW, SessionTurnResponse as cX, SessionTurnsListResponse as cY, SessionsListResponse as cZ, SettingsRef as c_, SdkRateLimitRecord as ca, SdkRecord as cb, SdkResultRecord as cc, SdkServerToolResultBlock as cd, SdkServerToolUseBlock as ce, SdkSystemRecord as cf, SdkTextBlock as cg, SdkThinkingBlock as ch, SdkToolResultBlock as ci, SdkToolUseBlock as cj, SdkUserRecord as ck, SendSessionMessageRequest as cl, SentryAction as cm, SentryAlertEvent as cn, Session as co, Session1 as cp, SessionAgent as cq, SessionArchived as cr, SessionAttribution as cs, SessionClosedPayload as ct, SessionClosedRecord as cu, SessionConfig as cv, SessionConversation as cw, SessionConversationConfig as cx, SessionEnvironment as cy, SessionEventActor as cz, CheckSuiteAction as d, SlackChannelCreatedEvent as d0, SlackMessageEvent as d1, SnapshotFrame as d2, StatusAction as d3, StreamFrame as d4, TokenCounts as d5, Tokens as d6, Tokens1 as d7, TokensInfo as d8, TurnEndedPayload as d9, TurnEndedRecord as da, TurnQueuedPayload as db, TurnQueuedRecord as dc, TurnReason as dd, TurnStartedPayload as de, TurnStartedRecord as df, TurnStatus as dg, UnknownSessionRecord as dh, UpdateSessionRequest as di, WorkflowRunAction as dj, paths as dk, ClaudeAssistantEvent as e, ClaudeAssistantMessage as f, ClaudeConfig as g, ClaudeConversationResetEvent as h, ClaudeNativeEvent as i, ClaudeNativeSessionRecord as j, ClaudeNativeUsage as k, ClaudeRateLimitEvent as l, ClaudeRateLimitInfo as m, ClaudeResultEvent as n, ClaudeSessionRecord as o, ClaudeSystemEvent as p, ClaudeUserEvent as q, ClaudeUserMessage as r, CodexAgentMessage as s, CodexAgentMessageItem as t, CodexAppServerError as u, CodexAppServerEvent as v, CodexAppServerItem as w, CodexAppServerNotification as x, CodexAppServerSessionRecord as y, CodexCollabAgentToolCall as z };