nx 22.1.0-canary.20251030-b283663 → 22.1.0-canary.20251110-73ecb30

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 (59) hide show
  1. package/migrations.json +6 -0
  2. package/package.json +12 -11
  3. package/src/command-line/init/implementation/dot-nx/add-nx-scripts.d.ts +2 -0
  4. package/src/command-line/init/implementation/dot-nx/add-nx-scripts.d.ts.map +1 -1
  5. package/src/command-line/init/implementation/dot-nx/add-nx-scripts.js +11 -1
  6. package/src/command-line/init/init-v2.js +1 -1
  7. package/src/core/graph/main.js +1 -1
  8. package/src/daemon/client/client.d.ts +1 -0
  9. package/src/daemon/client/client.d.ts.map +1 -1
  10. package/src/daemon/client/client.js +18 -1
  11. package/src/devkit-internals.d.ts +1 -1
  12. package/src/devkit-internals.d.ts.map +1 -1
  13. package/src/devkit-internals.js +2 -1
  14. package/src/executors/run-commands/run-commands.impl.d.ts +1 -1
  15. package/src/executors/run-commands/run-commands.impl.d.ts.map +1 -1
  16. package/src/executors/run-commands/run-commands.impl.js +7 -4
  17. package/src/executors/run-commands/running-tasks.d.ts +4 -3
  18. package/src/executors/run-commands/running-tasks.d.ts.map +1 -1
  19. package/src/executors/run-commands/running-tasks.js +30 -9
  20. package/src/generators/internal-utils/format-changed-files-with-prettier-if-available.d.ts.map +1 -1
  21. package/src/generators/internal-utils/format-changed-files-with-prettier-if-available.js +5 -1
  22. package/src/hasher/hash-task.d.ts +1 -0
  23. package/src/hasher/hash-task.d.ts.map +1 -1
  24. package/src/hasher/hash-task.js +57 -0
  25. package/src/migrations/update-22-1-0/update-nx-wrapper.d.ts +3 -0
  26. package/src/migrations/update-22-1-0/update-nx-wrapper.d.ts.map +1 -0
  27. package/src/migrations/update-22-1-0/update-nx-wrapper.js +7 -0
  28. package/src/native/index.d.ts +101 -0
  29. package/src/native/native-bindings.js +1 -0
  30. package/src/native/nx.wasm32-wasi.wasm +0 -0
  31. package/src/plugins/js/project-graph/build-dependencies/target-project-locator.js +1 -1
  32. package/src/project-graph/plugins/get-plugins.d.ts.map +1 -1
  33. package/src/project-graph/plugins/get-plugins.js +4 -4
  34. package/src/project-graph/plugins/isolation/index.d.ts +1 -1
  35. package/src/project-graph/plugins/isolation/index.d.ts.map +1 -1
  36. package/src/project-graph/plugins/isolation/index.js +2 -2
  37. package/src/project-graph/plugins/isolation/plugin-pool.d.ts +1 -1
  38. package/src/project-graph/plugins/isolation/plugin-pool.d.ts.map +1 -1
  39. package/src/project-graph/plugins/isolation/plugin-pool.js +22 -2
  40. package/src/tasks-runner/create-task-graph.d.ts.map +1 -1
  41. package/src/tasks-runner/create-task-graph.js +4 -11
  42. package/src/tasks-runner/forked-process-task-runner.d.ts.map +1 -1
  43. package/src/tasks-runner/forked-process-task-runner.js +36 -4
  44. package/src/tasks-runner/is-tui-enabled.d.ts.map +1 -1
  45. package/src/tasks-runner/is-tui-enabled.js +0 -4
  46. package/src/tasks-runner/process-metrics-service.d.ts +54 -0
  47. package/src/tasks-runner/process-metrics-service.d.ts.map +1 -0
  48. package/src/tasks-runner/process-metrics-service.js +161 -0
  49. package/src/tasks-runner/pseudo-terminal.d.ts +1 -0
  50. package/src/tasks-runner/pseudo-terminal.d.ts.map +1 -1
  51. package/src/tasks-runner/pseudo-terminal.js +3 -0
  52. package/src/tasks-runner/running-tasks/node-child-process.d.ts.map +1 -1
  53. package/src/tasks-runner/task-orchestrator.d.ts.map +1 -1
  54. package/src/tasks-runner/task-orchestrator.js +3 -7
  55. package/src/tasks-runner/utils.d.ts +1 -0
  56. package/src/tasks-runner/utils.d.ts.map +1 -1
  57. package/src/tasks-runner/utils.js +8 -0
  58. package/src/utils/update-nxw.d.ts.map +1 -1
  59. package/src/utils/update-nxw.js +11 -0
@@ -19,6 +19,9 @@ let currentPluginsConfigurationHash;
19
19
  let loadedPlugins;
20
20
  let pendingPluginsPromise;
21
21
  let cleanupSpecifiedPlugins;
22
+ const loadingMethod = (plugin, root, index) => (0, enabled_1.isIsolationEnabled)()
23
+ ? (0, isolation_1.loadNxPluginInIsolation)(plugin, root, index)
24
+ : (0, in_process_loader_1.loadNxPlugin)(plugin, root);
22
25
  async function getPlugins(root = workspace_root_1.workspaceRoot) {
23
26
  const pluginsConfiguration = (0, nx_json_1.readNxJson)(root).plugins ?? [];
24
27
  const pluginsConfigurationHash = (0, file_hasher_1.hashObject)(pluginsConfiguration);
@@ -78,9 +81,6 @@ function cleanupPlugins() {
78
81
  /**
79
82
  * Stuff for generic loading
80
83
  */
81
- const loadingMethod = (0, enabled_1.isIsolationEnabled)()
82
- ? isolation_1.loadNxPluginInIsolation
83
- : in_process_loader_1.loadNxPlugin;
84
84
  async function loadDefaultNxPlugins(root = workspace_root_1.workspaceRoot) {
85
85
  performance.mark('loadDefaultNxPlugins:start');
86
86
  const plugins = getDefaultPlugins(root);
@@ -116,7 +116,7 @@ async function loadSpecifiedNxPlugins(plugins, root = workspace_root_1.workspace
116
116
  await Promise.all(plugins.map(async (plugin, index) => {
117
117
  const pluginPath = typeof plugin === 'string' ? plugin : plugin.plugin;
118
118
  performance.mark(`Load Nx Plugin: ${pluginPath} - start`);
119
- const [loadedPluginPromise, cleanup] = await loadingMethod(plugin, root);
119
+ const [loadedPluginPromise, cleanup] = await loadingMethod(plugin, root, index);
120
120
  cleanupFunctions.push(cleanup);
121
121
  const res = await loadedPluginPromise;
122
122
  res.index = index;
@@ -1,4 +1,4 @@
1
1
  import type { PluginConfiguration } from '../../../config/nx-json';
2
2
  import type { LoadedNxPlugin } from '../loaded-nx-plugin';
3
- export declare function loadNxPluginInIsolation(plugin: PluginConfiguration, root?: string): Promise<readonly [Promise<LoadedNxPlugin>, () => void]>;
3
+ export declare function loadNxPluginInIsolation(plugin: PluginConfiguration, root?: string, index?: number): Promise<readonly [Promise<LoadedNxPlugin>, () => void]>;
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nx/src/project-graph/plugins/isolation/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAG1D,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,mBAAmB,EAC3B,IAAI,SAAgB,GACnB,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,CAEzD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nx/src/project-graph/plugins/isolation/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAG1D,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,mBAAmB,EAC3B,IAAI,SAAgB,EACpB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,CAEzD"}
@@ -3,6 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.loadNxPluginInIsolation = loadNxPluginInIsolation;
4
4
  const workspace_root_1 = require("../../../utils/workspace-root");
5
5
  const plugin_pool_1 = require("./plugin-pool");
6
- async function loadNxPluginInIsolation(plugin, root = workspace_root_1.workspaceRoot) {
7
- return (0, plugin_pool_1.loadRemoteNxPlugin)(plugin, root);
6
+ async function loadNxPluginInIsolation(plugin, root = workspace_root_1.workspaceRoot, index) {
7
+ return (0, plugin_pool_1.loadRemoteNxPlugin)(plugin, root, index);
8
8
  }
@@ -1,4 +1,4 @@
1
1
  import { PluginConfiguration } from '../../../config/nx-json';
2
2
  import type { LoadedNxPlugin } from '../loaded-nx-plugin';
3
- export declare function loadRemoteNxPlugin(plugin: PluginConfiguration, root: string): Promise<[Promise<LoadedNxPlugin>, () => void]>;
3
+ export declare function loadRemoteNxPlugin(plugin: PluginConfiguration, root: string, index?: number): Promise<[Promise<LoadedNxPlugin>, () => void]>;
4
4
  //# sourceMappingURL=plugin-pool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-pool.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nx/src/project-graph/plugins/isolation/plugin-pool.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAK9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AA8C1D,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,mBAAmB,EAC3B,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,CA6DhD"}
1
+ {"version":3,"file":"plugin-pool.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nx/src/project-graph/plugins/isolation/plugin-pool.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAK9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AA8C1D,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,mBAAmB,EAC3B,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,CAuFhD"}
@@ -25,7 +25,7 @@ const MAX_MESSAGE_WAIT = process.env.NX_PLUGIN_NO_TIMEOUTS === 'true'
25
25
  2147483647
26
26
  : 1000 * 60 * MINUTES; // 10 minutes
27
27
  const nxPluginWorkerCache = (global['nxPluginWorkerCache'] ??= new Map());
28
- async function loadRemoteNxPlugin(plugin, root) {
28
+ async function loadRemoteNxPlugin(plugin, root, index) {
29
29
  const cacheKey = JSON.stringify({ plugin, root });
30
30
  if (nxPluginWorkerCache.has(cacheKey)) {
31
31
  return [nxPluginWorkerCache.get(cacheKey), () => { }];
@@ -33,6 +33,26 @@ async function loadRemoteNxPlugin(plugin, root) {
33
33
  const moduleName = typeof plugin === 'string' ? plugin : plugin.plugin;
34
34
  const { name, pluginPath, shouldRegisterTSTranspiler } = await (0, resolve_plugin_1.resolveNxPlugin)(moduleName, root, (0, installation_directory_1.getNxRequirePaths)(root));
35
35
  const { worker, socket } = await startPluginWorker();
36
+ // Register plugin worker as a subprocess of the main CLI
37
+ // This allows metrics collection when the daemon is not used
38
+ if (worker.pid) {
39
+ try {
40
+ const { isOnDaemon } = await Promise.resolve().then(() => require('../../../daemon/is-on-daemon'));
41
+ /**
42
+ * We can only register the plugin worker as a subprocess of the main CLI
43
+ * when the daemon is not used. Additionally, we can't explcitly register
44
+ * the plugin worker as a subprocess of the daemon, because when on the
45
+ * daemon, we'd get a different instance of the process metrics service.
46
+ */
47
+ if (!isOnDaemon()) {
48
+ const { getProcessMetricsService } = await Promise.resolve().then(() => require('../../../tasks-runner/process-metrics-service'));
49
+ getProcessMetricsService().registerMainCliSubprocess(worker.pid, `${name}${index !== undefined ? ` (${index})` : ''}`);
50
+ }
51
+ }
52
+ catch {
53
+ // Silently ignore - metrics collection is optional
54
+ }
55
+ }
36
56
  const pendingPromises = new Map();
37
57
  const exitHandler = createWorkerExitHandler(worker, pendingPromises);
38
58
  const cleanupFunction = () => {
@@ -271,7 +291,7 @@ async function startPluginWorker() {
271
291
  }
272
292
  : {}),
273
293
  };
274
- const ipcPath = (0, socket_utils_1.getPluginOsSocketPath)([process.pid, global.nxPluginWorkerCount++].join('-'));
294
+ const ipcPath = (0, socket_utils_1.getPluginOsSocketPath)([process.pid, global.nxPluginWorkerCount++, performance.now()].join('-'));
275
295
  const worker = (0, child_process_1.spawn)(process.execPath, [
276
296
  ...(isWorkerTypescript ? ['--require', 'ts-node/register'] : []),
277
297
  workerPath,
@@ -1 +1 @@
1
- {"version":3,"file":"create-task-graph.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/tasks-runner/create-task-graph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAMhF,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAOvE,qBAAa,YAAY;IAQrB,OAAO,CAAC,QAAQ,CAAC,uBAAuB;IACxC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAR/B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAqB;IAC1C,QAAQ,CAAC,KAAK,EAAE;QAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAM;IAC5C,QAAQ,CAAC,YAAY,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAM;IACtD,QAAQ,CAAC,sBAAsB,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAM;IAChE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAW;gBAGvB,uBAAuB,EAAE,kBAAkB,EAC3C,YAAY,EAAE,YAAY;IAY7C,YAAY,CACV,YAAY,EAAE,MAAM,EAAE,EACtB,OAAO,EAAE,MAAM,EAAE,EACjB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,uBAAuB,EAAE,OAAO,GAC/B,MAAM,EAAE;IAoFX,WAAW,CACT,IAAI,EAAE,IAAI,EACV,+BAA+B,EAAE,MAAM,EACvC,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,GAChB,IAAI;IAkDP,OAAO,CAAC,+BAA+B;IA2BvC,OAAO,CAAC,4BAA4B;IAmDpC,OAAO,CAAC,2BAA2B;IAyFnC,OAAO,CAAC,eAAe;IAOvB,UAAU,CACR,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,uBAAuB,EAChC,MAAM,EAAE,MAAM,EACd,qBAAqB,EAAE,MAAM,GAAG,SAAS,EACzC,SAAS,EAAE,MAAM,GAChB,IAAI;IAyCP,oBAAoB,CAClB,OAAO,EAAE,uBAAuB,EAChC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,GAAG,SAAS;CASpC;AAED,wBAAgB,eAAe,CAC7B,YAAY,EAAE,YAAY,EAC1B,uBAAuB,EAAE,kBAAkB,EAC3C,YAAY,EAAE,MAAM,EAAE,EACtB,OAAO,EAAE,MAAM,EAAE,EACjB,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,SAAS,EAAE,MAAM,EACjB,uBAAuB,GAAE,OAAe,GACvC,SAAS,CAgBX;AAED,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,cAAc,GAAG,SAAS,GACnC,kBAAkB,CAOpB;AAsBD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAAE,QAoBvE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAAE,EACvC,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EACpB,IAAI,GAAE,GAAG,CAAC,MAAM,CAAa,GAC5B,MAAM,EAAE,CAkBV"}
1
+ {"version":3,"file":"create-task-graph.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/tasks-runner/create-task-graph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAWhF,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAOvE,qBAAa,YAAY;IAQrB,OAAO,CAAC,QAAQ,CAAC,uBAAuB;IACxC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAR/B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAqB;IAC1C,QAAQ,CAAC,KAAK,EAAE;QAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAM;IAC5C,QAAQ,CAAC,YAAY,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAM;IACtD,QAAQ,CAAC,sBAAsB,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAM;IAChE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAW;gBAGvB,uBAAuB,EAAE,kBAAkB,EAC3C,YAAY,EAAE,YAAY;IAY7C,YAAY,CACV,YAAY,EAAE,MAAM,EAAE,EACtB,OAAO,EAAE,MAAM,EAAE,EACjB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,uBAAuB,EAAE,OAAO,GAC/B,MAAM,EAAE;IAoFX,WAAW,CACT,IAAI,EAAE,IAAI,EACV,+BAA+B,EAAE,MAAM,EACvC,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,GAChB,IAAI;IAkDP,OAAO,CAAC,+BAA+B;IA2BvC,OAAO,CAAC,4BAA4B;IAmDpC,OAAO,CAAC,2BAA2B;IAyFnC,OAAO,CAAC,eAAe;IAOvB,UAAU,CACR,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,uBAAuB,EAChC,MAAM,EAAE,MAAM,EACd,qBAAqB,EAAE,MAAM,GAAG,SAAS,EACzC,SAAS,EAAE,MAAM,GAChB,IAAI;IAyCP,oBAAoB,CAClB,OAAO,EAAE,uBAAuB,EAChC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,GAAG,SAAS;CASpC;AAED,wBAAgB,eAAe,CAC7B,YAAY,EAAE,YAAY,EAC1B,uBAAuB,EAAE,kBAAkB,EAC3C,YAAY,EAAE,MAAM,EAAE,EACtB,OAAO,EAAE,MAAM,EAAE,EACjB,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,SAAS,EAAE,MAAM,EACjB,uBAAuB,GAAE,OAAe,GACvC,SAAS,CAgBX;AAED,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,cAAc,GAAG,SAAS,GACnC,kBAAkB,CAOpB;AAsBD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAAE,QAoBvE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAAE,EACvC,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EACpB,IAAI,GAAE,GAAG,CAAC,MAAM,CAAa,GAC5B,MAAM,EAAE,CAkBV"}
@@ -33,7 +33,7 @@ class ProcessTasks {
33
33
  const project = this.projectGraph.nodes[projectName];
34
34
  if (targets.length === 1 || project.data.targets[target]) {
35
35
  const resolvedConfiguration = this.resolveConfiguration(project, target, configuration);
36
- const id = createTaskId(projectName, target, resolvedConfiguration);
36
+ const id = (0, utils_1.createTaskId)(projectName, target, resolvedConfiguration);
37
37
  const task = this.createTask(id, project, target, resolvedConfiguration, overrides);
38
38
  this.tasks[task.id] = task;
39
39
  this.dependencies[task.id] = [];
@@ -118,7 +118,7 @@ class ProcessTasks {
118
118
  const selfProject = this.projectGraph.nodes[projectName];
119
119
  if ((0, project_graph_utils_1.projectHasTarget)(selfProject, dependencyConfig.target)) {
120
120
  const resolvedConfiguration = this.resolveConfiguration(selfProject, dependencyConfig.target, configuration);
121
- const selfTaskId = createTaskId(selfProject.name, dependencyConfig.target, resolvedConfiguration);
121
+ const selfTaskId = (0, utils_1.createTaskId)(selfProject.name, dependencyConfig.target, resolvedConfiguration);
122
122
  if (!this.tasks[selfTaskId]) {
123
123
  const newTask = this.createTask(selfTaskId, selfProject, dependencyConfig.target, resolvedConfiguration, taskOverrides);
124
124
  this.tasks[selfTaskId] = newTask;
@@ -147,7 +147,7 @@ class ProcessTasks {
147
147
  continue;
148
148
  if ((0, project_graph_utils_1.projectHasTarget)(depProject, dependencyConfig.target)) {
149
149
  const resolvedConfiguration = this.resolveConfiguration(depProject, dependencyConfig.target, configuration);
150
- const depTargetId = createTaskId(depProject.name, dependencyConfig.target, resolvedConfiguration);
150
+ const depTargetId = (0, utils_1.createTaskId)(depProject.name, dependencyConfig.target, resolvedConfiguration);
151
151
  const depTargetConfiguration = this.projectGraph.nodes[depProject.name].data.targets[dependencyConfig.target];
152
152
  if (task.id !== depTargetId) {
153
153
  if (depTargetConfiguration.continuous) {
@@ -167,7 +167,7 @@ class ProcessTasks {
167
167
  }
168
168
  else {
169
169
  // Create a dummy task for task.target.project... which simulates if depProject had dependencyConfig.target
170
- const dummyId = createTaskId(depProject.name, task.target.project +
170
+ const dummyId = (0, utils_1.createTaskId)(depProject.name, task.target.project +
171
171
  task.target.target +
172
172
  '__' +
173
173
  dependencyConfig.target +
@@ -307,10 +307,3 @@ function createTaskOverrides(dependencyConfig, cliOverrides, sourceTask, project
307
307
  ? { ...optionsToForward, ...cliOverrides }
308
308
  : { ...optionsToForward, __overrides_unparsed__: [] };
309
309
  }
310
- function createTaskId(project, target, configuration) {
311
- let id = `${project}:${target}`;
312
- if (configuration) {
313
- id += `:${configuration}`;
314
- }
315
- return id;
316
- }
@@ -1 +1 @@
1
- {"version":3,"file":"forked-process-task-runner.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/tasks-runner/forked-process-task-runner.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAGnE,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAIzC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAkB,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAKvD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAO3D,qBAAa,uBAAuB;IAShC,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAT7B,OAAO,SAAgB;IAEvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6C;IACrE,OAAO,CAAC,SAAS,CAAyC;IAC1D,OAAO,CAAC,iBAAiB,CAA2B;IACpD,OAAO,CAAC,eAAe,CAA6B;gBAGjC,OAAO,EAAE,yBAAyB,EAClC,UAAU,EAAE,OAAO;IAGhC,IAAI;IAKG,mBAAmB,CAC9B,EAAE,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,EAAE,KAAK,EAClD,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,SAAS,EACxB,GAAG,EAAE,MAAM,CAAC,UAAU,GACrB,OAAO,CAAC,YAAY,CAAC;IAsCjB,qBAAqB;IASf,iBAAiB,CAC5B,IAAI,EAAE,IAAI,EACV,EACE,mBAAmB,EACnB,YAAY,EACZ,UAAU,EACV,SAAS,EACT,GAAG,GACJ,EAAE;QACD,mBAAmB,EAAE,MAAM,CAAC;QAC5B,YAAY,EAAE,OAAO,CAAC;QACtB,UAAU,EAAE,OAAO,CAAC;QACpB,SAAS,EAAE,SAAS,CAAC;QACrB,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;KACxB,GACA,OAAO,CAAC,WAAW,CAAC;IAgBV,WAAW,CACtB,IAAI,EAAE,IAAI,EACV,EACE,mBAAmB,EACnB,YAAY,EACZ,SAAS,EACT,GAAG,EACH,qBAAqB,GACtB,EAAE;QACD,mBAAmB,EAAE,MAAM,CAAC;QAC5B,YAAY,EAAE,OAAO,CAAC;QACtB,UAAU,EAAE,OAAO,CAAC;QACpB,SAAS,EAAE,SAAS,CAAC;QACrB,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;QACvB,qBAAqB,EAAE,OAAO,CAAC;KAChC,GACA,OAAO,CAAC,WAAW,GAAG,gBAAgB,CAAC;YAiC5B,oBAAoB;YAYpB,6BAA6B;IAyD3C,OAAO,CAAC,8BAA8B;IA2DtC,OAAO,CAAC,8BAA8B;IAkEtC,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO;IAO/B,OAAO,CAAC,0BAA0B;CAwCnC"}
1
+ {"version":3,"file":"forked-process-task-runner.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/tasks-runner/forked-process-task-runner.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAGnE,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAIzC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAkB,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAKvD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAQ3D,qBAAa,uBAAuB;IAShC,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAT7B,OAAO,SAAgB;IAEvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6C;IACrE,OAAO,CAAC,SAAS,CAAyC;IAC1D,OAAO,CAAC,iBAAiB,CAA2B;IACpD,OAAO,CAAC,eAAe,CAA6B;gBAGjC,OAAO,EAAE,yBAAyB,EAClC,UAAU,EAAE,OAAO;IAGhC,IAAI;IAKG,mBAAmB,CAC9B,EAAE,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,EAAE,KAAK,EAClD,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,SAAS,EACxB,GAAG,EAAE,MAAM,CAAC,UAAU,GACrB,OAAO,CAAC,YAAY,CAAC;IAiDjB,qBAAqB;IASf,iBAAiB,CAC5B,IAAI,EAAE,IAAI,EACV,EACE,mBAAmB,EACnB,YAAY,EACZ,UAAU,EACV,SAAS,EACT,GAAG,GACJ,EAAE;QACD,mBAAmB,EAAE,MAAM,CAAC;QAC5B,YAAY,EAAE,OAAO,CAAC;QACtB,UAAU,EAAE,OAAO,CAAC;QACpB,SAAS,EAAE,SAAS,CAAC;QACrB,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;KACxB,GACA,OAAO,CAAC,WAAW,CAAC;IAgBV,WAAW,CACtB,IAAI,EAAE,IAAI,EACV,EACE,mBAAmB,EACnB,YAAY,EACZ,SAAS,EACT,GAAG,EACH,qBAAqB,GACtB,EAAE;QACD,mBAAmB,EAAE,MAAM,CAAC;QAC5B,YAAY,EAAE,OAAO,CAAC;QACtB,UAAU,EAAE,OAAO,CAAC;QACpB,SAAS,EAAE,SAAS,CAAC;QACrB,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;QACvB,qBAAqB,EAAE,OAAO,CAAC;KAChC,GACA,OAAO,CAAC,WAAW,GAAG,gBAAgB,CAAC;YAiC5B,oBAAoB;YAYpB,6BAA6B;IAkE3C,OAAO,CAAC,8BAA8B;IAmEtC,OAAO,CAAC,8BAA8B;IA2EtC,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO;IAO/B,OAAO,CAAC,0BAA0B;CAwCnC"}
@@ -13,6 +13,7 @@ const exit_codes_1 = require("../utils/exit-codes");
13
13
  const node_child_process_1 = require("./running-tasks/node-child-process");
14
14
  const batch_process_1 = require("./running-tasks/batch-process");
15
15
  const native_1 = require("../native");
16
+ const process_metrics_service_1 = require("./process-metrics-service");
16
17
  const forkScript = (0, path_1.join)(__dirname, './fork.js');
17
18
  const workerPath = (0, path_1.join)(__dirname, './batch/run-batch.js');
18
19
  class ForkedProcessTaskRunner {
@@ -40,8 +41,17 @@ class ForkedProcessTaskRunner {
40
41
  }
41
42
  const p = (0, child_process_1.fork)(workerPath, {
42
43
  stdio: ['inherit', 'inherit', 'inherit', 'ipc'],
43
- env,
44
+ env: {
45
+ ...env,
46
+ NX_FORKED_TASK_EXECUTOR: 'true',
47
+ },
44
48
  });
49
+ // Register batch worker process with all tasks
50
+ if (p.pid) {
51
+ const batchId = `${executorName}-${p.pid}`;
52
+ const taskIds = Object.keys(batchTaskGraph.tasks);
53
+ (0, process_metrics_service_1.getProcessMetricsService)().registerBatch(batchId, taskIds, p.pid);
54
+ }
45
55
  const cp = new batch_process_1.BatchProcess(p, executorName);
46
56
  this.processes.add(cp);
47
57
  cp.onExit(() => {
@@ -124,10 +134,18 @@ class ForkedProcessTaskRunner {
124
134
  const p = await pseudoTerminal.fork(childId, forkScript, {
125
135
  cwd: process.cwd(),
126
136
  execArgv: process.execArgv,
127
- jsEnv: env,
137
+ jsEnv: {
138
+ ...env,
139
+ NX_FORKED_TASK_EXECUTOR: 'true',
140
+ },
128
141
  quiet: !streamOutput,
129
142
  commandLabel: `nx run ${task.id}`,
130
143
  });
144
+ // Register forked process for metrics collection
145
+ const pid = p.getPid();
146
+ if (pid) {
147
+ (0, process_metrics_service_1.getProcessMetricsService)().registerTaskProcess(task.id, pid);
148
+ }
131
149
  p.send({
132
150
  targetDescription: task.target,
133
151
  overrides: task.overrides,
@@ -160,8 +178,15 @@ class ForkedProcessTaskRunner {
160
178
  }
161
179
  const p = (0, child_process_1.fork)(this.cliPath, {
162
180
  stdio: ['inherit', 'pipe', 'pipe', 'ipc'],
163
- env,
181
+ env: {
182
+ ...env,
183
+ NX_FORKED_TASK_EXECUTOR: 'true',
184
+ },
164
185
  });
186
+ // Register forked process for metrics collection
187
+ if (p.pid) {
188
+ (0, process_metrics_service_1.getProcessMetricsService)().registerTaskProcess(task.id, p.pid);
189
+ }
165
190
  // Send message to run the executor
166
191
  p.send({
167
192
  targetDescription: task.target,
@@ -196,8 +221,15 @@ class ForkedProcessTaskRunner {
196
221
  }
197
222
  const p = (0, child_process_1.fork)(this.cliPath, {
198
223
  stdio: ['inherit', 'inherit', 'inherit', 'ipc'],
199
- env,
224
+ env: {
225
+ ...env,
226
+ NX_FORKED_TASK_EXECUTOR: 'true',
227
+ },
200
228
  });
229
+ // Register forked process for metrics collection
230
+ if (p.pid) {
231
+ (0, process_metrics_service_1.getProcessMetricsService)().registerTaskProcess(task.id, p.pid);
232
+ }
201
233
  const cp = new node_child_process_1.NodeChildProcessWithDirectOutput(p, temporaryOutputPath);
202
234
  this.processes.add(cp);
203
235
  // Send message to run the executor
@@ -1 +1 @@
1
- {"version":3,"file":"is-tui-enabled.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/tasks-runner/is-tui-enabled.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAIrD;;GAEG;AACH,wBAAgB,YAAY,YAE3B;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,mBAAmB,EAC3B,MAAM,EAAE,MAAM,EACd,mBAAmB,UAAsD,WAkE1E"}
1
+ {"version":3,"file":"is-tui-enabled.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/tasks-runner/is-tui-enabled.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAIrD;;GAEG;AACH,wBAAgB,YAAY,YAE3B;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,mBAAmB,EAC3B,MAAM,EAAE,MAAM,EACd,mBAAmB,UAAsD,WA8D1E"}
@@ -23,7 +23,6 @@ function isTuiEnabled() {
23
23
  */
24
24
  function shouldUseTui(nxJson, nxArgs, skipCapabilityCheck = process.env.NX_TUI_SKIP_CAPABILITY_CHECK === 'true') {
25
25
  // If the current terminal/environment is not capable of displaying the TUI, we don't run it
26
- const isWindows = process.platform === 'win32';
27
26
  const isCapable = skipCapabilityCheck || (process.stderr.isTTY && isUnicodeSupported());
28
27
  if (typeof nxArgs.tui === 'boolean') {
29
28
  if (nxArgs.tui && !isCapable) {
@@ -57,9 +56,6 @@ function shouldUseTui(nxJson, nxArgs, skipCapabilityCheck = process.env.NX_TUI_S
57
56
  (0, is_ci_1.isCI)() ||
58
57
  // Interactive TUI doesn't make sense in an AI agent context
59
58
  (0, native_1.isAiAgent)() ||
60
- // TODO(@JamesHenry): Remove this check once Windows issues are fixed.
61
- // Windows is not working well right now, temporarily disable it on Windows even if it has been specified as enabled
62
- isWindows ||
63
59
  // WASM needs further testing
64
60
  native_1.IS_WASM) {
65
61
  return false;
@@ -0,0 +1,54 @@
1
+ import { ProcessMetadata, ProcessMetrics, ProcessTreeMetrics, ProcessMetricsSnapshot, BatchMetricsSnapshot, MetricsUpdate, SystemInfo } from '../native';
2
+ export type { ProcessMetadata, ProcessMetrics, ProcessTreeMetrics, ProcessMetricsSnapshot, BatchMetricsSnapshot, MetricsUpdate, SystemInfo, };
3
+ export type MetricsCallback = (event: MetricsUpdate) => void;
4
+ /**
5
+ * Simplified service providing subscription-based access to Rust metrics collector
6
+ * Manages singleton access pattern for metrics collection during execution of tasks and CLI commands
7
+ * All methods handle errors internally to ensure metrics collection never breaks task execution
8
+ */
9
+ declare class ProcessMetricsService {
10
+ private collector;
11
+ private cleanupRegistered;
12
+ constructor();
13
+ /**
14
+ * Register signal handlers for graceful shutdown
15
+ * Ensures collection thread is stopped cleanly on Ctrl+C or process termination
16
+ */
17
+ private registerCleanupHandlers;
18
+ /**
19
+ * Subscribe to push-based metrics notifications
20
+ * Collection starts automatically on first subscription (lazy start)
21
+ */
22
+ subscribe(callback: MetricsCallback): void;
23
+ /**
24
+ * Register a process for a task - creates anchor for discovery
25
+ * This is the core integration point - called from RunningTask constructors
26
+ */
27
+ registerTaskProcess(taskId: string, pid: number): void;
28
+ /**
29
+ * Register a batch with multiple tasks sharing a worker
30
+ */
31
+ registerBatch(batchId: string, taskIds: string[], pid: number): void;
32
+ /**
33
+ * Register the daemon process
34
+ */
35
+ registerDaemonProcess(pid: number): void;
36
+ /**
37
+ * Register a subprocess of the main CLI (e.g., plugin worker)
38
+ */
39
+ registerMainCliSubprocess(pid: number, alias?: string): void;
40
+ /**
41
+ * Get system information (CPU cores and total memory)
42
+ */
43
+ getSystemInfo(): SystemInfo | null;
44
+ /**
45
+ * Stop collection and cleanup
46
+ */
47
+ shutdown(): void;
48
+ }
49
+ /**
50
+ * Get or create the singleton ProcessMetricsService instance
51
+ * Lazy initialization - service only starts when first accessed
52
+ */
53
+ export declare function getProcessMetricsService(): ProcessMetricsService;
54
+ //# sourceMappingURL=process-metrics-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-metrics-service.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/tasks-runner/process-metrics-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,aAAa,EACb,UAAU,EACX,MAAM,WAAW,CAAC;AAGnB,YAAY,EACV,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,aAAa,EACb,UAAU,GACX,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;AAE7D;;;;GAIG;AACH,cAAM,qBAAqB;IACzB,OAAO,CAAC,SAAS,CAAwC;IACzD,OAAO,CAAC,iBAAiB,CAAS;;IAmBlC;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAe/B;;;OAGG;IACH,SAAS,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IA+B1C;;;OAGG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAQtD;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAQpE;;OAEG;IACH,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAQxC;;OAEG;IACH,yBAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAQ5D;;OAEG;IACH,aAAa,IAAI,UAAU,GAAG,IAAI;IASlC;;OAEG;IACH,QAAQ,IAAI,IAAI;CAOjB;AAOD;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,qBAAqB,CAKhE"}
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getProcessMetricsService = getProcessMetricsService;
4
+ const native_1 = require("../native");
5
+ const cache_1 = require("../daemon/cache");
6
+ /**
7
+ * Simplified service providing subscription-based access to Rust metrics collector
8
+ * Manages singleton access pattern for metrics collection during execution of tasks and CLI commands
9
+ * All methods handle errors internally to ensure metrics collection never breaks task execution
10
+ */
11
+ class ProcessMetricsService {
12
+ constructor() {
13
+ this.collector = null;
14
+ this.cleanupRegistered = false;
15
+ try {
16
+ this.collector = new native_1.ProcessMetricsCollector();
17
+ // Register main nx process as CLI
18
+ this.collector.registerMainCliProcess(process.pid);
19
+ // Register daemon process if available
20
+ const daemonPid = (0, cache_1.getDaemonProcessIdSync)();
21
+ if (daemonPid) {
22
+ this.collector.registerDaemonProcess(daemonPid);
23
+ }
24
+ }
25
+ catch {
26
+ // Silent failure - metrics collection is optional and should never break task execution
27
+ }
28
+ }
29
+ /**
30
+ * Register signal handlers for graceful shutdown
31
+ * Ensures collection thread is stopped cleanly on Ctrl+C or process termination
32
+ */
33
+ registerCleanupHandlers() {
34
+ const cleanup = () => {
35
+ try {
36
+ this.shutdown();
37
+ }
38
+ catch {
39
+ // Silent failure during cleanup
40
+ }
41
+ };
42
+ // Handle various exit scenarios
43
+ process.on('SIGINT', cleanup);
44
+ process.on('SIGTERM', cleanup);
45
+ process.on('exit', cleanup);
46
+ }
47
+ /**
48
+ * Subscribe to push-based metrics notifications
49
+ * Collection starts automatically on first subscription (lazy start)
50
+ */
51
+ subscribe(callback) {
52
+ if (!this.collector) {
53
+ return;
54
+ }
55
+ try {
56
+ // Start collection on first subscription (idempotent - safe to call multiple times)
57
+ this.collector.startCollection();
58
+ // Register cleanup handlers on first successful start
59
+ // If startCollection() threw, we never reach this line
60
+ if (!this.cleanupRegistered) {
61
+ this.registerCleanupHandlers();
62
+ this.cleanupRegistered = true;
63
+ }
64
+ // Wrap the user's callback to adapt from error-first pattern (err, data) => void
65
+ // to the simple pattern (event) => void that users expect
66
+ // The Rust side uses CalleeHandled which sends (null, data) on success
67
+ this.collector.subscribe((err, event) => {
68
+ if (err) {
69
+ // Silently ignore errors - metrics collection is optional
70
+ return;
71
+ }
72
+ callback(event);
73
+ });
74
+ }
75
+ catch {
76
+ // Silent failure - metrics collection is optional
77
+ }
78
+ }
79
+ /**
80
+ * Register a process for a task - creates anchor for discovery
81
+ * This is the core integration point - called from RunningTask constructors
82
+ */
83
+ registerTaskProcess(taskId, pid) {
84
+ try {
85
+ this.collector?.registerTaskProcess(taskId, pid);
86
+ }
87
+ catch {
88
+ // Silent failure - metrics collection is optional
89
+ }
90
+ }
91
+ /**
92
+ * Register a batch with multiple tasks sharing a worker
93
+ */
94
+ registerBatch(batchId, taskIds, pid) {
95
+ try {
96
+ this.collector?.registerBatch(batchId, taskIds, pid);
97
+ }
98
+ catch {
99
+ // Silent failure - metrics collection is optional
100
+ }
101
+ }
102
+ /**
103
+ * Register the daemon process
104
+ */
105
+ registerDaemonProcess(pid) {
106
+ try {
107
+ this.collector?.registerDaemonProcess(pid);
108
+ }
109
+ catch {
110
+ // Silent failure - metrics collection is optional
111
+ }
112
+ }
113
+ /**
114
+ * Register a subprocess of the main CLI (e.g., plugin worker)
115
+ */
116
+ registerMainCliSubprocess(pid, alias) {
117
+ try {
118
+ this.collector?.registerMainCliSubprocess(pid, alias);
119
+ }
120
+ catch {
121
+ // Silent failure - metrics collection is optional
122
+ }
123
+ }
124
+ /**
125
+ * Get system information (CPU cores and total memory)
126
+ */
127
+ getSystemInfo() {
128
+ try {
129
+ return this.collector?.getSystemInfo();
130
+ }
131
+ catch {
132
+ // Silent failure - metrics collection is optional
133
+ return null;
134
+ }
135
+ }
136
+ /**
137
+ * Stop collection and cleanup
138
+ */
139
+ shutdown() {
140
+ try {
141
+ this.collector?.stopCollection();
142
+ }
143
+ catch {
144
+ // Silent failure during cleanup
145
+ }
146
+ }
147
+ }
148
+ /**
149
+ * Singleton instance (lazily initialized)
150
+ */
151
+ let instance = null;
152
+ /**
153
+ * Get or create the singleton ProcessMetricsService instance
154
+ * Lazy initialization - service only starts when first accessed
155
+ */
156
+ function getProcessMetricsService() {
157
+ if (!instance) {
158
+ instance = new ProcessMetricsService();
159
+ }
160
+ return instance;
161
+ }
@@ -44,6 +44,7 @@ export declare class PseudoTtyProcess implements RunningTask {
44
44
  }>;
45
45
  onExit(callback: (code: number) => void): void;
46
46
  onOutput(callback: (message: string) => void): void;
47
+ getPid(): number | undefined;
47
48
  kill(s?: NodeJS.Signals): void;
48
49
  getParserAndWriter(): import("../native").ExternalObject<[ParserArc, WriterArc]>;
49
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pseudo-terminal.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/tasks-runner/pseudo-terminal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG7C,OAAO,EAAE,YAAY,EAAW,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAS3D,wBAAgB,oBAAoB,CAAC,gBAAgB,GAAE,OAAe,kBASrE;AAGD,qBAAa,cAAc;IAcb,OAAO,CAAC,kBAAkB;IAbtC,OAAO,CAAC,aAAa,CAEnB;IACF,OAAO,CAAC,SAAS,CAA2C;IAE5D,OAAO,CAAC,WAAW,CAAkB;IAErC,OAAO,CAAC,cAAc,CAA+B;IAErD,MAAM,CAAC,WAAW;gBAIE,kBAAkB,EAAE,kBAAkB;IAEpD,IAAI;IAQV,QAAQ,CAAC,IAAI,EAAE,MAAM;IAWrB,UAAU,CACR,OAAO,EAAE,MAAM,EACf,EACE,GAAG,EACH,QAAQ,EACR,KAAK,EACL,KAAK,EACL,GAAG,GACJ,GAAE;QACD,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/B,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,GAAG,CAAC,EAAE,OAAO,CAAC;KACV;IAiBF,IAAI,CACR,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,EACd,EACE,GAAG,EACH,QAAQ,EACR,KAAK,EACL,KAAK,EACL,YAAY,GACb,EAAE;QACD,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/B,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB;IA2BH,qBAAqB,CAAC,OAAO,EAAE,YAAY;IAI3C,qBAAqB,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI;CAGhE;AAED,qBAAa,gBAAiB,YAAW,WAAW;IASzC,kBAAkB,EAAE,kBAAkB;IAC7C,OAAO,CAAC,YAAY;IATtB,OAAO,UAAQ;IAEf,OAAO,CAAC,aAAa,CAAqC;IAC1D,OAAO,CAAC,eAAe,CAAuC;IAE9D,OAAO,CAAC,cAAc,CAAM;gBAGnB,kBAAkB,EAAE,kBAAkB,EACrC,YAAY,EAAE,YAAY;IAiB9B,UAAU,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;IAQrE,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAI9C,QAAQ,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAInD,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI;IAa9B,kBAAkB;CAGnB;AAED,qBAAa,wBAAyB,SAAQ,gBAAgB;IAEnD,kBAAkB,EAAE,kBAAkB;IAE7C,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,SAAS;gBAHV,kBAAkB,EAAE,kBAAkB,EAC7C,aAAa,EAAE,YAAY,EACnB,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,eAAe;IAKpC,IAAI,CAAC,OAAO,EAAE,YAAY;CAG3B"}
1
+ {"version":3,"file":"pseudo-terminal.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/tasks-runner/pseudo-terminal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG7C,OAAO,EAAE,YAAY,EAAW,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAS3D,wBAAgB,oBAAoB,CAAC,gBAAgB,GAAE,OAAe,kBASrE;AAGD,qBAAa,cAAc;IAcb,OAAO,CAAC,kBAAkB;IAbtC,OAAO,CAAC,aAAa,CAEnB;IACF,OAAO,CAAC,SAAS,CAA2C;IAE5D,OAAO,CAAC,WAAW,CAAkB;IAErC,OAAO,CAAC,cAAc,CAA+B;IAErD,MAAM,CAAC,WAAW;gBAIE,kBAAkB,EAAE,kBAAkB;IAEpD,IAAI;IAQV,QAAQ,CAAC,IAAI,EAAE,MAAM;IAWrB,UAAU,CACR,OAAO,EAAE,MAAM,EACf,EACE,GAAG,EACH,QAAQ,EACR,KAAK,EACL,KAAK,EACL,GAAG,GACJ,GAAE;QACD,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/B,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,GAAG,CAAC,EAAE,OAAO,CAAC;KACV;IAiBF,IAAI,CACR,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,EACd,EACE,GAAG,EACH,QAAQ,EACR,KAAK,EACL,KAAK,EACL,YAAY,GACb,EAAE;QACD,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/B,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB;IA2BH,qBAAqB,CAAC,OAAO,EAAE,YAAY;IAI3C,qBAAqB,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI;CAGhE;AAED,qBAAa,gBAAiB,YAAW,WAAW;IASzC,kBAAkB,EAAE,kBAAkB;IAC7C,OAAO,CAAC,YAAY;IATtB,OAAO,UAAQ;IAEf,OAAO,CAAC,aAAa,CAAqC;IAC1D,OAAO,CAAC,eAAe,CAAuC;IAE9D,OAAO,CAAC,cAAc,CAAM;gBAGnB,kBAAkB,EAAE,kBAAkB,EACrC,YAAY,EAAE,YAAY;IAiB9B,UAAU,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;IAQrE,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAI9C,QAAQ,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAInD,MAAM,IAAI,MAAM,GAAG,SAAS;IAI5B,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI;IAa9B,kBAAkB;CAGnB;AAED,qBAAa,wBAAyB,SAAQ,gBAAgB;IAEnD,kBAAkB,EAAE,kBAAkB;IAE7C,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,SAAS;gBAHV,kBAAkB,EAAE,kBAAkB,EAC7C,aAAa,EAAE,YAAY,EACnB,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,eAAe;IAKpC,IAAI,CAAC,OAAO,EAAE,YAAY;CAG3B"}
@@ -104,6 +104,9 @@ class PseudoTtyProcess {
104
104
  onOutput(callback) {
105
105
  this.outputCallbacks.push(callback);
106
106
  }
107
+ getPid() {
108
+ return this.childProcess.getPid();
109
+ }
107
110
  kill(s) {
108
111
  if (this.isAlive) {
109
112
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"node-child-process.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/tasks-runner/running-tasks/node-child-process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE3D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAK7C,qBAAa,mCAAoC,YAAW,WAAW;IASnE,OAAO,CAAC,YAAY;IARtB,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,aAAa,CAChB;IACL,OAAO,CAAC,eAAe,CAAuC;IAE9D,OAAO,CAAC,QAAQ,CAAS;gBAGf,YAAY,EAAE,YAAY,EAClC,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE;QAAE,YAAY,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAwDrE,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,IAAI;IAIzD,QAAQ,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI;IAI/B,UAAU,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;IAcrE,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAK1B,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO;CAKpC;AA2DD,qBAAa,gCAAiC,YAAW,WAAW;IAQhE,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,mBAAmB;IAR7B,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,aAAa,CAAqD;IAE1E,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAS;gBAGf,YAAY,EAAE,YAAY,EAC1B,mBAAmB,EAAE,MAAM;IAqBrC,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAMjC,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,KAAK,IAAI;IAInD,UAAU,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;IAQrE,WAAW;IAMX,iBAAiB;IAKjB,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI;CAKpC"}
1
+ {"version":3,"file":"node-child-process.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/tasks-runner/running-tasks/node-child-process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE3D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAK7C,qBAAa,mCAAoC,YAAW,WAAW;IASnE,OAAO,CAAC,YAAY;IARtB,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,aAAa,CAChB;IACL,OAAO,CAAC,eAAe,CAAuC;IAE9D,OAAO,CAAC,QAAQ,CAAS;gBAGf,YAAY,EAAE,YAAY,EAClC,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE;QAAE,YAAY,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAyDrE,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,IAAI;IAIzD,QAAQ,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI;IAI/B,UAAU,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;IAcrE,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAK1B,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO;CAKpC;AA2DD,qBAAa,gCAAiC,YAAW,WAAW;IAQhE,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,mBAAmB;IAR7B,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,aAAa,CAAqD;IAE1E,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAS;gBAGf,YAAY,EAAE,YAAY,EAC1B,mBAAmB,EAAE,MAAM;IAqBrC,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAMjC,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,KAAK,IAAI;IAInD,UAAU,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;IAQrE,WAAW;IAMX,iBAAiB;IAKjB,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI;CAKpC"}
@@ -1 +1 @@
1
- {"version":3,"file":"task-orchestrator.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/tasks-runner/task-orchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"task-orchestrator.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/tasks-runner/task-orchestrator.ts"],"names":[],"mappings":"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"}
@@ -154,12 +154,8 @@ class TaskOrchestrator {
154
154
  return taskSpecificEnv;
155
155
  }
156
156
  async processScheduledBatch(batch) {
157
- await Promise.all(Object.values(batch.taskGraph.tasks).map(async (task) => {
158
- if (!task.hash) {
159
- await (0, hash_task_1.hashTask)(this.hasher, this.projectGraph, this.taskGraphForHashing, task, this.batchEnv, this.taskDetails);
160
- }
161
- await this.options.lifeCycle.scheduleTask(task);
162
- }));
157
+ await (0, hash_task_1.hashTasks)(this.hasher, this.projectGraph, batch.taskGraph, this.batchEnv, this.taskDetails);
158
+ await Promise.all(Object.values(batch.taskGraph.tasks).map((task) => this.options.lifeCycle.scheduleTask(task)));
163
159
  }
164
160
  processAllScheduledTasks() {
165
161
  const { scheduledTasks, scheduledBatches } = this.tasksSchedule.getAllScheduledTasks();
@@ -329,7 +325,7 @@ class TaskOrchestrator {
329
325
  };
330
326
  const runningTask = await (0, run_commands_impl_1.runCommands)(runCommandsOptions, {
331
327
  root: workspace_root_1.workspaceRoot, // only root is needed in runCommands
332
- });
328
+ }, task.id);
333
329
  this.runningRunCommandsTasks.set(task.id, runningTask);
334
330
  runningTask.onExit(() => {
335
331
  this.runningRunCommandsTasks.delete(task.id);
@@ -47,4 +47,5 @@ export declare function isCacheableTask(task: Task, options: {
47
47
  cacheableTargets?: string[] | null;
48
48
  }): boolean;
49
49
  export declare function unparse(options: Object): string[];
50
+ export declare function createTaskId(project: string, target: string, configuration: string | undefined): string;
50
51
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/tasks-runner/utils.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACvB,MAAM,uCAAuC,CAAC;AAe/C,MAAM,MAAM,gCAAgC,GAAG,sBAAsB,GAAG;IACtE,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAEF,wBAAgB,oBAAoB,CAClC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EACxD,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,sBAAsB,GAAG,MAAM,CAAC,EAAE,CAAC,EAC5E,YAAY,EAAE,YAAY,EAC1B,cAAc,EAAE,MAAM,EAAE,GACvB,gCAAgC,EAAE,GAAG,SAAS,CAehD;AAED,wBAAgB,mCAAmC,CACjD,UAAU,EAAE,MAAM,GAAG,sBAAsB,EAC3C,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,YAAY,EACnB,cAAc,EAAE,MAAM,EAAE,GACvB,gCAAgC,EAAE,CASpC;AAED,wBAAgB,iCAAiC,CAC/C,gBAAgB,EAAE,sBAAsB,EACxC,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,YAAY,GAClB,gCAAgC,CAalC;AAED,wBAAgB,iCAAiC,CAC/C,sBAAsB,EAAE,MAAM,GAAG,sBAAsB,EACvD,KAAK,EAAE,YAAY,GAClB,sBAAsB,CAwBxB;AA4BD,wBAAgB,iCAAiC,CAC/C,gBAAgB,EAAE,gCAAgC,EAClD,cAAc,EAAE,MAAM,EAAE,GACvB,gCAAgC,EAAE,CAepC;AAED,wBAAgB,oCAAoC,CAClD,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,GAChD;IAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAkBzC;AAED,wBAAgB,UAAU,CACxB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,EAC1C,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,EACtB,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,YAO7B;AAED,wBAAgB,2CAA2C,CACzD,gBAAgB,EAAE,sBAAsB,GACvC,IAAI,CAAC,sBAAsB,EAAE,UAAU,CAAC,GAAG;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAuBnE;AAqCD,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,QAIhD;AAED,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,YA2B5E;AAED;;GAEG;AACH,wBAAgB,mCAAmC,CACjD,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,uBAAuB,GAC5B,MAAM,EAAE,CAAC;AACZ,wBAAgB,mCAAmC,CACjD,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,EAC7B,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,uBAAuB,EACtD,IAAI,EAAE,uBAAuB,GAC5B,MAAM,EAAE,CAAC;AAqEZ,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,MAAM,CAqB/D;AAsBD,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,YAAY,GACzB,mBAAmB,GAAG,SAAS,CAGjC;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,UAE5E;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,YAAY,GACzB,cAAc,GAAG;IAAE,UAAU,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,OAAO,CAAA;CAAE,CAUjE;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,YAAY,GACzB,YAAY,GAAG,IAAI,CAGrB;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,SAAS,EAChB,GAAG,EAAE,MAAM,EAAE,GACZ,SAAS,CAQX;AA0CD,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,SAAS,GACnB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAmB1B;AAED,wBAAgB,UAAU,WAEzB;AAED,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,IAAI,YAYxD;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,YAQtE;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,IAAI,EACV,iBAAiB,EAAE,MAAM,GAAG,IAAI,GAC/B,OAAO,CAQT;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,IAAI,EACV,OAAO,EAAE;IACP,mBAAmB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACtC,gBAAgB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CACpC,GACA,OAAO,CAWT;AAeD,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAEjD"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/tasks-runner/utils.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,7 @@ exports.getSerializedArgsForTask = getSerializedArgsForTask;
24
24
  exports.shouldStreamOutput = shouldStreamOutput;
25
25
  exports.isCacheableTask = isCacheableTask;
26
26
  exports.unparse = unparse;
27
+ exports.createTaskId = createTaskId;
27
28
  const minimatch_1 = require("minimatch");
28
29
  const node_path_1 = require("node:path");
29
30
  const posix_1 = require("node:path/posix");
@@ -406,3 +407,10 @@ function longRunningTask(task) {
406
407
  function unparse(options) {
407
408
  return (0, serialize_overrides_into_command_line_1.serializeOverridesIntoCommandLine)(options);
408
409
  }
410
+ function createTaskId(project, target, configuration) {
411
+ let id = `${project}:${target}`;
412
+ if (configuration) {
413
+ id += `:${configuration}`;
414
+ }
415
+ return id;
416
+ }