Skip to content

chore(repo): update nx to 22.7.0-beta.17#3073

Merged
MaxKless merged 13 commits intomasterfrom
upnx
Apr 24, 2026
Merged

chore(repo): update nx to 22.7.0-beta.17#3073
MaxKless merged 13 commits intomasterfrom
upnx

Conversation

@FrozenPandaz
Copy link
Copy Markdown
Contributor

@FrozenPandaz FrozenPandaz commented Feb 24, 2026

Updating Nx from 22.6.0-beta.2 to 22.7.0-beta.17

@nx-cloud-snapshot
Copy link
Copy Markdown
Contributor

nx-cloud-snapshot Bot commented Feb 24, 2026

View your CI Pipeline Execution ↗ for commit 188c197

Command Status Duration Result
nx affected --targets=lint,test,build,e2e-ci,ty... ✅ Succeeded 6m 36s View ↗
nx-cloud record -- node tools/scripts/check-pin... ✅ Succeeded <1s View ↗
nx-cloud record -- yarn nx sync:check ✅ Succeeded 11s View ↗
nx-cloud record -- yarn nx run-many -t ktfmtFormat ✅ Succeeded 3m 11s View ↗
nx run-many -t ktfmtFormat ✅ Succeeded 1m 39s View ↗
nx-cloud record -- yarn nx format:check --verbose ✅ Succeeded 2s View ↗

☁️ Nx Cloud last updated this comment at 2026-04-24 08:30:21 UTC

nx-cloud-snapshot[bot]

This comment was marked as outdated.

nx-cloud-snapshot[bot]

This comment was marked as outdated.

@FrozenPandaz FrozenPandaz changed the title chore(repo): update nx to 22.6.0-beta.3 chore(repo): update nx to 22.6.0-beta.4 Feb 26, 2026
@FrozenPandaz FrozenPandaz changed the title chore(repo): update nx to 22.6.0-beta.4 chore(repo): update nx to 22.6.0-beta.5 Feb 26, 2026
nx-cloud-snapshot[bot]

This comment was marked as outdated.

nx-cloud-snapshot[bot]

This comment was marked as outdated.

@FrozenPandaz FrozenPandaz changed the title chore(repo): update nx to 22.6.0-beta.5 chore(repo): update nx to 22.6.0-beta.6 Feb 27, 2026
nx-cloud-snapshot[bot]

This comment was marked as outdated.

@FrozenPandaz FrozenPandaz changed the title chore(repo): update nx to 22.6.0-beta.6 chore(repo): update nx to 22.6.0-beta.7 Feb 27, 2026
@FrozenPandaz FrozenPandaz changed the title chore(repo): update nx to 22.6.0-beta.7 chore(repo): update nx to 22.6.0-beta.9 Mar 4, 2026
nx-cloud-snapshot[bot]

This comment was marked as outdated.

nx-cloud-snapshot[bot]

This comment was marked as outdated.

@FrozenPandaz FrozenPandaz changed the title chore(repo): update nx to 22.6.0-beta.9 chore(repo): update nx to 22.6.0-beta.10 Mar 6, 2026
@FrozenPandaz FrozenPandaz requested a review from MaxKless as a code owner March 9, 2026 16:57
nx-cloud-snapshot[bot]

This comment was marked as outdated.

nx-cloud-snapshot[bot]

This comment was marked as outdated.

@FrozenPandaz FrozenPandaz changed the title chore(repo): update nx to 22.6.0-beta.10 chore(repo): update nx to 22.6.0-beta.13 Mar 13, 2026
nx-cloud-snapshot[bot]

This comment was marked as outdated.

Copy link
Copy Markdown
Contributor

@nx-cloud-snapshot nx-cloud-snapshot Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nx Cloud is proposing a fix for your failed CI:

We updated the ConfigurationSourceMaps import path across four files to its new location in nx/src/project-graph/utils/project-configuration/source-maps, as it was moved internally in Nx 22.7.0-rc.0 and is no longer re-exported from project-configuration-utils. We also fixed the Option interface and getItems function in shared-schema to accommodate the changed items property type in CliOption (PropertyDescription | PropertyDescription[]), which was caused by the same Nx upgrade.

Suggested Fix changes
diff --git a/libs/shared/nx-workspace-info/src/lib/get-nx-workspace-config.ts b/libs/shared/nx-workspace-info/src/lib/get-nx-workspace-config.ts
index d9b2f741..14d1194f 100644
--- a/libs/shared/nx-workspace-info/src/lib/get-nx-workspace-config.ts
+++ b/libs/shared/nx-workspace-info/src/lib/get-nx-workspace-config.ts
@@ -8,7 +8,7 @@ import type {
   ProjectGraph,
 } from 'nx/src/devkit-exports';
 import type { ProjectGraphError } from 'nx/src/project-graph/error-types';
-import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration-utils';
+import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration/source-maps';
 import { performance } from 'perf_hooks';
 import {
   getNxOutput,
diff --git a/libs/shared/nx-workspace-info/src/lib/workspace.ts b/libs/shared/nx-workspace-info/src/lib/workspace.ts
index cf75a569..1f632b03 100644
--- a/libs/shared/nx-workspace-info/src/lib/workspace.ts
+++ b/libs/shared/nx-workspace-info/src/lib/workspace.ts
@@ -17,7 +17,7 @@ import { getNxVersion } from './get-nx-version';
 import { getNxWorkspaceConfig } from './get-nx-workspace-config';
 import { getNxDaemonClient } from './get-nx-workspace-package';
 import type { ProjectGraph } from 'nx/src/devkit-exports';
-import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration-utils';
+import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration/source-maps';
 import { execSync } from 'child_process';
 
 const enum Status {
diff --git a/libs/shared/schema/src/normalize-schema.spec.ts b/libs/shared/schema/src/normalize-schema.spec.ts
index de11a56a..b2418c9d 100644
--- a/libs/shared/schema/src/normalize-schema.spec.ts
+++ b/libs/shared/schema/src/normalize-schema.spec.ts
@@ -25,7 +25,6 @@ describe('utils', () => {
     };
 
     it('should work with schema without any properties', async () => {
-      // @ts-expect-error absence of required property "properties" is needed to test failure resistance
       const r = await normalizeSchema({});
       expect(r).toEqual([]);
     });
diff --git a/libs/shared/schema/src/normalize-schema.ts b/libs/shared/schema/src/normalize-schema.ts
index 75f5bb8e..0dbf521d 100644
--- a/libs/shared/schema/src/normalize-schema.ts
+++ b/libs/shared/schema/src/normalize-schema.ts
@@ -163,13 +163,16 @@ function isFieldRequired(
 }
 
 function getItems(option: CliOption): { items: string[] } | undefined {
-  return (
-    option.items && {
-      items:
-        (option.items as ItemsWithEnum).enum ||
-        ((option.items as string[]).length && option.items),
-    }
-  );
+  if (!option.items) return undefined;
+  const enumItems = (option.items as ItemsWithEnum).enum;
+  if (enumItems) {
+    return { items: enumItems };
+  }
+  const stringItems = option.items as string[];
+  if (stringItems.length) {
+    return { items: stringItems };
+  }
+  return undefined;
 }
 
 function isLongFormXPrompt(xPrompt: XPrompt): xPrompt is LongFormXPrompt {
diff --git a/libs/shared/schema/src/schema.ts b/libs/shared/schema/src/schema.ts
index 6a30b631..ce3277f1 100644
--- a/libs/shared/schema/src/schema.ts
+++ b/libs/shared/schema/src/schema.ts
@@ -20,7 +20,7 @@ export type CliOption = {
   deprecated?: boolean | string;
 } & OptionPropertyDescription;
 
-export interface Option extends CliOption {
+export interface Option extends Omit<CliOption, 'items'> {
   tooltip?: string;
   itemTooltips?: ItemTooltips;
   items?: string[] | ItemsWithEnum;
diff --git a/libs/shared/types/src/lib/nx-workspace.ts b/libs/shared/types/src/lib/nx-workspace.ts
index b48338b4..7f646d8c 100644
--- a/libs/shared/types/src/lib/nx-workspace.ts
+++ b/libs/shared/types/src/lib/nx-workspace.ts
@@ -5,7 +5,7 @@ import type {
   ProjectFileMap,
   ProjectGraph,
 } from 'nx/src/devkit-exports';
-import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration-utils';
+import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration/source-maps';
 
 export type NxProjectConfiguration = ProjectConfiguration & {
   files?: { file: string }[];
diff --git a/libs/shared/watcher/src/lib/passive-daemon-watcher.ts b/libs/shared/watcher/src/lib/passive-daemon-watcher.ts
index edee858a..cfb27f70 100644
--- a/libs/shared/watcher/src/lib/passive-daemon-watcher.ts
+++ b/libs/shared/watcher/src/lib/passive-daemon-watcher.ts
@@ -5,7 +5,7 @@ import {
 import { Logger } from '@nx-console/shared-utils';
 import { randomUUID } from 'crypto';
 import type { ProjectGraph } from 'nx/src/config/project-graph';
-import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration-utils';
+import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration/source-maps';
 import { AnyEventObject, createActor, fromPromise, setup } from 'xstate';
 
 export type WatcherStatus = 'operational' | 'daemonDisabled' | 'notRunning';

Apply fix via Nx Cloud  Reject fix via Nx Cloud


Or Apply changes locally with:

npx nx-cloud apply-locally uZ9F-OChI

Apply fix locally with your editor ↗   View interactive diff ↗



🎓 Learn more about Self-Healing CI on nx.dev

Copy link
Copy Markdown
Contributor

@nx-cloud-snapshot nx-cloud-snapshot Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Important

At least one additional CI pipeline execution has run since the conclusion below was written and it may no longer be applicable.

Nx Cloud is proposing a fix for your failed CI:

We updated the ConfigurationSourceMaps import path across four files to its new location in nx/src/project-graph/utils/project-configuration/source-maps, as it was moved internally in Nx 22.7.0-rc.0 and is no longer re-exported from project-configuration-utils. We also fixed the Option interface and getItems function in shared-schema to accommodate the changed items property type in CliOption (PropertyDescription | PropertyDescription[]), which was caused by the same Nx upgrade.

Warning

We could not verify this fix.

Suggested Fix changes
diff --git a/libs/shared/nx-workspace-info/src/lib/get-nx-workspace-config.ts b/libs/shared/nx-workspace-info/src/lib/get-nx-workspace-config.ts
index d9b2f741..14d1194f 100644
--- a/libs/shared/nx-workspace-info/src/lib/get-nx-workspace-config.ts
+++ b/libs/shared/nx-workspace-info/src/lib/get-nx-workspace-config.ts
@@ -8,7 +8,7 @@ import type {
   ProjectGraph,
 } from 'nx/src/devkit-exports';
 import type { ProjectGraphError } from 'nx/src/project-graph/error-types';
-import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration-utils';
+import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration/source-maps';
 import { performance } from 'perf_hooks';
 import {
   getNxOutput,
diff --git a/libs/shared/nx-workspace-info/src/lib/workspace.ts b/libs/shared/nx-workspace-info/src/lib/workspace.ts
index cf75a569..1f632b03 100644
--- a/libs/shared/nx-workspace-info/src/lib/workspace.ts
+++ b/libs/shared/nx-workspace-info/src/lib/workspace.ts
@@ -17,7 +17,7 @@ import { getNxVersion } from './get-nx-version';
 import { getNxWorkspaceConfig } from './get-nx-workspace-config';
 import { getNxDaemonClient } from './get-nx-workspace-package';
 import type { ProjectGraph } from 'nx/src/devkit-exports';
-import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration-utils';
+import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration/source-maps';
 import { execSync } from 'child_process';
 
 const enum Status {
diff --git a/libs/shared/schema/src/normalize-schema.spec.ts b/libs/shared/schema/src/normalize-schema.spec.ts
index de11a56a..b2418c9d 100644
--- a/libs/shared/schema/src/normalize-schema.spec.ts
+++ b/libs/shared/schema/src/normalize-schema.spec.ts
@@ -25,7 +25,6 @@ describe('utils', () => {
     };
 
     it('should work with schema without any properties', async () => {
-      // @ts-expect-error absence of required property "properties" is needed to test failure resistance
       const r = await normalizeSchema({});
       expect(r).toEqual([]);
     });
diff --git a/libs/shared/schema/src/normalize-schema.ts b/libs/shared/schema/src/normalize-schema.ts
index 75f5bb8e..0dbf521d 100644
--- a/libs/shared/schema/src/normalize-schema.ts
+++ b/libs/shared/schema/src/normalize-schema.ts
@@ -163,13 +163,16 @@ function isFieldRequired(
 }
 
 function getItems(option: CliOption): { items: string[] } | undefined {
-  return (
-    option.items && {
-      items:
-        (option.items as ItemsWithEnum).enum ||
-        ((option.items as string[]).length && option.items),
-    }
-  );
+  if (!option.items) return undefined;
+  const enumItems = (option.items as ItemsWithEnum).enum;
+  if (enumItems) {
+    return { items: enumItems };
+  }
+  const stringItems = option.items as string[];
+  if (stringItems.length) {
+    return { items: stringItems };
+  }
+  return undefined;
 }
 
 function isLongFormXPrompt(xPrompt: XPrompt): xPrompt is LongFormXPrompt {
diff --git a/libs/shared/schema/src/schema.ts b/libs/shared/schema/src/schema.ts
index 6a30b631..ce3277f1 100644
--- a/libs/shared/schema/src/schema.ts
+++ b/libs/shared/schema/src/schema.ts
@@ -20,7 +20,7 @@ export type CliOption = {
   deprecated?: boolean | string;
 } & OptionPropertyDescription;
 
-export interface Option extends CliOption {
+export interface Option extends Omit<CliOption, 'items'> {
   tooltip?: string;
   itemTooltips?: ItemTooltips;
   items?: string[] | ItemsWithEnum;
diff --git a/libs/shared/types/src/lib/nx-workspace.ts b/libs/shared/types/src/lib/nx-workspace.ts
index b48338b4..7f646d8c 100644
--- a/libs/shared/types/src/lib/nx-workspace.ts
+++ b/libs/shared/types/src/lib/nx-workspace.ts
@@ -5,7 +5,7 @@ import type {
   ProjectFileMap,
   ProjectGraph,
 } from 'nx/src/devkit-exports';
-import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration-utils';
+import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration/source-maps';
 
 export type NxProjectConfiguration = ProjectConfiguration & {
   files?: { file: string }[];
diff --git a/libs/shared/watcher/src/lib/passive-daemon-watcher.ts b/libs/shared/watcher/src/lib/passive-daemon-watcher.ts
index edee858a..cfb27f70 100644
--- a/libs/shared/watcher/src/lib/passive-daemon-watcher.ts
+++ b/libs/shared/watcher/src/lib/passive-daemon-watcher.ts
@@ -5,7 +5,7 @@ import {
 import { Logger } from '@nx-console/shared-utils';
 import { randomUUID } from 'crypto';
 import type { ProjectGraph } from 'nx/src/config/project-graph';
-import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration-utils';
+import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration/source-maps';
 import { AnyEventObject, createActor, fromPromise, setup } from 'xstate';
 
 export type WatcherStatus = 'operational' | 'daemonDisabled' | 'notRunning';

Apply fix via Nx Cloud  Reject fix via Nx Cloud


Or Apply changes locally with:

npx nx-cloud apply-locally uZ9F-OChI

Apply fix locally with your editor ↗   View interactive diff ↗



🎓 Learn more about Self-Healing CI on nx.dev

Copy link
Copy Markdown
Contributor

@nx-cloud-snapshot nx-cloud-snapshot Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nx Cloud is proposing a fix for your failed CI:

We updated the import path for ConfigurationSourceMaps across four files to reflect its move to a new module in Nx 22.7, and fixed the CliOption type definition to remain compatible with PropertyDescription.items changing from a string-friendly type to PropertyDescription | PropertyDescription[]. These changes will fix the TS2459, TS2430, and TS2322 type errors that were introduced by the Nx upgrade.

Suggested Fix changes
diff --git a/libs/shared/nx-workspace-info/src/lib/get-nx-workspace-config.ts b/libs/shared/nx-workspace-info/src/lib/get-nx-workspace-config.ts
index d9b2f741..14d1194f 100644
--- a/libs/shared/nx-workspace-info/src/lib/get-nx-workspace-config.ts
+++ b/libs/shared/nx-workspace-info/src/lib/get-nx-workspace-config.ts
@@ -8,7 +8,7 @@ import type {
   ProjectGraph,
 } from 'nx/src/devkit-exports';
 import type { ProjectGraphError } from 'nx/src/project-graph/error-types';
-import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration-utils';
+import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration/source-maps';
 import { performance } from 'perf_hooks';
 import {
   getNxOutput,
diff --git a/libs/shared/nx-workspace-info/src/lib/workspace.ts b/libs/shared/nx-workspace-info/src/lib/workspace.ts
index cf75a569..1f632b03 100644
--- a/libs/shared/nx-workspace-info/src/lib/workspace.ts
+++ b/libs/shared/nx-workspace-info/src/lib/workspace.ts
@@ -17,7 +17,7 @@ import { getNxVersion } from './get-nx-version';
 import { getNxWorkspaceConfig } from './get-nx-workspace-config';
 import { getNxDaemonClient } from './get-nx-workspace-package';
 import type { ProjectGraph } from 'nx/src/devkit-exports';
-import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration-utils';
+import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration/source-maps';
 import { execSync } from 'child_process';
 
 const enum Status {
diff --git a/libs/shared/schema/src/normalize-schema.ts b/libs/shared/schema/src/normalize-schema.ts
index 75f5bb8e..6e30dc78 100644
--- a/libs/shared/schema/src/normalize-schema.ts
+++ b/libs/shared/schema/src/normalize-schema.ts
@@ -163,13 +163,16 @@ function isFieldRequired(
 }
 
 function getItems(option: CliOption): { items: string[] } | undefined {
-  return (
-    option.items && {
-      items:
-        (option.items as ItemsWithEnum).enum ||
-        ((option.items as string[]).length && option.items),
-    }
-  );
+  if (!option.items) return undefined;
+  const asItemsWithEnum = option.items as ItemsWithEnum;
+  if (asItemsWithEnum.enum) {
+    return { items: asItemsWithEnum.enum };
+  }
+  const asStringArray = option.items as string[];
+  if (asStringArray.length) {
+    return { items: asStringArray };
+  }
+  return undefined;
 }
 
 function isLongFormXPrompt(xPrompt: XPrompt): xPrompt is LongFormXPrompt {
diff --git a/libs/shared/schema/src/schema.ts b/libs/shared/schema/src/schema.ts
index 6a30b631..b48ced19 100644
--- a/libs/shared/schema/src/schema.ts
+++ b/libs/shared/schema/src/schema.ts
@@ -18,7 +18,8 @@ export type CliOption = {
   alias?: string;
   hidden?: boolean;
   deprecated?: boolean | string;
-} & OptionPropertyDescription;
+  items?: OptionPropertyDescription['items'] | string[] | ItemsWithEnum;
+} & Omit<OptionPropertyDescription, 'items'>;
 
 export interface Option extends CliOption {
   tooltip?: string;
diff --git a/libs/shared/types/src/lib/nx-workspace.ts b/libs/shared/types/src/lib/nx-workspace.ts
index b48338b4..7f646d8c 100644
--- a/libs/shared/types/src/lib/nx-workspace.ts
+++ b/libs/shared/types/src/lib/nx-workspace.ts
@@ -5,7 +5,7 @@ import type {
   ProjectFileMap,
   ProjectGraph,
 } from 'nx/src/devkit-exports';
-import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration-utils';
+import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration/source-maps';
 
 export type NxProjectConfiguration = ProjectConfiguration & {
   files?: { file: string }[];
diff --git a/libs/shared/watcher/src/lib/passive-daemon-watcher.ts b/libs/shared/watcher/src/lib/passive-daemon-watcher.ts
index edee858a..cfb27f70 100644
--- a/libs/shared/watcher/src/lib/passive-daemon-watcher.ts
+++ b/libs/shared/watcher/src/lib/passive-daemon-watcher.ts
@@ -5,7 +5,7 @@ import {
 import { Logger } from '@nx-console/shared-utils';
 import { randomUUID } from 'crypto';
 import type { ProjectGraph } from 'nx/src/config/project-graph';
-import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration-utils';
+import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration/source-maps';
 import { AnyEventObject, createActor, fromPromise, setup } from 'xstate';
 
 export type WatcherStatus = 'operational' | 'daemonDisabled' | 'notRunning';

Apply fix via Nx Cloud  Reject fix via Nx Cloud


Or Apply changes locally with:

npx nx-cloud apply-locally HjuB-cEks

Apply fix locally with your editor ↗   View interactive diff ↗



🎓 Learn more about Self-Healing CI on nx.dev

Copy link
Copy Markdown
Contributor

@nx-cloud-snapshot nx-cloud-snapshot Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Important

At least one additional CI pipeline execution has run since the conclusion below was written and it may no longer be applicable.

Nx Cloud is proposing a fix for your failed CI:

We updated the import path for ConfigurationSourceMaps across four files to reflect its move to a new module in Nx 22.7, and fixed the CliOption type definition to remain compatible with PropertyDescription.items changing from a string-friendly type to PropertyDescription | PropertyDescription[]. These changes will fix the TS2459, TS2430, and TS2322 type errors that were introduced by the Nx upgrade.

Tip

We verified this fix by re-running shared-types:typecheck, shared-schema:typecheck, vscode-migrate-sidebar-webview:build and 4 more.

Suggested Fix changes
diff --git a/libs/shared/nx-workspace-info/src/lib/get-nx-workspace-config.ts b/libs/shared/nx-workspace-info/src/lib/get-nx-workspace-config.ts
index d9b2f741..14d1194f 100644
--- a/libs/shared/nx-workspace-info/src/lib/get-nx-workspace-config.ts
+++ b/libs/shared/nx-workspace-info/src/lib/get-nx-workspace-config.ts
@@ -8,7 +8,7 @@ import type {
   ProjectGraph,
 } from 'nx/src/devkit-exports';
 import type { ProjectGraphError } from 'nx/src/project-graph/error-types';
-import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration-utils';
+import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration/source-maps';
 import { performance } from 'perf_hooks';
 import {
   getNxOutput,
diff --git a/libs/shared/nx-workspace-info/src/lib/workspace.ts b/libs/shared/nx-workspace-info/src/lib/workspace.ts
index cf75a569..1f632b03 100644
--- a/libs/shared/nx-workspace-info/src/lib/workspace.ts
+++ b/libs/shared/nx-workspace-info/src/lib/workspace.ts
@@ -17,7 +17,7 @@ import { getNxVersion } from './get-nx-version';
 import { getNxWorkspaceConfig } from './get-nx-workspace-config';
 import { getNxDaemonClient } from './get-nx-workspace-package';
 import type { ProjectGraph } from 'nx/src/devkit-exports';
-import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration-utils';
+import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration/source-maps';
 import { execSync } from 'child_process';
 
 const enum Status {
diff --git a/libs/shared/schema/src/normalize-schema.ts b/libs/shared/schema/src/normalize-schema.ts
index 75f5bb8e..6e30dc78 100644
--- a/libs/shared/schema/src/normalize-schema.ts
+++ b/libs/shared/schema/src/normalize-schema.ts
@@ -163,13 +163,16 @@ function isFieldRequired(
 }
 
 function getItems(option: CliOption): { items: string[] } | undefined {
-  return (
-    option.items && {
-      items:
-        (option.items as ItemsWithEnum).enum ||
-        ((option.items as string[]).length && option.items),
-    }
-  );
+  if (!option.items) return undefined;
+  const asItemsWithEnum = option.items as ItemsWithEnum;
+  if (asItemsWithEnum.enum) {
+    return { items: asItemsWithEnum.enum };
+  }
+  const asStringArray = option.items as string[];
+  if (asStringArray.length) {
+    return { items: asStringArray };
+  }
+  return undefined;
 }
 
 function isLongFormXPrompt(xPrompt: XPrompt): xPrompt is LongFormXPrompt {
diff --git a/libs/shared/schema/src/schema.ts b/libs/shared/schema/src/schema.ts
index 6a30b631..b48ced19 100644
--- a/libs/shared/schema/src/schema.ts
+++ b/libs/shared/schema/src/schema.ts
@@ -18,7 +18,8 @@ export type CliOption = {
   alias?: string;
   hidden?: boolean;
   deprecated?: boolean | string;
-} & OptionPropertyDescription;
+  items?: OptionPropertyDescription['items'] | string[] | ItemsWithEnum;
+} & Omit<OptionPropertyDescription, 'items'>;
 
 export interface Option extends CliOption {
   tooltip?: string;
diff --git a/libs/shared/types/src/lib/nx-workspace.ts b/libs/shared/types/src/lib/nx-workspace.ts
index b48338b4..7f646d8c 100644
--- a/libs/shared/types/src/lib/nx-workspace.ts
+++ b/libs/shared/types/src/lib/nx-workspace.ts
@@ -5,7 +5,7 @@ import type {
   ProjectFileMap,
   ProjectGraph,
 } from 'nx/src/devkit-exports';
-import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration-utils';
+import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration/source-maps';
 
 export type NxProjectConfiguration = ProjectConfiguration & {
   files?: { file: string }[];
diff --git a/libs/shared/watcher/src/lib/passive-daemon-watcher.ts b/libs/shared/watcher/src/lib/passive-daemon-watcher.ts
index edee858a..cfb27f70 100644
--- a/libs/shared/watcher/src/lib/passive-daemon-watcher.ts
+++ b/libs/shared/watcher/src/lib/passive-daemon-watcher.ts
@@ -5,7 +5,7 @@ import {
 import { Logger } from '@nx-console/shared-utils';
 import { randomUUID } from 'crypto';
 import type { ProjectGraph } from 'nx/src/config/project-graph';
-import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration-utils';
+import type { ConfigurationSourceMaps } from 'nx/src/project-graph/utils/project-configuration/source-maps';
 import { AnyEventObject, createActor, fromPromise, setup } from 'xstate';
 
 export type WatcherStatus = 'operational' | 'daemonDisabled' | 'notRunning';

Apply fix via Nx Cloud  Reject fix via Nx Cloud


Or Apply changes locally with:

npx nx-cloud apply-locally HjuB-cEks

Apply fix locally with your editor ↗   View interactive diff ↗



🎓 Learn more about Self-Healing CI on nx.dev

Copy link
Copy Markdown
Contributor

@nx-cloud-snapshot nx-cloud-snapshot Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nx Cloud is proposing a fix for your failed CI:

We updated getItems in normalize-schema.ts to return { items: undefined } when option.items is present but produces no valid string array, rather than returning undefined. This ensures the spread explicitly clears the raw items object (e.g., { type: 'string' }) that was already spread from ...option, fixing the two new tests that expected undefined for non-enum items shapes.

diff --git a/libs/shared/schema/src/normalize-schema.ts b/libs/shared/schema/src/normalize-schema.ts
index 164767d2..37cf496e 100644
--- a/libs/shared/schema/src/normalize-schema.ts
+++ b/libs/shared/schema/src/normalize-schema.ts
@@ -161,9 +161,12 @@ function isFieldRequired(
   return requiredFields.has(nxOption.name);
 }
 
-function getItems(option: CliOption): { items: string[] } | undefined {
+function getItems(option: CliOption): { items?: string[] } | undefined {
+  if (!option.items) {
+    return undefined;
+  }
   const items = normalizeOptionItems(option.items);
-  return items ? { items } : undefined;
+  return { items };
 }
 
 function normalizeOptionItems(items: CliOption['items']): string[] | undefined {

Apply fix via Nx Cloud  Reject fix via Nx Cloud


Or Apply changes locally with:

npx nx-cloud apply-locally 7N3B-fOhQ

Apply fix locally with your editor ↗   View interactive diff ↗



🎓 Learn more about Self-Healing CI on nx.dev

Copy link
Copy Markdown
Contributor

@nx-cloud-snapshot nx-cloud-snapshot Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nx Cloud is proposing a fix for your failed CI:

We updated getItems in normalize-schema.ts to return { items: undefined } when option.items is present but produces no valid string array, rather than returning undefined. This ensures the spread explicitly clears the raw items object (e.g., { type: 'string' }) that was already spread from ...option, fixing the two new tests that expected undefined for non-enum items shapes.

Tip

We verified this fix by re-running shared-schema:test.

diff --git a/libs/shared/schema/src/normalize-schema.ts b/libs/shared/schema/src/normalize-schema.ts
index 164767d2..37cf496e 100644
--- a/libs/shared/schema/src/normalize-schema.ts
+++ b/libs/shared/schema/src/normalize-schema.ts
@@ -161,9 +161,12 @@ function isFieldRequired(
   return requiredFields.has(nxOption.name);
 }
 
-function getItems(option: CliOption): { items: string[] } | undefined {
+function getItems(option: CliOption): { items?: string[] } | undefined {
+  if (!option.items) {
+    return undefined;
+  }
   const items = normalizeOptionItems(option.items);
-  return items ? { items } : undefined;
+  return { items };
 }
 
 function normalizeOptionItems(items: CliOption['items']): string[] | undefined {

Apply fix via Nx Cloud  Reject fix via Nx Cloud


Or Apply changes locally with:

npx nx-cloud apply-locally 7N3B-fOhQ

Apply fix locally with your editor ↗   View interactive diff ↗



🎓 Learn more about Self-Healing CI on nx.dev

Co-authored-by: FrozenPandaz <FrozenPandaz@users.noreply.github.com>
Copy link
Copy Markdown
Contributor

@nx-cloud-snapshot nx-cloud-snapshot Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ The fix from Nx Cloud was applied

We updated getItems in normalize-schema.ts to return { items: undefined } when option.items is present but produces no valid string array, rather than returning undefined. This ensures the spread explicitly clears the raw items object (e.g., { type: 'string' }) that was already spread from ...option, fixing the two new tests that expected undefined for non-enum items shapes.

Tip

We verified this fix by re-running shared-schema:test.

Suggested Fix changes
diff --git a/libs/shared/schema/src/normalize-schema.ts b/libs/shared/schema/src/normalize-schema.ts
index 164767d2..37cf496e 100644
--- a/libs/shared/schema/src/normalize-schema.ts
+++ b/libs/shared/schema/src/normalize-schema.ts
@@ -161,9 +161,12 @@ function isFieldRequired(
   return requiredFields.has(nxOption.name);
 }
 
-function getItems(option: CliOption): { items: string[] } | undefined {
+function getItems(option: CliOption): { items?: string[] } | undefined {
+  if (!option.items) {
+    return undefined;
+  }
   const items = normalizeOptionItems(option.items);
-  return items ? { items } : undefined;
+  return { items };
 }
 
 function normalizeOptionItems(items: CliOption['items']): string[] | undefined {

Revert fix via Nx Cloud  

View interactive diff ↗

➡️ This fix was applied by MaxKless

🎓 Learn more about Self-Healing CI on nx.dev

Copy link
Copy Markdown
Contributor

@nx-cloud-snapshot nx-cloud-snapshot Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nx Cloud is proposing a fix for your failed CI:

We added an explicit dependsOn(named("compileKotlin")) to the instrumentCode task in build.gradle.kts to resolve a Gradle 8.13 validation error exposed by the dev.nx.gradle.project-graph 0.1.20 plugin upgrade. This fix satisfies Gradle's strict implicit dependency detection without altering any build behavior.

diff --git a/apps/intellij/build.gradle.kts b/apps/intellij/build.gradle.kts
index 8d2a44c6..80876aa4 100644
--- a/apps/intellij/build.gradle.kts
+++ b/apps/intellij/build.gradle.kts
@@ -163,6 +163,10 @@ tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
 }
 
 tasks {
+    named("instrumentCode") {
+        dependsOn(named("compileKotlin"))
+    }
+
     prepareSandbox() {
         from(nxlsRoot) {
             include("**")

Apply fix via Nx Cloud  Reject fix via Nx Cloud


Or Apply changes locally with:

npx nx-cloud apply-locally q3Ue-DUav

Apply fix locally with your editor ↗   View interactive diff ↗



🎓 Learn more about Self-Healing CI on nx.dev

Copy link
Copy Markdown
Contributor

@nx-cloud-snapshot nx-cloud-snapshot Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Important

At least one additional CI pipeline execution has run since the conclusion below was written and it may no longer be applicable.

Nx Cloud is proposing a fix for your failed CI:

We added an explicit dependsOn(named("compileKotlin")) to the instrumentCode task in build.gradle.kts to resolve a Gradle 8.13 validation error exposed by the dev.nx.gradle.project-graph 0.1.20 plugin upgrade. This fix satisfies Gradle's strict implicit dependency detection without altering any build behavior.

Tip

We verified this fix by re-running intellij:test.

diff --git a/apps/intellij/build.gradle.kts b/apps/intellij/build.gradle.kts
index 8d2a44c6..80876aa4 100644
--- a/apps/intellij/build.gradle.kts
+++ b/apps/intellij/build.gradle.kts
@@ -163,6 +163,10 @@ tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
 }
 
 tasks {
+    named("instrumentCode") {
+        dependsOn(named("compileKotlin"))
+    }
+
     prepareSandbox() {
         from(nxlsRoot) {
             include("**")

Apply fix via Nx Cloud  Reject fix via Nx Cloud


Or Apply changes locally with:

npx nx-cloud apply-locally q3Ue-DUav

Apply fix locally with your editor ↗   View interactive diff ↗



🎓 Learn more about Self-Healing CI on nx.dev

@MaxKless MaxKless merged commit ce941e1 into master Apr 24, 2026
7 checks passed
@MaxKless MaxKless deleted the upnx branch April 24, 2026 09:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants