@empiricalrun/playwright-utils 0.62.1 → 0.63.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/api-worker-client.d.ts +0 -13
  3. package/dist/api-worker-client.d.ts.map +1 -1
  4. package/dist/api-worker-client.js +0 -15
  5. package/dist/auth/google.d.ts.map +1 -1
  6. package/dist/auth/google.js +0 -1
  7. package/dist/auth/index.d.ts.map +1 -1
  8. package/dist/auth/index.js +0 -9
  9. package/dist/config/index.d.ts.map +1 -1
  10. package/dist/config/index.js +0 -8
  11. package/dist/generated/api-worker-openapi.d.ts +2083 -1044
  12. package/dist/generated/api-worker-openapi.d.ts.map +1 -1
  13. package/dist/overlay-tests/cache.spec.js +0 -10
  14. package/dist/overlay-tests/click.spec.js +0 -18
  15. package/dist/playwright-extensions.d.ts.map +1 -1
  16. package/dist/playwright-extensions.js +0 -1
  17. package/dist/reporter/attachment-cleanup-test-reporter.d.ts +0 -6
  18. package/dist/reporter/attachment-cleanup-test-reporter.d.ts.map +1 -1
  19. package/dist/reporter/attachment-cleanup-test-reporter.js +0 -6
  20. package/dist/reporter/attachment-cleanup.d.ts +0 -33
  21. package/dist/reporter/attachment-cleanup.d.ts.map +1 -1
  22. package/dist/reporter/attachment-cleanup.js +2 -51
  23. package/dist/reporter/empirical-reporter.d.ts.map +1 -1
  24. package/dist/reporter/empirical-reporter.js +0 -9
  25. package/dist/reporter/harness.d.ts +0 -62
  26. package/dist/reporter/harness.d.ts.map +1 -1
  27. package/dist/reporter/harness.js +1 -53
  28. package/dist/reporter/ibr-utils.d.ts +0 -5
  29. package/dist/reporter/ibr-utils.d.ts.map +1 -1
  30. package/dist/reporter/ibr-utils.js +0 -5
  31. package/dist/reporter/incremental-blob-reporter.d.ts +0 -17
  32. package/dist/reporter/incremental-blob-reporter.d.ts.map +1 -1
  33. package/dist/reporter/incremental-blob-reporter.js +5 -35
  34. package/dist/reporter/lifecycle-events.d.ts.map +1 -1
  35. package/dist/reporter/lifecycle-events.js +0 -9
  36. package/dist/reporter/parity-utils.d.ts +0 -30
  37. package/dist/reporter/parity-utils.d.ts.map +1 -1
  38. package/dist/reporter/parity-utils.js +4 -28
  39. package/dist/reporter/reporter-state.d.ts +0 -12
  40. package/dist/reporter/reporter-state.d.ts.map +1 -1
  41. package/dist/reporter/reporter-state.js +0 -12
  42. package/dist/reporter/test-case-sync.d.ts.map +1 -1
  43. package/dist/reporter/test-case-sync.js +0 -12
  44. package/dist/reporter/uploader.d.ts.map +1 -1
  45. package/dist/reporter/uploader.js +0 -6
  46. package/dist/reporter/util.d.ts +0 -33
  47. package/dist/reporter/util.d.ts.map +1 -1
  48. package/dist/reporter/util.js +0 -37
  49. package/dist/telemetry.d.ts.map +1 -1
  50. package/dist/telemetry.js +1 -10
  51. package/dist/test/coverage.d.ts.map +1 -1
  52. package/dist/test/coverage.js +1 -3
  53. package/dist/test/expect/visual.d.ts.map +1 -1
  54. package/dist/test/expect/visual.js +1 -9
  55. package/dist/test/index.d.ts.map +1 -1
  56. package/dist/test/index.js +4 -21
  57. package/dist/test/scripts/agent-capabilities.js +2 -2
  58. package/dist/test/scripts/index.d.ts +2 -2
  59. package/dist/test/scripts/index.d.ts.map +1 -1
  60. package/dist/test/scripts/index.js +3 -16
  61. package/dist/test/scripts/pw-locator-patch/actions/click.d.ts.map +1 -0
  62. package/dist/test/scripts/pw-locator-patch/{highlight → actions}/click.js +0 -6
  63. package/dist/test/scripts/pw-locator-patch/actions/hover.d.ts.map +1 -0
  64. package/dist/test/scripts/pw-locator-patch/{highlight → actions}/hover.js +0 -3
  65. package/dist/test/scripts/pw-locator-patch/dismiss-overlays/cache.d.ts.map +1 -1
  66. package/dist/test/scripts/pw-locator-patch/dismiss-overlays/cache.js +0 -7
  67. package/dist/test/scripts/pw-locator-patch/dismiss-overlays/index.d.ts.map +1 -1
  68. package/dist/test/scripts/pw-locator-patch/dismiss-overlays/index.js +1 -9
  69. package/dist/test/scripts/pw-locator-patch/dismiss-overlays/prompt.d.ts.map +1 -1
  70. package/dist/test/scripts/pw-locator-patch/dismiss-overlays/prompt.js +0 -1
  71. package/dist/test/scripts/pw-locator-patch/dismiss-overlays/utils.d.ts.map +1 -1
  72. package/dist/test/scripts/pw-locator-patch/dismiss-overlays/utils.js +2 -5
  73. package/dist/test/scripts/pw-locator-patch/utils/index.d.ts +0 -1
  74. package/dist/test/scripts/pw-locator-patch/utils/index.d.ts.map +1 -1
  75. package/dist/test/scripts/pw-locator-patch/utils/index.js +0 -18
  76. package/dist/test/types.d.ts +2 -5
  77. package/dist/test/types.d.ts.map +1 -1
  78. package/dist/test/video-labels.d.ts.map +1 -1
  79. package/dist/test/video-labels.js +0 -1
  80. package/dist/webhook.d.ts.map +1 -1
  81. package/dist/webhook.js +0 -3
  82. package/docs/fixtures.md +4 -5
  83. package/package.json +6 -6
  84. package/playwright.config.ts +0 -4
  85. package/tsconfig.tsbuildinfo +1 -1
  86. package/upstream-oracle/ibr-adapter.js +0 -23
  87. package/upstream-oracle/run.mjs +1 -69
  88. package/dist/test/scripts/locator-highlights.d.ts +0 -4
  89. package/dist/test/scripts/locator-highlights.d.ts.map +0 -1
  90. package/dist/test/scripts/locator-highlights.js +0 -28
  91. package/dist/test/scripts/pw-locator-patch/highlight/click.d.ts.map +0 -1
  92. package/dist/test/scripts/pw-locator-patch/highlight/expect.d.ts +0 -5
  93. package/dist/test/scripts/pw-locator-patch/highlight/expect.d.ts.map +0 -1
  94. package/dist/test/scripts/pw-locator-patch/highlight/expect.js +0 -23
  95. package/dist/test/scripts/pw-locator-patch/highlight/hover.d.ts.map +0 -1
  96. package/dist/test/scripts/pw-locator-patch/highlight/inner-text.d.ts +0 -6
  97. package/dist/test/scripts/pw-locator-patch/highlight/inner-text.d.ts.map +0 -1
  98. package/dist/test/scripts/pw-locator-patch/highlight/inner-text.js +0 -30
  99. package/dist/test/scripts/pw-locator-patch/highlight/input-value.d.ts +0 -6
  100. package/dist/test/scripts/pw-locator-patch/highlight/input-value.d.ts.map +0 -1
  101. package/dist/test/scripts/pw-locator-patch/highlight/input-value.js +0 -30
  102. package/dist/test/scripts/pw-locator-patch/highlight/is-checked.d.ts +0 -6
  103. package/dist/test/scripts/pw-locator-patch/highlight/is-checked.d.ts.map +0 -1
  104. package/dist/test/scripts/pw-locator-patch/highlight/is-checked.js +0 -30
  105. package/dist/test/scripts/pw-locator-patch/highlight/is-disabled.d.ts +0 -6
  106. package/dist/test/scripts/pw-locator-patch/highlight/is-disabled.d.ts.map +0 -1
  107. package/dist/test/scripts/pw-locator-patch/highlight/is-disabled.js +0 -30
  108. package/dist/test/scripts/pw-locator-patch/highlight/is-editable.d.ts +0 -6
  109. package/dist/test/scripts/pw-locator-patch/highlight/is-editable.d.ts.map +0 -1
  110. package/dist/test/scripts/pw-locator-patch/highlight/is-editable.js +0 -29
  111. package/dist/test/scripts/pw-locator-patch/highlight/text-content.d.ts +0 -6
  112. package/dist/test/scripts/pw-locator-patch/highlight/text-content.d.ts.map +0 -1
  113. package/dist/test/scripts/pw-locator-patch/highlight/text-content.js +0 -30
  114. /package/dist/test/scripts/pw-locator-patch/{highlight → actions}/click.d.ts +0 -0
  115. /package/dist/test/scripts/pw-locator-patch/{highlight → actions}/hover.d.ts +0 -0
@@ -17,12 +17,12 @@ export interface paths {
17
17
  get: operations["listTestRuns"];
18
18
  /**
19
19
  * Trigger a test run
20
- * @description Triggers a new end-to-end test run for the scoped project against the given environment, resolving the branch/build and dispatching the run.
20
+ * @description Triggers a new end-to-end test run for the scoped project, optionally with a saved environment, resolving the branch/build and dispatching the run.
21
21
  */
22
22
  put: operations["createTestRun"];
23
23
  /**
24
24
  * ⚙️ Update a test run's state
25
- * @description Reports a run state transition from the run worker (looked up by repo name + run_id). Ingests the report summary on `ended`, applies the terminal-state guard, and fans out state-change effects.
25
+ * @description Reports a run state transition from the run worker (looked up by run_id). Ingests the report summary on `ended`, applies the terminal-state guard, and fans out state-change effects.
26
26
  */
27
27
  post: operations["updateTestRunState"];
28
28
  delete?: never;
@@ -151,7 +151,7 @@ export interface paths {
151
151
  patch?: never;
152
152
  trace?: never;
153
153
  };
154
- "/api/test-runs/{id}/share-targets": {
154
+ "/api/test-runs/{id}/chat-sessions": {
155
155
  parameters: {
156
156
  query?: never;
157
157
  header?: never;
@@ -159,10 +159,10 @@ export interface paths {
159
159
  cookie?: never;
160
160
  };
161
161
  /**
162
- * 🤖 List Slack share targets for a run
163
- * @description Lists Slack destinations for sharing this run's triage content: reply targets for channels with an existing run notification thread, plus active channels accessible to the project's organization for a new message.
162
+ * ⚙️ List a test run's chat sessions
163
+ * @description Every session linked to the run, most recently updated first, including closed ones. Each carries the tests it is scoped to. Only sessions created after links were introduced are returned.
164
164
  */
165
- get: operations["listTestRunShareTargets"];
165
+ get: operations["listTestRunChatSessions"];
166
166
  put?: never;
167
167
  post?: never;
168
168
  delete?: never;
@@ -1238,6 +1238,46 @@ export interface paths {
1238
1238
  patch?: never;
1239
1239
  trace?: never;
1240
1240
  };
1241
+ "/api/slack/threads/{id}/entity-links": {
1242
+ parameters: {
1243
+ query?: never;
1244
+ header?: never;
1245
+ path?: never;
1246
+ cookie?: never;
1247
+ };
1248
+ get?: never;
1249
+ put?: never;
1250
+ /**
1251
+ * 🤖 Link a Slack thread to an entity
1252
+ * @description Associates a registered Slack thread with a test run or failure group in the scoped project, so `GET /api/slack/threads?entity_type=&entity_id=` finds it. Idempotent: relinking returns the existing link, and only `is_canonical: true` changes its canonical flag.
1253
+ */
1254
+ post: operations["createSlackThreadEntityLink"];
1255
+ delete?: never;
1256
+ options?: never;
1257
+ head?: never;
1258
+ patch?: never;
1259
+ trace?: never;
1260
+ };
1261
+ "/api/slack/threads/{id}/entity-links/{link_id}": {
1262
+ parameters: {
1263
+ query?: never;
1264
+ header?: never;
1265
+ path?: never;
1266
+ cookie?: never;
1267
+ };
1268
+ get?: never;
1269
+ put?: never;
1270
+ post?: never;
1271
+ /**
1272
+ * 🤖 Unlink a Slack thread from an entity
1273
+ * @description Removes an agent- or user-created entity link. System links (test-run notifications) cannot be removed.
1274
+ */
1275
+ delete: operations["deleteSlackThreadEntityLink"];
1276
+ options?: never;
1277
+ head?: never;
1278
+ patch?: never;
1279
+ trace?: never;
1280
+ };
1241
1281
  "/api/v2/slack/channels": {
1242
1282
  parameters: {
1243
1283
  query?: never;
@@ -1494,6 +1534,50 @@ export interface paths {
1494
1534
  patch?: never;
1495
1535
  trace?: never;
1496
1536
  };
1537
+ "/api/files": {
1538
+ parameters: {
1539
+ query?: never;
1540
+ header?: never;
1541
+ path?: never;
1542
+ cookie?: never;
1543
+ };
1544
+ /**
1545
+ * List files
1546
+ * @description Returns the project's files, newest first.
1547
+ */
1548
+ get: operations["listFiles"];
1549
+ put?: never;
1550
+ /**
1551
+ * Create a file
1552
+ * @description Registers a file and returns its link plus a presigned `upload_url`. PUT the file body to `upload_url` with the same `Content-Type` as `mime_type`; the link serves the file once the upload finishes.
1553
+ */
1554
+ post: operations["createFile"];
1555
+ delete?: never;
1556
+ options?: never;
1557
+ head?: never;
1558
+ patch?: never;
1559
+ trace?: never;
1560
+ };
1561
+ "/api/reporters": {
1562
+ parameters: {
1563
+ query?: never;
1564
+ header?: never;
1565
+ path?: never;
1566
+ cookie?: never;
1567
+ };
1568
+ /**
1569
+ * List reporters
1570
+ * @description Lists the reporters a reporter config can name for the scoped project, with whether each can post: the organization's registered Slack channels, the GitHub check and PR comment with the repositories the GitHub Reporter app covers, the email report, and the run-only Slack DM to whoever starts the run (whose status depends on the caller). Use the Slack channel ids and repositories here when setting an environment's `reporter_config` or a run's `reporters`.
1571
+ */
1572
+ get: operations["listReporters"];
1573
+ put?: never;
1574
+ post?: never;
1575
+ delete?: never;
1576
+ options?: never;
1577
+ head?: never;
1578
+ patch?: never;
1579
+ trace?: never;
1580
+ };
1497
1581
  "/api/resources": {
1498
1582
  parameters: {
1499
1583
  query?: never;
@@ -1503,12 +1587,14 @@ export interface paths {
1503
1587
  };
1504
1588
  /**
1505
1589
  * List resources
1590
+ * @deprecated
1506
1591
  * @description Returns a paginated list of uploaded resources for the project.
1507
1592
  */
1508
1593
  get: operations["listProjectResources"];
1509
1594
  put?: never;
1510
1595
  /**
1511
1596
  * Create a resource
1597
+ * @deprecated
1512
1598
  * @description Creates a resource. With `url`, creates a link-type file; otherwise creates a pending upload and returns a signed `upload_url` to stream the file into R2.
1513
1599
  */
1514
1600
  post: operations["createProjectResource"];
@@ -1527,6 +1613,7 @@ export interface paths {
1527
1613
  };
1528
1614
  /**
1529
1615
  * Get a resource
1616
+ * @deprecated
1530
1617
  * @description Retrieves a single resource by ID, with a fresh download URL.
1531
1618
  */
1532
1619
  get: operations["getProjectResource"];
@@ -1534,6 +1621,7 @@ export interface paths {
1534
1621
  post?: never;
1535
1622
  /**
1536
1623
  * Delete a resource
1624
+ * @deprecated
1537
1625
  * @description Deletes a resource, removing its R2 object and stopping any active Drive watch.
1538
1626
  */
1539
1627
  delete: operations["deleteProjectResource"];
@@ -1541,6 +1629,7 @@ export interface paths {
1541
1629
  head?: never;
1542
1630
  /**
1543
1631
  * Update a resource
1632
+ * @deprecated
1544
1633
  * @description Updates a resource's name/description, or confirms a pending upload with `status: "uploaded"`.
1545
1634
  */
1546
1635
  patch: operations["updateProjectResource"];
@@ -1555,11 +1644,13 @@ export interface paths {
1555
1644
  };
1556
1645
  /**
1557
1646
  * Download resource content
1647
+ * @deprecated
1558
1648
  * @description Streams an uploaded resource's content from R2. Authorized by the signed capability URL (HMAC in the query string), not bearer auth.
1559
1649
  */
1560
1650
  get: operations["downloadResourceContent"];
1561
1651
  /**
1562
1652
  * Upload resource content
1653
+ * @deprecated
1563
1654
  * @description Streams the request body into R2 for a pending resource. Authorized by the signed capability URL (HMAC in the query string), not bearer auth.
1564
1655
  */
1565
1656
  put: operations["uploadResourceContent"];
@@ -1590,6 +1681,58 @@ export interface paths {
1590
1681
  patch?: never;
1591
1682
  trace?: never;
1592
1683
  };
1684
+ "/api/tasks": {
1685
+ parameters: {
1686
+ query?: never;
1687
+ header?: never;
1688
+ path?: never;
1689
+ cookie?: never;
1690
+ };
1691
+ /**
1692
+ * 🧪 List tasks
1693
+ * @description Returns a paginated list of tasks for the scoped project.
1694
+ */
1695
+ get: operations["listTasks"];
1696
+ put?: never;
1697
+ /**
1698
+ * 🧪 Create a task
1699
+ * @description Creates a task for the scoped project and, for non-draft tasks, spawns a chat session for the agent.
1700
+ */
1701
+ post: operations["createTask"];
1702
+ delete?: never;
1703
+ options?: never;
1704
+ head?: never;
1705
+ patch?: never;
1706
+ trace?: never;
1707
+ };
1708
+ "/api/tasks/{id}": {
1709
+ parameters: {
1710
+ query?: never;
1711
+ header?: never;
1712
+ path?: never;
1713
+ cookie?: never;
1714
+ };
1715
+ /**
1716
+ * 🧪 Get a task
1717
+ * @description Retrieves a single task by ID.
1718
+ */
1719
+ get: operations["getTask"];
1720
+ put?: never;
1721
+ post?: never;
1722
+ /**
1723
+ * 🧪 Delete a task
1724
+ * @description Permanently deletes a task.
1725
+ */
1726
+ delete: operations["deleteTask"];
1727
+ options?: never;
1728
+ head?: never;
1729
+ /**
1730
+ * 🧪 Update a task
1731
+ * @description Updates a task's title, description, or status. A draft → open transition spawns a chat session.
1732
+ */
1733
+ patch: operations["updateTask"];
1734
+ trace?: never;
1735
+ };
1593
1736
  "/api/v1/telemetry/overlay-dismissals": {
1594
1737
  parameters: {
1595
1738
  query?: never;
@@ -1744,7 +1887,7 @@ export interface paths {
1744
1887
  put?: never;
1745
1888
  /**
1746
1889
  * 🤖 🧪 Create an event trigger
1747
- * @description Creates a trigger that resumes this session after the selected event occurs. Supply entity_id for an exact one-shot trigger, or omit it to match every entity; wildcard triggers may use recurring cardinality. Optional payload_filter fields must be allowed by the event catalog. Registration is edge-only and does not match historical events.
1890
+ * @description Creates a trigger that resumes this session after the selected event occurs. Supply entity_id for an exact one-shot trigger, or omit it to match every entity; wildcard triggers may use recurring cardinality. Optional payload_filter fields must be allowed by the event catalog. Registration is edge-only and does not match historical events, so an exact trigger on a test run that already finished is rejected with 409.
1748
1891
  */
1749
1892
  post: operations["createChatSessionTrigger"];
1750
1893
  delete?: never;
@@ -1812,26 +1955,6 @@ export interface paths {
1812
1955
  patch?: never;
1813
1956
  trace?: never;
1814
1957
  };
1815
- "/api/failure-groups/{id}/share": {
1816
- parameters: {
1817
- query?: never;
1818
- header?: never;
1819
- path?: never;
1820
- cookie?: never;
1821
- };
1822
- get?: never;
1823
- put?: never;
1824
- /**
1825
- * 🤖 Share a failure group's diagnosis
1826
- * @description Posts this group's diagnosis to a chosen Slack destination, with a link back to the failure group. The diagnosis and header are read from the stored group, never the client. A thread reply must belong to a run in this project; the channel must be accessible to the project's organization.
1827
- */
1828
- post: operations["shareFailureGroup"];
1829
- delete?: never;
1830
- options?: never;
1831
- head?: never;
1832
- patch?: never;
1833
- trace?: never;
1834
- };
1835
1958
  "/api/failure-groups/match": {
1836
1959
  parameters: {
1837
1960
  query?: never;
@@ -1932,6 +2055,26 @@ export interface paths {
1932
2055
  patch?: never;
1933
2056
  trace?: never;
1934
2057
  };
2058
+ "/api/traces/compare": {
2059
+ parameters: {
2060
+ query?: never;
2061
+ header?: never;
2062
+ path?: never;
2063
+ cookie?: never;
2064
+ };
2065
+ get?: never;
2066
+ put?: never;
2067
+ /**
2068
+ * 🤖 🧪 Compare a failed attempt with a passing one, step by step
2069
+ * @description Aligns the steps of a case's failed attempt with a passing attempt of the same test (the dashboard's Compare tab) and returns where they diverge: the step it failed on, steps that ran only on one side, steps that got much slower, and optionally the page as each side left that step.
2070
+ */
2071
+ post: operations["compareTraceAgainstPass"];
2072
+ delete?: never;
2073
+ options?: never;
2074
+ head?: never;
2075
+ patch?: never;
2076
+ trace?: never;
2077
+ };
1935
2078
  "/api/traces/query": {
1936
2079
  parameters: {
1937
2080
  query?: never;
@@ -2300,7 +2443,7 @@ export interface paths {
2300
2443
  put?: never;
2301
2444
  /**
2302
2445
  * ⚙️ Create a chat session
2303
- * @description Creates a chat session in the scoped project and delivers its first message (awaited, so the 201 means the message landed).
2446
+ * @description Creates a chat session in the scoped project for a Hive agent (`agent`, default `main`) and delivers its first message (awaited, so the 201 means the message landed). An agent or version Hive does not serve is rejected with a 400 before anything is created.
2304
2447
  */
2305
2448
  post: operations["createChatSession"];
2306
2449
  delete?: never;
@@ -2587,6 +2730,26 @@ export interface paths {
2587
2730
  patch?: never;
2588
2731
  trace?: never;
2589
2732
  };
2733
+ "/api/chat-sessions/{id}/sandbox/commits/{sha}": {
2734
+ parameters: {
2735
+ query?: never;
2736
+ header?: never;
2737
+ path?: never;
2738
+ cookie?: never;
2739
+ };
2740
+ /**
2741
+ * ⚙️ 🧪 Get a commit from the sandbox
2742
+ * @description Reads a commit's message, line stats and (optionally) diff from the attached sandbox's repository. Works for commits that have not been pushed; requires a running sandbox.
2743
+ */
2744
+ get: operations["getChatSessionSandboxCommit"];
2745
+ put?: never;
2746
+ post?: never;
2747
+ delete?: never;
2748
+ options?: never;
2749
+ head?: never;
2750
+ patch?: never;
2751
+ trace?: never;
2752
+ };
2590
2753
  "/api/chat-sessions/{id}/sandbox/control": {
2591
2754
  parameters: {
2592
2755
  query?: never;
@@ -2879,6 +3042,26 @@ export interface paths {
2879
3042
  patch?: never;
2880
3043
  trace?: never;
2881
3044
  };
3045
+ "/api/files/loom": {
3046
+ parameters: {
3047
+ query?: never;
3048
+ header?: never;
3049
+ path?: never;
3050
+ cookie?: never;
3051
+ };
3052
+ get?: never;
3053
+ put?: never;
3054
+ /**
3055
+ * ⚙️ 🧪 Import a Loom video
3056
+ * @description Downloads a Loom share video and stores it as a file.
3057
+ */
3058
+ post: operations["importLoomFile"];
3059
+ delete?: never;
3060
+ options?: never;
3061
+ head?: never;
3062
+ patch?: never;
3063
+ trace?: never;
3064
+ };
2882
3065
  "/api/flags": {
2883
3066
  parameters: {
2884
3067
  query?: never;
@@ -3355,20 +3538,20 @@ export interface paths {
3355
3538
  patch?: never;
3356
3539
  trace?: never;
3357
3540
  };
3358
- "/api/gsheet/webhook": {
3541
+ "/api/hive/agents": {
3359
3542
  parameters: {
3360
3543
  query?: never;
3361
3544
  header?: never;
3362
3545
  path?: never;
3363
3546
  cookie?: never;
3364
3547
  };
3365
- get?: never;
3366
- put?: never;
3367
3548
  /**
3368
- * Drive push receiver
3369
- * @description Receives Google Drive change notifications, authenticated by the per-channel HMAC token, and marks the matching watch channel as notified.
3549
+ * List Hive agents
3550
+ * @description Returns the Hive agents a chat session can be created with, each at its `@latest` version. Prompts and tool lists stay in Hive.
3370
3551
  */
3371
- post: operations["gsheetDriveWebhook"];
3552
+ get: operations["listHiveAgents"];
3553
+ put?: never;
3554
+ post?: never;
3372
3555
  delete?: never;
3373
3556
  options?: never;
3374
3557
  head?: never;
@@ -3426,7 +3609,7 @@ export interface paths {
3426
3609
  put?: never;
3427
3610
  /**
3428
3611
  * ⚙️ Jira webhook
3429
- * @description Receives a Jira webhook, resolves the install and project, and ingests issues carrying the `empirical` label as Empirical requests.
3612
+ * @description Receives a Jira webhook, resolves the install and project, and ingests issues carrying the `empirical` label as Empirical tasks.
3430
3613
  */
3431
3614
  post: operations["jiraWebhook"];
3432
3615
  delete?: never;
@@ -3446,7 +3629,7 @@ export interface paths {
3446
3629
  put?: never;
3447
3630
  /**
3448
3631
  * ⚙️ Linear webhook
3449
- * @description Receives a Linear webhook, validates its signature, and ingests labelled issues into the resolved project as Empirical requests.
3632
+ * @description Receives a Linear webhook, validates its signature, and ingests labelled issues into the resolved project as Empirical tasks.
3450
3633
  */
3451
3634
  post: operations["linearWebhook"];
3452
3635
  delete?: never;
@@ -3780,7 +3963,7 @@ export interface paths {
3780
3963
  };
3781
3964
  /**
3782
3965
  * 🛡️ List the org's invoices
3783
- * @description Returns all of the scoped project's org's sent invoices (paid and unpaid), newest first, with document availability flags.
3966
+ * @description Returns all of the scoped project's org's sent invoices (paid and unpaid) and, for orgs billed through Dodo, Dodo's invoices for their successful payments, newest first, with document availability flags. If Dodo can't be reached, only our invoices are returned.
3784
3967
  */
3785
3968
  get: operations["listOrgInvoices"];
3786
3969
  put?: never;
@@ -3882,7 +4065,7 @@ export interface paths {
3882
4065
  put?: never;
3883
4066
  /**
3884
4067
  * Receive a Jira webhook
3885
- * @description Receives a Jira webhook delivery, resolves the install and project, and ingests issues carrying the `empirical` label as Empirical requests.
4068
+ * @description Receives a Jira webhook delivery, resolves the install and project, and ingests issues carrying the `empirical` label as Empirical tasks.
3886
4069
  */
3887
4070
  post: operations["receiveJiraWebhook"];
3888
4071
  delete?: never;
@@ -4026,7 +4209,7 @@ export interface paths {
4026
4209
  put?: never;
4027
4210
  /**
4028
4211
  * Receive a Linear webhook
4029
- * @description Receives a Linear webhook delivery, verified by its `linear-signature` header, and ingests labelled issues into the resolved project as Empirical requests.
4212
+ * @description Receives a Linear webhook delivery, verified by its `linear-signature` header, and ingests labelled issues into the resolved project as Empirical tasks.
4030
4213
  */
4031
4214
  post: operations["receiveLinearWebhook"];
4032
4215
  delete?: never;
@@ -4251,6 +4434,26 @@ export interface paths {
4251
4434
  patch?: never;
4252
4435
  trace?: never;
4253
4436
  };
4437
+ "/api/memories/changes": {
4438
+ parameters: {
4439
+ query?: never;
4440
+ header?: never;
4441
+ path?: never;
4442
+ cookie?: never;
4443
+ };
4444
+ /**
4445
+ * ⚙️ 🧪 Memory changes made by a chat session
4446
+ * @description Returns every create, update and delete one chat session made to the scoped project's memories, oldest first, with the reason given for each, the previous version for updates, and live memory counts before and after.
4447
+ */
4448
+ get: operations["listMemoryChanges"];
4449
+ put?: never;
4450
+ post?: never;
4451
+ delete?: never;
4452
+ options?: never;
4453
+ head?: never;
4454
+ patch?: never;
4455
+ trace?: never;
4456
+ };
4254
4457
  "/api/memories/classifications": {
4255
4458
  parameters: {
4256
4459
  query?: never;
@@ -4271,6 +4474,26 @@ export interface paths {
4271
4474
  patch?: never;
4272
4475
  trace?: never;
4273
4476
  };
4477
+ "/api/memories/usage": {
4478
+ parameters: {
4479
+ query?: never;
4480
+ header?: never;
4481
+ path?: never;
4482
+ cookie?: never;
4483
+ };
4484
+ /**
4485
+ * ⚙️ 🧪 Most read and most edited memories
4486
+ * @description Returns the scoped project's most read memories (read_memory calls, counted by Hive from agent sessions) and most edited memories over a recent window.
4487
+ */
4488
+ get: operations["getMemoryUsage"];
4489
+ put?: never;
4490
+ post?: never;
4491
+ delete?: never;
4492
+ options?: never;
4493
+ head?: never;
4494
+ patch?: never;
4495
+ trace?: never;
4496
+ };
4274
4497
  "/api/metrics/project-last-7-days": {
4275
4498
  parameters: {
4276
4499
  query?: never;
@@ -5324,27 +5547,27 @@ export interface paths {
5324
5547
  patch?: never;
5325
5548
  trace?: never;
5326
5549
  };
5327
- "/api/reporter-types": {
5550
+ "/api/runner-backends/claim": {
5328
5551
  parameters: {
5329
5552
  query?: never;
5330
5553
  header?: never;
5331
5554
  path?: never;
5332
5555
  cookie?: never;
5333
5556
  };
5557
+ get?: never;
5558
+ put?: never;
5334
5559
  /**
5335
- * ⚙️ 🧪 List reporter capabilities
5336
- * @description Lists reporter types, supported destinations and events, and inbound-reply capabilities.
5560
+ * 🧪 Call home from an installation's stack
5561
+ * @description Called by the registration Lambda in a Private Runner stack. On Create and Update it records the stack's resources and versions and verifies them; a pending backend that passes becomes active. Delete always succeeds: it releases an unverified claim so the link can be reused, or disables an active backend and moves its projects back to Empirical-hosted runs.
5337
5562
  */
5338
- get: operations["listReporterTypes"];
5339
- put?: never;
5340
- post?: never;
5563
+ post: operations["claimRunnerBackend"];
5341
5564
  delete?: never;
5342
5565
  options?: never;
5343
5566
  head?: never;
5344
5567
  patch?: never;
5345
5568
  trace?: never;
5346
5569
  };
5347
- "/api/requests": {
5570
+ "/api/runner-backends/project": {
5348
5571
  parameters: {
5349
5572
  query?: never;
5350
5573
  header?: never;
@@ -5352,75 +5575,63 @@ export interface paths {
5352
5575
  cookie?: never;
5353
5576
  };
5354
5577
  /**
5355
- * ⚙️ List requests
5356
- * @description Returns a paginated list of requests for the scoped project.
5578
+ * 🧪 Get the scoped project's runner backend
5579
+ * @description Returns the runner backend the scoped project is linked to, including its verification status, or null when the project runs on Empirical-hosted infrastructure.
5357
5580
  */
5358
- get: operations["listRequests"];
5581
+ get: operations["getProjectRunnerBackend"];
5359
5582
  put?: never;
5360
- /**
5361
- * ⚙️ Create a request
5362
- * @description Creates a request for the scoped project and, for non-draft requests, spawns a chat session for the agent.
5363
- */
5364
- post: operations["createRequest"];
5583
+ post?: never;
5365
5584
  delete?: never;
5366
5585
  options?: never;
5367
5586
  head?: never;
5368
5587
  patch?: never;
5369
5588
  trace?: never;
5370
5589
  };
5371
- "/api/requests/{id}": {
5590
+ "/api/runner-backends/project/{id}": {
5372
5591
  parameters: {
5373
5592
  query?: never;
5374
5593
  header?: never;
5375
5594
  path?: never;
5376
5595
  cookie?: never;
5377
5596
  };
5378
- /**
5379
- * ⚙️ Get a request
5380
- * @description Retrieves a single request by ID.
5381
- */
5382
- get: operations["getRequest"];
5597
+ get?: never;
5383
5598
  put?: never;
5384
5599
  post?: never;
5385
5600
  /**
5386
- * ⚙️ Delete a request
5387
- * @description Permanently deletes a request.
5601
+ * 🧪 Remove a private runner
5602
+ * @description Deletes an unfinished setup or a disconnected runner of the scoped project's organisation that no project uses. Its CloudFormation stack, if one exists, stays in the AWS account until deleted there.
5388
5603
  */
5389
- delete: operations["deleteRequest"];
5604
+ delete: operations["removeProjectRunnerBackend"];
5390
5605
  options?: never;
5391
5606
  head?: never;
5392
5607
  /**
5393
- * ⚙️ Update a request
5394
- * @description Updates a request's title, description, or status. A draft → open transition spawns a chat session.
5608
+ * 🧪 Rename a private runner
5609
+ * @description Renames a runner backend of the scoped project's organisation.
5395
5610
  */
5396
- patch: operations["updateRequest"];
5611
+ patch: operations["renameProjectRunnerBackend"];
5397
5612
  trace?: never;
5398
5613
  };
5399
- "/api/requests/{id}/chat-sessions": {
5614
+ "/api/runner-backends/project/{id}/disconnect": {
5400
5615
  parameters: {
5401
5616
  query?: never;
5402
5617
  header?: never;
5403
5618
  path?: never;
5404
5619
  cookie?: never;
5405
5620
  };
5406
- /**
5407
- * ⚙️ List a request's chat sessions
5408
- * @description Returns the chat sessions spawned from a request.
5409
- */
5410
- get: operations["listRequestChatSessions"];
5621
+ get?: never;
5411
5622
  put?: never;
5412
5623
  /**
5413
- * ⚙️ Create a chat session for a request
5414
- * @description Starts a new chat session tied to a request.
5624
+ * 🧪 Disconnect a private runner
5625
+ * @description Stops sending runs to a runner backend of the scoped project's organisation and moves every project on it back to Empirical-hosted runs. The stack stays in the AWS account; delete it there to remove it. Re-enable restores the runner, but not the projects' links.
5415
5626
  */
5416
- post: operations["createRequestChatSession"];
5627
+ post: operations["disconnectProjectRunnerBackend"];
5417
5628
  delete?: never;
5418
5629
  options?: never;
5419
5630
  head?: never;
5420
5631
  patch?: never;
5421
5632
  trace?: never;
5422
5633
  };
5423
- "/api/runner-backends/claim": {
5634
+ "/api/runner-backends/project/{id}/enable": {
5424
5635
  parameters: {
5425
5636
  query?: never;
5426
5637
  header?: never;
@@ -5430,112 +5641,28 @@ export interface paths {
5430
5641
  get?: never;
5431
5642
  put?: never;
5432
5643
  /**
5433
- * 🧪 Call home from an installation's stack
5434
- * @description Called by the registration Lambda in a Private Runner stack. On Create and Update it records the stack's resources and versions and verifies them; a pending backend that passes becomes active. Delete always succeeds: it releases an unverified claim so the link can be reused, or disables an active backend and moves its projects back to Empirical-hosted runs.
5644
+ * 🧪 Re-enable a disconnected private runner
5645
+ * @description Verifies a disabled runner backend of the scoped project's organisation and makes it active again if every check passes. Projects are not re-linked.
5435
5646
  */
5436
- post: operations["claimRunnerBackend"];
5647
+ post: operations["enableProjectRunnerBackend"];
5437
5648
  delete?: never;
5438
5649
  options?: never;
5439
5650
  head?: never;
5440
5651
  patch?: never;
5441
5652
  trace?: never;
5442
5653
  };
5443
- "/api/runner-backends/project": {
5654
+ "/api/runner-backends/project/{id}/registration": {
5444
5655
  parameters: {
5445
5656
  query?: never;
5446
5657
  header?: never;
5447
5658
  path?: never;
5448
5659
  cookie?: never;
5449
5660
  };
5661
+ get?: never;
5662
+ put?: never;
5450
5663
  /**
5451
- * 🧪 Get the scoped project's runner backend
5452
- * @description Returns the runner backend the scoped project is linked to, including its verification status, or null when the project runs on Empirical-hosted infrastructure.
5453
- */
5454
- get: operations["getProjectRunnerBackend"];
5455
- put?: never;
5456
- post?: never;
5457
- delete?: never;
5458
- options?: never;
5459
- head?: never;
5460
- patch?: never;
5461
- trace?: never;
5462
- };
5463
- "/api/runner-backends/project/{id}": {
5464
- parameters: {
5465
- query?: never;
5466
- header?: never;
5467
- path?: never;
5468
- cookie?: never;
5469
- };
5470
- get?: never;
5471
- put?: never;
5472
- post?: never;
5473
- /**
5474
- * 🧪 Remove a private runner
5475
- * @description Deletes an unfinished setup or a disconnected runner of the scoped project's organisation that no project uses. Its CloudFormation stack, if one exists, stays in the AWS account until deleted there.
5476
- */
5477
- delete: operations["removeProjectRunnerBackend"];
5478
- options?: never;
5479
- head?: never;
5480
- /**
5481
- * 🧪 Rename a private runner
5482
- * @description Renames a runner backend of the scoped project's organisation.
5483
- */
5484
- patch: operations["renameProjectRunnerBackend"];
5485
- trace?: never;
5486
- };
5487
- "/api/runner-backends/project/{id}/disconnect": {
5488
- parameters: {
5489
- query?: never;
5490
- header?: never;
5491
- path?: never;
5492
- cookie?: never;
5493
- };
5494
- get?: never;
5495
- put?: never;
5496
- /**
5497
- * 🧪 Disconnect a private runner
5498
- * @description Stops sending runs to a runner backend of the scoped project's organisation and moves every project on it back to Empirical-hosted runs. The stack stays in the AWS account; delete it there to remove it. Re-enable restores the runner, but not the projects' links.
5499
- */
5500
- post: operations["disconnectProjectRunnerBackend"];
5501
- delete?: never;
5502
- options?: never;
5503
- head?: never;
5504
- patch?: never;
5505
- trace?: never;
5506
- };
5507
- "/api/runner-backends/project/{id}/enable": {
5508
- parameters: {
5509
- query?: never;
5510
- header?: never;
5511
- path?: never;
5512
- cookie?: never;
5513
- };
5514
- get?: never;
5515
- put?: never;
5516
- /**
5517
- * 🧪 Re-enable a disconnected private runner
5518
- * @description Verifies a disabled runner backend of the scoped project's organisation and makes it active again if every check passes. Projects are not re-linked.
5519
- */
5520
- post: operations["enableProjectRunnerBackend"];
5521
- delete?: never;
5522
- options?: never;
5523
- head?: never;
5524
- patch?: never;
5525
- trace?: never;
5526
- };
5527
- "/api/runner-backends/project/{id}/registration": {
5528
- parameters: {
5529
- query?: never;
5530
- header?: never;
5531
- path?: never;
5532
- cookie?: never;
5533
- };
5534
- get?: never;
5535
- put?: never;
5536
- /**
5537
- * 🧪 Create a new setup link
5538
- * @description Mints a new quick-create link for a pending runner backend of the scoped project's organisation, replacing any earlier unused link.
5664
+ * 🧪 Create a new setup link
5665
+ * @description Mints a new quick-create link for a pending runner backend of the scoped project's organisation, replacing any earlier unused link.
5539
5666
  */
5540
5667
  post: operations["createProjectRunnerBackendRegistration"];
5541
5668
  delete?: never;
@@ -5766,6 +5893,30 @@ export interface paths {
5766
5893
  patch?: never;
5767
5894
  trace?: never;
5768
5895
  };
5896
+ "/api/tasks/{id}/chat-sessions": {
5897
+ parameters: {
5898
+ query?: never;
5899
+ header?: never;
5900
+ path?: never;
5901
+ cookie?: never;
5902
+ };
5903
+ /**
5904
+ * ⚙️ List a task's chat sessions
5905
+ * @description Returns the chat sessions spawned from a task.
5906
+ */
5907
+ get: operations["listTaskChatSessions"];
5908
+ put?: never;
5909
+ /**
5910
+ * ⚙️ Create a chat session for a task
5911
+ * @description Starts a new chat session tied to a task.
5912
+ */
5913
+ post: operations["createTaskChatSession"];
5914
+ delete?: never;
5915
+ options?: never;
5916
+ head?: never;
5917
+ patch?: never;
5918
+ trace?: never;
5919
+ };
5769
5920
  "/api/test-runs/events": {
5770
5921
  parameters: {
5771
5922
  query?: never;
@@ -6185,7 +6336,13 @@ export interface components {
6185
6336
  invoices: components["schemas"]["OrgInvoice"][];
6186
6337
  };
6187
6338
  };
6188
- OrgInvoice: {
6339
+ OrgInvoice: components["schemas"]["EmpiricalOrgInvoice"] | components["schemas"]["DodoOrgInvoice"];
6340
+ EmpiricalOrgInvoice: {
6341
+ /**
6342
+ * @description An invoice we issued (order-form billing). (enum property replaced by openapi-typescript)
6343
+ * @enum {string}
6344
+ */
6345
+ source: "empirical";
6189
6346
  /** @description Invoice ID. */
6190
6347
  id: number;
6191
6348
  /** @description Invoice number. */
@@ -6214,6 +6371,27 @@ export interface components {
6214
6371
  /** @description Whether an unpaid invoice is past its due date plus the reminder grace period. Always false for paid invoices. */
6215
6372
  past_reminder_date: boolean;
6216
6373
  };
6374
+ DodoOrgInvoice: {
6375
+ /**
6376
+ * @description An invoice Dodo issued for a payment. (enum property replaced by openapi-typescript)
6377
+ * @enum {string}
6378
+ */
6379
+ source: "dodo";
6380
+ /** @description Dodo payment ID. */
6381
+ id: string;
6382
+ /** @description Dodo invoice ID. */
6383
+ number: string;
6384
+ /** @description ISO 8601 payment date. */
6385
+ issue_date: string;
6386
+ /** @description Payment currency code. */
6387
+ currency: string;
6388
+ /** @description Amount paid in minor units, tax included. */
6389
+ amount_in_cents: number;
6390
+ /** @description ISO 8601 payment date. */
6391
+ paid_at: string;
6392
+ /** @description Dodo's invoice PDF URL. */
6393
+ pdf_url: string | null;
6394
+ };
6217
6395
  ErrorResponse: {
6218
6396
  /** @description Always null for error responses. */
6219
6397
  data: unknown;
@@ -7950,8 +8128,6 @@ export interface components {
7950
8128
  default_branch: string;
7951
8129
  /** @description Branches that may not be pushed to through Empirical. Always includes the default branch. */
7952
8130
  protected_branches: string[];
7953
- /** @description Whether email reporting is enabled. */
7954
- has_email_reporting: boolean | null;
7955
8131
  /**
7956
8132
  * @description Concurrency limit scope for test runs.
7957
8133
  * @enum {string}
@@ -8008,8 +8184,6 @@ export interface components {
8008
8184
  default_branch: string;
8009
8185
  /** @description Branches that may not be pushed to through Empirical. Always includes the default branch. */
8010
8186
  protected_branches: string[];
8011
- /** @description Whether email reporting is enabled. */
8012
- has_email_reporting: boolean | null;
8013
8187
  /**
8014
8188
  * @description Concurrency limit scope for test runs.
8015
8189
  * @enum {string}
@@ -8226,12 +8400,8 @@ export interface components {
8226
8400
  updated_at: string;
8227
8401
  /** @description Owning project ID. */
8228
8402
  project_id: number;
8229
- /** @description Session mode (e.g. chat). */
8403
+ /** @description Hive agent ref the session runs (`<name>` or `<name>@<version>`). The legacy values `chat` and `triage` mean the default agent, `main`. */
8230
8404
  mode: string;
8231
- /** @description Origin of the session. */
8232
- source: string;
8233
- /** @description Source-specific identifier. */
8234
- source_identifier: string;
8235
8405
  /**
8236
8406
  * @description Workload class, assigned server-side; null for an ordinary user chat. Read-only — no request body accepts it.
8237
8407
  * @enum {string|null}
@@ -8269,6 +8439,13 @@ export interface components {
8269
8439
  is_closed: boolean;
8270
8440
  /** @description For a manager closed by rollover, the manager session that took over. */
8271
8441
  superseded_by_session_id: number | null;
8442
+ /** @description The session this one was spawned from: the agent session that delegated it, or the manager it took over from. */
8443
+ parent_chat_session_id?: number | null;
8444
+ /**
8445
+ * @description How this session came from its parent.
8446
+ * @enum {string|null}
8447
+ */
8448
+ parent_relationship?: "delegation" | "manager_handoff" | null;
8272
8449
  /** @description Feature flags enabled for the session. */
8273
8450
  feature_flags: string[];
8274
8451
  /** @description Durable outbox row for the first message. */
@@ -8306,8 +8483,6 @@ export interface components {
8306
8483
  default_branch: string;
8307
8484
  /** @description Branches that may not be pushed to through Empirical. Always includes the default branch. */
8308
8485
  protected_branches: string[];
8309
- /** @description Whether email reporting is enabled. */
8310
- has_email_reporting: boolean | null;
8311
8486
  /**
8312
8487
  * @description Concurrency limit scope for test runs.
8313
8488
  * @enum {string}
@@ -8598,8 +8773,6 @@ export interface components {
8598
8773
  repo_host: "github" | "pierre_code_storage";
8599
8774
  /** @description Default branch name. */
8600
8775
  default_branch: string;
8601
- /** @description Whether email reporting is enabled. */
8602
- has_email_reporting: boolean | null;
8603
8776
  /**
8604
8777
  * @description Concurrency scope for test runs.
8605
8778
  * @enum {string}
@@ -8917,54 +9090,55 @@ export interface components {
8917
9090
  [key: string]: boolean | string;
8918
9091
  };
8919
9092
  };
8920
- RequestListResponse: {
8921
- /** @description The page of requests. */
9093
+ TaskListResponse: {
9094
+ /** @description The page of tasks. */
8922
9095
  data: {
8923
- requests: components["schemas"]["RequestWithUser"][];
9096
+ tasks: components["schemas"]["TaskWithCreator"][];
8924
9097
  };
8925
9098
  pagination: components["schemas"]["Pagination"];
8926
9099
  };
8927
- RequestWithUser: {
8928
- /** @description Request ID. */
9100
+ TaskWithCreator: {
9101
+ /** @description Unique identifier for the task. */
8929
9102
  id: number;
8930
- /** @description ISO 8601 creation timestamp. */
8931
- created_at: string;
8932
- /** @description Supabase user ID of the creator, if known. */
8933
- created_by: string | null;
8934
- /** @description ISO 8601 last-update timestamp. */
8935
- updated_at: string;
8936
- /** @description Project the request belongs to. */
9103
+ /** @description Project the task belongs to. */
8937
9104
  project_id: number;
8938
- /** @description Origin of the request (e.g. `linear`). */
8939
- source: string;
8940
- /** @description External identifier for the request in its source system. */
8941
- source_identifier: string;
8942
- /** @description Request title. */
9105
+ /** @description Task title. */
8943
9106
  title: string;
8944
- /** @description Request description. */
9107
+ /** @description Task description (Markdown). */
8945
9108
  description: string;
8946
- /**
8947
- * @description Request status.
8948
- * @enum {string}
8949
- */
8950
- status: "draft" | "open" | "in-review" | "closed" | "resolved";
8951
- /** @description Resolved details for the creating user, if available. */
9109
+ status: components["schemas"]["TaskStatus"];
9110
+ /** @description Where the task came from, e.g. `linear`, `jira`, `slack` or `dashboard`. */
9111
+ source: string;
9112
+ /** @description Identifier of the task in its source system. */
9113
+ source_identifier: string;
9114
+ /** @description User ID of the creator. `null` for integration-created tasks. */
9115
+ created_by: string | null;
9116
+ /** @description ISO 8601 timestamp of when the task was created. */
9117
+ created_at: string;
9118
+ /** @description ISO 8601 timestamp of when the task was last updated. */
9119
+ updated_at: string;
9120
+ /** @description Details of the creating user, when known. */
8952
9121
  created_by_user_detail?: {
8953
- /** @description Supabase user ID. */
9122
+ /** @description User ID. */
8954
9123
  id: string;
8955
- /** @description User email. */
9124
+ /** @description User email address. */
8956
9125
  email: string;
8957
- /** @description Display name. */
9126
+ /** @description User display name. */
8958
9127
  name: string;
8959
- /** @description Avatar URL. */
9128
+ /** @description URL to user avatar image. */
8960
9129
  picture: string;
8961
9130
  } | null;
8962
9131
  };
8963
- CreateRequestResponse: {
9132
+ /**
9133
+ * @description `draft` tasks do not start an agent session; `open` ones do. `closed` and `resolved` are terminal.
9134
+ * @enum {string}
9135
+ */
9136
+ TaskStatus: "draft" | "open" | "in-review" | "closed" | "resolved";
9137
+ CreateTaskResponse: {
8964
9138
  /** @description Response payload. */
8965
9139
  data: {
8966
- request: components["schemas"]["Request"];
8967
- /** @description Chat session created for non-draft requests, else null. */
9140
+ task: components["schemas"]["Task"];
9141
+ /** @description Chat session created for non-draft tasks, else null. */
8968
9142
  session: {
8969
9143
  /** @description Chat session ID. */
8970
9144
  id: number;
@@ -8980,10 +9154,6 @@ export interface components {
8980
9154
  project_id: number;
8981
9155
  /** @description Session mode (e.g. `chat`). */
8982
9156
  mode: string;
8983
- /** @description Source surface (e.g. `request`). */
8984
- source: string;
8985
- /** @description Identifier tying the session to its source. */
8986
- source_identifier: string;
8987
9157
  /** @description Model used for the session. */
8988
9158
  model: string | null;
8989
9159
  /** @description Opaque agent chat state. */
@@ -9003,32 +9173,28 @@ export interface components {
9003
9173
  } | null;
9004
9174
  };
9005
9175
  };
9006
- Request: {
9007
- /** @description Request ID. */
9176
+ Task: {
9177
+ /** @description Unique identifier for the task. */
9008
9178
  id: number;
9009
- /** @description ISO 8601 creation timestamp. */
9010
- created_at: string;
9011
- /** @description Supabase user ID of the creator, if known. */
9012
- created_by: string | null;
9013
- /** @description ISO 8601 last-update timestamp. */
9014
- updated_at: string;
9015
- /** @description Project the request belongs to. */
9179
+ /** @description Project the task belongs to. */
9016
9180
  project_id: number;
9017
- /** @description Origin of the request (e.g. `linear`). */
9018
- source: string;
9019
- /** @description External identifier for the request in its source system. */
9020
- source_identifier: string;
9021
- /** @description Request title. */
9181
+ /** @description Task title. */
9022
9182
  title: string;
9023
- /** @description Request description. */
9183
+ /** @description Task description (Markdown). */
9024
9184
  description: string;
9025
- /**
9026
- * @description Request status.
9027
- * @enum {string}
9028
- */
9029
- status: "draft" | "open" | "in-review" | "closed" | "resolved";
9185
+ status: components["schemas"]["TaskStatus"];
9186
+ /** @description Where the task came from, e.g. `linear`, `jira`, `slack` or `dashboard`. */
9187
+ source: string;
9188
+ /** @description Identifier of the task in its source system. */
9189
+ source_identifier: string;
9190
+ /** @description User ID of the creator. `null` for integration-created tasks. */
9191
+ created_by: string | null;
9192
+ /** @description ISO 8601 timestamp of when the task was created. */
9193
+ created_at: string;
9194
+ /** @description ISO 8601 timestamp of when the task was last updated. */
9195
+ updated_at: string;
9030
9196
  };
9031
- CreateRequestError: {
9197
+ CreateTaskError: {
9032
9198
  /** @description Always null for error responses. */
9033
9199
  data: unknown;
9034
9200
  /** @description Error details. */
@@ -9039,38 +9205,64 @@ export interface components {
9039
9205
  missingFields?: string[];
9040
9206
  };
9041
9207
  };
9042
- RequestResponse: {
9208
+ CreateTaskRequest: {
9209
+ /** @description Task title. */
9210
+ title: string;
9211
+ /** @description Task description (Markdown). */
9212
+ description: string;
9213
+ /** @description Where the task came from, e.g. `linear` or `dashboard`. */
9214
+ source: string;
9215
+ /** @description Identifier of the task in its source system. */
9216
+ source_identifier: string;
9217
+ /**
9218
+ * @description Initial status; defaults to `open`. A `draft` task does not start an agent session.
9219
+ * @enum {string}
9220
+ */
9221
+ status?: "draft" | "open" | "in-review" | "closed" | "resolved";
9222
+ };
9223
+ TaskResponse: {
9043
9224
  /** @description Response payload. */
9044
9225
  data: {
9045
- request: components["schemas"]["RequestWithUser"];
9226
+ task: components["schemas"]["TaskWithCreator"];
9046
9227
  };
9047
9228
  };
9048
- UpdatedRequestResponse: {
9229
+ UpdatedTaskResponse: {
9049
9230
  /** @description Response payload. */
9050
9231
  data: {
9051
- request: components["schemas"]["Request"];
9232
+ task: components["schemas"]["Task"];
9052
9233
  };
9053
9234
  };
9054
- DeletedRequestResponse: {
9235
+ UpdateTaskRequest: {
9236
+ /** @description New task title. */
9237
+ title?: string;
9238
+ /** @description New task description (Markdown). */
9239
+ description?: string;
9240
+ /**
9241
+ * @description New task status. Moving a `draft` task to `open` starts an agent session.
9242
+ * @enum {string}
9243
+ */
9244
+ status?: "draft" | "open" | "in-review" | "closed" | "resolved";
9245
+ };
9246
+ DeletedTaskResponse: {
9055
9247
  /** @description Response payload. */
9056
9248
  data: {
9057
- /** @description The deleted request. */
9058
- request: {
9059
- /** @description Deleted request ID. */
9249
+ /** @description The deleted task. */
9250
+ task: {
9251
+ /** @description Deleted task ID. */
9060
9252
  id: number;
9061
9253
  };
9062
9254
  };
9063
9255
  };
9064
- RequestChatSessionsResponse: {
9256
+ TaskChatSessionsResponse: {
9065
9257
  /** @description Null when no sessions exist. */
9066
9258
  data: unknown;
9067
9259
  /** @description Explanatory message when empty. */
9068
9260
  message: string;
9069
9261
  } | {
9070
- /** @description Chat sessions for the request. */
9071
- data: components["schemas"]["RequestChatSessionWithUser"][];
9262
+ /** @description Chat sessions for the task. */
9263
+ data: components["schemas"]["TaskChatSessionWithUser"][];
9072
9264
  };
9073
- RequestChatSessionWithUser: {
9265
+ TaskChatSessionWithUser: {
9074
9266
  /** @description Chat session ID. */
9075
9267
  id: number;
9076
9268
  /** @description Session title, if generated. */
@@ -9085,10 +9277,6 @@ export interface components {
9085
9277
  project_id: number;
9086
9278
  /** @description Session mode (e.g. `chat`). */
9087
9279
  mode: string;
9088
- /** @description Source surface (e.g. `request`). */
9089
- source: string;
9090
- /** @description Identifier tying the session to its source. */
9091
- source_identifier: string;
9092
9280
  /** @description Model used for the session. */
9093
9281
  model: string | null;
9094
9282
  /** @description Opaque agent chat state. */
@@ -9107,23 +9295,23 @@ export interface components {
9107
9295
  pending_first_message?: unknown;
9108
9296
  /** @description Resolved details for the creating user, if available. */
9109
9297
  created_by_user_detail?: {
9110
- /** @description Supabase user ID. */
9298
+ /** @description User ID. */
9111
9299
  id: string;
9112
- /** @description User email. */
9300
+ /** @description User email address. */
9113
9301
  email: string;
9114
- /** @description Display name. */
9302
+ /** @description User display name. */
9115
9303
  name: string;
9116
- /** @description Avatar URL. */
9304
+ /** @description URL to user avatar image. */
9117
9305
  picture: string;
9118
9306
  } | null;
9119
9307
  };
9120
- RequestSessionResponse: {
9308
+ TaskSessionResponse: {
9121
9309
  /** @description Response payload. */
9122
9310
  data: {
9123
- chat_session: components["schemas"]["RequestChatSession"];
9311
+ chat_session: components["schemas"]["TaskChatSession"];
9124
9312
  };
9125
9313
  };
9126
- RequestChatSession: {
9314
+ TaskChatSession: {
9127
9315
  /** @description Chat session ID. */
9128
9316
  id: number;
9129
9317
  /** @description Session title, if generated. */
@@ -9138,10 +9326,6 @@ export interface components {
9138
9326
  project_id: number;
9139
9327
  /** @description Session mode (e.g. `chat`). */
9140
9328
  mode: string;
9141
- /** @description Source surface (e.g. `request`). */
9142
- source: string;
9143
- /** @description Identifier tying the session to its source. */
9144
- source_identifier: string;
9145
9329
  /** @description Model used for the session. */
9146
9330
  model: string | null;
9147
9331
  /** @description Opaque agent chat state. */
@@ -9159,30 +9343,83 @@ export interface components {
9159
9343
  /** @description Outboxed first message awaiting delivery. */
9160
9344
  pending_first_message?: unknown;
9161
9345
  };
9162
- ReporterTypesResponse: {
9346
+ ListReportersResponse: {
9163
9347
  /** @description Response payload. */
9164
9348
  data: {
9165
- reporter_types: {
9166
- /** @enum {string} */
9167
- id: "slack_run_status" | "slack_creator_dm" | "email_run_report" | "github_check" | "github_pr_comment";
9168
- display_name: string;
9169
- /** @enum {string} */
9170
- audience: "broadcast" | "initiator";
9171
- recipient: {
9172
- /** @enum {string} */
9173
- mode: "destinations" | "selector";
9174
- supported_destination_kinds: ("slack_channel" | "slack_user" | "email" | "github_repository")[];
9175
- supported_selectors: "run_creator"[];
9176
- };
9177
- supported_events: ("run_queued" | "run_started" | "run_progress" | "run_ended" | "run_cancelled" | "run_interrupted" | "run_error")[];
9178
- inbound_replies: {
9179
- /** @enum {string} */
9180
- availability: "unavailable" | "planned" | "available";
9181
- supported_policies: ("disabled" | "bot_mention" | "configured_recipients" | "org_members")[];
9182
- };
9183
- }[];
9349
+ /** @description Every reporter a reporter config can name (Slack run status, GitHub check, GitHub PR comment, email report and, for runs, the Slack DM), with whether it can post for this project. */
9350
+ reporters: components["schemas"]["AvailableReporter"][];
9184
9351
  };
9185
9352
  };
9353
+ AvailableReporter: {
9354
+ /**
9355
+ * @description Posts run status updates to Slack channels.
9356
+ * @enum {string}
9357
+ */
9358
+ reporter_type: "slack_run_status";
9359
+ /**
9360
+ * @description `available` when the organization has at least one registered Slack channel; otherwise `not_connected`.
9361
+ * @enum {string}
9362
+ */
9363
+ status: "available" | "not_connected";
9364
+ /** @description The organization's registered, unarchived Slack channels a reporter config can name. */
9365
+ slack_channels: components["schemas"]["ReporterSlackChannel"][];
9366
+ } | {
9367
+ /**
9368
+ * @description Posts a GitHub check run on the build commit.
9369
+ * @enum {string}
9370
+ */
9371
+ reporter_type: "github_check";
9372
+ /**
9373
+ * @description `available`: the GitHub Reporter app is installed with the permission this reporter needs. `not_installed`: no install for the organization. `install_requested`: an install is waiting for a GitHub owner's approval. `missing_permission`: installed, but without the permission this reporter needs (`checks` for check runs, `pull_requests` for PR comments).
9374
+ * @enum {string}
9375
+ */
9376
+ status: "available" | "not_installed" | "install_requested" | "missing_permission";
9377
+ /** @description Repositories (`owner/name`) the install covers. The reporter posts only for runs whose `build.repo` is one of these. */
9378
+ repositories: string[];
9379
+ } | {
9380
+ /**
9381
+ * @description Posts (and updates) a comment on the pull request for the build branch.
9382
+ * @enum {string}
9383
+ */
9384
+ reporter_type: "github_pr_comment";
9385
+ /**
9386
+ * @description `available`: the GitHub Reporter app is installed with the permission this reporter needs. `not_installed`: no install for the organization. `install_requested`: an install is waiting for a GitHub owner's approval. `missing_permission`: installed, but without the permission this reporter needs (`checks` for check runs, `pull_requests` for PR comments).
9387
+ * @enum {string}
9388
+ */
9389
+ status: "available" | "not_installed" | "install_requested" | "missing_permission";
9390
+ /** @description Repositories (`owner/name`) the install covers. The reporter posts only for runs whose `build.repo` is one of these. */
9391
+ repositories: string[];
9392
+ } | {
9393
+ /**
9394
+ * @description Emails a report when the run ends to every user whose email domain is one of the organization's email domains.
9395
+ * @enum {string}
9396
+ */
9397
+ reporter_type: "email_run_report";
9398
+ /**
9399
+ * @description Always `available`.
9400
+ * @enum {string}
9401
+ */
9402
+ status: "available";
9403
+ } | {
9404
+ /**
9405
+ * @description Sends a Slack DM to whoever started the run when it ends. Runs only: environments cannot hold it.
9406
+ * @enum {string}
9407
+ */
9408
+ reporter_type: "slack_creator_dm";
9409
+ /**
9410
+ * @description For runs triggered by the caller: `available` when the person the run would be attributed to (the signed-in user, or an agent session's creator) has a linked Slack account; `not_linked` when they have none; `no_creator` for callers such as project API keys, whose runs have no one to DM.
9411
+ * @enum {string}
9412
+ */
9413
+ status: "available" | "not_linked" | "no_creator";
9414
+ };
9415
+ ReporterSlackChannel: {
9416
+ /** @description Registered channel id, as used in `slack_channel_ids` of a reporter config. */
9417
+ id: number;
9418
+ /** @description Slack channel id (`C…`), as used in `slack_channels` of a reporter config. */
9419
+ channel_id: string;
9420
+ /** @description Channel name without the `#`, if known. */
9421
+ name: string | null;
9422
+ };
9186
9423
  ListProjectAddonsResponse: {
9187
9424
  /** @description Response payload. */
9188
9425
  data: {
@@ -9399,16 +9636,34 @@ export interface components {
9399
9636
  * @enum {number}
9400
9637
  */
9401
9638
  schema_version: 1;
9402
- /** @description Reporters for this environment, at most one per `reporter_type`. Replaces the stored list on write; an empty array disables notifications. */
9403
- reporters: {
9639
+ /** @description Reporters, at most one per `reporter_type`. Replaces the stored list on write; an empty array disables them. */
9640
+ reporters: ({
9404
9641
  /**
9405
- * @description Reporter kind. `slack_run_status` posts run status updates to Slack channels; it is the only kind accepted today.
9642
+ * @description Posts run status updates to Slack channels.
9406
9643
  * @enum {string}
9407
9644
  */
9408
9645
  reporter_type: "slack_run_status";
9409
9646
  /** @description Registered Slack channel ids from `GET /api/v2/slack/channels` (the numeric `id`, not the Slack `C…` channel id). Must belong to the project's organization and not be archived. Deduplicated and sorted on save. */
9410
9647
  slack_channel_ids: number[];
9411
- }[];
9648
+ } | {
9649
+ /**
9650
+ * @description Posts a GitHub check run on the build commit. Needs `build` with a repository the GitHub Reporter app is installed on.
9651
+ * @enum {string}
9652
+ */
9653
+ reporter_type: "github_check";
9654
+ } | {
9655
+ /**
9656
+ * @description Posts (and updates) a comment on the pull request for the build branch. Needs `build` with a repository the GitHub Reporter app is installed on.
9657
+ * @enum {string}
9658
+ */
9659
+ reporter_type: "github_pr_comment";
9660
+ } | {
9661
+ /**
9662
+ * @description Emails a report when the run ends to every user whose email domain is one of the organization's email domains.
9663
+ * @enum {string}
9664
+ */
9665
+ reporter_type: "email_run_report";
9666
+ })[];
9412
9667
  };
9413
9668
  /** @description ISO 8601 timestamp. */
9414
9669
  created_at: string | null;
@@ -9442,31 +9697,51 @@ export interface components {
9442
9697
  */
9443
9698
  on_conflict: "cancel" | "wait";
9444
9699
  } | null;
9445
- /** @description Reporter configuration for the environment. Slack channel ids must be active registered channels of the project's organization (GET /api/v2/slack/channels). */
9700
+ /** @description Reporter configuration for the environment. Slack channels (`slack_channels` or `slack_channel_ids`) must be active registered channels of the project's organization (GET /api/v2/slack/channels); they are stored as registered ids. */
9446
9701
  reporter_config?: {
9447
9702
  /**
9448
9703
  * @description Reporter config schema version. Always `1`.
9449
9704
  * @enum {number}
9450
9705
  */
9451
9706
  schema_version: 1;
9452
- /** @description Reporters for this environment, at most one per `reporter_type`. Replaces the stored list on write; an empty array disables notifications. */
9453
- reporters: {
9707
+ /** @description Reporters, at most one per `reporter_type`. Replaces the stored list on write; an empty array disables them. */
9708
+ reporters: ({
9454
9709
  /**
9455
- * @description Reporter kind. `slack_run_status` posts run status updates to Slack channels; it is the only kind accepted today.
9710
+ * @description Posts run status updates to Slack channels.
9456
9711
  * @enum {string}
9457
9712
  */
9458
9713
  reporter_type: "slack_run_status";
9459
- /** @description Registered Slack channel ids from `GET /api/v2/slack/channels` (the numeric `id`, not the Slack `C…` channel id). Must belong to the project's organization and not be archived. Deduplicated and sorted on save. */
9460
- slack_channel_ids: number[];
9461
- }[];
9462
- };
9463
- };
9464
- EnvironmentSyncResponse: {
9465
- /** @description Response payload. */
9466
- data: {
9467
- /** @description Always true on success. */
9468
- success: boolean;
9469
- };
9714
+ /** @description Slack channel ids (`C…`), as shown in Slack's channel details. Shared (Slack Connect) channels have the same id in every workspace. Each must be a registered, unarchived channel of the project's organization. */
9715
+ slack_channels?: string[];
9716
+ /** @description Registered Slack channel ids from `GET /api/v2/slack/channels` (the numeric `id`). Can be combined with `slack_channels`. */
9717
+ slack_channel_ids?: number[];
9718
+ } | {
9719
+ /**
9720
+ * @description Posts a GitHub check run on the build commit. Needs `build` with a repository the GitHub Reporter app is installed on.
9721
+ * @enum {string}
9722
+ */
9723
+ reporter_type: "github_check";
9724
+ } | {
9725
+ /**
9726
+ * @description Posts (and updates) a comment on the pull request for the build branch. Needs `build` with a repository the GitHub Reporter app is installed on.
9727
+ * @enum {string}
9728
+ */
9729
+ reporter_type: "github_pr_comment";
9730
+ } | {
9731
+ /**
9732
+ * @description Emails a report when the run ends to every user whose email domain is one of the organization's email domains.
9733
+ * @enum {string}
9734
+ */
9735
+ reporter_type: "email_run_report";
9736
+ })[];
9737
+ };
9738
+ };
9739
+ EnvironmentSyncResponse: {
9740
+ /** @description Response payload. */
9741
+ data: {
9742
+ /** @description Always true on success. */
9743
+ success: boolean;
9744
+ };
9470
9745
  };
9471
9746
  EnvironmentMutationError: {
9472
9747
  /** @description Error, returned as a bare string or a `{ message }` object (legacy shape). */
@@ -9498,23 +9773,43 @@ export interface components {
9498
9773
  */
9499
9774
  on_conflict: "cancel" | "wait";
9500
9775
  } | null;
9501
- /** @description Reporter configuration for the environment. Slack channel ids must be active registered channels of the project's organization (GET /api/v2/slack/channels). */
9776
+ /** @description Reporter configuration for the environment. Slack channels (`slack_channels` or `slack_channel_ids`) must be active registered channels of the project's organization (GET /api/v2/slack/channels); they are stored as registered ids. */
9502
9777
  reporter_config?: {
9503
9778
  /**
9504
9779
  * @description Reporter config schema version. Always `1`.
9505
9780
  * @enum {number}
9506
9781
  */
9507
9782
  schema_version: 1;
9508
- /** @description Reporters for this environment, at most one per `reporter_type`. Replaces the stored list on write; an empty array disables notifications. */
9509
- reporters: {
9783
+ /** @description Reporters, at most one per `reporter_type`. Replaces the stored list on write; an empty array disables them. */
9784
+ reporters: ({
9510
9785
  /**
9511
- * @description Reporter kind. `slack_run_status` posts run status updates to Slack channels; it is the only kind accepted today.
9786
+ * @description Posts run status updates to Slack channels.
9512
9787
  * @enum {string}
9513
9788
  */
9514
9789
  reporter_type: "slack_run_status";
9515
- /** @description Registered Slack channel ids from `GET /api/v2/slack/channels` (the numeric `id`, not the Slack `C…` channel id). Must belong to the project's organization and not be archived. Deduplicated and sorted on save. */
9516
- slack_channel_ids: number[];
9517
- }[];
9790
+ /** @description Slack channel ids (`C…`), as shown in Slack's channel details. Shared (Slack Connect) channels have the same id in every workspace. Each must be a registered, unarchived channel of the project's organization. */
9791
+ slack_channels?: string[];
9792
+ /** @description Registered Slack channel ids from `GET /api/v2/slack/channels` (the numeric `id`). Can be combined with `slack_channels`. */
9793
+ slack_channel_ids?: number[];
9794
+ } | {
9795
+ /**
9796
+ * @description Posts a GitHub check run on the build commit. Needs `build` with a repository the GitHub Reporter app is installed on.
9797
+ * @enum {string}
9798
+ */
9799
+ reporter_type: "github_check";
9800
+ } | {
9801
+ /**
9802
+ * @description Posts (and updates) a comment on the pull request for the build branch. Needs `build` with a repository the GitHub Reporter app is installed on.
9803
+ * @enum {string}
9804
+ */
9805
+ reporter_type: "github_pr_comment";
9806
+ } | {
9807
+ /**
9808
+ * @description Emails a report when the run ends to every user whose email domain is one of the organization's email domains.
9809
+ * @enum {string}
9810
+ */
9811
+ reporter_type: "email_run_report";
9812
+ })[];
9518
9813
  };
9519
9814
  };
9520
9815
  EnvironmentDeleteResponse: {
@@ -9628,6 +9923,12 @@ export interface components {
9628
9923
  updated_at: string;
9629
9924
  /** @description ISO 8601 timestamp when the memory was soft-deleted, or null if live. */
9630
9925
  deleted_at: string | null;
9926
+ /** @description User who deleted the memory, or null. */
9927
+ deleted_by: string | null;
9928
+ /** @description Chat session that deleted the memory, or null if not deleted from a sandbox session. */
9929
+ deleted_by_chat_session_id: number | null;
9930
+ /** @description Reason given for the delete, or null. */
9931
+ delete_reason: string | null;
9631
9932
  };
9632
9933
  MemoryActivityResponse: {
9633
9934
  /** @description Response payload. */
@@ -9701,6 +10002,71 @@ export interface components {
9701
10002
  /** @description ISO 8601 timestamp. */
9702
10003
  classified_at: string;
9703
10004
  };
10005
+ MemoryUsageResponse: {
10006
+ /** @description Response payload. */
10007
+ data: {
10008
+ days: number;
10009
+ /** @description Most read memories (read_memory calls counted by Hive from agent sessions), or null when Hive is unavailable. */
10010
+ most_read: components["schemas"]["MemoryReadUsage"][] | null;
10011
+ most_edited: components["schemas"]["MemoryEditUsage"][];
10012
+ };
10013
+ };
10014
+ MemoryReadUsage: {
10015
+ /** @description Live memory the name resolves to now, or null if it was renamed or deleted since. */
10016
+ memory_id: number | null;
10017
+ name: string;
10018
+ /** @description read_memory calls. */
10019
+ reads: number;
10020
+ /** @description Distinct sessions that read it. */
10021
+ sessions: number;
10022
+ /** @description UTC day, YYYY-MM-DD. */
10023
+ last_read: string;
10024
+ };
10025
+ MemoryEditUsage: {
10026
+ memory_id: number;
10027
+ name: string | null;
10028
+ deleted: boolean;
10029
+ /** @description Versions saved after the initial create. */
10030
+ edits: number;
10031
+ /** @description Distinct chat sessions that made those edits. */
10032
+ sessions: number;
10033
+ };
10034
+ MemoryChangesResponse: {
10035
+ /** @description Response payload. */
10036
+ data: {
10037
+ changes: components["schemas"]["MemoryChange"][];
10038
+ summary: components["schemas"]["MemoryChangeSummary"];
10039
+ };
10040
+ };
10041
+ MemoryChange: {
10042
+ /** @enum {string} */
10043
+ kind: "create" | "update" | "delete";
10044
+ memory_id: number;
10045
+ name: string | null;
10046
+ description: string | null;
10047
+ content: string;
10048
+ reason: string | null;
10049
+ /** @description ISO 8601 timestamp of the change. */
10050
+ at: string;
10051
+ /** @description Version written by the change; null for a delete. For a delete, name/description/content are the memory's last content. */
10052
+ version: number | null;
10053
+ /** @description The version immediately before an update; null for creates and deletes. */
10054
+ previous: {
10055
+ version: number;
10056
+ name: string | null;
10057
+ description: string | null;
10058
+ content: string;
10059
+ } | null;
10060
+ };
10061
+ MemoryChangeSummary: {
10062
+ created: number;
10063
+ updated: number;
10064
+ deleted: number;
10065
+ /** @description Live memories in the project just before the first change; null when there are no changes. */
10066
+ live_before: number | null;
10067
+ /** @description Live memories in the project right after the last change; null when there are no changes. */
10068
+ live_after: number | null;
10069
+ };
9704
10070
  MemoryWriteResponse: {
9705
10071
  /** @description Response payload. */
9706
10072
  data: {
@@ -9775,6 +10141,8 @@ export interface components {
9775
10141
  source?: string | null;
9776
10142
  /** @description Source file path for file-sourced memories; unique within the project. */
9777
10143
  source_path?: string | null;
10144
+ /** @description Why this change was made (max 500 characters). Shown in the session's memory change report. */
10145
+ reason?: string | null;
9778
10146
  };
9779
10147
  MemoryResponse: {
9780
10148
  /** @description Response payload. */
@@ -9791,6 +10159,8 @@ export interface components {
9791
10159
  name?: string | null;
9792
10160
  /** @description Short description (v2). */
9793
10161
  description?: string | null;
10162
+ /** @description Why this change was made (max 500 characters). Shown in the session's memory change report. */
10163
+ reason?: string | null;
9794
10164
  };
9795
10165
  MemoryDeleteResponse: {
9796
10166
  /** @description Response payload. */
@@ -9799,6 +10169,10 @@ export interface components {
9799
10169
  success: boolean;
9800
10170
  };
9801
10171
  };
10172
+ DeleteMemoryRequest: {
10173
+ /** @description Why this change was made (max 500 characters). Shown in the session's memory change report. */
10174
+ reason?: string | null;
10175
+ };
9802
10176
  MemoryVersionListResponse: {
9803
10177
  /** @description Response payload. */
9804
10178
  data: {
@@ -9816,6 +10190,8 @@ export interface components {
9816
10190
  /** @description ID of the chat session that produced this version, or null if not written from a sandbox session. */
9817
10191
  source_chat_session_id: number | null;
9818
10192
  created_by: string | null;
10193
+ /** @description Reason given for the write that produced this version. */
10194
+ reason: string | null;
9819
10195
  /** @description ISO 8601 timestamp. */
9820
10196
  created_at: string;
9821
10197
  };
@@ -9831,7 +10207,7 @@ export interface components {
9831
10207
  CreateAlarmRequest: {
9832
10208
  /** @description The note to deliver back into this session when the alarm fires. Write it to your future self: what to resume and any context you'd otherwise lose. */
9833
10209
  message: string;
9834
- /** @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). */
10210
+ /** @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 5m, max 72h (3 days). */
9835
10211
  delay: string;
9836
10212
  };
9837
10213
  ProjectResourceListResponse: {
@@ -10235,6 +10611,23 @@ export interface components {
10235
10611
  count: number;
10236
10612
  }[];
10237
10613
  };
10614
+ SlackThreadEntityLinkResponse: {
10615
+ data: components["schemas"]["SlackThreadEntityLink"];
10616
+ };
10617
+ CreateSlackThreadEntityLinkRequest: {
10618
+ /**
10619
+ * @description Entity type to link.
10620
+ * @enum {string}
10621
+ */
10622
+ entity_type: "test_run" | "failure_group";
10623
+ /** @description Test run ID or failure group ID in the scoped project. */
10624
+ entity_id: string;
10625
+ /**
10626
+ * @description Make this thread the preferred thread for the entity in its channel, replacing any previous canonical thread there.
10627
+ * @default false
10628
+ */
10629
+ is_canonical: boolean;
10630
+ };
10238
10631
  SlackMessageResult: {
10239
10632
  /** @enum {boolean} */
10240
10633
  ok: true;
@@ -10371,12 +10764,8 @@ export interface components {
10371
10764
  updated_at: string;
10372
10765
  /** @description Owning project ID. */
10373
10766
  project_id: number;
10374
- /** @description Session mode (e.g. chat). */
10767
+ /** @description Hive agent ref the session runs (`<name>` or `<name>@<version>`). The legacy values `chat` and `triage` mean the default agent, `main`. */
10375
10768
  mode: string;
10376
- /** @description Origin of the session. */
10377
- source: string;
10378
- /** @description Source-specific identifier. */
10379
- source_identifier: string;
10380
10769
  /**
10381
10770
  * @description Workload class, assigned server-side; null for an ordinary user chat. Read-only — no request body accepts it.
10382
10771
  * @enum {string|null}
@@ -10392,6 +10781,13 @@ export interface components {
10392
10781
  is_closed: boolean;
10393
10782
  /** @description For a manager closed by rollover, the manager session that took over. */
10394
10783
  superseded_by_session_id: number | null;
10784
+ /** @description The session this one was spawned from: the agent session that delegated it, or the manager it took over from. */
10785
+ parent_chat_session_id?: number | null;
10786
+ /**
10787
+ * @description How this session came from its parent.
10788
+ * @enum {string|null}
10789
+ */
10790
+ parent_relationship?: "delegation" | "manager_handoff" | null;
10395
10791
  /** @description Feature flags enabled for the session. */
10396
10792
  feature_flags: string[];
10397
10793
  /** @description Resolved Supabase details for the creator. */
@@ -10450,12 +10846,8 @@ export interface components {
10450
10846
  updated_at: string;
10451
10847
  /** @description Owning project ID. */
10452
10848
  project_id: number;
10453
- /** @description Session mode (e.g. chat). */
10849
+ /** @description Hive agent ref the session runs (`<name>` or `<name>@<version>`). The legacy values `chat` and `triage` mean the default agent, `main`. */
10454
10850
  mode: string;
10455
- /** @description Origin of the session. */
10456
- source: string;
10457
- /** @description Source-specific identifier. */
10458
- source_identifier: string;
10459
10851
  /**
10460
10852
  * @description Workload class, assigned server-side; null for an ordinary user chat. Read-only — no request body accepts it.
10461
10853
  * @enum {string|null}
@@ -10493,6 +10885,13 @@ export interface components {
10493
10885
  is_closed: boolean;
10494
10886
  /** @description For a manager closed by rollover, the manager session that took over. */
10495
10887
  superseded_by_session_id: number | null;
10888
+ /** @description The session this one was spawned from: the agent session that delegated it, or the manager it took over from. */
10889
+ parent_chat_session_id?: number | null;
10890
+ /**
10891
+ * @description How this session came from its parent.
10892
+ * @enum {string|null}
10893
+ */
10894
+ parent_relationship?: "delegation" | "manager_handoff" | null;
10496
10895
  /** @description Feature flags enabled for the session. */
10497
10896
  feature_flags: string[];
10498
10897
  /** @description Durable outbox row for the first message. */
@@ -10749,6 +11148,26 @@ export interface components {
10749
11148
  };
10750
11149
  };
10751
11150
  };
11151
+ SandboxCommit: {
11152
+ commit: {
11153
+ /** @description Full commit SHA. */
11154
+ sha: string;
11155
+ /** @description First parent SHA; null for a root commit. */
11156
+ parent_sha: string | null;
11157
+ /** @description Full commit message. */
11158
+ message: string;
11159
+ /** @description Files changed. */
11160
+ files_changed: number;
11161
+ /** @description Lines added. */
11162
+ additions: number;
11163
+ /** @description Lines deleted. */
11164
+ deletions: number;
11165
+ /** @description Unified diff against the first parent, when requested. */
11166
+ diff: string | null;
11167
+ /** @description Whether the diff was cut at a file boundary for size. */
11168
+ diff_truncated: boolean;
11169
+ };
11170
+ };
10752
11171
  SubscribeChatSessionResponse: {
10753
11172
  data: {
10754
11173
  already_waiting: boolean;
@@ -10845,6 +11264,8 @@ export interface components {
10845
11264
  description: string;
10846
11265
  /** @description Unified pull request diff. */
10847
11266
  diff: string;
11267
+ /** @description False when the PR is over GitHub's diff limit: the diff is rebuilt from per-file patches, and files GitHub returns without a patch have headers but no hunks. Empty when even that failed. */
11268
+ diff_complete: boolean;
10848
11269
  /** @description Pull request head SHA. */
10849
11270
  last_commit: string;
10850
11271
  last_commit_at: string;
@@ -12182,8 +12603,8 @@ export interface components {
12182
12603
  };
12183
12604
  };
12184
12605
  TriggerTestRunRequest: {
12185
- /** @description The environment slug to run tests against (e.g., `production`, `staging`). */
12186
- environment: string;
12606
+ /** @description Slug of a saved environment to run with (e.g., `production`, `staging`). Optional: without it the run uses only the project's variables and the config sent on this request. */
12607
+ environment?: string;
12187
12608
  /** @description Build information to associate with the test run. */
12188
12609
  build?: {
12189
12610
  /** @description Git branch name of the build. */
@@ -12210,6 +12631,8 @@ export interface components {
12210
12631
  }[];
12211
12632
  /** @description Tags to filter which tests to run (e.g., `@smoke`, `@critical`). Only tests matching these tags will be executed. */
12212
12633
  tags?: string[];
12634
+ /** @description Tags whose tests are skipped (e.g., `@slow`). Applied after every other selection, so it can only remove tests: with `tags` it runs tests matching `tags` but not `exclude_tags`; alone it runs every test except the excluded ones. */
12635
+ exclude_tags?: string[];
12213
12636
  /** @description Specific test case ids (Playwright per-project `test.id`) to run. Only these tests will be executed. */
12214
12637
  test_case_ids?: string[];
12215
12638
  /** @description Existing test-repository branch to run. A missing explicit branch creates an errored run; Empirical never creates it. May be supplied alongside `build`, which describes the application code under test. */
@@ -12241,10 +12664,44 @@ export interface components {
12241
12664
  */
12242
12665
  on_conflict: "cancel" | "wait";
12243
12666
  } | null;
12667
+ /** @description Reporters for this run, saved on the run when it is created; at most one entry per `reporter_type`. Omit to use the environment's `reporter_config` (a run without an environment then gets none). A list replaces those defaults: reporters not listed do not fire, and `[]` turns them all off. Without `reporters`, a run started by a person (dashboard, CLI or agent session) also gets `slack_creator_dm`; a list sends the DM only if it names `slack_creator_dm`. Invalid entries (unknown Slack channels, duplicate types) reject the request without creating a run. */
12668
+ reporters?: ({
12669
+ /**
12670
+ * @description Posts run status updates to Slack channels.
12671
+ * @enum {string}
12672
+ */
12673
+ reporter_type: "slack_run_status";
12674
+ /** @description Slack channel ids (`C…`), as shown in Slack's channel details. Shared (Slack Connect) channels have the same id in every workspace. Each must be a registered, unarchived channel of the project's organization. */
12675
+ slack_channels?: string[];
12676
+ /** @description Registered Slack channel ids from `GET /api/v2/slack/channels` (the numeric `id`). Can be combined with `slack_channels`. */
12677
+ slack_channel_ids?: number[];
12678
+ } | {
12679
+ /**
12680
+ * @description Posts a GitHub check run on the build commit. Needs `build` with a repository the GitHub Reporter app is installed on.
12681
+ * @enum {string}
12682
+ */
12683
+ reporter_type: "github_check";
12684
+ } | {
12685
+ /**
12686
+ * @description Posts (and updates) a comment on the pull request for the build branch. Needs `build` with a repository the GitHub Reporter app is installed on.
12687
+ * @enum {string}
12688
+ */
12689
+ reporter_type: "github_pr_comment";
12690
+ } | {
12691
+ /**
12692
+ * @description Emails a report when the run ends to every user whose email domain is one of the organization's email domains.
12693
+ * @enum {string}
12694
+ */
12695
+ reporter_type: "email_run_report";
12696
+ } | {
12697
+ /**
12698
+ * @description Sends a Slack DM to whoever started the run (from the dashboard, the CLI or an agent session) when it ends, if their Slack account is linked. Runs triggered with a project API key have no one to DM.
12699
+ * @enum {string}
12700
+ */
12701
+ reporter_type: "slack_creator_dm";
12702
+ })[];
12244
12703
  /** @description Legacy project ID; must match the request's resolved project scope when set. The project scope itself comes from the bound principal or the x-project-id header, never from the body. */
12245
12704
  project_id?: number;
12246
- /** @description Whether to send run notifications. Defaults to true. */
12247
- send_notifications?: boolean;
12248
12705
  /** @description Override the number of shards to split the run across. */
12249
12706
  total_shards?: number;
12250
12707
  /** @description ID of the test run this run is a rerun of. */
@@ -12342,27 +12799,27 @@ export interface components {
12342
12799
  rerun_only_failed: boolean | null;
12343
12800
  /** @description Tags applied to the run. */
12344
12801
  tags: string[] | null;
12802
+ /** @description Tags whose tests the run skips. */
12803
+ exclude_tags: string[] | null;
12345
12804
  /** @description Storage bucket holding the run's artifacts. */
12346
12805
  storage_bucket: string | null;
12347
- /** @description Whether notifications are sent for the run. */
12348
- send_notifications: boolean;
12349
12806
  };
12350
12807
  UpdateTestRunStateRequest: {
12351
12808
  /** @description Run identifier (`run_id`, not the DB primary key). */
12352
12809
  testRunId: number;
12353
- /** @description Repository name used to resolve the run's project. */
12354
- projectRepoName: string;
12355
- /** @description Branch the run executed against. */
12810
+ /** @description Deprecated and ignored: the run's own project is used. */
12811
+ projectRepoName?: string;
12812
+ /** @description Deprecated and ignored: the run's own branch is used. */
12356
12813
  testRunBranch?: string;
12357
- /** @description Head commit SHA the run executed against. */
12814
+ /** @description Commit SHA the run checked out. Set by the worker when the run was dispatched without one. */
12358
12815
  testRunHeadSha?: string;
12359
12816
  /**
12360
12817
  * @description New run state reported by the run worker.
12361
12818
  * @enum {string}
12362
12819
  */
12363
12820
  state: "pending" | "queued" | "cancelling" | "cancelled" | "ended" | "started" | "error" | "interrupted";
12364
- /** @description Environment slug the run executed against. */
12365
- environment: string;
12821
+ /** @description Deprecated and ignored: the run's own environment is used. */
12822
+ environment?: string;
12366
12823
  /** @description Error code when transitioning to an error state. */
12367
12824
  errorCode?: string;
12368
12825
  };
@@ -12511,30 +12968,6 @@ export interface components {
12511
12968
  /** @description Environment the snooze is scoped to; null applies to all environments. */
12512
12969
  scoped_to_environment_id: number | null;
12513
12970
  };
12514
- TriageShareTargetsResponse: {
12515
- /** @description Response payload. */
12516
- data: {
12517
- /** @description Reply targets for channels that already have a run notification thread. */
12518
- thread_targets: components["schemas"]["TriageShareTarget"][];
12519
- /** @description New-message targets for active Slack channels accessible to the organization. */
12520
- channel_targets: components["schemas"]["TriageShareTarget"][];
12521
- };
12522
- };
12523
- TriageShareTarget: {
12524
- /**
12525
- * @description Whether this target replies under an existing run thread or starts a new message.
12526
- * @enum {string}
12527
- */
12528
- kind: "thread" | "channel";
12529
- /** @description Slack channel ID. */
12530
- channel_id: string;
12531
- /** @description Slack channel name, if known. */
12532
- channel_name: string | null;
12533
- /** @description Slack workspace (team) ID. */
12534
- team_id: string | null;
12535
- /** @description Timestamp of the thread to reply under. */
12536
- thread_ts?: string;
12537
- };
12538
12971
  GetTestRunResponse: {
12539
12972
  data: {
12540
12973
  test_run: {
@@ -12738,7 +13171,7 @@ export interface components {
12738
13171
  empiricalrun_api_key: string;
12739
13172
  /** @enum {string} */
12740
13173
  region: "us-east-1" | "ap-south-1";
12741
- environment_slug: string;
13174
+ environment_slug?: string;
12742
13175
  shard_index?: number;
12743
13176
  total_shards: number;
12744
13177
  /** @enum {string} */
@@ -12793,6 +13226,8 @@ export interface components {
12793
13226
  feature_flags: string[];
12794
13227
  /** @description Tags applied to the run. */
12795
13228
  tags: string[];
13229
+ /** @description Tags whose tests the run skips. */
13230
+ exclude_tags: string[];
12796
13231
  /** @description Specific test case ids to run. */
12797
13232
  test_case_ids: string[];
12798
13233
  };
@@ -12885,10 +13320,10 @@ export interface components {
12885
13320
  /** @description Full test line, e.g. `[chromium] › a.spec.ts › title`. */
12886
13321
  name: string;
12887
13322
  /**
12888
- * @description Whether the scheduled test has run yet. `retrying` means at least one attempt is in but retries are outstanding; its result fields are provisional until it flips to `ran`.
13323
+ * @description Whether the scheduled test has run yet. `retrying` means at least one attempt is in but retries are outstanding; its result fields are provisional until it flips to `ran`. `interrupted` means the shard was interrupted before the test finished and a resume shard (`superseded_by_shard`) re-scheduled it; that shard's row holds the result.
12889
13324
  * @enum {string}
12890
13325
  */
12891
- status: "ran" | "retrying" | "pending";
13326
+ status: "ran" | "retrying" | "pending" | "interrupted";
12892
13327
  /** @description Ledger row ID. */
12893
13328
  id?: number;
12894
13329
  /** @description Shard the row belongs to, or null when unsharded. */
@@ -12912,6 +13347,8 @@ export interface components {
12912
13347
  nesting?: string[] | null;
12913
13348
  /** @description 7-day average duration (ms) snapshotted at landing. */
12914
13349
  expected_duration_ms?: number | null;
13350
+ /** @description Resume shard that re-scheduled this test, when `status` is `interrupted`. */
13351
+ superseded_by_shard?: number | null;
12915
13352
  };
12916
13353
  TestRunManifestCountsResponse: {
12917
13354
  /** @description Response payload. */
@@ -13031,6 +13468,78 @@ export interface components {
13031
13468
  chat_session: components["schemas"]["ChatSession"];
13032
13469
  };
13033
13470
  };
13471
+ ListTestRunChatSessionsResponse: {
13472
+ /** @description Response payload. */
13473
+ data: {
13474
+ chat_sessions: components["schemas"]["TestRunChatSession"][];
13475
+ };
13476
+ };
13477
+ TestRunChatSession: {
13478
+ /** @description Chat session ID. */
13479
+ id: number;
13480
+ /** @description Session title. */
13481
+ title: string | null;
13482
+ /** @description Creator user ID. */
13483
+ created_by: string | null;
13484
+ /** @description Creation timestamp (ISO). */
13485
+ created_at: string;
13486
+ /** @description Last update timestamp (ISO). */
13487
+ updated_at: string;
13488
+ /** @description Owning project ID. */
13489
+ project_id: number;
13490
+ /** @description Hive agent ref the session runs (`<name>` or `<name>@<version>`). The legacy values `chat` and `triage` mean the default agent, `main`. */
13491
+ mode: string;
13492
+ /**
13493
+ * @description Workload class, assigned server-side; null for an ordinary user chat. Read-only — no request body accepts it.
13494
+ * @enum {string|null}
13495
+ */
13496
+ purpose?: "triage" | "manager" | null;
13497
+ /** @description Requested model. */
13498
+ model: string | null;
13499
+ /** @description Whether the agent is awaiting user input. */
13500
+ ask_user_for_input: boolean | null;
13501
+ /** @description Langfuse trace ID. */
13502
+ langfuse_trace_id: string | null;
13503
+ /** @description Whether the session is closed. */
13504
+ is_closed: boolean;
13505
+ /** @description For a manager closed by rollover, the manager session that took over. */
13506
+ superseded_by_session_id: number | null;
13507
+ /** @description The session this one was spawned from: the agent session that delegated it, or the manager it took over from. */
13508
+ parent_chat_session_id?: number | null;
13509
+ /**
13510
+ * @description How this session came from its parent.
13511
+ * @enum {string|null}
13512
+ */
13513
+ parent_relationship?: "delegation" | "manager_handoff" | null;
13514
+ /** @description Feature flags enabled for the session. */
13515
+ feature_flags: string[];
13516
+ /** @description Resolved Supabase details for the creator. */
13517
+ created_by_user_detail?: {
13518
+ /** @description Supabase user ID. */
13519
+ id: string;
13520
+ /** @description User email. */
13521
+ email: string;
13522
+ /** @description Display name. */
13523
+ name: string;
13524
+ /** @description Avatar URL. */
13525
+ picture: string;
13526
+ } | null;
13527
+ /** @description Number of the session's most recently updated PR, if any. */
13528
+ pr_number: number | null;
13529
+ /**
13530
+ * @description Status of the session's most recently updated PR ('unopened' when it has none).
13531
+ * @enum {string}
13532
+ */
13533
+ pr_status: "unopened" | "open" | "opened" | "closed" | "merged";
13534
+ /** @description Name of the owning project. */
13535
+ project_name: string | null;
13536
+ /** @description Repository name of the owning project. */
13537
+ project_repo_name: string | null;
13538
+ /** @description Repository owner of the owning project. */
13539
+ project_repo_owner: string | null;
13540
+ /** @description Tests in this run the session is scoped to; empty when the session is about the whole run (triage). */
13541
+ linked_pw_test_ids: string[];
13542
+ };
13034
13543
  CancelTestRunResponse: {
13035
13544
  /** @description Confirmation message indicating the test run was cancelled. */
13036
13545
  message: string;
@@ -13046,8 +13555,42 @@ export interface components {
13046
13555
  RerunTestRunRequest: {
13047
13556
  /** @description When true, re-run only the failed tests from the source run. The source run must be completed. */
13048
13557
  only_failed?: boolean;
13049
- /** @description Override whether notifications are sent for the re-run. Defaults to the source run's notification setting. */
13050
- send_notifications?: boolean;
13558
+ /** @description Reporters for the re-run, in the same shape as on trigger. Defaults to the source run's reporters. */
13559
+ reporters?: ({
13560
+ /**
13561
+ * @description Posts run status updates to Slack channels.
13562
+ * @enum {string}
13563
+ */
13564
+ reporter_type: "slack_run_status";
13565
+ /** @description Slack channel ids (`C…`), as shown in Slack's channel details. Shared (Slack Connect) channels have the same id in every workspace. Each must be a registered, unarchived channel of the project's organization. */
13566
+ slack_channels?: string[];
13567
+ /** @description Registered Slack channel ids from `GET /api/v2/slack/channels` (the numeric `id`). Can be combined with `slack_channels`. */
13568
+ slack_channel_ids?: number[];
13569
+ } | {
13570
+ /**
13571
+ * @description Posts a GitHub check run on the build commit. Needs `build` with a repository the GitHub Reporter app is installed on.
13572
+ * @enum {string}
13573
+ */
13574
+ reporter_type: "github_check";
13575
+ } | {
13576
+ /**
13577
+ * @description Posts (and updates) a comment on the pull request for the build branch. Needs `build` with a repository the GitHub Reporter app is installed on.
13578
+ * @enum {string}
13579
+ */
13580
+ reporter_type: "github_pr_comment";
13581
+ } | {
13582
+ /**
13583
+ * @description Emails a report when the run ends to every user whose email domain is one of the organization's email domains.
13584
+ * @enum {string}
13585
+ */
13586
+ reporter_type: "email_run_report";
13587
+ } | {
13588
+ /**
13589
+ * @description Sends a Slack DM to whoever started the run (from the dashboard, the CLI or an agent session) when it ends, if their Slack account is linked. Runs triggered with a project API key have no one to DM.
13590
+ * @enum {string}
13591
+ */
13592
+ reporter_type: "slack_creator_dm";
13593
+ })[];
13051
13594
  };
13052
13595
  StopTaskResponse: {
13053
13596
  /** @description Response payload. */
@@ -13587,8 +14130,6 @@ export interface components {
13587
14130
  } | null;
13588
14131
  /** @description URL of the Playwright JSON report. */
13589
14132
  summary_url: string | null;
13590
- /** @description Whether reporters fire for this run. */
13591
- send_notifications: boolean;
13592
14133
  /** @description Current run state (queued, started, ended, ...). */
13593
14134
  state: string | null;
13594
14135
  /** @description Associated build row ID, if any. */
@@ -13650,6 +14191,8 @@ export interface components {
13650
14191
  superseded_by_test_run_id: number | null;
13651
14192
  /** @description Tags applied to the run. */
13652
14193
  tags: string[] | null;
14194
+ /** @description Tags whose tests the run skips. */
14195
+ exclude_tags: string[] | null;
13653
14196
  /** @description Specific test case ids (Playwright test.id) to run. */
13654
14197
  test_case_ids: string[] | null;
13655
14198
  /** @description Concurrency group and policy the run was created with; null when no limit applied. */
@@ -13995,27 +14538,6 @@ export interface components {
13995
14538
  detached: boolean;
13996
14539
  };
13997
14540
  };
13998
- FailureGroupShareResponse: {
13999
- /** @description Response payload. */
14000
- data: {
14001
- /**
14002
- * @description Always true on success.
14003
- * @enum {boolean}
14004
- */
14005
- ok: true;
14006
- };
14007
- };
14008
- ShareFailureGroupRequest: {
14009
- /** @description The share destination. */
14010
- target: {
14011
- /** @enum {string} */
14012
- type: "slack";
14013
- /** @description Slack channel ID to post to. */
14014
- channel_id: string;
14015
- /** @description Thread timestamp to reply under, if any. */
14016
- thread_ts?: string;
14017
- };
14018
- };
14019
14541
  MergeFailureGroupRequest: {
14020
14542
  /** @description Target group id; this group merges into it. */
14021
14543
  into_group_id: string;
@@ -14160,6 +14682,25 @@ export interface components {
14160
14682
  /** @description Context window in tokens, from the provider catalog. Optional so clients keep working against Hive deployments that predate the field. */
14161
14683
  context_window?: number;
14162
14684
  };
14685
+ HiveAgentsResponse: {
14686
+ /** @description Response payload. */
14687
+ data: components["schemas"]["HiveAgentSummary"][];
14688
+ };
14689
+ HiveAgentSummary: {
14690
+ /** @description Agent name; pass as `agent` (optionally `<name>@<version>`) when creating a chat session. */
14691
+ name: string;
14692
+ /** @description What the agent is for, from its `@latest` version. */
14693
+ description: string | null;
14694
+ /** @description Version that `<name>` (and `<name>@latest`) resolves to. */
14695
+ latest_version: number;
14696
+ /**
14697
+ * @description Where the `@latest` version runs: `sandbox` (VM with a repo and shell) or `worker` (no filesystem).
14698
+ * @enum {string}
14699
+ */
14700
+ runtime: "sandbox" | "worker";
14701
+ /** @description Model the `@latest` version pins, before any override. */
14702
+ model: string;
14703
+ };
14163
14704
  PlaywrightUtilsProxyResponse: {
14164
14705
  /** @description Parsed JSON body returned by the upstream provider, or null when the response was not JSON. */
14165
14706
  data?: unknown;
@@ -14452,6 +14993,56 @@ export interface components {
14452
14993
  default_version: string;
14453
14994
  };
14454
14995
  };
14996
+ ListFilesResponse: {
14997
+ /** @description The page of files, newest first. */
14998
+ data: {
14999
+ files: components["schemas"]["File"][];
15000
+ };
15001
+ pagination: components["schemas"]["Pagination"];
15002
+ };
15003
+ File: {
15004
+ /** @description File ID. */
15005
+ id: number;
15006
+ /** @description Stored file name. */
15007
+ name: string;
15008
+ /** @description Link to the file. */
15009
+ url: string;
15010
+ /** @description MIME type. */
15011
+ mime_type: string | null;
15012
+ /** @description File size in bytes, when known. */
15013
+ size_bytes: number | null;
15014
+ /** @description ISO 8601 creation time. */
15015
+ created_at: string;
15016
+ };
15017
+ CreateFileResponse: {
15018
+ /** @description Response payload. */
15019
+ data: {
15020
+ file: components["schemas"]["File"];
15021
+ /** @description Presigned PUT URL, valid for 1 hour. Send the file body with the same `Content-Type` as `mime_type`. */
15022
+ upload_url: string;
15023
+ };
15024
+ };
15025
+ CreateFileRequest: {
15026
+ /** @description File name. */
15027
+ name: string;
15028
+ /**
15029
+ * @description MIME type. The upload must send the same `Content-Type` header.
15030
+ * @default application/octet-stream
15031
+ */
15032
+ mime_type: string;
15033
+ /** @description File size in bytes. */
15034
+ size_bytes?: number;
15035
+ };
15036
+ ImportLoomFileResponse: {
15037
+ /** @description Response payload. */
15038
+ data: {
15039
+ file: components["schemas"]["File"];
15040
+ };
15041
+ };
15042
+ ImportLoomFileRequest: {
15043
+ /** @description Loom share URL (loom.com/share/<id>). */
15044
+ url: string;
15045
+ };
14455
15046
  CreateUploadUrlsResponse: {
14456
15047
  /** @description Response payload. */
14457
15048
  data: {
@@ -14630,7 +15221,7 @@ export interface operations {
14630
15221
  "application/json": components["schemas"]["ErrorResponse"];
14631
15222
  };
14632
15223
  };
14633
- /** @description Project, test run, or environment not found. */
15224
+ /** @description Test run not found. */
14634
15225
  404: {
14635
15226
  headers: {
14636
15227
  [name: string]: unknown;
@@ -14930,7 +15521,7 @@ export interface operations {
14930
15521
  };
14931
15522
  };
14932
15523
  };
14933
- listTestRunShareTargets: {
15524
+ listTestRunChatSessions: {
14934
15525
  parameters: {
14935
15526
  query?: never;
14936
15527
  header?: never;
@@ -14942,16 +15533,16 @@ export interface operations {
14942
15533
  };
14943
15534
  requestBody?: never;
14944
15535
  responses: {
14945
- /** @description Slack share destinations. */
15536
+ /** @description Sessions linked to the run. */
14946
15537
  200: {
14947
15538
  headers: {
14948
15539
  [name: string]: unknown;
14949
15540
  };
14950
15541
  content: {
14951
- "application/json": components["schemas"]["TriageShareTargetsResponse"];
15542
+ "application/json": components["schemas"]["ListTestRunChatSessionsResponse"];
14952
15543
  };
14953
15544
  };
14954
- /** @description Invalid project header. */
15545
+ /** @description Invalid database test run ID. */
14955
15546
  400: {
14956
15547
  headers: {
14957
15548
  [name: string]: unknown;
@@ -14960,7 +15551,7 @@ export interface operations {
14960
15551
  "application/json": components["schemas"]["ErrorResponse"];
14961
15552
  };
14962
15553
  };
14963
- /** @description Test run not found or not accessible. */
15554
+ /** @description Test run not found or inaccessible. */
14964
15555
  404: {
14965
15556
  headers: {
14966
15557
  [name: string]: unknown;
@@ -16104,7 +16695,7 @@ export interface operations {
16104
16695
  "application/json": components["schemas"]["EnvironmentResponse"];
16105
16696
  };
16106
16697
  };
16107
- /** @description Invalid request, the slug already exists, or reporter_config names an unknown Slack channel id. */
16698
+ /** @description Invalid request, the slug already exists, or reporter_config names an unknown Slack channel. */
16108
16699
  400: {
16109
16700
  headers: {
16110
16701
  [name: string]: unknown;
@@ -16199,7 +16790,7 @@ export interface operations {
16199
16790
  "application/json": components["schemas"]["Environment"];
16200
16791
  };
16201
16792
  };
16202
- /** @description Invalid request, the slug already exists, or reporter_config names an unknown Slack channel id. */
16793
+ /** @description Invalid request, the slug already exists, or reporter_config names an unknown Slack channel. */
16203
16794
  400: {
16204
16795
  headers: {
16205
16796
  [name: string]: unknown;
@@ -17919,12 +18510,109 @@ export interface operations {
17919
18510
  };
17920
18511
  };
17921
18512
  };
17922
- listSlackChannelsV2: {
18513
+ createSlackThreadEntityLink: {
17923
18514
  parameters: {
17924
18515
  query?: never;
17925
18516
  header?: never;
17926
- path?: never;
17927
- cookie?: never;
18517
+ path: {
18518
+ /** @description Registered Slack thread ID. */
18519
+ id: number;
18520
+ };
18521
+ cookie?: never;
18522
+ };
18523
+ requestBody?: {
18524
+ content: {
18525
+ "application/json": components["schemas"]["CreateSlackThreadEntityLinkRequest"];
18526
+ };
18527
+ };
18528
+ responses: {
18529
+ /** @description The live entity link. */
18530
+ 200: {
18531
+ headers: {
18532
+ [name: string]: unknown;
18533
+ };
18534
+ content: {
18535
+ "application/json": components["schemas"]["SlackThreadEntityLinkResponse"];
18536
+ };
18537
+ };
18538
+ /** @description Invalid request. */
18539
+ 400: {
18540
+ headers: {
18541
+ [name: string]: unknown;
18542
+ };
18543
+ content: {
18544
+ "application/json": components["schemas"]["ErrorResponse"];
18545
+ };
18546
+ };
18547
+ /** @description Slack thread or entity not found in this project. */
18548
+ 404: {
18549
+ headers: {
18550
+ [name: string]: unknown;
18551
+ };
18552
+ content: {
18553
+ "application/json": components["schemas"]["ErrorResponse"];
18554
+ };
18555
+ };
18556
+ };
18557
+ };
18558
+ deleteSlackThreadEntityLink: {
18559
+ parameters: {
18560
+ query?: never;
18561
+ header?: never;
18562
+ path: {
18563
+ /** @description Registered Slack thread ID. */
18564
+ id: number;
18565
+ /** @description Entity link ID from the thread's `entity_links`. */
18566
+ link_id: number;
18567
+ };
18568
+ cookie?: never;
18569
+ };
18570
+ requestBody?: never;
18571
+ responses: {
18572
+ /** @description The removed entity link. */
18573
+ 200: {
18574
+ headers: {
18575
+ [name: string]: unknown;
18576
+ };
18577
+ content: {
18578
+ "application/json": components["schemas"]["SlackThreadEntityLinkResponse"];
18579
+ };
18580
+ };
18581
+ /** @description Invalid request. */
18582
+ 400: {
18583
+ headers: {
18584
+ [name: string]: unknown;
18585
+ };
18586
+ content: {
18587
+ "application/json": components["schemas"]["ErrorResponse"];
18588
+ };
18589
+ };
18590
+ /** @description Entity link not found. */
18591
+ 404: {
18592
+ headers: {
18593
+ [name: string]: unknown;
18594
+ };
18595
+ content: {
18596
+ "application/json": components["schemas"]["ErrorResponse"];
18597
+ };
18598
+ };
18599
+ /** @description System links cannot be removed. */
18600
+ 409: {
18601
+ headers: {
18602
+ [name: string]: unknown;
18603
+ };
18604
+ content: {
18605
+ "application/json": components["schemas"]["ErrorResponse"];
18606
+ };
18607
+ };
18608
+ };
18609
+ };
18610
+ listSlackChannelsV2: {
18611
+ parameters: {
18612
+ query?: never;
18613
+ header?: never;
18614
+ path?: never;
18615
+ cookie?: never;
17928
18616
  };
17929
18617
  requestBody?: never;
17930
18618
  responses: {
@@ -18486,6 +19174,111 @@ export interface operations {
18486
19174
  };
18487
19175
  };
18488
19176
  };
19177
+ listFiles: {
19178
+ parameters: {
19179
+ query?: {
19180
+ /** @description Page number (1-indexed). */
19181
+ page?: number;
19182
+ /** @description Items per page (max 100). */
19183
+ per_page?: number;
19184
+ };
19185
+ header?: never;
19186
+ path?: never;
19187
+ cookie?: never;
19188
+ };
19189
+ requestBody?: never;
19190
+ responses: {
19191
+ /** @description Paginated list of files. */
19192
+ 200: {
19193
+ headers: {
19194
+ [name: string]: unknown;
19195
+ };
19196
+ content: {
19197
+ "application/json": components["schemas"]["ListFilesResponse"];
19198
+ };
19199
+ };
19200
+ /** @description Invalid request. */
19201
+ 400: {
19202
+ headers: {
19203
+ [name: string]: unknown;
19204
+ };
19205
+ content: {
19206
+ "application/json": components["schemas"]["ErrorResponse"];
19207
+ };
19208
+ };
19209
+ };
19210
+ };
19211
+ createFile: {
19212
+ parameters: {
19213
+ query?: never;
19214
+ header?: never;
19215
+ path?: never;
19216
+ cookie?: never;
19217
+ };
19218
+ requestBody?: {
19219
+ content: {
19220
+ "application/json": components["schemas"]["CreateFileRequest"];
19221
+ };
19222
+ };
19223
+ responses: {
19224
+ /** @description The created file. */
19225
+ 200: {
19226
+ headers: {
19227
+ [name: string]: unknown;
19228
+ };
19229
+ content: {
19230
+ "application/json": components["schemas"]["CreateFileResponse"];
19231
+ };
19232
+ };
19233
+ /** @description Invalid request. */
19234
+ 400: {
19235
+ headers: {
19236
+ [name: string]: unknown;
19237
+ };
19238
+ content: {
19239
+ "application/json": components["schemas"]["ErrorResponse"];
19240
+ };
19241
+ };
19242
+ };
19243
+ };
19244
+ listReporters: {
19245
+ parameters: {
19246
+ query?: never;
19247
+ header?: never;
19248
+ path?: never;
19249
+ cookie?: never;
19250
+ };
19251
+ requestBody?: never;
19252
+ responses: {
19253
+ /** @description Reporters for the project. */
19254
+ 200: {
19255
+ headers: {
19256
+ [name: string]: unknown;
19257
+ };
19258
+ content: {
19259
+ "application/json": components["schemas"]["ListReportersResponse"];
19260
+ };
19261
+ };
19262
+ /** @description Missing project scope. */
19263
+ 400: {
19264
+ headers: {
19265
+ [name: string]: unknown;
19266
+ };
19267
+ content: {
19268
+ "application/json": components["schemas"]["ErrorResponse"];
19269
+ };
19270
+ };
19271
+ /** @description Project not found or not accessible. */
19272
+ 404: {
19273
+ headers: {
19274
+ [name: string]: unknown;
19275
+ };
19276
+ content: {
19277
+ "application/json": components["schemas"]["ErrorResponse"];
19278
+ };
19279
+ };
19280
+ };
19281
+ };
18489
19282
  listProjectResources: {
18490
19283
  parameters: {
18491
19284
  query?: {
@@ -18830,29 +19623,15 @@ export interface operations {
18830
19623
  };
18831
19624
  };
18832
19625
  };
18833
- getOverlayDismissalSummary: {
19626
+ listTasks: {
18834
19627
  parameters: {
18835
19628
  query?: {
18836
- /** @description Page number (1-indexed). Default 1. */
18837
- page?: string;
18838
- /** @description Items per page (1-100). Default 50. */
18839
- per_page?: string;
18840
- /** @description Look-back window in days (1-90, default 7). Ignored when `start_date` and `end_date` are set. */
18841
- days?: string;
18842
- /** @description Start of a custom date range (ISO 8601). */
18843
- start_date?: string;
18844
- /** @description End of a custom date range (ISO 8601). */
18845
- end_date?: string;
18846
- /** @description Filter by environment name. */
18847
- environment?: string;
18848
- /** @description Filter by test run ID. */
18849
- test_run_id?: string;
18850
- /** @description Case-insensitive substring filter on test name. */
18851
- test_name?: string;
18852
- /** @description Filter by success: `true` or `false`. Other values ignored. */
18853
- success?: string;
18854
- /** @description Filter by cache hit: `true` or `false`. Other values ignored. */
18855
- cache_hit?: string;
19629
+ /** @description Page number (1-indexed). */
19630
+ page?: number;
19631
+ /** @description Items per page. */
19632
+ per_page?: number;
19633
+ /** @description URL-encoded JSON array of generic filter conditions; malformed input is ignored. */
19634
+ filters?: string;
18856
19635
  };
18857
19636
  header?: never;
18858
19637
  path?: never;
@@ -18860,17 +19639,26 @@ export interface operations {
18860
19639
  };
18861
19640
  requestBody?: never;
18862
19641
  responses: {
18863
- /** @description Overlay-dismissal summary for the project. */
19642
+ /** @description Paginated list of tasks. */
18864
19643
  200: {
18865
19644
  headers: {
18866
19645
  [name: string]: unknown;
18867
19646
  };
18868
19647
  content: {
18869
- "application/json": components["schemas"]["OverlayDismissalSummaryResponse"];
19648
+ "application/json": components["schemas"]["TaskListResponse"];
18870
19649
  };
18871
19650
  };
18872
- /** @description Failed to query telemetry. */
18873
- 500: {
19651
+ /** @description Invalid request or missing project scope. */
19652
+ 400: {
19653
+ headers: {
19654
+ [name: string]: unknown;
19655
+ };
19656
+ content: {
19657
+ "application/json": components["schemas"]["ErrorResponse"];
19658
+ };
19659
+ };
19660
+ /** @description Project not found or inaccessible. */
19661
+ 404: {
18874
19662
  headers: {
18875
19663
  [name: string]: unknown;
18876
19664
  };
@@ -18880,38 +19668,266 @@ export interface operations {
18880
19668
  };
18881
19669
  };
18882
19670
  };
18883
- getOverlayDismissalEvents: {
19671
+ createTask: {
18884
19672
  parameters: {
18885
- query?: {
18886
- /** @description Page number (1-indexed). Default 1. */
18887
- page?: string;
18888
- /** @description Items per page (1-100). Default 50. */
18889
- per_page?: string;
18890
- /** @description Look-back window in days (1-90, default 7). Ignored when `start_date` and `end_date` are set. */
18891
- days?: string;
18892
- /** @description Start of a custom date range (ISO 8601). */
18893
- start_date?: string;
18894
- /** @description End of a custom date range (ISO 8601). */
18895
- end_date?: string;
18896
- /** @description Filter by environment name. */
18897
- environment?: string;
18898
- /** @description Filter by test run ID. */
18899
- test_run_id?: string;
18900
- /** @description Case-insensitive substring filter on test name. */
18901
- test_name?: string;
18902
- /** @description Filter by success: `true` or `false`. Other values ignored. */
18903
- success?: string;
18904
- /** @description Filter by cache hit: `true` or `false`. Other values ignored. */
18905
- cache_hit?: string;
18906
- };
19673
+ query?: never;
18907
19674
  header?: never;
18908
19675
  path?: never;
18909
19676
  cookie?: never;
18910
19677
  };
18911
- requestBody?: never;
19678
+ requestBody?: {
19679
+ content: {
19680
+ "application/json": components["schemas"]["CreateTaskRequest"];
19681
+ };
19682
+ };
18912
19683
  responses: {
18913
- /** @description Paginated overlay-dismissal events for the project. */
18914
- 200: {
19684
+ /** @description The created task and session. */
19685
+ 201: {
19686
+ headers: {
19687
+ [name: string]: unknown;
19688
+ };
19689
+ content: {
19690
+ "application/json": components["schemas"]["CreateTaskResponse"];
19691
+ };
19692
+ };
19693
+ /** @description Missing required fields or invalid input. */
19694
+ 400: {
19695
+ headers: {
19696
+ [name: string]: unknown;
19697
+ };
19698
+ content: {
19699
+ "application/json": components["schemas"]["CreateTaskError"];
19700
+ };
19701
+ };
19702
+ /** @description Project not found or inaccessible. */
19703
+ 404: {
19704
+ headers: {
19705
+ [name: string]: unknown;
19706
+ };
19707
+ content: {
19708
+ "application/json": components["schemas"]["ErrorResponse"];
19709
+ };
19710
+ };
19711
+ /** @description Failed to create task. */
19712
+ 500: {
19713
+ headers: {
19714
+ [name: string]: unknown;
19715
+ };
19716
+ content: {
19717
+ "application/json": components["schemas"]["ErrorResponse"];
19718
+ };
19719
+ };
19720
+ };
19721
+ };
19722
+ getTask: {
19723
+ parameters: {
19724
+ query?: never;
19725
+ header?: never;
19726
+ path: {
19727
+ /** @description Task ID. */
19728
+ id: number;
19729
+ };
19730
+ cookie?: never;
19731
+ };
19732
+ requestBody?: never;
19733
+ responses: {
19734
+ /** @description The task. */
19735
+ 200: {
19736
+ headers: {
19737
+ [name: string]: unknown;
19738
+ };
19739
+ content: {
19740
+ "application/json": components["schemas"]["TaskResponse"];
19741
+ };
19742
+ };
19743
+ /** @description Invalid task ID. */
19744
+ 400: {
19745
+ headers: {
19746
+ [name: string]: unknown;
19747
+ };
19748
+ content: {
19749
+ "application/json": components["schemas"]["ErrorResponse"];
19750
+ };
19751
+ };
19752
+ /** @description Task not found. */
19753
+ 404: {
19754
+ headers: {
19755
+ [name: string]: unknown;
19756
+ };
19757
+ content: {
19758
+ "application/json": components["schemas"]["ErrorResponse"];
19759
+ };
19760
+ };
19761
+ };
19762
+ };
19763
+ deleteTask: {
19764
+ parameters: {
19765
+ query?: never;
19766
+ header?: never;
19767
+ path: {
19768
+ /** @description Task ID. */
19769
+ id: number;
19770
+ };
19771
+ cookie?: never;
19772
+ };
19773
+ requestBody?: never;
19774
+ responses: {
19775
+ /** @description The deleted task ID. */
19776
+ 200: {
19777
+ headers: {
19778
+ [name: string]: unknown;
19779
+ };
19780
+ content: {
19781
+ "application/json": components["schemas"]["DeletedTaskResponse"];
19782
+ };
19783
+ };
19784
+ /** @description Invalid task ID. */
19785
+ 400: {
19786
+ headers: {
19787
+ [name: string]: unknown;
19788
+ };
19789
+ content: {
19790
+ "application/json": components["schemas"]["ErrorResponse"];
19791
+ };
19792
+ };
19793
+ /** @description Task not found or not deleted. */
19794
+ 404: {
19795
+ headers: {
19796
+ [name: string]: unknown;
19797
+ };
19798
+ content: {
19799
+ "application/json": components["schemas"]["ErrorResponse"];
19800
+ };
19801
+ };
19802
+ };
19803
+ };
19804
+ updateTask: {
19805
+ parameters: {
19806
+ query?: never;
19807
+ header?: never;
19808
+ path: {
19809
+ /** @description Task ID. */
19810
+ id: number;
19811
+ };
19812
+ cookie?: never;
19813
+ };
19814
+ requestBody?: {
19815
+ content: {
19816
+ "application/json": components["schemas"]["UpdateTaskRequest"];
19817
+ };
19818
+ };
19819
+ responses: {
19820
+ /** @description The updated task. */
19821
+ 200: {
19822
+ headers: {
19823
+ [name: string]: unknown;
19824
+ };
19825
+ content: {
19826
+ "application/json": components["schemas"]["UpdatedTaskResponse"];
19827
+ };
19828
+ };
19829
+ /** @description No fields to update or invalid input. */
19830
+ 400: {
19831
+ headers: {
19832
+ [name: string]: unknown;
19833
+ };
19834
+ content: {
19835
+ "application/json": components["schemas"]["ErrorResponse"];
19836
+ };
19837
+ };
19838
+ /** @description Task not found or not updated. */
19839
+ 404: {
19840
+ headers: {
19841
+ [name: string]: unknown;
19842
+ };
19843
+ content: {
19844
+ "application/json": components["schemas"]["ErrorResponse"];
19845
+ };
19846
+ };
19847
+ };
19848
+ };
19849
+ getOverlayDismissalSummary: {
19850
+ parameters: {
19851
+ query?: {
19852
+ /** @description Page number (1-indexed). Default 1. */
19853
+ page?: string;
19854
+ /** @description Items per page (1-100). Default 50. */
19855
+ per_page?: string;
19856
+ /** @description Look-back window in days (1-90, default 7). Ignored when `start_date` and `end_date` are set. */
19857
+ days?: string;
19858
+ /** @description Start of a custom date range (ISO 8601). */
19859
+ start_date?: string;
19860
+ /** @description End of a custom date range (ISO 8601). */
19861
+ end_date?: string;
19862
+ /** @description Filter by environment name. */
19863
+ environment?: string;
19864
+ /** @description Filter by test run ID. */
19865
+ test_run_id?: string;
19866
+ /** @description Case-insensitive substring filter on test name. */
19867
+ test_name?: string;
19868
+ /** @description Filter by success: `true` or `false`. Other values ignored. */
19869
+ success?: string;
19870
+ /** @description Filter by cache hit: `true` or `false`. Other values ignored. */
19871
+ cache_hit?: string;
19872
+ };
19873
+ header?: never;
19874
+ path?: never;
19875
+ cookie?: never;
19876
+ };
19877
+ requestBody?: never;
19878
+ responses: {
19879
+ /** @description Overlay-dismissal summary for the project. */
19880
+ 200: {
19881
+ headers: {
19882
+ [name: string]: unknown;
19883
+ };
19884
+ content: {
19885
+ "application/json": components["schemas"]["OverlayDismissalSummaryResponse"];
19886
+ };
19887
+ };
19888
+ /** @description Failed to query telemetry. */
19889
+ 500: {
19890
+ headers: {
19891
+ [name: string]: unknown;
19892
+ };
19893
+ content: {
19894
+ "application/json": components["schemas"]["ErrorResponse"];
19895
+ };
19896
+ };
19897
+ };
19898
+ };
19899
+ getOverlayDismissalEvents: {
19900
+ parameters: {
19901
+ query?: {
19902
+ /** @description Page number (1-indexed). Default 1. */
19903
+ page?: string;
19904
+ /** @description Items per page (1-100). Default 50. */
19905
+ per_page?: string;
19906
+ /** @description Look-back window in days (1-90, default 7). Ignored when `start_date` and `end_date` are set. */
19907
+ days?: string;
19908
+ /** @description Start of a custom date range (ISO 8601). */
19909
+ start_date?: string;
19910
+ /** @description End of a custom date range (ISO 8601). */
19911
+ end_date?: string;
19912
+ /** @description Filter by environment name. */
19913
+ environment?: string;
19914
+ /** @description Filter by test run ID. */
19915
+ test_run_id?: string;
19916
+ /** @description Case-insensitive substring filter on test name. */
19917
+ test_name?: string;
19918
+ /** @description Filter by success: `true` or `false`. Other values ignored. */
19919
+ success?: string;
19920
+ /** @description Filter by cache hit: `true` or `false`. Other values ignored. */
19921
+ cache_hit?: string;
19922
+ };
19923
+ header?: never;
19924
+ path?: never;
19925
+ cookie?: never;
19926
+ };
19927
+ requestBody?: never;
19928
+ responses: {
19929
+ /** @description Paginated overlay-dismissal events for the project. */
19930
+ 200: {
18915
19931
  headers: {
18916
19932
  [name: string]: unknown;
18917
19933
  };
@@ -18939,8 +19955,10 @@ export interface operations {
18939
19955
  page?: number;
18940
19956
  /** @description Items per page (capped at 200). Default 50. */
18941
19957
  per_page?: number;
18942
- /** @description Row order. `scheduled` (default) is manifest order — stable for a finished run. `recent` is most-recently-completed first, for the live view of an active run. */
18943
- order?: "scheduled" | "recent";
19958
+ /** @description Row order. `scheduled` (default) is manifest order — stable for a finished run. `recent` is most-recently-completed first, for the live view of an active run. `duration` is slowest first (total time across attempts). `start_time` is earliest first attempt first; skipped tests last. */
19959
+ order?: "scheduled" | "recent" | "duration" | "start_time";
19960
+ /** @description Case-insensitive substring search over the test's full name (project, file, describe blocks, title), Playwright test id and failing line. Combines with `status`, `order` and paging; `pagination.total` counts the matches. Failing lines are searchable only for cases recorded after this parameter was added. */
19961
+ q?: string;
18944
19962
  /** @description When `true`, also returns cases that have reported at least one attempt but still have retries outstanding, marked `is_retrying: true`. Their `status` is provisional (from the attempts so far) and can change when the remaining retries land. Defaults to `false`. */
18945
19963
  include_retrying?: "true" | "false";
18946
19964
  };
@@ -19102,7 +20120,7 @@ export interface operations {
19102
20120
  timing: {
19103
20121
  /** @enum {string} */
19104
20122
  type: "delay";
19105
- /** @description Relative delay using m/h/d units, such as "15m", "2h", or "1d". Min 15m, max 72h. */
20123
+ /** @description Relative delay using m/h/d units, such as "15m", "2h", or "1d". Min 5m, max 72h. */
19106
20124
  delay: string;
19107
20125
  } | {
19108
20126
  /** @enum {string} */
@@ -19281,6 +20299,15 @@ export interface operations {
19281
20299
  };
19282
20300
  };
19283
20301
  };
20302
+ /** @description Invalid alarm */
20303
+ 400: {
20304
+ headers: {
20305
+ [name: string]: unknown;
20306
+ };
20307
+ content: {
20308
+ "application/json": components["schemas"]["ErrorResponse"];
20309
+ };
20310
+ };
19284
20311
  /** @description Alarm not found */
19285
20312
  404: {
19286
20313
  headers: {
@@ -19485,7 +20512,7 @@ export interface operations {
19485
20512
  "application/json": components["schemas"]["ErrorResponse"];
19486
20513
  };
19487
20514
  };
19488
- /** @description Session is closed */
20515
+ /** @description Session is closed, or the test run already finished */
19489
20516
  409: {
19490
20517
  headers: {
19491
20518
  [name: string]: unknown;
@@ -19680,6 +20707,15 @@ export interface operations {
19680
20707
  "application/json": components["schemas"]["ErrorResponse"];
19681
20708
  };
19682
20709
  };
20710
+ /** @description The test run already finished */
20711
+ 409: {
20712
+ headers: {
20713
+ [name: string]: unknown;
20714
+ };
20715
+ content: {
20716
+ "application/json": components["schemas"]["ErrorResponse"];
20717
+ };
20718
+ };
19683
20719
  };
19684
20720
  };
19685
20721
  checkFailureGroupMatcherOverlap: {
@@ -19791,65 +20827,11 @@ export interface operations {
19791
20827
  };
19792
20828
  };
19793
20829
  };
19794
- shareFailureGroup: {
20830
+ matchFailureGroups: {
19795
20831
  parameters: {
19796
20832
  query?: never;
19797
20833
  header?: never;
19798
- path: {
19799
- /** @description Failure group ID. */
19800
- id: string;
19801
- };
19802
- cookie?: never;
19803
- };
19804
- requestBody?: {
19805
- content: {
19806
- "application/json": components["schemas"]["ShareFailureGroupRequest"];
19807
- };
19808
- };
19809
- responses: {
19810
- /** @description Diagnosis shared. */
19811
- 200: {
19812
- headers: {
19813
- [name: string]: unknown;
19814
- };
19815
- content: {
19816
- "application/json": components["schemas"]["FailureGroupShareResponse"];
19817
- };
19818
- };
19819
- /** @description Invalid request or destination. */
19820
- 400: {
19821
- headers: {
19822
- [name: string]: unknown;
19823
- };
19824
- content: {
19825
- "application/json": components["schemas"]["ErrorResponse"];
19826
- };
19827
- };
19828
- /** @description Group not found, or it has no diagnosis. */
19829
- 404: {
19830
- headers: {
19831
- [name: string]: unknown;
19832
- };
19833
- content: {
19834
- "application/json": components["schemas"]["ErrorResponse"];
19835
- };
19836
- };
19837
- /** @description Failed to post message. */
19838
- 500: {
19839
- headers: {
19840
- [name: string]: unknown;
19841
- };
19842
- content: {
19843
- "application/json": components["schemas"]["ErrorResponse"];
19844
- };
19845
- };
19846
- };
19847
- };
19848
- matchFailureGroups: {
19849
- parameters: {
19850
- query?: never;
19851
- header?: never;
19852
- path?: never;
20834
+ path?: never;
19853
20835
  cookie?: never;
19854
20836
  };
19855
20837
  requestBody?: {
@@ -20113,6 +21095,130 @@ export interface operations {
20113
21095
  };
20114
21096
  };
20115
21097
  };
21098
+ compareTraceAgainstPass: {
21099
+ parameters: {
21100
+ query?: never;
21101
+ header?: never;
21102
+ path?: never;
21103
+ cookie?: never;
21104
+ };
21105
+ requestBody?: {
21106
+ content: {
21107
+ "application/json": {
21108
+ /** @description Run holding the failed case. */
21109
+ test_run_id: number;
21110
+ /** @description Case (Playwright test id) to compare. */
21111
+ pw_test_id: string;
21112
+ /** @description Failed attempt to compare (retry_details.retries[].retryIndex). Default: the last failed attempt with a trace. */
21113
+ retry?: number;
21114
+ /** @description Passing attempt to compare against. Default: a passing retry in the same run, else the last pass before this run in the same environment, else in any environment (30-day history). */
21115
+ baseline?: {
21116
+ test_run_id: number;
21117
+ retry?: number;
21118
+ };
21119
+ /** @description Include the page as each side left the focus step (base64). Default false. */
21120
+ screenshots?: boolean;
21121
+ };
21122
+ };
21123
+ };
21124
+ responses: {
21125
+ /** @description The comparison. */
21126
+ 200: {
21127
+ headers: {
21128
+ [name: string]: unknown;
21129
+ };
21130
+ content: {
21131
+ "application/json": {
21132
+ /** @description Response payload. */
21133
+ data: {
21134
+ failure: {
21135
+ test_run_id: number;
21136
+ retry: number;
21137
+ file: string;
21138
+ };
21139
+ baseline: {
21140
+ test_run_id: number;
21141
+ retry: number;
21142
+ file: string;
21143
+ /** @enum {string} */
21144
+ source: "requested" | "same_run" | "same_environment" | "other_environment";
21145
+ environment_id: number | null;
21146
+ } | null;
21147
+ /** @description Other recent passes, newest first. */
21148
+ other_baselines: {
21149
+ test_run_id: number;
21150
+ environment_id: number | null;
21151
+ }[];
21152
+ /** @description The deepest step where the failed attempt stopped, else where it first diverged; null when the steps match. */
21153
+ focus: {
21154
+ /** @description Step position, nested steps dotted ("4.2"). */
21155
+ index: string;
21156
+ /**
21157
+ * @description matched: ran in both. failed: where the failed attempt stopped. extra: only in the failed attempt. missing: only in the passing attempt, before the failure. not-reached: only in the passing attempt, after the failure.
21158
+ * @enum {string}
21159
+ */
21160
+ kind: "matched" | "failed" | "extra" | "missing" | "not-reached";
21161
+ title: string;
21162
+ location: string | null;
21163
+ pass_ms: number | null;
21164
+ fail_ms: number | null;
21165
+ error: string | null;
21166
+ /** @description At least 2x and 1s slower than in the passing attempt. */
21167
+ slower: boolean;
21168
+ } | null;
21169
+ /** @description Aligned top-level steps, plus the nested steps on the path to the focus step. */
21170
+ rows: {
21171
+ /** @description Step position, nested steps dotted ("4.2"). */
21172
+ index: string;
21173
+ /**
21174
+ * @description matched: ran in both. failed: where the failed attempt stopped. extra: only in the failed attempt. missing: only in the passing attempt, before the failure. not-reached: only in the passing attempt, after the failure.
21175
+ * @enum {string}
21176
+ */
21177
+ kind: "matched" | "failed" | "extra" | "missing" | "not-reached";
21178
+ title: string;
21179
+ location: string | null;
21180
+ pass_ms: number | null;
21181
+ fail_ms: number | null;
21182
+ error: string | null;
21183
+ /** @description At least 2x and 1s slower than in the passing attempt. */
21184
+ slower: boolean;
21185
+ }[];
21186
+ screenshots: {
21187
+ pass: {
21188
+ mime_type: string;
21189
+ base64: string;
21190
+ } | null;
21191
+ fail: {
21192
+ mime_type: string;
21193
+ base64: string;
21194
+ } | null;
21195
+ } | null;
21196
+ /** @description Why there is no comparison (e.g. no passing attempt). */
21197
+ note: string | null;
21198
+ };
21199
+ };
21200
+ };
21201
+ };
21202
+ /** @description Test run, case, or trace not found. */
21203
+ 404: {
21204
+ headers: {
21205
+ [name: string]: unknown;
21206
+ };
21207
+ content: {
21208
+ "application/json": components["schemas"]["ErrorResponse"];
21209
+ };
21210
+ };
21211
+ /** @description Reading a trace failed. */
21212
+ 422: {
21213
+ headers: {
21214
+ [name: string]: unknown;
21215
+ };
21216
+ content: {
21217
+ "application/json": components["schemas"]["ErrorResponse"];
21218
+ };
21219
+ };
21220
+ };
21221
+ };
20116
21222
  queryTrace: {
20117
21223
  parameters: {
20118
21224
  query?: never;
@@ -21069,9 +22175,21 @@ export interface operations {
21069
22175
  content: {
21070
22176
  "application/json": {
21071
22177
  message?: string | null;
22178
+ /** @description Hive agent to run, as `<name>` (its `@latest` version) or `<name>@<version>`, e.g. `main@3`. Defaults to `main`. Rejected with a 400 when Hive does not serve that agent or version. The agent version decides the runtime, model, tools and prompt; `model` still overrides its model. List agents with `GET /api/hive/agents`. */
22179
+ agent?: string | null;
22180
+ /**
22181
+ * @deprecated
22182
+ * @description Deprecated alias of `agent`. The legacy values `chat` and `triage` mean the default agent.
22183
+ */
21072
22184
  mode?: string | null;
21073
- source?: string | null;
21074
- source_identifier?: string | null;
22185
+ /** @description What the session is about. Each test run must belong to the session's project, otherwise the request fails with a 400. */
22186
+ links?: {
22187
+ /** @enum {string} */
22188
+ entity_type: "test_run";
22189
+ entity_id: number;
22190
+ /** @description Tests in the run this session is scoped to. Omit for the whole run. */
22191
+ pw_test_ids?: string[] | null;
22192
+ }[] | null;
21075
22193
  model?: string | null;
21076
22194
  /** @description Deprecated. Sessions start on the project default branch; a different branch is added to `message` as an instruction to work from it. */
21077
22195
  base_branch?: string | null;
@@ -21148,8 +22266,6 @@ export interface operations {
21148
22266
  content: {
21149
22267
  "application/json": {
21150
22268
  title?: string;
21151
- source?: string;
21152
- source_identifier?: string;
21153
22269
  model?: string;
21154
22270
  impacted_tests?: unknown;
21155
22271
  };
@@ -21580,7 +22696,7 @@ export interface operations {
21580
22696
  * @description Whether the edge is a manager handoff or delegation.
21581
22697
  * @enum {string}
21582
22698
  */
21583
- relationship: "manager_handoff" | "delegation";
22699
+ relationship: "delegation" | "manager_handoff";
21584
22700
  }[];
21585
22701
  };
21586
22702
  };
@@ -21824,6 +22940,70 @@ export interface operations {
21824
22940
  };
21825
22941
  };
21826
22942
  };
22943
+ getChatSessionSandboxCommit: {
22944
+ parameters: {
22945
+ query?: {
22946
+ /** @description Also return the commit's unified diff. */
22947
+ include_diff?: "true" | "false";
22948
+ };
22949
+ header?: never;
22950
+ path: {
22951
+ /** @description Chat session ID. */
22952
+ id: number;
22953
+ /** @description Full or abbreviated commit SHA. */
22954
+ sha: string;
22955
+ };
22956
+ cookie?: never;
22957
+ };
22958
+ requestBody?: never;
22959
+ responses: {
22960
+ /** @description The commit. */
22961
+ 200: {
22962
+ headers: {
22963
+ [name: string]: unknown;
22964
+ };
22965
+ content: {
22966
+ "application/json": components["schemas"]["SandboxCommit"];
22967
+ };
22968
+ };
22969
+ /** @description Invalid request. */
22970
+ 400: {
22971
+ headers: {
22972
+ [name: string]: unknown;
22973
+ };
22974
+ content: {
22975
+ "application/json": components["schemas"]["ErrorResponse"];
22976
+ };
22977
+ };
22978
+ /** @description Sandbox or commit not found. */
22979
+ 404: {
22980
+ headers: {
22981
+ [name: string]: unknown;
22982
+ };
22983
+ content: {
22984
+ "application/json": components["schemas"]["SandboxErrorMessage"];
22985
+ };
22986
+ };
22987
+ /** @description Sandbox is paused. */
22988
+ 409: {
22989
+ headers: {
22990
+ [name: string]: unknown;
22991
+ };
22992
+ content: {
22993
+ "application/json": components["schemas"]["SandboxErrorMessage"];
22994
+ };
22995
+ };
22996
+ /** @description Reading the commit failed. */
22997
+ 502: {
22998
+ headers: {
22999
+ [name: string]: unknown;
23000
+ };
23001
+ content: {
23002
+ "application/json": components["schemas"]["SandboxErrorMessage"];
23003
+ };
23004
+ };
23005
+ };
23006
+ };
21827
23007
  controlChatSessionSandbox: {
21828
23008
  parameters: {
21829
23009
  query?: never;
@@ -22630,6 +23810,48 @@ export interface operations {
22630
23810
  };
22631
23811
  };
22632
23812
  };
23813
+ importLoomFile: {
23814
+ parameters: {
23815
+ query?: never;
23816
+ header?: never;
23817
+ path?: never;
23818
+ cookie?: never;
23819
+ };
23820
+ requestBody?: {
23821
+ content: {
23822
+ "application/json": components["schemas"]["ImportLoomFileRequest"];
23823
+ };
23824
+ };
23825
+ responses: {
23826
+ /** @description The imported video. */
23827
+ 200: {
23828
+ headers: {
23829
+ [name: string]: unknown;
23830
+ };
23831
+ content: {
23832
+ "application/json": components["schemas"]["ImportLoomFileResponse"];
23833
+ };
23834
+ };
23835
+ /** @description Invalid request. */
23836
+ 400: {
23837
+ headers: {
23838
+ [name: string]: unknown;
23839
+ };
23840
+ content: {
23841
+ "application/json": components["schemas"]["ErrorResponse"];
23842
+ };
23843
+ };
23844
+ /** @description Failed to process the Loom video. */
23845
+ 500: {
23846
+ headers: {
23847
+ [name: string]: unknown;
23848
+ };
23849
+ content: {
23850
+ "application/json": components["schemas"]["ErrorResponse"];
23851
+ };
23852
+ };
23853
+ };
23854
+ };
22633
23855
  evaluateFlags: {
22634
23856
  parameters: {
22635
23857
  query: {
@@ -23778,45 +25000,40 @@ export interface operations {
23778
25000
  };
23779
25001
  };
23780
25002
  };
23781
- gsheetDriveWebhook: {
25003
+ listHiveAgents: {
23782
25004
  parameters: {
23783
25005
  query?: never;
23784
- header?: {
23785
- /** @description Drive notification channel ID. */
23786
- "x-goog-channel-id"?: string;
23787
- /** @description Drive resource state (e.g. `sync`, `update`). */
23788
- "x-goog-resource-state"?: string;
23789
- /** @description Per-channel HMAC token authenticating the push. */
23790
- "x-goog-channel-token"?: string;
23791
- };
25006
+ header?: never;
23792
25007
  path?: never;
23793
25008
  cookie?: never;
23794
25009
  };
23795
25010
  requestBody?: never;
23796
25011
  responses: {
23797
- /** @description Notification acknowledged. */
25012
+ /** @description The available Hive agents. */
23798
25013
  200: {
23799
25014
  headers: {
23800
25015
  [name: string]: unknown;
23801
25016
  };
23802
- content?: never;
25017
+ content: {
25018
+ "application/json": components["schemas"]["HiveAgentsResponse"];
25019
+ };
23803
25020
  };
23804
- /** @description Missing channel ID. */
23805
- 400: {
25021
+ /** @description Hive is not configured or the request failed. */
25022
+ 500: {
23806
25023
  headers: {
23807
25024
  [name: string]: unknown;
23808
25025
  };
23809
25026
  content: {
23810
- "application/json": components["schemas"]["GsheetPlainError"];
25027
+ "application/json": components["schemas"]["ErrorResponse"];
23811
25028
  };
23812
25029
  };
23813
- /** @description Invalid channel token. */
23814
- 401: {
25030
+ /** @description Hive returned an error response. */
25031
+ 502: {
23815
25032
  headers: {
23816
25033
  [name: string]: unknown;
23817
25034
  };
23818
25035
  content: {
23819
- "application/json": components["schemas"]["GsheetPlainError"];
25036
+ "application/json": components["schemas"]["ErrorResponse"];
23820
25037
  };
23821
25038
  };
23822
25039
  };
@@ -25893,6 +27110,8 @@ export interface operations {
25893
27110
  per_page?: number;
25894
27111
  /** @description Filter to memories with this exact name. */
25895
27112
  name?: string;
27113
+ /** @description Only memories updated after this ISO 8601 instant. Creates, edits and deletes all move `updated_at`; combine with `include_deleted=true` to see deletions too. */
27114
+ updated_since?: string;
25896
27115
  /** @description When `true`, soft-deleted memories are included in the listing (marked via `deleted_at`). Defaults to `false`. */
25897
27116
  include_deleted?: "true" | "false";
25898
27117
  /** @description When `false`, each memory's `content` is returned as an empty string (skipped for a smaller/faster response). Use for name+description index views. Defaults to `true`. */
@@ -26035,7 +27254,11 @@ export interface operations {
26035
27254
  };
26036
27255
  cookie?: never;
26037
27256
  };
26038
- requestBody?: never;
27257
+ requestBody?: {
27258
+ content: {
27259
+ "application/json": components["schemas"]["DeleteMemoryRequest"];
27260
+ };
27261
+ };
26039
27262
  responses: {
26040
27263
  /** @description Deletion succeeded. */
26041
27264
  200: {
@@ -26166,13 +27389,11 @@ export interface operations {
26166
27389
  };
26167
27390
  };
26168
27391
  };
26169
- listMemoryClassifications: {
27392
+ listMemoryChanges: {
26170
27393
  parameters: {
26171
- query?: {
26172
- /** @description Limit to memories in this project. Defaults to all projects. */
26173
- project_id?: number;
26174
- /** @description Vocabulary version to read labels for. Defaults to the current vocabulary. */
26175
- vocabulary_version?: number;
27394
+ query: {
27395
+ /** @description Chat session whose memory changes to list. */
27396
+ chat_session_id: number;
26176
27397
  };
26177
27398
  header?: never;
26178
27399
  path?: never;
@@ -26180,16 +27401,16 @@ export interface operations {
26180
27401
  };
26181
27402
  requestBody?: never;
26182
27403
  responses: {
26183
- /** @description Memory classifications. */
27404
+ /** @description The session's memory changes. */
26184
27405
  200: {
26185
27406
  headers: {
26186
27407
  [name: string]: unknown;
26187
27408
  };
26188
27409
  content: {
26189
- "application/json": components["schemas"]["MemoryClassificationsResponse"];
27410
+ "application/json": components["schemas"]["MemoryChangesResponse"];
26190
27411
  };
26191
27412
  };
26192
- /** @description Invalid request. */
27413
+ /** @description Invalid request or missing project scope. */
26193
27414
  400: {
26194
27415
  headers: {
26195
27416
  [name: string]: unknown;
@@ -26198,27 +27419,41 @@ export interface operations {
26198
27419
  "application/json": components["schemas"]["ErrorResponse"];
26199
27420
  };
26200
27421
  };
27422
+ /** @description Project not found or not accessible. */
27423
+ 404: {
27424
+ headers: {
27425
+ [name: string]: unknown;
27426
+ };
27427
+ content: {
27428
+ "application/json": components["schemas"]["ErrorResponse"];
27429
+ };
27430
+ };
26201
27431
  };
26202
27432
  };
26203
- getProjectMetricsLast7Days: {
27433
+ listMemoryClassifications: {
26204
27434
  parameters: {
26205
- query?: never;
27435
+ query?: {
27436
+ /** @description Limit to memories in this project. Defaults to all projects. */
27437
+ project_id?: number;
27438
+ /** @description Vocabulary version to read labels for. Defaults to the current vocabulary. */
27439
+ vocabulary_version?: number;
27440
+ };
26206
27441
  header?: never;
26207
27442
  path?: never;
26208
27443
  cookie?: never;
26209
27444
  };
26210
27445
  requestBody?: never;
26211
27446
  responses: {
26212
- /** @description Project metrics for the last 7 days. */
27447
+ /** @description Memory classifications. */
26213
27448
  200: {
26214
27449
  headers: {
26215
27450
  [name: string]: unknown;
26216
27451
  };
26217
27452
  content: {
26218
- "application/json": components["schemas"]["ProjectMetricsResponse"];
27453
+ "application/json": components["schemas"]["MemoryClassificationsResponse"];
26219
27454
  };
26220
27455
  };
26221
- /** @description Invalid request or missing project scope. */
27456
+ /** @description Invalid request. */
26222
27457
  400: {
26223
27458
  headers: {
26224
27459
  [name: string]: unknown;
@@ -26227,7 +27462,79 @@ export interface operations {
26227
27462
  "application/json": components["schemas"]["ErrorResponse"];
26228
27463
  };
26229
27464
  };
26230
- /** @description Project not found. */
27465
+ };
27466
+ };
27467
+ getMemoryUsage: {
27468
+ parameters: {
27469
+ query?: {
27470
+ /** @description Window in days back from now. Defaults to 7. */
27471
+ days?: number;
27472
+ /** @description Rows per list. Defaults to 10. */
27473
+ limit?: number;
27474
+ };
27475
+ header?: never;
27476
+ path?: never;
27477
+ cookie?: never;
27478
+ };
27479
+ requestBody?: never;
27480
+ responses: {
27481
+ /** @description Memory usage. */
27482
+ 200: {
27483
+ headers: {
27484
+ [name: string]: unknown;
27485
+ };
27486
+ content: {
27487
+ "application/json": components["schemas"]["MemoryUsageResponse"];
27488
+ };
27489
+ };
27490
+ /** @description Invalid request or missing project scope. */
27491
+ 400: {
27492
+ headers: {
27493
+ [name: string]: unknown;
27494
+ };
27495
+ content: {
27496
+ "application/json": components["schemas"]["ErrorResponse"];
27497
+ };
27498
+ };
27499
+ /** @description Project not found or not accessible. */
27500
+ 404: {
27501
+ headers: {
27502
+ [name: string]: unknown;
27503
+ };
27504
+ content: {
27505
+ "application/json": components["schemas"]["ErrorResponse"];
27506
+ };
27507
+ };
27508
+ };
27509
+ };
27510
+ getProjectMetricsLast7Days: {
27511
+ parameters: {
27512
+ query?: never;
27513
+ header?: never;
27514
+ path?: never;
27515
+ cookie?: never;
27516
+ };
27517
+ requestBody?: never;
27518
+ responses: {
27519
+ /** @description Project metrics for the last 7 days. */
27520
+ 200: {
27521
+ headers: {
27522
+ [name: string]: unknown;
27523
+ };
27524
+ content: {
27525
+ "application/json": components["schemas"]["ProjectMetricsResponse"];
27526
+ };
27527
+ };
27528
+ /** @description Invalid request or missing project scope. */
27529
+ 400: {
27530
+ headers: {
27531
+ [name: string]: unknown;
27532
+ };
27533
+ content: {
27534
+ "application/json": components["schemas"]["ErrorResponse"];
27535
+ };
27536
+ };
27537
+ /** @description Project not found. */
26231
27538
  404: {
26232
27539
  headers: {
26233
27540
  [name: string]: unknown;
@@ -27610,7 +28917,6 @@ export interface operations {
27610
28917
  content: {
27611
28918
  "application/json": {
27612
28919
  name?: string;
27613
- has_email_reporting?: boolean;
27614
28920
  default_branch?: string;
27615
28921
  protected_branches?: string[];
27616
28922
  /**
@@ -28197,15 +29503,6 @@ export interface operations {
28197
29503
  "application/json": components["schemas"]["StartRepoTransferBadRequest"];
28198
29504
  };
28199
29505
  };
28200
- /** @description The repo ownership add-on is not enabled for this project. */
28201
- 403: {
28202
- headers: {
28203
- [name: string]: unknown;
28204
- };
28205
- content: {
28206
- "application/json": components["schemas"]["RepoTransferCodedError"];
28207
- };
28208
- };
28209
29506
  /** @description Project not found. */
28210
29507
  404: {
28211
29508
  headers: {
@@ -28556,66 +29853,8 @@ export interface operations {
28556
29853
  "application/json": components["schemas"]["ErrorResponse"];
28557
29854
  };
28558
29855
  };
28559
- /** @description KV store not configured. */
28560
- 503: {
28561
- headers: {
28562
- [name: string]: unknown;
28563
- };
28564
- content: {
28565
- "application/json": components["schemas"]["ErrorResponse"];
28566
- };
28567
- };
28568
- };
28569
- };
28570
- mergeBranches: {
28571
- parameters: {
28572
- query?: never;
28573
- header?: never;
28574
- path?: never;
28575
- cookie?: never;
28576
- };
28577
- requestBody?: {
28578
- content: {
28579
- "application/json": {
28580
- /** @description Branch to merge into. */
28581
- base_branch: string;
28582
- /** @description Branch to merge from. */
28583
- head_branch?: string;
28584
- /** @description Deprecated alias for `head_branch`. */
28585
- branch_to_merge?: string;
28586
- };
28587
- };
28588
- };
28589
- responses: {
28590
- /** @description Merge result. */
28591
- 200: {
28592
- headers: {
28593
- [name: string]: unknown;
28594
- };
28595
- content: {
28596
- "application/json": components["schemas"]["MergeBranchesResponse"];
28597
- };
28598
- };
28599
- /** @description Invalid request. */
28600
- 400: {
28601
- headers: {
28602
- [name: string]: unknown;
28603
- };
28604
- content: {
28605
- "application/json": components["schemas"]["ErrorResponse"];
28606
- };
28607
- };
28608
- /** @description Project not found. */
28609
- 404: {
28610
- headers: {
28611
- [name: string]: unknown;
28612
- };
28613
- content: {
28614
- "application/json": components["schemas"]["ErrorResponse"];
28615
- };
28616
- };
28617
- /** @description Merge failed. */
28618
- 500: {
29856
+ /** @description Value larger than 2 MB. */
29857
+ 413: {
28619
29858
  headers: {
28620
29859
  [name: string]: unknown;
28621
29860
  };
@@ -28623,271 +29862,7 @@ export interface operations {
28623
29862
  "application/json": components["schemas"]["ErrorResponse"];
28624
29863
  };
28625
29864
  };
28626
- };
28627
- };
28628
- getProjectStaticIpProxyToken: {
28629
- parameters: {
28630
- query?: never;
28631
- header?: never;
28632
- path?: never;
28633
- cookie?: never;
28634
- };
28635
- requestBody?: never;
28636
- responses: {
28637
- /** @description Static-IP proxy credentials. */
28638
- 200: {
28639
- headers: {
28640
- [name: string]: unknown;
28641
- };
28642
- content: {
28643
- "application/json": components["schemas"]["ProjectStaticIpProxyTokenResponse"];
28644
- };
28645
- };
28646
- /** @description Project does not have the static IP proxy add-on. */
28647
- 403: {
28648
- headers: {
28649
- [name: string]: unknown;
28650
- };
28651
- content: {
28652
- "application/json": components["schemas"]["ErrorResponse"];
28653
- };
28654
- };
28655
- /** @description Token minting is not configured on this environment. */
28656
- 503: {
28657
- headers: {
28658
- [name: string]: unknown;
28659
- };
28660
- content: {
28661
- "application/json": components["schemas"]["ErrorResponse"];
28662
- };
28663
- };
28664
- };
28665
- };
28666
- razorpayPaymentsWebhook: {
28667
- parameters: {
28668
- query?: never;
28669
- header?: never;
28670
- path?: never;
28671
- cookie?: never;
28672
- };
28673
- requestBody?: {
28674
- content: {
28675
- "application/json": {
28676
- /** @description Razorpay event type. */
28677
- event: string;
28678
- /** @description Razorpay event payload. */
28679
- payload: {
28680
- payment?: {
28681
- entity: {
28682
- id: string;
28683
- order_id: string;
28684
- amount: number;
28685
- currency: string;
28686
- status: string;
28687
- };
28688
- };
28689
- };
28690
- };
28691
- };
28692
- };
28693
- responses: {
28694
- /** @description Event acknowledged. */
28695
- 200: {
28696
- headers: {
28697
- [name: string]: unknown;
28698
- };
28699
- content: {
28700
- "application/json": components["schemas"]["RazorpayWebhookAckResponse"];
28701
- };
28702
- };
28703
- /** @description Missing or invalid webhook signature. */
28704
- 401: {
28705
- headers: {
28706
- [name: string]: unknown;
28707
- };
28708
- content: {
28709
- "application/json": components["schemas"]["ErrorResponse"];
28710
- };
28711
- };
28712
- /** @description Razorpay API credentials are not configured. */
28713
- 500: {
28714
- headers: {
28715
- [name: string]: unknown;
28716
- };
28717
- content: {
28718
- "application/json": components["schemas"]["ErrorResponse"];
28719
- };
28720
- };
28721
- };
28722
- };
28723
- getRealtimeToken: {
28724
- parameters: {
28725
- query?: never;
28726
- header?: never;
28727
- path?: never;
28728
- cookie?: never;
28729
- };
28730
- requestBody?: never;
28731
- responses: {
28732
- /** @description The issued realtime token. */
28733
- 200: {
28734
- headers: {
28735
- [name: string]: unknown;
28736
- };
28737
- content: {
28738
- "application/json": components["schemas"]["RealtimeTokenResponse"];
28739
- };
28740
- };
28741
- /** @description Realtime service is not configured. */
28742
- 503: {
28743
- headers: {
28744
- [name: string]: unknown;
28745
- };
28746
- content: {
28747
- "application/json": components["schemas"]["RealtimeUnavailableResponse"];
28748
- };
28749
- };
28750
- };
28751
- };
28752
- createRealtimeToken: {
28753
- parameters: {
28754
- query?: never;
28755
- header?: never;
28756
- path?: never;
28757
- cookie?: never;
28758
- };
28759
- requestBody?: {
28760
- content: {
28761
- "application/json": components["schemas"]["CreateRealtimeTokenBody"];
28762
- };
28763
- };
28764
- responses: {
28765
- /** @description The issued token and the channels it opens. */
28766
- 200: {
28767
- headers: {
28768
- [name: string]: unknown;
28769
- };
28770
- content: {
28771
- "application/json": components["schemas"]["ScopedRealtimeTokenResponse"];
28772
- };
28773
- };
28774
- /** @description Invalid request. */
28775
- 400: {
28776
- headers: {
28777
- [name: string]: unknown;
28778
- };
28779
- content: {
28780
- "application/json": components["schemas"]["ErrorResponse"];
28781
- };
28782
- };
28783
- /** @description None of the requested channels is accessible. */
28784
- 403: {
28785
- headers: {
28786
- [name: string]: unknown;
28787
- };
28788
- content: {
28789
- "application/json": components["schemas"]["ErrorResponse"];
28790
- };
28791
- };
28792
- /** @description Realtime service is not configured. */
28793
- 503: {
28794
- headers: {
28795
- [name: string]: unknown;
28796
- };
28797
- content: {
28798
- "application/json": components["schemas"]["RealtimeUnavailableResponse"];
28799
- };
28800
- };
28801
- };
28802
- };
28803
- listRecentPages: {
28804
- parameters: {
28805
- query?: never;
28806
- header?: never;
28807
- path?: never;
28808
- cookie?: never;
28809
- };
28810
- requestBody?: never;
28811
- responses: {
28812
- /** @description Recently viewed dashboard destinations. */
28813
- 200: {
28814
- headers: {
28815
- [name: string]: unknown;
28816
- };
28817
- content: {
28818
- "application/json": components["schemas"]["RecentPagesResponse"];
28819
- };
28820
- };
28821
- /** @description Only signed-in users can access recent pages. */
28822
- 403: {
28823
- headers: {
28824
- [name: string]: unknown;
28825
- };
28826
- content: {
28827
- "application/json": components["schemas"]["ErrorResponse"];
28828
- };
28829
- };
28830
- /** @description Recent pages storage is unavailable. */
28831
- 503: {
28832
- headers: {
28833
- [name: string]: unknown;
28834
- };
28835
- content: {
28836
- "application/json": components["schemas"]["ErrorResponse"];
28837
- };
28838
- };
28839
- };
28840
- };
28841
- recordRecentPage: {
28842
- parameters: {
28843
- query?: never;
28844
- header?: never;
28845
- path?: never;
28846
- cookie?: never;
28847
- };
28848
- requestBody?: {
28849
- content: {
28850
- "application/json": components["schemas"]["RecordRecentPageRequest"];
28851
- };
28852
- };
28853
- responses: {
28854
- /** @description The recorded dashboard destination. */
28855
- 200: {
28856
- headers: {
28857
- [name: string]: unknown;
28858
- };
28859
- content: {
28860
- "application/json": components["schemas"]["RecordRecentPageResponse"];
28861
- };
28862
- };
28863
- /** @description The destination is invalid. */
28864
- 400: {
28865
- headers: {
28866
- [name: string]: unknown;
28867
- };
28868
- content: {
28869
- "application/json": components["schemas"]["ErrorResponse"];
28870
- };
28871
- };
28872
- /** @description Only signed-in users can record recent pages. */
28873
- 403: {
28874
- headers: {
28875
- [name: string]: unknown;
28876
- };
28877
- content: {
28878
- "application/json": components["schemas"]["ErrorResponse"];
28879
- };
28880
- };
28881
- /** @description Project not found. */
28882
- 404: {
28883
- headers: {
28884
- [name: string]: unknown;
28885
- };
28886
- content: {
28887
- "application/json": components["schemas"]["ErrorResponse"];
28888
- };
28889
- };
28890
- /** @description Recent pages storage is unavailable. */
29865
+ /** @description KV store not configured. */
28891
29866
  503: {
28892
29867
  headers: {
28893
29868
  [name: string]: unknown;
@@ -28898,72 +29873,7 @@ export interface operations {
28898
29873
  };
28899
29874
  };
28900
29875
  };
28901
- listReporterTypes: {
28902
- parameters: {
28903
- query?: never;
28904
- header?: never;
28905
- path?: never;
28906
- cookie?: never;
28907
- };
28908
- requestBody?: never;
28909
- responses: {
28910
- /** @description Reporter capabilities. */
28911
- 200: {
28912
- headers: {
28913
- [name: string]: unknown;
28914
- };
28915
- content: {
28916
- "application/json": components["schemas"]["ReporterTypesResponse"];
28917
- };
28918
- };
28919
- };
28920
- };
28921
- listRequests: {
28922
- parameters: {
28923
- query?: {
28924
- /** @description Page number (1-indexed). */
28925
- page?: number;
28926
- /** @description Items per page. */
28927
- per_page?: number;
28928
- /** @description URL-encoded JSON array of generic filter conditions; malformed input is ignored. */
28929
- filters?: string;
28930
- };
28931
- header?: never;
28932
- path?: never;
28933
- cookie?: never;
28934
- };
28935
- requestBody?: never;
28936
- responses: {
28937
- /** @description Paginated list of requests. */
28938
- 200: {
28939
- headers: {
28940
- [name: string]: unknown;
28941
- };
28942
- content: {
28943
- "application/json": components["schemas"]["RequestListResponse"];
28944
- };
28945
- };
28946
- /** @description Invalid request or missing project scope. */
28947
- 400: {
28948
- headers: {
28949
- [name: string]: unknown;
28950
- };
28951
- content: {
28952
- "application/json": components["schemas"]["ErrorResponse"];
28953
- };
28954
- };
28955
- /** @description Project not found or inaccessible. */
28956
- 404: {
28957
- headers: {
28958
- [name: string]: unknown;
28959
- };
28960
- content: {
28961
- "application/json": components["schemas"]["ErrorResponse"];
28962
- };
28963
- };
28964
- };
28965
- };
28966
- createRequest: {
29876
+ mergeBranches: {
28967
29877
  parameters: {
28968
29878
  query?: never;
28969
29879
  header?: never;
@@ -28973,42 +29883,35 @@ export interface operations {
28973
29883
  requestBody?: {
28974
29884
  content: {
28975
29885
  "application/json": {
28976
- /** @description Origin of the request (e.g. `linear`, `slack`). */
28977
- source?: string;
28978
- /** @description External identifier for the request in its source system. */
28979
- source_identifier?: string;
28980
- /** @description Request title. */
28981
- title?: string;
28982
- /** @description Request description. */
28983
- description?: string;
28984
- /**
28985
- * @description Initial status; defaults to `open`.
28986
- * @enum {string}
28987
- */
28988
- status?: "draft" | "open" | "in-review" | "closed" | "resolved";
29886
+ /** @description Branch to merge into. */
29887
+ base_branch: string;
29888
+ /** @description Branch to merge from. */
29889
+ head_branch?: string;
29890
+ /** @description Deprecated alias for `head_branch`. */
29891
+ branch_to_merge?: string;
28989
29892
  };
28990
29893
  };
28991
29894
  };
28992
29895
  responses: {
28993
- /** @description The created request and session. */
28994
- 201: {
29896
+ /** @description Merge result. */
29897
+ 200: {
28995
29898
  headers: {
28996
29899
  [name: string]: unknown;
28997
29900
  };
28998
29901
  content: {
28999
- "application/json": components["schemas"]["CreateRequestResponse"];
29902
+ "application/json": components["schemas"]["MergeBranchesResponse"];
29000
29903
  };
29001
29904
  };
29002
- /** @description Missing required fields or invalid input. */
29905
+ /** @description Invalid request. */
29003
29906
  400: {
29004
29907
  headers: {
29005
29908
  [name: string]: unknown;
29006
29909
  };
29007
29910
  content: {
29008
- "application/json": components["schemas"]["CreateRequestError"];
29911
+ "application/json": components["schemas"]["ErrorResponse"];
29009
29912
  };
29010
29913
  };
29011
- /** @description Project not found or inaccessible. */
29914
+ /** @description Project not found. */
29012
29915
  404: {
29013
29916
  headers: {
29014
29917
  [name: string]: unknown;
@@ -29017,7 +29920,7 @@ export interface operations {
29017
29920
  "application/json": components["schemas"]["ErrorResponse"];
29018
29921
  };
29019
29922
  };
29020
- /** @description Failed to create request. */
29923
+ /** @description Merge failed. */
29021
29924
  500: {
29022
29925
  headers: {
29023
29926
  [name: string]: unknown;
@@ -29028,29 +29931,26 @@ export interface operations {
29028
29931
  };
29029
29932
  };
29030
29933
  };
29031
- getRequest: {
29934
+ getProjectStaticIpProxyToken: {
29032
29935
  parameters: {
29033
29936
  query?: never;
29034
29937
  header?: never;
29035
- path: {
29036
- /** @description Request ID. */
29037
- id: number;
29038
- };
29938
+ path?: never;
29039
29939
  cookie?: never;
29040
29940
  };
29041
29941
  requestBody?: never;
29042
29942
  responses: {
29043
- /** @description The request. */
29943
+ /** @description Static-IP proxy credentials. */
29044
29944
  200: {
29045
29945
  headers: {
29046
29946
  [name: string]: unknown;
29047
29947
  };
29048
29948
  content: {
29049
- "application/json": components["schemas"]["RequestResponse"];
29949
+ "application/json": components["schemas"]["ProjectStaticIpProxyTokenResponse"];
29050
29950
  };
29051
29951
  };
29052
- /** @description Invalid request ID. */
29053
- 400: {
29952
+ /** @description Project does not have the static IP proxy add-on. */
29953
+ 403: {
29054
29954
  headers: {
29055
29955
  [name: string]: unknown;
29056
29956
  };
@@ -29058,8 +29958,8 @@ export interface operations {
29058
29958
  "application/json": components["schemas"]["ErrorResponse"];
29059
29959
  };
29060
29960
  };
29061
- /** @description Request not found. */
29062
- 404: {
29961
+ /** @description Token minting is not configured on this environment. */
29962
+ 503: {
29063
29963
  headers: {
29064
29964
  [name: string]: unknown;
29065
29965
  };
@@ -29069,29 +29969,45 @@ export interface operations {
29069
29969
  };
29070
29970
  };
29071
29971
  };
29072
- deleteRequest: {
29972
+ razorpayPaymentsWebhook: {
29073
29973
  parameters: {
29074
29974
  query?: never;
29075
29975
  header?: never;
29076
- path: {
29077
- /** @description Request ID. */
29078
- id: number;
29079
- };
29976
+ path?: never;
29080
29977
  cookie?: never;
29081
29978
  };
29082
- requestBody?: never;
29979
+ requestBody?: {
29980
+ content: {
29981
+ "application/json": {
29982
+ /** @description Razorpay event type. */
29983
+ event: string;
29984
+ /** @description Razorpay event payload. */
29985
+ payload: {
29986
+ payment?: {
29987
+ entity: {
29988
+ id: string;
29989
+ order_id: string;
29990
+ amount: number;
29991
+ currency: string;
29992
+ status: string;
29993
+ };
29994
+ };
29995
+ };
29996
+ };
29997
+ };
29998
+ };
29083
29999
  responses: {
29084
- /** @description The deleted request ID. */
30000
+ /** @description Event acknowledged. */
29085
30001
  200: {
29086
30002
  headers: {
29087
30003
  [name: string]: unknown;
29088
30004
  };
29089
30005
  content: {
29090
- "application/json": components["schemas"]["DeletedRequestResponse"];
30006
+ "application/json": components["schemas"]["RazorpayWebhookAckResponse"];
29091
30007
  };
29092
30008
  };
29093
- /** @description Invalid request ID. */
29094
- 400: {
30009
+ /** @description Missing or invalid webhook signature. */
30010
+ 401: {
29095
30011
  headers: {
29096
30012
  [name: string]: unknown;
29097
30013
  };
@@ -29099,8 +30015,8 @@ export interface operations {
29099
30015
  "application/json": components["schemas"]["ErrorResponse"];
29100
30016
  };
29101
30017
  };
29102
- /** @description Request not found or not deleted. */
29103
- 404: {
30018
+ /** @description Razorpay API credentials are not configured. */
30019
+ 500: {
29104
30020
  headers: {
29105
30021
  [name: string]: unknown;
29106
30022
  };
@@ -29110,42 +30026,58 @@ export interface operations {
29110
30026
  };
29111
30027
  };
29112
30028
  };
29113
- updateRequest: {
30029
+ getRealtimeToken: {
29114
30030
  parameters: {
29115
30031
  query?: never;
29116
30032
  header?: never;
29117
- path: {
29118
- /** @description Request ID. */
29119
- id: number;
30033
+ path?: never;
30034
+ cookie?: never;
30035
+ };
30036
+ requestBody?: never;
30037
+ responses: {
30038
+ /** @description The issued realtime token. */
30039
+ 200: {
30040
+ headers: {
30041
+ [name: string]: unknown;
30042
+ };
30043
+ content: {
30044
+ "application/json": components["schemas"]["RealtimeTokenResponse"];
30045
+ };
30046
+ };
30047
+ /** @description Realtime service is not configured. */
30048
+ 503: {
30049
+ headers: {
30050
+ [name: string]: unknown;
30051
+ };
30052
+ content: {
30053
+ "application/json": components["schemas"]["RealtimeUnavailableResponse"];
30054
+ };
29120
30055
  };
30056
+ };
30057
+ };
30058
+ createRealtimeToken: {
30059
+ parameters: {
30060
+ query?: never;
30061
+ header?: never;
30062
+ path?: never;
29121
30063
  cookie?: never;
29122
30064
  };
29123
30065
  requestBody?: {
29124
30066
  content: {
29125
- "application/json": {
29126
- /** @description New request title. */
29127
- title?: string;
29128
- /** @description New request description. */
29129
- description?: string;
29130
- /**
29131
- * @description New request status.
29132
- * @enum {string}
29133
- */
29134
- status?: "draft" | "open" | "in-review" | "closed" | "resolved";
29135
- };
30067
+ "application/json": components["schemas"]["CreateRealtimeTokenBody"];
29136
30068
  };
29137
30069
  };
29138
30070
  responses: {
29139
- /** @description The updated request. */
30071
+ /** @description The issued token and the channels it opens. */
29140
30072
  200: {
29141
30073
  headers: {
29142
30074
  [name: string]: unknown;
29143
30075
  };
29144
30076
  content: {
29145
- "application/json": components["schemas"]["UpdatedRequestResponse"];
30077
+ "application/json": components["schemas"]["ScopedRealtimeTokenResponse"];
29146
30078
  };
29147
30079
  };
29148
- /** @description No fields to update or invalid input. */
30080
+ /** @description Invalid request. */
29149
30081
  400: {
29150
30082
  headers: {
29151
30083
  [name: string]: unknown;
@@ -29154,8 +30086,8 @@ export interface operations {
29154
30086
  "application/json": components["schemas"]["ErrorResponse"];
29155
30087
  };
29156
30088
  };
29157
- /** @description Request not found or not updated. */
29158
- 404: {
30089
+ /** @description None of the requested channels is accessible. */
30090
+ 403: {
29159
30091
  headers: {
29160
30092
  [name: string]: unknown;
29161
30093
  };
@@ -29163,31 +30095,37 @@ export interface operations {
29163
30095
  "application/json": components["schemas"]["ErrorResponse"];
29164
30096
  };
29165
30097
  };
30098
+ /** @description Realtime service is not configured. */
30099
+ 503: {
30100
+ headers: {
30101
+ [name: string]: unknown;
30102
+ };
30103
+ content: {
30104
+ "application/json": components["schemas"]["RealtimeUnavailableResponse"];
30105
+ };
30106
+ };
29166
30107
  };
29167
30108
  };
29168
- listRequestChatSessions: {
30109
+ listRecentPages: {
29169
30110
  parameters: {
29170
30111
  query?: never;
29171
30112
  header?: never;
29172
- path: {
29173
- /** @description Request ID. */
29174
- id: number;
29175
- };
30113
+ path?: never;
29176
30114
  cookie?: never;
29177
30115
  };
29178
30116
  requestBody?: never;
29179
30117
  responses: {
29180
- /** @description Chat sessions for the request (or an empty-state message). */
30118
+ /** @description Recently viewed dashboard destinations. */
29181
30119
  200: {
29182
30120
  headers: {
29183
30121
  [name: string]: unknown;
29184
30122
  };
29185
30123
  content: {
29186
- "application/json": components["schemas"]["RequestChatSessionsResponse"];
30124
+ "application/json": components["schemas"]["RecentPagesResponse"];
29187
30125
  };
29188
30126
  };
29189
- /** @description Invalid request ID. */
29190
- 400: {
30127
+ /** @description Only signed-in users can access recent pages. */
30128
+ 403: {
29191
30129
  headers: {
29192
30130
  [name: string]: unknown;
29193
30131
  };
@@ -29195,8 +30133,8 @@ export interface operations {
29195
30133
  "application/json": components["schemas"]["ErrorResponse"];
29196
30134
  };
29197
30135
  };
29198
- /** @description Request not found. */
29199
- 404: {
30136
+ /** @description Recent pages storage is unavailable. */
30137
+ 503: {
29200
30138
  headers: {
29201
30139
  [name: string]: unknown;
29202
30140
  };
@@ -29206,39 +30144,29 @@ export interface operations {
29206
30144
  };
29207
30145
  };
29208
30146
  };
29209
- createRequestChatSession: {
30147
+ recordRecentPage: {
29210
30148
  parameters: {
29211
30149
  query?: never;
29212
30150
  header?: never;
29213
- path: {
29214
- /** @description Request ID. */
29215
- id: number;
29216
- };
30151
+ path?: never;
29217
30152
  cookie?: never;
29218
30153
  };
29219
30154
  requestBody?: {
29220
30155
  content: {
29221
- "application/json": {
29222
- /** @description Project the chat session belongs to. */
29223
- project_id?: number | string | unknown;
29224
- /** @description First message to send to the agent. */
29225
- initial_prompt?: string | null;
29226
- /** @description Model to use for the chat session. */
29227
- model?: string | null;
29228
- };
30156
+ "application/json": components["schemas"]["RecordRecentPageRequest"];
29229
30157
  };
29230
30158
  };
29231
30159
  responses: {
29232
- /** @description The created chat session. */
30160
+ /** @description The recorded dashboard destination. */
29233
30161
  200: {
29234
30162
  headers: {
29235
30163
  [name: string]: unknown;
29236
30164
  };
29237
30165
  content: {
29238
- "application/json": components["schemas"]["RequestSessionResponse"];
30166
+ "application/json": components["schemas"]["RecordRecentPageResponse"];
29239
30167
  };
29240
30168
  };
29241
- /** @description Missing acting user or project_id, or invalid input. */
30169
+ /** @description The destination is invalid. */
29242
30170
  400: {
29243
30171
  headers: {
29244
30172
  [name: string]: unknown;
@@ -29247,7 +30175,16 @@ export interface operations {
29247
30175
  "application/json": components["schemas"]["ErrorResponse"];
29248
30176
  };
29249
30177
  };
29250
- /** @description Project not found or inaccessible. */
30178
+ /** @description Only signed-in users can record recent pages. */
30179
+ 403: {
30180
+ headers: {
30181
+ [name: string]: unknown;
30182
+ };
30183
+ content: {
30184
+ "application/json": components["schemas"]["ErrorResponse"];
30185
+ };
30186
+ };
30187
+ /** @description Project not found. */
29251
30188
  404: {
29252
30189
  headers: {
29253
30190
  [name: string]: unknown;
@@ -29256,6 +30193,15 @@ export interface operations {
29256
30193
  "application/json": components["schemas"]["ErrorResponse"];
29257
30194
  };
29258
30195
  };
30196
+ /** @description Recent pages storage is unavailable. */
30197
+ 503: {
30198
+ headers: {
30199
+ [name: string]: unknown;
30200
+ };
30201
+ content: {
30202
+ "application/json": components["schemas"]["ErrorResponse"];
30203
+ };
30204
+ };
29259
30205
  };
29260
30206
  };
29261
30207
  claimRunnerBackend: {
@@ -30106,6 +31052,99 @@ export interface operations {
30106
31052
  };
30107
31053
  };
30108
31054
  };
31055
+ listTaskChatSessions: {
31056
+ parameters: {
31057
+ query?: never;
31058
+ header?: never;
31059
+ path: {
31060
+ /** @description Task ID. */
31061
+ id: number;
31062
+ };
31063
+ cookie?: never;
31064
+ };
31065
+ requestBody?: never;
31066
+ responses: {
31067
+ /** @description Chat sessions for the task (or an empty-state message). */
31068
+ 200: {
31069
+ headers: {
31070
+ [name: string]: unknown;
31071
+ };
31072
+ content: {
31073
+ "application/json": components["schemas"]["TaskChatSessionsResponse"];
31074
+ };
31075
+ };
31076
+ /** @description Invalid task ID. */
31077
+ 400: {
31078
+ headers: {
31079
+ [name: string]: unknown;
31080
+ };
31081
+ content: {
31082
+ "application/json": components["schemas"]["ErrorResponse"];
31083
+ };
31084
+ };
31085
+ /** @description Task not found. */
31086
+ 404: {
31087
+ headers: {
31088
+ [name: string]: unknown;
31089
+ };
31090
+ content: {
31091
+ "application/json": components["schemas"]["ErrorResponse"];
31092
+ };
31093
+ };
31094
+ };
31095
+ };
31096
+ createTaskChatSession: {
31097
+ parameters: {
31098
+ query?: never;
31099
+ header?: never;
31100
+ path: {
31101
+ /** @description Task ID. */
31102
+ id: number;
31103
+ };
31104
+ cookie?: never;
31105
+ };
31106
+ requestBody?: {
31107
+ content: {
31108
+ "application/json": {
31109
+ /** @description Project the chat session belongs to. */
31110
+ project_id?: number | string | unknown;
31111
+ /** @description First message to send to the agent. */
31112
+ initial_prompt?: string | null;
31113
+ /** @description Model to use for the chat session. */
31114
+ model?: string | null;
31115
+ };
31116
+ };
31117
+ };
31118
+ responses: {
31119
+ /** @description The created chat session. */
31120
+ 200: {
31121
+ headers: {
31122
+ [name: string]: unknown;
31123
+ };
31124
+ content: {
31125
+ "application/json": components["schemas"]["TaskSessionResponse"];
31126
+ };
31127
+ };
31128
+ /** @description Missing acting user or project_id, or invalid input. */
31129
+ 400: {
31130
+ headers: {
31131
+ [name: string]: unknown;
31132
+ };
31133
+ content: {
31134
+ "application/json": components["schemas"]["ErrorResponse"];
31135
+ };
31136
+ };
31137
+ /** @description Project not found or inaccessible. */
31138
+ 404: {
31139
+ headers: {
31140
+ [name: string]: unknown;
31141
+ };
31142
+ content: {
31143
+ "application/json": components["schemas"]["ErrorResponse"];
31144
+ };
31145
+ };
31146
+ };
31147
+ };
30109
31148
  ingestTestCaseRunEndEvent: {
30110
31149
  parameters: {
30111
31150
  query?: never;
@@ -30169,8 +31208,8 @@ export interface operations {
30169
31208
  "application/json": {
30170
31209
  /** @description Parent test run ID (run_id). */
30171
31210
  testRunId: number;
30172
- /** @description Repository name of the project owning the run. */
30173
- projectRepoName: string;
31211
+ /** @description Deprecated and ignored: the run's own project is used. */
31212
+ projectRepoName?: string;
30174
31213
  /** @description Zero-based index of the shard being updated. */
30175
31214
  shardIndex: number;
30176
31215
  /** @description Total shard count for the run. Required for `run_test` jobs; omitted for `merge_reports`. */
@@ -30184,7 +31223,7 @@ export interface operations {
30184
31223
  errorCode?: string;
30185
31224
  /** @description Resolved head SHA, recorded on first shard start. */
30186
31225
  testRunHeadSha?: string;
30187
- /** @description Resolved branch, recorded on first shard start. */
31226
+ /** @description Deprecated and ignored: the run's own branch is used. */
30188
31227
  testRunBranch?: string;
30189
31228
  /**
30190
31229
  * @description Job type for the shard. Defaults to `run_test`.
@@ -30213,7 +31252,7 @@ export interface operations {
30213
31252
  "application/json": components["schemas"]["ErrorResponse"];
30214
31253
  };
30215
31254
  };
30216
- /** @description Project, test run, environment, or shard not found. */
31255
+ /** @description Test run or shard not found. */
30217
31256
  404: {
30218
31257
  headers: {
30219
31258
  [name: string]: unknown;
@@ -30374,8 +31413,8 @@ export interface operations {
30374
31413
  }[];
30375
31414
  /** @description Directory prefix (key prefix) within the bucket. */
30376
31415
  destination_dir: string;
30377
- /** @description Target R2 bucket name. */
30378
- bucket: string;
31416
+ /** @description Ignored. Uploads always go to `dashboard-uploads`. */
31417
+ bucket?: string;
30379
31418
  };
30380
31419
  };
30381
31420
  };