nx 22.0.0-beta.3 → 22.0.0-beta.5

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 (85) hide show
  1. package/migrations.json +5 -0
  2. package/package.json +11 -11
  3. package/release/changelog-renderer/index.d.ts +1 -0
  4. package/release/changelog-renderer/index.d.ts.map +1 -1
  5. package/release/changelog-renderer/index.js +46 -15
  6. package/schemas/nx-schema.json +254 -86
  7. package/src/command-line/configure-ai-agents/command-object.d.ts +1 -1
  8. package/src/command-line/configure-ai-agents/command-object.d.ts.map +1 -1
  9. package/src/command-line/configure-ai-agents/command-object.js +18 -4
  10. package/src/command-line/configure-ai-agents/configure-ai-agents.d.ts.map +1 -1
  11. package/src/command-line/configure-ai-agents/configure-ai-agents.js +58 -31
  12. package/src/command-line/migrate/migrate.d.ts.map +1 -1
  13. package/src/command-line/migrate/migrate.js +0 -4
  14. package/src/command-line/nx-cloud/login/command-object.d.ts.map +1 -1
  15. package/src/command-line/nx-cloud/login/command-object.js +2 -2
  16. package/src/command-line/nx-cloud/logout/command-object.js +1 -1
  17. package/src/command-line/nx-commands.js +1 -1
  18. package/src/command-line/release/changelog.d.ts.map +1 -1
  19. package/src/command-line/release/changelog.js +58 -47
  20. package/src/command-line/release/command-object.d.ts +7 -3
  21. package/src/command-line/release/command-object.d.ts.map +1 -1
  22. package/src/command-line/release/config/config.d.ts +6 -2
  23. package/src/command-line/release/config/config.d.ts.map +1 -1
  24. package/src/command-line/release/config/config.js +124 -61
  25. package/src/command-line/release/config/version-plans.d.ts.map +1 -1
  26. package/src/command-line/release/config/version-plans.js +4 -1
  27. package/src/command-line/release/publish.d.ts.map +1 -1
  28. package/src/command-line/release/publish.js +35 -11
  29. package/src/command-line/release/release.d.ts.map +1 -1
  30. package/src/command-line/release/release.js +31 -30
  31. package/src/command-line/release/utils/git.d.ts +2 -2
  32. package/src/command-line/release/utils/git.d.ts.map +1 -1
  33. package/src/command-line/release/utils/git.js +5 -5
  34. package/src/command-line/release/utils/release-graph.d.ts +219 -0
  35. package/src/command-line/release/utils/release-graph.d.ts.map +1 -0
  36. package/src/command-line/release/utils/release-graph.js +658 -0
  37. package/src/command-line/release/utils/semver.d.ts +1 -2
  38. package/src/command-line/release/utils/semver.d.ts.map +1 -1
  39. package/src/command-line/release/utils/semver.js +3 -5
  40. package/src/command-line/release/utils/shared.d.ts +1 -1
  41. package/src/command-line/release/utils/shared.d.ts.map +1 -1
  42. package/src/command-line/release/utils/shared.js +53 -19
  43. package/src/command-line/release/version/release-group-processor.d.ts +3 -152
  44. package/src/command-line/release/version/release-group-processor.d.ts.map +1 -1
  45. package/src/command-line/release/version/release-group-processor.js +58 -569
  46. package/src/command-line/release/version/resolve-current-version.d.ts +1 -1
  47. package/src/command-line/release/version/resolve-current-version.d.ts.map +1 -1
  48. package/src/command-line/release/version/resolve-current-version.js +1 -1
  49. package/src/command-line/release/version/test-utils.d.ts +13 -4
  50. package/src/command-line/release/version/test-utils.d.ts.map +1 -1
  51. package/src/command-line/release/version/test-utils.js +26 -11
  52. package/src/command-line/release/version/version-actions.d.ts +12 -5
  53. package/src/command-line/release/version/version-actions.d.ts.map +1 -1
  54. package/src/command-line/release/version/version-actions.js +36 -19
  55. package/src/command-line/release/version.d.ts +6 -1
  56. package/src/command-line/release/version.d.ts.map +1 -1
  57. package/src/command-line/release/version.js +57 -28
  58. package/src/config/nx-json.d.ts +139 -58
  59. package/src/config/nx-json.d.ts.map +1 -1
  60. package/src/config/nx-json.js +8 -8
  61. package/src/core/graph/main.js +1 -1
  62. package/src/daemon/client/client.d.ts +4 -0
  63. package/src/daemon/client/client.d.ts.map +1 -1
  64. package/src/daemon/client/client.js +23 -0
  65. package/src/daemon/message-types/register-project-graph-listener.d.ts +6 -0
  66. package/src/daemon/message-types/register-project-graph-listener.d.ts.map +1 -0
  67. package/src/daemon/message-types/register-project-graph-listener.js +11 -0
  68. package/src/daemon/server/project-graph-incremental-recomputation.d.ts +3 -1
  69. package/src/daemon/server/project-graph-incremental-recomputation.d.ts.map +1 -1
  70. package/src/daemon/server/project-graph-incremental-recomputation.js +13 -5
  71. package/src/daemon/server/project-graph-listener-sockets.d.ts +8 -0
  72. package/src/daemon/server/project-graph-listener-sockets.d.ts.map +1 -0
  73. package/src/daemon/server/project-graph-listener-sockets.js +24 -0
  74. package/src/daemon/server/server.d.ts.map +1 -1
  75. package/src/daemon/server/server.js +9 -2
  76. package/src/migrations/update-22-0-0/consolidate-release-tag-config.d.ts +3 -0
  77. package/src/migrations/update-22-0-0/consolidate-release-tag-config.d.ts.map +1 -0
  78. package/src/migrations/update-22-0-0/consolidate-release-tag-config.js +100 -0
  79. package/src/native/nx.wasm32-wasi.wasm +0 -0
  80. package/src/tasks-runner/is-tui-enabled.d.ts.map +1 -1
  81. package/src/tasks-runner/is-tui-enabled.js +0 -1
  82. package/src/tasks-runner/run-command.d.ts.map +1 -1
  83. package/src/tasks-runner/run-command.js +5 -2
  84. package/src/utils/package-manager.d.ts.map +1 -1
  85. package/src/utils/package-manager.js +1 -3
package/migrations.json CHANGED
@@ -93,6 +93,11 @@
93
93
  "version": "22.0.0-beta.1",
94
94
  "description": "Updates release version config based on the breaking changes in Nx v22",
95
95
  "implementation": "./src/migrations/update-22-0-0/release-version-config-changes"
96
+ },
97
+ "22-0-0-consolidate-release-tag-config": {
98
+ "version": "22.0.0-beta.2",
99
+ "description": "Consolidates releaseTag* options into nested releaseTag object structure",
100
+ "implementation": "./src/migrations/update-22-0-0/consolidate-release-tag-config"
96
101
  }
97
102
  }
98
103
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nx",
3
- "version": "22.0.0-beta.3",
3
+ "version": "22.0.0-beta.5",
4
4
  "private": false,
5
5
  "description": "The core Nx plugin contains the core functionality of Nx like the project graph, nx commands and task orchestration.",
6
6
  "repository": {
@@ -83,16 +83,16 @@
83
83
  }
84
84
  },
85
85
  "optionalDependencies": {
86
- "@nx/nx-darwin-arm64": "22.0.0-beta.3",
87
- "@nx/nx-darwin-x64": "22.0.0-beta.3",
88
- "@nx/nx-freebsd-x64": "22.0.0-beta.3",
89
- "@nx/nx-linux-arm-gnueabihf": "22.0.0-beta.3",
90
- "@nx/nx-linux-arm64-gnu": "22.0.0-beta.3",
91
- "@nx/nx-linux-arm64-musl": "22.0.0-beta.3",
92
- "@nx/nx-linux-x64-gnu": "22.0.0-beta.3",
93
- "@nx/nx-linux-x64-musl": "22.0.0-beta.3",
94
- "@nx/nx-win32-arm64-msvc": "22.0.0-beta.3",
95
- "@nx/nx-win32-x64-msvc": "22.0.0-beta.3"
86
+ "@nx/nx-darwin-arm64": "22.0.0-beta.5",
87
+ "@nx/nx-darwin-x64": "22.0.0-beta.5",
88
+ "@nx/nx-freebsd-x64": "22.0.0-beta.5",
89
+ "@nx/nx-linux-arm-gnueabihf": "22.0.0-beta.5",
90
+ "@nx/nx-linux-arm64-gnu": "22.0.0-beta.5",
91
+ "@nx/nx-linux-arm64-musl": "22.0.0-beta.5",
92
+ "@nx/nx-linux-x64-gnu": "22.0.0-beta.5",
93
+ "@nx/nx-linux-x64-musl": "22.0.0-beta.5",
94
+ "@nx/nx-win32-arm64-msvc": "22.0.0-beta.5",
95
+ "@nx/nx-win32-x64-msvc": "22.0.0-beta.5"
96
96
  },
97
97
  "nx-migrations": {
98
98
  "migrations": "./migrations.json",
@@ -95,6 +95,7 @@ export default class DefaultChangelogRenderer {
95
95
  protected shouldRenderAuthors(): boolean;
96
96
  protected renderAuthors(): Promise<string[]>;
97
97
  protected formatChange(change: ChangelogChange): string;
98
+ protected formatBreakingChange(change: ChangelogChange): string;
98
99
  protected groupChangesByType(): Record<string, ChangelogChange[]>;
99
100
  protected groupChangesByScope(changes: ChangelogChange[]): Record<string, ChangelogChange[]>;
100
101
  protected extractBreakingChangeExplanation(message: string): string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/release/changelog-renderer/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/release/changelog-renderer/index.ts"],"names":[],"mappings":"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"}
@@ -105,10 +105,7 @@ class DefaultChangelogRenderer {
105
105
  else {
106
106
  for (const change of this.relevantChanges) {
107
107
  if (change.isBreaking) {
108
- const breakingChangeExplanation = this.extractBreakingChangeExplanation(change.body);
109
- this.breakingChanges.push(breakingChangeExplanation
110
- ? `- ${change.scope ? `**${change.scope.trim()}:** ` : ''}${breakingChangeExplanation}`
111
- : this.formatChange(change));
108
+ this.breakingChanges.push(this.formatBreakingChange(change));
112
109
  }
113
110
  }
114
111
  }
@@ -170,10 +167,7 @@ class DefaultChangelogRenderer {
170
167
  const line = this.formatChange(change);
171
168
  markdownLines.push(line);
172
169
  if (change.isBreaking && !this.isVersionPlans) {
173
- const breakingChangeExplanation = this.extractBreakingChangeExplanation(change.body);
174
- this.breakingChanges.push(breakingChangeExplanation
175
- ? `- ${change.scope ? `**${change.scope.trim()}:** ` : ''}${breakingChangeExplanation}`
176
- : line);
170
+ this.breakingChanges.push(this.formatBreakingChange(change));
177
171
  }
178
172
  }
179
173
  }
@@ -184,10 +178,7 @@ class DefaultChangelogRenderer {
184
178
  const line = this.formatChange(change);
185
179
  markdownLines.push(line);
186
180
  if (change.isBreaking && !this.isVersionPlans) {
187
- const breakingChangeExplanation = this.extractBreakingChangeExplanation(change.body);
188
- this.breakingChanges.push(breakingChangeExplanation
189
- ? `- ${change.scope ? `**${change.scope.trim()}:** ` : ''}${breakingChangeExplanation}`
190
- : line);
181
+ this.breakingChanges.push(this.formatBreakingChange(change));
191
182
  }
192
183
  }
193
184
  }
@@ -285,6 +276,43 @@ class DefaultChangelogRenderer {
285
276
  }
286
277
  return changeLine;
287
278
  }
279
+ formatBreakingChange(change) {
280
+ const explanation = this.extractBreakingChangeExplanation(change.body);
281
+ if (!explanation) {
282
+ // No explanation found, use the regular formatChange which includes references
283
+ return this.formatChange(change);
284
+ }
285
+ // Build the breaking change line with scope, explanation, and references
286
+ let breakingLine = '- ';
287
+ if (change.scope) {
288
+ breakingLine += `**${change.scope.trim()}:** `;
289
+ }
290
+ // Handle multi-line explanations
291
+ let explanationText = explanation;
292
+ let extraLines = [];
293
+ if (explanation.includes('\n')) {
294
+ [explanationText, ...extraLines] = explanation.split('\n');
295
+ }
296
+ breakingLine += explanationText;
297
+ // Add PR/commit references
298
+ if (this.remoteReleaseClient.getRemoteRepoData() &&
299
+ this.changelogRenderOptions.commitReferences &&
300
+ change.githubReferences) {
301
+ breakingLine += this.remoteReleaseClient.formatReferences(change.githubReferences);
302
+ }
303
+ // Add extra lines with indentation (matching formatChange behavior)
304
+ if (extraLines.length > 0) {
305
+ const indentation = ' ';
306
+ const extraLinesStr = extraLines
307
+ .filter((l) => l.trim().length > 0)
308
+ .map((l) => `${indentation}${l}`)
309
+ .join('\n');
310
+ if (extraLinesStr) {
311
+ breakingLine += '\n\n' + extraLinesStr;
312
+ }
313
+ }
314
+ return breakingLine;
315
+ }
288
316
  groupChangesByType() {
289
317
  const typeGroups = {};
290
318
  for (const change of this.relevantChanges) {
@@ -312,9 +340,12 @@ class DefaultChangelogRenderer {
312
340
  return null;
313
341
  }
314
342
  const startOfBreakingChange = startIndex + breakingChangeIdentifier.length;
315
- const endOfBreakingChange = message.indexOf('\n', startOfBreakingChange);
316
- if (endOfBreakingChange === -1) {
317
- return message.substring(startOfBreakingChange).trim();
343
+ // Extract all text after BREAKING CHANGE: until we hit git metadata
344
+ let endOfBreakingChange = message.length;
345
+ // Look for the git metadata delimiter (a line with just ")
346
+ const gitMetadataMarker = message.indexOf('\n"', startOfBreakingChange);
347
+ if (gitMetadataMarker !== -1) {
348
+ endOfBreakingChange = gitMetadataMarker;
318
349
  }
319
350
  return message.substring(startOfBreakingChange, endOfBreakingChange).trim();
320
351
  }
@@ -160,90 +160,136 @@
160
160
  },
161
161
  "groups": {
162
162
  "type": "object",
163
- "properties": {
164
- "projectsRelationship": {
165
- "type": "string",
166
- "enum": ["fixed", "independent"]
167
- },
168
- "projects": {
169
- "oneOf": [
170
- {
171
- "type": "string",
172
- "description": "A project name"
173
- },
174
- {
175
- "type": "array",
176
- "description": "An array of project names",
177
- "minItems": 1,
178
- "items": {
179
- "type": "string"
163
+ "additionalProperties": {
164
+ "type": "object",
165
+ "properties": {
166
+ "projectsRelationship": {
167
+ "type": "string",
168
+ "enum": ["fixed", "independent"]
169
+ },
170
+ "projects": {
171
+ "oneOf": [
172
+ {
173
+ "type": "string",
174
+ "description": "A project name"
175
+ },
176
+ {
177
+ "type": "array",
178
+ "description": "An array of project names",
179
+ "minItems": 1,
180
+ "items": {
181
+ "type": "string"
182
+ }
180
183
  }
181
- }
182
- ]
183
- },
184
- "version": {
185
- "$ref": "#/definitions/NxReleaseGroupVersionConfiguration"
186
- },
187
- "changelog": {
188
- "oneOf": [
189
- {
190
- "$ref": "#/definitions/NxReleaseChangelogConfiguration"
191
- },
192
- {
193
- "type": "boolean"
194
- }
195
- ]
196
- },
197
- "releaseTagPattern": {
198
- "type": "string",
199
- "description": "Optionally override the git/release tag pattern to use for this group."
200
- },
201
- "releaseTagPatternCheckAllBranchesWhen": {
202
- "oneOf": [
203
- {
204
- "type": "boolean"
205
- },
206
- {
207
- "type": "array",
208
- "items": {
209
- "type": "string"
184
+ ]
185
+ },
186
+ "version": {
187
+ "$ref": "#/definitions/NxReleaseGroupVersionConfiguration"
188
+ },
189
+ "changelog": {
190
+ "oneOf": [
191
+ {
192
+ "$ref": "#/definitions/NxReleaseChangelogConfiguration"
193
+ },
194
+ {
195
+ "type": "boolean"
196
+ }
197
+ ]
198
+ },
199
+ "releaseTag": {
200
+ "type": "object",
201
+ "description": "Configuration for release tag generation and matching.",
202
+ "properties": {
203
+ "pattern": {
204
+ "type": "string",
205
+ "description": "Optionally override the git/release tag pattern to use for this group."
206
+ },
207
+ "checkAllBranchesWhen": {
208
+ "oneOf": [
209
+ {
210
+ "type": "boolean"
211
+ },
212
+ {
213
+ "type": "array",
214
+ "items": {
215
+ "type": "string"
216
+ }
217
+ }
218
+ ],
219
+ "description": "By default, we will try and resolve the latest match for the releaseTagPattern from the current branch, falling back to all branches if no match is found on the current branch. Setting this to true will cause us to ALWAYS check all branches for the latest match. Setting it to false will cause us to ONLY check the current branch for the latest match. Setting it to an array of strings will cause us to check all branches WHEN the current branch is one of the strings in the array. Glob patterns are supported."
220
+ },
221
+ "requireSemver": {
222
+ "type": "boolean",
223
+ "description": "Whether to require semver to be used for the release tag pattern. If set to false, the release tag pattern will not be checked for semver compliance."
224
+ },
225
+ "preferDockerVersion": {
226
+ "type": ["boolean", "string"],
227
+ "enum": [true, false, "both"],
228
+ "description": "Controls how docker versions are used relative to semver versions when creating git tags and changelog entries. Set to true to use only the docker version, false to use only the semver version, or 'both' to create tags and changelog entries for both docker and semver versions. By default, this is set to true when docker configuration is present, and false otherwise."
229
+ },
230
+ "strictPreid": {
231
+ "$ref": "#/definitions/NxReleaseReleaseTagPatternStrictPreidConfiguration"
210
232
  }
211
- }
212
- ],
213
- "description": "By default, we will try and resolve the latest match for the releaseTagPattern from the current branch, falling back to all branches if no match is found on the current branch. Setting this to true will cause us to ALWAYS check all branches for the latest match. Setting it to false will cause us to ONLY check the current branch for the latest match. Setting it to an array of strings will cause us to check all branches WHEN the current branch is one of the strings in the array. Glob patterns are supported."
214
- },
215
- "releaseTagPatternRequireSemver": {
216
- "type": "boolean",
217
- "description": "Whether to require semver to be used for the release tag pattern. If set to false, the release tag pattern will not be checked for semver compliance."
218
- },
219
- "releaseTagPatternStrictPreid": {
220
- "$ref": "#/definitions/NxReleaseReleaseTagPatternStrictPreidConfiguration"
221
- },
222
- "versionPlans": {
223
- "oneOf": [
224
- {
225
- "$ref": "#/definitions/NxReleaseVersionPlansConfiguration"
226
233
  },
227
- {
228
- "type": "boolean",
229
- "description": "Enables using version plans as a specifier source for versioning and to determine changes for changelog generation."
230
- }
231
- ]
234
+ "additionalProperties": false
235
+ },
236
+ "releaseTagPattern": {
237
+ "type": "string",
238
+ "description": "DEPRECATED: Use releaseTag.pattern instead. Will be removed in Nx 23."
239
+ },
240
+ "releaseTagPatternCheckAllBranchesWhen": {
241
+ "oneOf": [
242
+ {
243
+ "type": "boolean"
244
+ },
245
+ {
246
+ "type": "array",
247
+ "items": {
248
+ "type": "string"
249
+ }
250
+ }
251
+ ],
252
+ "description": "DEPRECATED: Use releaseTag.checkAllBranchesWhen instead. Will be removed in Nx 23."
253
+ },
254
+ "releaseTagPatternRequireSemver": {
255
+ "type": "boolean",
256
+ "description": "DEPRECATED: Use releaseTag.requireSemver instead. Will be removed in Nx 23."
257
+ },
258
+ "releaseTagPatternPreferDockerVersion": {
259
+ "type": ["boolean", "string"],
260
+ "enum": [true, false, "both"],
261
+ "description": "DEPRECATED: Use releaseTag.preferDockerVersion instead. Will be removed in Nx 23."
262
+ },
263
+ "releaseTagPatternStrictPreid": {
264
+ "$ref": "#/definitions/NxReleaseReleaseTagPatternStrictPreidConfiguration",
265
+ "description": "DEPRECATED: Use releaseTag.strictPreid instead. Will be removed in Nx 23."
266
+ },
267
+ "versionPlans": {
268
+ "oneOf": [
269
+ {
270
+ "$ref": "#/definitions/NxReleaseVersionPlansConfiguration"
271
+ },
272
+ {
273
+ "type": "boolean",
274
+ "description": "Enables using version plans as a specifier source for versioning and to determine changes for changelog generation."
275
+ }
276
+ ]
277
+ },
278
+ "docker": {
279
+ "oneOf": [
280
+ {
281
+ "type": "boolean",
282
+ "enum": [true],
283
+ "description": "Enable docker configuration with default settings. Warning: Docker support is experimental. Breaking changes may occur and not adhere to semver versioning. "
284
+ },
285
+ {
286
+ "$ref": "#/definitions/NxReleaseGroupDockerConfiguration"
287
+ }
288
+ ]
289
+ }
232
290
  },
233
- "docker": {
234
- "oneOf": [
235
- {
236
- "type": "boolean",
237
- "enum": [true],
238
- "description": "Enable docker configuration with default settings. Warning: Docker support is experimental. Breaking changes may occur and not adhere to semver versioning. "
239
- },
240
- {
241
- "$ref": "#/definitions/NxReleaseGroupDockerConfiguration"
242
- }
243
- ]
244
- }
245
- },
246
- "required": ["projects"]
291
+ "required": ["projects"]
292
+ }
247
293
  },
248
294
  "changelog": {
249
295
  "type": "object",
@@ -301,9 +347,46 @@
301
347
  }
302
348
  ]
303
349
  },
350
+ "releaseTag": {
351
+ "type": "object",
352
+ "description": "Configuration for release tag generation and matching.",
353
+ "properties": {
354
+ "pattern": {
355
+ "type": "string",
356
+ "description": "Optionally override the git/release tag pattern to use. This field is the source of truth for changelog generation and release tagging, as well as for conventional commits parsing. It supports interpolating the version as {version} and (if releasing independently or forcing project level version control system releases) the project name as {projectName} within the string. The default releaseTagPattern for fixed/unified releases is: \"v{version}\". The default releaseTagPattern for independent releases at the project level is: \"{projectName}@{version}\""
357
+ },
358
+ "checkAllBranchesWhen": {
359
+ "oneOf": [
360
+ {
361
+ "type": "boolean"
362
+ },
363
+ {
364
+ "type": "array",
365
+ "items": {
366
+ "type": "string"
367
+ }
368
+ }
369
+ ],
370
+ "description": "By default, we will try and resolve the latest match for the releaseTagPattern from the current branch, falling back to all branches if no match is found on the current branch. Setting this to true will cause us to ALWAYS check all branches for the latest match. Setting it to false will cause us to ONLY check the current branch for the latest match. Setting it to an array of strings will cause us to check all branches WHEN the current branch is one of the strings in the array. Glob patterns are supported."
371
+ },
372
+ "requireSemver": {
373
+ "type": "boolean",
374
+ "description": "Whether to require semver to be used for the release tag pattern. If set to false, the release tag pattern will not be checked for semver compliance."
375
+ },
376
+ "preferDockerVersion": {
377
+ "type": ["boolean", "string"],
378
+ "enum": [true, false, "both"],
379
+ "description": "Controls how docker versions are used relative to semver versions when creating git tags and changelog entries. Set to true to use only the docker version, false to use only the semver version, or 'both' to create tags and changelog entries for both docker and semver versions. By default, this is set to true when docker configuration is present, and false otherwise."
380
+ },
381
+ "strictPreid": {
382
+ "$ref": "#/definitions/NxReleaseReleaseTagPatternStrictPreidConfiguration"
383
+ }
384
+ },
385
+ "additionalProperties": false
386
+ },
304
387
  "releaseTagPattern": {
305
388
  "type": "string",
306
- "description": "Optionally override the git/release tag pattern to use. This field is the source of truth for changelog generation and release tagging, as well as for conventional commits parsing. It supports interpolating the version as {version} and (if releasing independently or forcing project level version control system releases) the project name as {projectName} within the string. The default releaseTagPattern for fixed/unified releases is: \"v{version}\". The default releaseTagPattern for independent releases at the project level is: \"{projectName}@{version}\""
389
+ "description": "DEPRECATED: Use releaseTag.pattern instead. Will be removed in Nx 23."
307
390
  },
308
391
  "releaseTagPatternCheckAllBranchesWhen": {
309
392
  "oneOf": [
@@ -317,14 +400,20 @@
317
400
  }
318
401
  }
319
402
  ],
320
- "description": "By default, we will try and resolve the latest match for the releaseTagPattern from the current branch, falling back to all branches if no match is found on the current branch. Setting this to true will cause us to ALWAYS check all branches for the latest match. Setting it to false will cause us to ONLY check the current branch for the latest match. Setting it to an array of strings will cause us to check all branches WHEN the current branch is one of the strings in the array. Glob patterns are supported."
403
+ "description": "DEPRECATED: Use releaseTag.checkAllBranchesWhen instead. Will be removed in Nx 23."
321
404
  },
322
405
  "releaseTagPatternRequireSemver": {
323
406
  "type": "boolean",
324
- "description": "Whether to require semver to be used for the release tag pattern. If set to false, the release tag pattern will not be checked for semver compliance."
407
+ "description": "DEPRECATED: Use releaseTag.requireSemver instead. Will be removed in Nx 23."
408
+ },
409
+ "releaseTagPatternPreferDockerVersion": {
410
+ "type": ["boolean", "string"],
411
+ "enum": [true, false, "both"],
412
+ "description": "DEPRECATED: Use releaseTag.preferDockerVersion instead. Will be removed in Nx 23."
325
413
  },
326
414
  "releaseTagPatternStrictPreid": {
327
- "$ref": "#/definitions/NxReleaseReleaseTagPatternStrictPreidConfiguration"
415
+ "$ref": "#/definitions/NxReleaseReleaseTagPatternStrictPreidConfiguration",
416
+ "description": "DEPRECATED: Use releaseTag.strictPreid instead. Will be removed in Nx 23."
328
417
  },
329
418
  "docker": {
330
419
  "oneOf": [
@@ -371,6 +460,85 @@
371
460
  }
372
461
  },
373
462
  "additionalProperties": false
463
+ },
464
+ "conformance": {
465
+ "type": "object",
466
+ "description": "Configuration for Nx Conformance",
467
+ "properties": {
468
+ "outputPath": {
469
+ "oneOf": [
470
+ {
471
+ "type": "string",
472
+ "description": "Path to write the conformance results to"
473
+ },
474
+ {
475
+ "type": "boolean",
476
+ "enum": [false],
477
+ "description": "Disable writing the conformance results to a file"
478
+ }
479
+ ],
480
+ "description": "Optional path to write the conformance results to, defaults to 'dist/conformance-result.json'. Set to false to disable writing the conformance results to a file."
481
+ },
482
+ "rules": {
483
+ "type": "array",
484
+ "description": "List of conformance rules to apply",
485
+ "items": {
486
+ "type": "object",
487
+ "properties": {
488
+ "rule": {
489
+ "type": "string",
490
+ "description": "Relative path to a local rule implementation, node_module path or nx-cloud rule ID for Nx Cloud Enterprise."
491
+ },
492
+ "options": {
493
+ "type": "object",
494
+ "description": "Rule specific configuration options.",
495
+ "additionalProperties": true
496
+ },
497
+ "projects": {
498
+ "type": "array",
499
+ "description": "The projects to apply this rule to. This property accepts an array of strings which can be project names, glob patterns, directories, tag references or anything else that is supported by the `--projects` filter. By default, the implied value is ['*'] (all projects). You can also use objects with 'matcher' and 'explanation' properties to document why specific projects are included or excluded.",
500
+ "items": {
501
+ "oneOf": [
502
+ {
503
+ "type": "string",
504
+ "description": "A project name, glob pattern, directory, tag reference, or any other valid project filter"
505
+ },
506
+ {
507
+ "type": "object",
508
+ "properties": {
509
+ "matcher": {
510
+ "type": "string",
511
+ "description": "A project name, glob pattern, directory, tag reference, or any other valid project filter"
512
+ },
513
+ "explanation": {
514
+ "type": "string",
515
+ "description": "An explanation to communicate to colleagues why this particular project or projects were included or excluded from the rule"
516
+ }
517
+ },
518
+ "required": ["matcher", "explanation"],
519
+ "additionalProperties": false
520
+ }
521
+ ]
522
+ }
523
+ },
524
+ "explanation": {
525
+ "type": "string",
526
+ "description": "Optional explanation field for users to be able to communicate to their colleagues why a particular rule is enabled and important to the workspace in question."
527
+ },
528
+ "status": {
529
+ "type": "string",
530
+ "enum": ["enforced", "evaluated", "disabled"],
531
+ "description": "Override the default status of the rule, which is 'enforced'. If set to 'evaluated', the rule will be reported as normal, but not enforced (will exit with code 0). If set to 'disabled', the rule will not be evaluated at all.",
532
+ "default": "enforced"
533
+ }
534
+ },
535
+ "required": ["rule"],
536
+ "additionalProperties": false
537
+ }
538
+ }
539
+ },
540
+ "required": ["rules"],
541
+ "additionalProperties": false
374
542
  }
375
543
  },
376
544
  "definitions": {
@@ -833,9 +1001,9 @@
833
1001
  },
834
1002
  "updateDependents": {
835
1003
  "type": "string",
836
- "enum": ["never", "auto"],
1004
+ "enum": ["never", "auto", "always"],
837
1005
  "default": "auto",
838
- "description": "When versioning independent projects, this controls whether to update their dependents (i.e. the things that depend on them). 'never' means no dependents will be updated (unless they happen to be versioned directly as well). 'auto' is the default and will cause dependents to be updated (a patch version bump) when a dependency is versioned."
1006
+ "description": "When versioning independent projects, this controls whether to update their dependents (i.e. the things that depend on them). 'never' means no dependents will be updated (unless they happen to be versioned directly as well). 'auto' is the default and will cause dependents to be updated (a patch version bump) when a dependency is versioned, as long as a group or projects filter is not applied that does not include them. 'always' will cause dependents to be updated (a patch version bump) when a dependency is versioned, even if they are not included in the group or projects filter."
839
1007
  },
840
1008
  "logUnchangedProjects": {
841
1009
  "type": "boolean",
@@ -3,7 +3,7 @@ export interface ConfigureAiAgentsOptions {
3
3
  agents?: string[];
4
4
  interactive?: boolean;
5
5
  verbose?: boolean;
6
- check?: boolean;
6
+ check?: boolean | 'outdated' | 'all';
7
7
  }
8
8
  export declare const yargsConfigureAiAgentsCommand: CommandModule<{}, ConfigureAiAgentsOptions>;
9
9
  //# sourceMappingURL=command-object.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"command-object.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/command-line/configure-ai-agents/command-object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAGtC,MAAM,WAAW,wBAAwB;IACvC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,eAAO,MAAM,6BAA6B,EAAE,aAAa,CACvD,EAAE,EACF,wBAAwB,CA6CzB,CAAC"}
1
+ {"version":3,"file":"command-object.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/command-line/configure-ai-agents/command-object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAGtC,MAAM,WAAW,wBAAwB;IACvC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,KAAK,CAAC;CACtC;AAED,eAAO,MAAM,6BAA6B,EAAE,aAAa,CACvD,EAAE,EACF,wBAAwB,CA2DzB,CAAC"}
@@ -18,14 +18,28 @@ exports.yargsConfigureAiAgentsCommand = {
18
18
  default: true,
19
19
  })
20
20
  .option('check', {
21
- type: 'boolean',
22
- description: 'Check if any configured agents are out of date and need to be updated. Does not make any changes.',
23
- default: false,
21
+ type: 'string',
22
+ description: 'Check agent configurations. Use --check or --check=outdated to check only configured agents, or --check=all to include unconfigured/partial configurations. Does not make any changes.',
23
+ coerce: (value) => {
24
+ // --check (no value)
25
+ if (value === '')
26
+ return 'outdated';
27
+ // --check=true
28
+ if (value === 'true')
29
+ return 'outdated';
30
+ // --no-check or --check=false
31
+ if (value === 'false')
32
+ return false;
33
+ // --check=all or --check=outdated
34
+ return value;
35
+ },
36
+ choices: ['outdated', 'all'],
24
37
  })
25
38
  .example('$0 configure-ai-agents', 'Interactively select AI agents to update and configure')
26
39
  .example('$0 configure-ai-agents --agents claude gemini', 'Prompts for updates and and configuration of Claude and Gemini AI agents')
27
40
  .example('$0 configure-ai-agents --check', 'Checks if any configured agents are out of date and need to be updated')
28
- .example('$0 configure-ai-agents --agents claude gemini --no-interactive', 'Configures and updates Claude and Gemini AI agents without prompts'),
41
+ .example('$0 configure-ai-agents --check=all', 'Checks if any agents are not configured, out of date or partially configured')
42
+ .example('$0 configure-ai-agents --agents claude gemini --no-interactive', 'Configures and updates Claude and Gemini AI agents without prompts'), // because of the coerce function
29
43
  handler: async (args) => {
30
44
  await (await Promise.resolve().then(() => require('./configure-ai-agents'))).configureAiAgentsHandler(args);
31
45
  },
@@ -1 +1 @@
1
- {"version":3,"file":"configure-ai-agents.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/command-line/configure-ai-agents/configure-ai-agents.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAI5D,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,wBAAwB,EAC9B,KAAK,UAAQ,GACZ,OAAO,CAAC,IAAI,CAAC,CA+Bf;AAED,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,IAAI,CAAC,CA2Mf"}
1
+ {"version":3,"file":"configure-ai-agents.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/command-line/configure-ai-agents/configure-ai-agents.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAI5D,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,wBAAwB,EAC9B,KAAK,UAAQ,GACZ,OAAO,CAAC,IAAI,CAAC,CA+Bf;AAED,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,IAAI,CAAC,CAyOf"}