eas-cli 20.0.0 → 20.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/README.md +197 -116
  2. package/build/commands/simulator/exec.d.ts +12 -0
  3. package/build/commands/simulator/exec.js +42 -0
  4. package/build/commands/simulator/get.d.ts +2 -1
  5. package/build/commands/simulator/get.js +13 -7
  6. package/build/commands/simulator/start.d.ts +4 -0
  7. package/build/commands/simulator/start.js +70 -5
  8. package/build/commands/simulator/stop.d.ts +2 -1
  9. package/build/commands/simulator/stop.js +16 -9
  10. package/build/commands/update/embedded/delete.d.ts +15 -0
  11. package/build/commands/update/embedded/delete.js +55 -0
  12. package/build/commands/update/embedded/list.d.ts +19 -0
  13. package/build/commands/update/embedded/list.js +132 -0
  14. package/build/commands/update/embedded/view.d.ts +17 -0
  15. package/build/commands/update/embedded/view.js +75 -0
  16. package/build/commands/update/rollback.d.ts +11 -0
  17. package/build/commands/update/rollback.js +117 -14
  18. package/build/credentials/ios/actions/AscApiKeyUtils.d.ts +20 -0
  19. package/build/credentials/ios/actions/AscApiKeyUtils.js +64 -0
  20. package/build/credentials/ios/actions/ConfigureProvisioningProfile.js +2 -4
  21. package/build/credentials/ios/actions/CreateProvisioningProfile.js +2 -4
  22. package/build/credentials/ios/actions/SetUpAdhocProvisioningProfile.js +3 -20
  23. package/build/credentials/ios/actions/SetUpProvisioningProfile.d.ts +10 -0
  24. package/build/credentials/ios/actions/SetUpProvisioningProfile.js +39 -5
  25. package/build/credentials/ios/appstore/resolveCredentials.d.ts +1 -0
  26. package/build/credentials/ios/appstore/resolveCredentials.js +1 -0
  27. package/build/graphql/generated.d.ts +457 -4
  28. package/build/graphql/generated.js +35 -1
  29. package/build/graphql/mutations/EmbeddedUpdateMutation.d.ts +5 -0
  30. package/build/graphql/mutations/EmbeddedUpdateMutation.js +14 -0
  31. package/build/graphql/queries/EmbeddedUpdateQuery.d.ts +18 -0
  32. package/build/graphql/queries/EmbeddedUpdateQuery.js +81 -0
  33. package/build/graphql/queries/UpdateQuery.d.ts +2 -1
  34. package/build/graphql/queries/UpdateQuery.js +52 -0
  35. package/build/simulator/env.d.ts +7 -0
  36. package/build/simulator/env.js +44 -0
  37. package/build/simulator/utils.d.ts +3 -1
  38. package/build/simulator/utils.js +26 -7
  39. package/oclif.manifest.json +945 -525
  40. package/package.json +5 -5
@@ -1292,6 +1292,7 @@ export type App = Project & {
1292
1292
  description: Scalars['String']['output'];
1293
1293
  devDomainName?: Maybe<AppDevDomainName>;
1294
1294
  deviceRunSessionsPaginated: AppDeviceRunSessionsConnection;
1295
+ embeddedUpdatesPaginated: AppEmbeddedUpdatesConnection;
1295
1296
  /** Environment secrets for an app */
1296
1297
  environmentSecrets: Array<EnvironmentSecret>;
1297
1298
  environmentVariableEnvironments: Array<Scalars['EnvironmentVariableEnvironment']['output']>;
@@ -1440,6 +1441,8 @@ export type App = Project & {
1440
1441
  workerDeploymentsCrashes?: Maybe<WorkerDeploymentCrashes>;
1441
1442
  workerDeploymentsRequest: WorkerDeploymentRequestEdge;
1442
1443
  workerDeploymentsRequests?: Maybe<WorkerDeploymentRequests>;
1444
+ workflowDeviceTestCaseHistory: WorkflowDeviceTestCaseHistory;
1445
+ workflowDeviceTestCaseInsights: WorkflowDeviceTestCaseInsights;
1443
1446
  workflowRunGitBranchesPaginated: AppWorkflowRunGitBranchesConnection;
1444
1447
  workflowRunsPaginated: AppWorkflowRunsConnection;
1445
1448
  workflows: Array<Workflow>;
@@ -1511,6 +1514,14 @@ export type AppDeviceRunSessionsPaginatedArgs = {
1511
1514
  last?: InputMaybe<Scalars['Int']['input']>;
1512
1515
  };
1513
1516
  /** Represents an Exponent App (or Experience in legacy terms) */
1517
+ export type AppEmbeddedUpdatesPaginatedArgs = {
1518
+ after?: InputMaybe<Scalars['String']['input']>;
1519
+ before?: InputMaybe<Scalars['String']['input']>;
1520
+ filter?: InputMaybe<EmbeddedUpdateFilterInput>;
1521
+ first?: InputMaybe<Scalars['Int']['input']>;
1522
+ last?: InputMaybe<Scalars['Int']['input']>;
1523
+ };
1524
+ /** Represents an Exponent App (or Experience in legacy terms) */
1514
1525
  export type AppEnvironmentSecretsArgs = {
1515
1526
  filterNames?: InputMaybe<Array<Scalars['String']['input']>>;
1516
1527
  };
@@ -1675,6 +1686,17 @@ export type AppWorkerDeploymentsRequestsArgs = {
1675
1686
  timespan: DatasetTimespan;
1676
1687
  };
1677
1688
  /** Represents an Exponent App (or Experience in legacy terms) */
1689
+ export type AppWorkflowDeviceTestCaseHistoryArgs = {
1690
+ filters?: InputMaybe<WorkflowDeviceTestCaseHistoryFiltersInput>;
1691
+ path: Scalars['String']['input'];
1692
+ timespan: WorkflowDeviceTestCaseInsightsTimespanInput;
1693
+ };
1694
+ /** Represents an Exponent App (or Experience in legacy terms) */
1695
+ export type AppWorkflowDeviceTestCaseInsightsArgs = {
1696
+ filters?: InputMaybe<WorkflowDeviceTestCaseInsightsFiltersInput>;
1697
+ timespan: WorkflowDeviceTestCaseInsightsTimespanInput;
1698
+ };
1699
+ /** Represents an Exponent App (or Experience in legacy terms) */
1678
1700
  export type AppWorkflowRunGitBranchesPaginatedArgs = {
1679
1701
  after?: InputMaybe<Scalars['String']['input']>;
1680
1702
  before?: InputMaybe<Scalars['String']['input']>;
@@ -1760,6 +1782,16 @@ export type AppDeviceRunSessionsConnection = {
1760
1782
  edges: Array<AppDeviceRunSessionEdge>;
1761
1783
  pageInfo: PageInfo;
1762
1784
  };
1785
+ export type AppEmbeddedUpdateEdge = {
1786
+ __typename?: 'AppEmbeddedUpdateEdge';
1787
+ cursor: Scalars['String']['output'];
1788
+ node: EmbeddedUpdate;
1789
+ };
1790
+ export type AppEmbeddedUpdatesConnection = {
1791
+ __typename?: 'AppEmbeddedUpdatesConnection';
1792
+ edges: Array<AppEmbeddedUpdateEdge>;
1793
+ pageInfo: PageInfo;
1794
+ };
1763
1795
  export type AppFingerprintEdge = {
1764
1796
  __typename?: 'AppFingerprintEdge';
1765
1797
  cursor: Scalars['String']['output'];
@@ -2042,6 +2074,7 @@ export type AppObserveCustomEvent = {
2042
2074
  eventName: Scalars['String']['output'];
2043
2075
  expoSdkVersion?: Maybe<Scalars['String']['output']>;
2044
2076
  id: Scalars['ID']['output'];
2077
+ ingestedAt?: Maybe<Scalars['DateTime']['output']>;
2045
2078
  properties: Array<AppObserveEventProperty>;
2046
2079
  reactNativeVersion?: Maybe<Scalars['String']['output']>;
2047
2080
  sessionId?: Maybe<Scalars['String']['output']>;
@@ -2126,6 +2159,7 @@ export type AppObserveCustomEventPropertyFilter = {
2126
2159
  export type AppObserveEvent = {
2127
2160
  __typename?: 'AppObserveEvent';
2128
2161
  appBuildNumber: Scalars['String']['output'];
2162
+ appEasBuildId?: Maybe<Scalars['String']['output']>;
2129
2163
  appIdentifier: Scalars['String']['output'];
2130
2164
  appName: Scalars['String']['output'];
2131
2165
  appUpdateId?: Maybe<Scalars['String']['output']>;
@@ -4319,6 +4353,10 @@ export type DeleteDiscordUserResult = {
4319
4353
  __typename?: 'DeleteDiscordUserResult';
4320
4354
  id: Scalars['ID']['output'];
4321
4355
  };
4356
+ export type DeleteEmbeddedUpdateResult = {
4357
+ __typename?: 'DeleteEmbeddedUpdateResult';
4358
+ id: Scalars['ID']['output'];
4359
+ };
4322
4360
  export type DeleteEnvironmentSecretResult = {
4323
4361
  __typename?: 'DeleteEnvironmentSecretResult';
4324
4362
  id: Scalars['ID']['output'];
@@ -5233,8 +5271,19 @@ export type EmbeddedUpdateAssetUploadSpec = {
5233
5271
  /** Storage key (`{appId}/{embeddedUpdateId}`). Same key in both upload and destination buckets. */
5234
5272
  storageKey: Scalars['String']['output'];
5235
5273
  };
5274
+ export type EmbeddedUpdateFilterInput = {
5275
+ channel?: InputMaybe<Scalars['String']['input']>;
5276
+ platform?: InputMaybe<AppPlatform>;
5277
+ runtimeVersion?: InputMaybe<Scalars['String']['input']>;
5278
+ };
5236
5279
  export type EmbeddedUpdateMutation = {
5237
5280
  __typename?: 'EmbeddedUpdateMutation';
5281
+ /**
5282
+ * Delete an embedded update by id. Best-effort: deleting an unknown id succeeds
5283
+ * (mirrors background deletion jobs). The linked asset row and underlying GCS
5284
+ * object are cleaned up via the entity's afterDelete trigger chain.
5285
+ */
5286
+ deleteEmbeddedUpdate: DeleteEmbeddedUpdateResult;
5238
5287
  /**
5239
5288
  * Register an embedded bundle as the launch asset for a given app/platform/channel.
5240
5289
  * Returns EMBEDDED_UPDATE_ASSET_NOT_AVAILABLE if the asset has not been finalized yet,
@@ -5242,9 +5291,25 @@ export type EmbeddedUpdateMutation = {
5242
5291
  */
5243
5292
  uploadEmbeddedUpdate: EmbeddedUpdate;
5244
5293
  };
5294
+ export type EmbeddedUpdateMutationDeleteEmbeddedUpdateArgs = {
5295
+ id: Scalars['ID']['input'];
5296
+ };
5245
5297
  export type EmbeddedUpdateMutationUploadEmbeddedUpdateArgs = {
5246
5298
  input: UploadEmbeddedUpdateInput;
5247
5299
  };
5300
+ export type EmbeddedUpdateQuery = {
5301
+ __typename?: 'EmbeddedUpdateQuery';
5302
+ /**
5303
+ * Look up an embedded update by its id and the owning app's id.
5304
+ * Throws EMBEDDED_UPDATE_NOT_FOUND when no embedded update with this id exists on
5305
+ * the given app within the caller's account.
5306
+ */
5307
+ byId: EmbeddedUpdate;
5308
+ };
5309
+ export type EmbeddedUpdateQueryByIdArgs = {
5310
+ appId: Scalars['ID']['input'];
5311
+ embeddedUpdateId: Scalars['ID']['input'];
5312
+ };
5248
5313
  export declare enum EntityTypeName {
5249
5314
  AccountEntity = "AccountEntity",
5250
5315
  AccountSsoConfigurationEntity = "AccountSSOConfigurationEntity",
@@ -6313,7 +6378,7 @@ export type JobRun = {
6313
6378
  isWaived: Scalars['Boolean']['output'];
6314
6379
  logFileUrls: Array<Scalars['String']['output']>;
6315
6380
  /** Max run time in seconds for this job run. */
6316
- maxRunTimeSeconds?: Maybe<Scalars['Int']['output']>;
6381
+ maxRunTimeSeconds: Scalars['Int']['output'];
6317
6382
  name: Scalars['String']['output'];
6318
6383
  priority: JobRunPriority;
6319
6384
  /** String describing the worker profile used to run this job run. */
@@ -7207,6 +7272,7 @@ export type RootQuery = {
7207
7272
  echoProject: EchoProjectQuery;
7208
7273
  /** Top-level query object for querying Echo versions. */
7209
7274
  echoVersion: EchoVersionQuery;
7275
+ embeddedUpdates: EmbeddedUpdateQuery;
7210
7276
  /** Top-level query object for querying Experimentation configuration. */
7211
7277
  experimentation: ExperimentationQuery;
7212
7278
  expoGoBuild: ExpoGoBuildQuery;
@@ -7433,7 +7499,7 @@ export type SsoUser = Actor & UserActor & {
7433
7499
  preferences: UserPreferences;
7434
7500
  /** Associated accounts */
7435
7501
  primaryAccount: Account;
7436
- primaryAccountProfileImageUrl?: Maybe<Scalars['String']['output']>;
7502
+ primaryAccountProfileImageUrl: Scalars['String']['output'];
7437
7503
  /** @deprecated Use primaryAccountProfileImageUrl instead */
7438
7504
  profilePhoto: Scalars['String']['output'];
7439
7505
  /** Snacks associated with this account */
@@ -8510,7 +8576,7 @@ export type User = Actor & UserActor & {
8510
8576
  preferences: UserPreferences;
8511
8577
  /** Associated accounts */
8512
8578
  primaryAccount: Account;
8513
- primaryAccountProfileImageUrl?: Maybe<Scalars['String']['output']>;
8579
+ primaryAccountProfileImageUrl: Scalars['String']['output'];
8514
8580
  /** @deprecated Use primaryAccountProfileImageUrl instead */
8515
8581
  profilePhoto: Scalars['String']['output'];
8516
8582
  /** Get all certified second factor authentication methods */
@@ -8603,7 +8669,7 @@ export type UserActor = {
8603
8669
  preferences: UserPreferences;
8604
8670
  /** Associated accounts */
8605
8671
  primaryAccount: Account;
8606
- primaryAccountProfileImageUrl?: Maybe<Scalars['String']['output']>;
8672
+ primaryAccountProfileImageUrl: Scalars['String']['output'];
8607
8673
  /** @deprecated Use primaryAccountProfileImageUrl instead */
8608
8674
  profilePhoto: Scalars['String']['output'];
8609
8675
  /** Snacks associated with this user's personal account */
@@ -8647,6 +8713,8 @@ export type UserActorPublicData = {
8647
8713
  firstName?: Maybe<Scalars['String']['output']>;
8648
8714
  id: Scalars['ID']['output'];
8649
8715
  lastName?: Maybe<Scalars['String']['output']>;
8716
+ primaryAccountProfileImageUrl: Scalars['String']['output'];
8717
+ /** @deprecated Use primaryAccountProfileImageUrl instead */
8650
8718
  profilePhoto: Scalars['String']['output'];
8651
8719
  /** Snacks associated with this user's personal account */
8652
8720
  snacks: Array<Snack>;
@@ -9604,6 +9672,162 @@ export declare enum WorkflowArtifactStorageType {
9604
9672
  Gcs = "GCS",
9605
9673
  R2 = "R2"
9606
9674
  }
9675
+ /**
9676
+ * Grouping key from the [shard N] prefix-stripped error_message. `count` is
9677
+ * computed with uniqExact(test_case_result_id) so RMT pre-merge duplicates do
9678
+ * not inflate it. Scope: scans ALL status='failed' rows (NOT just
9679
+ * is_final_attempt=1) so failures from runs that ultimately passed on retry
9680
+ * still surface.
9681
+ */
9682
+ export type WorkflowDeviceTestCaseErrorPattern = {
9683
+ __typename?: 'WorkflowDeviceTestCaseErrorPattern';
9684
+ count: Scalars['Int']['output'];
9685
+ lastSeenAt: Scalars['DateTime']['output'];
9686
+ patternKey: Scalars['String']['output'];
9687
+ sampleMessage: Scalars['String']['output'];
9688
+ };
9689
+ export type WorkflowDeviceTestCaseHistory = {
9690
+ __typename?: 'WorkflowDeviceTestCaseHistory';
9691
+ errorPatterns: Array<WorkflowDeviceTestCaseErrorPattern>;
9692
+ recentRuns: WorkflowDeviceTestCaseRecentRunConnection;
9693
+ timeSeries: Array<WorkflowDeviceTestCaseInsightsBucket>;
9694
+ totals: WorkflowDeviceTestCaseInsightsTotals;
9695
+ };
9696
+ export type WorkflowDeviceTestCaseHistoryErrorPatternsArgs = {
9697
+ first: Scalars['Int']['input'];
9698
+ };
9699
+ export type WorkflowDeviceTestCaseHistoryRecentRunsArgs = {
9700
+ after?: InputMaybe<Scalars['String']['input']>;
9701
+ first: Scalars['Int']['input'];
9702
+ };
9703
+ export type WorkflowDeviceTestCaseHistoryTimeSeriesArgs = {
9704
+ granularity: WorkflowDeviceTestCaseInsightsTimeSeriesGranularity;
9705
+ };
9706
+ export type WorkflowDeviceTestCaseHistoryFiltersInput = {
9707
+ gitRefs?: InputMaybe<Array<Scalars['String']['input']>>;
9708
+ workflowIds?: InputMaybe<Array<Scalars['ID']['input']>>;
9709
+ };
9710
+ export type WorkflowDeviceTestCaseInsights = {
9711
+ __typename?: 'WorkflowDeviceTestCaseInsights';
9712
+ facets: WorkflowDeviceTestCaseInsightsFacets;
9713
+ tests: WorkflowDeviceTestCaseStatConnection;
9714
+ timeSeries: Array<WorkflowDeviceTestCaseInsightsBucket>;
9715
+ totals: WorkflowDeviceTestCaseInsightsTotals;
9716
+ };
9717
+ export type WorkflowDeviceTestCaseInsightsTestsArgs = {
9718
+ after?: InputMaybe<Scalars['String']['input']>;
9719
+ first: Scalars['Int']['input'];
9720
+ search?: InputMaybe<Scalars['String']['input']>;
9721
+ sortDirection?: InputMaybe<WorkflowDeviceTestCaseSortDirection>;
9722
+ sortField?: InputMaybe<WorkflowDeviceTestCaseStatSortField>;
9723
+ };
9724
+ export type WorkflowDeviceTestCaseInsightsTimeSeriesArgs = {
9725
+ granularity: WorkflowDeviceTestCaseInsightsTimeSeriesGranularity;
9726
+ };
9727
+ /**
9728
+ * Mutually exclusive bucket counts (passedClean + flaky + failed = totalRuns for the bucket).
9729
+ * Buckets are aligned to the UTC start of the requested granularity interval
9730
+ * (minute / hour / day).
9731
+ */
9732
+ export type WorkflowDeviceTestCaseInsightsBucket = {
9733
+ __typename?: 'WorkflowDeviceTestCaseInsightsBucket';
9734
+ bucketStartAt: Scalars['DateTime']['output'];
9735
+ failed: Scalars['Int']['output'];
9736
+ flaky: Scalars['Int']['output'];
9737
+ passedClean: Scalars['Int']['output'];
9738
+ };
9739
+ export type WorkflowDeviceTestCaseInsightsFacets = {
9740
+ __typename?: 'WorkflowDeviceTestCaseInsightsFacets';
9741
+ gitRefs: Array<Scalars['String']['output']>;
9742
+ tags: Array<Scalars['String']['output']>;
9743
+ workflows: Array<WorkflowDeviceTestCaseWorkflowFacet>;
9744
+ };
9745
+ export type WorkflowDeviceTestCaseInsightsFiltersInput = {
9746
+ gitRefs?: InputMaybe<Array<Scalars['String']['input']>>;
9747
+ statuses?: InputMaybe<Array<WorkflowDeviceTestCaseStatusFilter>>;
9748
+ tags?: InputMaybe<Array<Scalars['String']['input']>>;
9749
+ workflowIds?: InputMaybe<Array<Scalars['ID']['input']>>;
9750
+ };
9751
+ /**
9752
+ * A count metric returned for the current window AND the equivalent prior window
9753
+ * (start − duration → start). The frontend uses (current, previous) to compute
9754
+ * trend deltas. Trend ratios are NOT pre-computed server-side — see
9755
+ * WorkflowsInsightsMetric for the equivalent convention.
9756
+ *
9757
+ * Float (not Int) to match WorkflowsInsightsMetric and avoid the GraphQL Int32
9758
+ * ceiling: 90-day uniqExact counts on a high-volume project can plausibly
9759
+ * exceed 2.1B. Values are integer-valued; the frontend reads them as JS numbers.
9760
+ */
9761
+ export type WorkflowDeviceTestCaseInsightsMetric = {
9762
+ __typename?: 'WorkflowDeviceTestCaseInsightsMetric';
9763
+ currentValue: Scalars['Float']['output'];
9764
+ previousValue: Scalars['Float']['output'];
9765
+ };
9766
+ /**
9767
+ * Same shape as WorkflowDeviceTestCaseInsightsMetric but nullable on both sides —
9768
+ * used for metrics like avgDurationMs / p90DurationMs where "no data in the
9769
+ * window" is meaningful and must not collapse to 0.
9770
+ */
9771
+ export type WorkflowDeviceTestCaseInsightsNullableMetric = {
9772
+ __typename?: 'WorkflowDeviceTestCaseInsightsNullableMetric';
9773
+ currentValue?: Maybe<Scalars['Float']['output']>;
9774
+ previousValue?: Maybe<Scalars['Float']['output']>;
9775
+ };
9776
+ export declare enum WorkflowDeviceTestCaseInsightsTimeSeriesGranularity {
9777
+ Day = "DAY",
9778
+ Hour = "HOUR",
9779
+ Minute = "MINUTE"
9780
+ }
9781
+ export type WorkflowDeviceTestCaseInsightsTimespanInput = {
9782
+ end: Scalars['DateTime']['input'];
9783
+ start: Scalars['DateTime']['input'];
9784
+ };
9785
+ /**
9786
+ * Raw counts only (paired with previous-window values). Pass rate, flake rate,
9787
+ * and trends are computed in the frontend from the (currentValue, previousValue)
9788
+ * pair on each metric.
9789
+ *
9790
+ * totalRuns = passedCleanCount + flakyCount + failedCount (over is_final_attempt=1 rows).
9791
+ * distinctFlakyTestCount cannot be derived in the frontend from per-test rows
9792
+ * because pagination means the frontend doesn't see all test paths.
9793
+ */
9794
+ export type WorkflowDeviceTestCaseInsightsTotals = {
9795
+ __typename?: 'WorkflowDeviceTestCaseInsightsTotals';
9796
+ avgDurationMs: WorkflowDeviceTestCaseInsightsNullableMetric;
9797
+ distinctFlakyTestCount: WorkflowDeviceTestCaseInsightsMetric;
9798
+ failedCount: WorkflowDeviceTestCaseInsightsMetric;
9799
+ flakyCount: WorkflowDeviceTestCaseInsightsMetric;
9800
+ p90DurationMs: WorkflowDeviceTestCaseInsightsNullableMetric;
9801
+ passedCleanCount: WorkflowDeviceTestCaseInsightsMetric;
9802
+ totalRuns: WorkflowDeviceTestCaseInsightsMetric;
9803
+ };
9804
+ /**
9805
+ * One row per execution (is_final_attempt=1). The is_flaky boolean drives the
9806
+ * FLAKY pill — no per-attempt timeline is exposed in v1.
9807
+ */
9808
+ export type WorkflowDeviceTestCaseRecentRun = {
9809
+ __typename?: 'WorkflowDeviceTestCaseRecentRun';
9810
+ commitSha?: Maybe<Scalars['String']['output']>;
9811
+ createdAt: Scalars['DateTime']['output'];
9812
+ durationMs?: Maybe<Scalars['Int']['output']>;
9813
+ gitRef?: Maybe<Scalars['String']['output']>;
9814
+ id: Scalars['ID']['output'];
9815
+ isFlaky: Scalars['Boolean']['output'];
9816
+ status: WorkflowDeviceTestCaseStatus;
9817
+ workflowRunId: Scalars['ID']['output'];
9818
+ workflowRunName: Scalars['String']['output'];
9819
+ };
9820
+ export type WorkflowDeviceTestCaseRecentRunConnection = {
9821
+ __typename?: 'WorkflowDeviceTestCaseRecentRunConnection';
9822
+ edges: Array<WorkflowDeviceTestCaseRecentRunEdge>;
9823
+ pageInfo: PageInfo;
9824
+ totalCount: Scalars['Int']['output'];
9825
+ };
9826
+ export type WorkflowDeviceTestCaseRecentRunEdge = {
9827
+ __typename?: 'WorkflowDeviceTestCaseRecentRunEdge';
9828
+ cursor: Scalars['String']['output'];
9829
+ node: WorkflowDeviceTestCaseRecentRun;
9830
+ };
9607
9831
  /** A device test case result from a Maestro test execution. */
9608
9832
  export type WorkflowDeviceTestCaseResult = {
9609
9833
  __typename?: 'WorkflowDeviceTestCaseResult';
@@ -9652,11 +9876,65 @@ export type WorkflowDeviceTestCaseResultMutation = {
9652
9876
  export type WorkflowDeviceTestCaseResultMutationCreateWorkflowDeviceTestCaseResultsArgs = {
9653
9877
  input: CreateWorkflowDeviceTestCaseResultsInput;
9654
9878
  };
9879
+ export declare enum WorkflowDeviceTestCaseSortDirection {
9880
+ Asc = "ASC",
9881
+ Desc = "DESC"
9882
+ }
9883
+ export type WorkflowDeviceTestCaseStat = {
9884
+ __typename?: 'WorkflowDeviceTestCaseStat';
9885
+ avgDurationMs?: Maybe<Scalars['Int']['output']>;
9886
+ failedCount: Scalars['Int']['output'];
9887
+ flakyCount: Scalars['Int']['output'];
9888
+ lastRunAt: Scalars['DateTime']['output'];
9889
+ lastRunIsFlaky: Scalars['Boolean']['output'];
9890
+ lastRunStatus: WorkflowDeviceTestCaseStatus;
9891
+ name: Scalars['String']['output'];
9892
+ p90DurationMs?: Maybe<Scalars['Int']['output']>;
9893
+ passedCleanCount: Scalars['Int']['output'];
9894
+ path: Scalars['String']['output'];
9895
+ totalRuns: Scalars['Int']['output'];
9896
+ };
9897
+ export type WorkflowDeviceTestCaseStatConnection = {
9898
+ __typename?: 'WorkflowDeviceTestCaseStatConnection';
9899
+ edges: Array<WorkflowDeviceTestCaseStatEdge>;
9900
+ pageInfo: PageInfo;
9901
+ totalCount: Scalars['Int']['output'];
9902
+ };
9903
+ export type WorkflowDeviceTestCaseStatEdge = {
9904
+ __typename?: 'WorkflowDeviceTestCaseStatEdge';
9905
+ cursor: Scalars['String']['output'];
9906
+ node: WorkflowDeviceTestCaseStat;
9907
+ };
9908
+ export declare enum WorkflowDeviceTestCaseStatSortField {
9909
+ Fails = "FAILS",
9910
+ Flakes = "FLAKES",
9911
+ FlakeRate = "FLAKE_RATE",
9912
+ LastRun = "LAST_RUN",
9913
+ P90Duration = "P90_DURATION",
9914
+ PassRate = "PASS_RATE",
9915
+ Runs = "RUNS"
9916
+ }
9655
9917
  /** Status of a device test case execution. */
9656
9918
  export declare enum WorkflowDeviceTestCaseStatus {
9657
9919
  Failed = "FAILED",
9658
9920
  Passed = "PASSED"
9659
9921
  }
9922
+ /**
9923
+ * Mutually exclusive — matches the chart bucket semantics (passedClean / flaky / failed).
9924
+ * PASSED_CLEAN = is_final_attempt=1 AND status=passed AND is_flaky=0
9925
+ * FLAKY = is_final_attempt=1 AND is_flaky=1 (still a pass, just with retries)
9926
+ * FAILED = is_final_attempt=1 AND status=failed
9927
+ */
9928
+ export declare enum WorkflowDeviceTestCaseStatusFilter {
9929
+ Failed = "FAILED",
9930
+ Flaky = "FLAKY",
9931
+ PassedClean = "PASSED_CLEAN"
9932
+ }
9933
+ export type WorkflowDeviceTestCaseWorkflowFacet = {
9934
+ __typename?: 'WorkflowDeviceTestCaseWorkflowFacet';
9935
+ id: Scalars['ID']['output'];
9936
+ name: Scalars['String']['output'];
9937
+ };
9660
9938
  export type WorkflowJob = {
9661
9939
  __typename?: 'WorkflowJob';
9662
9940
  allDeviceTestCaseResults: Array<WorkflowDeviceTestCaseResult>;
@@ -14578,6 +14856,19 @@ export type UploadEmbeddedUpdateMutation = {
14578
14856
  };
14579
14857
  };
14580
14858
  };
14859
+ export type DeleteEmbeddedUpdateMutationVariables = Exact<{
14860
+ id: Scalars['ID']['input'];
14861
+ }>;
14862
+ export type DeleteEmbeddedUpdateMutation = {
14863
+ __typename?: 'RootMutation';
14864
+ embeddedUpdate: {
14865
+ __typename?: 'EmbeddedUpdateMutation';
14866
+ deleteEmbeddedUpdate: {
14867
+ __typename?: 'DeleteEmbeddedUpdateResult';
14868
+ id: string;
14869
+ };
14870
+ };
14871
+ };
14581
14872
  export type CreateEnvironmentSecretForAccountMutationVariables = Exact<{
14582
14873
  input: CreateEnvironmentSecretInput;
14583
14874
  accountId: Scalars['String']['input'];
@@ -17112,6 +17403,76 @@ export type DeviceRunSessionsByAppIdQuery = {
17112
17403
  };
17113
17404
  };
17114
17405
  };
17406
+ export type ViewEmbeddedUpdateByIdQueryVariables = Exact<{
17407
+ embeddedUpdateId: Scalars['ID']['input'];
17408
+ appId: Scalars['ID']['input'];
17409
+ }>;
17410
+ export type ViewEmbeddedUpdateByIdQuery = {
17411
+ __typename?: 'RootQuery';
17412
+ embeddedUpdates: {
17413
+ __typename?: 'EmbeddedUpdateQuery';
17414
+ byId: {
17415
+ __typename?: 'EmbeddedUpdate';
17416
+ id: string;
17417
+ platform: AppPlatform;
17418
+ runtimeVersion: string;
17419
+ channel: string;
17420
+ createdAt: any;
17421
+ launchAsset: {
17422
+ __typename?: 'EmbeddedUpdateAsset';
17423
+ id: string;
17424
+ fileSize: number;
17425
+ finalFileSize?: number | null;
17426
+ fileSHA256: string;
17427
+ };
17428
+ };
17429
+ };
17430
+ };
17431
+ export type ViewEmbeddedUpdatesPaginatedQueryVariables = Exact<{
17432
+ appId: Scalars['String']['input'];
17433
+ first: Scalars['Int']['input'];
17434
+ after?: InputMaybe<Scalars['String']['input']>;
17435
+ filter?: InputMaybe<EmbeddedUpdateFilterInput>;
17436
+ }>;
17437
+ export type ViewEmbeddedUpdatesPaginatedQuery = {
17438
+ __typename?: 'RootQuery';
17439
+ app: {
17440
+ __typename?: 'AppQuery';
17441
+ byId: {
17442
+ __typename?: 'App';
17443
+ id: string;
17444
+ embeddedUpdatesPaginated: {
17445
+ __typename?: 'AppEmbeddedUpdatesConnection';
17446
+ edges: Array<{
17447
+ __typename?: 'AppEmbeddedUpdateEdge';
17448
+ cursor: string;
17449
+ node: {
17450
+ __typename?: 'EmbeddedUpdate';
17451
+ id: string;
17452
+ platform: AppPlatform;
17453
+ runtimeVersion: string;
17454
+ channel: string;
17455
+ createdAt: any;
17456
+ launchAsset: {
17457
+ __typename?: 'EmbeddedUpdateAsset';
17458
+ id: string;
17459
+ fileSize: number;
17460
+ finalFileSize?: number | null;
17461
+ fileSHA256: string;
17462
+ };
17463
+ };
17464
+ }>;
17465
+ pageInfo: {
17466
+ __typename?: 'PageInfo';
17467
+ hasNextPage: boolean;
17468
+ hasPreviousPage: boolean;
17469
+ startCursor?: string | null;
17470
+ endCursor?: string | null;
17471
+ };
17472
+ };
17473
+ };
17474
+ };
17475
+ };
17115
17476
  export type EnvironmentSecretsByAppIdQueryVariables = Exact<{
17116
17477
  appId: Scalars['String']['input'];
17117
17478
  }>;
@@ -18085,6 +18446,98 @@ export type ViewUpdateGroupsOnBranchQuery = {
18085
18446
  };
18086
18447
  };
18087
18448
  };
18449
+ export type ViewUpdateGroupsPaginatedOnBranchQueryVariables = Exact<{
18450
+ appId: Scalars['String']['input'];
18451
+ branchName: Scalars['String']['input'];
18452
+ first?: InputMaybe<Scalars['Int']['input']>;
18453
+ last?: InputMaybe<Scalars['Int']['input']>;
18454
+ after?: InputMaybe<Scalars['String']['input']>;
18455
+ before?: InputMaybe<Scalars['String']['input']>;
18456
+ filter?: InputMaybe<UpdatesFilterV2>;
18457
+ }>;
18458
+ export type ViewUpdateGroupsPaginatedOnBranchQuery = {
18459
+ __typename?: 'RootQuery';
18460
+ app: {
18461
+ __typename?: 'AppQuery';
18462
+ byId: {
18463
+ __typename?: 'App';
18464
+ id: string;
18465
+ updateBranchByName?: {
18466
+ __typename?: 'UpdateBranch';
18467
+ id: string;
18468
+ updateGroupsPaginated: {
18469
+ __typename?: 'UpdateGroupsConnection';
18470
+ edges: Array<{
18471
+ __typename?: 'UpdateGroupEdge';
18472
+ node: Array<{
18473
+ __typename?: 'Update';
18474
+ id: string;
18475
+ group: string;
18476
+ message?: string | null;
18477
+ createdAt: any;
18478
+ runtimeVersion: string;
18479
+ platform: string;
18480
+ manifestFragment: string;
18481
+ isRollBackToEmbedded: boolean;
18482
+ manifestPermalink: string;
18483
+ gitCommitHash?: string | null;
18484
+ isGitWorkingTreeDirty: boolean;
18485
+ environment?: any | null;
18486
+ rolloutPercentage?: number | null;
18487
+ manifestHostOverride?: string | null;
18488
+ assetHostOverride?: string | null;
18489
+ actor?: {
18490
+ __typename: 'PartnerActor';
18491
+ username: string;
18492
+ id: string;
18493
+ } | {
18494
+ __typename: 'Robot';
18495
+ firstName?: string | null;
18496
+ id: string;
18497
+ } | {
18498
+ __typename: 'SSOUser';
18499
+ username: string;
18500
+ id: string;
18501
+ } | {
18502
+ __typename: 'User';
18503
+ username: string;
18504
+ id: string;
18505
+ } | null;
18506
+ branch: {
18507
+ __typename?: 'UpdateBranch';
18508
+ id: string;
18509
+ name: string;
18510
+ };
18511
+ codeSigningInfo?: {
18512
+ __typename?: 'CodeSigningInfo';
18513
+ keyid: string;
18514
+ sig: string;
18515
+ alg: string;
18516
+ } | null;
18517
+ rolloutControlUpdate?: {
18518
+ __typename?: 'Update';
18519
+ id: string;
18520
+ group: string;
18521
+ } | null;
18522
+ fingerprint?: {
18523
+ __typename?: 'Fingerprint';
18524
+ id: string;
18525
+ hash: string;
18526
+ debugInfoUrl?: string | null;
18527
+ source?: {
18528
+ __typename?: 'FingerprintSource';
18529
+ type: FingerprintSourceType;
18530
+ bucketKey: string;
18531
+ isDebugFingerprint?: boolean | null;
18532
+ } | null;
18533
+ } | null;
18534
+ }>;
18535
+ }>;
18536
+ };
18537
+ } | null;
18538
+ };
18539
+ };
18540
+ };
18088
18541
  export type ViewUpdateGroupsOnAppQueryVariables = Exact<{
18089
18542
  appId: Scalars['String']['input'];
18090
18543
  limit: Scalars['Int']['input'];
@@ -8,7 +8,8 @@
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.DashboardViewPin = exports.CustomDomainStatus = exports.CustomDomainDnsRecordType = exports.CrashSampleFor = exports.ContinentCode = exports.BuildWorkflow = exports.BuildTrigger = exports.BuildStatus = exports.BuildRetryDisabledReason = exports.BuildResourceClass = exports.BuildPriority = exports.BuildPhase = exports.BuildMode = exports.BuildLimitThresholdExceededMetadataType = exports.BuildIosEnterpriseProvisioning = exports.BuildCredentialsSource = exports.BuildAnnotationType = exports.BackgroundJobState = exports.BackgroundJobResultType = exports.AuthProviderIdentifier = exports.AuthProtocolType = exports.AuditLogsExportFormat = exports.AssetMetadataStatus = exports.AssetMapSourceType = exports.AppsFilter = exports.AppleTeamType = exports.AppleDeviceClass = exports.AppUploadSessionType = exports.AppStoreConnectUserRole = exports.AppSort = exports.AppProfileImageWidth = exports.AppPrivacy = exports.AppPlatform = exports.AppObserveUpdatesOrderByField = exports.AppObserveUpdatesOrderByDirection = exports.AppObservePropertyType = exports.AppObservePlatform = exports.AppObserveNavigationRoutesOrderByField = exports.AppObserveEventsOrderByField = exports.AppObserveEventsOrderByDirection = exports.AppObserveCustomEventNamesOrderByField = exports.AppObserveCustomEventNamesOrderByDirection = exports.AppInternalDistributionBuildPrivacy = exports.AndroidKeystoreType = exports.AndroidFcmVersion = exports.AndroidBuildType = exports.ActivityTimelineProjectActivityType = exports.AccountUploadSessionType = exports.AccountMemberType = exports.AccountAppsSortByField = void 0;
10
10
  exports.OnboardingDeviceType = exports.OfferType = exports.OAuthProvider = exports.NotificationType = exports.NotificationEvent = exports.LocalBuildArchiveSourceType = exports.JobRunStatus = exports.JobRunPriority = exports.IosSchemeBuildConfiguration = exports.IosManagedBuildType = exports.IosDistributionType = exports.IosBuildType = exports.InvoiceDiscountType = exports.InsightsFilterType = exports.GitHubJobRunTriggerType = exports.GitHubJobRunTriggerRunStatus = exports.GitHubJobRunJobType = exports.GitHubBuildTriggerType = exports.GitHubBuildTriggerRunStatus = exports.GitHubBuildTriggerExecutionBehavior = exports.GitHubAppInstallationStatus = exports.GitHubAppInstallationAccountType = exports.GitHubAppEnvironment = exports.FingerprintSourceType = exports.Feature = exports.Experiment = exports.EnvironmentVariableVisibility = exports.EnvironmentVariableScope = exports.EnvironmentSecretType = exports.EntityTypeName = exports.EchoVersionSource = exports.EchoTurnCompletionStatus = exports.EchoProjectVisibility = exports.EchoProjectUploadSessionType = exports.EchoProjectIconSource = exports.EchoMessageRole = exports.EchoMessagePartType = exports.EchoChatState = exports.EchoChangeType = exports.EchoBuildStatus = exports.EchoAgentType = exports.EasTotalPlanEnablementUnit = exports.EasServiceMetric = exports.EasService = exports.EasBuildWaiverType = exports.EasBuildDeprecationInfoType = exports.EasBuildBillingResourceClass = exports.DistributionType = exports.DeviceRunSessionType = exports.DeviceRunSessionStatus = void 0;
11
- exports.WorkflowsInsightsRunsOverTimeGranularity = exports.WorkflowsInsightsExportFormat = exports.WorkflowRunTriggerEventType = exports.WorkflowRunStatus = exports.WorkflowProjectSourceType = exports.WorkflowJobType = exports.WorkflowJobStatus = exports.WorkflowJobReviewDecision = exports.WorkflowDeviceTestCaseStatus = exports.WorkflowArtifactStorageType = exports.WorkerLoggerLevel = exports.WorkerDeploymentLogLevel = exports.WorkerDeploymentCrashKind = exports.WebhookType = exports.UserSpecifiedAccountUsage = exports.UserEntityTypeName = exports.UserAgentPlatform = exports.UserAgentOs = exports.UserAgentBrowser = exports.UsageMetricsGranularity = exports.UsageMetricType = exports.UploadSessionType = exports.UpdateDiffReceiptStateValue = exports.UpdateDiffReceiptOrderByField = exports.UpdateDiffReceiptOrderByDirection = exports.TargetEntityMutationType = exports.SubmissionStatus = exports.SubmissionPriority = exports.SubmissionArchiveSourceType = exports.SubmissionAndroidReleaseStatus = exports.SubmissionAndroidArchiveType = exports.StatuspageServiceStatus = exports.StatuspageServiceName = exports.StatuspageIncidentStatus = exports.StatuspageIncidentImpact = exports.StandardOffer = exports.SecondFactorMethod = exports.Role = exports.ResponseType = exports.ResponseStatusType = exports.ResponseCacheStatus = exports.ResourceClassExperiment = exports.RequestsOrderByField = exports.RequestsOrderByDirection = exports.RequestMethod = exports.ProjectArchiveSourceType = exports.Permission = exports.Order = exports.OnboardingEnvironment = void 0;
11
+ exports.WorkflowRunStatus = exports.WorkflowProjectSourceType = exports.WorkflowJobType = exports.WorkflowJobStatus = exports.WorkflowJobReviewDecision = exports.WorkflowDeviceTestCaseStatusFilter = exports.WorkflowDeviceTestCaseStatus = exports.WorkflowDeviceTestCaseStatSortField = exports.WorkflowDeviceTestCaseSortDirection = exports.WorkflowDeviceTestCaseInsightsTimeSeriesGranularity = exports.WorkflowArtifactStorageType = exports.WorkerLoggerLevel = exports.WorkerDeploymentLogLevel = exports.WorkerDeploymentCrashKind = exports.WebhookType = exports.UserSpecifiedAccountUsage = exports.UserEntityTypeName = exports.UserAgentPlatform = exports.UserAgentOs = exports.UserAgentBrowser = exports.UsageMetricsGranularity = exports.UsageMetricType = exports.UploadSessionType = exports.UpdateDiffReceiptStateValue = exports.UpdateDiffReceiptOrderByField = exports.UpdateDiffReceiptOrderByDirection = exports.TargetEntityMutationType = exports.SubmissionStatus = exports.SubmissionPriority = exports.SubmissionArchiveSourceType = exports.SubmissionAndroidReleaseStatus = exports.SubmissionAndroidArchiveType = exports.StatuspageServiceStatus = exports.StatuspageServiceName = exports.StatuspageIncidentStatus = exports.StatuspageIncidentImpact = exports.StandardOffer = exports.SecondFactorMethod = exports.Role = exports.ResponseType = exports.ResponseStatusType = exports.ResponseCacheStatus = exports.ResourceClassExperiment = exports.RequestsOrderByField = exports.RequestsOrderByDirection = exports.RequestMethod = exports.ProjectArchiveSourceType = exports.Permission = exports.Order = exports.OnboardingEnvironment = void 0;
12
+ exports.WorkflowsInsightsRunsOverTimeGranularity = exports.WorkflowsInsightsExportFormat = exports.WorkflowRunTriggerEventType = void 0;
12
13
  var AccountAppsSortByField;
13
14
  (function (AccountAppsSortByField) {
14
15
  AccountAppsSortByField["LatestActivityTime"] = "LATEST_ACTIVITY_TIME";
@@ -1065,12 +1066,45 @@ var WorkflowArtifactStorageType;
1065
1066
  WorkflowArtifactStorageType["Gcs"] = "GCS";
1066
1067
  WorkflowArtifactStorageType["R2"] = "R2";
1067
1068
  })(WorkflowArtifactStorageType || (exports.WorkflowArtifactStorageType = WorkflowArtifactStorageType = {}));
1069
+ var WorkflowDeviceTestCaseInsightsTimeSeriesGranularity;
1070
+ (function (WorkflowDeviceTestCaseInsightsTimeSeriesGranularity) {
1071
+ WorkflowDeviceTestCaseInsightsTimeSeriesGranularity["Day"] = "DAY";
1072
+ WorkflowDeviceTestCaseInsightsTimeSeriesGranularity["Hour"] = "HOUR";
1073
+ WorkflowDeviceTestCaseInsightsTimeSeriesGranularity["Minute"] = "MINUTE";
1074
+ })(WorkflowDeviceTestCaseInsightsTimeSeriesGranularity || (exports.WorkflowDeviceTestCaseInsightsTimeSeriesGranularity = WorkflowDeviceTestCaseInsightsTimeSeriesGranularity = {}));
1075
+ var WorkflowDeviceTestCaseSortDirection;
1076
+ (function (WorkflowDeviceTestCaseSortDirection) {
1077
+ WorkflowDeviceTestCaseSortDirection["Asc"] = "ASC";
1078
+ WorkflowDeviceTestCaseSortDirection["Desc"] = "DESC";
1079
+ })(WorkflowDeviceTestCaseSortDirection || (exports.WorkflowDeviceTestCaseSortDirection = WorkflowDeviceTestCaseSortDirection = {}));
1080
+ var WorkflowDeviceTestCaseStatSortField;
1081
+ (function (WorkflowDeviceTestCaseStatSortField) {
1082
+ WorkflowDeviceTestCaseStatSortField["Fails"] = "FAILS";
1083
+ WorkflowDeviceTestCaseStatSortField["Flakes"] = "FLAKES";
1084
+ WorkflowDeviceTestCaseStatSortField["FlakeRate"] = "FLAKE_RATE";
1085
+ WorkflowDeviceTestCaseStatSortField["LastRun"] = "LAST_RUN";
1086
+ WorkflowDeviceTestCaseStatSortField["P90Duration"] = "P90_DURATION";
1087
+ WorkflowDeviceTestCaseStatSortField["PassRate"] = "PASS_RATE";
1088
+ WorkflowDeviceTestCaseStatSortField["Runs"] = "RUNS";
1089
+ })(WorkflowDeviceTestCaseStatSortField || (exports.WorkflowDeviceTestCaseStatSortField = WorkflowDeviceTestCaseStatSortField = {}));
1068
1090
  /** Status of a device test case execution. */
1069
1091
  var WorkflowDeviceTestCaseStatus;
1070
1092
  (function (WorkflowDeviceTestCaseStatus) {
1071
1093
  WorkflowDeviceTestCaseStatus["Failed"] = "FAILED";
1072
1094
  WorkflowDeviceTestCaseStatus["Passed"] = "PASSED";
1073
1095
  })(WorkflowDeviceTestCaseStatus || (exports.WorkflowDeviceTestCaseStatus = WorkflowDeviceTestCaseStatus = {}));
1096
+ /**
1097
+ * Mutually exclusive — matches the chart bucket semantics (passedClean / flaky / failed).
1098
+ * PASSED_CLEAN = is_final_attempt=1 AND status=passed AND is_flaky=0
1099
+ * FLAKY = is_final_attempt=1 AND is_flaky=1 (still a pass, just with retries)
1100
+ * FAILED = is_final_attempt=1 AND status=failed
1101
+ */
1102
+ var WorkflowDeviceTestCaseStatusFilter;
1103
+ (function (WorkflowDeviceTestCaseStatusFilter) {
1104
+ WorkflowDeviceTestCaseStatusFilter["Failed"] = "FAILED";
1105
+ WorkflowDeviceTestCaseStatusFilter["Flaky"] = "FLAKY";
1106
+ WorkflowDeviceTestCaseStatusFilter["PassedClean"] = "PASSED_CLEAN";
1107
+ })(WorkflowDeviceTestCaseStatusFilter || (exports.WorkflowDeviceTestCaseStatusFilter = WorkflowDeviceTestCaseStatusFilter = {}));
1074
1108
  var WorkflowJobReviewDecision;
1075
1109
  (function (WorkflowJobReviewDecision) {
1076
1110
  WorkflowJobReviewDecision["Approved"] = "APPROVED";