@shardflux/sdk 0.14.0 → 0.15.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.
@@ -1533,6 +1533,26 @@ export interface paths {
1533
1533
  patch?: never;
1534
1534
  trace?: never;
1535
1535
  };
1536
+ "/v1/workspaces/{workspace_id}/computer-use": {
1537
+ parameters: {
1538
+ query?: never;
1539
+ header?: never;
1540
+ path?: never;
1541
+ cookie?: never;
1542
+ };
1543
+ get?: never;
1544
+ /**
1545
+ * Switch computer use on or off for the workspace (contracts §45.1)
1546
+ * @description enabled: true or false overrides the template’s switch; null follows it. While computer use is on, tool tokens carry the computer tool and the workspace desktop starts on the first computer call. Takes effect on the next tool token. 409 computer_use_unavailable when the workspace’s template version cannot run a desktop, 409 not_supported_for_mode for file-first workspaces (§29), 409 workspace_deleted. Returns the switch.
1547
+ */
1548
+ put: operations["putV1WorkspacesWorkspaceIdComputerUse"];
1549
+ post?: never;
1550
+ delete?: never;
1551
+ options?: never;
1552
+ head?: never;
1553
+ patch?: never;
1554
+ trace?: never;
1555
+ };
1536
1556
  "/v1/workspaces/{workspace_id}/suspend": {
1537
1557
  parameters: {
1538
1558
  query?: never;
@@ -1946,6 +1966,26 @@ export interface paths {
1946
1966
  patch?: never;
1947
1967
  trace?: never;
1948
1968
  };
1969
+ "/api/v1/workspaces/{workspace_id}/computer-use": {
1970
+ parameters: {
1971
+ query?: never;
1972
+ header?: never;
1973
+ path?: never;
1974
+ cookie?: never;
1975
+ };
1976
+ get?: never;
1977
+ /**
1978
+ * Switch computer use on or off for the workspace (contracts §45.1)
1979
+ * @description enabled: true or false overrides the template’s switch; null follows it. While computer use is on, tool tokens carry the computer tool and the workspace desktop starts on the first computer call. Takes effect on the next tool token. 409 computer_use_unavailable when the workspace’s template version cannot run a desktop, 409 not_supported_for_mode for file-first workspaces (§29), 409 workspace_deleted. Returns the switch.
1980
+ */
1981
+ put: operations["putApiV1WorkspacesWorkspaceIdComputerUse"];
1982
+ post?: never;
1983
+ delete?: never;
1984
+ options?: never;
1985
+ head?: never;
1986
+ patch?: never;
1987
+ trace?: never;
1988
+ };
1949
1989
  "/api/v1/workspaces/{workspace_id}/suspend": {
1950
1990
  parameters: {
1951
1991
  query?: never;
@@ -2251,13 +2291,13 @@ export interface paths {
2251
2291
  get?: never;
2252
2292
  /**
2253
2293
  * Expose a port of the workspace at its own HTTPS URL
2254
- * @description Serves TCP `port` inside the workspace at `https://<port>-<handle>.<ingress domain>` (contracts §39.3). The port is private: every request needs a port token (POST …/tokens), a signed link (POST …/links) or the port’s callback URL (POST …/callback). A request to a suspended workspace resumes it and is held until it runs; a parked one wakes inside the request. 201 when exposed now, 200 when it already was (unchanged: its tokens, links and callback URL stay valid). The handle is the workspace’s for good (kept when ports are closed and exposed again, across suspend, resume and reset; a fork gets none). At most 10 exposed ports: 409 conflict details.reason port_limit (details.limit 10). Errors: 403 forbidden details.reason inbound_ports_not_available (inbound ports are not enabled for the organization), 409 conflict not_supported_for_mode (file-first workspace) or workspace_deleted, 422 validation_failed for a port outside 1-65535.
2294
+ * @description Serves TCP `port` inside the workspace at `https://<port>-<handle>.<ingress domain>` (contracts §39.3). The port is private: every request needs a port token (POST …/tokens), a signed link (POST …/links) or the port’s callback URL (POST …/callback). A request to a suspended workspace resumes it and is held until it runs; a parked one wakes inside the request. 201 when exposed now, 200 when it already was (unchanged: its tokens, links and callback URL stay valid). The handle is the workspace’s for good (kept when ports are closed and exposed again, across suspend, resume and reset; a fork gets none). At most 10 exposed ports: 409 conflict details.reason port_limit (details.limit 10). Errors: 403 forbidden details.reason inbound_ports_not_available (inbound ports are not enabled for the organization), 409 conflict not_supported_for_mode (file-first workspace) or workspace_deleted, 422 validation_failed for a port outside 1-65535 (details.reason port_reserved for 61001, the workspace desktop’s control port, contracts §45.5).
2255
2295
  */
2256
2296
  put: operations["putV1WorkspacesWorkspaceIdPortsPort"];
2257
2297
  post?: never;
2258
2298
  /**
2259
2299
  * Close an exposed port
2260
- * @description 204, also when the port was not exposed. Its tokens, links and callback URL stop working at once (the gateway caches for at most 5 s), and stay revoked if the port is exposed again. The workspace keeps its URL handle. Errors: 403 forbidden details.reason inbound_ports_not_available (inbound ports are not enabled for the organization), 409 conflict not_supported_for_mode (file-first workspace) or workspace_deleted, 422 validation_failed for a port outside 1-65535.
2300
+ * @description 204, also when the port was not exposed. Its tokens, links and callback URL stop working at once (the gateway caches for at most 5 s), and stay revoked if the port is exposed again. The workspace keeps its URL handle. Errors: 403 forbidden details.reason inbound_ports_not_available (inbound ports are not enabled for the organization), 409 conflict not_supported_for_mode (file-first workspace) or workspace_deleted, 422 validation_failed for a port outside 1-65535 (details.reason port_reserved for 61001, the workspace desktop’s control port, contracts §45.5).
2261
2301
  */
2262
2302
  delete: operations["deleteV1WorkspacesWorkspaceIdPortsPort"];
2263
2303
  options?: never;
@@ -2274,7 +2314,7 @@ export interface paths {
2274
2314
  };
2275
2315
  /**
2276
2316
  * List the workspace’s exposed ports
2277
- * @description Ordered by port. `callback` is set when the port has a callback URL (its secret is never shown again). Errors: 403 forbidden details.reason inbound_ports_not_available (inbound ports are not enabled for the organization), 409 conflict not_supported_for_mode (file-first workspace) or workspace_deleted, 422 validation_failed for a port outside 1-65535.
2317
+ * @description Ordered by port. `callback` is set when the port has a callback URL (its secret is never shown again). Errors: 403 forbidden details.reason inbound_ports_not_available (inbound ports are not enabled for the organization), 409 conflict not_supported_for_mode (file-first workspace) or workspace_deleted, 422 validation_failed for a port outside 1-65535 (details.reason port_reserved for 61001, the workspace desktop’s control port, contracts §45.5).
2278
2318
  */
2279
2319
  get: operations["getV1WorkspacesWorkspaceIdPorts"];
2280
2320
  put?: never;
@@ -2296,7 +2336,7 @@ export interface paths {
2296
2336
  put?: never;
2297
2337
  /**
2298
2338
  * Mint a port token for an exposed port
2299
- * @description A bearer token for requests to the port’s URL: `Authorization: Bearer <token>` (or `X-Shardflux-Token: <token>` when the app uses Authorization itself). `sfp_` + an ES256 JWS (claims iss, aud `shardflux-ports`, sub, pty, org, prj, ws, port, pxid, use `bearer`, iat, exp, jti; keys at GET /v1/.well-known/tool-token-keys). Revoked by closing the port, deleting the workspace, revoking the API key that minted it, or the minting member’s removal or role change. 404 not_found details.reason port_not_exposed. Errors: 403 forbidden details.reason inbound_ports_not_available (inbound ports are not enabled for the organization), 409 conflict not_supported_for_mode (file-first workspace) or workspace_deleted, 422 validation_failed for a port outside 1-65535.
2339
+ * @description A bearer token for requests to the port’s URL: `Authorization: Bearer <token>` (or `X-Shardflux-Token: <token>` when the app uses Authorization itself). `sfp_` + an ES256 JWS (claims iss, aud `shardflux-ports`, sub, pty, org, prj, ws, port, pxid, use `bearer`, iat, exp, jti; keys at GET /v1/.well-known/tool-token-keys). Revoked by closing the port, deleting the workspace, revoking the API key that minted it, or the minting member’s removal or role change. 404 not_found details.reason port_not_exposed. Errors: 403 forbidden details.reason inbound_ports_not_available (inbound ports are not enabled for the organization), 409 conflict not_supported_for_mode (file-first workspace) or workspace_deleted, 422 validation_failed for a port outside 1-65535 (details.reason port_reserved for 61001, the workspace desktop’s control port, contracts §45.5).
2300
2340
  */
2301
2341
  post: operations["postV1WorkspacesWorkspaceIdPortsPortTokens"];
2302
2342
  delete?: never;
@@ -2316,7 +2356,7 @@ export interface paths {
2316
2356
  put?: never;
2317
2357
  /**
2318
2358
  * Create a signed link that opens an exposed port in a browser
2319
- * @description Opening the link sets a session cookie for the port’s host (HttpOnly, Secure, until `expires_at`) and redirects to `path`, so a person can use the app in a browser without a header. Share it like a password: anyone with the link can open the port until it expires. Revoked like a port token (closing the port, deleting the workspace, revoking the minting API key). 422 validation_failed details.field path for a path that does not start with one `/` or has characters other than printable ASCII. 404 not_found details.reason port_not_exposed. Errors: 403 forbidden details.reason inbound_ports_not_available (inbound ports are not enabled for the organization), 409 conflict not_supported_for_mode (file-first workspace) or workspace_deleted, 422 validation_failed for a port outside 1-65535.
2359
+ * @description Opening the link sets a session cookie for the port’s host (HttpOnly, Secure, until `expires_at`) and redirects to `path`, so a person can use the app in a browser without a header. Share it like a password: anyone with the link can open the port until it expires. Revoked like a port token (closing the port, deleting the workspace, revoking the minting API key). 422 validation_failed details.field path for a path that does not start with one `/` or has characters other than printable ASCII. 404 not_found details.reason port_not_exposed. Errors: 403 forbidden details.reason inbound_ports_not_available (inbound ports are not enabled for the organization), 409 conflict not_supported_for_mode (file-first workspace) or workspace_deleted, 422 validation_failed for a port outside 1-65535 (details.reason port_reserved for 61001, the workspace desktop’s control port, contracts §45.5).
2320
2360
  */
2321
2361
  post: operations["postV1WorkspacesWorkspaceIdPortsPortLinks"];
2322
2362
  delete?: never;
@@ -2336,12 +2376,12 @@ export interface paths {
2336
2376
  put?: never;
2337
2377
  /**
2338
2378
  * Create or replace the port’s callback URL (webhooks, OAuth redirects)
2339
- * @description A URL with a secret in its path that reaches the port without a token header: register `<url><your path>` with GitHub, Slack, Stripe or an OAuth provider; a request to `/__shardflux/callback/<secret>/<rest>` reaches `/<rest>` (query kept) and wakes the workspace like any request. Creating it again replaces it (the previous URL stops working). The secret is shown only in this response (stored as a SHA-256 hash). Revoke it with DELETE, by closing the port, or by deleting the workspace; it also stops waking the workspace when its creator can no longer manage the workspace. 404 not_found details.reason port_not_exposed. Errors: 403 forbidden details.reason inbound_ports_not_available (inbound ports are not enabled for the organization), 409 conflict not_supported_for_mode (file-first workspace) or workspace_deleted, 422 validation_failed for a port outside 1-65535.
2379
+ * @description A URL with a secret in its path that reaches the port without a token header: register `<url><your path>` with GitHub, Slack, Stripe or an OAuth provider; a request to `/__shardflux/callback/<secret>/<rest>` reaches `/<rest>` (query kept) and wakes the workspace like any request. Creating it again replaces it (the previous URL stops working). The secret is shown only in this response (stored as a SHA-256 hash). Revoke it with DELETE, by closing the port, or by deleting the workspace; it also stops waking the workspace when its creator can no longer manage the workspace. 404 not_found details.reason port_not_exposed. Errors: 403 forbidden details.reason inbound_ports_not_available (inbound ports are not enabled for the organization), 409 conflict not_supported_for_mode (file-first workspace) or workspace_deleted, 422 validation_failed for a port outside 1-65535 (details.reason port_reserved for 61001, the workspace desktop’s control port, contracts §45.5).
2340
2380
  */
2341
2381
  post: operations["postV1WorkspacesWorkspaceIdPortsPortCallback"];
2342
2382
  /**
2343
2383
  * Revoke the port’s callback URL
2344
- * @description 204, also when the port has no callback URL. The URL stops working at once (the gateway caches for at most 5 s). 404 not_found details.reason port_not_exposed. Errors: 403 forbidden details.reason inbound_ports_not_available (inbound ports are not enabled for the organization), 409 conflict not_supported_for_mode (file-first workspace) or workspace_deleted, 422 validation_failed for a port outside 1-65535.
2384
+ * @description 204, also when the port has no callback URL. The URL stops working at once (the gateway caches for at most 5 s). 404 not_found details.reason port_not_exposed. Errors: 403 forbidden details.reason inbound_ports_not_available (inbound ports are not enabled for the organization), 409 conflict not_supported_for_mode (file-first workspace) or workspace_deleted, 422 validation_failed for a port outside 1-65535 (details.reason port_reserved for 61001, the workspace desktop’s control port, contracts §45.5).
2345
2385
  */
2346
2386
  delete: operations["deleteV1WorkspacesWorkspaceIdPortsPortCallback"];
2347
2387
  options?: never;
@@ -2359,13 +2399,13 @@ export interface paths {
2359
2399
  get?: never;
2360
2400
  /**
2361
2401
  * Expose a port of the workspace at its own HTTPS URL
2362
- * @description Serves TCP `port` inside the workspace at `https://<port>-<handle>.<ingress domain>` (contracts §39.3). The port is private: every request needs a port token (POST …/tokens), a signed link (POST …/links) or the port’s callback URL (POST …/callback). A request to a suspended workspace resumes it and is held until it runs; a parked one wakes inside the request. 201 when exposed now, 200 when it already was (unchanged: its tokens, links and callback URL stay valid). The handle is the workspace’s for good (kept when ports are closed and exposed again, across suspend, resume and reset; a fork gets none). At most 10 exposed ports: 409 conflict details.reason port_limit (details.limit 10). Errors: 403 forbidden details.reason inbound_ports_not_available (inbound ports are not enabled for the organization), 409 conflict not_supported_for_mode (file-first workspace) or workspace_deleted, 422 validation_failed for a port outside 1-65535.
2402
+ * @description Serves TCP `port` inside the workspace at `https://<port>-<handle>.<ingress domain>` (contracts §39.3). The port is private: every request needs a port token (POST …/tokens), a signed link (POST …/links) or the port’s callback URL (POST …/callback). A request to a suspended workspace resumes it and is held until it runs; a parked one wakes inside the request. 201 when exposed now, 200 when it already was (unchanged: its tokens, links and callback URL stay valid). The handle is the workspace’s for good (kept when ports are closed and exposed again, across suspend, resume and reset; a fork gets none). At most 10 exposed ports: 409 conflict details.reason port_limit (details.limit 10). Errors: 403 forbidden details.reason inbound_ports_not_available (inbound ports are not enabled for the organization), 409 conflict not_supported_for_mode (file-first workspace) or workspace_deleted, 422 validation_failed for a port outside 1-65535 (details.reason port_reserved for 61001, the workspace desktop’s control port, contracts §45.5).
2363
2403
  */
2364
2404
  put: operations["putApiV1WorkspacesWorkspaceIdPortsPort"];
2365
2405
  post?: never;
2366
2406
  /**
2367
2407
  * Close an exposed port
2368
- * @description 204, also when the port was not exposed. Its tokens, links and callback URL stop working at once (the gateway caches for at most 5 s), and stay revoked if the port is exposed again. The workspace keeps its URL handle. Errors: 403 forbidden details.reason inbound_ports_not_available (inbound ports are not enabled for the organization), 409 conflict not_supported_for_mode (file-first workspace) or workspace_deleted, 422 validation_failed for a port outside 1-65535.
2408
+ * @description 204, also when the port was not exposed. Its tokens, links and callback URL stop working at once (the gateway caches for at most 5 s), and stay revoked if the port is exposed again. The workspace keeps its URL handle. Errors: 403 forbidden details.reason inbound_ports_not_available (inbound ports are not enabled for the organization), 409 conflict not_supported_for_mode (file-first workspace) or workspace_deleted, 422 validation_failed for a port outside 1-65535 (details.reason port_reserved for 61001, the workspace desktop’s control port, contracts §45.5).
2369
2409
  */
2370
2410
  delete: operations["deleteApiV1WorkspacesWorkspaceIdPortsPort"];
2371
2411
  options?: never;
@@ -2382,7 +2422,7 @@ export interface paths {
2382
2422
  };
2383
2423
  /**
2384
2424
  * List the workspace’s exposed ports
2385
- * @description Ordered by port. `callback` is set when the port has a callback URL (its secret is never shown again). Errors: 403 forbidden details.reason inbound_ports_not_available (inbound ports are not enabled for the organization), 409 conflict not_supported_for_mode (file-first workspace) or workspace_deleted, 422 validation_failed for a port outside 1-65535.
2425
+ * @description Ordered by port. `callback` is set when the port has a callback URL (its secret is never shown again). Errors: 403 forbidden details.reason inbound_ports_not_available (inbound ports are not enabled for the organization), 409 conflict not_supported_for_mode (file-first workspace) or workspace_deleted, 422 validation_failed for a port outside 1-65535 (details.reason port_reserved for 61001, the workspace desktop’s control port, contracts §45.5).
2386
2426
  */
2387
2427
  get: operations["getApiV1WorkspacesWorkspaceIdPorts"];
2388
2428
  put?: never;
@@ -2404,7 +2444,7 @@ export interface paths {
2404
2444
  put?: never;
2405
2445
  /**
2406
2446
  * Mint a port token for an exposed port
2407
- * @description A bearer token for requests to the port’s URL: `Authorization: Bearer <token>` (or `X-Shardflux-Token: <token>` when the app uses Authorization itself). `sfp_` + an ES256 JWS (claims iss, aud `shardflux-ports`, sub, pty, org, prj, ws, port, pxid, use `bearer`, iat, exp, jti; keys at GET /v1/.well-known/tool-token-keys). Revoked by closing the port, deleting the workspace, revoking the API key that minted it, or the minting member’s removal or role change. 404 not_found details.reason port_not_exposed. Errors: 403 forbidden details.reason inbound_ports_not_available (inbound ports are not enabled for the organization), 409 conflict not_supported_for_mode (file-first workspace) or workspace_deleted, 422 validation_failed for a port outside 1-65535.
2447
+ * @description A bearer token for requests to the port’s URL: `Authorization: Bearer <token>` (or `X-Shardflux-Token: <token>` when the app uses Authorization itself). `sfp_` + an ES256 JWS (claims iss, aud `shardflux-ports`, sub, pty, org, prj, ws, port, pxid, use `bearer`, iat, exp, jti; keys at GET /v1/.well-known/tool-token-keys). Revoked by closing the port, deleting the workspace, revoking the API key that minted it, or the minting member’s removal or role change. 404 not_found details.reason port_not_exposed. Errors: 403 forbidden details.reason inbound_ports_not_available (inbound ports are not enabled for the organization), 409 conflict not_supported_for_mode (file-first workspace) or workspace_deleted, 422 validation_failed for a port outside 1-65535 (details.reason port_reserved for 61001, the workspace desktop’s control port, contracts §45.5).
2408
2448
  */
2409
2449
  post: operations["postApiV1WorkspacesWorkspaceIdPortsPortTokens"];
2410
2450
  delete?: never;
@@ -2424,7 +2464,7 @@ export interface paths {
2424
2464
  put?: never;
2425
2465
  /**
2426
2466
  * Create a signed link that opens an exposed port in a browser
2427
- * @description Opening the link sets a session cookie for the port’s host (HttpOnly, Secure, until `expires_at`) and redirects to `path`, so a person can use the app in a browser without a header. Share it like a password: anyone with the link can open the port until it expires. Revoked like a port token (closing the port, deleting the workspace, revoking the minting API key). 422 validation_failed details.field path for a path that does not start with one `/` or has characters other than printable ASCII. 404 not_found details.reason port_not_exposed. Errors: 403 forbidden details.reason inbound_ports_not_available (inbound ports are not enabled for the organization), 409 conflict not_supported_for_mode (file-first workspace) or workspace_deleted, 422 validation_failed for a port outside 1-65535.
2467
+ * @description Opening the link sets a session cookie for the port’s host (HttpOnly, Secure, until `expires_at`) and redirects to `path`, so a person can use the app in a browser without a header. Share it like a password: anyone with the link can open the port until it expires. Revoked like a port token (closing the port, deleting the workspace, revoking the minting API key). 422 validation_failed details.field path for a path that does not start with one `/` or has characters other than printable ASCII. 404 not_found details.reason port_not_exposed. Errors: 403 forbidden details.reason inbound_ports_not_available (inbound ports are not enabled for the organization), 409 conflict not_supported_for_mode (file-first workspace) or workspace_deleted, 422 validation_failed for a port outside 1-65535 (details.reason port_reserved for 61001, the workspace desktop’s control port, contracts §45.5).
2428
2468
  */
2429
2469
  post: operations["postApiV1WorkspacesWorkspaceIdPortsPortLinks"];
2430
2470
  delete?: never;
@@ -2444,12 +2484,12 @@ export interface paths {
2444
2484
  put?: never;
2445
2485
  /**
2446
2486
  * Create or replace the port’s callback URL (webhooks, OAuth redirects)
2447
- * @description A URL with a secret in its path that reaches the port without a token header: register `<url><your path>` with GitHub, Slack, Stripe or an OAuth provider; a request to `/__shardflux/callback/<secret>/<rest>` reaches `/<rest>` (query kept) and wakes the workspace like any request. Creating it again replaces it (the previous URL stops working). The secret is shown only in this response (stored as a SHA-256 hash). Revoke it with DELETE, by closing the port, or by deleting the workspace; it also stops waking the workspace when its creator can no longer manage the workspace. 404 not_found details.reason port_not_exposed. Errors: 403 forbidden details.reason inbound_ports_not_available (inbound ports are not enabled for the organization), 409 conflict not_supported_for_mode (file-first workspace) or workspace_deleted, 422 validation_failed for a port outside 1-65535.
2487
+ * @description A URL with a secret in its path that reaches the port without a token header: register `<url><your path>` with GitHub, Slack, Stripe or an OAuth provider; a request to `/__shardflux/callback/<secret>/<rest>` reaches `/<rest>` (query kept) and wakes the workspace like any request. Creating it again replaces it (the previous URL stops working). The secret is shown only in this response (stored as a SHA-256 hash). Revoke it with DELETE, by closing the port, or by deleting the workspace; it also stops waking the workspace when its creator can no longer manage the workspace. 404 not_found details.reason port_not_exposed. Errors: 403 forbidden details.reason inbound_ports_not_available (inbound ports are not enabled for the organization), 409 conflict not_supported_for_mode (file-first workspace) or workspace_deleted, 422 validation_failed for a port outside 1-65535 (details.reason port_reserved for 61001, the workspace desktop’s control port, contracts §45.5).
2448
2488
  */
2449
2489
  post: operations["postApiV1WorkspacesWorkspaceIdPortsPortCallback"];
2450
2490
  /**
2451
2491
  * Revoke the port’s callback URL
2452
- * @description 204, also when the port has no callback URL. The URL stops working at once (the gateway caches for at most 5 s). 404 not_found details.reason port_not_exposed. Errors: 403 forbidden details.reason inbound_ports_not_available (inbound ports are not enabled for the organization), 409 conflict not_supported_for_mode (file-first workspace) or workspace_deleted, 422 validation_failed for a port outside 1-65535.
2492
+ * @description 204, also when the port has no callback URL. The URL stops working at once (the gateway caches for at most 5 s). 404 not_found details.reason port_not_exposed. Errors: 403 forbidden details.reason inbound_ports_not_available (inbound ports are not enabled for the organization), 409 conflict not_supported_for_mode (file-first workspace) or workspace_deleted, 422 validation_failed for a port outside 1-65535 (details.reason port_reserved for 61001, the workspace desktop’s control port, contracts §45.5).
2453
2493
  */
2454
2494
  delete: operations["deleteApiV1WorkspacesWorkspaceIdPortsPortCallback"];
2455
2495
  options?: never;
@@ -2757,6 +2797,46 @@ export interface paths {
2757
2797
  patch?: never;
2758
2798
  trace?: never;
2759
2799
  };
2800
+ "/v1/organizations/{organization_id}/templates/{slug}/computer-use": {
2801
+ parameters: {
2802
+ query?: never;
2803
+ header?: never;
2804
+ path?: never;
2805
+ cookie?: never;
2806
+ };
2807
+ get?: never;
2808
+ /**
2809
+ * Switch computer use on or off for the workspaces of an organization template (contracts §45.1)
2810
+ * @description Every workspace of the template follows it unless the workspace sets its own value; takes effect on their next tool token. Owners and admins (sessions) or API keys of the organization with a tool permission. 403 for platform templates (switch a workspace on instead), 404 outside the organization.
2811
+ */
2812
+ put: operations["putV1OrganizationsOrganizationIdTemplatesSlugComputerUse"];
2813
+ post?: never;
2814
+ delete?: never;
2815
+ options?: never;
2816
+ head?: never;
2817
+ patch?: never;
2818
+ trace?: never;
2819
+ };
2820
+ "/v1/templates/{slug}/computer-use": {
2821
+ parameters: {
2822
+ query?: never;
2823
+ header?: never;
2824
+ path?: never;
2825
+ cookie?: never;
2826
+ };
2827
+ get?: never;
2828
+ /**
2829
+ * Switch computer use on or off for the workspaces of an organization template (contracts §45.1) (the API key’s organization)
2830
+ * @description Every workspace of the template follows it unless the workspace sets its own value; takes effect on their next tool token. Owners and admins (sessions) or API keys of the organization with a tool permission. 403 for platform templates (switch a workspace on instead), 404 outside the organization.
2831
+ */
2832
+ put: operations["putV1TemplatesSlugComputerUse"];
2833
+ post?: never;
2834
+ delete?: never;
2835
+ options?: never;
2836
+ head?: never;
2837
+ patch?: never;
2838
+ trace?: never;
2839
+ };
2760
2840
  "/v1/organizations/{organization_id}/template-builds": {
2761
2841
  parameters: {
2762
2842
  query?: never;
@@ -3095,6 +3175,26 @@ export interface paths {
3095
3175
  patch?: never;
3096
3176
  trace?: never;
3097
3177
  };
3178
+ "/api/v1/organizations/{organization_id}/templates/{slug}/computer-use": {
3179
+ parameters: {
3180
+ query?: never;
3181
+ header?: never;
3182
+ path?: never;
3183
+ cookie?: never;
3184
+ };
3185
+ get?: never;
3186
+ /**
3187
+ * Switch computer use on or off for the workspaces of an organization template (contracts §45.1)
3188
+ * @description Every workspace of the template follows it unless the workspace sets its own value; takes effect on their next tool token. Owners and admins (sessions) or API keys of the organization with a tool permission. 403 for platform templates (switch a workspace on instead), 404 outside the organization.
3189
+ */
3190
+ put: operations["putApiV1OrganizationsOrganizationIdTemplatesSlugComputerUse"];
3191
+ post?: never;
3192
+ delete?: never;
3193
+ options?: never;
3194
+ head?: never;
3195
+ patch?: never;
3196
+ trace?: never;
3197
+ };
3098
3198
  "/api/v1/organizations/{organization_id}/template-builds": {
3099
3199
  parameters: {
3100
3200
  query?: never;
@@ -5849,13 +5949,13 @@ export interface paths {
5849
5949
  };
5850
5950
  /**
5851
5951
  * Describe a hosted MCP connection request (consent page)
5852
- * @description Validates an authorization request for the hosted MCP endpoint and returns the client, where the browser goes afterwards and the projects the user may connect. 422 `validation_failed` (details.oauth_error) when the client or its redirect_uri cannot be trusted; otherwise a request with another problem still describes the client, and the POST answers it with the OAuth error.
5952
+ * @description Describes the pending authorization request /connect?request=<id> names: the client, where the browser goes afterwards and the projects the user may connect. 422 `validation_failed`: details.reason `request_expired` (unknown, expired after 15 minutes, or already answered), details.oauth_error when the client or its redirect_uri cannot be trusted, or details.redirect_to (the error redirect) for any other problem.
5853
5953
  */
5854
5954
  get: operations["getApiV1OauthAuthorization"];
5855
5955
  put?: never;
5856
5956
  /**
5857
5957
  * Approve or decline a hosted MCP connection request
5858
- * @description approve (with project_id, a project where the user is owner or admin) creates the connection: a project API key named "<client> (MCP connector)" with every tool permission, held by Shardflux for the client, and a single-use authorization code (5 minutes). deny sends access_denied. Either way the answer is redirect_to, where the browser goes next.
5958
+ * @description Answers the pending request (it is consumed). approve (with project_id, a project where the user is owner or admin; checked before the request is consumed) creates the connection: a project API key named "<client> (MCP connector)" with every tool permission, held by Shardflux for the client, and a single-use authorization code (5 minutes). deny sends access_denied. Either way the answer is redirect_to, where the browser goes next.
5859
5959
  */
5860
5960
  post: operations["postApiV1OauthAuthorization"];
5861
5961
  delete?: never;
@@ -6850,7 +6950,7 @@ export interface components {
6850
6950
  disk_gib?: number;
6851
6951
  };
6852
6952
  agent_label?: string;
6853
- tools?: ("exec" | "files" | "pty" | "process" | "git" | "browser")[];
6953
+ tools?: ("exec" | "files" | "pty" | "process" | "git" | "browser" | "computer")[];
6854
6954
  /** @description Open-time inputs of the template version (contracts §24.3): {NAME: string} for its declared text inputs. A new workspace stores each given value, else the declared default; on an existing key `inputs` replaces them all (omitted = unchanged). Secret inputs are not passed here: they bind the stored secret of the same name. 422 input_unknown (undeclared name, details.names), input_invalid (a secret input, a non-string, or a value over 4096 bytes or with CR, LF or NUL; details.names), input_required (details {names, kind}). */
6855
6955
  inputs?: {
6856
6956
  [key: string]: unknown;
@@ -6870,7 +6970,7 @@ export interface components {
6870
6970
  disk_gib?: number;
6871
6971
  };
6872
6972
  agent_label?: string;
6873
- tools?: ("exec" | "files" | "pty" | "process" | "git" | "browser")[];
6973
+ tools?: ("exec" | "files" | "pty" | "process" | "git" | "browser" | "computer")[];
6874
6974
  /** @description Open-time inputs of the template version (contracts §24.3): {NAME: string} for its declared text inputs. A new workspace stores each given value, else the declared default; on an existing key `inputs` replaces them all (omitted = unchanged). Secret inputs are not passed here: they bind the stored secret of the same name. 422 input_unknown (undeclared name, details.names), input_invalid (a secret input, a non-string, or a value over 4096 bytes or with CR, LF or NUL; details.names), input_required (details {names, kind}). */
6875
6975
  inputs?: {
6876
6976
  [key: string]: unknown;
@@ -7065,7 +7165,7 @@ export interface components {
7065
7165
  disk_gib?: number;
7066
7166
  };
7067
7167
  agent_label?: string;
7068
- tools?: ("exec" | "files" | "pty" | "process" | "git" | "browser")[];
7168
+ tools?: ("exec" | "files" | "pty" | "process" | "git" | "browser" | "computer")[];
7069
7169
  /** @description Open-time inputs of the template version (contracts §24.3): {NAME: string} for its declared text inputs. A new workspace stores each given value, else the declared default; on an existing key `inputs` replaces them all (omitted = unchanged). Secret inputs are not passed here: they bind the stored secret of the same name. 422 input_unknown (undeclared name, details.names), input_invalid (a secret input, a non-string, or a value over 4096 bytes or with CR, LF or NUL; details.names), input_required (details {names, kind}). */
7070
7170
  inputs?: {
7071
7171
  [key: string]: unknown;
@@ -7186,6 +7286,15 @@ export interface components {
7186
7286
  memory_mib_held?: number;
7187
7287
  };
7188
7288
  };
7289
+ ComputerUse: {
7290
+ /** @description Effective: tool tokens carry the computer tool (the workspace’s value, else the template’s, and the version runs a desktop). */
7291
+ enabled: boolean;
7292
+ workspace: boolean | null;
7293
+ /** @description The template’s switch for its workspaces. */
7294
+ template: boolean;
7295
+ /** @description The workspace’s template version can run a desktop (its guest agent has desktop.v1). */
7296
+ available: boolean;
7297
+ };
7189
7298
  Workspace: {
7190
7299
  /**
7191
7300
  * Format: uuid
@@ -7314,6 +7423,7 @@ export interface components {
7314
7423
  mode: components["schemas"]["WorkspaceMode"];
7315
7424
  /** @description file_first: the latest revision of the file tree (0 = the empty tree the workspace starts with; each mutating file call or execution publishes the next one; cell file responses carry it as X-Tree-Revision). Always 0 for processful workspaces. */
7316
7425
  tree_revision: number;
7426
+ computer_use: components["schemas"]["ComputerUse"];
7317
7427
  /**
7318
7428
  * Format: date-time
7319
7429
  * @description RFC 3339 UTC timestamp with Z.
@@ -7386,7 +7496,7 @@ export interface components {
7386
7496
  */
7387
7497
  agent_session_id: string;
7388
7498
  ownership_epoch: number;
7389
- tools: ("exec" | "files" | "pty" | "process" | "git" | "browser")[];
7499
+ tools: ("exec" | "files" | "pty" | "process" | "git" | "browser" | "computer")[];
7390
7500
  cell_endpoint: string;
7391
7501
  };
7392
7502
  /** @description An exposed port of a workspace (contracts §39.3). Private: every request needs a credential. */
@@ -10198,7 +10308,7 @@ export interface operations {
10198
10308
  * @description UUIDv7, lowercase canonical form.
10199
10309
  */
10200
10310
  project_id: string;
10201
- tool_permissions: ("exec" | "files" | "pty" | "process" | "git" | "browser")[];
10311
+ tool_permissions: ("exec" | "files" | "pty" | "process" | "git" | "browser" | "computer")[];
10202
10312
  } | null;
10203
10313
  };
10204
10314
  };
@@ -11041,7 +11151,7 @@ export interface operations {
11041
11151
  */
11042
11152
  project_id: string;
11043
11153
  name: string;
11044
- tool_permissions: ("exec" | "files" | "pty" | "process" | "git" | "browser")[];
11154
+ tool_permissions: ("exec" | "files" | "pty" | "process" | "git" | "browser" | "computer")[];
11045
11155
  /**
11046
11156
  * Format: date-time
11047
11157
  * @description RFC 3339 UTC timestamp with Z.
@@ -11089,7 +11199,7 @@ export interface operations {
11089
11199
  content: {
11090
11200
  "application/json": {
11091
11201
  name: string;
11092
- tool_permissions: ("exec" | "files" | "pty" | "process" | "git" | "browser")[];
11202
+ tool_permissions: ("exec" | "files" | "pty" | "process" | "git" | "browser" | "computer")[];
11093
11203
  /**
11094
11204
  * Format: date-time
11095
11205
  * @description RFC 3339 UTC timestamp with Z.
@@ -11125,7 +11235,7 @@ export interface operations {
11125
11235
  */
11126
11236
  project_id: string;
11127
11237
  name: string;
11128
- tool_permissions: ("exec" | "files" | "pty" | "process" | "git" | "browser")[];
11238
+ tool_permissions: ("exec" | "files" | "pty" | "process" | "git" | "browser" | "computer")[];
11129
11239
  /**
11130
11240
  * Format: date-time
11131
11241
  * @description RFC 3339 UTC timestamp with Z.
@@ -11257,7 +11367,7 @@ export interface operations {
11257
11367
  * @description UUIDv7, lowercase canonical form.
11258
11368
  */
11259
11369
  project_id: string;
11260
- tool_permissions: ("exec" | "files" | "pty" | "process" | "git" | "browser")[];
11370
+ tool_permissions: ("exec" | "files" | "pty" | "process" | "git" | "browser" | "computer")[];
11261
11371
  } | null;
11262
11372
  };
11263
11373
  };
@@ -12100,7 +12210,7 @@ export interface operations {
12100
12210
  */
12101
12211
  project_id: string;
12102
12212
  name: string;
12103
- tool_permissions: ("exec" | "files" | "pty" | "process" | "git" | "browser")[];
12213
+ tool_permissions: ("exec" | "files" | "pty" | "process" | "git" | "browser" | "computer")[];
12104
12214
  /**
12105
12215
  * Format: date-time
12106
12216
  * @description RFC 3339 UTC timestamp with Z.
@@ -12148,7 +12258,7 @@ export interface operations {
12148
12258
  content: {
12149
12259
  "application/json": {
12150
12260
  name: string;
12151
- tool_permissions: ("exec" | "files" | "pty" | "process" | "git" | "browser")[];
12261
+ tool_permissions: ("exec" | "files" | "pty" | "process" | "git" | "browser" | "computer")[];
12152
12262
  /**
12153
12263
  * Format: date-time
12154
12264
  * @description RFC 3339 UTC timestamp with Z.
@@ -12184,7 +12294,7 @@ export interface operations {
12184
12294
  */
12185
12295
  project_id: string;
12186
12296
  name: string;
12187
- tool_permissions: ("exec" | "files" | "pty" | "process" | "git" | "browser")[];
12297
+ tool_permissions: ("exec" | "files" | "pty" | "process" | "git" | "browser" | "computer")[];
12188
12298
  /**
12189
12299
  * Format: date-time
12190
12300
  * @description RFC 3339 UTC timestamp with Z.
@@ -12301,7 +12411,7 @@ export interface operations {
12301
12411
  project_id?: string;
12302
12412
  /** @description Attribution label; one agent session per (workspace, principal, label). */
12303
12413
  agent_label?: string;
12304
- tools?: ("exec" | "files" | "pty" | "process" | "git" | "browser")[];
12414
+ tools?: ("exec" | "files" | "pty" | "process" | "git" | "browser" | "computer")[];
12305
12415
  /** @description Secret names bound to the workspace (max 50, unique): injected as environment variables into every exec and PTY start (terminal sessions included), together with the call’s own `secret_refs`. Each must name a live secret this workspace may use (its project, its id, and allowed_tools including exec and pty), else 422 details.reason secret_not_available with details.names. */
12306
12416
  secrets?: string[];
12307
12417
  /** @description Open-time inputs of the template version (contracts §24.3): {NAME: string} for its declared text inputs. A new workspace stores each given value, else the declared default; on an existing key `inputs` replaces them all (omitted = unchanged). Secret inputs are not passed here: they bind the stored secret of the same name. 422 input_unknown (undeclared name, details.names), input_invalid (a secret input, a non-string, or a value over 4096 bytes or with CR, LF or NUL; details.names), input_required (details {names, kind}). */
@@ -12312,6 +12422,8 @@ export interface operations {
12312
12422
  /** @description adaptive (the learned timeout, default), never, or fixed:<seconds> (60..604800). Contracts §20.7. */
12313
12423
  idle_policy?: string;
12314
12424
  mode?: components["schemas"]["WorkspaceMode"];
12425
+ /** @description Contracts §45.1: the workspace’s computer use switch (null follows the template); set on create, replaced on an existing key when given. */
12426
+ computer_use?: boolean | null;
12315
12427
  };
12316
12428
  };
12317
12429
  };
@@ -12327,6 +12439,8 @@ export interface operations {
12327
12439
  operation: components["schemas"]["Operation"] | null;
12328
12440
  cell_endpoint: string | null;
12329
12441
  tool_token: components["schemas"]["ToolToken"] | null;
12442
+ /** @description Contracts §46.2: true when this request created the workspace (a new key, or a key whose session ended), false when it reconnected to or resumed an existing one. Of concurrent opens of one new key exactly one says true; a replay with the same Idempotency-Key repeats it. */
12443
+ created: boolean;
12330
12444
  };
12331
12445
  };
12332
12446
  };
@@ -12341,6 +12455,8 @@ export interface operations {
12341
12455
  operation: components["schemas"]["Operation"] | null;
12342
12456
  cell_endpoint: string | null;
12343
12457
  tool_token: components["schemas"]["ToolToken"] | null;
12458
+ /** @description Contracts §46.2: true when this request created the workspace (a new key, or a key whose session ended), false when it reconnected to or resumed an existing one. Of concurrent opens of one new key exactly one says true; a replay with the same Idempotency-Key repeats it. */
12459
+ created: boolean;
12344
12460
  };
12345
12461
  };
12346
12462
  };
@@ -12706,6 +12822,54 @@ export interface operations {
12706
12822
  };
12707
12823
  };
12708
12824
  };
12825
+ putV1WorkspacesWorkspaceIdComputerUse: {
12826
+ parameters: {
12827
+ query?: never;
12828
+ header?: never;
12829
+ path: {
12830
+ /** @description UUIDv7, lowercase canonical form. */
12831
+ workspace_id: string;
12832
+ };
12833
+ cookie?: never;
12834
+ };
12835
+ requestBody: {
12836
+ content: {
12837
+ "application/json": {
12838
+ /** @description true or false overrides the template; null follows it. */
12839
+ enabled: boolean | null;
12840
+ };
12841
+ };
12842
+ };
12843
+ responses: {
12844
+ /** @description Default Response */
12845
+ 200: {
12846
+ headers: {
12847
+ [name: string]: unknown;
12848
+ };
12849
+ content: {
12850
+ "application/json": components["schemas"]["ComputerUse"];
12851
+ };
12852
+ };
12853
+ /** @description Default Response */
12854
+ "4XX": {
12855
+ headers: {
12856
+ [name: string]: unknown;
12857
+ };
12858
+ content: {
12859
+ "application/json": components["schemas"]["ErrorBody"];
12860
+ };
12861
+ };
12862
+ /** @description Default Response */
12863
+ "5XX": {
12864
+ headers: {
12865
+ [name: string]: unknown;
12866
+ };
12867
+ content: {
12868
+ "application/json": components["schemas"]["ErrorBody"];
12869
+ };
12870
+ };
12871
+ };
12872
+ };
12709
12873
  postV1WorkspacesWorkspaceIdSuspend: {
12710
12874
  parameters: {
12711
12875
  query?: never;
@@ -12769,7 +12933,7 @@ export interface operations {
12769
12933
  "application/json": {
12770
12934
  /** @description Attribution label; one agent session per (workspace, principal, label). */
12771
12935
  agent_label?: string;
12772
- tools?: ("exec" | "files" | "pty" | "process" | "git" | "browser")[];
12936
+ tools?: ("exec" | "files" | "pty" | "process" | "git" | "browser" | "computer")[];
12773
12937
  };
12774
12938
  };
12775
12939
  };
@@ -13056,7 +13220,7 @@ export interface operations {
13056
13220
  lifetime?: components["schemas"]["WorkspaceLifetime"];
13057
13221
  /** @description Attribution label; one agent session per (workspace, principal, label). */
13058
13222
  agent_label?: string;
13059
- tools?: ("exec" | "files" | "pty" | "process" | "git" | "browser")[];
13223
+ tools?: ("exec" | "files" | "pty" | "process" | "git" | "browser" | "computer")[];
13060
13224
  };
13061
13225
  };
13062
13226
  };
@@ -13364,7 +13528,7 @@ export interface operations {
13364
13528
  "application/json": {
13365
13529
  /** @description Attribution label; one agent session per (workspace, principal, label). */
13366
13530
  agent_label?: string;
13367
- tools?: ("exec" | "files" | "pty" | "process" | "git" | "browser")[];
13531
+ tools?: ("exec" | "files" | "pty" | "process" | "git" | "browser" | "computer")[];
13368
13532
  };
13369
13533
  };
13370
13534
  };
@@ -13585,7 +13749,7 @@ export interface operations {
13585
13749
  project_id?: string;
13586
13750
  /** @description Attribution label; one agent session per (workspace, principal, label). */
13587
13751
  agent_label?: string;
13588
- tools?: ("exec" | "files" | "pty" | "process" | "git" | "browser")[];
13752
+ tools?: ("exec" | "files" | "pty" | "process" | "git" | "browser" | "computer")[];
13589
13753
  /** @description Secret names bound to the workspace (max 50, unique): injected as environment variables into every exec and PTY start (terminal sessions included), together with the call’s own `secret_refs`. Each must name a live secret this workspace may use (its project, its id, and allowed_tools including exec and pty), else 422 details.reason secret_not_available with details.names. */
13590
13754
  secrets?: string[];
13591
13755
  /** @description Open-time inputs of the template version (contracts §24.3): {NAME: string} for its declared text inputs. A new workspace stores each given value, else the declared default; on an existing key `inputs` replaces them all (omitted = unchanged). Secret inputs are not passed here: they bind the stored secret of the same name. 422 input_unknown (undeclared name, details.names), input_invalid (a secret input, a non-string, or a value over 4096 bytes or with CR, LF or NUL; details.names), input_required (details {names, kind}). */
@@ -13596,6 +13760,8 @@ export interface operations {
13596
13760
  /** @description adaptive (the learned timeout, default), never, or fixed:<seconds> (60..604800). Contracts §20.7. */
13597
13761
  idle_policy?: string;
13598
13762
  mode?: components["schemas"]["WorkspaceMode"];
13763
+ /** @description Contracts §45.1: the workspace’s computer use switch (null follows the template); set on create, replaced on an existing key when given. */
13764
+ computer_use?: boolean | null;
13599
13765
  };
13600
13766
  };
13601
13767
  };
@@ -13611,6 +13777,8 @@ export interface operations {
13611
13777
  operation: components["schemas"]["Operation"] | null;
13612
13778
  cell_endpoint: string | null;
13613
13779
  tool_token: components["schemas"]["ToolToken"] | null;
13780
+ /** @description Contracts §46.2: true when this request created the workspace (a new key, or a key whose session ended), false when it reconnected to or resumed an existing one. Of concurrent opens of one new key exactly one says true; a replay with the same Idempotency-Key repeats it. */
13781
+ created: boolean;
13614
13782
  };
13615
13783
  };
13616
13784
  };
@@ -13625,6 +13793,8 @@ export interface operations {
13625
13793
  operation: components["schemas"]["Operation"] | null;
13626
13794
  cell_endpoint: string | null;
13627
13795
  tool_token: components["schemas"]["ToolToken"] | null;
13796
+ /** @description Contracts §46.2: true when this request created the workspace (a new key, or a key whose session ended), false when it reconnected to or resumed an existing one. Of concurrent opens of one new key exactly one says true; a replay with the same Idempotency-Key repeats it. */
13797
+ created: boolean;
13628
13798
  };
13629
13799
  };
13630
13800
  };
@@ -13990,6 +14160,54 @@ export interface operations {
13990
14160
  };
13991
14161
  };
13992
14162
  };
14163
+ putApiV1WorkspacesWorkspaceIdComputerUse: {
14164
+ parameters: {
14165
+ query?: never;
14166
+ header?: never;
14167
+ path: {
14168
+ /** @description UUIDv7, lowercase canonical form. */
14169
+ workspace_id: string;
14170
+ };
14171
+ cookie?: never;
14172
+ };
14173
+ requestBody: {
14174
+ content: {
14175
+ "application/json": {
14176
+ /** @description true or false overrides the template; null follows it. */
14177
+ enabled: boolean | null;
14178
+ };
14179
+ };
14180
+ };
14181
+ responses: {
14182
+ /** @description Default Response */
14183
+ 200: {
14184
+ headers: {
14185
+ [name: string]: unknown;
14186
+ };
14187
+ content: {
14188
+ "application/json": components["schemas"]["ComputerUse"];
14189
+ };
14190
+ };
14191
+ /** @description Default Response */
14192
+ "4XX": {
14193
+ headers: {
14194
+ [name: string]: unknown;
14195
+ };
14196
+ content: {
14197
+ "application/json": components["schemas"]["ErrorBody"];
14198
+ };
14199
+ };
14200
+ /** @description Default Response */
14201
+ "5XX": {
14202
+ headers: {
14203
+ [name: string]: unknown;
14204
+ };
14205
+ content: {
14206
+ "application/json": components["schemas"]["ErrorBody"];
14207
+ };
14208
+ };
14209
+ };
14210
+ };
13993
14211
  postApiV1WorkspacesWorkspaceIdSuspend: {
13994
14212
  parameters: {
13995
14213
  query?: never;
@@ -14053,7 +14271,7 @@ export interface operations {
14053
14271
  "application/json": {
14054
14272
  /** @description Attribution label; one agent session per (workspace, principal, label). */
14055
14273
  agent_label?: string;
14056
- tools?: ("exec" | "files" | "pty" | "process" | "git" | "browser")[];
14274
+ tools?: ("exec" | "files" | "pty" | "process" | "git" | "browser" | "computer")[];
14057
14275
  };
14058
14276
  };
14059
14277
  };
@@ -14340,7 +14558,7 @@ export interface operations {
14340
14558
  lifetime?: components["schemas"]["WorkspaceLifetime"];
14341
14559
  /** @description Attribution label; one agent session per (workspace, principal, label). */
14342
14560
  agent_label?: string;
14343
- tools?: ("exec" | "files" | "pty" | "process" | "git" | "browser")[];
14561
+ tools?: ("exec" | "files" | "pty" | "process" | "git" | "browser" | "computer")[];
14344
14562
  };
14345
14563
  };
14346
14564
  };
@@ -14648,7 +14866,7 @@ export interface operations {
14648
14866
  "application/json": {
14649
14867
  /** @description Attribution label; one agent session per (workspace, principal, label). */
14650
14868
  agent_label?: string;
14651
- tools?: ("exec" | "files" | "pty" | "process" | "git" | "browser")[];
14869
+ tools?: ("exec" | "files" | "pty" | "process" | "git" | "browser" | "computer")[];
14652
14870
  };
14653
14871
  };
14654
14872
  };
@@ -14795,8 +15013,11 @@ export interface operations {
14795
15013
  * @description UUIDv7, lowercase canonical form.
14796
15014
  */
14797
15015
  workspace_id: string;
14798
- /** @enum {string} */
14799
- tool: "exec" | "files" | "pty" | "process" | "git" | "browser";
15016
+ /**
15017
+ * @description computer (contracts §45): the workspace desktop; a tool token carries it only while the workspace’s computer use is on.
15018
+ * @enum {string}
15019
+ */
15020
+ tool: "exec" | "files" | "pty" | "process" | "git" | "browser" | "computer";
14800
15021
  /**
14801
15022
  * Format: uuid
14802
15023
  * @description UUIDv7, lowercase canonical form.
@@ -16570,6 +16791,8 @@ export interface operations {
16570
16791
  memory_mib: number | null;
16571
16792
  idle_policy: string | null;
16572
16793
  };
16794
+ /** @description Contracts §45.1: the template’s computer use switch for its workspaces (a workspace may override it). Set by the owning organization; platform templates are off. */
16795
+ computer_use: boolean;
16573
16796
  open_version: {
16574
16797
  /**
16575
16798
  * Format: uuid
@@ -16787,6 +17010,8 @@ export interface operations {
16787
17010
  memory_mib: number | null;
16788
17011
  idle_policy: string | null;
16789
17012
  };
17013
+ /** @description Contracts §45.1: the template’s computer use switch for its workspaces (a workspace may override it). Set by the owning organization; platform templates are off. */
17014
+ computer_use: boolean;
16790
17015
  open_version: {
16791
17016
  /**
16792
17017
  * Format: uuid
@@ -17135,6 +17360,8 @@ export interface operations {
17135
17360
  memory_mib: number | null;
17136
17361
  idle_policy: string | null;
17137
17362
  };
17363
+ /** @description Contracts §45.1: the template’s computer use switch for its workspaces (a workspace may override it). Set by the owning organization; platform templates are off. */
17364
+ computer_use: boolean;
17138
17365
  open_version: {
17139
17366
  /**
17140
17367
  * Format: uuid
@@ -17350,6 +17577,8 @@ export interface operations {
17350
17577
  memory_mib: number | null;
17351
17578
  idle_policy: string | null;
17352
17579
  };
17580
+ /** @description Contracts §45.1: the template’s computer use switch for its workspaces (a workspace may override it). Set by the owning organization; platform templates are off. */
17581
+ computer_use: boolean;
17353
17582
  open_version: {
17354
17583
  /**
17355
17584
  * Format: uuid
@@ -17652,6 +17881,104 @@ export interface operations {
17652
17881
  };
17653
17882
  };
17654
17883
  };
17884
+ putV1OrganizationsOrganizationIdTemplatesSlugComputerUse: {
17885
+ parameters: {
17886
+ query?: never;
17887
+ header?: never;
17888
+ path: {
17889
+ /** @description UUIDv7, lowercase canonical form. */
17890
+ organization_id: string;
17891
+ slug: string;
17892
+ };
17893
+ cookie?: never;
17894
+ };
17895
+ requestBody: {
17896
+ content: {
17897
+ "application/json": {
17898
+ enabled: boolean;
17899
+ };
17900
+ };
17901
+ };
17902
+ responses: {
17903
+ /** @description Default Response */
17904
+ 200: {
17905
+ headers: {
17906
+ [name: string]: unknown;
17907
+ };
17908
+ content: {
17909
+ "application/json": {
17910
+ enabled: boolean;
17911
+ };
17912
+ };
17913
+ };
17914
+ /** @description Default Response */
17915
+ "4XX": {
17916
+ headers: {
17917
+ [name: string]: unknown;
17918
+ };
17919
+ content: {
17920
+ "application/json": components["schemas"]["ErrorBody"];
17921
+ };
17922
+ };
17923
+ /** @description Default Response */
17924
+ "5XX": {
17925
+ headers: {
17926
+ [name: string]: unknown;
17927
+ };
17928
+ content: {
17929
+ "application/json": components["schemas"]["ErrorBody"];
17930
+ };
17931
+ };
17932
+ };
17933
+ };
17934
+ putV1TemplatesSlugComputerUse: {
17935
+ parameters: {
17936
+ query?: never;
17937
+ header?: never;
17938
+ path: {
17939
+ slug: string;
17940
+ };
17941
+ cookie?: never;
17942
+ };
17943
+ requestBody: {
17944
+ content: {
17945
+ "application/json": {
17946
+ enabled: boolean;
17947
+ };
17948
+ };
17949
+ };
17950
+ responses: {
17951
+ /** @description Default Response */
17952
+ 200: {
17953
+ headers: {
17954
+ [name: string]: unknown;
17955
+ };
17956
+ content: {
17957
+ "application/json": {
17958
+ enabled: boolean;
17959
+ };
17960
+ };
17961
+ };
17962
+ /** @description Default Response */
17963
+ "4XX": {
17964
+ headers: {
17965
+ [name: string]: unknown;
17966
+ };
17967
+ content: {
17968
+ "application/json": components["schemas"]["ErrorBody"];
17969
+ };
17970
+ };
17971
+ /** @description Default Response */
17972
+ "5XX": {
17973
+ headers: {
17974
+ [name: string]: unknown;
17975
+ };
17976
+ content: {
17977
+ "application/json": components["schemas"]["ErrorBody"];
17978
+ };
17979
+ };
17980
+ };
17981
+ };
17655
17982
  getV1OrganizationsOrganizationIdTemplateBuilds: {
17656
17983
  parameters: {
17657
17984
  query?: {
@@ -19735,6 +20062,8 @@ export interface operations {
19735
20062
  memory_mib: number | null;
19736
20063
  idle_policy: string | null;
19737
20064
  };
20065
+ /** @description Contracts §45.1: the template’s computer use switch for its workspaces (a workspace may override it). Set by the owning organization; platform templates are off. */
20066
+ computer_use: boolean;
19738
20067
  open_version: {
19739
20068
  /**
19740
20069
  * Format: uuid
@@ -20081,6 +20410,8 @@ export interface operations {
20081
20410
  memory_mib: number | null;
20082
20411
  idle_policy: string | null;
20083
20412
  };
20413
+ /** @description Contracts §45.1: the template’s computer use switch for its workspaces (a workspace may override it). Set by the owning organization; platform templates are off. */
20414
+ computer_use: boolean;
20084
20415
  open_version: {
20085
20416
  /**
20086
20417
  * Format: uuid
@@ -20432,6 +20763,8 @@ export interface operations {
20432
20763
  memory_mib: number | null;
20433
20764
  idle_policy: string | null;
20434
20765
  };
20766
+ /** @description Contracts §45.1: the template’s computer use switch for its workspaces (a workspace may override it). Set by the owning organization; platform templates are off. */
20767
+ computer_use: boolean;
20435
20768
  open_version: {
20436
20769
  /**
20437
20770
  * Format: uuid
@@ -20649,6 +20982,8 @@ export interface operations {
20649
20982
  memory_mib: number | null;
20650
20983
  idle_policy: string | null;
20651
20984
  };
20985
+ /** @description Contracts §45.1: the template’s computer use switch for its workspaces (a workspace may override it). Set by the owning organization; platform templates are off. */
20986
+ computer_use: boolean;
20652
20987
  open_version: {
20653
20988
  /**
20654
20989
  * Format: uuid
@@ -20951,6 +21286,56 @@ export interface operations {
20951
21286
  };
20952
21287
  };
20953
21288
  };
21289
+ putApiV1OrganizationsOrganizationIdTemplatesSlugComputerUse: {
21290
+ parameters: {
21291
+ query?: never;
21292
+ header?: never;
21293
+ path: {
21294
+ /** @description UUIDv7, lowercase canonical form. */
21295
+ organization_id: string;
21296
+ slug: string;
21297
+ };
21298
+ cookie?: never;
21299
+ };
21300
+ requestBody: {
21301
+ content: {
21302
+ "application/json": {
21303
+ enabled: boolean;
21304
+ };
21305
+ };
21306
+ };
21307
+ responses: {
21308
+ /** @description Default Response */
21309
+ 200: {
21310
+ headers: {
21311
+ [name: string]: unknown;
21312
+ };
21313
+ content: {
21314
+ "application/json": {
21315
+ enabled: boolean;
21316
+ };
21317
+ };
21318
+ };
21319
+ /** @description Default Response */
21320
+ "4XX": {
21321
+ headers: {
21322
+ [name: string]: unknown;
21323
+ };
21324
+ content: {
21325
+ "application/json": components["schemas"]["ErrorBody"];
21326
+ };
21327
+ };
21328
+ /** @description Default Response */
21329
+ "5XX": {
21330
+ headers: {
21331
+ [name: string]: unknown;
21332
+ };
21333
+ content: {
21334
+ "application/json": components["schemas"]["ErrorBody"];
21335
+ };
21336
+ };
21337
+ };
21338
+ };
20954
21339
  getApiV1OrganizationsOrganizationIdTemplateBuilds: {
20955
21340
  parameters: {
20956
21341
  query?: {
@@ -22854,6 +23239,8 @@ export interface operations {
22854
23239
  memory_mib: number | null;
22855
23240
  idle_policy: string | null;
22856
23241
  };
23242
+ /** @description Contracts §45.1: the template’s computer use switch for its workspaces (a workspace may override it). Set by the owning organization; platform templates are off. */
23243
+ computer_use: boolean;
22857
23244
  open_version: {
22858
23245
  /**
22859
23246
  * Format: uuid
@@ -23200,6 +23587,8 @@ export interface operations {
23200
23587
  memory_mib: number | null;
23201
23588
  idle_policy: string | null;
23202
23589
  };
23590
+ /** @description Contracts §45.1: the template’s computer use switch for its workspaces (a workspace may override it). Set by the owning organization; platform templates are off. */
23591
+ computer_use: boolean;
23203
23592
  open_version: {
23204
23593
  /**
23205
23594
  * Format: uuid
@@ -26332,8 +26721,11 @@ export interface operations {
26332
26721
  */
26333
26722
  id: string;
26334
26723
  };
26335
- /** @enum {string} */
26336
- tool: "exec" | "files" | "pty" | "process" | "git" | "browser";
26724
+ /**
26725
+ * @description computer (contracts §45): the workspace desktop; a tool token carries it only while the workspace’s computer use is on.
26726
+ * @enum {string}
26727
+ */
26728
+ tool: "exec" | "files" | "pty" | "process" | "git" | "browser" | "computer";
26337
26729
  outcome: "granted" | "denied" | "failed";
26338
26730
  reason: string | null;
26339
26731
  ownership_epoch: number | null;
@@ -26384,8 +26776,11 @@ export interface operations {
26384
26776
  * @description UUIDv7, lowercase canonical form.
26385
26777
  */
26386
26778
  workspace_id: string;
26387
- /** @enum {string} */
26388
- tool: "exec" | "files" | "pty" | "process" | "git" | "browser";
26779
+ /**
26780
+ * @description computer (contracts §45): the workspace desktop; a tool token carries it only while the workspace’s computer use is on.
26781
+ * @enum {string}
26782
+ */
26783
+ tool: "exec" | "files" | "pty" | "process" | "git" | "browser" | "computer";
26389
26784
  /** @description The start’s `secret_refs` together with the workspace’s bound names (app.workspace_secret_bindings), each name once: at most 50 + 50. */
26390
26785
  names: string[];
26391
26786
  /** @description The cell’s exec/PTY session id, recorded for correlation. */
@@ -26406,8 +26801,11 @@ export interface operations {
26406
26801
  * @description UUIDv7, lowercase canonical form.
26407
26802
  */
26408
26803
  workspace_id: string;
26409
- /** @enum {string} */
26410
- tool: "exec" | "files" | "pty" | "process" | "git" | "browser";
26804
+ /**
26805
+ * @description computer (contracts §45): the workspace desktop; a tool token carries it only while the workspace’s computer use is on.
26806
+ * @enum {string}
26807
+ */
26808
+ tool: "exec" | "files" | "pty" | "process" | "git" | "browser" | "computer";
26411
26809
  /**
26412
26810
  * Format: uuid
26413
26811
  * @description UUIDv7, lowercase canonical form.
@@ -27420,8 +27818,11 @@ export interface operations {
27420
27818
  */
27421
27819
  id: string;
27422
27820
  };
27423
- /** @enum {string} */
27424
- tool: "exec" | "files" | "pty" | "process" | "git" | "browser";
27821
+ /**
27822
+ * @description computer (contracts §45): the workspace desktop; a tool token carries it only while the workspace’s computer use is on.
27823
+ * @enum {string}
27824
+ */
27825
+ tool: "exec" | "files" | "pty" | "process" | "git" | "browser" | "computer";
27425
27826
  outcome: "granted" | "denied" | "failed";
27426
27827
  reason: string | null;
27427
27828
  ownership_epoch: number | null;
@@ -38700,15 +39101,9 @@ export interface operations {
38700
39101
  };
38701
39102
  getApiV1OauthAuthorization: {
38702
39103
  parameters: {
38703
- query?: {
38704
- response_type?: string;
38705
- client_id?: string;
38706
- redirect_uri?: string;
38707
- code_challenge?: string;
38708
- code_challenge_method?: string;
38709
- scope?: string;
38710
- state?: string;
38711
- resource?: string;
39104
+ query: {
39105
+ /** @description The `request` parameter of /connect: the pending authorization request /oauth/authorize stored. */
39106
+ request: string;
38712
39107
  };
38713
39108
  header?: never;
38714
39109
  path?: never;
@@ -38755,19 +39150,8 @@ export interface operations {
38755
39150
  requestBody: {
38756
39151
  content: {
38757
39152
  "application/json": {
38758
- /** @description The authorization request exactly as /oauth/authorize received it (RFC 6749 §4.1.1, PKCE S256, RFC 8707 resource). */
38759
- request: {
38760
- response_type?: string;
38761
- client_id?: string;
38762
- redirect_uri?: string;
38763
- code_challenge?: string;
38764
- code_challenge_method?: string;
38765
- scope?: string;
38766
- state?: string;
38767
- resource?: string;
38768
- } & {
38769
- [key: string]: unknown;
38770
- };
39153
+ /** @description The `request` parameter of /connect: the pending authorization request /oauth/authorize stored. */
39154
+ request: string;
38771
39155
  decision: "approve" | "deny";
38772
39156
  /**
38773
39157
  * Format: uuid