From 5fafd1be604e7e92632bd66c7a073f1e20e351ca Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Mon, 12 Jan 2026 14:46:37 +0000 Subject: [PATCH 01/29] codegen metadata --- .stats.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.stats.yml b/.stats.yml index e42a5ca..cf214ce 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 160 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-3935e467f9c15925790aada293124db82bb5d6840eeac52d81fbac6a9b0fd154.yml -openapi_spec_hash: b417d7f10ea430216e9b70e4468a3212 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-bc2d9ee7f9a0aea1a4305b5487eac32742d6aea1e515616a8a2eda759cbb5b8f.yml +openapi_spec_hash: 1832681b749df9e2a56e2ca728572575 config_hash: d3267594264bfb76d2ee7e881d5f8a5a From ca0a81c7ba21a0011f546806dfce150ce83aa7dc Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Mon, 12 Jan 2026 15:45:39 +0000 Subject: [PATCH 02/29] feat: Define SCIMConfiguration database schema --- .stats.yml | 4 ++-- src/resources/shared.ts | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.stats.yml b/.stats.yml index cf214ce..df7a521 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 160 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-bc2d9ee7f9a0aea1a4305b5487eac32742d6aea1e515616a8a2eda759cbb5b8f.yml -openapi_spec_hash: 1832681b749df9e2a56e2ca728572575 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-f35d75f04023f8de20cc787ab5202c4853a79ea14fa8e639f598e034b312207f.yml +openapi_spec_hash: 0b2bf8b46a5bb29402fb9ae08ce6314f config_hash: d3267594264bfb76d2ee7e881d5f8a5a diff --git a/src/resources/shared.ts b/src/resources/shared.ts index bd4015d..236648b 100644 --- a/src/resources/shared.ts +++ b/src/resources/shared.ts @@ -225,7 +225,8 @@ export type ResourceType = | 'RESOURCE_TYPE_CUSTOM_DOMAIN' | 'RESOURCE_TYPE_ROLE_ASSIGNMENT_CHANGED' | 'RESOURCE_TYPE_GROUP_MEMBERSHIP_CHANGED' - | 'RESOURCE_TYPE_WEBHOOK'; + | 'RESOURCE_TYPE_WEBHOOK' + | 'RESOURCE_TYPE_SCIM_CONFIGURATION'; export interface RunsOn { docker?: RunsOn.Docker; From a5d31a49ae5c6446019060a2c35f058d919aefb7 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Mon, 12 Jan 2026 17:16:20 +0000 Subject: [PATCH 03/29] feat(api): improve SearchRepositories pagination with next_page and total_count --- .stats.yml | 4 ++-- src/resources/runners/runners.ts | 13 ++++++++++--- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/.stats.yml b/.stats.yml index df7a521..7ce5377 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 160 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-f35d75f04023f8de20cc787ab5202c4853a79ea14fa8e639f598e034b312207f.yml -openapi_spec_hash: 0b2bf8b46a5bb29402fb9ae08ce6314f +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-b40906da1a429be933f59cd9c3b2f7197aef9b302033558e7cbb65579357240a.yml +openapi_spec_hash: bc0aec8cac7bfb2a69792bb43cfe50d2 config_hash: d3267594264bfb76d2ee7e881d5f8a5a diff --git a/src/resources/runners/runners.ts b/src/resources/runners/runners.ts index aa02a4c..c1a6fa5 100644 --- a/src/resources/runners/runners.ts +++ b/src/resources/runners/runners.ts @@ -962,12 +962,16 @@ export namespace RunnerParseContextURLResponse { export interface RunnerSearchRepositoriesResponse { /** - * Last page in the responses + * Deprecated: Use pagination token instead. Total pages can be extracted from + * token. */ lastPage?: number; /** - * Pagination information for the response + * Pagination information for the response. Token format: + * "NEXT_PAGE/TOTAL_PAGES/TOTAL_COUNT" (e.g., "2/40/1000"). Use -1 for unknown + * values (e.g., "2/-1/-1" when totals unavailable). Empty token means no more + * pages. */ pagination?: RunnerSearchRepositoriesResponse.Pagination; @@ -979,7 +983,10 @@ export interface RunnerSearchRepositoriesResponse { export namespace RunnerSearchRepositoriesResponse { /** - * Pagination information for the response + * Pagination information for the response. Token format: + * "NEXT_PAGE/TOTAL_PAGES/TOTAL_COUNT" (e.g., "2/40/1000"). Use -1 for unknown + * values (e.g., "2/-1/-1" when totals unavailable). Empty token means no more + * pages. */ export interface Pagination { /** From 303dfe5a3820e92dcf9293b138dd19c153026b81 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 13 Jan 2026 11:28:31 +0000 Subject: [PATCH 04/29] codegen metadata --- .stats.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.stats.yml b/.stats.yml index 7ce5377..d535149 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 160 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-b40906da1a429be933f59cd9c3b2f7197aef9b302033558e7cbb65579357240a.yml -openapi_spec_hash: bc0aec8cac7bfb2a69792bb43cfe50d2 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-46e0124fe8e07933a6ea784e81b4d02086696c246f519aaa34b087f46410c818.yml +openapi_spec_hash: fe98c15ea1e320c05593cd57457e4af5 config_hash: d3267594264bfb76d2ee7e881d5f8a5a From 4b2ec351c29bad4f8ac8cb7491404f38fc434e19 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 13 Jan 2026 20:35:49 +0000 Subject: [PATCH 05/29] chore: fix typo in descriptions --- src/resources/agents.ts | 8 ++++---- src/resources/environments/classes.ts | 2 +- src/resources/environments/environments.ts | 2 +- src/resources/events.ts | 2 +- src/resources/groups/memberships.ts | 2 +- src/resources/organizations/domain-verifications.ts | 4 ++-- src/resources/organizations/organizations.ts | 2 +- src/resources/organizations/sso-configurations.ts | 2 +- src/resources/projects/projects.ts | 2 +- .../runners/configurations/environment-classes.ts | 2 +- .../runners/configurations/host-authentication-tokens.ts | 4 ++-- src/resources/runners/configurations/scm-integrations.ts | 2 +- src/resources/runners/runners.ts | 2 +- src/resources/secrets.ts | 2 +- src/resources/users/pats.ts | 4 ++-- 15 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/resources/agents.ts b/src/resources/agents.ts index ec832cf..8dbb60d 100644 --- a/src/resources/agents.ts +++ b/src/resources/agents.ts @@ -1244,12 +1244,12 @@ export interface AgentDeletePromptParams { export interface AgentListExecutionsParams extends AgentExecutionsPageParams { /** - * Body param: + * Body param */ filter?: AgentListExecutionsParams.Filter; /** - * Body param: + * Body param */ pagination?: AgentListExecutionsParams.Pagination; } @@ -1290,12 +1290,12 @@ export namespace AgentListExecutionsParams { export interface AgentListPromptsParams extends PromptsPageParams { /** - * Body param: + * Body param */ filter?: AgentListPromptsParams.Filter; /** - * Body param: + * Body param */ pagination?: AgentListPromptsParams.Pagination; } diff --git a/src/resources/environments/classes.ts b/src/resources/environments/classes.ts index fa0223f..77b5f68 100644 --- a/src/resources/environments/classes.ts +++ b/src/resources/environments/classes.ts @@ -55,7 +55,7 @@ export class Classes extends APIResource { export interface ClassListParams extends EnvironmentClassesPageParams { /** - * Body param: + * Body param */ filter?: ClassListParams.Filter; diff --git a/src/resources/environments/environments.ts b/src/resources/environments/environments.ts index 988d166..d94477f 100644 --- a/src/resources/environments/environments.ts +++ b/src/resources/environments/environments.ts @@ -1693,7 +1693,7 @@ export namespace EnvironmentUpdateParams { export interface EnvironmentListParams extends EnvironmentsPageParams { /** - * Body param: + * Body param */ filter?: EnvironmentListParams.Filter; diff --git a/src/resources/events.ts b/src/resources/events.ts index bb25c8b..4fc6a44 100644 --- a/src/resources/events.ts +++ b/src/resources/events.ts @@ -231,7 +231,7 @@ export interface EventWatchResponse { export interface EventListParams extends EntriesPageParams { /** - * Body param: + * Body param */ filter?: EventListParams.Filter; diff --git a/src/resources/groups/memberships.ts b/src/resources/groups/memberships.ts index 20e0929..977b08f 100644 --- a/src/resources/groups/memberships.ts +++ b/src/resources/groups/memberships.ts @@ -246,7 +246,7 @@ export interface MembershipRetrieveParams { export interface MembershipListParams extends MembersPageParams { /** - * Body param: + * Body param */ groupId?: string; diff --git a/src/resources/organizations/domain-verifications.ts b/src/resources/organizations/domain-verifications.ts index 911c257..e5044cb 100644 --- a/src/resources/organizations/domain-verifications.ts +++ b/src/resources/organizations/domain-verifications.ts @@ -446,12 +446,12 @@ export interface DomainVerificationRetrieveParams { export interface DomainVerificationListParams extends DomainVerificationsPageParams { /** - * Body param: + * Body param */ organizationId: string; /** - * Body param: + * Body param */ pagination?: DomainVerificationListParams.Pagination; } diff --git a/src/resources/organizations/organizations.ts b/src/resources/organizations/organizations.ts index f2cf942..42e23d4 100644 --- a/src/resources/organizations/organizations.ts +++ b/src/resources/organizations/organizations.ts @@ -852,7 +852,7 @@ export interface OrganizationListMembersParams extends MembersPageParams { organizationId: string; /** - * Body param: + * Body param */ filter?: OrganizationListMembersParams.Filter; diff --git a/src/resources/organizations/sso-configurations.ts b/src/resources/organizations/sso-configurations.ts index 6b0a9d7..d0b1b0b 100644 --- a/src/resources/organizations/sso-configurations.ts +++ b/src/resources/organizations/sso-configurations.ts @@ -383,7 +383,7 @@ export interface SSOConfigurationListParams extends SSOConfigurationsPageParams organizationId: string; /** - * Body param: + * Body param */ pagination?: SSOConfigurationListParams.Pagination; } diff --git a/src/resources/projects/projects.ts b/src/resources/projects/projects.ts index 093c604..1de1324 100644 --- a/src/resources/projects/projects.ts +++ b/src/resources/projects/projects.ts @@ -838,7 +838,7 @@ export interface ProjectUpdateParams { export interface ProjectListParams extends ProjectsPageParams { /** - * Body param: + * Body param */ filter?: ProjectListParams.Filter; diff --git a/src/resources/runners/configurations/environment-classes.ts b/src/resources/runners/configurations/environment-classes.ts index 113c0eb..2de936a 100644 --- a/src/resources/runners/configurations/environment-classes.ts +++ b/src/resources/runners/configurations/environment-classes.ts @@ -243,7 +243,7 @@ export interface EnvironmentClassUpdateParams { export interface EnvironmentClassListParams extends EnvironmentClassesPageParams { /** - * Body param: + * Body param */ filter?: EnvironmentClassListParams.Filter; diff --git a/src/resources/runners/configurations/host-authentication-tokens.ts b/src/resources/runners/configurations/host-authentication-tokens.ts index 4ad2b74..3d4715f 100644 --- a/src/resources/runners/configurations/host-authentication-tokens.ts +++ b/src/resources/runners/configurations/host-authentication-tokens.ts @@ -612,12 +612,12 @@ export interface HostAuthenticationTokenUpdateParams { export interface HostAuthenticationTokenListParams extends TokensPageParams { /** - * Body param: + * Body param */ filter?: HostAuthenticationTokenListParams.Filter; /** - * Body param: + * Body param */ pagination?: HostAuthenticationTokenListParams.Pagination; } diff --git a/src/resources/runners/configurations/scm-integrations.ts b/src/resources/runners/configurations/scm-integrations.ts index 7c19374..28daf0a 100644 --- a/src/resources/runners/configurations/scm-integrations.ts +++ b/src/resources/runners/configurations/scm-integrations.ts @@ -368,7 +368,7 @@ export interface ScmIntegrationUpdateParams { export interface ScmIntegrationListParams extends IntegrationsPageParams { /** - * Body param: + * Body param */ filter?: ScmIntegrationListParams.Filter; diff --git a/src/resources/runners/runners.ts b/src/resources/runners/runners.ts index c1a6fa5..0499741 100644 --- a/src/resources/runners/runners.ts +++ b/src/resources/runners/runners.ts @@ -1136,7 +1136,7 @@ export namespace RunnerUpdateParams { export interface RunnerListParams extends RunnersPageParams { /** - * Body param: + * Body param */ filter?: RunnerListParams.Filter; diff --git a/src/resources/secrets.ts b/src/resources/secrets.ts index 84069d3..28c28a3 100644 --- a/src/resources/secrets.ts +++ b/src/resources/secrets.ts @@ -525,7 +525,7 @@ export interface SecretCreateParams { export interface SecretListParams extends SecretsPageParams { /** - * Body param: + * Body param */ filter?: SecretListParams.Filter; diff --git a/src/resources/users/pats.ts b/src/resources/users/pats.ts index 22e4c6b..165fe06 100644 --- a/src/resources/users/pats.ts +++ b/src/resources/users/pats.ts @@ -419,12 +419,12 @@ export interface PatGetResponse { export interface PatListParams extends PersonalAccessTokensPageParams { /** - * Body param: + * Body param */ filter?: PatListParams.Filter; /** - * Body param: + * Body param */ pagination?: PatListParams.Pagination; } From 268e2f76cd9fbd1c4a8b359750a45ef9ca3390c1 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 14 Jan 2026 05:26:55 +0000 Subject: [PATCH 06/29] feat: move agent mode from Spec to Status, add AgentModeChange signals --- .stats.yml | 4 ++-- src/resources/agents.ts | 17 +++++++++++------ 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/.stats.yml b/.stats.yml index d535149..a59a947 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 160 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-46e0124fe8e07933a6ea784e81b4d02086696c246f519aaa34b087f46410c818.yml -openapi_spec_hash: fe98c15ea1e320c05593cd57457e4af5 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-cad9422301ea573f7fdbcf5047e421a0a6e963468a9d8f464e47ed1800a8fc75.yml +openapi_spec_hash: b2e5072d4659a5c4fb5d2e8916388af9 config_hash: d3267594264bfb76d2ee7e881d5f8a5a diff --git a/src/resources/agents.ts b/src/resources/agents.ts index 8dbb60d..45f2b52 100644 --- a/src/resources/agents.ts +++ b/src/resources/agents.ts @@ -715,11 +715,6 @@ export namespace AgentExecution { limits?: Spec.Limits; - /** - * mode is the operational mode for this agent execution - */ - mode?: AgentsAPI.AgentMode; - session?: string; /** @@ -791,6 +786,12 @@ export namespace AgentExecution { */ judgement?: string; + /** + * mode is the current operational mode of the agent execution. This is set by the + * agent when entering different modes (e.g., Ralph mode via /ona:ralph command). + */ + mode?: AgentsAPI.AgentMode; + /** * outputs is a map of key-value pairs that can be set by the agent during * execution. Similar to task execution outputs, but with typed values for @@ -905,7 +906,11 @@ export namespace AgentExecution { /** * AgentMode defines the operational mode of an agent */ -export type AgentMode = 'AGENT_MODE_UNSPECIFIED' | 'AGENT_MODE_EXECUTION' | 'AGENT_MODE_PLANNING'; +export type AgentMode = + | 'AGENT_MODE_UNSPECIFIED' + | 'AGENT_MODE_EXECUTION' + | 'AGENT_MODE_PLANNING' + | 'AGENT_MODE_RALPH'; export interface Prompt { id?: string; From 839fe7e7b087641896dce9c79ea62af6bac36675 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 14 Jan 2026 15:02:55 +0000 Subject: [PATCH 07/29] feat(api): add draft and state fields to PullRequest proto --- .stats.yml | 6 +++--- api.md | 1 + src/client.ts | 1 + src/resources/agents.ts | 10 ++++++++++ src/resources/runners/runners.ts | 10 ++++++++++ src/resources/shared.ts | 5 +++++ 6 files changed, 30 insertions(+), 3 deletions(-) diff --git a/.stats.yml b/.stats.yml index a59a947..9004557 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 160 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-cad9422301ea573f7fdbcf5047e421a0a6e963468a9d8f464e47ed1800a8fc75.yml -openapi_spec_hash: b2e5072d4659a5c4fb5d2e8916388af9 -config_hash: d3267594264bfb76d2ee7e881d5f8a5a +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-47577991d03c0dab9d0f219bd3f6cf8cb3ea386a919a10c949318091aca5b10f.yml +openapi_spec_hash: ad236fd154210c60d9aca150a3fd51bc +config_hash: f36d04c8359fe8baec226396a18b309e diff --git a/api.md b/api.md index b1ba44f..2bd5b5e 100644 --- a/api.md +++ b/api.md @@ -15,6 +15,7 @@ Types: - ResourceType - RunsOn - SecretRef +- State - Subject - Task - TaskExecution diff --git a/src/client.ts b/src/client.ts index 6d3d8ef..6e8993f 100644 --- a/src/client.ts +++ b/src/client.ts @@ -1552,6 +1552,7 @@ export declare namespace Gitpod { export type ResourceType = API.ResourceType; export type RunsOn = API.RunsOn; export type SecretRef = API.SecretRef; + export type State = API.State; export type Subject = API.Subject; export type Task = API.Task; export type TaskExecution = API.TaskExecution; diff --git a/src/resources/agents.ts b/src/resources/agents.ts index 45f2b52..db20cff 100644 --- a/src/resources/agents.ts +++ b/src/resources/agents.ts @@ -415,6 +415,11 @@ export namespace AgentCodeContext { */ author?: string; + /** + * Whether this is a draft pull request + */ + draft?: boolean; + /** * Source branch name (the branch being merged from) */ @@ -425,6 +430,11 @@ export namespace AgentCodeContext { */ repository?: PullRequest.Repository; + /** + * Current state of the pull request + */ + state?: Shared.State; + /** * Pull request title */ diff --git a/src/resources/runners/runners.ts b/src/resources/runners/runners.ts index 0499741..f5fa782 100644 --- a/src/resources/runners/runners.ts +++ b/src/resources/runners/runners.ts @@ -918,6 +918,11 @@ export namespace RunnerParseContextURLResponse { */ author?: string; + /** + * Whether this is a draft pull request + */ + draft?: boolean; + /** * Source branch name (the branch being merged from) */ @@ -928,6 +933,11 @@ export namespace RunnerParseContextURLResponse { */ repository?: PullRequest.Repository; + /** + * Current state of the pull request + */ + state?: Shared.State; + /** * Pull request title */ diff --git a/src/resources/shared.ts b/src/resources/shared.ts index 236648b..fe88590 100644 --- a/src/resources/shared.ts +++ b/src/resources/shared.ts @@ -255,6 +255,11 @@ export interface SecretRef { id?: string; } +/** + * Current state of the pull request + */ +export type State = 'STATE_UNSPECIFIED' | 'STATE_OPEN' | 'STATE_CLOSED' | 'STATE_MERGED'; + export interface Subject { /** * id is the UUID of the subject From b473c48922a5c2c3acb5c3a0bb64e6077378ace9 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 14 Jan 2026 18:04:31 +0000 Subject: [PATCH 08/29] feat: [api] sorting for `ListMembers` --- .stats.yml | 4 ++-- src/resources/organizations/organizations.ts | 20 +++++++++++++++++++ .../organizations/organizations.test.ts | 1 + 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/.stats.yml b/.stats.yml index 9004557..3117cef 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 160 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-47577991d03c0dab9d0f219bd3f6cf8cb3ea386a919a10c949318091aca5b10f.yml -openapi_spec_hash: ad236fd154210c60d9aca150a3fd51bc +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-3a8fb9d6b9645a483a08206e944cc388325e210f0bd54daa9e15ee561a37fabc.yml +openapi_spec_hash: fe42cbf3b012e4aebf56f64a675c3dd3 config_hash: f36d04c8359fe8baec226396a18b309e diff --git a/src/resources/organizations/organizations.ts b/src/resources/organizations/organizations.ts index 42e23d4..8e5c330 100644 --- a/src/resources/organizations/organizations.ts +++ b/src/resources/organizations/organizations.ts @@ -860,6 +860,14 @@ export interface OrganizationListMembersParams extends MembersPageParams { * Body param: pagination contains the pagination options for listing members */ pagination?: OrganizationListMembersParams.Pagination; + + /** + * Body param: sort specifies the order of results. When unspecified, the + * authenticated user is returned first, followed by other members sorted by name + * ascending. When an explicit sort is specified, results are sorted purely by the + * requested field without any special handling for the authenticated user. + */ + sort?: OrganizationListMembersParams.Sort; } export namespace OrganizationListMembersParams { @@ -886,6 +894,18 @@ export namespace OrganizationListMembersParams { */ pageSize?: number; } + + /** + * sort specifies the order of results. When unspecified, the authenticated user is + * returned first, followed by other members sorted by name ascending. When an + * explicit sort is specified, results are sorted purely by the requested field + * without any special handling for the authenticated user. + */ + export interface Sort { + field?: 'SORT_FIELD_UNSPECIFIED' | 'SORT_FIELD_NAME' | 'SORT_FIELD_DATE_JOINED'; + + order?: 'SORT_ORDER_UNSPECIFIED' | 'SORT_ORDER_ASC' | 'SORT_ORDER_DESC'; + } } export interface OrganizationSetRoleParams { diff --git a/tests/api-resources/organizations/organizations.test.ts b/tests/api-resources/organizations/organizations.test.ts index 970f752..22873f3 100644 --- a/tests/api-resources/organizations/organizations.test.ts +++ b/tests/api-resources/organizations/organizations.test.ts @@ -145,6 +145,7 @@ describe('resource organizations', () => { pageSize: 0, filter: { search: 'search' }, pagination: { token: 'token', pageSize: 20 }, + sort: { field: 'SORT_FIELD_UNSPECIFIED', order: 'SORT_ORDER_UNSPECIFIED' }, }); }); From 84cd88f927ffd3777d7b8e2a077db25b5fa4559f Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 14 Jan 2026 19:42:10 +0000 Subject: [PATCH 09/29] feat: [backend] Introduce role and member status filtering for `ListMembers` --- .stats.yml | 4 ++-- src/resources/organizations/organizations.ts | 10 ++++++++++ .../api-resources/organizations/organizations.test.ts | 6 +++++- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/.stats.yml b/.stats.yml index 3117cef..f36c8c0 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 160 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-3a8fb9d6b9645a483a08206e944cc388325e210f0bd54daa9e15ee561a37fabc.yml -openapi_spec_hash: fe42cbf3b012e4aebf56f64a675c3dd3 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-13ed0159480c5c02ed02394764e7c528c1110cdc42d2a0ff5fac228f48403a08.yml +openapi_spec_hash: e1b4c20a8a5faee0f2dd22b449e7a106 config_hash: f36d04c8359fe8baec226396a18b309e diff --git a/src/resources/organizations/organizations.ts b/src/resources/organizations/organizations.ts index 8e5c330..aadb8d1 100644 --- a/src/resources/organizations/organizations.ts +++ b/src/resources/organizations/organizations.ts @@ -872,10 +872,20 @@ export interface OrganizationListMembersParams extends MembersPageParams { export namespace OrganizationListMembersParams { export interface Filter { + /** + * roles filters members by their organization role + */ + roles?: Array; + /** * search performs case-insensitive search across member name and email */ search?: string; + + /** + * status filters members by their user status + */ + statuses?: Array; } /** diff --git a/tests/api-resources/organizations/organizations.test.ts b/tests/api-resources/organizations/organizations.test.ts index 22873f3..34fee18 100644 --- a/tests/api-resources/organizations/organizations.test.ts +++ b/tests/api-resources/organizations/organizations.test.ts @@ -143,7 +143,11 @@ describe('resource organizations', () => { organizationId: 'b0e12f6c-4c67-429d-a4a6-d9838b5da047', token: 'token', pageSize: 0, - filter: { search: 'search' }, + filter: { + roles: ['ORGANIZATION_ROLE_UNSPECIFIED'], + search: 'search', + statuses: ['USER_STATUS_UNSPECIFIED'], + }, pagination: { token: 'token', pageSize: 20 }, sort: { field: 'SORT_FIELD_UNSPECIFIED', order: 'SORT_ORDER_UNSPECIFIED' }, }); From 1cd405d34b3ca91d961fd424689960cf715a256b Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 14 Jan 2026 21:11:51 +0000 Subject: [PATCH 10/29] feat(dashboard): show tier badge in org selector --- .stats.yml | 6 +++--- api.md | 2 +- src/client.ts | 3 +-- src/resources/accounts.ts | 9 +++++++-- src/resources/index.ts | 1 - src/resources/organizations/index.ts | 1 - src/resources/organizations/organizations.ts | 10 +--------- src/resources/shared.ts | 7 +++++++ 8 files changed, 20 insertions(+), 19 deletions(-) diff --git a/.stats.yml b/.stats.yml index f36c8c0..5770e67 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 160 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-13ed0159480c5c02ed02394764e7c528c1110cdc42d2a0ff5fac228f48403a08.yml -openapi_spec_hash: e1b4c20a8a5faee0f2dd22b449e7a106 -config_hash: f36d04c8359fe8baec226396a18b309e +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-504fab16d01ad7f81914542fd0523f4dfefce87813891da391b97b1b0a70f563.yml +openapi_spec_hash: 84d9d652cac365c646e01111cee89afc +config_hash: acfe8cf5d6e4b26387e4fefa3bff8409 diff --git a/api.md b/api.md index 2bd5b5e..7f6ec60 100644 --- a/api.md +++ b/api.md @@ -10,6 +10,7 @@ Types: - FieldValue - Gateway - OrganizationRole +- OrganizationTier - Principal - ProjectEnvironmentClass - ResourceType @@ -323,7 +324,6 @@ Types: - InviteDomains - Organization - OrganizationMember -- OrganizationTier - OrganizationCreateResponse - OrganizationRetrieveResponse - OrganizationUpdateResponse diff --git a/src/client.ts b/src/client.ts index 6e8993f..2d5f892 100644 --- a/src/client.ts +++ b/src/client.ts @@ -291,7 +291,6 @@ import { OrganizationRetrieveResponse, OrganizationSetRoleParams, OrganizationSetRoleResponse, - OrganizationTier, OrganizationUpdateParams, OrganizationUpdateResponse, Organizations, @@ -1402,7 +1401,6 @@ export declare namespace Gitpod { type InviteDomains as InviteDomains, type Organization as Organization, type OrganizationMember as OrganizationMember, - type OrganizationTier as OrganizationTier, type OrganizationCreateResponse as OrganizationCreateResponse, type OrganizationRetrieveResponse as OrganizationRetrieveResponse, type OrganizationUpdateResponse as OrganizationUpdateResponse, @@ -1547,6 +1545,7 @@ export declare namespace Gitpod { export type FieldValue = API.FieldValue; export type Gateway = API.Gateway; export type OrganizationRole = API.OrganizationRole; + export type OrganizationTier = API.OrganizationTier; export type Principal = API.Principal; export type ProjectEnvironmentClass = API.ProjectEnvironmentClass; export type ResourceType = API.ResourceType; diff --git a/src/resources/accounts.ts b/src/resources/accounts.ts index 30f8bc7..14c69d4 100644 --- a/src/resources/accounts.ts +++ b/src/resources/accounts.ts @@ -477,10 +477,15 @@ export interface AccountMembership { userRole: Shared.OrganizationRole; /** - * organization_name is the member count of the organization the user is a member - * of + * organization_member_count is the member count of the organization the user is a + * member of */ organizationMemberCount?: number; + + /** + * organization_tier is the tier of the organization (Free, Core, Enterprise) + */ + organizationTier?: Shared.OrganizationTier; } export interface JoinableOrganization { diff --git a/src/resources/index.ts b/src/resources/index.ts index 2dcceb1..2f086c5 100644 --- a/src/resources/index.ts +++ b/src/resources/index.ts @@ -152,7 +152,6 @@ export { type InviteDomains, type Organization, type OrganizationMember, - type OrganizationTier, type OrganizationCreateResponse, type OrganizationRetrieveResponse, type OrganizationUpdateResponse, diff --git a/src/resources/organizations/index.ts b/src/resources/organizations/index.ts index 0e53032..7213192 100644 --- a/src/resources/organizations/index.ts +++ b/src/resources/organizations/index.ts @@ -43,7 +43,6 @@ export { type InviteDomains, type Organization, type OrganizationMember, - type OrganizationTier, type OrganizationCreateResponse, type OrganizationRetrieveResponse, type OrganizationUpdateResponse, diff --git a/src/resources/organizations/organizations.ts b/src/resources/organizations/organizations.ts index aadb8d1..2bfe54c 100644 --- a/src/resources/organizations/organizations.ts +++ b/src/resources/organizations/organizations.ts @@ -524,7 +524,7 @@ export interface Organization { /** * The tier of the organization - free, enterprise or core */ - tier: OrganizationTier; + tier: Shared.OrganizationTier; /** * A Timestamp represents a point in time independent of any time zone or local @@ -732,13 +732,6 @@ export interface OrganizationMember { avatarUrl?: string; } -export type OrganizationTier = - | 'ORGANIZATION_TIER_UNSPECIFIED' - | 'ORGANIZATION_TIER_FREE' - | 'ORGANIZATION_TIER_ENTERPRISE' - | 'ORGANIZATION_TIER_CORE' - | 'ORGANIZATION_TIER_FREE_ONA'; - export interface OrganizationCreateResponse { /** * organization is the created organization @@ -937,7 +930,6 @@ export declare namespace Organizations { type InviteDomains as InviteDomains, type Organization as Organization, type OrganizationMember as OrganizationMember, - type OrganizationTier as OrganizationTier, type OrganizationCreateResponse as OrganizationCreateResponse, type OrganizationRetrieveResponse as OrganizationRetrieveResponse, type OrganizationUpdateResponse as OrganizationUpdateResponse, diff --git a/src/resources/shared.ts b/src/resources/shared.ts index fe88590..5bd1585 100644 --- a/src/resources/shared.ts +++ b/src/resources/shared.ts @@ -154,6 +154,13 @@ export type OrganizationRole = | 'ORGANIZATION_ROLE_ADMIN' | 'ORGANIZATION_ROLE_MEMBER'; +export type OrganizationTier = + | 'ORGANIZATION_TIER_UNSPECIFIED' + | 'ORGANIZATION_TIER_FREE' + | 'ORGANIZATION_TIER_ENTERPRISE' + | 'ORGANIZATION_TIER_CORE' + | 'ORGANIZATION_TIER_FREE_ONA'; + export type Principal = | 'PRINCIPAL_UNSPECIFIED' | 'PRINCIPAL_ACCOUNT' From 1a418394fd33e8ef92fc9a557c20c331a6ce280e Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 15 Jan 2026 00:24:56 +0000 Subject: [PATCH 11/29] chore(internal): upgrade babel, qs, js-yaml --- yarn.lock | 590 ++++++++++++++++++++++++------------------------------ 1 file changed, 266 insertions(+), 324 deletions(-) diff --git a/yarn.lock b/yarn.lock index 87d92c1..b1ef43e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7,14 +7,6 @@ resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== -"@ampproject/remapping@^2.2.0": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" - integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== - dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" - "@andrewbranch/untar.js@^1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@andrewbranch/untar.js/-/untar.js-1.0.3.tgz#ba9494f85eb83017c5c855763969caf1d0adea00" @@ -46,155 +38,119 @@ typescript "5.6.1-rc" validate-npm-package-name "^5.0.0" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.22.13", "@babel/code-frame@^7.23.5": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244" - integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.28.6.tgz#72499312ec58b1e2245ba4a4f550c132be4982f7" + integrity sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q== dependencies: - "@babel/highlight" "^7.23.4" - chalk "^2.4.2" + "@babel/helper-validator-identifier" "^7.28.5" + js-tokens "^4.0.0" + picocolors "^1.1.1" -"@babel/compat-data@^7.23.5": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.5.tgz#ffb878728bb6bdcb6f4510aa51b1be9afb8cfd98" - integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== +"@babel/compat-data@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.28.6.tgz#103f466803fa0f059e82ccac271475470570d74c" + integrity sha512-2lfu57JtzctfIrcGMz992hyLlByuzgIk58+hhGCxjKZ3rWI82NnVLjXcaTqkI2NvlcvOskZaiZ5kjUALo3Lpxg== "@babel/core@^7.11.6", "@babel/core@^7.12.3": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.6.tgz#8be77cd77c55baadcc1eae1c33df90ab6d2151d4" - integrity sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.23.5" - "@babel/generator" "^7.23.6" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helpers" "^7.23.6" - "@babel/parser" "^7.23.6" - "@babel/template" "^7.22.15" - "@babel/traverse" "^7.23.6" - "@babel/types" "^7.23.6" + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.28.6.tgz#531bf883a1126e53501ba46eb3bb414047af507f" + integrity sha512-H3mcG6ZDLTlYfaSNi0iOKkigqMFvkTKlGUYlD8GW7nNOYRrevuA46iTypPyv+06V3fEmvvazfntkBU34L0azAw== + dependencies: + "@babel/code-frame" "^7.28.6" + "@babel/generator" "^7.28.6" + "@babel/helper-compilation-targets" "^7.28.6" + "@babel/helper-module-transforms" "^7.28.6" + "@babel/helpers" "^7.28.6" + "@babel/parser" "^7.28.6" + "@babel/template" "^7.28.6" + "@babel/traverse" "^7.28.6" + "@babel/types" "^7.28.6" + "@jridgewell/remapping" "^2.3.5" convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.23.6", "@babel/generator@^7.7.2": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.6.tgz#9e1fca4811c77a10580d17d26b57b036133f3c2e" - integrity sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw== +"@babel/generator@^7.28.6", "@babel/generator@^7.7.2": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.28.6.tgz#48dcc65d98fcc8626a48f72b62e263d25fc3c3f1" + integrity sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw== + dependencies: + "@babel/parser" "^7.28.6" + "@babel/types" "^7.28.6" + "@jridgewell/gen-mapping" "^0.3.12" + "@jridgewell/trace-mapping" "^0.3.28" + jsesc "^3.0.2" + +"@babel/helper-compilation-targets@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz#32c4a3f41f12ed1532179b108a4d746e105c2b25" + integrity sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA== + dependencies: + "@babel/compat-data" "^7.28.6" + "@babel/helper-validator-option" "^7.27.1" + browserslist "^4.24.0" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-globals@^7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/helper-globals/-/helper-globals-7.28.0.tgz#b9430df2aa4e17bc28665eadeae8aa1d985e6674" + integrity sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw== + +"@babel/helper-module-imports@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz#60632cbd6ffb70b22823187201116762a03e2d5c" + integrity sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw== dependencies: - "@babel/types" "^7.23.6" - "@jridgewell/gen-mapping" "^0.3.2" - "@jridgewell/trace-mapping" "^0.3.17" - jsesc "^2.5.1" + "@babel/traverse" "^7.28.6" + "@babel/types" "^7.28.6" -"@babel/helper-compilation-targets@^7.23.6": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" - integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== +"@babel/helper-module-transforms@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz#9312d9d9e56edc35aeb6e95c25d4106b50b9eb1e" + integrity sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA== dependencies: - "@babel/compat-data" "^7.23.5" - "@babel/helper-validator-option" "^7.23.5" - browserslist "^4.22.2" - lru-cache "^5.1.1" - semver "^6.3.1" + "@babel/helper-module-imports" "^7.28.6" + "@babel/helper-validator-identifier" "^7.28.5" + "@babel/traverse" "^7.28.6" -"@babel/helper-environment-visitor@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" - integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== - -"@babel/helper-function-name@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" - integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== - dependencies: - "@babel/template" "^7.22.15" - "@babel/types" "^7.23.0" - -"@babel/helper-hoist-variables@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" - integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-module-imports@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" - integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== - dependencies: - "@babel/types" "^7.22.15" - -"@babel/helper-module-transforms@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" - integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-simple-access" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/helper-validator-identifier" "^7.22.20" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" - integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== - -"@babel/helper-simple-access@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" - integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-split-export-declaration@^7.22.6": - version "7.22.6" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" - integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-string-parser@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83" - integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== - -"@babel/helper-validator-identifier@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" - integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== - -"@babel/helper-validator-option@^7.23.5": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" - integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== - -"@babel/helpers@^7.23.6": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.6.tgz#d03af2ee5fb34691eec0cda90f5ecbb4d4da145a" - integrity sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA== - dependencies: - "@babel/template" "^7.22.15" - "@babel/traverse" "^7.23.6" - "@babel/types" "^7.23.6" - -"@babel/highlight@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b" - integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== - dependencies: - "@babel/helper-validator-identifier" "^7.22.20" - chalk "^2.4.2" - js-tokens "^4.0.0" +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.28.6", "@babel/helper-plugin-utils@^7.8.0": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz#6f13ea251b68c8532e985fd532f28741a8af9ac8" + integrity sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug== + +"@babel/helper-string-parser@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" + integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== + +"@babel/helper-validator-identifier@^7.28.5": + version "7.28.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz#010b6938fab7cb7df74aa2bbc06aa503b8fe5fb4" + integrity sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q== + +"@babel/helper-validator-option@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz#fa52f5b1e7db1ab049445b421c4471303897702f" + integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg== + +"@babel/helpers@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.28.6.tgz#fca903a313ae675617936e8998b814c415cbf5d7" + integrity sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw== + dependencies: + "@babel/template" "^7.28.6" + "@babel/types" "^7.28.6" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.15", "@babel/parser@^7.23.6": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.6.tgz#ba1c9e512bda72a47e285ae42aff9d2a635a9e3b" - integrity sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.6.tgz#f01a8885b7fa1e56dd8a155130226cd698ef13fd" + integrity sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ== + dependencies: + "@babel/types" "^7.28.6" "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" @@ -210,14 +166,28 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-class-properties@^7.8.3": +"@babel/plugin-syntax-class-properties@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-syntax-import-meta@^7.8.3": +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-import-attributes@^7.24.7": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz#b71d5914665f60124e133696f17cd7669062c503" + integrity sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw== + dependencies: + "@babel/helper-plugin-utils" "^7.28.6" + +"@babel/plugin-syntax-import-meta@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== @@ -232,13 +202,13 @@ "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-jsx@^7.7.2": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz#8f2e4f8a9b5f9aa16067e142c1ac9cd9f810f473" - integrity sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg== + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz#f8ca28bbd84883b5fea0e447c635b81ba73997ee" + integrity sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w== dependencies: - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== @@ -252,7 +222,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-numeric-separator@^7.8.3": +"@babel/plugin-syntax-numeric-separator@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== @@ -280,7 +250,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-top-level-await@^7.8.3": +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== @@ -288,45 +265,41 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-typescript@^7.7.2": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz#24f460c85dbbc983cd2b9c4994178bcc01df958f" - integrity sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/template@^7.22.15", "@babel/template@^7.3.3": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" - integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== - dependencies: - "@babel/code-frame" "^7.22.13" - "@babel/parser" "^7.22.15" - "@babel/types" "^7.22.15" - -"@babel/traverse@^7.23.6": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.6.tgz#b53526a2367a0dd6edc423637f3d2d0f2521abc5" - integrity sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ== - dependencies: - "@babel/code-frame" "^7.23.5" - "@babel/generator" "^7.23.6" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.23.6" - "@babel/types" "^7.23.6" + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz#c7b2ddf1d0a811145b1de800d1abd146af92e3a2" + integrity sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A== + dependencies: + "@babel/helper-plugin-utils" "^7.28.6" + +"@babel/template@^7.28.6", "@babel/template@^7.3.3": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.28.6.tgz#0e7e56ecedb78aeef66ce7972b082fce76a23e57" + integrity sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ== + dependencies: + "@babel/code-frame" "^7.28.6" + "@babel/parser" "^7.28.6" + "@babel/types" "^7.28.6" + +"@babel/traverse@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.28.6.tgz#871ddc79a80599a5030c53b1cc48cbe3a5583c2e" + integrity sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg== + dependencies: + "@babel/code-frame" "^7.28.6" + "@babel/generator" "^7.28.6" + "@babel/helper-globals" "^7.28.0" + "@babel/parser" "^7.28.6" + "@babel/template" "^7.28.6" + "@babel/types" "^7.28.6" debug "^4.3.1" - globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.6", "@babel/types@^7.3.3": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.6.tgz#be33fdb151e1f5a56877d704492c240fc71c7ccd" - integrity sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg== +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.28.6", "@babel/types@^7.3.3": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.6.tgz#c3e9377f1b155005bcc4c46020e7e394e13089df" + integrity sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg== dependencies: - "@babel/helper-string-parser" "^7.23.4" - "@babel/helper-validator-identifier" "^7.22.20" - to-fast-properties "^2.0.0" + "@babel/helper-string-parser" "^7.27.1" + "@babel/helper-validator-identifier" "^7.28.5" "@bcoe/v8-coverage@^0.2.3": version "0.2.3" @@ -668,31 +641,38 @@ "@types/yargs" "^17.0.8" chalk "^4.0.0" -"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" - integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== +"@jridgewell/gen-mapping@^0.3.12", "@jridgewell/gen-mapping@^0.3.5": + version "0.3.13" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz#6342a19f44347518c93e43b1ac69deb3c4656a1f" + integrity sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA== + dependencies: + "@jridgewell/sourcemap-codec" "^1.5.0" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/remapping@^2.3.5": + version "2.3.5" + resolved "https://registry.yarnpkg.com/@jridgewell/remapping/-/remapping-2.3.5.tgz#375c476d1972947851ba1e15ae8f123047445aa1" + integrity sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ== dependencies: - "@jridgewell/set-array" "^1.0.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.9" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.24" "@jridgewell/resolve-uri@^3.1.0": version "3.1.1" resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== -"@jridgewell/set-array@^1.0.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" - integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== - -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": +"@jridgewell/sourcemap-codec@^1.4.14": version "1.4.15" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.9": +"@jridgewell/sourcemap-codec@^1.5.0": + version "1.5.5" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz#6912b00d2c631c0d15ce1a7ab57cd657f2a8f8ba" + integrity sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og== + +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.18": version "0.3.20" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== @@ -700,6 +680,14 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" +"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.28": + version "0.3.31" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz#db15d6781c931f3a251a3dac39501c98a6082fd0" + integrity sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -952,9 +940,9 @@ undici-types "~5.26.4" "@types/node@^18.11.18": - version "18.19.76" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.76.tgz#7991658e0ba41ad30cc8be01c9bbe580d58f2112" - integrity sha512-yvR7Q9LdPz2vGpmpJX5LolrgRdWvB67MJKDPSgIIzpFbaf9a1j/f5DnLp5VDyHGMR0QZHlTr1afsD87QCXFHKw== + version "18.19.130" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.130.tgz#da4c6324793a79defb7a62cba3947ec5add00d59" + integrity sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg== dependencies: undici-types "~5.26.4" @@ -966,9 +954,9 @@ undici-types "~6.21.0" "@types/ssh2@^1.15.4": - version "1.15.4" - resolved "https://registry.yarnpkg.com/@types/ssh2/-/ssh2-1.15.4.tgz#2347d2ff079e205b077c02407d822803bfd23c45" - integrity sha512-9JTQgVBWSgq6mAen6PVnrAmty1lqgCMvpfN+1Ck5WRUsyMYPa6qd50/vMJ0y1zkGpOEgLzm8m8Dx/Y5vRouLaA== + version "1.15.5" + resolved "https://registry.yarnpkg.com/@types/ssh2/-/ssh2-1.15.5.tgz#6d8f45db2f39519b8d9377268fa71ed77d969686" + integrity sha512-N1ASjp/nXH3ovBHddRJpli4ozpk6UdDYIX4RJWFa9L1YKnzdhTlVmiGHm4DZnj/jLbqZpes4aeR30EFGQtvhQQ== dependencies: "@types/node" "^18.11.18" @@ -1145,13 +1133,6 @@ ansi-regex@^6.1.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654" integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" @@ -1241,22 +1222,25 @@ babel-plugin-jest-hoist@^29.6.3: "@types/babel__traverse" "^7.0.6" babel-preset-current-node-syntax@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" - integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== + version "1.2.0" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz#20730d6cdc7dda5d89401cab10ac6a32067acde6" + integrity sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg== dependencies: "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-bigint" "^7.8.3" - "@babel/plugin-syntax-class-properties" "^7.8.3" - "@babel/plugin-syntax-import-meta" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-import-attributes" "^7.24.7" + "@babel/plugin-syntax-import-meta" "^7.10.4" "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-top-level-await" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" babel-preset-jest@^29.6.3: version "29.6.3" @@ -1271,6 +1255,11 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== +baseline-browser-mapping@^2.9.0: + version "2.9.14" + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.9.14.tgz#3b6af0bc032445bca04de58caa9a87cfe921cbb3" + integrity sha512-B0xUquLkiGLgHhpPBqvl7GWegWBUNuujQ6kXd/r1U38ElPT6Ok8KZ8e+FpUGEc2ZoRQUzq/aUnaKFc/svWUGSg== + bcrypt-pbkdf@^1.0.0, bcrypt-pbkdf@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" @@ -1279,17 +1268,17 @@ bcrypt-pbkdf@^1.0.0, bcrypt-pbkdf@^1.0.2: tweetnacl "^0.14.3" brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + version "1.1.12" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.12.tgz#ab9b454466e5a8cc3a187beaad580412a9c5b843" + integrity sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg== dependencies: balanced-match "^1.0.0" concat-map "0.0.1" brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + version "2.0.2" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.2.tgz#54fc53237a613d854c7bd37463aad17df87214e7" + integrity sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ== dependencies: balanced-match "^1.0.0" @@ -1300,15 +1289,16 @@ braces@^3.0.3: dependencies: fill-range "^7.1.1" -browserslist@^4.22.2: - version "4.22.2" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.2.tgz#704c4943072bd81ea18997f3bd2180e89c77874b" - integrity sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A== +browserslist@^4.24.0: + version "4.28.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.28.1.tgz#7f534594628c53c63101079e27e40de490456a95" + integrity sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA== dependencies: - caniuse-lite "^1.0.30001565" - electron-to-chromium "^1.4.601" - node-releases "^2.0.14" - update-browserslist-db "^1.0.13" + baseline-browser-mapping "^2.9.0" + caniuse-lite "^1.0.30001759" + electron-to-chromium "^1.5.263" + node-releases "^2.0.27" + update-browserslist-db "^1.2.0" bs-logger@0.x: version "0.2.6" @@ -1330,9 +1320,9 @@ buffer-from@^1.0.0: integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== buildcheck@~0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/buildcheck/-/buildcheck-0.0.6.tgz#89aa6e417cfd1e2196e3f8fe915eb709d2fe4238" - integrity sha512-8f9ZJCUXyT1M35Jx7MkBgmBMo3oHTTBIPLiY9xyL0pl3T5RwcPEY8cUHr5LBNfu/fk6c2T4DJZuVM/8ZZT2D2A== + version "0.0.7" + resolved "https://registry.yarnpkg.com/buildcheck/-/buildcheck-0.0.7.tgz#07a5e76c10ead8fa67d9e4c587b68f49e8f29d61" + integrity sha512-lHblz4ahamxpTmnsk+MNTRWsjYKv965MwOrSJyeD588rR3Jcu7swE+0wN5F+PbL5cjgu/9ObkhfzEPuofEMwLA== callsites@^3.0.0: version "3.1.0" @@ -1349,19 +1339,10 @@ camelcase@^6.2.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30001565: - version "1.0.30001570" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001570.tgz#b4e5c1fa786f733ab78fc70f592df6b3f23244ca" - integrity sha512-+3e0ASu4sw1SWaoCtvPeyXp+5PsjigkSt8OXZbF9StH5pQWbxEjLAZE3n8Aup5udop1uRiKA7a4utUk/uoSpUw== - -chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" +caniuse-lite@^1.0.30001759: + version "1.0.30001764" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001764.tgz#03206c56469f236103b90f9ae10bcb8b9e1f6005" + integrity sha512-9JGuzl2M+vPL+pz70gtMF9sHdMFbY9FJaQBi186cHKH3pSzDvzoUJUPV6fqiKIMyXbud9ZLg4F3Yza1vJ1+93g== chalk@^4.0.0, chalk@^4.1.2: version "4.1.2" @@ -1450,13 +1431,6 @@ collect-v8-coverage@^1.0.0: resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9" integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - color-convert@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" @@ -1464,11 +1438,6 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" @@ -1583,10 +1552,10 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" -electron-to-chromium@^1.4.601: - version "1.4.614" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.614.tgz#2fe789d61fa09cb875569f37c309d0c2701f91c0" - integrity sha512-X4ze/9Sc3QWs6h92yerwqv7aB/uU8vCjZcrMjA8N9R1pjMFRe44dLsck5FzLilOYvcXuDn93B+bpGYyufc70gQ== +electron-to-chromium@^1.5.263: + version "1.5.267" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz#5d84f2df8cdb6bfe7e873706bb21bd4bfb574dc7" + integrity sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw== emittery@^0.13.1: version "0.13.1" @@ -1620,10 +1589,10 @@ escalade@^3.1.1: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== +escalade@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== escape-string-regexp@^2.0.0: version "2.0.0" @@ -1966,11 +1935,6 @@ glob@^8.0.1: minimatch "^5.0.1" once "^1.3.0" -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - globals@^14.0.0: version "14.0.0" resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" @@ -1986,11 +1950,6 @@ graphemer@^1.4.0: resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - has-flag@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" @@ -2542,9 +2501,9 @@ js-tokens@^4.0.0: integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + version "3.14.2" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.2.tgz#77485ce1dd7f33c061fd1b16ecea23b55fcb04b0" + integrity sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg== dependencies: argparse "^1.0.7" esprima "^4.0.0" @@ -2561,10 +2520,10 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== +jsesc@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d" + integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA== json-buffer@3.0.1: version "3.0.1" @@ -2779,10 +2738,10 @@ mz@^2.4.0: object-assign "^4.0.1" thenify-all "^1.0.0" -nan@^2.19.0, nan@^2.20.0: - version "2.22.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.22.0.tgz#31bc433fc33213c97bad36404bb68063de604de3" - integrity sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw== +nan@^2.19.0, nan@^2.23.0: + version "2.24.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.24.0.tgz#a8919b36e692aa5b260831910e4f81419fc0a283" + integrity sha512-Vpf9qnVW1RaDkoNKFUvfxqAbtI8ncb8OJlqZ9wwpXzWPEsvsB1nvdUi6oYrHIkQ1Y/tMDnr1h4nczS0VB9Xykg== natural-compare@^1.4.0: version "1.4.0" @@ -2804,10 +2763,10 @@ node-int64@^0.4.0: resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== -node-releases@^2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" - integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== +node-releases@^2.0.27: + version "2.0.27" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.27.tgz#eedca519205cf20f650f61d56b070db111231e4e" + integrity sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA== normalize-path@^3.0.0: version "3.0.0" @@ -2975,11 +2934,6 @@ path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - picocolors@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" @@ -3214,15 +3168,15 @@ sprintf-js@~1.0.2: integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== ssh2@^1.16.0: - version "1.16.0" - resolved "https://registry.yarnpkg.com/ssh2/-/ssh2-1.16.0.tgz#79221d40cbf4d03d07fe881149de0a9de928c9f0" - integrity sha512-r1X4KsBGedJqo7h8F5c4Ybpcr5RjyP+aWIG007uBPRjmdQWfEiVLzSK71Zji1B9sKxwaCvD8y8cwSkYrlLiRRg== + version "1.17.0" + resolved "https://registry.yarnpkg.com/ssh2/-/ssh2-1.17.0.tgz#dc686e8e3abdbd4ad95d46fa139615903c12258c" + integrity sha512-wPldCk3asibAjQ/kziWQQt1Wh3PgDFpC0XpwclzKcdT1vql6KeYxf5LIt4nlFkUeR8WuphYMKqUA56X4rjbfgQ== dependencies: asn1 "^0.2.6" bcrypt-pbkdf "^1.0.2" optionalDependencies: cpu-features "~0.0.10" - nan "^2.20.0" + nan "^2.23.0" sshpk@^1.18.0: version "1.18.0" @@ -3309,13 +3263,6 @@ superstruct@^1.0.4: resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-1.0.4.tgz#0adb99a7578bd2f1c526220da6571b2d485d91ca" integrity sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ== -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - supports-color@^7.0.0, supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" @@ -3378,11 +3325,6 @@ tmpl@1.0.5: resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -3513,13 +3455,13 @@ unicode-emoji-modifier-base@^1.0.0: resolved "https://registry.yarnpkg.com/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz#dbbd5b54ba30f287e2a8d5a249da6c0cef369459" integrity sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g== -update-browserslist-db@^1.0.13: - version "1.0.13" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" - integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== +update-browserslist-db@^1.2.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz#64d76db58713136acbeb4c49114366cc6cc2e80d" + integrity sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w== dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" + escalade "^3.2.0" + picocolors "^1.1.1" uri-js@^4.2.2: version "4.4.1" From d29e1783d540c88e9f1be7fd36e147d4a671d674 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 15 Jan 2026 11:17:53 +0000 Subject: [PATCH 12/29] feat(secrets): add ServiceAccountSecret entity with full support --- .stats.yml | 4 ++-- src/resources/secrets.ts | 5 +++++ src/resources/shared.ts | 3 ++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/.stats.yml b/.stats.yml index 5770e67..a1fa096 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 160 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-504fab16d01ad7f81914542fd0523f4dfefce87813891da391b97b1b0a70f563.yml -openapi_spec_hash: 84d9d652cac365c646e01111cee89afc +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-8a0189eebf423961bd98075dab28db4377c3a939da1dcf237d1b3958724e6dcf.yml +openapi_spec_hash: 48004e7605cf720584e822ec11a2eb8b config_hash: acfe8cf5d6e4b26387e4fefa3bff8409 diff --git a/src/resources/secrets.ts b/src/resources/secrets.ts index 28c28a3..237d93e 100644 --- a/src/resources/secrets.ts +++ b/src/resources/secrets.ts @@ -456,6 +456,11 @@ export interface SecretScope { */ projectId?: string; + /** + * service_account_id is the Service Account ID this Secret belongs to + */ + serviceAccountId?: string; + /** * user_id is the User ID this Secret belongs to */ diff --git a/src/resources/shared.ts b/src/resources/shared.ts index 5bd1585..dfc6970 100644 --- a/src/resources/shared.ts +++ b/src/resources/shared.ts @@ -233,7 +233,8 @@ export type ResourceType = | 'RESOURCE_TYPE_ROLE_ASSIGNMENT_CHANGED' | 'RESOURCE_TYPE_GROUP_MEMBERSHIP_CHANGED' | 'RESOURCE_TYPE_WEBHOOK' - | 'RESOURCE_TYPE_SCIM_CONFIGURATION'; + | 'RESOURCE_TYPE_SCIM_CONFIGURATION' + | 'RESOURCE_TYPE_SERVICE_ACCOUNT_SECRET'; export interface RunsOn { docker?: RunsOn.Docker; From 65ac6165bdedc55029e752ff3c4b75ee1a4e846a Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 15 Jan 2026 15:08:31 +0000 Subject: [PATCH 13/29] codegen metadata --- .stats.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.stats.yml b/.stats.yml index a1fa096..6535584 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 160 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-8a0189eebf423961bd98075dab28db4377c3a939da1dcf237d1b3958724e6dcf.yml -openapi_spec_hash: 48004e7605cf720584e822ec11a2eb8b +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-e5c85c471bd3b69f4237abeba5f04212621408955a347de366cfd294a05b2b80.yml +openapi_spec_hash: 2a09889ff17121827dad73c3d318a921 config_hash: acfe8cf5d6e4b26387e4fefa3bff8409 From 0e75a3d6e7dbdee3cf87f52cc3b2fa20e284d1f5 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 15 Jan 2026 20:42:29 +0000 Subject: [PATCH 14/29] codegen metadata --- .stats.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.stats.yml b/.stats.yml index 6535584..2b051f4 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 160 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-e5c85c471bd3b69f4237abeba5f04212621408955a347de366cfd294a05b2b80.yml -openapi_spec_hash: 2a09889ff17121827dad73c3d318a921 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-978712dd212465a9a1633be0a7981cfad4dd3836827e7d98eeac1a4f14224f94.yml +openapi_spec_hash: 2f9436918b0af97785377ce80b4b2782 config_hash: acfe8cf5d6e4b26387e4fefa3bff8409 From 1ce1f99b15a489ae54e70576731c4cb120508ced Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 16 Jan 2026 02:45:37 +0000 Subject: [PATCH 15/29] feat: [backend] Introduce org:runners_admin organization role --- .stats.yml | 4 ++-- src/resources/groups/role-assignments.ts | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.stats.yml b/.stats.yml index 2b051f4..4b5bb2a 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 160 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-978712dd212465a9a1633be0a7981cfad4dd3836827e7d98eeac1a4f14224f94.yml -openapi_spec_hash: 2f9436918b0af97785377ce80b4b2782 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-f01c263551b232108553bc318339d776ffc490f21c2c47b6d974b30addde8f17.yml +openapi_spec_hash: 2b32b72d9669d52ebeceb3eb67ada01b config_hash: acfe8cf5d6e4b26387e4fefa3bff8409 diff --git a/src/resources/groups/role-assignments.ts b/src/resources/groups/role-assignments.ts index e40ab27..ee6b34c 100644 --- a/src/resources/groups/role-assignments.ts +++ b/src/resources/groups/role-assignments.ts @@ -170,6 +170,7 @@ export type ResourceRole = | 'RESOURCE_ROLE_UNSPECIFIED' | 'RESOURCE_ROLE_ORG_ADMIN' | 'RESOURCE_ROLE_ORG_MEMBER' + | 'RESOURCE_ROLE_ORG_RUNNERS_ADMIN' | 'RESOURCE_ROLE_GROUP_ADMIN' | 'RESOURCE_ROLE_GROUP_VIEWER' | 'RESOURCE_ROLE_USER_IDENTITY' From 32ef3cc5a41b409ef5b5421b30f8e321433b8c43 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 16 Jan 2026 13:20:36 +0000 Subject: [PATCH 16/29] codegen metadata --- .stats.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.stats.yml b/.stats.yml index 4b5bb2a..ba16c23 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 160 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-f01c263551b232108553bc318339d776ffc490f21c2c47b6d974b30addde8f17.yml -openapi_spec_hash: 2b32b72d9669d52ebeceb3eb67ada01b +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-247b6e1af7faefcf2f0ad1f1a012b45fd566be64e313d92648311bac4cda8b8e.yml +openapi_spec_hash: 5eb6026ee5764b077a65c26e85e4a84a config_hash: acfe8cf5d6e4b26387e4fefa3bff8409 From 15f23b787045dd6a17a90ee960a1903553e3449a Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 16 Jan 2026 16:59:43 +0000 Subject: [PATCH 17/29] feat(api): add ListSCMOrganizations endpoint --- .stats.yml | 8 +- api.md | 2 + src/client.ts | 4 + src/resources/index.ts | 2 + src/resources/runners/index.ts | 2 + src/resources/runners/runners.ts | 91 +++++++++++++++++++++ tests/api-resources/runners/runners.test.ts | 12 +++ 7 files changed, 117 insertions(+), 4 deletions(-) diff --git a/.stats.yml b/.stats.yml index ba16c23..d64cbf2 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ -configured_endpoints: 160 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-247b6e1af7faefcf2f0ad1f1a012b45fd566be64e313d92648311bac4cda8b8e.yml -openapi_spec_hash: 5eb6026ee5764b077a65c26e85e4a84a -config_hash: acfe8cf5d6e4b26387e4fefa3bff8409 +configured_endpoints: 161 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-baa13045a9492d958fc06db0dcee2fd99972435f8b9a707831cf4da8d84db194.yml +openapi_spec_hash: 5e7adb5d5cdf924eb7c0e4ddf1b81260 +config_hash: d930f7e17a525d153b810339251607b7 diff --git a/api.md b/api.md index 7f6ec60..7dc5c04 100644 --- a/api.md +++ b/api.md @@ -534,6 +534,7 @@ Types: - RunnerCheckAuthenticationForHostResponse - RunnerCreateLogsTokenResponse - RunnerCreateRunnerTokenResponse +- RunnerListScmOrganizationsResponse - RunnerParseContextURLResponse - RunnerSearchRepositoriesResponse @@ -547,6 +548,7 @@ Methods: - client.runners.checkAuthenticationForHost({ ...params }) -> RunnerCheckAuthenticationForHostResponse - client.runners.createLogsToken({ ...params }) -> RunnerCreateLogsTokenResponse - client.runners.createRunnerToken({ ...params }) -> RunnerCreateRunnerTokenResponse +- client.runners.listScmOrganizations({ ...params }) -> RunnerListScmOrganizationsResponse - client.runners.parseContextURL({ ...params }) -> RunnerParseContextURLResponse - client.runners.searchRepositories({ ...params }) -> RunnerSearchRepositoriesResponse diff --git a/src/client.ts b/src/client.ts index 2d5f892..88b06ec 100644 --- a/src/client.ts +++ b/src/client.ts @@ -335,6 +335,8 @@ import { RunnerDeleteResponse, RunnerKind, RunnerListParams, + RunnerListScmOrganizationsParams, + RunnerListScmOrganizationsResponse, RunnerParseContextURLParams, RunnerParseContextURLResponse, RunnerPhase, @@ -1486,6 +1488,7 @@ export declare namespace Gitpod { type RunnerCheckAuthenticationForHostResponse as RunnerCheckAuthenticationForHostResponse, type RunnerCreateLogsTokenResponse as RunnerCreateLogsTokenResponse, type RunnerCreateRunnerTokenResponse as RunnerCreateRunnerTokenResponse, + type RunnerListScmOrganizationsResponse as RunnerListScmOrganizationsResponse, type RunnerParseContextURLResponse as RunnerParseContextURLResponse, type RunnerSearchRepositoriesResponse as RunnerSearchRepositoriesResponse, type RunnersRunnersPage as RunnersRunnersPage, @@ -1497,6 +1500,7 @@ export declare namespace Gitpod { type RunnerCheckAuthenticationForHostParams as RunnerCheckAuthenticationForHostParams, type RunnerCreateLogsTokenParams as RunnerCreateLogsTokenParams, type RunnerCreateRunnerTokenParams as RunnerCreateRunnerTokenParams, + type RunnerListScmOrganizationsParams as RunnerListScmOrganizationsParams, type RunnerParseContextURLParams as RunnerParseContextURLParams, type RunnerSearchRepositoriesParams as RunnerSearchRepositoriesParams, }; diff --git a/src/resources/index.ts b/src/resources/index.ts index 2f086c5..1365dbc 100644 --- a/src/resources/index.ts +++ b/src/resources/index.ts @@ -234,6 +234,7 @@ export { type RunnerCheckAuthenticationForHostResponse, type RunnerCreateLogsTokenResponse, type RunnerCreateRunnerTokenResponse, + type RunnerListScmOrganizationsResponse, type RunnerParseContextURLResponse, type RunnerSearchRepositoriesResponse, type RunnerCreateParams, @@ -244,6 +245,7 @@ export { type RunnerCheckAuthenticationForHostParams, type RunnerCreateLogsTokenParams, type RunnerCreateRunnerTokenParams, + type RunnerListScmOrganizationsParams, type RunnerParseContextURLParams, type RunnerSearchRepositoriesParams, type RunnersRunnersPage, diff --git a/src/resources/runners/index.ts b/src/resources/runners/index.ts index a28c3f8..ea5dfb0 100644 --- a/src/resources/runners/index.ts +++ b/src/resources/runners/index.ts @@ -44,6 +44,7 @@ export { type RunnerCheckAuthenticationForHostResponse, type RunnerCreateLogsTokenResponse, type RunnerCreateRunnerTokenResponse, + type RunnerListScmOrganizationsResponse, type RunnerParseContextURLResponse, type RunnerSearchRepositoriesResponse, type RunnerCreateParams, @@ -54,6 +55,7 @@ export { type RunnerCheckAuthenticationForHostParams, type RunnerCreateLogsTokenParams, type RunnerCreateRunnerTokenParams, + type RunnerListScmOrganizationsParams, type RunnerParseContextURLParams, type RunnerSearchRepositoriesParams, type RunnersRunnersPage, diff --git a/src/resources/runners/runners.ts b/src/resources/runners/runners.ts index f5fa782..ca12e10 100644 --- a/src/resources/runners/runners.ts +++ b/src/resources/runners/runners.ts @@ -351,6 +351,45 @@ export class Runners extends APIResource { return this._client.post('/gitpod.v1.RunnerService/CreateRunnerToken', { body, ...options }); } + /** + * Lists SCM organizations the user belongs to. + * + * Use this method to: + * + * - Get all organizations for a user on a specific SCM host + * - Check organization admin permissions for webhook creation + * + * ### Examples + * + * - List GitHub organizations: + * + * Lists all organizations the user belongs to on GitHub. + * + * ```yaml + * runnerId: "d2c94c27-3b76-4a42-b88c-95a85e392c68" + * scmHost: "github.com" + * ``` + * + * @example + * ```ts + * const response = await client.runners.listScmOrganizations({ + * runnerId: 'd2c94c27-3b76-4a42-b88c-95a85e392c68', + * scmHost: 'github.com', + * }); + * ``` + */ + listScmOrganizations( + params: RunnerListScmOrganizationsParams, + options?: RequestOptions, + ): APIPromise { + const { token, pageSize, ...body } = params; + return this._client.post('/gitpod.v1.RunnerService/ListSCMOrganizations', { + query: { token, pageSize }, + body, + ...options, + }); + } + /** * Parses a context URL and returns the parsed result. * @@ -830,6 +869,33 @@ export interface RunnerCreateRunnerTokenResponse { exchangeToken?: string; } +export interface RunnerListScmOrganizationsResponse { + /** + * List of organizations the user belongs to + */ + organizations?: Array; +} + +export namespace RunnerListScmOrganizationsResponse { + export interface Organization { + /** + * Whether the user has admin permissions in this organization. Admin permissions + * typically allow creating organization-level webhooks. + */ + isAdmin?: boolean; + + /** + * Organization name/slug (e.g., "gitpod-io") + */ + name?: string; + + /** + * Organization URL (e.g., "https://github.com/gitpod-io") + */ + url?: string; + } +} + export interface RunnerParseContextURLResponse { git?: RunnerParseContextURLResponse.Git; @@ -1223,6 +1289,29 @@ export interface RunnerCreateRunnerTokenParams { runnerId?: string; } +export interface RunnerListScmOrganizationsParams { + /** + * Query param + */ + token?: string; + + /** + * Query param + */ + pageSize?: number; + + /** + * Body param + */ + runnerId?: string; + + /** + * Body param: The SCM host to list organizations from (e.g., "github.com", + * "gitlab.com") + */ + scmHost?: string; +} + export interface RunnerParseContextURLParams { contextUrl?: string; @@ -1304,6 +1393,7 @@ export declare namespace Runners { type RunnerCheckAuthenticationForHostResponse as RunnerCheckAuthenticationForHostResponse, type RunnerCreateLogsTokenResponse as RunnerCreateLogsTokenResponse, type RunnerCreateRunnerTokenResponse as RunnerCreateRunnerTokenResponse, + type RunnerListScmOrganizationsResponse as RunnerListScmOrganizationsResponse, type RunnerParseContextURLResponse as RunnerParseContextURLResponse, type RunnerSearchRepositoriesResponse as RunnerSearchRepositoriesResponse, type RunnersRunnersPage as RunnersRunnersPage, @@ -1315,6 +1405,7 @@ export declare namespace Runners { type RunnerCheckAuthenticationForHostParams as RunnerCheckAuthenticationForHostParams, type RunnerCreateLogsTokenParams as RunnerCreateLogsTokenParams, type RunnerCreateRunnerTokenParams as RunnerCreateRunnerTokenParams, + type RunnerListScmOrganizationsParams as RunnerListScmOrganizationsParams, type RunnerParseContextURLParams as RunnerParseContextURLParams, type RunnerSearchRepositoriesParams as RunnerSearchRepositoriesParams, }; diff --git a/tests/api-resources/runners/runners.test.ts b/tests/api-resources/runners/runners.test.ts index 9367fda..eb413b4 100644 --- a/tests/api-resources/runners/runners.test.ts +++ b/tests/api-resources/runners/runners.test.ts @@ -104,6 +104,18 @@ describe('resource runners', () => { expect(dataAndResponse.response).toBe(rawResponse); }); + // Prism tests are disabled + test.skip('listScmOrganizations', async () => { + const responsePromise = client.runners.listScmOrganizations({}); + const rawResponse = await responsePromise.asResponse(); + expect(rawResponse).toBeInstanceOf(Response); + const response = await responsePromise; + expect(response).not.toBeInstanceOf(Response); + const dataAndResponse = await responsePromise.withResponse(); + expect(dataAndResponse.data).toBe(response); + expect(dataAndResponse.response).toBe(rawResponse); + }); + // Prism tests are disabled test.skip('parseContextURL', async () => { const responsePromise = client.runners.parseContextURL({}); From 4789c523a6f077c7d31a5e939a3bad3735f1db7c Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 21 Jan 2026 15:00:17 +0000 Subject: [PATCH 18/29] chore(internal): update `actions/checkout` version --- .github/workflows/ci.yml | 6 +++--- .github/workflows/publish-npm.yml | 2 +- .github/workflows/release-doctor.yml | 3 +-- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8f3951d..03d1e8d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,7 +19,7 @@ jobs: runs-on: ${{ github.repository == 'stainless-sdks/gitpod-typescript' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }} if: github.event_name == 'push' || github.event.pull_request.head.repo.fork steps: - - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 - name: Set up Node uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 @@ -41,7 +41,7 @@ jobs: contents: read id-token: write steps: - - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 - name: Set up Node uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 @@ -74,7 +74,7 @@ jobs: runs-on: ${{ github.repository == 'stainless-sdks/gitpod-typescript' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }} if: github.event_name == 'push' || github.event.pull_request.head.repo.fork steps: - - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 - name: Set up Node uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 diff --git a/.github/workflows/publish-npm.yml b/.github/workflows/publish-npm.yml index c95a4ba..6cbf803 100644 --- a/.github/workflows/publish-npm.yml +++ b/.github/workflows/publish-npm.yml @@ -23,7 +23,7 @@ jobs: id-token: write steps: - - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 - name: Set up Node uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 diff --git a/.github/workflows/release-doctor.yml b/.github/workflows/release-doctor.yml index 6e13518..d9df49d 100644 --- a/.github/workflows/release-doctor.yml +++ b/.github/workflows/release-doctor.yml @@ -12,11 +12,10 @@ jobs: if: github.repository == 'gitpod-io/gitpod-sdk-typescript' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch' || startsWith(github.head_ref, 'release-please') || github.head_ref == 'next') steps: - - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 - name: Check release environment run: | bash ./bin/check-release-environment env: NPM_TOKEN: ${{ secrets.GITPOD_NPM_TOKEN || secrets.NPM_TOKEN }} - From ec502a0d19aeb88f2c4a854f571a33f0bc26aaa9 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 16 Jan 2026 19:01:13 +0000 Subject: [PATCH 19/29] feat: API for SCIM configuration management --- .stats.yml | 8 +- api.md | 20 + src/client.ts | 8 + src/core/pagination.ts | 58 +++ src/resources/organizations/index.ts | 16 + src/resources/organizations/organizations.ts | 38 ++ .../organizations/scim-configurations.ts | 423 ++++++++++++++++++ .../organizations/scim-configurations.test.ts | 133 ++++++ 8 files changed, 700 insertions(+), 4 deletions(-) create mode 100644 src/resources/organizations/scim-configurations.ts create mode 100644 tests/api-resources/organizations/scim-configurations.test.ts diff --git a/.stats.yml b/.stats.yml index d64cbf2..c7d8a2f 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ -configured_endpoints: 161 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-baa13045a9492d958fc06db0dcee2fd99972435f8b9a707831cf4da8d84db194.yml -openapi_spec_hash: 5e7adb5d5cdf924eb7c0e4ddf1b81260 -config_hash: d930f7e17a525d153b810339251607b7 +configured_endpoints: 167 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-40c6617e0b944168058135c9325d556b21c2edde19518090aefa542c76afcdb3.yml +openapi_spec_hash: 235404d99aa56e51b933261d195dc206 +config_hash: cec4ffca97dd72023c573623499bc35b diff --git a/api.md b/api.md index 7dc5c04..595b8c1 100644 --- a/api.md +++ b/api.md @@ -411,6 +411,26 @@ Methods: - client.organizations.policies.retrieve({ ...params }) -> PolicyRetrieveResponse - client.organizations.policies.update({ ...params }) -> unknown +## ScimConfigurations + +Types: + +- ScimConfiguration +- ScimConfigurationCreateResponse +- ScimConfigurationRetrieveResponse +- ScimConfigurationUpdateResponse +- ScimConfigurationDeleteResponse +- ScimConfigurationRegenerateTokenResponse + +Methods: + +- client.organizations.scimConfigurations.create({ ...params }) -> ScimConfigurationCreateResponse +- client.organizations.scimConfigurations.retrieve({ ...params }) -> ScimConfigurationRetrieveResponse +- client.organizations.scimConfigurations.update({ ...params }) -> ScimConfigurationUpdateResponse +- client.organizations.scimConfigurations.list({ ...params }) -> ScimConfigurationsScimConfigurationsPage +- client.organizations.scimConfigurations.delete({ ...params }) -> unknown +- client.organizations.scimConfigurations.regenerateToken({ ...params }) -> ScimConfigurationRegenerateTokenResponse + ## SSOConfigurations Types: diff --git a/src/client.ts b/src/client.ts index 88b06ec..5c30e5f 100644 --- a/src/client.ts +++ b/src/client.ts @@ -71,6 +71,8 @@ import { RunnersPageResponse, type SSOConfigurationsPageParams, SSOConfigurationsPageResponse, + type ScimConfigurationsPageParams, + ScimConfigurationsPageResponse, type SecretsPageParams, SecretsPageResponse, type ServicesPageParams, @@ -1219,6 +1221,12 @@ export declare namespace Gitpod { export import RunnersPage = Pagination.RunnersPage; export { type RunnersPageParams as RunnersPageParams, type RunnersPageResponse as RunnersPageResponse }; + export import ScimConfigurationsPage = Pagination.ScimConfigurationsPage; + export { + type ScimConfigurationsPageParams as ScimConfigurationsPageParams, + type ScimConfigurationsPageResponse as ScimConfigurationsPageResponse, + }; + export import SecretsPage = Pagination.SecretsPage; export { type SecretsPageParams as SecretsPageParams, type SecretsPageResponse as SecretsPageResponse }; diff --git a/src/core/pagination.ts b/src/core/pagination.ts index 1a591d6..06774be 100644 --- a/src/core/pagination.ts +++ b/src/core/pagination.ts @@ -1390,6 +1390,64 @@ export class RunnersPage extends AbstractPage implements RunnersPage } } +export interface ScimConfigurationsPageResponse { + pagination: ScimConfigurationsPageResponse.Pagination; + + scimConfigurations: Array; +} + +export namespace ScimConfigurationsPageResponse { + export interface Pagination { + nextToken?: string; + } +} + +export interface ScimConfigurationsPageParams { + pageSize?: number; + + token?: string; +} + +export class ScimConfigurationsPage + extends AbstractPage + implements ScimConfigurationsPageResponse +{ + pagination: ScimConfigurationsPageResponse.Pagination; + + scimConfigurations: Array; + + constructor( + client: Gitpod, + response: Response, + body: ScimConfigurationsPageResponse, + options: FinalRequestOptions, + ) { + super(client, response, body, options); + + this.pagination = body.pagination || {}; + this.scimConfigurations = body.scimConfigurations || []; + } + + getPaginatedItems(): Item[] { + return this.scimConfigurations ?? []; + } + + nextPageRequestOptions(): PageRequestOptions | null { + const cursor = this.pagination?.nextToken; + if (!cursor) { + return null; + } + + return { + ...this.options, + query: { + ...maybeObj(this.options.query), + token: cursor, + }, + }; + } +} + export interface SecretsPageResponse { pagination: SecretsPageResponse.Pagination; diff --git a/src/resources/organizations/index.ts b/src/resources/organizations/index.ts index 7213192..39fd7b6 100644 --- a/src/resources/organizations/index.ts +++ b/src/resources/organizations/index.ts @@ -87,3 +87,19 @@ export { type SSOConfigurationDeleteParams, type SSOConfigurationsSSOConfigurationsPage, } from './sso-configurations'; +export { + ScimConfigurations, + type ScimConfiguration, + type ScimConfigurationCreateResponse, + type ScimConfigurationRetrieveResponse, + type ScimConfigurationUpdateResponse, + type ScimConfigurationDeleteResponse, + type ScimConfigurationRegenerateTokenResponse, + type ScimConfigurationCreateParams, + type ScimConfigurationRetrieveParams, + type ScimConfigurationUpdateParams, + type ScimConfigurationListParams, + type ScimConfigurationDeleteParams, + type ScimConfigurationRegenerateTokenParams, + type ScimConfigurationsScimConfigurationsPage, +} from './scim-configurations'; diff --git a/src/resources/organizations/organizations.ts b/src/resources/organizations/organizations.ts index 2bfe54c..7923c53 100644 --- a/src/resources/organizations/organizations.ts +++ b/src/resources/organizations/organizations.ts @@ -55,6 +55,23 @@ import { PolicyUpdateResponse, SecurityAgentPolicy, } from './policies'; +import * as ScimConfigurationsAPI from './scim-configurations'; +import { + ScimConfiguration, + ScimConfigurationCreateParams, + ScimConfigurationCreateResponse, + ScimConfigurationDeleteParams, + ScimConfigurationDeleteResponse, + ScimConfigurationListParams, + ScimConfigurationRegenerateTokenParams, + ScimConfigurationRegenerateTokenResponse, + ScimConfigurationRetrieveParams, + ScimConfigurationRetrieveResponse, + ScimConfigurationUpdateParams, + ScimConfigurationUpdateResponse, + ScimConfigurations, + ScimConfigurationsScimConfigurationsPage, +} from './scim-configurations'; import * as SSOConfigurationsAPI from './sso-configurations'; import { ProviderType, @@ -82,6 +99,9 @@ export class Organizations extends APIResource { new DomainVerificationsAPI.DomainVerifications(this._client); invites: InvitesAPI.Invites = new InvitesAPI.Invites(this._client); policies: PoliciesAPI.Policies = new PoliciesAPI.Policies(this._client); + scimConfigurations: ScimConfigurationsAPI.ScimConfigurations = new ScimConfigurationsAPI.ScimConfigurations( + this._client, + ); ssoConfigurations: SSOConfigurationsAPI.SSOConfigurations = new SSOConfigurationsAPI.SSOConfigurations( this._client, ); @@ -923,6 +943,7 @@ Organizations.CustomDomains = CustomDomains; Organizations.DomainVerifications = DomainVerifications; Organizations.Invites = Invites; Organizations.Policies = Policies; +Organizations.ScimConfigurations = ScimConfigurations; Organizations.SSOConfigurations = SSOConfigurations; export declare namespace Organizations { @@ -1001,6 +1022,23 @@ export declare namespace Organizations { type PolicyUpdateParams as PolicyUpdateParams, }; + export { + ScimConfigurations as ScimConfigurations, + type ScimConfiguration as ScimConfiguration, + type ScimConfigurationCreateResponse as ScimConfigurationCreateResponse, + type ScimConfigurationRetrieveResponse as ScimConfigurationRetrieveResponse, + type ScimConfigurationUpdateResponse as ScimConfigurationUpdateResponse, + type ScimConfigurationDeleteResponse as ScimConfigurationDeleteResponse, + type ScimConfigurationRegenerateTokenResponse as ScimConfigurationRegenerateTokenResponse, + type ScimConfigurationsScimConfigurationsPage as ScimConfigurationsScimConfigurationsPage, + type ScimConfigurationCreateParams as ScimConfigurationCreateParams, + type ScimConfigurationRetrieveParams as ScimConfigurationRetrieveParams, + type ScimConfigurationUpdateParams as ScimConfigurationUpdateParams, + type ScimConfigurationListParams as ScimConfigurationListParams, + type ScimConfigurationDeleteParams as ScimConfigurationDeleteParams, + type ScimConfigurationRegenerateTokenParams as ScimConfigurationRegenerateTokenParams, + }; + export { SSOConfigurations as SSOConfigurations, type ProviderType as ProviderType, diff --git a/src/resources/organizations/scim-configurations.ts b/src/resources/organizations/scim-configurations.ts new file mode 100644 index 0000000..5e747bf --- /dev/null +++ b/src/resources/organizations/scim-configurations.ts @@ -0,0 +1,423 @@ +// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +import { APIResource } from '../../core/resource'; +import { APIPromise } from '../../core/api-promise'; +import { + PagePromise, + ScimConfigurationsPage, + type ScimConfigurationsPageParams, +} from '../../core/pagination'; +import { RequestOptions } from '../../internal/request-options'; + +export class ScimConfigurations extends APIResource { + /** + * Creates a new SCIM configuration for automated user provisioning. + * + * Use this method to: + * + * - Set up SCIM 2.0 provisioning from an identity provider + * - Generate a bearer token for SCIM API authentication + * - Link SCIM provisioning to an existing SSO configuration + * + * ### Examples + * + * - Create basic SCIM configuration: + * + * Creates a SCIM configuration linked to an SSO provider. + * + * ```yaml + * organizationId: "b0e12f6c-4c67-429d-a4a6-d9838b5da047" + * ssoConfigurationId: "d2c94c27-3b76-4a42-b88c-95a85e392c68" + * ``` + * + * @example + * ```ts + * const scimConfiguration = + * await client.organizations.scimConfigurations.create({ + * organizationId: 'b0e12f6c-4c67-429d-a4a6-d9838b5da047', + * ssoConfigurationId: + * 'd2c94c27-3b76-4a42-b88c-95a85e392c68', + * }); + * ``` + */ + create( + body: ScimConfigurationCreateParams, + options?: RequestOptions, + ): APIPromise { + return this._client.post('/gitpod.v1.OrganizationService/CreateSCIMConfiguration', { body, ...options }); + } + + /** + * Retrieves a specific SCIM configuration. + * + * Use this method to: + * + * - View SCIM configuration details + * - Check if SCIM is enabled + * - Verify SSO linkage + * + * ### Examples + * + * - Get SCIM configuration: + * + * Retrieves details of a specific SCIM configuration. + * + * ```yaml + * scimConfigurationId: "d2c94c27-3b76-4a42-b88c-95a85e392c68" + * ``` + * + * @example + * ```ts + * const scimConfiguration = + * await client.organizations.scimConfigurations.retrieve({ + * scimConfigurationId: + * 'd2c94c27-3b76-4a42-b88c-95a85e392c68', + * }); + * ``` + */ + retrieve( + body: ScimConfigurationRetrieveParams, + options?: RequestOptions, + ): APIPromise { + return this._client.post('/gitpod.v1.OrganizationService/GetSCIMConfiguration', { body, ...options }); + } + + /** + * Updates a SCIM configuration. + * + * Use this method to: + * + * - Enable or disable SCIM provisioning + * - Link or unlink SSO configuration + * - Update configuration name + * + * ### Examples + * + * - Disable SCIM: + * + * Disables SCIM provisioning. + * + * ```yaml + * scimConfigurationId: "d2c94c27-3b76-4a42-b88c-95a85e392c68" + * enabled: false + * ``` + * + * - Link to SSO: + * + * Links SCIM configuration to an SSO provider. + * + * ```yaml + * scimConfigurationId: "d2c94c27-3b76-4a42-b88c-95a85e392c68" + * ssoConfigurationId: "f53d2330-3795-4c5d-a1f3-453121af9c60" + * ``` + * + * @example + * ```ts + * const scimConfiguration = + * await client.organizations.scimConfigurations.update({ + * scimConfigurationId: + * 'd2c94c27-3b76-4a42-b88c-95a85e392c68', + * }); + * ``` + */ + update( + body: ScimConfigurationUpdateParams, + options?: RequestOptions, + ): APIPromise { + return this._client.post('/gitpod.v1.OrganizationService/UpdateSCIMConfiguration', { body, ...options }); + } + + /** + * Lists SCIM configurations for an organization. + * + * Use this method to: + * + * - View all SCIM configurations + * - Monitor provisioning status + * - Audit SCIM settings + * + * ### Examples + * + * - List SCIM configurations: + * + * Shows all SCIM configurations for an organization. + * + * ```yaml + * pagination: + * pageSize: 20 + * ``` + * + * @example + * ```ts + * // Automatically fetches more pages as needed. + * for await (const scimConfiguration of client.organizations.scimConfigurations.list( + * { pagination: { pageSize: 20 } }, + * )) { + * // ... + * } + * ``` + */ + list( + params: ScimConfigurationListParams, + options?: RequestOptions, + ): PagePromise { + const { token, pageSize, ...body } = params; + return this._client.getAPIList( + '/gitpod.v1.OrganizationService/ListSCIMConfigurations', + ScimConfigurationsPage, + { query: { token, pageSize }, body, method: 'post', ...options }, + ); + } + + /** + * Removes a SCIM configuration from an organization. + * + * Use this method to: + * + * - Disable SCIM provisioning completely + * - Remove unused configurations + * - Clean up after migration + * + * ### Examples + * + * - Delete SCIM configuration: + * + * Removes a specific SCIM configuration. + * + * ```yaml + * scimConfigurationId: "d2c94c27-3b76-4a42-b88c-95a85e392c68" + * ``` + * + * @example + * ```ts + * const scimConfiguration = + * await client.organizations.scimConfigurations.delete({ + * scimConfigurationId: + * 'd2c94c27-3b76-4a42-b88c-95a85e392c68', + * }); + * ``` + */ + delete(body: ScimConfigurationDeleteParams, options?: RequestOptions): APIPromise { + return this._client.post('/gitpod.v1.OrganizationService/DeleteSCIMConfiguration', { body, ...options }); + } + + /** + * Regenerates the bearer token for a SCIM configuration. + * + * Use this method to: + * + * - Rotate SCIM credentials + * - Recover from token compromise + * - Update IdP configuration + * + * ### Examples + * + * - Regenerate token: + * + * Creates a new bearer token, invalidating the old one. + * + * ```yaml + * scimConfigurationId: "d2c94c27-3b76-4a42-b88c-95a85e392c68" + * ``` + * + * @example + * ```ts + * const response = + * await client.organizations.scimConfigurations.regenerateToken( + * { + * scimConfigurationId: + * 'd2c94c27-3b76-4a42-b88c-95a85e392c68', + * }, + * ); + * ``` + */ + regenerateToken( + body: ScimConfigurationRegenerateTokenParams, + options?: RequestOptions, + ): APIPromise { + return this._client.post('/gitpod.v1.OrganizationService/RegenerateSCIMToken', { body, ...options }); + } +} + +export type ScimConfigurationsScimConfigurationsPage = ScimConfigurationsPage; + +/** + * SCIMConfiguration represents a SCIM 2.0 provisioning configuration + */ +export interface ScimConfiguration { + /** + * id is the unique identifier of the SCIM configuration + */ + id: string; + + /** + * created_at is when the SCIM configuration was created + */ + createdAt: string; + + /** + * organization_id is the ID of the organization this SCIM configuration belongs to + */ + organizationId: string; + + /** + * updated_at is when the SCIM configuration was last updated + */ + updatedAt: string; + + /** + * enabled indicates if SCIM provisioning is active + */ + enabled?: boolean; + + /** + * name is a human-readable name for the SCIM configuration + */ + name?: string; + + /** + * sso_configuration_id is the linked SSO configuration (optional) + */ + ssoConfigurationId?: string; +} + +export interface ScimConfigurationCreateResponse { + /** + * token is the bearer token for SCIM API authentication. This is only returned + * once during creation - store it securely. + */ + token: string; + + /** + * scim_configuration is the created SCIM configuration + */ + scimConfiguration: ScimConfiguration; +} + +export interface ScimConfigurationRetrieveResponse { + /** + * scim_configuration is the SCIM configuration identified by the ID + */ + scimConfiguration: ScimConfiguration; +} + +export interface ScimConfigurationUpdateResponse { + /** + * scim_configuration is the updated SCIM configuration + */ + scimConfiguration: ScimConfiguration; +} + +export type ScimConfigurationDeleteResponse = unknown; + +export interface ScimConfigurationRegenerateTokenResponse { + /** + * token is the new bearer token for SCIM API authentication. This invalidates the + * previous token - store it securely. + */ + token: string; +} + +export interface ScimConfigurationCreateParams { + /** + * organization_id is the ID of the organization to create the SCIM configuration + * for + */ + organizationId: string; + + /** + * sso_configuration_id is the SSO configuration to link (required for user + * provisioning) + */ + ssoConfigurationId: string; + + /** + * name is a human-readable name for the SCIM configuration + */ + name?: string | null; +} + +export interface ScimConfigurationRetrieveParams { + /** + * scim_configuration_id is the ID of the SCIM configuration to get + */ + scimConfigurationId: string; +} + +export interface ScimConfigurationUpdateParams { + /** + * scim_configuration_id is the ID of the SCIM configuration to update + */ + scimConfigurationId: string; + + /** + * enabled controls whether SCIM provisioning is active + */ + enabled?: boolean | null; + + /** + * name is a human-readable name for the SCIM configuration + */ + name?: string | null; + + /** + * sso_configuration_id is the SSO configuration to link + */ + ssoConfigurationId?: string | null; +} + +export interface ScimConfigurationListParams extends ScimConfigurationsPageParams { + /** + * Body param + */ + pagination?: ScimConfigurationListParams.Pagination; +} + +export namespace ScimConfigurationListParams { + export interface Pagination { + /** + * Token for the next set of results that was returned as next_token of a + * PaginationResponse + */ + token?: string; + + /** + * Page size is the maximum number of results to retrieve per page. Defaults to 25. + * Maximum 100. + */ + pageSize?: number; + } +} + +export interface ScimConfigurationDeleteParams { + /** + * scim_configuration_id is the ID of the SCIM configuration to delete + */ + scimConfigurationId: string; +} + +export interface ScimConfigurationRegenerateTokenParams { + /** + * scim_configuration_id is the ID of the SCIM configuration to regenerate token + * for + */ + scimConfigurationId: string; +} + +export declare namespace ScimConfigurations { + export { + type ScimConfiguration as ScimConfiguration, + type ScimConfigurationCreateResponse as ScimConfigurationCreateResponse, + type ScimConfigurationRetrieveResponse as ScimConfigurationRetrieveResponse, + type ScimConfigurationUpdateResponse as ScimConfigurationUpdateResponse, + type ScimConfigurationDeleteResponse as ScimConfigurationDeleteResponse, + type ScimConfigurationRegenerateTokenResponse as ScimConfigurationRegenerateTokenResponse, + type ScimConfigurationsScimConfigurationsPage as ScimConfigurationsScimConfigurationsPage, + type ScimConfigurationCreateParams as ScimConfigurationCreateParams, + type ScimConfigurationRetrieveParams as ScimConfigurationRetrieveParams, + type ScimConfigurationUpdateParams as ScimConfigurationUpdateParams, + type ScimConfigurationListParams as ScimConfigurationListParams, + type ScimConfigurationDeleteParams as ScimConfigurationDeleteParams, + type ScimConfigurationRegenerateTokenParams as ScimConfigurationRegenerateTokenParams, + }; +} diff --git a/tests/api-resources/organizations/scim-configurations.test.ts b/tests/api-resources/organizations/scim-configurations.test.ts new file mode 100644 index 0000000..73e0087 --- /dev/null +++ b/tests/api-resources/organizations/scim-configurations.test.ts @@ -0,0 +1,133 @@ +// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +import Gitpod from '@gitpod/sdk'; + +const client = new Gitpod({ + bearerToken: 'My Bearer Token', + baseURL: process.env['TEST_API_BASE_URL'] ?? 'http://127.0.0.1:4010', +}); + +describe('resource scimConfigurations', () => { + // Prism tests are disabled + test.skip('create: only required params', async () => { + const responsePromise = client.organizations.scimConfigurations.create({ + organizationId: 'b0e12f6c-4c67-429d-a4a6-d9838b5da047', + ssoConfigurationId: 'd2c94c27-3b76-4a42-b88c-95a85e392c68', + }); + const rawResponse = await responsePromise.asResponse(); + expect(rawResponse).toBeInstanceOf(Response); + const response = await responsePromise; + expect(response).not.toBeInstanceOf(Response); + const dataAndResponse = await responsePromise.withResponse(); + expect(dataAndResponse.data).toBe(response); + expect(dataAndResponse.response).toBe(rawResponse); + }); + + // Prism tests are disabled + test.skip('create: required and optional params', async () => { + const response = await client.organizations.scimConfigurations.create({ + organizationId: 'b0e12f6c-4c67-429d-a4a6-d9838b5da047', + ssoConfigurationId: 'd2c94c27-3b76-4a42-b88c-95a85e392c68', + name: 'name', + }); + }); + + // Prism tests are disabled + test.skip('retrieve: only required params', async () => { + const responsePromise = client.organizations.scimConfigurations.retrieve({ + scimConfigurationId: 'd2c94c27-3b76-4a42-b88c-95a85e392c68', + }); + const rawResponse = await responsePromise.asResponse(); + expect(rawResponse).toBeInstanceOf(Response); + const response = await responsePromise; + expect(response).not.toBeInstanceOf(Response); + const dataAndResponse = await responsePromise.withResponse(); + expect(dataAndResponse.data).toBe(response); + expect(dataAndResponse.response).toBe(rawResponse); + }); + + // Prism tests are disabled + test.skip('retrieve: required and optional params', async () => { + const response = await client.organizations.scimConfigurations.retrieve({ + scimConfigurationId: 'd2c94c27-3b76-4a42-b88c-95a85e392c68', + }); + }); + + // Prism tests are disabled + test.skip('update: only required params', async () => { + const responsePromise = client.organizations.scimConfigurations.update({ + scimConfigurationId: 'd2c94c27-3b76-4a42-b88c-95a85e392c68', + }); + const rawResponse = await responsePromise.asResponse(); + expect(rawResponse).toBeInstanceOf(Response); + const response = await responsePromise; + expect(response).not.toBeInstanceOf(Response); + const dataAndResponse = await responsePromise.withResponse(); + expect(dataAndResponse.data).toBe(response); + expect(dataAndResponse.response).toBe(rawResponse); + }); + + // Prism tests are disabled + test.skip('update: required and optional params', async () => { + const response = await client.organizations.scimConfigurations.update({ + scimConfigurationId: 'd2c94c27-3b76-4a42-b88c-95a85e392c68', + enabled: false, + name: 'name', + ssoConfigurationId: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', + }); + }); + + // Prism tests are disabled + test.skip('list', async () => { + const responsePromise = client.organizations.scimConfigurations.list({}); + const rawResponse = await responsePromise.asResponse(); + expect(rawResponse).toBeInstanceOf(Response); + const response = await responsePromise; + expect(response).not.toBeInstanceOf(Response); + const dataAndResponse = await responsePromise.withResponse(); + expect(dataAndResponse.data).toBe(response); + expect(dataAndResponse.response).toBe(rawResponse); + }); + + // Prism tests are disabled + test.skip('delete: only required params', async () => { + const responsePromise = client.organizations.scimConfigurations.delete({ + scimConfigurationId: 'd2c94c27-3b76-4a42-b88c-95a85e392c68', + }); + const rawResponse = await responsePromise.asResponse(); + expect(rawResponse).toBeInstanceOf(Response); + const response = await responsePromise; + expect(response).not.toBeInstanceOf(Response); + const dataAndResponse = await responsePromise.withResponse(); + expect(dataAndResponse.data).toBe(response); + expect(dataAndResponse.response).toBe(rawResponse); + }); + + // Prism tests are disabled + test.skip('delete: required and optional params', async () => { + const response = await client.organizations.scimConfigurations.delete({ + scimConfigurationId: 'd2c94c27-3b76-4a42-b88c-95a85e392c68', + }); + }); + + // Prism tests are disabled + test.skip('regenerateToken: only required params', async () => { + const responsePromise = client.organizations.scimConfigurations.regenerateToken({ + scimConfigurationId: 'd2c94c27-3b76-4a42-b88c-95a85e392c68', + }); + const rawResponse = await responsePromise.asResponse(); + expect(rawResponse).toBeInstanceOf(Response); + const response = await responsePromise; + expect(response).not.toBeInstanceOf(Response); + const dataAndResponse = await responsePromise.withResponse(); + expect(dataAndResponse.data).toBe(response); + expect(dataAndResponse.response).toBe(rawResponse); + }); + + // Prism tests are disabled + test.skip('regenerateToken: required and optional params', async () => { + const response = await client.organizations.scimConfigurations.regenerateToken({ + scimConfigurationId: 'd2c94c27-3b76-4a42-b88c-95a85e392c68', + }); + }); +}); From 84db388c8cefaf1efb568854b05d29597fe95cc3 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Mon, 19 Jan 2026 08:02:26 +0000 Subject: [PATCH 20/29] codegen metadata --- .stats.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.stats.yml b/.stats.yml index c7d8a2f..c836904 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 167 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-40c6617e0b944168058135c9325d556b21c2edde19518090aefa542c76afcdb3.yml -openapi_spec_hash: 235404d99aa56e51b933261d195dc206 -config_hash: cec4ffca97dd72023c573623499bc35b +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-041f3ba8dd0f5670e5fe37a61d725bd162d53c10c768bd3aa9b95ddc6d43926a.yml +openapi_spec_hash: 770ce1f0289034006cbe5279535dbbf3 +config_hash: 21bab2a4731f1e55c0a2c62588576282 From c8729efc7036e7a8b0a4748e7dcdb6fec1e462d5 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Mon, 19 Jan 2026 11:34:36 +0000 Subject: [PATCH 21/29] feat(automations): add before_snapshot trigger type --- .stats.yml | 4 ++-- src/resources/runners/runners.ts | 3 ++- src/resources/shared.ts | 8 ++++++-- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/.stats.yml b/.stats.yml index c836904..0df29b8 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 167 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-041f3ba8dd0f5670e5fe37a61d725bd162d53c10c768bd3aa9b95ddc6d43926a.yml -openapi_spec_hash: 770ce1f0289034006cbe5279535dbbf3 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-a7829781a00de0869ad8536dcd67bdbbf224a42f5f3f922065a44e73b0534bbf.yml +openapi_spec_hash: 59381e16e5de8d6de09f92abc0433e02 config_hash: 21bab2a4731f1e55c0a2c62588576282 diff --git a/src/resources/runners/runners.ts b/src/resources/runners/runners.ts index ca12e10..e0bd93e 100644 --- a/src/resources/runners/runners.ts +++ b/src/resources/runners/runners.ts @@ -577,7 +577,8 @@ export type RunnerCapability = | 'RUNNER_CAPABILITY_AGENT_EXECUTION' | 'RUNNER_CAPABILITY_ALLOW_ENV_TOKEN_POPULATION' | 'RUNNER_CAPABILITY_DEFAULT_DEV_CONTAINER_IMAGE' - | 'RUNNER_CAPABILITY_ENVIRONMENT_SNAPSHOT'; + | 'RUNNER_CAPABILITY_ENVIRONMENT_SNAPSHOT' + | 'RUNNER_CAPABILITY_PREBUILDS_BEFORE_SNAPSHOT_TRIGGER'; export interface RunnerConfiguration { /** diff --git a/src/resources/shared.ts b/src/resources/shared.ts index dfc6970..845f97f 100644 --- a/src/resources/shared.ts +++ b/src/resources/shared.ts @@ -20,10 +20,14 @@ import { * `post_devcontainer_start` field indicates that the automation should be * triggered after the dev container has started. The `prebuild` field starts the * automation during a prebuild of an environment. This phase does not have user - * secrets available. Note: The prebuild trigger can only be used with tasks, not - * services. + * secrets available. The `before_snapshot` field triggers the automation after all + * prebuild tasks complete but before the snapshot is taken. This is used for tasks + * that need to run last during prebuilds, such as IDE warmup. Note: The prebuild + * and before_snapshot triggers can only be used with tasks, not services. */ export interface AutomationTrigger { + beforeSnapshot?: boolean; + manual?: boolean; postDevcontainerStart?: boolean; From 3d88aae430368a1507767f331632883382e5e136 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 20 Jan 2026 03:19:42 +0000 Subject: [PATCH 22/29] feat: [backend] Adding direct_share field to groups --- .stats.yml | 4 ++-- src/resources/groups/groups.ts | 6 ++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/.stats.yml b/.stats.yml index 0df29b8..52fe54a 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 167 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-a7829781a00de0869ad8536dcd67bdbbf224a42f5f3f922065a44e73b0534bbf.yml -openapi_spec_hash: 59381e16e5de8d6de09f92abc0433e02 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-dfd13e2785a9e0e662f79aab0c03d45144d803fedd87510ec27791b79ede6162.yml +openapi_spec_hash: 8dcab0c2c65f9eb778e9b2cf3c44bf5c config_hash: 21bab2a4731f1e55c0a2c62588576282 diff --git a/src/resources/groups/groups.ts b/src/resources/groups/groups.ts index 6c991f4..c7e706a 100644 --- a/src/resources/groups/groups.ts +++ b/src/resources/groups/groups.ts @@ -334,6 +334,12 @@ export interface Group { description?: string; + /** + * direct_share indicates that this group is used for direct user sharing on + * resources. These groups are hidden from regular group listings. + */ + directShare?: boolean; + /** * member_count is the total number of members in this group */ From f795699dfe92fcf2c930085845569844cddd67fd Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 20 Jan 2026 05:13:46 +0000 Subject: [PATCH 23/29] feat: [api] Introduce RPCs to share resources with individual users --- .stats.yml | 8 +- api.md | 14 +- src/client.ts | 1 + src/resources/groups/groups.ts | 20 ++- src/resources/groups/index.ts | 8 +- src/resources/groups/role-assignments.ts | 65 +-------- src/resources/groups/shares.ts | 169 ++++++++++++++++++++++ src/resources/shared.ts | 57 ++++++++ tests/api-resources/groups/shares.test.ts | 34 +++++ 9 files changed, 306 insertions(+), 70 deletions(-) create mode 100644 src/resources/groups/shares.ts create mode 100644 tests/api-resources/groups/shares.test.ts diff --git a/.stats.yml b/.stats.yml index 52fe54a..896d8f2 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ -configured_endpoints: 167 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-dfd13e2785a9e0e662f79aab0c03d45144d803fedd87510ec27791b79ede6162.yml -openapi_spec_hash: 8dcab0c2c65f9eb778e9b2cf3c44bf5c -config_hash: 21bab2a4731f1e55c0a2c62588576282 +configured_endpoints: 169 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-6b80aebab53bff73bb7b87c5f91f98c6dd5db2d623b6c613aaa5e61252b74d75.yml +openapi_spec_hash: 9636e315ac739c1ab9cba65a7ead6559 +config_hash: 73893621fd64bbd87b86671decf334e6 diff --git a/api.md b/api.md index 595b8c1..162d903 100644 --- a/api.md +++ b/api.md @@ -13,6 +13,7 @@ Types: - OrganizationTier - Principal - ProjectEnvironmentClass +- ResourceRole - ResourceType - RunsOn - SecretRef @@ -291,7 +292,6 @@ Methods: Types: -- ResourceRole - RoleAssignment - RoleAssignmentCreateResponse - RoleAssignmentDeleteResponse @@ -302,6 +302,18 @@ Methods: - client.groups.roleAssignments.list({ ...params }) -> RoleAssignmentsAssignmentsPage - client.groups.roleAssignments.delete({ ...params }) -> unknown +## Shares + +Types: + +- ShareCreateResponse +- ShareDeleteResponse + +Methods: + +- client.groups.shares.create({ ...params }) -> unknown +- client.groups.shares.delete({ ...params }) -> unknown + # Identity Types: diff --git a/src/client.ts b/src/client.ts index 5c30e5f..df6e7a7 100644 --- a/src/client.ts +++ b/src/client.ts @@ -1560,6 +1560,7 @@ export declare namespace Gitpod { export type OrganizationTier = API.OrganizationTier; export type Principal = API.Principal; export type ProjectEnvironmentClass = API.ProjectEnvironmentClass; + export type ResourceRole = API.ResourceRole; export type ResourceType = API.ResourceType; export type RunsOn = API.RunsOn; export type SecretRef = API.SecretRef; diff --git a/src/resources/groups/groups.ts b/src/resources/groups/groups.ts index c7e706a..6f47240 100644 --- a/src/resources/groups/groups.ts +++ b/src/resources/groups/groups.ts @@ -16,7 +16,6 @@ import { } from './memberships'; import * as RoleAssignmentsAPI from './role-assignments'; import { - ResourceRole, RoleAssignment, RoleAssignmentCreateParams, RoleAssignmentCreateResponse, @@ -26,6 +25,14 @@ import { RoleAssignments, RoleAssignmentsAssignmentsPage, } from './role-assignments'; +import * as SharesAPI from './shares'; +import { + ShareCreateParams, + ShareCreateResponse, + ShareDeleteParams, + ShareDeleteResponse, + Shares, +} from './shares'; import { APIPromise } from '../../core/api-promise'; import { GroupsPage, type GroupsPageParams, PagePromise } from '../../core/pagination'; import { RequestOptions } from '../../internal/request-options'; @@ -33,6 +40,7 @@ import { RequestOptions } from '../../internal/request-options'; export class Groups extends APIResource { memberships: MembershipsAPI.Memberships = new MembershipsAPI.Memberships(this._client); roleAssignments: RoleAssignmentsAPI.RoleAssignments = new RoleAssignmentsAPI.RoleAssignments(this._client); + shares: SharesAPI.Shares = new SharesAPI.Shares(this._client); /** * Creates a new group within an organization. @@ -516,6 +524,7 @@ export interface GroupDeleteParams { Groups.Memberships = Memberships; Groups.RoleAssignments = RoleAssignments; +Groups.Shares = Shares; export declare namespace Groups { export { @@ -547,7 +556,6 @@ export declare namespace Groups { export { RoleAssignments as RoleAssignments, - type ResourceRole as ResourceRole, type RoleAssignment as RoleAssignment, type RoleAssignmentCreateResponse as RoleAssignmentCreateResponse, type RoleAssignmentDeleteResponse as RoleAssignmentDeleteResponse, @@ -556,4 +564,12 @@ export declare namespace Groups { type RoleAssignmentListParams as RoleAssignmentListParams, type RoleAssignmentDeleteParams as RoleAssignmentDeleteParams, }; + + export { + Shares as Shares, + type ShareCreateResponse as ShareCreateResponse, + type ShareDeleteResponse as ShareDeleteResponse, + type ShareCreateParams as ShareCreateParams, + type ShareDeleteParams as ShareDeleteParams, + }; } diff --git a/src/resources/groups/index.ts b/src/resources/groups/index.ts index bdaec7e..19d31d8 100644 --- a/src/resources/groups/index.ts +++ b/src/resources/groups/index.ts @@ -28,7 +28,6 @@ export { } from './memberships'; export { RoleAssignments, - type ResourceRole, type RoleAssignment, type RoleAssignmentCreateResponse, type RoleAssignmentDeleteResponse, @@ -37,3 +36,10 @@ export { type RoleAssignmentDeleteParams, type RoleAssignmentsAssignmentsPage, } from './role-assignments'; +export { + Shares, + type ShareCreateResponse, + type ShareDeleteResponse, + type ShareCreateParams, + type ShareDeleteParams, +} from './shares'; diff --git a/src/resources/groups/role-assignments.ts b/src/resources/groups/role-assignments.ts index ee6b34c..218fb98 100644 --- a/src/resources/groups/role-assignments.ts +++ b/src/resources/groups/role-assignments.ts @@ -1,7 +1,6 @@ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. import { APIResource } from '../../core/resource'; -import * as RoleAssignmentsAPI from './role-assignments'; import * as Shared from '../shared'; import { APIPromise } from '../../core/api-promise'; import { AssignmentsPage, type AssignmentsPageParams, PagePromise } from '../../core/pagination'; @@ -162,63 +161,6 @@ export class RoleAssignments extends APIResource { export type RoleAssignmentsAssignmentsPage = AssignmentsPage; -/** - * ResourceRole represents roles that can be assigned to groups on resources These - * map directly to the roles defined in backend/db/rule/rbac/role/role.go - */ -export type ResourceRole = - | 'RESOURCE_ROLE_UNSPECIFIED' - | 'RESOURCE_ROLE_ORG_ADMIN' - | 'RESOURCE_ROLE_ORG_MEMBER' - | 'RESOURCE_ROLE_ORG_RUNNERS_ADMIN' - | 'RESOURCE_ROLE_GROUP_ADMIN' - | 'RESOURCE_ROLE_GROUP_VIEWER' - | 'RESOURCE_ROLE_USER_IDENTITY' - | 'RESOURCE_ROLE_USER_VIEWER' - | 'RESOURCE_ROLE_USER_ADMIN' - | 'RESOURCE_ROLE_ENVIRONMENT_IDENTITY' - | 'RESOURCE_ROLE_ENVIRONMENT_ADMIN' - | 'RESOURCE_ROLE_ENVIRONMENT_USER' - | 'RESOURCE_ROLE_ENVIRONMENT_VIEWER' - | 'RESOURCE_ROLE_ENVIRONMENT_RUNNER' - | 'RESOURCE_ROLE_RUNNER_IDENTITY' - | 'RESOURCE_ROLE_RUNNER_ADMIN' - | 'RESOURCE_ROLE_RUNNER_LOCAL_ADMIN' - | 'RESOURCE_ROLE_RUNNER_MANAGED_ADMIN' - | 'RESOURCE_ROLE_RUNNER_USER' - | 'RESOURCE_ROLE_RUNNER_CONFIGURATION_READER' - | 'RESOURCE_ROLE_HOST_AUTHENTICATION_TOKEN_ADMIN' - | 'RESOURCE_ROLE_HOST_AUTHENTICATION_TOKEN_UPDATER' - | 'RESOURCE_ROLE_PROJECT_ADMIN' - | 'RESOURCE_ROLE_PROJECT_USER' - | 'RESOURCE_ROLE_PROJECT_EDITOR' - | 'RESOURCE_ROLE_ENVIRONMENT_SERVICE_ADMIN' - | 'RESOURCE_ROLE_ENVIRONMENT_SERVICE_VIEWER' - | 'RESOURCE_ROLE_ENVIRONMENT_SERVICE_USER' - | 'RESOURCE_ROLE_ENVIRONMENT_SERVICE_ENV' - | 'RESOURCE_ROLE_ENVIRONMENT_TASK_ADMIN' - | 'RESOURCE_ROLE_ENVIRONMENT_TASK_VIEWER' - | 'RESOURCE_ROLE_ENVIRONMENT_TASK_USER' - | 'RESOURCE_ROLE_ENVIRONMENT_TASK_ENV' - | 'RESOURCE_ROLE_SERVICE_ACCOUNT_IDENTITY' - | 'RESOURCE_ROLE_SERVICE_ACCOUNT_ADMIN' - | 'RESOURCE_ROLE_AGENT_EXECUTION_IDENTITY' - | 'RESOURCE_ROLE_AGENT_EXECUTION_USER' - | 'RESOURCE_ROLE_AGENT_EXECUTION_ADMIN' - | 'RESOURCE_ROLE_AGENT_EXECUTION_RUNNER' - | 'RESOURCE_ROLE_AGENT_EXECUTION_OUTPUTS_REPORTER' - | 'RESOURCE_ROLE_AGENT_ADMIN' - | 'RESOURCE_ROLE_AGENT_VIEWER' - | 'RESOURCE_ROLE_AGENT_EXECUTOR' - | 'RESOURCE_ROLE_WORKFLOW_ADMIN' - | 'RESOURCE_ROLE_WORKFLOW_USER' - | 'RESOURCE_ROLE_WORKFLOW_VIEWER' - | 'RESOURCE_ROLE_WORKFLOW_EXECUTOR' - | 'RESOURCE_ROLE_SNAPSHOT_ADMIN' - | 'RESOURCE_ROLE_SNAPSHOT_RUNNER' - | 'RESOURCE_ROLE_WEBHOOK_ADMIN' - | 'RESOURCE_ROLE_WEBHOOK_VIEWER'; - /** * RoleAssignment represents a role assigned to a group on a specific resource */ @@ -246,7 +188,7 @@ export interface RoleAssignment { /** * Role assigned to the group on this resource */ - resourceRole?: ResourceRole; + resourceRole?: Shared.ResourceRole; /** * Type of resource (runner, project, environment, etc.) @@ -275,7 +217,7 @@ export interface RoleAssignmentCreateParams { * ResourceRole represents roles that can be assigned to groups on resources These * map directly to the roles defined in backend/db/rule/rbac/role/role.go */ - resourceRole?: ResourceRole; + resourceRole?: Shared.ResourceRole; resourceType?: Shared.ResourceType; } @@ -307,7 +249,7 @@ export namespace RoleAssignmentListParams { * resource_roles filters the response to only role assignments with these specific * roles */ - resourceRoles?: Array; + resourceRoles?: Array; /** * resource_types filters the response to only role assignments for these resource @@ -346,7 +288,6 @@ export interface RoleAssignmentDeleteParams { export declare namespace RoleAssignments { export { - type ResourceRole as ResourceRole, type RoleAssignment as RoleAssignment, type RoleAssignmentCreateResponse as RoleAssignmentCreateResponse, type RoleAssignmentDeleteResponse as RoleAssignmentDeleteResponse, diff --git a/src/resources/groups/shares.ts b/src/resources/groups/shares.ts new file mode 100644 index 0000000..03ddd62 --- /dev/null +++ b/src/resources/groups/shares.ts @@ -0,0 +1,169 @@ +// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +import { APIResource } from '../../core/resource'; +import * as Shared from '../shared'; +import { APIPromise } from '../../core/api-promise'; +import { RequestOptions } from '../../internal/request-options'; + +export class Shares extends APIResource { + /** + * Shares a resource directly with a principal (user or service account). + * + * Use this method to: + * + * - Grant a user or service account direct access to a runner, project, or other + * resource + * - Share resources without creating and managing groups manually + * + * ### Examples + * + * - Share a runner with a user: + * + * Grants admin access to a runner for a specific user. + * + * ```yaml + * resourceType: RESOURCE_TYPE_RUNNER + * resourceId: "d2c94c27-3b76-4a42-b88c-95a85e392c68" + * principal: PRINCIPAL_USER + * principalId: "f53d2330-3795-4c5d-a1f3-453121af9c60" + * role: RESOURCE_ROLE_RUNNER_ADMIN + * ``` + * + * - Share a runner with a service account: + * + * Grants user access to a runner for a service account. + * + * ```yaml + * resourceType: RESOURCE_TYPE_RUNNER + * resourceId: "d2c94c27-3b76-4a42-b88c-95a85e392c68" + * principal: PRINCIPAL_SERVICE_ACCOUNT + * principalId: "a1b2c3d4-5678-90ab-cdef-1234567890ab" + * role: RESOURCE_ROLE_RUNNER_USER + * ``` + * + * ### Authorization + * + * Requires admin role on the specific resource. + * + * @example + * ```ts + * const share = await client.groups.shares.create({ + * principal: 'PRINCIPAL_SERVICE_ACCOUNT', + * principalId: 'a1b2c3d4-5678-90ab-cdef-1234567890ab', + * resourceId: 'd2c94c27-3b76-4a42-b88c-95a85e392c68', + * resourceType: 'RESOURCE_TYPE_RUNNER', + * role: 'RESOURCE_ROLE_RUNNER_USER', + * }); + * ``` + */ + create(body: ShareCreateParams, options?: RequestOptions): APIPromise { + return this._client.post('/gitpod.v1.GroupService/ShareResourceWithPrincipal', { body, ...options }); + } + + /** + * Removes direct access for a principal (user or service account) from a resource. + * + * Use this method to: + * + * - Revoke a principal's direct access to a resource + * - Remove sharing without affecting group-based access + * + * ### Examples + * + * - Remove user access from a runner: + * + * Revokes a user's direct access to a runner. + * + * ```yaml + * resourceType: RESOURCE_TYPE_RUNNER + * resourceId: "d2c94c27-3b76-4a42-b88c-95a85e392c68" + * principal: PRINCIPAL_USER + * principalId: "f53d2330-3795-4c5d-a1f3-453121af9c60" + * ``` + * + * ### Authorization + * + * Requires admin role on the specific resource. + * + * @example + * ```ts + * const share = await client.groups.shares.delete({ + * principal: 'PRINCIPAL_USER', + * principalId: 'f53d2330-3795-4c5d-a1f3-453121af9c60', + * resourceId: 'd2c94c27-3b76-4a42-b88c-95a85e392c68', + * resourceType: 'RESOURCE_TYPE_RUNNER', + * }); + * ``` + */ + delete(body: ShareDeleteParams, options?: RequestOptions): APIPromise { + return this._client.post('/gitpod.v1.GroupService/UnshareResourceWithPrincipal', { body, ...options }); + } +} + +/** + * Empty response on success + */ +export type ShareCreateResponse = unknown; + +/** + * Empty response on success + */ +export type ShareDeleteResponse = unknown; + +export interface ShareCreateParams { + /** + * Type of principal to share with (user or service account) + */ + principal?: Shared.Principal; + + /** + * ID of the principal (user or service account) to share with + */ + principalId?: string; + + /** + * ID of the resource to share + */ + resourceId?: string; + + /** + * Type of resource to share (runner, project, etc.) + */ + resourceType?: Shared.ResourceType; + + /** + * Role to grant the principal on the resource + */ + role?: Shared.ResourceRole; +} + +export interface ShareDeleteParams { + /** + * Type of principal to remove access from (user or service account) + */ + principal?: Shared.Principal; + + /** + * ID of the principal (user or service account) to remove access from + */ + principalId?: string; + + /** + * ID of the resource to unshare + */ + resourceId?: string; + + /** + * Type of resource to unshare + */ + resourceType?: Shared.ResourceType; +} + +export declare namespace Shares { + export { + type ShareCreateResponse as ShareCreateResponse, + type ShareDeleteResponse as ShareDeleteResponse, + type ShareCreateParams as ShareCreateParams, + type ShareDeleteParams as ShareDeleteParams, + }; +} diff --git a/src/resources/shared.ts b/src/resources/shared.ts index 845f97f..d583493 100644 --- a/src/resources/shared.ts +++ b/src/resources/shared.ts @@ -193,6 +193,63 @@ export interface ProjectEnvironmentClass { order?: number; } +/** + * ResourceRole represents roles that can be assigned to groups on resources These + * map directly to the roles defined in backend/db/rule/rbac/role/role.go + */ +export type ResourceRole = + | 'RESOURCE_ROLE_UNSPECIFIED' + | 'RESOURCE_ROLE_ORG_ADMIN' + | 'RESOURCE_ROLE_ORG_MEMBER' + | 'RESOURCE_ROLE_ORG_RUNNERS_ADMIN' + | 'RESOURCE_ROLE_GROUP_ADMIN' + | 'RESOURCE_ROLE_GROUP_VIEWER' + | 'RESOURCE_ROLE_USER_IDENTITY' + | 'RESOURCE_ROLE_USER_VIEWER' + | 'RESOURCE_ROLE_USER_ADMIN' + | 'RESOURCE_ROLE_ENVIRONMENT_IDENTITY' + | 'RESOURCE_ROLE_ENVIRONMENT_ADMIN' + | 'RESOURCE_ROLE_ENVIRONMENT_USER' + | 'RESOURCE_ROLE_ENVIRONMENT_VIEWER' + | 'RESOURCE_ROLE_ENVIRONMENT_RUNNER' + | 'RESOURCE_ROLE_RUNNER_IDENTITY' + | 'RESOURCE_ROLE_RUNNER_ADMIN' + | 'RESOURCE_ROLE_RUNNER_LOCAL_ADMIN' + | 'RESOURCE_ROLE_RUNNER_MANAGED_ADMIN' + | 'RESOURCE_ROLE_RUNNER_USER' + | 'RESOURCE_ROLE_RUNNER_CONFIGURATION_READER' + | 'RESOURCE_ROLE_HOST_AUTHENTICATION_TOKEN_ADMIN' + | 'RESOURCE_ROLE_HOST_AUTHENTICATION_TOKEN_UPDATER' + | 'RESOURCE_ROLE_PROJECT_ADMIN' + | 'RESOURCE_ROLE_PROJECT_USER' + | 'RESOURCE_ROLE_PROJECT_EDITOR' + | 'RESOURCE_ROLE_ENVIRONMENT_SERVICE_ADMIN' + | 'RESOURCE_ROLE_ENVIRONMENT_SERVICE_VIEWER' + | 'RESOURCE_ROLE_ENVIRONMENT_SERVICE_USER' + | 'RESOURCE_ROLE_ENVIRONMENT_SERVICE_ENV' + | 'RESOURCE_ROLE_ENVIRONMENT_TASK_ADMIN' + | 'RESOURCE_ROLE_ENVIRONMENT_TASK_VIEWER' + | 'RESOURCE_ROLE_ENVIRONMENT_TASK_USER' + | 'RESOURCE_ROLE_ENVIRONMENT_TASK_ENV' + | 'RESOURCE_ROLE_SERVICE_ACCOUNT_IDENTITY' + | 'RESOURCE_ROLE_SERVICE_ACCOUNT_ADMIN' + | 'RESOURCE_ROLE_AGENT_EXECUTION_IDENTITY' + | 'RESOURCE_ROLE_AGENT_EXECUTION_USER' + | 'RESOURCE_ROLE_AGENT_EXECUTION_ADMIN' + | 'RESOURCE_ROLE_AGENT_EXECUTION_RUNNER' + | 'RESOURCE_ROLE_AGENT_EXECUTION_OUTPUTS_REPORTER' + | 'RESOURCE_ROLE_AGENT_ADMIN' + | 'RESOURCE_ROLE_AGENT_VIEWER' + | 'RESOURCE_ROLE_AGENT_EXECUTOR' + | 'RESOURCE_ROLE_WORKFLOW_ADMIN' + | 'RESOURCE_ROLE_WORKFLOW_USER' + | 'RESOURCE_ROLE_WORKFLOW_VIEWER' + | 'RESOURCE_ROLE_WORKFLOW_EXECUTOR' + | 'RESOURCE_ROLE_SNAPSHOT_ADMIN' + | 'RESOURCE_ROLE_SNAPSHOT_RUNNER' + | 'RESOURCE_ROLE_WEBHOOK_ADMIN' + | 'RESOURCE_ROLE_WEBHOOK_VIEWER'; + export type ResourceType = | 'RESOURCE_TYPE_UNSPECIFIED' | 'RESOURCE_TYPE_ENVIRONMENT' diff --git a/tests/api-resources/groups/shares.test.ts b/tests/api-resources/groups/shares.test.ts new file mode 100644 index 0000000..ad152de --- /dev/null +++ b/tests/api-resources/groups/shares.test.ts @@ -0,0 +1,34 @@ +// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +import Gitpod from '@gitpod/sdk'; + +const client = new Gitpod({ + bearerToken: 'My Bearer Token', + baseURL: process.env['TEST_API_BASE_URL'] ?? 'http://127.0.0.1:4010', +}); + +describe('resource shares', () => { + // Prism tests are disabled + test.skip('create', async () => { + const responsePromise = client.groups.shares.create({}); + const rawResponse = await responsePromise.asResponse(); + expect(rawResponse).toBeInstanceOf(Response); + const response = await responsePromise; + expect(response).not.toBeInstanceOf(Response); + const dataAndResponse = await responsePromise.withResponse(); + expect(dataAndResponse.data).toBe(response); + expect(dataAndResponse.response).toBe(rawResponse); + }); + + // Prism tests are disabled + test.skip('delete', async () => { + const responsePromise = client.groups.shares.delete({}); + const rawResponse = await responsePromise.asResponse(); + expect(rawResponse).toBeInstanceOf(Response); + const response = await responsePromise; + expect(response).not.toBeInstanceOf(Response); + const dataAndResponse = await responsePromise.withResponse(); + expect(dataAndResponse.data).toBe(response); + expect(dataAndResponse.response).toBe(rawResponse); + }); +}); From 8ae77ad1491bf100031b7263e41a9f87cb629849 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 20 Jan 2026 08:59:31 +0000 Subject: [PATCH 24/29] feat(api): add CheckRepositoryAccess API for repository access validation --- .stats.yml | 8 +-- api.md | 2 + src/client.ts | 4 ++ src/resources/index.ts | 2 + src/resources/runners/index.ts | 2 + src/resources/runners/runners.ts | 67 +++++++++++++++++++++ tests/api-resources/runners/runners.test.ts | 12 ++++ 7 files changed, 93 insertions(+), 4 deletions(-) diff --git a/.stats.yml b/.stats.yml index 896d8f2..d450123 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ -configured_endpoints: 169 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-6b80aebab53bff73bb7b87c5f91f98c6dd5db2d623b6c613aaa5e61252b74d75.yml -openapi_spec_hash: 9636e315ac739c1ab9cba65a7ead6559 -config_hash: 73893621fd64bbd87b86671decf334e6 +configured_endpoints: 170 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-024993504dfc744ff138b0d1b1a151e28129f9f5a8b55adff4c7b559b0556c62.yml +openapi_spec_hash: 4773277eb2a6ac6be0b2e8f89a2201d8 +config_hash: 942ffc968ca0131e192c1a7ac5dd8990 diff --git a/api.md b/api.md index 162d903..91689f3 100644 --- a/api.md +++ b/api.md @@ -564,6 +564,7 @@ Types: - RunnerUpdateResponse - RunnerDeleteResponse - RunnerCheckAuthenticationForHostResponse +- RunnerCheckRepositoryAccessResponse - RunnerCreateLogsTokenResponse - RunnerCreateRunnerTokenResponse - RunnerListScmOrganizationsResponse @@ -578,6 +579,7 @@ Methods: - client.runners.list({ ...params }) -> RunnersRunnersPage - client.runners.delete({ ...params }) -> unknown - client.runners.checkAuthenticationForHost({ ...params }) -> RunnerCheckAuthenticationForHostResponse +- client.runners.checkRepositoryAccess({ ...params }) -> RunnerCheckRepositoryAccessResponse - client.runners.createLogsToken({ ...params }) -> RunnerCreateLogsTokenResponse - client.runners.createRunnerToken({ ...params }) -> RunnerCreateRunnerTokenResponse - client.runners.listScmOrganizations({ ...params }) -> RunnerListScmOrganizationsResponse diff --git a/src/client.ts b/src/client.ts index df6e7a7..ccdb78b 100644 --- a/src/client.ts +++ b/src/client.ts @@ -326,6 +326,8 @@ import { RunnerCapability, RunnerCheckAuthenticationForHostParams, RunnerCheckAuthenticationForHostResponse, + RunnerCheckRepositoryAccessParams, + RunnerCheckRepositoryAccessResponse, RunnerConfiguration, RunnerCreateLogsTokenParams, RunnerCreateLogsTokenResponse, @@ -1494,6 +1496,7 @@ export declare namespace Gitpod { type RunnerUpdateResponse as RunnerUpdateResponse, type RunnerDeleteResponse as RunnerDeleteResponse, type RunnerCheckAuthenticationForHostResponse as RunnerCheckAuthenticationForHostResponse, + type RunnerCheckRepositoryAccessResponse as RunnerCheckRepositoryAccessResponse, type RunnerCreateLogsTokenResponse as RunnerCreateLogsTokenResponse, type RunnerCreateRunnerTokenResponse as RunnerCreateRunnerTokenResponse, type RunnerListScmOrganizationsResponse as RunnerListScmOrganizationsResponse, @@ -1506,6 +1509,7 @@ export declare namespace Gitpod { type RunnerListParams as RunnerListParams, type RunnerDeleteParams as RunnerDeleteParams, type RunnerCheckAuthenticationForHostParams as RunnerCheckAuthenticationForHostParams, + type RunnerCheckRepositoryAccessParams as RunnerCheckRepositoryAccessParams, type RunnerCreateLogsTokenParams as RunnerCreateLogsTokenParams, type RunnerCreateRunnerTokenParams as RunnerCreateRunnerTokenParams, type RunnerListScmOrganizationsParams as RunnerListScmOrganizationsParams, diff --git a/src/resources/index.ts b/src/resources/index.ts index 1365dbc..8964021 100644 --- a/src/resources/index.ts +++ b/src/resources/index.ts @@ -232,6 +232,7 @@ export { type RunnerUpdateResponse, type RunnerDeleteResponse, type RunnerCheckAuthenticationForHostResponse, + type RunnerCheckRepositoryAccessResponse, type RunnerCreateLogsTokenResponse, type RunnerCreateRunnerTokenResponse, type RunnerListScmOrganizationsResponse, @@ -243,6 +244,7 @@ export { type RunnerListParams, type RunnerDeleteParams, type RunnerCheckAuthenticationForHostParams, + type RunnerCheckRepositoryAccessParams, type RunnerCreateLogsTokenParams, type RunnerCreateRunnerTokenParams, type RunnerListScmOrganizationsParams, diff --git a/src/resources/runners/index.ts b/src/resources/runners/index.ts index ea5dfb0..fe5499a 100644 --- a/src/resources/runners/index.ts +++ b/src/resources/runners/index.ts @@ -42,6 +42,7 @@ export { type RunnerUpdateResponse, type RunnerDeleteResponse, type RunnerCheckAuthenticationForHostResponse, + type RunnerCheckRepositoryAccessResponse, type RunnerCreateLogsTokenResponse, type RunnerCreateRunnerTokenResponse, type RunnerListScmOrganizationsResponse, @@ -53,6 +54,7 @@ export { type RunnerListParams, type RunnerDeleteParams, type RunnerCheckAuthenticationForHostParams, + type RunnerCheckRepositoryAccessParams, type RunnerCreateLogsTokenParams, type RunnerCreateRunnerTokenParams, type RunnerListScmOrganizationsParams, diff --git a/src/resources/runners/runners.ts b/src/resources/runners/runners.ts index e0bd93e..e192a13 100644 --- a/src/resources/runners/runners.ts +++ b/src/resources/runners/runners.ts @@ -287,6 +287,48 @@ export class Runners extends APIResource { return this._client.post('/gitpod.v1.RunnerService/CheckAuthenticationForHost', { body, ...options }); } + /** + * Checks if a principal has read access to a repository. + * + * Use this method to: + * + * - Validate repository access before workflow execution + * - Verify executor credentials for automation bindings + * + * Returns: + * + * - has_access: true if the principal can read the repository + * - FAILED_PRECONDITION if authentication is required + * - INVALID_ARGUMENT if the repository URL is invalid + * + * ### Examples + * + * - Check access: + * + * Verifies read access to a repository. + * + * ```yaml + * runnerId: "d2c94c27-3b76-4a42-b88c-95a85e392c68" + * repositoryUrl: "https://github.com/org/repo" + * ``` + * + * @example + * ```ts + * const response = await client.runners.checkRepositoryAccess( + * { + * repositoryUrl: 'https://github.com/org/repo', + * runnerId: 'd2c94c27-3b76-4a42-b88c-95a85e392c68', + * }, + * ); + * ``` + */ + checkRepositoryAccess( + body: RunnerCheckRepositoryAccessParams, + options?: RequestOptions, + ): APIPromise { + return this._client.post('/gitpod.v1.RunnerService/CheckRepositoryAccess', { body, ...options }); + } + /** * Creates an access token for runner logs and debug information. * @@ -848,6 +890,19 @@ export namespace RunnerCheckAuthenticationForHostResponse { } } +export interface RunnerCheckRepositoryAccessResponse { + /** + * error_message provides details when access check fails. Empty when has_access is + * true. + */ + errorMessage?: string; + + /** + * has_access indicates whether the principal has read access to the repository. + */ + hasAccess?: boolean; +} + export interface RunnerCreateLogsTokenResponse { /** * access_token is the token that can be used to access the logs and support bundle @@ -1277,6 +1332,16 @@ export interface RunnerCheckAuthenticationForHostParams { runnerId?: string; } +export interface RunnerCheckRepositoryAccessParams { + /** + * repository_url is the URL of the repository to check access for. Can be a clone + * URL (https://github.com/org/repo.git) or web URL (https://github.com/org/repo). + */ + repositoryUrl?: string; + + runnerId?: string; +} + export interface RunnerCreateLogsTokenParams { /** * runner_id specifies the runner for which the logs token should be created. @@ -1392,6 +1457,7 @@ export declare namespace Runners { type RunnerUpdateResponse as RunnerUpdateResponse, type RunnerDeleteResponse as RunnerDeleteResponse, type RunnerCheckAuthenticationForHostResponse as RunnerCheckAuthenticationForHostResponse, + type RunnerCheckRepositoryAccessResponse as RunnerCheckRepositoryAccessResponse, type RunnerCreateLogsTokenResponse as RunnerCreateLogsTokenResponse, type RunnerCreateRunnerTokenResponse as RunnerCreateRunnerTokenResponse, type RunnerListScmOrganizationsResponse as RunnerListScmOrganizationsResponse, @@ -1404,6 +1470,7 @@ export declare namespace Runners { type RunnerListParams as RunnerListParams, type RunnerDeleteParams as RunnerDeleteParams, type RunnerCheckAuthenticationForHostParams as RunnerCheckAuthenticationForHostParams, + type RunnerCheckRepositoryAccessParams as RunnerCheckRepositoryAccessParams, type RunnerCreateLogsTokenParams as RunnerCreateLogsTokenParams, type RunnerCreateRunnerTokenParams as RunnerCreateRunnerTokenParams, type RunnerListScmOrganizationsParams as RunnerListScmOrganizationsParams, diff --git a/tests/api-resources/runners/runners.test.ts b/tests/api-resources/runners/runners.test.ts index eb413b4..62caf16 100644 --- a/tests/api-resources/runners/runners.test.ts +++ b/tests/api-resources/runners/runners.test.ts @@ -80,6 +80,18 @@ describe('resource runners', () => { expect(dataAndResponse.response).toBe(rawResponse); }); + // Prism tests are disabled + test.skip('checkRepositoryAccess', async () => { + const responsePromise = client.runners.checkRepositoryAccess({}); + const rawResponse = await responsePromise.asResponse(); + expect(rawResponse).toBeInstanceOf(Response); + const response = await responsePromise; + expect(response).not.toBeInstanceOf(Response); + const dataAndResponse = await responsePromise.withResponse(); + expect(dataAndResponse.data).toBe(response); + expect(dataAndResponse.response).toBe(rawResponse); + }); + // Prism tests are disabled test.skip('createLogsToken', async () => { const responsePromise = client.runners.createLogsToken({}); From 7dca79b0beb15be6ca00f1a7e13fb04b06b69b9d Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 20 Jan 2026 09:21:58 +0000 Subject: [PATCH 25/29] codegen metadata --- .stats.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.stats.yml b/.stats.yml index d450123..718b910 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 170 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-024993504dfc744ff138b0d1b1a151e28129f9f5a8b55adff4c7b559b0556c62.yml -openapi_spec_hash: 4773277eb2a6ac6be0b2e8f89a2201d8 -config_hash: 942ffc968ca0131e192c1a7ac5dd8990 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-eeec67988ceb123d93514d894e04b0fa00dbf0c4678b95baa80868c103aaa0c1.yml +openapi_spec_hash: 3bf178a4e70c15f12fdc23531fe81aea +config_hash: d726afb2a92132197e4eae04303e8041 From 19f7c16b298c577b080e65ce464532242e18ac99 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 20 Jan 2026 13:28:18 +0000 Subject: [PATCH 26/29] feat(api): add inputs array to UserInputBlock proto --- .stats.yml | 4 ++-- src/resources/agents.ts | 49 ++++++++++++++++++++++++++++++++++++----- 2 files changed, 46 insertions(+), 7 deletions(-) diff --git a/.stats.yml b/.stats.yml index 718b910..de7a963 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 170 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-eeec67988ceb123d93514d894e04b0fa00dbf0c4678b95baa80868c103aaa0c1.yml -openapi_spec_hash: 3bf178a4e70c15f12fdc23531fe81aea +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-f838b3c6096ed0143c969fcdd6acf63cb619865ef707e1213194d3b82afe10bf.yml +openapi_spec_hash: 00a77c0d2749b833f8e29c8493b7ea98 config_hash: d726afb2a92132197e4eae04303e8041 diff --git a/src/resources/agents.ts b/src/resources/agents.ts index db20cff..cb81bd1 100644 --- a/src/resources/agents.ts +++ b/src/resources/agents.ts @@ -1172,26 +1172,65 @@ export interface UserInputBlock { createdAt?: string; /** - * ImageInput allows sending images to the agent. Media type is inferred from magic - * bytes by the backend. + * @deprecated ImageInput allows sending images to the agent. Client must provide + * the MIME type; backend validates against magic bytes. */ image?: UserInputBlock.Image; + inputs?: Array; + + /** + * @deprecated + */ text?: UserInputBlock.Text; } export namespace UserInputBlock { /** - * ImageInput allows sending images to the agent. Media type is inferred from magic - * bytes by the backend. + * @deprecated ImageInput allows sending images to the agent. Client must provide + * the MIME type; backend validates against magic bytes. */ export interface Image { /** - * Raw image data (max 4MB). Supported formats: PNG, JPEG, WebP. + * Raw image data (max 4MB). Supported formats: PNG, JPEG. */ data?: string; + + mimeType?: 'image/png' | 'image/jpeg'; } + export interface Input { + /** + * ImageInput allows sending images to the agent. Client must provide the MIME + * type; backend validates against magic bytes. + */ + image?: Input.Image; + + text?: Input.Text; + } + + export namespace Input { + /** + * ImageInput allows sending images to the agent. Client must provide the MIME + * type; backend validates against magic bytes. + */ + export interface Image { + /** + * Raw image data (max 4MB). Supported formats: PNG, JPEG. + */ + data?: string; + + mimeType?: 'image/png' | 'image/jpeg'; + } + + export interface Text { + content?: string; + } + } + + /** + * @deprecated + */ export interface Text { content?: string; } From 7c907013b04eb971cf061138807924c24fec81e0 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 20 Jan 2026 13:44:01 +0000 Subject: [PATCH 27/29] feat(agent): add spec mode for planning before interactive implementation --- .stats.yml | 4 ++-- src/resources/agents.ts | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.stats.yml b/.stats.yml index de7a963..bec4a22 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 170 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-f838b3c6096ed0143c969fcdd6acf63cb619865ef707e1213194d3b82afe10bf.yml -openapi_spec_hash: 00a77c0d2749b833f8e29c8493b7ea98 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-df34fde966f11e17c7e733280ca1e0aeda7ee786ca7de6d245d649970fa71764.yml +openapi_spec_hash: 9c8c2465318c2d732de64a455cbd7704 config_hash: d726afb2a92132197e4eae04303e8041 diff --git a/src/resources/agents.ts b/src/resources/agents.ts index cb81bd1..d771d60 100644 --- a/src/resources/agents.ts +++ b/src/resources/agents.ts @@ -920,7 +920,8 @@ export type AgentMode = | 'AGENT_MODE_UNSPECIFIED' | 'AGENT_MODE_EXECUTION' | 'AGENT_MODE_PLANNING' - | 'AGENT_MODE_RALPH'; + | 'AGENT_MODE_RALPH' + | 'AGENT_MODE_SPEC'; export interface Prompt { id?: string; From da9576b40fb4a67bd04b0582a8881829c19d3ab0 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 20 Jan 2026 13:58:16 +0000 Subject: [PATCH 28/29] codegen metadata --- .stats.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.stats.yml b/.stats.yml index bec4a22..886c83c 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 170 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-df34fde966f11e17c7e733280ca1e0aeda7ee786ca7de6d245d649970fa71764.yml -openapi_spec_hash: 9c8c2465318c2d732de64a455cbd7704 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-2423c089f280cdf34a987d40531692097a69f4aa971c6adf9aeec4fd7984cec2.yml +openapi_spec_hash: 24037c3ab9ceca689150d07ecec7aa80 config_hash: d726afb2a92132197e4eae04303e8041 From 8ac5bed1638f9f9d2eca3f70362457423daa1c01 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 21 Jan 2026 15:01:28 +0000 Subject: [PATCH 29/29] release: 0.10.0 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 31 +++++++++++++++++++++++++++++++ package.json | 2 +- src/version.ts | 2 +- 4 files changed, 34 insertions(+), 3 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 76d5538..7d9b009 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.9.0" + ".": "0.10.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index af5589a..bf5608e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,36 @@ # Changelog +## 0.10.0 (2026-01-21) + +Full Changelog: [v0.9.0...v0.10.0](https://github.com/gitpod-io/gitpod-sdk-typescript/compare/v0.9.0...v0.10.0) + +### Features + +* [api] Introduce RPCs to share resources with individual users ([f795699](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/f795699dfe92fcf2c930085845569844cddd67fd)) +* [api] sorting for `ListMembers` ([b473c48](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/b473c48922a5c2c3acb5c3a0bb64e6077378ace9)) +* [backend] Adding direct_share field to groups ([3d88aae](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/3d88aae430368a1507767f331632883382e5e136)) +* [backend] Introduce org:runners_admin organization role ([1ce1f99](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/1ce1f99b15a489ae54e70576731c4cb120508ced)) +* [backend] Introduce role and member status filtering for `ListMembers` ([84cd88f](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/84cd88f927ffd3777d7b8e2a077db25b5fa4559f)) +* **agent:** add spec mode for planning before interactive implementation ([7c90701](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/7c907013b04eb971cf061138807924c24fec81e0)) +* API for SCIM configuration management ([ec502a0](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/ec502a0d19aeb88f2c4a854f571a33f0bc26aaa9)) +* **api:** add CheckRepositoryAccess API for repository access validation ([8ae77ad](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/8ae77ad1491bf100031b7263e41a9f87cb629849)) +* **api:** add draft and state fields to PullRequest proto ([839fe7e](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/839fe7e7b087641896dce9c79ea62af6bac36675)) +* **api:** add inputs array to UserInputBlock proto ([19f7c16](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/19f7c16b298c577b080e65ce464532242e18ac99)) +* **api:** add ListSCMOrganizations endpoint ([15f23b7](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/15f23b787045dd6a17a90ee960a1903553e3449a)) +* **api:** improve SearchRepositories pagination with next_page and total_count ([a5d31a4](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/a5d31a49ae5c6446019060a2c35f058d919aefb7)) +* **automations:** add before_snapshot trigger type ([c8729ef](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/c8729efc7036e7a8b0a4748e7dcdb6fec1e462d5)) +* **dashboard:** show tier badge in org selector ([1cd405d](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/1cd405d34b3ca91d961fd424689960cf715a256b)) +* Define SCIMConfiguration database schema ([ca0a81c](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/ca0a81c7ba21a0011f546806dfce150ce83aa7dc)) +* move agent mode from Spec to Status, add AgentModeChange signals ([268e2f7](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/268e2f76cd9fbd1c4a8b359750a45ef9ca3390c1)) +* **secrets:** add ServiceAccountSecret entity with full support ([d29e178](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/d29e1783d540c88e9f1be7fd36e147d4a671d674)) + + +### Chores + +* fix typo in descriptions ([4b2ec35](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/4b2ec351c29bad4f8ac8cb7491404f38fc434e19)) +* **internal:** update `actions/checkout` version ([4789c52](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/4789c523a6f077c7d31a5e939a3bad3735f1db7c)) +* **internal:** upgrade babel, qs, js-yaml ([1a41839](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/1a418394fd33e8ef92fc9a557c20c331a6ce280e)) + ## 0.9.0 (2026-01-09) Full Changelog: [v0.8.0...v0.9.0](https://github.com/gitpod-io/gitpod-sdk-typescript/compare/v0.8.0...v0.9.0) diff --git a/package.json b/package.json index d42136d..ccee8a2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@gitpod/sdk", - "version": "0.9.0", + "version": "0.10.0", "description": "The official TypeScript library for the Gitpod API", "author": "Gitpod ", "types": "dist/index.d.ts", diff --git a/src/version.ts b/src/version.ts index 5c16194..c2e5b96 100644 --- a/src/version.ts +++ b/src/version.ts @@ -1 +1 @@ -export const VERSION = '0.9.0'; // x-release-please-version +export const VERSION = '0.10.0'; // x-release-please-version