nx 22.5.0-beta.2 → 22.5.0-beta.4

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 (82) hide show
  1. package/README.md +3 -3
  2. package/package.json +13 -13
  3. package/src/ai/constants.d.ts +1 -0
  4. package/src/ai/constants.d.ts.map +1 -1
  5. package/src/ai/constants.js +4 -0
  6. package/src/ai/set-up-ai-agents/set-up-ai-agents.d.ts.map +1 -1
  7. package/src/ai/set-up-ai-agents/set-up-ai-agents.js +22 -0
  8. package/src/command-line/configure-ai-agents/configure-ai-agents.d.ts.map +1 -1
  9. package/src/command-line/configure-ai-agents/configure-ai-agents.js +77 -43
  10. package/src/command-line/nx-commands.js +1 -1
  11. package/src/command-line/release/changelog/version-plan-filtering.d.ts +6 -3
  12. package/src/command-line/release/changelog/version-plan-filtering.d.ts.map +1 -1
  13. package/src/command-line/release/changelog/version-plan-filtering.js +4 -3
  14. package/src/command-line/release/changelog.d.ts.map +1 -1
  15. package/src/command-line/release/changelog.js +11 -9
  16. package/src/command-line/release/utils/git.d.ts +3 -2
  17. package/src/command-line/release/utils/git.d.ts.map +1 -1
  18. package/src/command-line/release/utils/git.js +3 -69
  19. package/src/command-line/release/utils/release-graph.d.ts +10 -0
  20. package/src/command-line/release/utils/release-graph.d.ts.map +1 -1
  21. package/src/command-line/release/utils/release-graph.js +32 -1
  22. package/src/command-line/release/utils/repository-git-tags.d.ts +26 -0
  23. package/src/command-line/release/utils/repository-git-tags.d.ts.map +1 -0
  24. package/src/command-line/release/utils/repository-git-tags.js +125 -0
  25. package/src/command-line/release/utils/resolve-semver-specifier.d.ts +2 -1
  26. package/src/command-line/release/utils/resolve-semver-specifier.d.ts.map +1 -1
  27. package/src/command-line/release/utils/resolve-semver-specifier.js +2 -2
  28. package/src/command-line/release/utils/shared.d.ts +3 -2
  29. package/src/command-line/release/utils/shared.d.ts.map +1 -1
  30. package/src/command-line/release/utils/shared.js +4 -10
  31. package/src/command-line/release/version/derive-specifier-from-conventional-commits.d.ts +2 -1
  32. package/src/command-line/release/version/derive-specifier-from-conventional-commits.d.ts.map +1 -1
  33. package/src/command-line/release/version/derive-specifier-from-conventional-commits.js +2 -2
  34. package/src/command-line/release/version/release-group-processor.d.ts.map +1 -1
  35. package/src/command-line/release/version/release-group-processor.js +1 -1
  36. package/src/command-line/run/run-one.d.ts +1 -1
  37. package/src/command-line/run/run-one.d.ts.map +1 -1
  38. package/src/command-line/run/run-one.js +12 -9
  39. package/src/core/graph/main.js +1 -1
  40. package/src/daemon/client/client.js +4 -4
  41. package/src/daemon/server/server.d.ts.map +1 -1
  42. package/src/daemon/server/server.js +3 -2
  43. package/src/daemon/server/shutdown-utils.d.ts.map +1 -1
  44. package/src/daemon/server/shutdown-utils.js +1 -1
  45. package/src/executors/run-commands/running-tasks.d.ts.map +1 -1
  46. package/src/executors/run-commands/running-tasks.js +4 -4
  47. package/src/hasher/hash-task.d.ts +3 -3
  48. package/src/hasher/hash-task.d.ts.map +1 -1
  49. package/src/hasher/hash-task.js +24 -5
  50. package/src/hasher/native-task-hasher-impl.d.ts +1 -1
  51. package/src/hasher/native-task-hasher-impl.d.ts.map +1 -1
  52. package/src/hasher/native-task-hasher-impl.js +2 -2
  53. package/src/hasher/task-hasher.d.ts +4 -1
  54. package/src/hasher/task-hasher.d.ts.map +1 -1
  55. package/src/hasher/task-hasher.js +1 -0
  56. package/src/native/index.d.ts +18 -2
  57. package/src/native/nx.wasi.cjs +29 -28
  58. package/src/native/nx.wasm32-wasi.wasm +0 -0
  59. package/src/project-graph/plugins/get-plugins.d.ts.map +1 -1
  60. package/src/project-graph/plugins/get-plugins.js +81 -11
  61. package/src/project-graph/plugins/isolation/plugin-pool.d.ts.map +1 -1
  62. package/src/project-graph/plugins/isolation/plugin-pool.js +78 -27
  63. package/src/project-graph/plugins/isolation/plugin-worker.js +33 -17
  64. package/src/project-graph/project-graph.js +1 -1
  65. package/src/tasks-runner/cache.d.ts +2 -2
  66. package/src/tasks-runner/cache.d.ts.map +1 -1
  67. package/src/tasks-runner/cache.js +14 -11
  68. package/src/tasks-runner/forked-process-task-runner.d.ts +3 -3
  69. package/src/tasks-runner/forked-process-task-runner.d.ts.map +1 -1
  70. package/src/tasks-runner/forked-process-task-runner.js +12 -11
  71. package/src/tasks-runner/process-metrics-service.d.ts +2 -2
  72. package/src/tasks-runner/process-metrics-service.d.ts.map +1 -1
  73. package/src/tasks-runner/process-metrics-service.js +2 -2
  74. package/src/tasks-runner/run-command.d.ts.map +1 -1
  75. package/src/tasks-runner/task-io-service.d.ts +97 -0
  76. package/src/tasks-runner/task-io-service.d.ts.map +1 -0
  77. package/src/tasks-runner/task-io-service.js +146 -0
  78. package/src/utils/consume-messages-from-socket.d.ts.map +1 -1
  79. package/src/utils/consume-messages-from-socket.js +3 -1
  80. package/src/utils/promised-based-queue.d.ts +0 -7
  81. package/src/utils/promised-based-queue.d.ts.map +1 -1
  82. package/src/utils/promised-based-queue.js +0 -9
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getTaskIOService = getTaskIOService;
4
+ exports.registerTaskProcessStart = registerTaskProcessStart;
5
+ const process_metrics_service_1 = require("./process-metrics-service");
6
+ /**
7
+ * Service for tracking task process IDs and providing access to task IO information.
8
+ * Subscribes to ProcessMetricsService for PID discovery.
9
+ * IO information comes from hash inputs (populated during hashing).
10
+ * Output files are reported when tasks are stored to cache.
11
+ */
12
+ class TaskIOService {
13
+ constructor(projectGraph, taskGraph) {
14
+ // Used to call subscribers that were late to the party
15
+ this.taskToPids = new Map();
16
+ this.taskToInputs = new Map();
17
+ this.taskToOutputs = new Map();
18
+ // Subscription state
19
+ this.pidCallbacks = [];
20
+ this.taskInputCallbacks = [];
21
+ this.taskOutputsCallbacks = [];
22
+ // Project graph and task graph for resolving task information
23
+ this.projectGraph = null;
24
+ this.taskGraph = null;
25
+ if (projectGraph) {
26
+ this.projectGraph = projectGraph;
27
+ }
28
+ if (taskGraph) {
29
+ this.taskGraph = taskGraph;
30
+ }
31
+ }
32
+ /**
33
+ * Subscribe to task PID updates.
34
+ * Receives notifications when processes are added/removed from tasks.
35
+ */
36
+ subscribeToTaskPids(callback) {
37
+ this.pidCallbacks.push(callback);
38
+ // Emit current state to new subscriber
39
+ for (const [taskId, pid] of this.taskToPids) {
40
+ callback({
41
+ taskId,
42
+ pid,
43
+ });
44
+ }
45
+ }
46
+ /**
47
+ * Subscribe to hash inputs as they are computed.
48
+ * Called when a task's hash inputs become available.
49
+ */
50
+ subscribeToTaskInputs(callback) {
51
+ this.taskInputCallbacks.push(callback);
52
+ // Emit current state to new subscriber
53
+ for (const [, taskInputInfo] of this.taskToInputs) {
54
+ callback(taskInputInfo);
55
+ }
56
+ }
57
+ /**
58
+ * Subscribe to task outputs as they are stored to cache.
59
+ * Called when a task's output files are collected for caching.
60
+ */
61
+ subscribeToTaskOutputs(callback) {
62
+ this.taskOutputsCallbacks.push(callback);
63
+ // Emit current state to new subscriber
64
+ for (const [task, outputs] of this.taskToOutputs) {
65
+ callback({
66
+ taskId: task,
67
+ outputs: outputs,
68
+ });
69
+ }
70
+ }
71
+ /**
72
+ * Notify subscribers that hash inputs are available for a task.
73
+ * Called from the hasher when inputs are computed.
74
+ */
75
+ notifyTaskInputs(taskId, inputs) {
76
+ const taskInputInfo = {
77
+ taskId,
78
+ inputs,
79
+ };
80
+ this.taskToInputs.set(taskId, taskInputInfo);
81
+ for (const cb of this.taskInputCallbacks) {
82
+ try {
83
+ cb(taskInputInfo);
84
+ }
85
+ catch {
86
+ // Silent failure - don't let one callback break others
87
+ }
88
+ }
89
+ }
90
+ /**
91
+ * Notify subscribers that task outputs have been collected.
92
+ * Called from the cache when outputs are stored.
93
+ */
94
+ notifyTaskOutputs(taskId, outputs) {
95
+ this.taskToOutputs.set(taskId, outputs);
96
+ const update = {
97
+ taskId,
98
+ outputs,
99
+ };
100
+ for (const cb of this.taskOutputsCallbacks) {
101
+ try {
102
+ cb(update);
103
+ }
104
+ catch {
105
+ // Silent failure - don't let one callback break others
106
+ }
107
+ }
108
+ }
109
+ /**
110
+ * Registers a PID to a task and notifies subscribers.
111
+ * @param update The TaskPidUpdate containing taskId and pid.
112
+ */
113
+ notifyPidUpdate(update) {
114
+ this.taskToPids.set(update.taskId, update.pid);
115
+ for (const cb of this.pidCallbacks) {
116
+ try {
117
+ cb(update);
118
+ }
119
+ catch {
120
+ // Silent failure - don't let one callback break others
121
+ }
122
+ }
123
+ }
124
+ }
125
+ // Singleton
126
+ let instance = null;
127
+ /**
128
+ * Get or create the singleton TaskIOService instance.
129
+ * Optionally provide projectGraph and taskGraph to initialize with context.
130
+ */
131
+ function getTaskIOService(projectGraph, taskGraph) {
132
+ if (!instance) {
133
+ instance = new TaskIOService(projectGraph, taskGraph);
134
+ }
135
+ return instance;
136
+ }
137
+ /**
138
+ * Register a task process start with both IO and metrics services.
139
+ * This is the standard way to notify the system that a task process has started.
140
+ * Both services need to be notified together - TaskIOService for external subscribers
141
+ * and ProcessMetricsService for native resource monitoring.
142
+ */
143
+ function registerTaskProcessStart(taskId, pid) {
144
+ getTaskIOService().notifyPidUpdate({ taskId, pid });
145
+ (0, process_metrics_service_1.getProcessMetricsService)().registerTaskProcess(taskId, pid);
146
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"consume-messages-from-socket.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/utils/consume-messages-from-socket.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,eAAe,QACuB,CAAC;AAEpD,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,IAEnE,SAAI,UA4Bb;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAYtD"}
1
+ {"version":3,"file":"consume-messages-from-socket.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/utils/consume-messages-from-socket.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,eAAe,QACuB,CAAC;AAEpD,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,IAGnE,SAAI,UA4Bb;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAYtD"}
@@ -3,12 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MESSAGE_END_SEQ = void 0;
4
4
  exports.consumeMessagesFromSocket = consumeMessagesFromSocket;
5
5
  exports.isJsonMessage = isJsonMessage;
6
+ const string_decoder_1 = require("string_decoder");
6
7
  const VERY_END_CODE = 4;
7
8
  exports.MESSAGE_END_SEQ = 'NX_MSG_END' + String.fromCharCode(VERY_END_CODE);
8
9
  function consumeMessagesFromSocket(callback) {
9
10
  let message = '';
11
+ const decoder = new string_decoder_1.StringDecoder('utf8');
10
12
  return (data) => {
11
- const chunk = data.toString();
13
+ const chunk = decoder.write(data);
12
14
  message += chunk;
13
15
  // Check if accumulated message ends with MESSAGE_END_SEQ (not just the chunk)
14
16
  // This handles TCP packet fragmentation where MESSAGE_END_SEQ may be split across packets
@@ -3,12 +3,5 @@ export declare class PromisedBasedQueue {
3
3
  private promise;
4
4
  sendToQueue(fn: () => Promise<any>): Promise<any>;
5
5
  isEmpty(): boolean;
6
- /**
7
- * Used to decrement the internal counter representing the number of active promises in the queue.
8
- * This is useful for retrying a failed daemon message, as we want to be able to shut the daemon down
9
- * without marking the promise that represents the failed message as settled. To do so, we store
10
- * the promise in a separate variable and only resolve or reject it later.
11
- */
12
- decrementQueueCounter(): void;
13
6
  }
14
7
  //# sourceMappingURL=promised-based-queue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"promised-based-queue.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/utils/promised-based-queue.ts"],"names":[],"mappings":"AAAA,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,OAAO,CAAyB;IAExC,WAAW,CAAC,EAAE,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IA8BjD,OAAO;IAIP;;;;;OAKG;IACH,qBAAqB;CAGtB"}
1
+ {"version":3,"file":"promised-based-queue.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/utils/promised-based-queue.ts"],"names":[],"mappings":"AAAA,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,OAAO,CAAyB;IAExC,WAAW,CAAC,EAAE,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IA8BjD,OAAO;CAGR"}
@@ -39,14 +39,5 @@ class PromisedBasedQueue {
39
39
  isEmpty() {
40
40
  return this.counter === 0;
41
41
  }
42
- /**
43
- * Used to decrement the internal counter representing the number of active promises in the queue.
44
- * This is useful for retrying a failed daemon message, as we want to be able to shut the daemon down
45
- * without marking the promise that represents the failed message as settled. To do so, we store
46
- * the promise in a separate variable and only resolve or reject it later.
47
- */
48
- decrementQueueCounter() {
49
- this.counter--;
50
- }
51
42
  }
52
43
  exports.PromisedBasedQueue = PromisedBasedQueue;