@empiricalrun/playwright-utils 0.65.1 → 0.66.1

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.
@@ -462,11 +462,7 @@ export interface paths {
462
462
  path?: never;
463
463
  cookie?: never;
464
464
  };
465
- /**
466
- * ⚙️ Get a test run's delegated triage session
467
- * @description Returns the newest delegated triage session whose source exactly matches the test run. Per-test fix sessions are excluded.
468
- */
469
- get: operations["getTestRunTriageSession"];
465
+ get?: never;
470
466
  put?: never;
471
467
  /**
472
468
  * ⚙️ Delegate a test run to triage
@@ -799,6 +795,58 @@ export interface paths {
799
795
  patch?: never;
800
796
  trace?: never;
801
797
  };
798
+ "/api/kv": {
799
+ parameters: {
800
+ query?: never;
801
+ header?: never;
802
+ path?: never;
803
+ cookie?: never;
804
+ };
805
+ /**
806
+ * List KV entries
807
+ * @description Lists unexpired entries in key order, optionally filtered by key prefix. Values are omitted unless `include_values=true`; a page with values ends early once it holds about 8 MB, so always follow `next_cursor`.
808
+ */
809
+ get: operations["listKvEntries"];
810
+ put?: never;
811
+ post?: never;
812
+ delete?: never;
813
+ options?: never;
814
+ head?: never;
815
+ patch?: never;
816
+ trace?: never;
817
+ };
818
+ "/api/kv/{key}": {
819
+ parameters: {
820
+ query?: never;
821
+ header?: never;
822
+ path?: never;
823
+ cookie?: never;
824
+ };
825
+ /**
826
+ * Get a KV entry
827
+ * @description Returns the entry stored under `key`, if it has not expired.
828
+ */
829
+ get: operations["getKvEntry"];
830
+ /**
831
+ * Write a KV entry
832
+ * @description Creates or replaces the entry under `key` with a required TTL. Send `If-None-Match: *` to create only (e.g. acquire a lock) or `If-Match: <version>` to replace only an unchanged entry.
833
+ */
834
+ put: operations["putKvEntry"];
835
+ post?: never;
836
+ /**
837
+ * Delete a KV entry
838
+ * @description Deletes the entry under `key`. Send `If-Match: <version>` to delete only an unchanged entry (e.g. release a lock you still hold).
839
+ */
840
+ delete: operations["deleteKvEntry"];
841
+ options?: never;
842
+ head?: never;
843
+ /**
844
+ * Refresh a KV entry's TTL
845
+ * @description Resets the entry's TTL without resending its value, e.g. to extend a lock lease. Send `If-Match: <version>` to refresh only an unchanged entry.
846
+ */
847
+ patch: operations["refreshKvEntry"];
848
+ trace?: never;
849
+ };
802
850
  "/api/v1/analytics/test-cases": {
803
851
  parameters: {
804
852
  query?: never;
@@ -2756,6 +2804,46 @@ export interface paths {
2756
2804
  patch?: never;
2757
2805
  trace?: never;
2758
2806
  };
2807
+ "/api/chat-sessions/{id}/computers": {
2808
+ parameters: {
2809
+ query?: never;
2810
+ header?: never;
2811
+ path?: never;
2812
+ cookie?: never;
2813
+ };
2814
+ /**
2815
+ * ⚙️ List a session's computers
2816
+ * @description Lists the computers of a chat session that have a sandbox, with their lifecycle status. A computer appears once its sandbox is provisioned and disappears when it is destroyed.
2817
+ */
2818
+ get: operations["listChatSessionComputers"];
2819
+ put?: never;
2820
+ post?: never;
2821
+ delete?: never;
2822
+ options?: never;
2823
+ head?: never;
2824
+ patch?: never;
2825
+ trace?: never;
2826
+ };
2827
+ "/api/chat-sessions/{id}/computers/{name}/control": {
2828
+ parameters: {
2829
+ query?: never;
2830
+ header?: never;
2831
+ path?: never;
2832
+ cookie?: never;
2833
+ };
2834
+ get?: never;
2835
+ put?: never;
2836
+ /**
2837
+ * ⚙️ Pause, resume, or reprovision a computer
2838
+ * @description Pauses, resumes, or reprovisions one computer of a chat session. A paused computer also resumes on its next tool call.
2839
+ */
2840
+ post: operations["controlChatSessionComputer"];
2841
+ delete?: never;
2842
+ options?: never;
2843
+ head?: never;
2844
+ patch?: never;
2845
+ trace?: never;
2846
+ };
2759
2847
  "/api/chat-sessions/{id}/costs": {
2760
2848
  parameters: {
2761
2849
  query?: never;
@@ -3926,6 +4014,26 @@ export interface paths {
3926
4014
  patch?: never;
3927
4015
  trace?: never;
3928
4016
  };
4017
+ "/api/internal/project-blocks-sync": {
4018
+ parameters: {
4019
+ query?: never;
4020
+ header?: never;
4021
+ path?: never;
4022
+ cookie?: never;
4023
+ };
4024
+ get?: never;
4025
+ put?: never;
4026
+ /**
4027
+ * ⚙️ Enqueue project blocks syncs
4028
+ * @description Enqueues background jobs that regenerate agent prompt blocks from the default branch, for one project or every active project.
4029
+ */
4030
+ post: operations["enqueueProjectBlocksSync"];
4031
+ delete?: never;
4032
+ options?: never;
4033
+ head?: never;
4034
+ patch?: never;
4035
+ trace?: never;
4036
+ };
3929
4037
  "/api/internal/request-ingestion/jira/webhook": {
3930
4038
  parameters: {
3931
4039
  query?: never;
@@ -5334,6 +5442,26 @@ export interface paths {
5334
5442
  patch: operations["updatePlan"];
5335
5443
  trace?: never;
5336
5444
  };
5445
+ "/api/plans/{id}/migrate": {
5446
+ parameters: {
5447
+ query?: never;
5448
+ header?: never;
5449
+ path?: never;
5450
+ cookie?: never;
5451
+ };
5452
+ get?: never;
5453
+ put?: never;
5454
+ /**
5455
+ * 🛡️ Move a plan's Dodo subscribers to another plan
5456
+ * @description Schedules a Dodo plan change for every live subscription on the plan, effective at each subscription's next billing date: nothing is charged now, and the renewal bills the new plan. When Dodo applies it, the subscription webhook moves the org's plan assignment from the start of that billing cycle. Re-running replaces any change already scheduled. A subscription Dodo refuses is reported as `failed`; the rest still go through.
5457
+ */
5458
+ post: operations["migratePlanSubscribers"];
5459
+ delete?: never;
5460
+ options?: never;
5461
+ head?: never;
5462
+ patch?: never;
5463
+ trace?: never;
5464
+ };
5337
5465
  "/api/platform-issues": {
5338
5466
  parameters: {
5339
5467
  query?: never;
@@ -5486,6 +5614,26 @@ export interface paths {
5486
5614
  patch: operations["updateProject"];
5487
5615
  trace?: never;
5488
5616
  };
5617
+ "/api/projects/{id}/blocks-sync/trigger": {
5618
+ parameters: {
5619
+ query?: never;
5620
+ header?: never;
5621
+ path?: never;
5622
+ cookie?: never;
5623
+ };
5624
+ get?: never;
5625
+ put?: never;
5626
+ /**
5627
+ * ⚙️ Trigger a project blocks sync
5628
+ * @description Enqueues a background job that regenerates the project's agent prompt blocks from the default branch's latest commit.
5629
+ */
5630
+ post: operations["triggerProjectBlocksSync"];
5631
+ delete?: never;
5632
+ options?: never;
5633
+ head?: never;
5634
+ patch?: never;
5635
+ trace?: never;
5636
+ };
5489
5637
  "/api/projects/{id}/branch/rename": {
5490
5638
  parameters: {
5491
5639
  query?: never;
@@ -5839,12 +5987,14 @@ export interface paths {
5839
5987
  };
5840
5988
  /**
5841
5989
  * ⚙️ Read project KV value
5990
+ * @deprecated
5842
5991
  * @description Reads a value from the scoped project's KV namespace.
5843
5992
  */
5844
5993
  get: operations["getProjectKv"];
5845
5994
  put?: never;
5846
5995
  /**
5847
5996
  * ⚙️ Write project KV value
5997
+ * @deprecated
5848
5998
  * @description Writes a value into the scoped project's KV namespace with a bounded TTL.
5849
5999
  */
5850
6000
  post: operations["setProjectKv"];
@@ -7230,7 +7380,7 @@ export interface components {
7230
7380
  updated_at: string;
7231
7381
  /** @description Owning project ID. */
7232
7382
  project_id: number;
7233
- /** @description Hive agent ref the session runs (`<name>` or `<name>@<version>`). The legacy values `chat` and `triage` mean the default agent, `main`. */
7383
+ /** @description Hive agent ref the session runs (`<name>` or `<name>@<version>`). */
7234
7384
  mode: string;
7235
7385
  /**
7236
7386
  * @description Workload class, assigned server-side; null for an ordinary user chat. Read-only — no request body accepts it.
@@ -7350,6 +7500,22 @@ export interface components {
7350
7500
  };
7351
7501
  };
7352
7502
  };
7503
+ ChatSessionComputer: {
7504
+ /** @description Computer name. */
7505
+ name: string;
7506
+ /**
7507
+ * @description Lifecycle status of the computer's sandbox.
7508
+ * @enum {string}
7509
+ */
7510
+ status: "none" | "creating" | "launching" | "ready" | "paused" | "resuming" | "destroyed" | "error";
7511
+ /** @description Provider sandbox ID. */
7512
+ sandbox_id: string;
7513
+ /** @description Sandbox provider. */
7514
+ provider: string;
7515
+ };
7516
+ ChatSessionComputerList: {
7517
+ computers: components["schemas"]["ChatSessionComputer"][];
7518
+ };
7353
7519
  ChatSessionCostTotals: {
7354
7520
  /** @description Main-agent cost. */
7355
7521
  main: number;
@@ -7454,7 +7620,7 @@ export interface components {
7454
7620
  updated_at: string;
7455
7621
  /** @description Owning project ID. */
7456
7622
  project_id: number;
7457
- /** @description Hive agent ref the session runs (`<name>` or `<name>@<version>`). The legacy values `chat` and `triage` mean the default agent, `main`. */
7623
+ /** @description Hive agent ref the session runs (`<name>` or `<name>@<version>`). */
7458
7624
  mode: string;
7459
7625
  /**
7460
7626
  * @description Workload class, assigned server-side; null for an ordinary user chat. Read-only — no request body accepts it.
@@ -7607,7 +7773,7 @@ export interface components {
7607
7773
  updated_at: string;
7608
7774
  /** @description Owning project ID. */
7609
7775
  project_id: number;
7610
- /** @description Hive agent ref the session runs (`<name>` or `<name>@<version>`). The legacy values `chat` and `triage` mean the default agent, `main`. */
7776
+ /** @description Hive agent ref the session runs (`<name>` or `<name>@<version>`). */
7611
7777
  mode: string;
7612
7778
  /**
7613
7779
  * @description Workload class, assigned server-side; null for an ordinary user chat. Read-only — no request body accepts it.
@@ -8167,7 +8333,10 @@ export interface components {
8167
8333
  snooze_until: string;
8168
8334
  /** @description Optional description explaining why the tests are being snoozed. */
8169
8335
  description?: string;
8170
- /** @description Optional user identifier for the snooze creator. Set automatically for dashboard users. */
8336
+ /**
8337
+ * Format: uuid
8338
+ * @description User ID of the snooze creator, who must belong to the project's org. Ignored for dashboard users, who are recorded as the creator. Defaults to the person who started the calling agent session.
8339
+ */
8171
8340
  created_by?: string;
8172
8341
  /** @description Environment ID to scope the snooze to. If omitted, applies to all environments. */
8173
8342
  scoped_to_environment_id?: number;
@@ -8752,6 +8921,17 @@ export interface components {
8752
8921
  /** @description Add-on plan (kind='addon') this period bills against. Super admin only. */
8753
8922
  plan_id?: number;
8754
8923
  };
8924
+ EnqueueProjectBlocksSyncRequest: {
8925
+ /** @description Project to sync. Omit to sync every active project. */
8926
+ project_id?: number;
8927
+ };
8928
+ EnqueueProjectBlocksSyncResponse: {
8929
+ /** @description Response payload. */
8930
+ data: {
8931
+ /** @description Number of sync jobs enqueued. */
8932
+ queued: number;
8933
+ };
8934
+ };
8755
8935
  EnqueueTestCasesSyncRequest: {
8756
8936
  /** @description Project whose test cases should be synced. */
8757
8937
  project_id: number;
@@ -9398,12 +9578,6 @@ export interface components {
9398
9578
  };
9399
9579
  };
9400
9580
  };
9401
- GetTestRunTriageSessionResponse: {
9402
- /** @description Response payload. */
9403
- data: {
9404
- chat_session: components["schemas"]["ChatSession"] & unknown;
9405
- };
9406
- };
9407
9581
  GetTestRunV2Response: {
9408
9582
  /** @description Response payload. */
9409
9583
  data: {
@@ -10380,6 +10554,109 @@ export interface components {
10380
10554
  /** @description Error detail when ingestion fails. */
10381
10555
  error?: unknown;
10382
10556
  };
10557
+ KvEntry: {
10558
+ /** @description Key, 1-512 characters from `A-Z a-z 0-9 . _ : -`. Use `:` to namespace keys, e.g. `pw-lock:1234:user-settings`. */
10559
+ key: string;
10560
+ /** @description The stored JSON value. Omitted from list responses unless `include_values=true`. */
10561
+ value?: (string | number | boolean | unknown[] | {
10562
+ [key: string]: unknown;
10563
+ }) | null;
10564
+ /** @description Increments on every write. Send it as `If-Match` to make a write conditional. */
10565
+ version: number;
10566
+ /**
10567
+ * Format: date-time
10568
+ * @description ISO 8601 timestamp when the entry expires.
10569
+ */
10570
+ expires_at: string;
10571
+ /**
10572
+ * Format: date-time
10573
+ * @description ISO 8601 timestamp when the entry was first written.
10574
+ */
10575
+ created_at: string;
10576
+ /**
10577
+ * Format: date-time
10578
+ * @description ISO 8601 timestamp of the latest write or TTL refresh.
10579
+ */
10580
+ updated_at: string;
10581
+ written_by: components["schemas"]["KvWriter"];
10582
+ };
10583
+ KvEntryResponse: {
10584
+ /** @description Response payload. */
10585
+ data: {
10586
+ entry: components["schemas"]["KvEntry"];
10587
+ };
10588
+ };
10589
+ KvListResponse: {
10590
+ /** @description Response payload. */
10591
+ data: {
10592
+ entries: components["schemas"]["KvEntry"][];
10593
+ /** @description Pass as `cursor` to load the next page; `null` at the end. */
10594
+ next_cursor: string | null;
10595
+ };
10596
+ };
10597
+ KvPreconditionFailedResponse: {
10598
+ /** @description Always null for error responses. */
10599
+ data: unknown;
10600
+ /** @description Error details with the current entry. */
10601
+ error: {
10602
+ /** @description Human-readable error message. */
10603
+ message: string;
10604
+ /** @description The entry as it is now, or `null` if the key does not exist. */
10605
+ current: {
10606
+ /** @description Key, 1-512 characters from `A-Z a-z 0-9 . _ : -`. Use `:` to namespace keys, e.g. `pw-lock:1234:user-settings`. */
10607
+ key: string;
10608
+ /** @description The stored JSON value. Omitted from list responses unless `include_values=true`. */
10609
+ value?: (string | number | boolean | unknown[] | {
10610
+ [key: string]: unknown;
10611
+ }) | null;
10612
+ /** @description Increments on every write. Send it as `If-Match` to make a write conditional. */
10613
+ version: number;
10614
+ /**
10615
+ * Format: date-time
10616
+ * @description ISO 8601 timestamp when the entry expires.
10617
+ */
10618
+ expires_at: string;
10619
+ /**
10620
+ * Format: date-time
10621
+ * @description ISO 8601 timestamp when the entry was first written.
10622
+ */
10623
+ created_at: string;
10624
+ /**
10625
+ * Format: date-time
10626
+ * @description ISO 8601 timestamp of the latest write or TTL refresh.
10627
+ */
10628
+ updated_at: string;
10629
+ written_by: components["schemas"]["KvWriter"];
10630
+ } | null;
10631
+ };
10632
+ };
10633
+ /** @description Who last wrote or refreshed the entry. */
10634
+ KvWriter: {
10635
+ /** @enum {string} */
10636
+ kind: "user";
10637
+ /** @description User ID. */
10638
+ id: string;
10639
+ } | {
10640
+ /** @enum {string} */
10641
+ kind: "chat_session";
10642
+ /** @description Chat session ID. */
10643
+ id: string;
10644
+ } | {
10645
+ /** @enum {string} */
10646
+ kind: "test_run";
10647
+ /** @description Test run ID. */
10648
+ id: string;
10649
+ } | {
10650
+ /** @enum {string} */
10651
+ kind: "api_key";
10652
+ /** @description Project API key ID. */
10653
+ id: string;
10654
+ } | {
10655
+ /** @enum {string} */
10656
+ kind: "system";
10657
+ /** @description Service name, when known. */
10658
+ id: string | null;
10659
+ };
10383
10660
  LastPassPerEnvEntry: {
10384
10661
  /** @description Environment ID the test last passed in. */
10385
10662
  environment_id: string;
@@ -11816,6 +12093,10 @@ export interface components {
11816
12093
  } | null;
11817
12094
  source_run_id?: number | null;
11818
12095
  };
12096
+ PatchKvEntryRequest: {
12097
+ /** @description Time-to-live in seconds (max 30 days). */
12098
+ ttl: number;
12099
+ };
11819
12100
  PatchProjectResponse: {
11820
12101
  /** @description Always true. */
11821
12102
  success: boolean;
@@ -12149,6 +12430,13 @@ export interface components {
12149
12430
  tokens: number;
12150
12431
  credits: number;
12151
12432
  };
12433
+ ProjectBlocksSyncTriggeredResponse: {
12434
+ /** @description Response payload. */
12435
+ data: {
12436
+ /** @description Whether the sync job was enqueued. */
12437
+ queued: boolean;
12438
+ };
12439
+ };
12152
12440
  ProjectBranchesResponse: {
12153
12441
  /** @description Response payload. */
12154
12442
  data: {
@@ -12446,6 +12734,14 @@ export interface components {
12446
12734
  /** @description Rules that do not affect how Empirical merges, e.g. "Blocks force pushes". */
12447
12735
  other_rules: string[];
12448
12736
  };
12737
+ PutKvEntryRequest: {
12738
+ /** @description JSON value to store (max 1 MB serialized). */
12739
+ value: (string | number | boolean | unknown[] | {
12740
+ [key: string]: unknown;
12741
+ }) | null;
12742
+ /** @description Time-to-live in seconds (max 30 days). */
12743
+ ttl: number;
12744
+ };
12449
12745
  PutRunManifestRequest: {
12450
12746
  /** @description Structured scheduled tests. */
12451
12747
  tests: {
@@ -13175,6 +13471,12 @@ export interface components {
13175
13471
  runner_backend: components["schemas"]["RunnerBackend"];
13176
13472
  };
13177
13473
  };
13474
+ RunningBackgroundJob: {
13475
+ toolCallId: string;
13476
+ jobId: string;
13477
+ command: string;
13478
+ calledAt: string;
13479
+ };
13178
13480
  SandboxActionSuccess: {
13179
13481
  /** @description Always true when the action succeeded. */
13180
13482
  success: boolean;
@@ -13369,6 +13671,8 @@ export interface components {
13369
13671
  };
13370
13672
  SessionTranscript: {
13371
13673
  rows: components["schemas"]["SessionTranscriptRow"][];
13674
+ /** @description Background jobs started by tool calls that have not ended as of last_seq. */
13675
+ background_jobs: components["schemas"]["RunningBackgroundJob"][];
13372
13676
  /** @description Media referenced by user and assistant text, keyed by handle. */
13373
13677
  media_refs: {
13374
13678
  [key: string]: components["schemas"]["SessionMedia"];
@@ -14147,7 +14451,7 @@ export interface components {
14147
14451
  description: string | null;
14148
14452
  /** @description ID of the test run that triggered the snooze creation, if applicable. */
14149
14453
  created_from_test_run_id: number | null;
14150
- /** @description User ID of the creator. Set automatically for dashboard users; `null` for API-created snoozes. */
14454
+ /** @description User ID of the creator, or `null` when no person is attributed. */
14151
14455
  created_by: string | null;
14152
14456
  /** @description ISO 8601 timestamp of when the snooze was created. */
14153
14457
  created_at: string;
@@ -14403,7 +14707,7 @@ export interface components {
14403
14707
  updated_at: string;
14404
14708
  /** @description Project ID. */
14405
14709
  project_id: number;
14406
- /** @description Session mode (e.g. `chat`). */
14710
+ /** @description Hive agent ref the session runs (e.g. `main`). */
14407
14711
  mode: string;
14408
14712
  /** @description Model used for the session. */
14409
14713
  model: string | null;
@@ -14431,7 +14735,7 @@ export interface components {
14431
14735
  updated_at: string;
14432
14736
  /** @description Project ID. */
14433
14737
  project_id: number;
14434
- /** @description Session mode (e.g. `chat`). */
14738
+ /** @description Hive agent ref the session runs (e.g. `main`). */
14435
14739
  mode: string;
14436
14740
  /** @description Model used for the session. */
14437
14741
  model: string | null;
@@ -14975,7 +15279,7 @@ export interface components {
14975
15279
  updated_at: string;
14976
15280
  /** @description Owning project ID. */
14977
15281
  project_id: number;
14978
- /** @description Hive agent ref the session runs (`<name>` or `<name>@<version>`). The legacy values `chat` and `triage` mean the default agent, `main`. */
15282
+ /** @description Hive agent ref the session runs (`<name>` or `<name>@<version>`). */
14979
15283
  mode: string;
14980
15284
  /**
14981
15285
  * @description Workload class, assigned server-side; null for an ordinary user chat. Read-only — no request body accepts it.
@@ -16214,6 +16518,11 @@ export interface components {
16214
16518
  scoped_to_environment_id?: number | null;
16215
16519
  /** @description Updated array of Playwright test IDs to snooze. */
16216
16520
  test_ids?: string[];
16521
+ /**
16522
+ * Format: uuid
16523
+ * @description User ID of the snooze creator, who must belong to the project's org.
16524
+ */
16525
+ created_by?: string;
16217
16526
  };
16218
16527
  UpdateTaskRequest: {
16219
16528
  /** @description New task title. */
@@ -17677,7 +17986,7 @@ export interface operations {
17677
17986
  };
17678
17987
  };
17679
17988
  };
17680
- getTestRunTriageSession: {
17989
+ createTestRunTriageSession: {
17681
17990
  parameters: {
17682
17991
  query?: never;
17683
17992
  header?: never;
@@ -17689,13 +17998,13 @@ export interface operations {
17689
17998
  };
17690
17999
  requestBody?: never;
17691
18000
  responses: {
17692
- /** @description The newest triage session, if one exists. */
17693
- 200: {
18001
+ /** @description The created triage session. */
18002
+ 201: {
17694
18003
  headers: {
17695
18004
  [name: string]: unknown;
17696
18005
  };
17697
18006
  content: {
17698
- "application/json": components["schemas"]["GetTestRunTriageSessionResponse"];
18007
+ "application/json": components["schemas"]["TestRunTriageSessionResponse"];
17699
18008
  };
17700
18009
  };
17701
18010
  /** @description Invalid database test run ID. */
@@ -17718,7 +18027,7 @@ export interface operations {
17718
18027
  };
17719
18028
  };
17720
18029
  };
17721
- createTestRunTriageSession: {
18030
+ triggerTestRunMerge: {
17722
18031
  parameters: {
17723
18032
  query?: never;
17724
18033
  header?: never;
@@ -17730,16 +18039,16 @@ export interface operations {
17730
18039
  };
17731
18040
  requestBody?: never;
17732
18041
  responses: {
17733
- /** @description The created triage session. */
17734
- 201: {
18042
+ /** @description The merge job was dispatched. */
18043
+ 200: {
17735
18044
  headers: {
17736
18045
  [name: string]: unknown;
17737
18046
  };
17738
18047
  content: {
17739
- "application/json": components["schemas"]["TestRunTriageSessionResponse"];
18048
+ "application/json": components["schemas"]["TriggerMergeResponse"];
17740
18049
  };
17741
18050
  };
17742
- /** @description Invalid database test run ID. */
18051
+ /** @description Invalid request. */
17743
18052
  400: {
17744
18053
  headers: {
17745
18054
  [name: string]: unknown;
@@ -17748,7 +18057,7 @@ export interface operations {
17748
18057
  "application/json": components["schemas"]["ErrorResponse"];
17749
18058
  };
17750
18059
  };
17751
- /** @description Test run not found or inaccessible. */
18060
+ /** @description Test run or environment not found. */
17752
18061
  404: {
17753
18062
  headers: {
17754
18063
  [name: string]: unknown;
@@ -17757,49 +18066,8 @@ export interface operations {
17757
18066
  "application/json": components["schemas"]["ErrorResponse"];
17758
18067
  };
17759
18068
  };
17760
- };
17761
- };
17762
- triggerTestRunMerge: {
17763
- parameters: {
17764
- query?: never;
17765
- header?: never;
17766
- path: {
17767
- /** @description Test run database ID. */
17768
- id: number;
17769
- };
17770
- cookie?: never;
17771
- };
17772
- requestBody?: never;
17773
- responses: {
17774
- /** @description The merge job was dispatched. */
17775
- 200: {
17776
- headers: {
17777
- [name: string]: unknown;
17778
- };
17779
- content: {
17780
- "application/json": components["schemas"]["TriggerMergeResponse"];
17781
- };
17782
- };
17783
- /** @description Invalid request. */
17784
- 400: {
17785
- headers: {
17786
- [name: string]: unknown;
17787
- };
17788
- content: {
17789
- "application/json": components["schemas"]["ErrorResponse"];
17790
- };
17791
- };
17792
- /** @description Test run or environment not found. */
17793
- 404: {
17794
- headers: {
17795
- [name: string]: unknown;
17796
- };
17797
- content: {
17798
- "application/json": components["schemas"]["ErrorResponse"];
17799
- };
17800
- };
17801
- /** @description Not all shards have completed. */
17802
- 409: {
18069
+ /** @description Not all shards have completed. */
18070
+ 409: {
17803
18071
  headers: {
17804
18072
  [name: string]: unknown;
17805
18073
  };
@@ -18608,6 +18876,314 @@ export interface operations {
18608
18876
  };
18609
18877
  };
18610
18878
  };
18879
+ listKvEntries: {
18880
+ parameters: {
18881
+ query?: {
18882
+ /** @description Only return keys that start with this prefix. */
18883
+ prefix?: string;
18884
+ /** @description Pass a previous page's `next_cursor` to continue listing. */
18885
+ cursor?: string;
18886
+ /** @description Maximum entries to return (max 1000). */
18887
+ limit?: number;
18888
+ /** @description Include each entry's value. */
18889
+ include_values?: "true" | "false";
18890
+ };
18891
+ header?: never;
18892
+ path?: never;
18893
+ cookie?: never;
18894
+ };
18895
+ requestBody?: never;
18896
+ responses: {
18897
+ /** @description A page of entries. */
18898
+ 200: {
18899
+ headers: {
18900
+ [name: string]: unknown;
18901
+ };
18902
+ content: {
18903
+ "application/json": components["schemas"]["KvListResponse"];
18904
+ };
18905
+ };
18906
+ /** @description Invalid request. */
18907
+ 400: {
18908
+ headers: {
18909
+ [name: string]: unknown;
18910
+ };
18911
+ content: {
18912
+ "application/json": components["schemas"]["ErrorResponse"];
18913
+ };
18914
+ };
18915
+ /** @description KV store not configured. */
18916
+ 503: {
18917
+ headers: {
18918
+ [name: string]: unknown;
18919
+ };
18920
+ content: {
18921
+ "application/json": components["schemas"]["ErrorResponse"];
18922
+ };
18923
+ };
18924
+ };
18925
+ };
18926
+ getKvEntry: {
18927
+ parameters: {
18928
+ query?: never;
18929
+ header?: never;
18930
+ path: {
18931
+ /** @description Key, 1-512 characters from `A-Z a-z 0-9 . _ : -`. Use `:` to namespace keys, e.g. `pw-lock:1234:user-settings`. */
18932
+ key: string;
18933
+ };
18934
+ cookie?: never;
18935
+ };
18936
+ requestBody?: never;
18937
+ responses: {
18938
+ /** @description The entry. */
18939
+ 200: {
18940
+ headers: {
18941
+ /** @description The entry's `version`, for use in `If-Match`. */
18942
+ ETag: string;
18943
+ [name: string]: unknown;
18944
+ };
18945
+ content: {
18946
+ "application/json": components["schemas"]["KvEntryResponse"];
18947
+ };
18948
+ };
18949
+ /** @description Invalid key. */
18950
+ 400: {
18951
+ headers: {
18952
+ [name: string]: unknown;
18953
+ };
18954
+ content: {
18955
+ "application/json": components["schemas"]["ErrorResponse"];
18956
+ };
18957
+ };
18958
+ /** @description No entry under this key. */
18959
+ 404: {
18960
+ headers: {
18961
+ [name: string]: unknown;
18962
+ };
18963
+ content: {
18964
+ "application/json": components["schemas"]["ErrorResponse"];
18965
+ };
18966
+ };
18967
+ /** @description KV store not configured. */
18968
+ 503: {
18969
+ headers: {
18970
+ [name: string]: unknown;
18971
+ };
18972
+ content: {
18973
+ "application/json": components["schemas"]["ErrorResponse"];
18974
+ };
18975
+ };
18976
+ };
18977
+ };
18978
+ putKvEntry: {
18979
+ parameters: {
18980
+ query?: never;
18981
+ header?: {
18982
+ /** @description Apply only if the entry's current `version` equals this value (its `ETag`). */
18983
+ "if-match"?: string;
18984
+ /** @description Send `*` to write only if the key does not exist. */
18985
+ "if-none-match"?: "*";
18986
+ };
18987
+ path: {
18988
+ /** @description Key, 1-512 characters from `A-Z a-z 0-9 . _ : -`. Use `:` to namespace keys, e.g. `pw-lock:1234:user-settings`. */
18989
+ key: string;
18990
+ };
18991
+ cookie?: never;
18992
+ };
18993
+ requestBody?: {
18994
+ content: {
18995
+ "application/json": components["schemas"]["PutKvEntryRequest"];
18996
+ };
18997
+ };
18998
+ responses: {
18999
+ /** @description The entry was replaced. */
19000
+ 200: {
19001
+ headers: {
19002
+ /** @description The entry's `version`, for use in `If-Match`. */
19003
+ ETag: string;
19004
+ [name: string]: unknown;
19005
+ };
19006
+ content: {
19007
+ "application/json": components["schemas"]["KvEntryResponse"];
19008
+ };
19009
+ };
19010
+ /** @description The entry was created. */
19011
+ 201: {
19012
+ headers: {
19013
+ /** @description The entry's `version`, for use in `If-Match`. */
19014
+ ETag: string;
19015
+ [name: string]: unknown;
19016
+ };
19017
+ content: {
19018
+ "application/json": components["schemas"]["KvEntryResponse"];
19019
+ };
19020
+ };
19021
+ /** @description Invalid request. */
19022
+ 400: {
19023
+ headers: {
19024
+ [name: string]: unknown;
19025
+ };
19026
+ content: {
19027
+ "application/json": components["schemas"]["ErrorResponse"];
19028
+ };
19029
+ };
19030
+ /** @description The `If-Match` or `If-None-Match` condition did not hold. */
19031
+ 412: {
19032
+ headers: {
19033
+ [name: string]: unknown;
19034
+ };
19035
+ content: {
19036
+ "application/json": components["schemas"]["KvPreconditionFailedResponse"];
19037
+ };
19038
+ };
19039
+ /** @description Value larger than 1 MB. */
19040
+ 413: {
19041
+ headers: {
19042
+ [name: string]: unknown;
19043
+ };
19044
+ content: {
19045
+ "application/json": components["schemas"]["ErrorResponse"];
19046
+ };
19047
+ };
19048
+ /** @description KV store not configured. */
19049
+ 503: {
19050
+ headers: {
19051
+ [name: string]: unknown;
19052
+ };
19053
+ content: {
19054
+ "application/json": components["schemas"]["ErrorResponse"];
19055
+ };
19056
+ };
19057
+ };
19058
+ };
19059
+ deleteKvEntry: {
19060
+ parameters: {
19061
+ query?: never;
19062
+ header?: {
19063
+ /** @description Apply only if the entry's current `version` equals this value (its `ETag`). */
19064
+ "if-match"?: string;
19065
+ };
19066
+ path: {
19067
+ /** @description Key, 1-512 characters from `A-Z a-z 0-9 . _ : -`. Use `:` to namespace keys, e.g. `pw-lock:1234:user-settings`. */
19068
+ key: string;
19069
+ };
19070
+ cookie?: never;
19071
+ };
19072
+ requestBody?: never;
19073
+ responses: {
19074
+ /** @description Deleted. */
19075
+ 204: {
19076
+ headers: {
19077
+ [name: string]: unknown;
19078
+ };
19079
+ content?: never;
19080
+ };
19081
+ /** @description Invalid request. */
19082
+ 400: {
19083
+ headers: {
19084
+ [name: string]: unknown;
19085
+ };
19086
+ content: {
19087
+ "application/json": components["schemas"]["ErrorResponse"];
19088
+ };
19089
+ };
19090
+ /** @description No entry under this key. */
19091
+ 404: {
19092
+ headers: {
19093
+ [name: string]: unknown;
19094
+ };
19095
+ content: {
19096
+ "application/json": components["schemas"]["ErrorResponse"];
19097
+ };
19098
+ };
19099
+ /** @description The `If-Match` or `If-None-Match` condition did not hold. */
19100
+ 412: {
19101
+ headers: {
19102
+ [name: string]: unknown;
19103
+ };
19104
+ content: {
19105
+ "application/json": components["schemas"]["KvPreconditionFailedResponse"];
19106
+ };
19107
+ };
19108
+ /** @description KV store not configured. */
19109
+ 503: {
19110
+ headers: {
19111
+ [name: string]: unknown;
19112
+ };
19113
+ content: {
19114
+ "application/json": components["schemas"]["ErrorResponse"];
19115
+ };
19116
+ };
19117
+ };
19118
+ };
19119
+ refreshKvEntry: {
19120
+ parameters: {
19121
+ query?: never;
19122
+ header?: {
19123
+ /** @description Apply only if the entry's current `version` equals this value (its `ETag`). */
19124
+ "if-match"?: string;
19125
+ };
19126
+ path: {
19127
+ /** @description Key, 1-512 characters from `A-Z a-z 0-9 . _ : -`. Use `:` to namespace keys, e.g. `pw-lock:1234:user-settings`. */
19128
+ key: string;
19129
+ };
19130
+ cookie?: never;
19131
+ };
19132
+ requestBody?: {
19133
+ content: {
19134
+ "application/json": components["schemas"]["PatchKvEntryRequest"];
19135
+ };
19136
+ };
19137
+ responses: {
19138
+ /** @description The refreshed entry. */
19139
+ 200: {
19140
+ headers: {
19141
+ /** @description The entry's `version`, for use in `If-Match`. */
19142
+ ETag: string;
19143
+ [name: string]: unknown;
19144
+ };
19145
+ content: {
19146
+ "application/json": components["schemas"]["KvEntryResponse"];
19147
+ };
19148
+ };
19149
+ /** @description Invalid request. */
19150
+ 400: {
19151
+ headers: {
19152
+ [name: string]: unknown;
19153
+ };
19154
+ content: {
19155
+ "application/json": components["schemas"]["ErrorResponse"];
19156
+ };
19157
+ };
19158
+ /** @description No entry under this key. */
19159
+ 404: {
19160
+ headers: {
19161
+ [name: string]: unknown;
19162
+ };
19163
+ content: {
19164
+ "application/json": components["schemas"]["ErrorResponse"];
19165
+ };
19166
+ };
19167
+ /** @description The `If-Match` or `If-None-Match` condition did not hold. */
19168
+ 412: {
19169
+ headers: {
19170
+ [name: string]: unknown;
19171
+ };
19172
+ content: {
19173
+ "application/json": components["schemas"]["KvPreconditionFailedResponse"];
19174
+ };
19175
+ };
19176
+ /** @description KV store not configured. */
19177
+ 503: {
19178
+ headers: {
19179
+ [name: string]: unknown;
19180
+ };
19181
+ content: {
19182
+ "application/json": components["schemas"]["ErrorResponse"];
19183
+ };
19184
+ };
19185
+ };
19186
+ };
18611
19187
  listTestCasesAnalyticsV1: {
18612
19188
  parameters: {
18613
19189
  query?: {
@@ -24347,6 +24923,7 @@ export interface operations {
24347
24923
  model?: string | null;
24348
24924
  /** @description Deprecated. Sessions start on the project default branch; a different branch is added to `message` as an instruction to work from it. */
24349
24925
  base_branch?: string | null;
24926
+ /** Format: uuid */
24350
24927
  created_by?: string | null;
24351
24928
  /** @description When the caller is an agent session, wake it the next time this session waits for input (one-shot). Defaults to true; pass false for a fire-and-forget message. Ignored for other callers. */
24352
24929
  subscribe?: boolean | null;
@@ -24606,6 +25183,109 @@ export interface operations {
24606
25183
  };
24607
25184
  };
24608
25185
  };
25186
+ listChatSessionComputers: {
25187
+ parameters: {
25188
+ query?: never;
25189
+ header?: never;
25190
+ path: {
25191
+ /** @description Chat session ID. */
25192
+ id: number;
25193
+ };
25194
+ cookie?: never;
25195
+ };
25196
+ requestBody?: never;
25197
+ responses: {
25198
+ /** @description Session computers. */
25199
+ 200: {
25200
+ headers: {
25201
+ [name: string]: unknown;
25202
+ };
25203
+ content: {
25204
+ "application/json": components["schemas"]["ChatSessionComputerList"];
25205
+ };
25206
+ };
25207
+ /** @description Invalid request. */
25208
+ 400: {
25209
+ headers: {
25210
+ [name: string]: unknown;
25211
+ };
25212
+ content: {
25213
+ "application/json": components["schemas"]["ErrorResponse"];
25214
+ };
25215
+ };
25216
+ /** @description Session not found. */
25217
+ 404: {
25218
+ headers: {
25219
+ [name: string]: unknown;
25220
+ };
25221
+ content: {
25222
+ "application/json": components["schemas"]["SandboxErrorMessage"];
25223
+ };
25224
+ };
25225
+ };
25226
+ };
25227
+ controlChatSessionComputer: {
25228
+ parameters: {
25229
+ query?: never;
25230
+ header?: never;
25231
+ path: {
25232
+ /** @description Chat session ID. */
25233
+ id: number;
25234
+ /** @description Computer name. */
25235
+ name: string;
25236
+ };
25237
+ cookie?: never;
25238
+ };
25239
+ requestBody?: {
25240
+ content: {
25241
+ "application/json": {
25242
+ /**
25243
+ * @description Lifecycle action to apply to the sandbox. `reprovision` builds a fresh sandbox for a session whose previous one failed to start (only acts from an errored/absent sandbox).
25244
+ * @enum {string}
25245
+ */
25246
+ action: "pause" | "resume" | "reprovision";
25247
+ };
25248
+ };
25249
+ };
25250
+ responses: {
25251
+ /** @description Action applied. */
25252
+ 200: {
25253
+ headers: {
25254
+ [name: string]: unknown;
25255
+ };
25256
+ content: {
25257
+ "application/json": components["schemas"]["SandboxActionSuccess"];
25258
+ };
25259
+ };
25260
+ /** @description Invalid request. */
25261
+ 400: {
25262
+ headers: {
25263
+ [name: string]: unknown;
25264
+ };
25265
+ content: {
25266
+ "application/json": components["schemas"]["ErrorResponse"];
25267
+ };
25268
+ };
25269
+ /** @description Computer not found. */
25270
+ 404: {
25271
+ headers: {
25272
+ [name: string]: unknown;
25273
+ };
25274
+ content: {
25275
+ "application/json": components["schemas"]["SandboxErrorMessage"];
25276
+ };
25277
+ };
25278
+ /** @description Lifecycle control failed. */
25279
+ 502: {
25280
+ headers: {
25281
+ [name: string]: unknown;
25282
+ };
25283
+ content: {
25284
+ "application/json": components["schemas"]["SandboxErrorMessage"];
25285
+ };
25286
+ };
25287
+ };
25288
+ };
24609
25289
  getChatSessionCosts: {
24610
25290
  parameters: {
24611
25291
  query?: never;
@@ -25055,6 +25735,7 @@ export interface operations {
25055
25735
  message: string;
25056
25736
  /** @enum {string} */
25057
25737
  send_action: "steer" | "follow_up";
25738
+ /** Format: uuid */
25058
25739
  created_by?: string | null;
25059
25740
  rpc_command_id?: string;
25060
25741
  /** @description When the caller is an agent session, wake it the next time this session waits for input (one-shot). Defaults to true; pass false for a fire-and-forget message. Ignored for other callers. */
@@ -25536,7 +26217,10 @@ export interface operations {
25536
26217
  };
25537
26218
  getChatSessionTranscript: {
25538
26219
  parameters: {
25539
- query?: never;
26220
+ query?: {
26221
+ /** @description When `false`, every tool call is its own `tool` row instead of being condensed into `tools` rows. Defaults to `true`. */
26222
+ group_tools?: "true" | "false";
26223
+ };
25540
26224
  header?: never;
25541
26225
  path: {
25542
26226
  /** @description Chat session ID. */
@@ -27563,6 +28247,48 @@ export interface operations {
27563
28247
  };
27564
28248
  };
27565
28249
  };
28250
+ enqueueProjectBlocksSync: {
28251
+ parameters: {
28252
+ query?: never;
28253
+ header?: never;
28254
+ path?: never;
28255
+ cookie?: never;
28256
+ };
28257
+ requestBody?: {
28258
+ content: {
28259
+ "application/json": components["schemas"]["EnqueueProjectBlocksSyncRequest"];
28260
+ };
28261
+ };
28262
+ responses: {
28263
+ /** @description The sync jobs were enqueued. */
28264
+ 202: {
28265
+ headers: {
28266
+ [name: string]: unknown;
28267
+ };
28268
+ content: {
28269
+ "application/json": components["schemas"]["EnqueueProjectBlocksSyncResponse"];
28270
+ };
28271
+ };
28272
+ /** @description Invalid request. */
28273
+ 400: {
28274
+ headers: {
28275
+ [name: string]: unknown;
28276
+ };
28277
+ content: {
28278
+ "application/json": components["schemas"]["ErrorResponse"];
28279
+ };
28280
+ };
28281
+ /** @description The jobs queue is not configured. */
28282
+ 500: {
28283
+ headers: {
28284
+ [name: string]: unknown;
28285
+ };
28286
+ content: {
28287
+ "application/json": components["schemas"]["ErrorResponse"];
28288
+ };
28289
+ };
28290
+ };
28291
+ };
27566
28292
  jiraWebhook: {
27567
28293
  parameters: {
27568
28294
  query?: never;
@@ -30747,6 +31473,8 @@ export interface operations {
30747
31473
  page?: number;
30748
31474
  /** @description Items per page (capped at 100). */
30749
31475
  per_page?: number;
31476
+ /** @description Comma-separated user IDs. When set, only these users are returned, and ids that are not members are left out. */
31477
+ ids?: string;
30750
31478
  };
30751
31479
  header?: never;
30752
31480
  path: {
@@ -31281,6 +32009,77 @@ export interface operations {
31281
32009
  };
31282
32010
  };
31283
32011
  };
32012
+ migratePlanSubscribers: {
32013
+ parameters: {
32014
+ query?: never;
32015
+ header?: never;
32016
+ path: {
32017
+ /** @description Plan to move subscribers off. */
32018
+ id: number;
32019
+ };
32020
+ cookie?: never;
32021
+ };
32022
+ requestBody?: {
32023
+ content: {
32024
+ "application/json": {
32025
+ /** @description Active shared plan with a Dodo product. */
32026
+ to_plan_id: number;
32027
+ /**
32028
+ * @description List what would be scheduled without calling Dodo.
32029
+ * @default false
32030
+ */
32031
+ dry_run?: boolean;
32032
+ };
32033
+ };
32034
+ };
32035
+ responses: {
32036
+ /** @description What was scheduled, per subscription. */
32037
+ 200: {
32038
+ headers: {
32039
+ [name: string]: unknown;
32040
+ };
32041
+ content: {
32042
+ "application/json": {
32043
+ /** @description Response payload. */
32044
+ data: {
32045
+ subscriptions: {
32046
+ org_id: number;
32047
+ dodo_subscription_id: string;
32048
+ /** @description The subscription's next billing date, when Dodo applies the change. */
32049
+ effective_at: string;
32050
+ /** @enum {string} */
32051
+ status: "scheduled" | "would_schedule" | "failed";
32052
+ error: string | null;
32053
+ }[];
32054
+ /** @description Open assignments on the plan without a Dodo subscription. They are not moved; end them and assign the new plan through /api/plan-assignments. */
32055
+ manual_assignments: {
32056
+ assignment_id: number;
32057
+ org_id: number;
32058
+ }[];
32059
+ };
32060
+ };
32061
+ };
32062
+ };
32063
+ /** @description Payments are not configured, or the target plan is the same plan, not active, or has no Dodo product. */
32064
+ 400: {
32065
+ headers: {
32066
+ [name: string]: unknown;
32067
+ };
32068
+ content: {
32069
+ "application/json": components["schemas"]["ErrorResponse"];
32070
+ };
32071
+ };
32072
+ /** @description Plan not found. */
32073
+ 404: {
32074
+ headers: {
32075
+ [name: string]: unknown;
32076
+ };
32077
+ content: {
32078
+ "application/json": components["schemas"]["ErrorResponse"];
32079
+ };
32080
+ };
32081
+ };
32082
+ };
31284
32083
  listPlatformIssues: {
31285
32084
  parameters: {
31286
32085
  query?: {
@@ -31762,6 +32561,47 @@ export interface operations {
31762
32561
  };
31763
32562
  };
31764
32563
  };
32564
+ triggerProjectBlocksSync: {
32565
+ parameters: {
32566
+ query?: never;
32567
+ header?: never;
32568
+ path: {
32569
+ /** @description Project ID. */
32570
+ id: number;
32571
+ };
32572
+ cookie?: never;
32573
+ };
32574
+ requestBody?: never;
32575
+ responses: {
32576
+ /** @description Sync job enqueued. */
32577
+ 202: {
32578
+ headers: {
32579
+ [name: string]: unknown;
32580
+ };
32581
+ content: {
32582
+ "application/json": components["schemas"]["ProjectBlocksSyncTriggeredResponse"];
32583
+ };
32584
+ };
32585
+ /** @description Project not found. */
32586
+ 404: {
32587
+ headers: {
32588
+ [name: string]: unknown;
32589
+ };
32590
+ content: {
32591
+ "application/json": components["schemas"]["ErrorResponse"];
32592
+ };
32593
+ };
32594
+ /** @description Jobs queue is not configured. */
32595
+ 500: {
32596
+ headers: {
32597
+ [name: string]: unknown;
32598
+ };
32599
+ content: {
32600
+ "application/json": components["schemas"]["ErrorResponse"];
32601
+ };
32602
+ };
32603
+ };
32604
+ };
31765
32605
  renameProjectBranch: {
31766
32606
  parameters: {
31767
32607
  query?: never;
@@ -32554,7 +33394,7 @@ export interface operations {
32554
33394
  key: string;
32555
33395
  /** @description JSON value to store. */
32556
33396
  value?: unknown;
32557
- /** @description Time-to-live in seconds (max 2 days). */
33397
+ /** @description Time-to-live in seconds (max 30 days). */
32558
33398
  ttl: number;
32559
33399
  };
32560
33400
  };
@@ -32578,7 +33418,7 @@ export interface operations {
32578
33418
  "application/json": components["schemas"]["ErrorResponse"];
32579
33419
  };
32580
33420
  };
32581
- /** @description Value larger than 2 MB. */
33421
+ /** @description Value larger than 1 MB. */
32582
33422
  413: {
32583
33423
  headers: {
32584
33424
  [name: string]: unknown;