@empiricalrun/playwright-utils 0.58.0 โ†’ 0.58.2

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.
@@ -1030,6 +1030,26 @@ export interface paths {
1030
1030
  patch?: never;
1031
1031
  trace?: never;
1032
1032
  };
1033
+ "/api/slack/messages": {
1034
+ parameters: {
1035
+ query?: never;
1036
+ header?: never;
1037
+ path?: never;
1038
+ cookie?: never;
1039
+ };
1040
+ get?: never;
1041
+ put?: never;
1042
+ /**
1043
+ * ๐Ÿค– Post a Slack message
1044
+ * @description Posts a Markdown message to a Slack channel or thread, as the Empirical bot, addressed by the `channel` and `ts` coordinates the agent was given. Sandbox-delegated principals only; the channel must be one the calling project can reach. When the coordinates match a thread linked to a chat session, the send is recorded and de-duplicated by idempotency key.
1045
+ */
1046
+ post: operations["slackSendMessage"];
1047
+ delete?: never;
1048
+ options?: never;
1049
+ head?: never;
1050
+ patch?: never;
1051
+ trace?: never;
1052
+ };
1033
1053
  "/api/slack/proxy": {
1034
1054
  parameters: {
1035
1055
  query?: never;
@@ -1050,6 +1070,26 @@ export interface paths {
1050
1070
  patch?: never;
1051
1071
  trace?: never;
1052
1072
  };
1073
+ "/api/slack/reactions": {
1074
+ parameters: {
1075
+ query?: never;
1076
+ header?: never;
1077
+ path?: never;
1078
+ cookie?: never;
1079
+ };
1080
+ get?: never;
1081
+ put?: never;
1082
+ /**
1083
+ * ๐Ÿค– React to a Slack message
1084
+ * @description Adds or removes an emoji reaction on a Slack message, as the Empirical bot. Sandbox-delegated principals only; the message must live in a channel the calling project can read. Idempotent โ€” re-adding an existing reaction succeeds.
1085
+ */
1086
+ post: operations["slackReaction"];
1087
+ delete?: never;
1088
+ options?: never;
1089
+ head?: never;
1090
+ patch?: never;
1091
+ trace?: never;
1092
+ };
1053
1093
  "/api/slack/channels/{id}": {
1054
1094
  parameters: {
1055
1095
  query?: never;
@@ -1454,6 +1494,26 @@ export interface paths {
1454
1494
  patch?: never;
1455
1495
  trace?: never;
1456
1496
  };
1497
+ "/api/infra/static-ips": {
1498
+ parameters: {
1499
+ query?: never;
1500
+ header?: never;
1501
+ path?: never;
1502
+ cookie?: never;
1503
+ };
1504
+ /**
1505
+ * ๐Ÿงช Get static egress IPs for a region
1506
+ * @description Returns the proxy endpoint and the egress IPs to allowlist for the given region.
1507
+ */
1508
+ get: operations["getStaticIps"];
1509
+ put?: never;
1510
+ post?: never;
1511
+ delete?: never;
1512
+ options?: never;
1513
+ head?: never;
1514
+ patch?: never;
1515
+ trace?: never;
1516
+ };
1457
1517
  "/api/v1/telemetry/overlay-dismissals": {
1458
1518
  parameters: {
1459
1519
  query?: never;
@@ -1503,7 +1563,7 @@ export interface paths {
1503
1563
  };
1504
1564
  /**
1505
1565
  * ๐Ÿงช List test run cases
1506
- * @description Returns a paginated list of every case in a test run โ€” passed, failed, flaky, and skipped โ€” sourced from the run ledger, with a fallback to the diagnosis table for pre-ledger runs. The project is derived from the run.
1566
+ * @description Returns a paginated list of every case in a test run โ€” passed, failed, flaky, and skipped โ€” sourced from the run ledger. The project is derived from the run.
1507
1567
  */
1508
1568
  get: operations["listTestRunCases"];
1509
1569
  put?: never;
@@ -1523,7 +1583,7 @@ export interface paths {
1523
1583
  };
1524
1584
  /**
1525
1585
  * ๐Ÿงช Get a test run case
1526
- * @description Retrieves a single case in a test run by its Playwright test ID, with the same pre-ledger diagnosis fallback. The project is derived from the run.
1586
+ * @description Retrieves a single case in a test run by its Playwright test ID. The project is derived from the run.
1527
1587
  */
1528
1588
  get: operations["getTestRunCase"];
1529
1589
  put?: never;
@@ -1541,19 +1601,35 @@ export interface paths {
1541
1601
  path?: never;
1542
1602
  cookie?: never;
1543
1603
  };
1544
- /**
1545
- * ๐Ÿค– List a chat session's upcoming alarms
1546
- * @description Returns the session's pending self-scheduled wake-ups (the agent set_alarm tool). Fired alarms are dropped by the scheduler, so every entry is still upcoming. Empty in environments without a scheduler.
1547
- */
1604
+ /** ๐Ÿค– List a session's alarms */
1548
1605
  get: operations["listChatSessionAlarms"];
1549
1606
  put?: never;
1550
- post?: never;
1607
+ /** ๐Ÿค– Create a session alarm */
1608
+ post: operations["createChatSessionAlarm"];
1551
1609
  delete?: never;
1552
1610
  options?: never;
1553
1611
  head?: never;
1554
1612
  patch?: never;
1555
1613
  trace?: never;
1556
1614
  };
1615
+ "/api/chat-sessions/{id}/alarms/{alarm_id}": {
1616
+ parameters: {
1617
+ query?: never;
1618
+ header?: never;
1619
+ path?: never;
1620
+ cookie?: never;
1621
+ };
1622
+ get?: never;
1623
+ put?: never;
1624
+ post?: never;
1625
+ /** ๐Ÿค– Delete a session alarm */
1626
+ delete: operations["deleteChatSessionAlarm"];
1627
+ options?: never;
1628
+ head?: never;
1629
+ /** ๐Ÿค– Update a session alarm */
1630
+ patch: operations["updateChatSessionAlarm"];
1631
+ trace?: never;
1632
+ };
1557
1633
  "/api/chat-sessions/{id}/threads": {
1558
1634
  parameters: {
1559
1635
  query?: never;
@@ -1589,7 +1665,7 @@ export interface paths {
1589
1665
  put?: never;
1590
1666
  /**
1591
1667
  * ๐Ÿค– Post a message to a session thread
1592
- * @description Posts an explicit Markdown message to an agent-controlled Slack thread. This does not create a chat-session user message and does not trigger automatic outbound mirroring.
1668
+ * @description Posts an explicit Markdown message to a Slack thread the agent controls, or to the source thread that started this session. This does not create a chat-session user message and does not trigger automatic outbound mirroring.
1593
1669
  */
1594
1670
  post: operations["createChatSessionThreadMessage"];
1595
1671
  delete?: never;
@@ -1896,74 +1972,6 @@ export interface paths {
1896
1972
  patch?: never;
1897
1973
  trace?: never;
1898
1974
  };
1899
- "/api/agent-workflows": {
1900
- parameters: {
1901
- query?: never;
1902
- header?: never;
1903
- path?: never;
1904
- cookie?: never;
1905
- };
1906
- /**
1907
- * ๐Ÿ›ก๏ธ List agent workflows
1908
- * @description Returns all agent workflows for the scoped project.
1909
- */
1910
- get: operations["listAgentWorkflows"];
1911
- put?: never;
1912
- /**
1913
- * ๐Ÿ›ก๏ธ Create an agent workflow
1914
- * @description Creates a cron-scheduled agent workflow for the scoped project and pokes the scheduler to re-sync cron schedules.
1915
- */
1916
- post: operations["createAgentWorkflow"];
1917
- delete?: never;
1918
- options?: never;
1919
- head?: never;
1920
- patch?: never;
1921
- trace?: never;
1922
- };
1923
- "/api/agent-workflows/{id}": {
1924
- parameters: {
1925
- query?: never;
1926
- header?: never;
1927
- path?: never;
1928
- cookie?: never;
1929
- };
1930
- get?: never;
1931
- put?: never;
1932
- post?: never;
1933
- /**
1934
- * ๐Ÿ›ก๏ธ Delete an agent workflow
1935
- * @description Deletes an agent workflow and re-syncs the scheduler.
1936
- */
1937
- delete: operations["deleteAgentWorkflow"];
1938
- options?: never;
1939
- head?: never;
1940
- /**
1941
- * ๐Ÿ›ก๏ธ Update an agent workflow
1942
- * @description Updates a workflow's prompt, schedule, or active state, then re-syncs the scheduler.
1943
- */
1944
- patch: operations["updateAgentWorkflow"];
1945
- trace?: never;
1946
- };
1947
- "/api/agent-workflows/{id}/trigger": {
1948
- parameters: {
1949
- query?: never;
1950
- header?: never;
1951
- path?: never;
1952
- cookie?: never;
1953
- };
1954
- get?: never;
1955
- put?: never;
1956
- /**
1957
- * ๐Ÿ›ก๏ธ Trigger an agent workflow
1958
- * @description Opens a chat session for the workflow's prompt. Called by the scheduler when the workflow's cron fires.
1959
- */
1960
- post: operations["triggerAgentWorkflow"];
1961
- delete?: never;
1962
- options?: never;
1963
- head?: never;
1964
- patch?: never;
1965
- trace?: never;
1966
- };
1967
1975
  "/api/alarms": {
1968
1976
  parameters: {
1969
1977
  query?: never;
@@ -2099,7 +2107,7 @@ export interface paths {
2099
2107
  head?: never;
2100
2108
  /**
2101
2109
  * โš™๏ธ Update a chat session
2102
- * @description Updates allowed fields on a chat session. Side effects: an `impacted_tests` change broadcasts a realtime update; an `environment_id` change rewrites the running sandbox's .env (both best-effort).
2110
+ * @description Updates allowed fields on a chat session. Side effect: an `impacted_tests` change broadcasts a realtime update (best-effort).
2103
2111
  */
2104
2112
  patch: operations["patchChatSession"];
2105
2113
  trace?: never;
@@ -2244,26 +2252,6 @@ export interface paths {
2244
2252
  patch?: never;
2245
2253
  trace?: never;
2246
2254
  };
2247
- "/api/chat-sessions/{id}/environment-variables": {
2248
- parameters: {
2249
- query?: never;
2250
- header?: never;
2251
- path?: never;
2252
- cookie?: never;
2253
- };
2254
- /**
2255
- * โš™๏ธ Get a session's environment variables
2256
- * @description Returns the environment variables resolved for the session's project and bound environment.
2257
- */
2258
- get: operations["getChatSessionEnvironmentVariables"];
2259
- put?: never;
2260
- post?: never;
2261
- delete?: never;
2262
- options?: never;
2263
- head?: never;
2264
- patch?: never;
2265
- trace?: never;
2266
- };
2267
2255
  "/api/chat-sessions/{id}/message": {
2268
2256
  parameters: {
2269
2257
  query?: never;
@@ -2519,8 +2507,8 @@ export interface paths {
2519
2507
  options?: never;
2520
2508
  head?: never;
2521
2509
  /**
2522
- * โš™๏ธ Update a thread's Slack sync
2523
- * @description Enables or disables two-way Slack sync for a session thread.
2510
+ * โš™๏ธ Update a notification thread's Slack sync
2511
+ * @description Enables or disables the session's Slack DM notifications for one user.
2524
2512
  */
2525
2513
  patch: operations["updateChatSessionSlackThreadSync"];
2526
2514
  trace?: never;
@@ -2885,26 +2873,6 @@ export interface paths {
2885
2873
  patch?: never;
2886
2874
  trace?: never;
2887
2875
  };
2888
- "/api/github/knowledge-files": {
2889
- parameters: {
2890
- query?: never;
2891
- header?: never;
2892
- path?: never;
2893
- cookie?: never;
2894
- };
2895
- /**
2896
- * โš™๏ธ List knowledge files
2897
- * @description Lists markdown knowledge files under `.empiricalrun` for a repo's project.
2898
- */
2899
- get: operations["listKnowledgeFiles"];
2900
- put?: never;
2901
- post?: never;
2902
- delete?: never;
2903
- options?: never;
2904
- head?: never;
2905
- patch?: never;
2906
- trace?: never;
2907
- };
2908
2876
  "/api/github/main-app/installations": {
2909
2877
  parameters: {
2910
2878
  query?: never;
@@ -3317,6 +3285,26 @@ export interface paths {
3317
3285
  patch?: never;
3318
3286
  trace?: never;
3319
3287
  };
3288
+ "/api/internal/spot-interruptions": {
3289
+ parameters: {
3290
+ query?: never;
3291
+ header?: never;
3292
+ path?: never;
3293
+ cookie?: never;
3294
+ };
3295
+ get?: never;
3296
+ put?: never;
3297
+ /**
3298
+ * โš™๏ธ Handle an ECS spot-interruption event
3299
+ * @description Re-dispatches the interrupted task's shard to the on-demand queue when the shard is still queued with no registered worker (a spot interruption between task launch and job pickup). Any other shard state is reported as `skipped`.
3300
+ */
3301
+ post: operations["handleSpotInterruption"];
3302
+ delete?: never;
3303
+ options?: never;
3304
+ head?: never;
3305
+ patch?: never;
3306
+ trace?: never;
3307
+ };
3320
3308
  "/api/internal/test-cases-sync": {
3321
3309
  parameters: {
3322
3310
  query?: never;
@@ -4329,6 +4317,66 @@ export interface paths {
4329
4317
  patch: operations["updatePlanAssignment"];
4330
4318
  trace?: never;
4331
4319
  };
4320
+ "/api/project-addons": {
4321
+ parameters: {
4322
+ query?: never;
4323
+ header?: never;
4324
+ path?: never;
4325
+ cookie?: never;
4326
+ };
4327
+ /**
4328
+ * โš™๏ธ ๐Ÿงช List add-ons for the scoped project
4329
+ * @description Returns every known add-on with its current state, plus the full period history for this project.
4330
+ */
4331
+ get: operations["listProjectAddons"];
4332
+ put?: never;
4333
+ post?: never;
4334
+ delete?: never;
4335
+ options?: never;
4336
+ head?: never;
4337
+ patch?: never;
4338
+ trace?: never;
4339
+ };
4340
+ "/api/project-addons/{addon}/disable": {
4341
+ parameters: {
4342
+ query?: never;
4343
+ header?: never;
4344
+ path?: never;
4345
+ cookie?: never;
4346
+ };
4347
+ get?: never;
4348
+ put?: never;
4349
+ /**
4350
+ * ๐Ÿงช Disable an add-on
4351
+ * @description Closes the open period, preserving it as history. Returns 409 when the add-on was not enabled, or when the add-on is still in use โ€” repo ownership cannot be turned off while the repository lives outside Empirical's GitHub org.
4352
+ */
4353
+ post: operations["disableProjectAddon"];
4354
+ delete?: never;
4355
+ options?: never;
4356
+ head?: never;
4357
+ patch?: never;
4358
+ trace?: never;
4359
+ };
4360
+ "/api/project-addons/{addon}/enable": {
4361
+ parameters: {
4362
+ query?: never;
4363
+ header?: never;
4364
+ path?: never;
4365
+ cookie?: never;
4366
+ };
4367
+ get?: never;
4368
+ put?: never;
4369
+ /**
4370
+ * ๐Ÿงช Enable an add-on
4371
+ * @description Opens a new period effective now. Returns 409 when the add-on is already enabled, so a double submit cannot create overlapping periods.
4372
+ */
4373
+ post: operations["enableProjectAddon"];
4374
+ delete?: never;
4375
+ options?: never;
4376
+ head?: never;
4377
+ patch?: never;
4378
+ trace?: never;
4379
+ };
4332
4380
  "/api/projects": {
4333
4381
  parameters: {
4334
4382
  query?: never;
@@ -4437,6 +4485,26 @@ export interface paths {
4437
4485
  patch?: never;
4438
4486
  trace?: never;
4439
4487
  };
4488
+ "/api/projects/{id}/manager-session": {
4489
+ parameters: {
4490
+ query?: never;
4491
+ header?: never;
4492
+ path?: never;
4493
+ cookie?: never;
4494
+ };
4495
+ get?: never;
4496
+ put?: never;
4497
+ /**
4498
+ * โš™๏ธ Get or create the project's manager session
4499
+ * @description Returns the project's manager session, creating it if there isn't one. A project has at most one open manager session, enforced by a partial unique index; the session is stamped `purpose = "manager"` server-side. Safe to call concurrently โ€” the loser of the race returns the winner.
4500
+ */
4501
+ post: operations["getOrCreateProjectManagerSession"];
4502
+ delete?: never;
4503
+ options?: never;
4504
+ head?: never;
4505
+ patch?: never;
4506
+ trace?: never;
4507
+ };
4440
4508
  "/api/projects/{id}/merge-requests": {
4441
4509
  parameters: {
4442
4510
  query?: never;
@@ -4745,51 +4813,47 @@ export interface paths {
4745
4813
  patch?: never;
4746
4814
  trace?: never;
4747
4815
  };
4748
- "/api/realtime/token": {
4816
+ "/api/projects/static-ip-proxy-token": {
4749
4817
  parameters: {
4750
4818
  query?: never;
4751
4819
  header?: never;
4752
4820
  path?: never;
4753
4821
  cookie?: never;
4754
4822
  };
4823
+ get?: never;
4824
+ put?: never;
4755
4825
  /**
4756
- * โš™๏ธ Issue a realtime token
4757
- * @description Mints a short-lived token (1 hour TTL) the caller uses to open the realtime-worker WebSocket channel.
4826
+ * Mint a static IP proxy token
4827
+ * @description Mints a short-lived, project-scoped static-IP proxy credential for the scoped project. Used by the sandbox token refresher.
4758
4828
  */
4759
- get: operations["getRealtimeToken"];
4760
- put?: never;
4761
- post?: never;
4829
+ post: operations["getProjectStaticIpProxyToken"];
4762
4830
  delete?: never;
4763
4831
  options?: never;
4764
4832
  head?: never;
4765
4833
  patch?: never;
4766
4834
  trace?: never;
4767
4835
  };
4768
- "/api/recent-pages": {
4836
+ "/api/razorpay/webhook": {
4769
4837
  parameters: {
4770
4838
  query?: never;
4771
4839
  header?: never;
4772
4840
  path?: never;
4773
4841
  cookie?: never;
4774
4842
  };
4843
+ get?: never;
4844
+ put?: never;
4775
4845
  /**
4776
- * List recently viewed pages
4777
- * @description Returns the user's 10 most recently viewed accessible dashboard destinations from the last 14 days.
4778
- */
4779
- get: operations["listRecentPages"];
4780
- /**
4781
- * Record a recently viewed page
4782
- * @description Records or refreshes one project/page destination with a sliding 14-day expiry.
4846
+ * Razorpay payments webhook
4847
+ * @description Receives signature-verified Razorpay events. payment.captured events whose order notes contain an invoice_id reconcile that payment onto the invoice. Other events are acknowledged and ignored.
4783
4848
  */
4784
- put: operations["recordRecentPage"];
4785
- post?: never;
4849
+ post: operations["razorpayPaymentsWebhook"];
4786
4850
  delete?: never;
4787
4851
  options?: never;
4788
4852
  head?: never;
4789
4853
  patch?: never;
4790
4854
  trace?: never;
4791
4855
  };
4792
- "/api/reporter-types": {
4856
+ "/api/realtime/token": {
4793
4857
  parameters: {
4794
4858
  query?: never;
4795
4859
  header?: never;
@@ -4797,10 +4861,10 @@ export interface paths {
4797
4861
  cookie?: never;
4798
4862
  };
4799
4863
  /**
4800
- * โš™๏ธ ๐Ÿงช List reporter capabilities
4801
- * @description Lists reporter types, supported destinations and events, and inbound-reply capabilities.
4864
+ * โš™๏ธ Issue a realtime token
4865
+ * @description Mints a short-lived token (1 hour TTL) the caller uses to open the realtime-worker WebSocket channel.
4802
4866
  */
4803
- get: operations["listReporterTypes"];
4867
+ get: operations["getRealtimeToken"];
4804
4868
  put?: never;
4805
4869
  post?: never;
4806
4870
  delete?: never;
@@ -4809,7 +4873,51 @@ export interface paths {
4809
4873
  patch?: never;
4810
4874
  trace?: never;
4811
4875
  };
4812
- "/api/requests": {
4876
+ "/api/recent-pages": {
4877
+ parameters: {
4878
+ query?: never;
4879
+ header?: never;
4880
+ path?: never;
4881
+ cookie?: never;
4882
+ };
4883
+ /**
4884
+ * List recently viewed pages
4885
+ * @description Returns the user's 10 most recently viewed accessible dashboard destinations from the last 14 days.
4886
+ */
4887
+ get: operations["listRecentPages"];
4888
+ /**
4889
+ * Record a recently viewed page
4890
+ * @description Records or refreshes one project/page destination with a sliding 14-day expiry.
4891
+ */
4892
+ put: operations["recordRecentPage"];
4893
+ post?: never;
4894
+ delete?: never;
4895
+ options?: never;
4896
+ head?: never;
4897
+ patch?: never;
4898
+ trace?: never;
4899
+ };
4900
+ "/api/reporter-types": {
4901
+ parameters: {
4902
+ query?: never;
4903
+ header?: never;
4904
+ path?: never;
4905
+ cookie?: never;
4906
+ };
4907
+ /**
4908
+ * โš™๏ธ ๐Ÿงช List reporter capabilities
4909
+ * @description Lists reporter types, supported destinations and events, and inbound-reply capabilities.
4910
+ */
4911
+ get: operations["listReporterTypes"];
4912
+ put?: never;
4913
+ post?: never;
4914
+ delete?: never;
4915
+ options?: never;
4916
+ head?: never;
4917
+ patch?: never;
4918
+ trace?: never;
4919
+ };
4920
+ "/api/requests": {
4813
4921
  parameters: {
4814
4922
  query?: never;
4815
4923
  header?: never;
@@ -5059,7 +5167,7 @@ export interface paths {
5059
5167
  };
5060
5168
  /**
5061
5169
  * Get test run detail (UI)
5062
- * @description Returns everything the test-run detail page renders in one call: the enriched run, its diagnoses, the test cases those diagnoses reference, and the resolved created-by / cancelled-by users.
5170
+ * @description Returns everything the test-run detail page renders in one call: the enriched run, the first page of its cases, the test cases those rows reference, and the resolved created-by / cancelled-by users.
5063
5171
  */
5064
5172
  get: operations["getUiTestRunDetail"];
5065
5173
  put?: never;
@@ -6138,6 +6246,31 @@ export interface components {
6138
6246
  /** @description Error detail when ingestion fails. */
6139
6247
  error?: unknown;
6140
6248
  };
6249
+ SpotInterruptionResponse: {
6250
+ /** @description Response payload. */
6251
+ data: {
6252
+ /**
6253
+ * @description Whether the shard was re-dispatched, or the event needed no action.
6254
+ * @enum {string}
6255
+ */
6256
+ action: "reenqueued" | "skipped";
6257
+ /** @description Why the event was skipped; absent on re-enqueue. */
6258
+ reason?: string;
6259
+ };
6260
+ };
6261
+ SpotInterruptionRequest: {
6262
+ /** @description The stopped ECS task's `startedBy` tag (`emp/<runId>/<shard>/<jobType>`). */
6263
+ started_by: string;
6264
+ /**
6265
+ * @description AWS region the task-state-change event came from.
6266
+ * @enum {string}
6267
+ */
6268
+ region: "us-east-1" | "ap-south-1";
6269
+ /** @description ECS task id of the interrupted task, for the audit trail. */
6270
+ task_id?: string;
6271
+ /** @description ECS `stoppedReason`, for the audit trail. */
6272
+ stopped_reason?: string;
6273
+ };
6141
6274
  CreateProjectResponse: {
6142
6275
  /** @description Response payload. */
6143
6276
  data: {
@@ -6376,6 +6509,15 @@ export interface components {
6376
6509
  username: string;
6377
6510
  };
6378
6511
  };
6512
+ ProjectStaticIpProxyTokenResponse: {
6513
+ /** @description Response payload. */
6514
+ data: {
6515
+ /** @description Static-IP proxy access token, HMAC signed. */
6516
+ token: string;
6517
+ /** @description Unix seconds at which the token stops being accepted. */
6518
+ expires_at: number;
6519
+ };
6520
+ };
6379
6521
  MergeRequestsResponse: {
6380
6522
  /** @description The page of merge requests. */
6381
6523
  data: components["schemas"]["MergeRequest"][];
@@ -6546,6 +6688,59 @@ export interface components {
6546
6688
  /** @description Distinct chat sessions contributing to this row. */
6547
6689
  sessions: number;
6548
6690
  };
6691
+ ProjectManagerSessionResponse: {
6692
+ /** @description Response payload. */
6693
+ data: {
6694
+ chat_session: components["schemas"]["ChatSession"];
6695
+ /** @description True when this request created the session, false when it returned the existing one. */
6696
+ created: boolean;
6697
+ };
6698
+ };
6699
+ ChatSession: {
6700
+ /** @description Chat session ID. */
6701
+ id: number;
6702
+ /** @description Session title. */
6703
+ title: string | null;
6704
+ /** @description Creator user ID. */
6705
+ created_by: string | null;
6706
+ /** @description Creation timestamp (ISO). */
6707
+ created_at: string;
6708
+ /** @description Last update timestamp (ISO). */
6709
+ updated_at: string;
6710
+ /** @description Owning project ID. */
6711
+ project_id: number;
6712
+ /** @description Working branch name. */
6713
+ branch_name: string;
6714
+ /** @description Base branch name. */
6715
+ base_branch: string;
6716
+ /** @description Session mode (e.g. chat). */
6717
+ mode: string;
6718
+ /** @description Origin of the session. */
6719
+ source: string;
6720
+ /** @description Source-specific identifier. */
6721
+ source_identifier: string;
6722
+ /**
6723
+ * @description Workload class, assigned server-side; null for an ordinary user chat. Read-only โ€” no request body accepts it.
6724
+ * @enum {string|null}
6725
+ */
6726
+ purpose?: "triage" | "manager" | null;
6727
+ /** @description Requested model. */
6728
+ model: string | null;
6729
+ /** @description Opaque agent chat state. */
6730
+ chat_state?: unknown;
6731
+ /** @description Tests impacted by this session. */
6732
+ impacted_tests?: unknown;
6733
+ /** @description Whether the agent is awaiting user input. */
6734
+ ask_user_for_input: boolean | null;
6735
+ /** @description Langfuse trace ID. */
6736
+ langfuse_trace_id: string | null;
6737
+ /** @description Whether the session is closed. */
6738
+ is_closed: boolean;
6739
+ /** @description Feature flags enabled for the session. */
6740
+ feature_flags: string[];
6741
+ /** @description Durable outbox row for the first message. */
6742
+ pending_first_message?: unknown;
6743
+ };
6549
6744
  ProjectListResponse: {
6550
6745
  /** @description Response payload. */
6551
6746
  data: {
@@ -7279,11 +7474,9 @@ export interface components {
7279
7474
  /** @description Langfuse trace ID for observability. */
7280
7475
  langfuse_trace_id: string | null;
7281
7476
  /** @description Whether the session is closed. */
7282
- is_closed: boolean | null;
7477
+ is_closed: boolean;
7283
7478
  /** @description Feature flags active for this session. */
7284
7479
  feature_flags: string[];
7285
- /** @description Environment the session runs against. */
7286
- environment_id: number | null;
7287
7480
  /** @description Outboxed first message awaiting delivery. */
7288
7481
  pending_first_message?: unknown;
7289
7482
  } | null;
@@ -7390,11 +7583,9 @@ export interface components {
7390
7583
  /** @description Langfuse trace ID for observability. */
7391
7584
  langfuse_trace_id: string | null;
7392
7585
  /** @description Whether the session is closed. */
7393
- is_closed: boolean | null;
7586
+ is_closed: boolean;
7394
7587
  /** @description Feature flags active for this session. */
7395
7588
  feature_flags: string[];
7396
- /** @description Environment the session runs against. */
7397
- environment_id: number | null;
7398
7589
  /** @description Outboxed first message awaiting delivery. */
7399
7590
  pending_first_message?: unknown;
7400
7591
  /** @description Resolved details for the creating user, if available. */
@@ -7449,11 +7640,9 @@ export interface components {
7449
7640
  /** @description Langfuse trace ID for observability. */
7450
7641
  langfuse_trace_id: string | null;
7451
7642
  /** @description Whether the session is closed. */
7452
- is_closed: boolean | null;
7643
+ is_closed: boolean;
7453
7644
  /** @description Feature flags active for this session. */
7454
7645
  feature_flags: string[];
7455
- /** @description Environment the session runs against. */
7456
- environment_id: number | null;
7457
7646
  /** @description Outboxed first message awaiting delivery. */
7458
7647
  pending_first_message?: unknown;
7459
7648
  };
@@ -7481,6 +7670,73 @@ export interface components {
7481
7670
  }[];
7482
7671
  };
7483
7672
  };
7673
+ ListProjectAddonsResponse: {
7674
+ /** @description Response payload. */
7675
+ data: {
7676
+ addons: components["schemas"]["ProjectAddonState"][];
7677
+ /** @description Every period for this project, newest first. */
7678
+ history: components["schemas"]["ProjectAddonPeriod"][];
7679
+ };
7680
+ };
7681
+ ProjectAddonState: {
7682
+ /**
7683
+ * @description Add-on identifier.
7684
+ * @enum {string}
7685
+ */
7686
+ key: "static_ip_proxy" | "repo_ownership";
7687
+ name: string;
7688
+ description: string;
7689
+ /** @description Copy for the enable-confirmation dialog. Null when the add-on has nothing to warn about. */
7690
+ billing_note: string | null;
7691
+ /** @description True when there is an open period for this add-on. */
7692
+ enabled: boolean;
7693
+ /** @description effective_from of the open period, or null when disabled. */
7694
+ active_since: string | null;
7695
+ };
7696
+ ProjectAddonPeriod: {
7697
+ id: number;
7698
+ /**
7699
+ * @description Add-on identifier.
7700
+ * @enum {string}
7701
+ */
7702
+ addon: "static_ip_proxy" | "repo_ownership";
7703
+ /** @description ISO timestamp the add-on became active. */
7704
+ effective_from: string;
7705
+ /** @description ISO timestamp it was turned off; null while active. */
7706
+ effective_to: string | null;
7707
+ /** @description Order-form line this period bills against, when a priced line exists. Null for add-ons that are free today. */
7708
+ order_form_line_id: number | null;
7709
+ created_by: string | null;
7710
+ ended_by: string | null;
7711
+ };
7712
+ ProjectAddonResponse: {
7713
+ /** @description Response payload. */
7714
+ data: {
7715
+ addon: components["schemas"]["ProjectAddonPeriod"];
7716
+ };
7717
+ };
7718
+ EnableProjectAddonRequest: {
7719
+ /**
7720
+ * Format: date-time
7721
+ * @description Backdate the period to this ISO timestamp. Super admin only; defaults to now.
7722
+ */
7723
+ effective_from?: string;
7724
+ /** @description Order-form line (kind='addon') this period bills against. Super admin only. */
7725
+ order_form_line_id?: number;
7726
+ };
7727
+ StaticIpsResponse: {
7728
+ /** @description Response payload. */
7729
+ data: {
7730
+ /** @description AWS region of the proxy fleet. */
7731
+ region: string;
7732
+ /** @description Human-readable location. */
7733
+ location: string;
7734
+ /** @description Proxy endpoint to point Playwright's proxy config at. */
7735
+ endpoint: string;
7736
+ /** @description Egress IPs to allowlist. One per proxy instance. */
7737
+ ips: string[];
7738
+ };
7739
+ };
7484
7740
  SandboxSnapshotListResponse: {
7485
7741
  /** @description Response payload. */
7486
7742
  data: {
@@ -7791,7 +8047,7 @@ export interface components {
7791
8047
  name?: string | null;
7792
8048
  /** @description Short description (v2). */
7793
8049
  description?: string | null;
7794
- /** @description Origin of the memory, e.g. "app_knowledge". */
8050
+ /** @description Origin of the memory. Free text; "app_knowledge" marks rows migrated from the pre-rename App Knowledge files. */
7795
8051
  source?: string | null;
7796
8052
  /** @description Source file path for file-sourced memories; unique within the project. */
7797
8053
  source_path?: string | null;
@@ -7848,95 +8104,6 @@ export interface components {
7848
8104
  /** @description How far from now to fire, as a duration string with units m/h/d โ€” e.g. "15m", "2h", "1d", or compound "1h30m". Min 15m, max 72h (3 days). */
7849
8105
  delay: string;
7850
8106
  };
7851
- AgentWorkflowListResponse: {
7852
- /** @description Response payload. */
7853
- data: {
7854
- workflows: components["schemas"]["AgentWorkflow"][];
7855
- };
7856
- };
7857
- AgentWorkflow: {
7858
- /** @description Agent workflow ID. */
7859
- id: number;
7860
- /** @description ID of the project the workflow belongs to. */
7861
- project_id: number;
7862
- /** @description Prompt sent to the chat session when triggered. */
7863
- prompt: string;
7864
- /** @description Cron expression controlling when the workflow runs. */
7865
- cron_schedule: string;
7866
- /** @description Whether the workflow is active and scheduled. */
7867
- is_active: boolean;
7868
- /** @description ISO 8601 timestamp the workflow was created. */
7869
- created_at: string;
7870
- /** @description ISO 8601 timestamp the workflow was last updated. */
7871
- updated_at: string;
7872
- };
7873
- AgentWorkflowResponse: {
7874
- /** @description Response payload. */
7875
- data: {
7876
- workflow: components["schemas"]["AgentWorkflow"];
7877
- };
7878
- };
7879
- AgentWorkflowUpdateResponse: {
7880
- /** @description Response payload. */
7881
- data: {
7882
- workflow: components["schemas"]["AgentWorkflow"] & unknown;
7883
- };
7884
- };
7885
- AgentWorkflowDeleteResponse: {
7886
- /** @description Response payload. */
7887
- data: {
7888
- /** @description Always `true` when the workflow was deleted. */
7889
- success: boolean;
7890
- };
7891
- };
7892
- AgentWorkflowTriggerResponse: {
7893
- /** @description Response payload. */
7894
- data: {
7895
- chat_session: components["schemas"]["AgentWorkflowChatSession"];
7896
- };
7897
- };
7898
- AgentWorkflowChatSession: {
7899
- /** @description Chat session ID. */
7900
- id: number;
7901
- /** @description Session title, generated lazily. */
7902
- title: string | null;
7903
- /** @description User ID that created the session, if any. */
7904
- created_by: string | null;
7905
- /** @description ISO 8601 timestamp the session was created. */
7906
- created_at: string;
7907
- /** @description ISO 8601 timestamp the session was last updated. */
7908
- updated_at: string;
7909
- /** @description ID of the project the session belongs to. */
7910
- project_id: number;
7911
- /** @description Working branch for the session. */
7912
- branch_name: string;
7913
- /** @description Branch the working branch was created from. */
7914
- base_branch: string;
7915
- /** @description Session mode (e.g. `chat`). */
7916
- mode: string;
7917
- /** @description Origin of the session (`agent-workflow` here). */
7918
- source: string;
7919
- /** @description Stable identifier for the session's origin. */
7920
- source_identifier: string;
7921
- /** @description Model used for the session, if pinned. */
7922
- model: string | null;
7923
- /** @description Opaque serialized chat state. */
7924
- chat_state?: unknown;
7925
- /** @description Tests impacted by the session's changes. */
7926
- impacted_tests: unknown[];
7927
- /** @description Whether the session is awaiting user input. */
7928
- ask_user_for_input: boolean | null;
7929
- /** @description Langfuse trace ID for observability. */
7930
- langfuse_trace_id: string | null;
7931
- /** @description Whether the session has been closed. */
7932
- is_closed: boolean | null;
7933
- /** @description Feature flags enabled for the session. */
7934
- feature_flags: string[];
7935
- /** @description Environment ID scoped to the session, if any. */
7936
- environment_id: number | null;
7937
- /** @description Outbox payload for the session's first message. */
7938
- pending_first_message?: unknown;
7939
- };
7940
8107
  ProjectResourceListResponse: {
7941
8108
  /** @description The page of resources. */
7942
8109
  data: {
@@ -8284,6 +8451,28 @@ export interface components {
8284
8451
  /** @description Error message. */
8285
8452
  error: string;
8286
8453
  };
8454
+ SlackReactionResult: {
8455
+ /** @enum {boolean} */
8456
+ ok: true;
8457
+ /** @description Emoji name applied or removed. */
8458
+ reaction: string;
8459
+ /** @enum {string} */
8460
+ action: "add" | "remove";
8461
+ };
8462
+ SlackReactionError: {
8463
+ /** @description Error message. */
8464
+ error: string;
8465
+ };
8466
+ SlackMessageResult: {
8467
+ /** @enum {boolean} */
8468
+ ok: true;
8469
+ /** @description Timestamp id of the message that was posted. */
8470
+ ts: string;
8471
+ };
8472
+ SlackMessageError: {
8473
+ /** @description Error message. */
8474
+ error: string;
8475
+ };
8287
8476
  ChatSessionUsersResponse: {
8288
8477
  /** @description Response payload. */
8289
8478
  data: components["schemas"]["ChatSessionUserDetail"][];
@@ -8368,6 +8557,11 @@ export interface components {
8368
8557
  source: string;
8369
8558
  /** @description Source-specific identifier. */
8370
8559
  source_identifier: string;
8560
+ /**
8561
+ * @description Workload class, assigned server-side; null for an ordinary user chat. Read-only โ€” no request body accepts it.
8562
+ * @enum {string|null}
8563
+ */
8564
+ purpose?: "triage" | "manager" | null;
8371
8565
  /** @description Requested model. */
8372
8566
  model: string | null;
8373
8567
  /** @description Whether the agent is awaiting user input. */
@@ -8375,11 +8569,9 @@ export interface components {
8375
8569
  /** @description Langfuse trace ID. */
8376
8570
  langfuse_trace_id: string | null;
8377
8571
  /** @description Whether the session is closed. */
8378
- is_closed: boolean | null;
8572
+ is_closed: boolean;
8379
8573
  /** @description Feature flags enabled for the session. */
8380
8574
  feature_flags: string[];
8381
- /** @description Bound environment ID. */
8382
- environment_id: number | null;
8383
8575
  /** @description Resolved Supabase details for the creator. */
8384
8576
  created_by_user_detail?: {
8385
8577
  /** @description Supabase user ID. */
@@ -8408,48 +8600,6 @@ export interface components {
8408
8600
  chat_session: components["schemas"]["ChatSession"];
8409
8601
  };
8410
8602
  };
8411
- ChatSession: {
8412
- /** @description Chat session ID. */
8413
- id: number;
8414
- /** @description Session title. */
8415
- title: string | null;
8416
- /** @description Creator user ID. */
8417
- created_by: string | null;
8418
- /** @description Creation timestamp (ISO). */
8419
- created_at: string;
8420
- /** @description Last update timestamp (ISO). */
8421
- updated_at: string;
8422
- /** @description Owning project ID. */
8423
- project_id: number;
8424
- /** @description Working branch name. */
8425
- branch_name: string;
8426
- /** @description Base branch name. */
8427
- base_branch: string;
8428
- /** @description Session mode (e.g. chat). */
8429
- mode: string;
8430
- /** @description Origin of the session. */
8431
- source: string;
8432
- /** @description Source-specific identifier. */
8433
- source_identifier: string;
8434
- /** @description Requested model. */
8435
- model: string | null;
8436
- /** @description Opaque agent chat state. */
8437
- chat_state?: unknown;
8438
- /** @description Tests impacted by this session. */
8439
- impacted_tests?: unknown;
8440
- /** @description Whether the agent is awaiting user input. */
8441
- ask_user_for_input: boolean | null;
8442
- /** @description Langfuse trace ID. */
8443
- langfuse_trace_id: string | null;
8444
- /** @description Whether the session is closed. */
8445
- is_closed: boolean | null;
8446
- /** @description Feature flags enabled for the session. */
8447
- feature_flags: string[];
8448
- /** @description Bound environment ID. */
8449
- environment_id: number | null;
8450
- /** @description Durable outbox row for the first message. */
8451
- pending_first_message?: unknown;
8452
- };
8453
8603
  ChatSessionThreadsListResponse: {
8454
8604
  /** @description Response payload. */
8455
8605
  data: {
@@ -8555,6 +8705,11 @@ export interface components {
8555
8705
  source: string;
8556
8706
  /** @description Source-specific identifier. */
8557
8707
  source_identifier: string;
8708
+ /**
8709
+ * @description Workload class, assigned server-side; null for an ordinary user chat. Read-only โ€” no request body accepts it.
8710
+ * @enum {string|null}
8711
+ */
8712
+ purpose?: "triage" | "manager" | null;
8558
8713
  /** @description Requested model. */
8559
8714
  model: string | null;
8560
8715
  /** @description Opaque agent chat state. */
@@ -8566,11 +8721,9 @@ export interface components {
8566
8721
  /** @description Langfuse trace ID. */
8567
8722
  langfuse_trace_id: string | null;
8568
8723
  /** @description Whether the session is closed. */
8569
- is_closed: boolean | null;
8724
+ is_closed: boolean;
8570
8725
  /** @description Feature flags enabled for the session. */
8571
8726
  feature_flags: string[];
8572
- /** @description Bound environment ID. */
8573
- environment_id: number | null;
8574
8727
  /** @description Durable outbox row for the first message. */
8575
8728
  pending_first_message?: unknown;
8576
8729
  /** @description Resolved Supabase details for the creator. */
@@ -8597,37 +8750,9 @@ export interface components {
8597
8750
  chat_session: components["schemas"]["ChatSession"];
8598
8751
  };
8599
8752
  };
8600
- ChatSessionEnvironmentVariablesResponse: {
8753
+ ChatSessionTimelineResponse: {
8601
8754
  /** @description Response payload. */
8602
- data: {
8603
- environment_variables: components["schemas"]["ChatSessionEnvironmentVariable"][];
8604
- };
8605
- };
8606
- ChatSessionEnvironmentVariable: {
8607
- /** @description Environment variable ID. */
8608
- id: number;
8609
- /** @description Owning project ID. */
8610
- project_id: number;
8611
- /** @description Variable name. */
8612
- name: string;
8613
- /** @description Variable description. */
8614
- description: string;
8615
- /** @description Variable value. */
8616
- value: string;
8617
- /** @description Creation timestamp (ISO). */
8618
- created_at: string;
8619
- /** @description Last update timestamp (ISO). */
8620
- updated_at: string;
8621
- /** @description User who last updated the variable. */
8622
- updated_by: string | null;
8623
- /** @description Whether it applies to every environment. */
8624
- all_environments: boolean;
8625
- /** @description Environment IDs the variable applies to. */
8626
- environment_ids: number[];
8627
- };
8628
- ChatSessionTimelineResponse: {
8629
- /** @description Response payload. */
8630
- data: components["schemas"]["ChatSessionTimelineEvent"][];
8755
+ data: components["schemas"]["ChatSessionTimelineEvent"][];
8631
8756
  };
8632
8757
  ChatSessionTimelineEvent: {
8633
8758
  /** @description Timeline event ID. */
@@ -8890,21 +9015,6 @@ export interface components {
8890
9015
  /** @description Error message, or null on success. */
8891
9016
  error: string | null;
8892
9017
  };
8893
- ChatSessionAlarms: {
8894
- /** @description Upcoming self-scheduled wake-ups (set_alarm), soonest first. */
8895
- alarms: {
8896
- /** @description Opaque id of the scheduled alarm. */
8897
- alarm_id: string;
8898
- /** @description The scheduled wake-up time, as an ISO 8601 timestamp. */
8899
- wake_at: string;
8900
- /** @description The note the agent will receive back when the alarm fires. */
8901
- message: string;
8902
- }[];
8903
- };
8904
- ChatSessionAlarmsError: {
8905
- /** @description Human-readable error message. */
8906
- error: string;
8907
- };
8908
9018
  GithubCommitDiffResponse: {
8909
9019
  /** @description Response payload. */
8910
9020
  data: {
@@ -8938,22 +9048,6 @@ export interface components {
8938
9048
  tree?: unknown;
8939
9049
  };
8940
9050
  };
8941
- GithubKnowledgeFilesResponse: {
8942
- /** @description Response payload. */
8943
- data: {
8944
- /** @description Markdown knowledge files under `.empiricalrun`. */
8945
- files: {
8946
- /** @description File name. */
8947
- name: string;
8948
- /** @description File path. */
8949
- path: string;
8950
- /** @description File size in bytes. */
8951
- size: number;
8952
- /** @description ISO timestamp of last commit, if known. */
8953
- lastUpdated: string | null;
8954
- }[];
8955
- };
8956
- };
8957
9051
  GithubPrMergeResponse: {
8958
9052
  data: {
8959
9053
  /** @description Whether the PR was merged. */
@@ -10348,10 +10442,10 @@ export interface components {
10348
10442
  /** @description Parent test run ID. */
10349
10443
  test_run_id: number;
10350
10444
  /**
10351
- * @description Whether the shard runs tests or merges reports.
10445
+ * @description Whether the shard runs tests, merges reports, or runs setup once.
10352
10446
  * @enum {string}
10353
10447
  */
10354
- job_type: "run_test" | "merge_reports";
10448
+ job_type: "run_test" | "merge_reports" | "run_setup";
10355
10449
  /** @description Total number of shards in the run. */
10356
10450
  total_shards: number;
10357
10451
  /** @description This shard's index. */
@@ -10520,6 +10614,11 @@ export interface components {
10520
10614
  StopTaskRequest: {
10521
10615
  /** @description Zero-based shard index, when stopping a sharded run. */
10522
10616
  shard_index?: number;
10617
+ /**
10618
+ * @description Job type of the shard to stop. merge_reports and run_setup share shard_index 0. Defaults to merge_reports for index 0 (legacy callers), run_test otherwise.
10619
+ * @enum {string}
10620
+ */
10621
+ job_type?: "run_test" | "merge_reports" | "run_setup";
10523
10622
  };
10524
10623
  TriggerMergeResponse: {
10525
10624
  /** @description Response payload. */
@@ -10554,7 +10653,7 @@ export interface components {
10554
10653
  * @description Which job the task is running.
10555
10654
  * @enum {string}
10556
10655
  */
10557
- job_type?: "run_test" | "merge_reports";
10656
+ job_type?: "run_test" | "merge_reports" | "run_setup";
10558
10657
  };
10559
10658
  RunManifestResponse: {
10560
10659
  /** @description Response payload. */
@@ -10617,7 +10716,7 @@ export interface components {
10617
10716
  nesting: string[];
10618
10717
  /** @description Playwright project the case ran under. */
10619
10718
  test_project: string | null;
10620
- /** @description Number of retries; null for pre-ledger runs. */
10719
+ /** @description Number of retries; null when not recorded. */
10621
10720
  retries: number | null;
10622
10721
  /** @description Total duration in milliseconds. */
10623
10722
  total_duration: number | null;
@@ -10724,7 +10823,7 @@ export interface components {
10724
10823
  nesting: string[];
10725
10824
  /** @description Playwright project the case ran under. */
10726
10825
  test_project: string | null;
10727
- /** @description Number of retries; null for pre-ledger runs. */
10826
+ /** @description Number of retries; null when not recorded. */
10728
10827
  retries: number | null;
10729
10828
  /** @description Total duration in milliseconds. */
10730
10829
  total_duration: number | null;
@@ -10756,9 +10855,7 @@ export interface components {
10756
10855
  test_run: {
10757
10856
  project: components["schemas"]["UiTestRunProject"];
10758
10857
  testRun: components["schemas"]["EnrichedTestRun"];
10759
- /** @description Per-test summary/diagnosis details. */
10760
- flattenedSummaryDetails: components["schemas"]["UiTestCaseSummaryDetail"][];
10761
- /** @description Test cases referenced by the diagnoses' pw_test_ids, so the run detail page renders without a follow-up lookup. */
10858
+ /** @description Test cases referenced by the ledger first page's pw_test_ids, so the run detail page renders without a follow-up lookup. */
10762
10859
  test_cases: components["schemas"]["TestCase"][];
10763
10860
  /** @description Resolved details for the user that cancelled the run. */
10764
10861
  cancelled_by_user: {
@@ -10776,7 +10873,7 @@ export interface components {
10776
10873
  id: number;
10777
10874
  title: string | null;
10778
10875
  } | null;
10779
- /** @description First page of ledger-sourced cases, ordered failed โ†’ flaky โ†’ others so the default 'failed' filter and the failure-first list render correctly on first paint. Shipped inline so the ledger-source list renders without waiting on a fetch. Empty for pre-ledger runs (the client falls back to the diagnoses above). The client refetches the full set. */
10876
+ /** @description First page of ledger-sourced cases, ordered failed โ†’ flaky โ†’ others so the default 'failed' filter and the failure-first list render correctly on first paint. Shipped inline so the list renders without waiting on a fetch. The client refetches the full set. */
10780
10877
  ledger_cases: components["schemas"]["TestRunCase"][];
10781
10878
  /** @description Total ledger case count for the run, so the client knows how much the inline first page is truncating. */
10782
10879
  ledger_cases_total: number;
@@ -10922,55 +11019,6 @@ export interface components {
10922
11019
  picture: string;
10923
11020
  } | null;
10924
11021
  };
10925
- UiTestCaseSummaryDetail: {
10926
- /** @description Diagnosis row ID. */
10927
- id: number;
10928
- /** @description ISO 8601 creation timestamp. */
10929
- created_at: string;
10930
- /** @description Test case slug. */
10931
- slug: string | null;
10932
- /** @description Playwright test ID. */
10933
- pw_test_id: string | null;
10934
- /** @description Test run ID. */
10935
- test_run_id: string;
10936
- /** @description Test case status. */
10937
- status: string;
10938
- /** @description Playwright project the test ran under. */
10939
- test_project: string | null;
10940
- /** @description Last commit SHA before the run started. */
10941
- last_commit_before_run_started_at: string | null;
10942
- /** @description Source line that triggered the failure. */
10943
- failing_line: string | null;
10944
- /** @description Run-time test path `[file, ...suites, title]`. */
10945
- nesting: string[];
10946
- /** @description Per-retry details for the failed test. */
10947
- retry_details: {
10948
- retries: components["schemas"]["RetryDetail"][];
10949
- } | null;
10950
- /** @description Snoozes that apply to this test in this run. */
10951
- snooze_info: components["schemas"]["UiTestCaseSummaryDetailSnooze"][];
10952
- };
10953
- UiTestCaseSummaryDetailSnooze: {
10954
- /** @description Snooze ID. */
10955
- snooze_id: number;
10956
- /** @description Snooze description. */
10957
- description: string | null;
10958
- /** @description User ID that created the snooze. */
10959
- created_by: string | null;
10960
- /** @description Avatar URL of the snooze creator. */
10961
- created_by_picture: string | null;
10962
- /** @description ISO 8601 timestamp the snooze is active until. */
10963
- snooze_until: string | null;
10964
- /** @description ISO 8601 timestamp the snooze was created. */
10965
- created_at: string | null;
10966
- /**
10967
- * @description Why the snooze applies: `window` (active window overlapped the run) or `originating_run` (created from this run).
10968
- * @enum {string}
10969
- */
10970
- match_reason: "window" | "originating_run";
10971
- /** @description Environment the snooze is scoped to; null applies to all environments. */
10972
- scoped_to_environment_id: number | null;
10973
- };
10974
11022
  TriageReportListResponse: {
10975
11023
  /** @description The page of triage reports. */
10976
11024
  data: {
@@ -11576,6 +11624,8 @@ export interface components {
11576
11624
  state: "open" | "resolved";
11577
11625
  /** @description Current consecutive-fail streak. */
11578
11626
  consecutive_fails: number;
11627
+ /** @description Failing runs recorded on this alert since it opened: the run that opened it plus every run that kept it failing. Unlike `consecutive_fails`, an intervening pass does not reset it. */
11628
+ fails_since_opened: number;
11579
11629
  /** @description Recent evaluated outcomes, newest last. */
11580
11630
  recent_outcomes: components["schemas"]["AlertRunOutcome"][];
11581
11631
  /** @description The run whose failure opened the alert. */
@@ -11670,6 +11720,8 @@ export interface components {
11670
11720
  state: "open" | "resolved";
11671
11721
  /** @description Current consecutive-fail streak. */
11672
11722
  consecutive_fails: number;
11723
+ /** @description Failing runs recorded on this alert since it opened: the run that opened it plus every run that kept it failing. Unlike `consecutive_fails`, an intervening pass does not reset it. */
11724
+ fails_since_opened: number;
11673
11725
  /** @description Recent evaluated outcomes, newest last. */
11674
11726
  recent_outcomes: components["schemas"]["AlertRunOutcome"][];
11675
11727
  /** @description The run whose failure opened the alert. */
@@ -11858,6 +11910,10 @@ export interface components {
11858
11910
  /** @description Ack. */
11859
11911
  message: string;
11860
11912
  };
11913
+ RazorpayWebhookAckResponse: {
11914
+ /** @description Acknowledgement. */
11915
+ message: string;
11916
+ };
11861
11917
  HiveModelsResponse: {
11862
11918
  /** @description Response payload. */
11863
11919
  data: components["schemas"]["HiveModel"][];
@@ -12798,6 +12854,8 @@ export interface operations {
12798
12854
  limit?: number;
12799
12855
  /** @description Restrict logs to this shard's ECS task and trim to its execution window. */
12800
12856
  shardIndex?: number | null;
12857
+ /** @description Job type of the shard at shardIndex. merge_reports and run_setup share index 0; defaults to merge_reports for index 0 (legacy callers), run_test otherwise. */
12858
+ jobType?: "run_test" | "merge_reports" | "run_setup";
12801
12859
  /** @description Lower bound (epoch ms) for log events. */
12802
12860
  startTime?: number | null;
12803
12861
  /** @description Upper bound (epoch ms) for log events. */
@@ -14919,6 +14977,84 @@ export interface operations {
14919
14977
  };
14920
14978
  };
14921
14979
  };
14980
+ slackSendMessage: {
14981
+ parameters: {
14982
+ query?: never;
14983
+ header?: never;
14984
+ path?: never;
14985
+ cookie?: never;
14986
+ };
14987
+ requestBody?: {
14988
+ content: {
14989
+ "application/json": {
14990
+ /** @description Slack channel id to post in. */
14991
+ channel: string;
14992
+ /** @description Timestamp id of a message in the thread to reply in โ€” pass the `ts` you were given for any message in that thread. Omit to post a new top-level message in the channel. */
14993
+ thread_ts?: string;
14994
+ /** @description Message body as Markdown; converted to Slack formatting. */
14995
+ markdown: string;
14996
+ /** @description Stable caller-generated key for safely retrying. Honoured when the thread belongs to a chat session; ignored otherwise. */
14997
+ idempotency_key?: string;
14998
+ };
14999
+ };
15000
+ };
15001
+ responses: {
15002
+ /** @description Message posted. */
15003
+ 200: {
15004
+ headers: {
15005
+ [name: string]: unknown;
15006
+ };
15007
+ content: {
15008
+ "application/json": components["schemas"]["SlackMessageResult"];
15009
+ };
15010
+ };
15011
+ /** @description Invalid request. */
15012
+ 400: {
15013
+ headers: {
15014
+ [name: string]: unknown;
15015
+ };
15016
+ content: {
15017
+ "application/json": components["schemas"]["SlackMessageError"];
15018
+ };
15019
+ };
15020
+ /** @description Sandbox authentication required, or the channel is out of scope. */
15021
+ 403: {
15022
+ headers: {
15023
+ [name: string]: unknown;
15024
+ };
15025
+ content: {
15026
+ "application/json": components["schemas"]["SlackMessageError"];
15027
+ };
15028
+ };
15029
+ /** @description Chat session or Slack connection not found. */
15030
+ 404: {
15031
+ headers: {
15032
+ [name: string]: unknown;
15033
+ };
15034
+ content: {
15035
+ "application/json": components["schemas"]["SlackMessageError"];
15036
+ };
15037
+ };
15038
+ /** @description Idempotency conflict. */
15039
+ 409: {
15040
+ headers: {
15041
+ [name: string]: unknown;
15042
+ };
15043
+ content: {
15044
+ "application/json": components["schemas"]["SlackMessageError"];
15045
+ };
15046
+ };
15047
+ /** @description Slack upstream error. */
15048
+ 502: {
15049
+ headers: {
15050
+ [name: string]: unknown;
15051
+ };
15052
+ content: {
15053
+ "application/json": components["schemas"]["SlackMessageError"];
15054
+ };
15055
+ };
15056
+ };
15057
+ };
14922
15058
  slackProxy: {
14923
15059
  parameters: {
14924
15060
  query?: never;
@@ -14992,6 +15128,88 @@ export interface operations {
14992
15128
  };
14993
15129
  };
14994
15130
  };
15131
+ slackReaction: {
15132
+ parameters: {
15133
+ query?: never;
15134
+ header?: never;
15135
+ path?: never;
15136
+ cookie?: never;
15137
+ };
15138
+ requestBody?: {
15139
+ content: {
15140
+ "application/json": {
15141
+ /** @description Slack channel id the message lives in. */
15142
+ channel: string;
15143
+ /** @description Timestamp id of the message to react to, e.g. `1783545993.688449`. */
15144
+ ts: string;
15145
+ /** @description Emoji name to react with, without colons โ€” e.g. `tada`, `eyes`, `shipit`. Any emoji the workspace has, built-in or custom; a name the workspace does not have is rejected with 400. */
15146
+ reaction: string;
15147
+ /**
15148
+ * @description Whether to add the reaction or take it back off. Removing is how a status reaction is superseded (e.g. drop `eyes` when adding `white_check_mark`).
15149
+ * @default add
15150
+ * @enum {string}
15151
+ */
15152
+ action?: "add" | "remove";
15153
+ };
15154
+ };
15155
+ };
15156
+ responses: {
15157
+ /** @description Reaction applied. */
15158
+ 200: {
15159
+ headers: {
15160
+ [name: string]: unknown;
15161
+ };
15162
+ content: {
15163
+ "application/json": components["schemas"]["SlackReactionResult"];
15164
+ };
15165
+ };
15166
+ /** @description Invalid request, or the workspace has no emoji by that name. */
15167
+ 400: {
15168
+ headers: {
15169
+ [name: string]: unknown;
15170
+ };
15171
+ content: {
15172
+ "application/json": components["schemas"]["SlackReactionError"];
15173
+ };
15174
+ };
15175
+ /** @description Sandbox authentication required, or the channel is out of scope. */
15176
+ 403: {
15177
+ headers: {
15178
+ [name: string]: unknown;
15179
+ };
15180
+ content: {
15181
+ "application/json": components["schemas"]["SlackReactionError"];
15182
+ };
15183
+ };
15184
+ /** @description Chat session or Slack connection not found. */
15185
+ 404: {
15186
+ headers: {
15187
+ [name: string]: unknown;
15188
+ };
15189
+ content: {
15190
+ "application/json": components["schemas"]["SlackReactionError"];
15191
+ };
15192
+ };
15193
+ /** @description The Slack workspace has not granted the reactions:write scope. */
15194
+ 424: {
15195
+ headers: {
15196
+ [name: string]: unknown;
15197
+ };
15198
+ content: {
15199
+ "application/json": components["schemas"]["SlackReactionError"];
15200
+ };
15201
+ };
15202
+ /** @description Slack upstream error. */
15203
+ 502: {
15204
+ headers: {
15205
+ [name: string]: unknown;
15206
+ };
15207
+ content: {
15208
+ "application/json": components["schemas"]["SlackReactionError"];
15209
+ };
15210
+ };
15211
+ };
15212
+ };
14995
15213
  deleteSlackChannel: {
14996
15214
  parameters: {
14997
15215
  query?: never;
@@ -16235,6 +16453,38 @@ export interface operations {
16235
16453
  };
16236
16454
  };
16237
16455
  };
16456
+ getStaticIps: {
16457
+ parameters: {
16458
+ query: {
16459
+ /** @description Region to look up. One of: ap-south-1. */
16460
+ region: string;
16461
+ };
16462
+ header?: never;
16463
+ path?: never;
16464
+ cookie?: never;
16465
+ };
16466
+ requestBody?: never;
16467
+ responses: {
16468
+ /** @description Static IPs for the region. */
16469
+ 200: {
16470
+ headers: {
16471
+ [name: string]: unknown;
16472
+ };
16473
+ content: {
16474
+ "application/json": components["schemas"]["StaticIpsResponse"];
16475
+ };
16476
+ };
16477
+ /** @description Missing or unknown region. */
16478
+ 400: {
16479
+ headers: {
16480
+ [name: string]: unknown;
16481
+ };
16482
+ content: {
16483
+ "application/json": components["schemas"]["ErrorResponse"];
16484
+ };
16485
+ };
16486
+ };
16487
+ };
16238
16488
  getOverlayDismissalSummary: {
16239
16489
  parameters: {
16240
16490
  query?: {
@@ -16433,38 +16683,247 @@ export interface operations {
16433
16683
  query?: never;
16434
16684
  header?: never;
16435
16685
  path: {
16436
- /** @description Chat session ID. */
16437
16686
  id: number;
16438
16687
  };
16439
16688
  cookie?: never;
16440
16689
  };
16441
16690
  requestBody?: never;
16442
16691
  responses: {
16443
- /** @description Upcoming alarms for the session. */
16692
+ /** @description Alarms */
16444
16693
  200: {
16445
16694
  headers: {
16446
16695
  [name: string]: unknown;
16447
16696
  };
16448
16697
  content: {
16449
- "application/json": components["schemas"]["ChatSessionAlarms"];
16450
- };
16451
- };
16452
- /** @description Invalid request. */
16453
- 400: {
16454
- headers: {
16455
- [name: string]: unknown;
16456
- };
16457
- content: {
16458
- "application/json": components["schemas"]["ErrorResponse"];
16698
+ "application/json": {
16699
+ alarms: {
16700
+ id: number;
16701
+ /** @description Compatibility alias for id. */
16702
+ alarm_id: string;
16703
+ /** @description One-time wake time; null for recurring cron alarms. */
16704
+ wake_at: string | null;
16705
+ chat_session_id: number;
16706
+ message: string;
16707
+ timing: {
16708
+ /** @enum {string} */
16709
+ type: "once";
16710
+ /** Format: date-time */
16711
+ run_at: string;
16712
+ } | {
16713
+ /** @enum {string} */
16714
+ type: "cron";
16715
+ cron: string;
16716
+ /** Format: date-time */
16717
+ ends_at?: string;
16718
+ };
16719
+ /** @enum {string} */
16720
+ status: "active" | "completed";
16721
+ last_run_at: string | null;
16722
+ created_at: string;
16723
+ updated_at: string;
16724
+ }[];
16725
+ };
16459
16726
  };
16460
16727
  };
16461
- /** @description Session not found. */
16728
+ /** @description Session not found */
16462
16729
  404: {
16463
16730
  headers: {
16464
16731
  [name: string]: unknown;
16465
16732
  };
16466
16733
  content: {
16467
- "application/json": components["schemas"]["ChatSessionAlarmsError"];
16734
+ "application/json": components["schemas"]["ErrorResponse"];
16735
+ };
16736
+ };
16737
+ };
16738
+ };
16739
+ createChatSessionAlarm: {
16740
+ parameters: {
16741
+ query?: never;
16742
+ header?: never;
16743
+ path: {
16744
+ id: number;
16745
+ };
16746
+ cookie?: never;
16747
+ };
16748
+ requestBody?: {
16749
+ content: {
16750
+ "application/json": {
16751
+ message: string;
16752
+ timing: {
16753
+ /** @enum {string} */
16754
+ type: "once";
16755
+ /** Format: date-time */
16756
+ run_at: string;
16757
+ } | {
16758
+ /** @enum {string} */
16759
+ type: "cron";
16760
+ cron: string;
16761
+ /** Format: date-time */
16762
+ ends_at?: string;
16763
+ };
16764
+ };
16765
+ };
16766
+ };
16767
+ responses: {
16768
+ /** @description Created alarm */
16769
+ 201: {
16770
+ headers: {
16771
+ [name: string]: unknown;
16772
+ };
16773
+ content: {
16774
+ "application/json": {
16775
+ data: {
16776
+ id: number;
16777
+ /** @description Compatibility alias for id. */
16778
+ alarm_id: string;
16779
+ /** @description One-time wake time; null for recurring cron alarms. */
16780
+ wake_at: string | null;
16781
+ chat_session_id: number;
16782
+ message: string;
16783
+ timing: {
16784
+ /** @enum {string} */
16785
+ type: "once";
16786
+ /** Format: date-time */
16787
+ run_at: string;
16788
+ } | {
16789
+ /** @enum {string} */
16790
+ type: "cron";
16791
+ cron: string;
16792
+ /** Format: date-time */
16793
+ ends_at?: string;
16794
+ };
16795
+ /** @enum {string} */
16796
+ status: "active" | "completed";
16797
+ last_run_at: string | null;
16798
+ created_at: string;
16799
+ updated_at: string;
16800
+ };
16801
+ };
16802
+ };
16803
+ };
16804
+ /** @description Invalid alarm */
16805
+ 400: {
16806
+ headers: {
16807
+ [name: string]: unknown;
16808
+ };
16809
+ content: {
16810
+ "application/json": components["schemas"]["ErrorResponse"];
16811
+ };
16812
+ };
16813
+ /** @description Session not found */
16814
+ 404: {
16815
+ headers: {
16816
+ [name: string]: unknown;
16817
+ };
16818
+ content: {
16819
+ "application/json": components["schemas"]["ErrorResponse"];
16820
+ };
16821
+ };
16822
+ };
16823
+ };
16824
+ deleteChatSessionAlarm: {
16825
+ parameters: {
16826
+ query?: never;
16827
+ header?: never;
16828
+ path: {
16829
+ id: number;
16830
+ alarm_id: number;
16831
+ };
16832
+ cookie?: never;
16833
+ };
16834
+ requestBody?: never;
16835
+ responses: {
16836
+ /** @description Deleted */
16837
+ 204: {
16838
+ headers: {
16839
+ [name: string]: unknown;
16840
+ };
16841
+ content?: never;
16842
+ };
16843
+ /** @description Alarm not found */
16844
+ 404: {
16845
+ headers: {
16846
+ [name: string]: unknown;
16847
+ };
16848
+ content: {
16849
+ "application/json": components["schemas"]["ErrorResponse"];
16850
+ };
16851
+ };
16852
+ };
16853
+ };
16854
+ updateChatSessionAlarm: {
16855
+ parameters: {
16856
+ query?: never;
16857
+ header?: never;
16858
+ path: {
16859
+ id: number;
16860
+ alarm_id: number;
16861
+ };
16862
+ cookie?: never;
16863
+ };
16864
+ requestBody?: {
16865
+ content: {
16866
+ "application/json": {
16867
+ message?: string;
16868
+ timing?: {
16869
+ /** @enum {string} */
16870
+ type: "once";
16871
+ /** Format: date-time */
16872
+ run_at: string;
16873
+ } | {
16874
+ /** @enum {string} */
16875
+ type: "cron";
16876
+ cron: string;
16877
+ /** Format: date-time */
16878
+ ends_at?: string;
16879
+ };
16880
+ };
16881
+ };
16882
+ };
16883
+ responses: {
16884
+ /** @description Updated alarm */
16885
+ 200: {
16886
+ headers: {
16887
+ [name: string]: unknown;
16888
+ };
16889
+ content: {
16890
+ "application/json": {
16891
+ data: {
16892
+ id: number;
16893
+ /** @description Compatibility alias for id. */
16894
+ alarm_id: string;
16895
+ /** @description One-time wake time; null for recurring cron alarms. */
16896
+ wake_at: string | null;
16897
+ chat_session_id: number;
16898
+ message: string;
16899
+ timing: {
16900
+ /** @enum {string} */
16901
+ type: "once";
16902
+ /** Format: date-time */
16903
+ run_at: string;
16904
+ } | {
16905
+ /** @enum {string} */
16906
+ type: "cron";
16907
+ cron: string;
16908
+ /** Format: date-time */
16909
+ ends_at?: string;
16910
+ };
16911
+ /** @enum {string} */
16912
+ status: "active" | "completed";
16913
+ last_run_at: string | null;
16914
+ created_at: string;
16915
+ updated_at: string;
16916
+ };
16917
+ };
16918
+ };
16919
+ };
16920
+ /** @description Alarm not found */
16921
+ 404: {
16922
+ headers: {
16923
+ [name: string]: unknown;
16924
+ };
16925
+ content: {
16926
+ "application/json": components["schemas"]["ErrorResponse"];
16468
16927
  };
16469
16928
  };
16470
16929
  };
@@ -16694,7 +17153,7 @@ export interface operations {
16694
17153
  "application/json": components["schemas"]["ChatSessionThreadMessageResponse"];
16695
17154
  };
16696
17155
  };
16697
- /** @description Thread is not agent-controlled, or the idempotency key is missing. */
17156
+ /** @description Thread does not accept agent messages, Slack sync is disabled for it, or the idempotency key is missing. */
16698
17157
  400: {
16699
17158
  headers: {
16700
17159
  [name: string]: unknown;
@@ -17464,156 +17923,29 @@ export interface operations {
17464
17923
  };
17465
17924
  };
17466
17925
  };
17467
- listAgentWorkflows: {
17468
- parameters: {
17469
- query?: never;
17470
- header?: never;
17471
- path?: never;
17472
- cookie?: never;
17473
- };
17474
- requestBody?: never;
17475
- responses: {
17476
- /** @description The project's agent workflows. */
17477
- 200: {
17478
- headers: {
17479
- [name: string]: unknown;
17480
- };
17481
- content: {
17482
- "application/json": components["schemas"]["AgentWorkflowListResponse"];
17483
- };
17484
- };
17485
- /** @description Invalid or missing project scope. */
17486
- 400: {
17487
- headers: {
17488
- [name: string]: unknown;
17489
- };
17490
- content: {
17491
- "application/json": components["schemas"]["ErrorResponse"];
17492
- };
17493
- };
17494
- /** @description Project not found. */
17495
- 404: {
17496
- headers: {
17497
- [name: string]: unknown;
17498
- };
17499
- content: {
17500
- "application/json": components["schemas"]["ErrorResponse"];
17501
- };
17502
- };
17503
- };
17504
- };
17505
- createAgentWorkflow: {
17926
+ createAlarm: {
17506
17927
  parameters: {
17507
17928
  query?: never;
17508
17929
  header?: never;
17509
17930
  path?: never;
17510
17931
  cookie?: never;
17511
17932
  };
17512
- requestBody: {
17513
- content: {
17514
- "application/json": {
17515
- /** @description Prompt sent to the chat session when triggered. */
17516
- prompt: string;
17517
- /** @description Cron expression controlling when the workflow runs. */
17518
- cron_schedule: string;
17519
- };
17520
- };
17521
- };
17522
- responses: {
17523
- /** @description The created agent workflow. */
17524
- 200: {
17525
- headers: {
17526
- [name: string]: unknown;
17527
- };
17528
- content: {
17529
- "application/json": components["schemas"]["AgentWorkflowResponse"];
17530
- };
17531
- };
17532
- /** @description Invalid request or project scope. */
17533
- 400: {
17534
- headers: {
17535
- [name: string]: unknown;
17536
- };
17537
- content: {
17538
- "application/json": components["schemas"]["ErrorResponse"];
17539
- };
17540
- };
17541
- /** @description Project not found. */
17542
- 404: {
17543
- headers: {
17544
- [name: string]: unknown;
17545
- };
17546
- content: {
17547
- "application/json": components["schemas"]["ErrorResponse"];
17548
- };
17549
- };
17550
- };
17551
- };
17552
- deleteAgentWorkflow: {
17553
- parameters: {
17554
- query?: never;
17555
- header?: never;
17556
- path: {
17557
- /** @description Agent workflow ID. */
17558
- id: number;
17559
- };
17560
- cookie?: never;
17561
- };
17562
- requestBody?: never;
17563
- responses: {
17564
- /** @description The workflow was deleted. */
17565
- 200: {
17566
- headers: {
17567
- [name: string]: unknown;
17568
- };
17569
- content: {
17570
- "application/json": components["schemas"]["AgentWorkflowDeleteResponse"];
17571
- };
17572
- };
17573
- /** @description Workflow not found. */
17574
- 404: {
17575
- headers: {
17576
- [name: string]: unknown;
17577
- };
17578
- content: {
17579
- "application/json": components["schemas"]["ErrorResponse"];
17580
- };
17581
- };
17582
- };
17583
- };
17584
- updateAgentWorkflow: {
17585
- parameters: {
17586
- query?: never;
17587
- header?: never;
17588
- path: {
17589
- /** @description Agent workflow ID. */
17590
- id: number;
17591
- };
17592
- cookie?: never;
17593
- };
17594
17933
  requestBody?: {
17595
17934
  content: {
17596
- "application/json": {
17597
- /** @description New prompt for the workflow. */
17598
- prompt?: string;
17599
- /** @description New cron expression for the workflow. */
17600
- cron_schedule?: string;
17601
- /** @description Whether the workflow is active and will be scheduled. */
17602
- is_active?: boolean;
17603
- };
17935
+ "application/json": components["schemas"]["CreateAlarmRequest"];
17604
17936
  };
17605
17937
  };
17606
17938
  responses: {
17607
- /** @description The updated agent workflow. */
17939
+ /** @description The scheduled alarm. */
17608
17940
  200: {
17609
17941
  headers: {
17610
17942
  [name: string]: unknown;
17611
17943
  };
17612
17944
  content: {
17613
- "application/json": components["schemas"]["AgentWorkflowUpdateResponse"];
17945
+ "application/json": components["schemas"]["AlarmResponse"];
17614
17946
  };
17615
17947
  };
17616
- /** @description Invalid request. */
17948
+ /** @description Invalid duration or out of the allowed range. */
17617
17949
  400: {
17618
17950
  headers: {
17619
17951
  [name: string]: unknown;
@@ -17622,8 +17954,8 @@ export interface operations {
17622
17954
  "application/json": components["schemas"]["ErrorResponse"];
17623
17955
  };
17624
17956
  };
17625
- /** @description Workflow not found. */
17626
- 404: {
17957
+ /** @description Caller is not acting on behalf of a chat session. */
17958
+ 403: {
17627
17959
  headers: {
17628
17960
  [name: string]: unknown;
17629
17961
  };
@@ -17631,30 +17963,7 @@ export interface operations {
17631
17963
  "application/json": components["schemas"]["ErrorResponse"];
17632
17964
  };
17633
17965
  };
17634
- };
17635
- };
17636
- triggerAgentWorkflow: {
17637
- parameters: {
17638
- query?: never;
17639
- header?: never;
17640
- path: {
17641
- /** @description Agent workflow ID. */
17642
- id: number;
17643
- };
17644
- cookie?: never;
17645
- };
17646
- requestBody?: never;
17647
- responses: {
17648
- /** @description The chat session opened by the trigger. */
17649
- 200: {
17650
- headers: {
17651
- [name: string]: unknown;
17652
- };
17653
- content: {
17654
- "application/json": components["schemas"]["AgentWorkflowTriggerResponse"];
17655
- };
17656
- };
17657
- /** @description Workflow not found or inactive. */
17966
+ /** @description Chat session not found. */
17658
17967
  404: {
17659
17968
  headers: {
17660
17969
  [name: string]: unknown;
@@ -17663,41 +17972,8 @@ export interface operations {
17663
17972
  "application/json": components["schemas"]["ErrorResponse"];
17664
17973
  };
17665
17974
  };
17666
- };
17667
- };
17668
- createAlarm: {
17669
- parameters: {
17670
- query?: never;
17671
- header?: never;
17672
- path?: never;
17673
- cookie?: never;
17674
- };
17675
- requestBody?: {
17676
- content: {
17677
- "application/json": components["schemas"]["CreateAlarmRequest"];
17678
- };
17679
- };
17680
- responses: {
17681
- /** @description The scheduled alarm. */
17682
- 200: {
17683
- headers: {
17684
- [name: string]: unknown;
17685
- };
17686
- content: {
17687
- "application/json": components["schemas"]["AlarmResponse"];
17688
- };
17689
- };
17690
- /** @description Invalid duration or out of the allowed range. */
17691
- 400: {
17692
- headers: {
17693
- [name: string]: unknown;
17694
- };
17695
- content: {
17696
- "application/json": components["schemas"]["ErrorResponse"];
17697
- };
17698
- };
17699
- /** @description Caller is not acting on behalf of a chat session. */
17700
- 403: {
17975
+ /** @description Chat session is closed. */
17976
+ 409: {
17701
17977
  headers: {
17702
17978
  [name: string]: unknown;
17703
17979
  };
@@ -18079,7 +18355,6 @@ export interface operations {
18079
18355
  source_identifier?: string | null;
18080
18356
  model?: string | null;
18081
18357
  base_branch?: string | null;
18082
- environment_id?: number | null;
18083
18358
  send_slack_notification?: boolean | null;
18084
18359
  created_by?: string | null;
18085
18360
  };
@@ -18154,7 +18429,6 @@ export interface operations {
18154
18429
  title?: string;
18155
18430
  source?: string;
18156
18431
  source_identifier?: string;
18157
- environment_id?: number | null;
18158
18432
  model?: string;
18159
18433
  impacted_tests?: unknown;
18160
18434
  };
@@ -18461,38 +18735,6 @@ export interface operations {
18461
18735
  };
18462
18736
  };
18463
18737
  };
18464
- getChatSessionEnvironmentVariables: {
18465
- parameters: {
18466
- query?: never;
18467
- header?: never;
18468
- path: {
18469
- /** @description Chat session ID. */
18470
- id: number;
18471
- };
18472
- cookie?: never;
18473
- };
18474
- requestBody?: never;
18475
- responses: {
18476
- /** @description Resolved environment variables. */
18477
- 200: {
18478
- headers: {
18479
- [name: string]: unknown;
18480
- };
18481
- content: {
18482
- "application/json": components["schemas"]["ChatSessionEnvironmentVariablesResponse"];
18483
- };
18484
- };
18485
- /** @description Chat session not found. */
18486
- 404: {
18487
- headers: {
18488
- [name: string]: unknown;
18489
- };
18490
- content: {
18491
- "application/json": components["schemas"]["ErrorResponse"];
18492
- };
18493
- };
18494
- };
18495
- };
18496
18738
  forwardChatSessionMessage: {
18497
18739
  parameters: {
18498
18740
  query?: never;
@@ -19114,7 +19356,7 @@ export interface operations {
19114
19356
  requestBody?: {
19115
19357
  content: {
19116
19358
  "application/json": {
19117
- /** @description Whether to enable two-way Slack sync. */
19359
+ /** @description Whether this user's Slack DM mirrors the session's assistant messages. */
19118
19360
  sync_enabled: boolean;
19119
19361
  };
19120
19362
  };
@@ -20111,49 +20353,6 @@ export interface operations {
20111
20353
  };
20112
20354
  };
20113
20355
  };
20114
- listKnowledgeFiles: {
20115
- parameters: {
20116
- query: {
20117
- /** @description Repository name. */
20118
- repo: string;
20119
- /** @description Branch or ref; defaults to the project branch. */
20120
- ref?: string;
20121
- };
20122
- header?: never;
20123
- path?: never;
20124
- cookie?: never;
20125
- };
20126
- requestBody?: never;
20127
- responses: {
20128
- /** @description The knowledge files. */
20129
- 200: {
20130
- headers: {
20131
- [name: string]: unknown;
20132
- };
20133
- content: {
20134
- "application/json": components["schemas"]["GithubKnowledgeFilesResponse"];
20135
- };
20136
- };
20137
- /** @description Caller cannot access the project. */
20138
- 403: {
20139
- headers: {
20140
- [name: string]: unknown;
20141
- };
20142
- content: {
20143
- "application/json": components["schemas"]["ErrorResponse"];
20144
- };
20145
- };
20146
- /** @description No project found for the repo. */
20147
- 404: {
20148
- headers: {
20149
- [name: string]: unknown;
20150
- };
20151
- content: {
20152
- "application/json": components["schemas"]["ErrorResponse"];
20153
- };
20154
- };
20155
- };
20156
- };
20157
20356
  listMainInstallations: {
20158
20357
  parameters: {
20159
20358
  query: {
@@ -21076,17 +21275,59 @@ export interface operations {
21076
21275
  /** @description Service token ID. */
21077
21276
  id: string;
21078
21277
  };
21079
- cookie?: never;
21278
+ cookie?: never;
21279
+ };
21280
+ requestBody?: never;
21281
+ responses: {
21282
+ /** @description The revoked service token. */
21283
+ 200: {
21284
+ headers: {
21285
+ [name: string]: unknown;
21286
+ };
21287
+ content: {
21288
+ "application/json": components["schemas"]["ServiceTokenResponse"];
21289
+ };
21290
+ };
21291
+ /** @description Invalid request. */
21292
+ 400: {
21293
+ headers: {
21294
+ [name: string]: unknown;
21295
+ };
21296
+ content: {
21297
+ "application/json": components["schemas"]["ErrorResponse"];
21298
+ };
21299
+ };
21300
+ /** @description Service token not found. */
21301
+ 404: {
21302
+ headers: {
21303
+ [name: string]: unknown;
21304
+ };
21305
+ content: {
21306
+ "application/json": components["schemas"]["ErrorResponse"];
21307
+ };
21308
+ };
21309
+ };
21310
+ };
21311
+ handleSpotInterruption: {
21312
+ parameters: {
21313
+ query?: never;
21314
+ header?: never;
21315
+ path?: never;
21316
+ cookie?: never;
21317
+ };
21318
+ requestBody?: {
21319
+ content: {
21320
+ "application/json": components["schemas"]["SpotInterruptionRequest"];
21321
+ };
21080
21322
  };
21081
- requestBody?: never;
21082
21323
  responses: {
21083
- /** @description The revoked service token. */
21324
+ /** @description The event was handled. */
21084
21325
  200: {
21085
21326
  headers: {
21086
21327
  [name: string]: unknown;
21087
21328
  };
21088
21329
  content: {
21089
- "application/json": components["schemas"]["ServiceTokenResponse"];
21330
+ "application/json": components["schemas"]["SpotInterruptionResponse"];
21090
21331
  };
21091
21332
  };
21092
21333
  /** @description Invalid request. */
@@ -21098,15 +21339,6 @@ export interface operations {
21098
21339
  "application/json": components["schemas"]["ErrorResponse"];
21099
21340
  };
21100
21341
  };
21101
- /** @description Service token not found. */
21102
- 404: {
21103
- headers: {
21104
- [name: string]: unknown;
21105
- };
21106
- content: {
21107
- "application/json": components["schemas"]["ErrorResponse"];
21108
- };
21109
- };
21110
21342
  };
21111
21343
  };
21112
21344
  enqueueTestCasesSync: {
@@ -23763,6 +23995,157 @@ export interface operations {
23763
23995
  };
23764
23996
  };
23765
23997
  };
23998
+ listProjectAddons: {
23999
+ parameters: {
24000
+ query?: never;
24001
+ header?: never;
24002
+ path?: never;
24003
+ cookie?: never;
24004
+ };
24005
+ requestBody?: never;
24006
+ responses: {
24007
+ /** @description Add-on state and history. */
24008
+ 200: {
24009
+ headers: {
24010
+ [name: string]: unknown;
24011
+ };
24012
+ content: {
24013
+ "application/json": components["schemas"]["ListProjectAddonsResponse"];
24014
+ };
24015
+ };
24016
+ /** @description Missing or invalid project scope. */
24017
+ 400: {
24018
+ headers: {
24019
+ [name: string]: unknown;
24020
+ };
24021
+ content: {
24022
+ "application/json": components["schemas"]["ErrorResponse"];
24023
+ };
24024
+ };
24025
+ /** @description Project not found or not accessible. */
24026
+ 404: {
24027
+ headers: {
24028
+ [name: string]: unknown;
24029
+ };
24030
+ content: {
24031
+ "application/json": components["schemas"]["ErrorResponse"];
24032
+ };
24033
+ };
24034
+ };
24035
+ };
24036
+ disableProjectAddon: {
24037
+ parameters: {
24038
+ query?: never;
24039
+ header?: never;
24040
+ path: {
24041
+ /** @description Add-on identifier. One of: static_ip_proxy, repo_ownership. */
24042
+ addon: string;
24043
+ };
24044
+ cookie?: never;
24045
+ };
24046
+ requestBody?: never;
24047
+ responses: {
24048
+ /** @description The closed period. */
24049
+ 200: {
24050
+ headers: {
24051
+ [name: string]: unknown;
24052
+ };
24053
+ content: {
24054
+ "application/json": components["schemas"]["ProjectAddonResponse"];
24055
+ };
24056
+ };
24057
+ /** @description Missing or invalid project scope. */
24058
+ 400: {
24059
+ headers: {
24060
+ [name: string]: unknown;
24061
+ };
24062
+ content: {
24063
+ "application/json": components["schemas"]["ErrorResponse"];
24064
+ };
24065
+ };
24066
+ /** @description Project not found or not accessible. */
24067
+ 404: {
24068
+ headers: {
24069
+ [name: string]: unknown;
24070
+ };
24071
+ content: {
24072
+ "application/json": components["schemas"]["ErrorResponse"];
24073
+ };
24074
+ };
24075
+ /** @description Add-on is not enabled, or is still in use. */
24076
+ 409: {
24077
+ headers: {
24078
+ [name: string]: unknown;
24079
+ };
24080
+ content: {
24081
+ "application/json": components["schemas"]["ErrorResponse"];
24082
+ };
24083
+ };
24084
+ };
24085
+ };
24086
+ enableProjectAddon: {
24087
+ parameters: {
24088
+ query?: never;
24089
+ header?: never;
24090
+ path: {
24091
+ /** @description Add-on identifier. One of: static_ip_proxy, repo_ownership. */
24092
+ addon: string;
24093
+ };
24094
+ cookie?: never;
24095
+ };
24096
+ requestBody?: {
24097
+ content: {
24098
+ "application/json": components["schemas"]["EnableProjectAddonRequest"];
24099
+ };
24100
+ };
24101
+ responses: {
24102
+ /** @description The opened period. */
24103
+ 200: {
24104
+ headers: {
24105
+ [name: string]: unknown;
24106
+ };
24107
+ content: {
24108
+ "application/json": components["schemas"]["ProjectAddonResponse"];
24109
+ };
24110
+ };
24111
+ /** @description Missing or invalid project scope, or the add-on does not apply to this project. */
24112
+ 400: {
24113
+ headers: {
24114
+ [name: string]: unknown;
24115
+ };
24116
+ content: {
24117
+ "application/json": components["schemas"]["ErrorResponse"];
24118
+ };
24119
+ };
24120
+ /** @description effective_from / order_form_line_id require super admin. */
24121
+ 403: {
24122
+ headers: {
24123
+ [name: string]: unknown;
24124
+ };
24125
+ content: {
24126
+ "application/json": components["schemas"]["ErrorResponse"];
24127
+ };
24128
+ };
24129
+ /** @description Project not found or not accessible. */
24130
+ 404: {
24131
+ headers: {
24132
+ [name: string]: unknown;
24133
+ };
24134
+ content: {
24135
+ "application/json": components["schemas"]["ErrorResponse"];
24136
+ };
24137
+ };
24138
+ /** @description Add-on is already enabled. */
24139
+ 409: {
24140
+ headers: {
24141
+ [name: string]: unknown;
24142
+ };
24143
+ content: {
24144
+ "application/json": components["schemas"]["ErrorResponse"];
24145
+ };
24146
+ };
24147
+ };
24148
+ };
23766
24149
  listProjects: {
23767
24150
  parameters: {
23768
24151
  query?: {
@@ -24099,6 +24482,38 @@ export interface operations {
24099
24482
  };
24100
24483
  };
24101
24484
  };
24485
+ getOrCreateProjectManagerSession: {
24486
+ parameters: {
24487
+ query?: never;
24488
+ header?: never;
24489
+ path: {
24490
+ /** @description Project ID. */
24491
+ id: number;
24492
+ };
24493
+ cookie?: never;
24494
+ };
24495
+ requestBody?: never;
24496
+ responses: {
24497
+ /** @description The project's manager session. */
24498
+ 200: {
24499
+ headers: {
24500
+ [name: string]: unknown;
24501
+ };
24502
+ content: {
24503
+ "application/json": components["schemas"]["ProjectManagerSessionResponse"];
24504
+ };
24505
+ };
24506
+ /** @description Project not found or inaccessible. */
24507
+ 404: {
24508
+ headers: {
24509
+ [name: string]: unknown;
24510
+ };
24511
+ content: {
24512
+ "application/json": components["schemas"]["ErrorResponse"];
24513
+ };
24514
+ };
24515
+ };
24516
+ };
24102
24517
  listProjectMergeRequests: {
24103
24518
  parameters: {
24104
24519
  query?: {
@@ -24352,6 +24767,15 @@ export interface operations {
24352
24767
  "application/json": components["schemas"]["StartRepoTransferBadRequest"];
24353
24768
  };
24354
24769
  };
24770
+ /** @description The repo ownership add-on is not enabled for this project. */
24771
+ 403: {
24772
+ headers: {
24773
+ [name: string]: unknown;
24774
+ };
24775
+ content: {
24776
+ "application/json": components["schemas"]["RepoTransferCodedError"];
24777
+ };
24778
+ };
24355
24779
  /** @description Project not found. */
24356
24780
  404: {
24357
24781
  headers: {
@@ -24830,6 +25254,101 @@ export interface operations {
24830
25254
  };
24831
25255
  };
24832
25256
  };
25257
+ getProjectStaticIpProxyToken: {
25258
+ parameters: {
25259
+ query?: never;
25260
+ header?: never;
25261
+ path?: never;
25262
+ cookie?: never;
25263
+ };
25264
+ requestBody?: never;
25265
+ responses: {
25266
+ /** @description Static-IP proxy credentials. */
25267
+ 200: {
25268
+ headers: {
25269
+ [name: string]: unknown;
25270
+ };
25271
+ content: {
25272
+ "application/json": components["schemas"]["ProjectStaticIpProxyTokenResponse"];
25273
+ };
25274
+ };
25275
+ /** @description Project does not have the static IP proxy add-on. */
25276
+ 403: {
25277
+ headers: {
25278
+ [name: string]: unknown;
25279
+ };
25280
+ content: {
25281
+ "application/json": components["schemas"]["ErrorResponse"];
25282
+ };
25283
+ };
25284
+ /** @description Token minting is not configured on this environment. */
25285
+ 503: {
25286
+ headers: {
25287
+ [name: string]: unknown;
25288
+ };
25289
+ content: {
25290
+ "application/json": components["schemas"]["ErrorResponse"];
25291
+ };
25292
+ };
25293
+ };
25294
+ };
25295
+ razorpayPaymentsWebhook: {
25296
+ parameters: {
25297
+ query?: never;
25298
+ header?: never;
25299
+ path?: never;
25300
+ cookie?: never;
25301
+ };
25302
+ requestBody?: {
25303
+ content: {
25304
+ "application/json": {
25305
+ /** @description Razorpay event type. */
25306
+ event: string;
25307
+ /** @description Razorpay event payload. */
25308
+ payload: {
25309
+ payment?: {
25310
+ entity: {
25311
+ id: string;
25312
+ order_id: string;
25313
+ amount: number;
25314
+ currency: string;
25315
+ status: string;
25316
+ };
25317
+ };
25318
+ };
25319
+ };
25320
+ };
25321
+ };
25322
+ responses: {
25323
+ /** @description Event acknowledged. */
25324
+ 200: {
25325
+ headers: {
25326
+ [name: string]: unknown;
25327
+ };
25328
+ content: {
25329
+ "application/json": components["schemas"]["RazorpayWebhookAckResponse"];
25330
+ };
25331
+ };
25332
+ /** @description Missing or invalid webhook signature. */
25333
+ 401: {
25334
+ headers: {
25335
+ [name: string]: unknown;
25336
+ };
25337
+ content: {
25338
+ "application/json": components["schemas"]["ErrorResponse"];
25339
+ };
25340
+ };
25341
+ /** @description Razorpay API credentials are not configured. */
25342
+ 500: {
25343
+ headers: {
25344
+ [name: string]: unknown;
25345
+ };
25346
+ content: {
25347
+ "application/json": components["schemas"]["ErrorResponse"];
25348
+ };
25349
+ };
25350
+ };
25351
+ };
24833
25352
  getRealtimeToken: {
24834
25353
  parameters: {
24835
25354
  query?: never;
@@ -25604,7 +26123,7 @@ export interface operations {
25604
26123
  * @description Job type for the shard. Defaults to `run_test`.
25605
26124
  * @enum {string}
25606
26125
  */
25607
- jobType?: "run_test" | "merge_reports";
26126
+ jobType?: "run_test" | "merge_reports" | "run_setup";
25608
26127
  };
25609
26128
  };
25610
26129
  };