@harperfast/harper 5.2.4 → 5.2.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 (50) hide show
  1. package/components/status/crossThread.ts +69 -44
  2. package/components/status/types.ts +1 -0
  3. package/dist/components/status/crossThread.d.ts +1 -0
  4. package/dist/components/status/crossThread.js +57 -41
  5. package/dist/components/status/crossThread.js.map +1 -1
  6. package/dist/components/status/types.d.ts +1 -0
  7. package/dist/resources/DatabaseTransaction.d.ts +28 -0
  8. package/dist/resources/DatabaseTransaction.js +110 -8
  9. package/dist/resources/DatabaseTransaction.js.map +1 -1
  10. package/dist/resources/ResourceInterface.d.ts +15 -0
  11. package/dist/resources/ResourceInterface.js.map +1 -1
  12. package/dist/resources/Table.js +3 -0
  13. package/dist/resources/Table.js.map +1 -1
  14. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.d.ts +11 -0
  15. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js +153 -51
  16. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js.map +1 -1
  17. package/dist/resources/transaction.js +3 -1
  18. package/dist/resources/transaction.js.map +1 -1
  19. package/dist/server/itc/serverHandlers.js +2 -1
  20. package/dist/server/itc/serverHandlers.js.map +1 -1
  21. package/dist/server/threads/manageThreads.d.ts +1 -0
  22. package/dist/server/threads/manageThreads.js +17 -2
  23. package/dist/server/threads/manageThreads.js.map +1 -1
  24. package/npm-shrinkwrap.json +2 -2
  25. package/package.json +1 -1
  26. package/resources/DESIGN.md +19 -18
  27. package/resources/DatabaseTransaction.ts +124 -15
  28. package/resources/ResourceInterface.ts +15 -0
  29. package/resources/Table.ts +3 -0
  30. package/resources/indexes/HierarchicalNavigableSmallWorld.ts +153 -54
  31. package/resources/transaction.ts +3 -1
  32. package/schema.graphql +8 -3
  33. package/server/itc/serverHandlers.js +2 -1
  34. package/server/threads/manageThreads.js +17 -2
  35. package/studio/web/assets/{Chat-BvOlYIhe.js → Chat-Lgj1d-8d.js} +1 -1
  36. package/studio/web/assets/{FloatingChat-fCJiJCH2.js → FloatingChat-jLWvR4kI.js} +3 -3
  37. package/studio/web/assets/{apiToken-bKwPv0uN.js → apiToken-DYI4DqWa.js} +1 -1
  38. package/studio/web/assets/{applications-BZ47njJ_.js → applications-DCmc9-lk.js} +1 -1
  39. package/studio/web/assets/{index-DF1fSnXV.js → index-CqbCnqsT.js} +4 -4
  40. package/studio/web/assets/{index.lazy-DWt8ubrr.js → index.lazy-BNqr3j0f.js} +3 -3
  41. package/studio/web/assets/{notifications-B5ZBOni1.js → notifications-Bb2cj14_.js} +1 -1
  42. package/studio/web/assets/{notifications-gVx0lA8H.js → notifications-DVlKonbI.js} +1 -1
  43. package/studio/web/assets/{profile-D7g0x28A.js → profile-BSQWfYfq.js} +1 -1
  44. package/studio/web/assets/{regions-DRkhlkiD.js → regions-Dk3g8bBF.js} +1 -1
  45. package/studio/web/assets/{setComponentFile-DQkkobG5.js → setComponentFile-DoITgNLb.js} +1 -1
  46. package/studio/web/assets/{setup-nf-EOheW.js → setup-CiEALLa7.js} +1 -1
  47. package/studio/web/assets/{status-B2tOM3RF.js → status-CK9tD-Nd.js} +1 -1
  48. package/studio/web/assets/{swagger-ui-react-UktCouQ0.js → swagger-ui-react-CxjCDFB-.js} +1 -1
  49. package/studio/web/assets/{useEntityRestURL-alqAn3dT.js → useEntityRestURL-Cy-0i1UZ.js} +1 -1
  50. package/studio/web/index.html +1 -1
@@ -6,7 +6,11 @@
6
6
  */
7
7
 
8
8
  import { sendItcEvent } from '../../server/threads/itc.js';
9
- import { getWorkerIndex, onMessageByType, getWorkerCount } from '../../server/threads/manageThreads.js';
9
+ import {
10
+ getWorkerIndex,
11
+ onMessageByType,
12
+ getEligibleBroadcastRecipientThreadIds,
13
+ } from '../../server/threads/manageThreads.js';
10
14
  import { ITC_EVENT_TYPES } from '../../utility/hdbTerms.ts';
11
15
  import { loggerWithTag } from '../../utility/logging/logger.ts';
12
16
  import { ComponentStatusRegistry } from './ComponentStatusRegistry.ts';
@@ -21,13 +25,27 @@ import {
21
25
  import { ITCError } from './errors.ts';
22
26
 
23
27
  const logger = loggerWithTag('componentStatus.crossThread');
28
+ const THREAD_IDENTITY_SEPARATOR = '#thread-';
29
+ const STATUS_PRIORITY = [
30
+ COMPONENT_STATUS_LEVELS.ERROR,
31
+ COMPONENT_STATUS_LEVELS.WARNING,
32
+ COMPONENT_STATUS_LEVELS.LOADING,
33
+ COMPONENT_STATUS_LEVELS.UNKNOWN,
34
+ COMPONENT_STATUS_LEVELS.HEALTHY,
35
+ ];
36
+
37
+ function stripThreadIdentity(statusKey: string): string {
38
+ const threadLabelStart = statusKey.lastIndexOf('@') + 1;
39
+ const identityIndex = statusKey.indexOf(THREAD_IDENTITY_SEPARATOR, threadLabelStart);
40
+ return identityIndex === -1 ? statusKey : statusKey.substring(0, identityIndex);
41
+ }
24
42
 
25
43
  /**
26
44
  * CrossThreadStatusCollector Class
27
45
  * Handles collection of component status from all worker threads
28
46
  */
29
47
  export class CrossThreadStatusCollector {
30
- private awaitingResponses = new Map<number, Array<WorkerComponentStatuses>>();
48
+ private awaitingResponses = new Map<number, Map<number, WorkerComponentStatuses>>();
31
49
  private responseCheckers = new Map<number, () => void>();
32
50
  private nextRequestId = 1;
33
51
  private listenerAttached = false;
@@ -53,8 +71,9 @@ export class CrossThreadStatusCollector {
53
71
 
54
72
  // Find the pending request by requestId
55
73
  const pendingResponses = this.awaitingResponses.get(message.requestId);
56
- if (pendingResponses) {
57
- pendingResponses.push({
74
+ if (pendingResponses && typeof message.threadId === 'number') {
75
+ pendingResponses.set(message.threadId, {
76
+ threadId: message.threadId,
58
77
  workerIndex: message.workerIndex,
59
78
  isMainThread: message.isMainThread || false,
60
79
  statuses: message.statuses || [],
@@ -115,15 +134,10 @@ export class CrossThreadStatusCollector {
115
134
 
116
135
  // Generate unique request ID and set up response collection
117
136
  const requestId = this.nextRequestId++;
118
- const responses: Array<WorkerComponentStatuses> = [];
137
+ const responses = new Map<number, WorkerComponentStatuses>();
119
138
  this.awaitingResponses.set(requestId, responses);
120
139
 
121
- // Calculate expected number of responses
122
- // Total threads = main thread (1) + worker threads (workerCount)
123
- const workerCount = getWorkerCount() || 1;
124
- const totalThreads = workerCount + 1;
125
- // We expect responses from all threads except ourselves
126
- const expectedResponses = totalThreads - 1;
140
+ const expectedThreadIds = getEligibleBroadcastRecipientThreadIds();
127
141
 
128
142
  // Set up response collection with timeout
129
143
  const responsePromise = new Promise<Array<WorkerComponentStatuses>>((resolve, reject) => {
@@ -132,26 +146,28 @@ export class CrossThreadStatusCollector {
132
146
  // Check if we've received all expected responses
133
147
  const checkComplete = () => {
134
148
  const collectedResponses = this.awaitingResponses.get(requestId);
135
- if (collectedResponses && collectedResponses.length >= expectedResponses && !resolved) {
136
- resolved = true;
137
- cleanup();
138
- logger.trace?.(`Collected all ${collectedResponses.length} expected responses for request ${requestId}`);
139
- resolve(collectedResponses);
149
+ if (!collectedResponses || resolved) return;
150
+ for (const threadId of expectedThreadIds) {
151
+ if (!collectedResponses.has(threadId)) return;
140
152
  }
153
+ resolved = true;
154
+ cleanup();
155
+ logger.trace?.(`Collected all ${collectedResponses.size} expected responses for request ${requestId}`);
156
+ resolve([...collectedResponses.values()]);
141
157
  };
142
158
 
143
159
  // Set up timeout as fallback
144
160
  const timeoutHandle = setTimeout(() => {
145
161
  if (!resolved) {
146
162
  resolved = true;
147
- const collectedResponses = this.awaitingResponses.get(requestId) || [];
163
+ const collectedResponses = this.awaitingResponses.get(requestId) || new Map();
148
164
  this.awaitingResponses.delete(requestId);
149
165
  // Log timeout with diagnostic info
150
166
  logger.debug?.(
151
- `Collection timeout for request ${requestId}: collected ${collectedResponses.length}/${expectedResponses} responses`
167
+ `Collection timeout for request ${requestId}: collected ${collectedResponses.size}/${expectedThreadIds.size} responses`
152
168
  );
153
169
  // Resolve with whatever we've collected so far
154
- resolve(collectedResponses);
170
+ resolve([...collectedResponses.values()]);
155
171
  }
156
172
  }, this.timeout);
157
173
 
@@ -196,20 +212,14 @@ export class CrossThreadStatusCollector {
196
212
  const localThreadLabel = localWorkerIndex === undefined ? 'main' : `worker-${localWorkerIndex}`;
197
213
 
198
214
  for (const [name, status] of localStatuses) {
199
- aggregatedStatuses.set(`${name}@${localThreadLabel}`, {
200
- ...status,
201
- workerIndex: localWorkerIndex,
202
- });
215
+ this.setThreadStatus(aggregatedStatuses, name, localThreadLabel, status, localWorkerIndex);
203
216
  }
204
217
 
205
218
  // Add responses from other threads
206
219
  for (const response of collectedResponses) {
220
+ const threadLabel = response.isMainThread ? 'main' : `worker-${response.workerIndex}`;
207
221
  for (const [name, status] of response.statuses) {
208
- const threadLabel = response.isMainThread ? 'main' : `worker-${response.workerIndex}`;
209
- aggregatedStatuses.set(`${name}@${threadLabel}`, {
210
- ...status,
211
- workerIndex: response.workerIndex,
212
- });
222
+ this.setThreadStatus(aggregatedStatuses, name, threadLabel, status, response.workerIndex, response.threadId);
213
223
  }
214
224
  }
215
225
 
@@ -232,6 +242,26 @@ export class CrossThreadStatusCollector {
232
242
  }
233
243
  }
234
244
 
245
+ private setThreadStatus(
246
+ statuses: Map<string, ComponentStatusSummary>,
247
+ name: string,
248
+ threadLabel: string,
249
+ status: ComponentStatusSummary,
250
+ workerIndex: number | undefined,
251
+ threadId?: number
252
+ ): void {
253
+ const baseKey = `${name}@${threadLabel}`;
254
+ let key = baseKey;
255
+ if (statuses.has(baseKey)) {
256
+ if (threadId === undefined) throw new Error(`Physical thread identity is required for duplicate ${baseKey}`);
257
+ key += `${THREAD_IDENTITY_SEPARATOR}${threadId}`;
258
+ }
259
+ statuses.set(key, {
260
+ ...status,
261
+ workerIndex,
262
+ });
263
+ }
264
+
235
265
  /**
236
266
  * Get status from local thread only (fallback when cross-thread collection fails)
237
267
  */
@@ -242,10 +272,7 @@ export class CrossThreadStatusCollector {
242
272
  const localThreadLabel = localWorkerIndex === undefined ? 'main' : `worker-${localWorkerIndex}`;
243
273
 
244
274
  for (const [name, status] of localStatuses) {
245
- fallbackStatuses.set(`${name}@${localThreadLabel}`, {
246
- ...status,
247
- workerIndex: localWorkerIndex,
248
- });
275
+ this.setThreadStatus(fallbackStatuses, name, localThreadLabel, status, localWorkerIndex);
249
276
  }
250
277
  return fallbackStatuses;
251
278
  }
@@ -318,7 +345,8 @@ export class StatusAggregator {
318
345
  // Analyze all instances of this component
319
346
  for (const [nameWithThread, status] of statusEntries) {
320
347
  const atIndex = nameWithThread.lastIndexOf('@');
321
- const threadLabel = atIndex !== -1 ? nameWithThread.substring(atIndex + 1) : '';
348
+ const threadLabelWithIdentity = atIndex !== -1 ? nameWithThread.substring(atIndex + 1) : '';
349
+ const threadLabel = stripThreadIdentity(threadLabelWithIdentity);
322
350
 
323
351
  // Convert lastChecked to ms since epoch
324
352
  const checkTime =
@@ -330,7 +358,7 @@ export class StatusAggregator {
330
358
  } else if (threadLabel && threadLabel.startsWith('worker-')) {
331
359
  const workerIndex = parseInt(threadLabel.substring(7)); // 'worker-'.length = 7
332
360
  if (!isNaN(workerIndex)) {
333
- lastCheckedTimes.workers[workerIndex] = checkTime;
361
+ lastCheckedTimes.workers[workerIndex] = Math.max(lastCheckedTimes.workers[workerIndex] ?? 0, checkTime);
334
362
  }
335
363
  }
336
364
 
@@ -360,7 +388,12 @@ export class StatusAggregator {
360
388
  // There are inconsistencies - populate abnormalities
361
389
  for (const [nameWithThread, status] of statusEntries) {
362
390
  if (status.status !== determinedStatus) {
363
- abnormalities.set(nameWithThread, {
391
+ const publicNameWithThread = stripThreadIdentity(nameWithThread);
392
+ const existing = abnormalities.get(publicNameWithThread);
393
+ if (existing && STATUS_PRIORITY.indexOf(existing.status) <= STATUS_PRIORITY.indexOf(status.status)) {
394
+ continue;
395
+ }
396
+ abnormalities.set(publicNameWithThread, {
364
397
  workerIndex: status.workerIndex !== undefined ? status.workerIndex : -1,
365
398
  status: status.status,
366
399
  message: status.message,
@@ -391,15 +424,7 @@ export class StatusAggregator {
391
424
  * Determine overall status based on priority
392
425
  */
393
426
  private static determineOverallStatus(statusCounts: Map<ComponentStatusLevel, number>): ComponentStatusLevel {
394
- const statusPriority = [
395
- COMPONENT_STATUS_LEVELS.ERROR,
396
- COMPONENT_STATUS_LEVELS.WARNING,
397
- COMPONENT_STATUS_LEVELS.LOADING,
398
- COMPONENT_STATUS_LEVELS.UNKNOWN,
399
- COMPONENT_STATUS_LEVELS.HEALTHY,
400
- ];
401
-
402
- for (const priorityStatus of statusPriority) {
427
+ for (const priorityStatus of STATUS_PRIORITY) {
403
428
  if (statusCounts.has(priorityStatus) && statusCounts.get(priorityStatus)! > 0) {
404
429
  return priorityStatus;
405
430
  }
@@ -75,6 +75,7 @@ export interface AggregatedComponentStatus {
75
75
  * Component status information from a worker thread
76
76
  */
77
77
  export interface WorkerComponentStatuses {
78
+ threadId?: number;
78
79
  workerIndex: number | undefined;
79
80
  isMainThread: boolean;
80
81
  statuses: Array<[string, ComponentStatusSummary]>;
@@ -36,6 +36,7 @@ export declare class CrossThreadStatusCollector {
36
36
  * Returns a Map with component names namespaced by worker index
37
37
  */
38
38
  collect(registry: ComponentStatusRegistry): Promise<Map<string, ComponentStatusSummary>>;
39
+ private setThreadStatus;
39
40
  /**
40
41
  * Get status from local thread only (fallback when cross-thread collection fails)
41
42
  */
@@ -14,6 +14,19 @@ const logger_ts_1 = require("../../utility/logging/logger.js");
14
14
  const types_ts_1 = require("./types.js");
15
15
  const errors_ts_1 = require("./errors.js");
16
16
  const logger = (0, logger_ts_1.loggerWithTag)('componentStatus.crossThread');
17
+ const THREAD_IDENTITY_SEPARATOR = '#thread-';
18
+ const STATUS_PRIORITY = [
19
+ types_ts_1.COMPONENT_STATUS_LEVELS.ERROR,
20
+ types_ts_1.COMPONENT_STATUS_LEVELS.WARNING,
21
+ types_ts_1.COMPONENT_STATUS_LEVELS.LOADING,
22
+ types_ts_1.COMPONENT_STATUS_LEVELS.UNKNOWN,
23
+ types_ts_1.COMPONENT_STATUS_LEVELS.HEALTHY,
24
+ ];
25
+ function stripThreadIdentity(statusKey) {
26
+ const threadLabelStart = statusKey.lastIndexOf('@') + 1;
27
+ const identityIndex = statusKey.indexOf(THREAD_IDENTITY_SEPARATOR, threadLabelStart);
28
+ return identityIndex === -1 ? statusKey : statusKey.substring(0, identityIndex);
29
+ }
17
30
  /**
18
31
  * CrossThreadStatusCollector Class
19
32
  * Handles collection of component status from all worker threads
@@ -41,8 +54,9 @@ class CrossThreadStatusCollector {
41
54
  logger.trace?.('Received component status response from %s, with requestId: %d', workerLabel, message.requestId);
42
55
  // Find the pending request by requestId
43
56
  const pendingResponses = this.awaitingResponses.get(message.requestId);
44
- if (pendingResponses) {
45
- pendingResponses.push({
57
+ if (pendingResponses && typeof message.threadId === 'number') {
58
+ pendingResponses.set(message.threadId, {
59
+ threadId: message.threadId,
46
60
  workerIndex: message.workerIndex,
47
61
  isMainThread: message.isMainThread || false,
48
62
  statuses: message.statuses || [],
@@ -94,37 +108,36 @@ class CrossThreadStatusCollector {
94
108
  this.scheduleCleanup();
95
109
  // Generate unique request ID and set up response collection
96
110
  const requestId = this.nextRequestId++;
97
- const responses = [];
111
+ const responses = new Map();
98
112
  this.awaitingResponses.set(requestId, responses);
99
- // Calculate expected number of responses
100
- // Total threads = main thread (1) + worker threads (workerCount)
101
- const workerCount = (0, manageThreads_js_1.getWorkerCount)() || 1;
102
- const totalThreads = workerCount + 1;
103
- // We expect responses from all threads except ourselves
104
- const expectedResponses = totalThreads - 1;
113
+ const expectedThreadIds = (0, manageThreads_js_1.getEligibleBroadcastRecipientThreadIds)();
105
114
  // Set up response collection with timeout
106
115
  const responsePromise = new Promise((resolve, reject) => {
107
116
  let resolved = false;
108
117
  // Check if we've received all expected responses
109
118
  const checkComplete = () => {
110
119
  const collectedResponses = this.awaitingResponses.get(requestId);
111
- if (collectedResponses && collectedResponses.length >= expectedResponses && !resolved) {
112
- resolved = true;
113
- cleanup();
114
- logger.trace?.(`Collected all ${collectedResponses.length} expected responses for request ${requestId}`);
115
- resolve(collectedResponses);
120
+ if (!collectedResponses || resolved)
121
+ return;
122
+ for (const threadId of expectedThreadIds) {
123
+ if (!collectedResponses.has(threadId))
124
+ return;
116
125
  }
126
+ resolved = true;
127
+ cleanup();
128
+ logger.trace?.(`Collected all ${collectedResponses.size} expected responses for request ${requestId}`);
129
+ resolve([...collectedResponses.values()]);
117
130
  };
118
131
  // Set up timeout as fallback
119
132
  const timeoutHandle = setTimeout(() => {
120
133
  if (!resolved) {
121
134
  resolved = true;
122
- const collectedResponses = this.awaitingResponses.get(requestId) || [];
135
+ const collectedResponses = this.awaitingResponses.get(requestId) || new Map();
123
136
  this.awaitingResponses.delete(requestId);
124
137
  // Log timeout with diagnostic info
125
- logger.debug?.(`Collection timeout for request ${requestId}: collected ${collectedResponses.length}/${expectedResponses} responses`);
138
+ logger.debug?.(`Collection timeout for request ${requestId}: collected ${collectedResponses.size}/${expectedThreadIds.size} responses`);
126
139
  // Resolve with whatever we've collected so far
127
- resolve(collectedResponses);
140
+ resolve([...collectedResponses.values()]);
128
141
  }
129
142
  }, this.timeout);
130
143
  // Ensure cleanup happens no matter what
@@ -161,19 +174,13 @@ class CrossThreadStatusCollector {
161
174
  const localWorkerIndex = (0, manageThreads_js_1.getWorkerIndex)();
162
175
  const localThreadLabel = localWorkerIndex === undefined ? 'main' : `worker-${localWorkerIndex}`;
163
176
  for (const [name, status] of localStatuses) {
164
- aggregatedStatuses.set(`${name}@${localThreadLabel}`, {
165
- ...status,
166
- workerIndex: localWorkerIndex,
167
- });
177
+ this.setThreadStatus(aggregatedStatuses, name, localThreadLabel, status, localWorkerIndex);
168
178
  }
169
179
  // Add responses from other threads
170
180
  for (const response of collectedResponses) {
181
+ const threadLabel = response.isMainThread ? 'main' : `worker-${response.workerIndex}`;
171
182
  for (const [name, status] of response.statuses) {
172
- const threadLabel = response.isMainThread ? 'main' : `worker-${response.workerIndex}`;
173
- aggregatedStatuses.set(`${name}@${threadLabel}`, {
174
- ...status,
175
- workerIndex: response.workerIndex,
176
- });
183
+ this.setThreadStatus(aggregatedStatuses, name, threadLabel, status, response.workerIndex, response.threadId);
177
184
  }
178
185
  }
179
186
  logger.debug?.(`Collected component status from ${collectedResponses.length + 1} threads (including local)`);
@@ -192,6 +199,19 @@ class CrossThreadStatusCollector {
192
199
  return this.getLocalStatusOnly(registry);
193
200
  }
194
201
  }
202
+ setThreadStatus(statuses, name, threadLabel, status, workerIndex, threadId) {
203
+ const baseKey = `${name}@${threadLabel}`;
204
+ let key = baseKey;
205
+ if (statuses.has(baseKey)) {
206
+ if (threadId === undefined)
207
+ throw new Error(`Physical thread identity is required for duplicate ${baseKey}`);
208
+ key += `${THREAD_IDENTITY_SEPARATOR}${threadId}`;
209
+ }
210
+ statuses.set(key, {
211
+ ...status,
212
+ workerIndex,
213
+ });
214
+ }
195
215
  /**
196
216
  * Get status from local thread only (fallback when cross-thread collection fails)
197
217
  */
@@ -201,10 +221,7 @@ class CrossThreadStatusCollector {
201
221
  const localWorkerIndex = (0, manageThreads_js_1.getWorkerIndex)();
202
222
  const localThreadLabel = localWorkerIndex === undefined ? 'main' : `worker-${localWorkerIndex}`;
203
223
  for (const [name, status] of localStatuses) {
204
- fallbackStatuses.set(`${name}@${localThreadLabel}`, {
205
- ...status,
206
- workerIndex: localWorkerIndex,
207
- });
224
+ this.setThreadStatus(fallbackStatuses, name, localThreadLabel, status, localWorkerIndex);
208
225
  }
209
226
  return fallbackStatuses;
210
227
  }
@@ -266,7 +283,8 @@ class StatusAggregator {
266
283
  // Analyze all instances of this component
267
284
  for (const [nameWithThread, status] of statusEntries) {
268
285
  const atIndex = nameWithThread.lastIndexOf('@');
269
- const threadLabel = atIndex !== -1 ? nameWithThread.substring(atIndex + 1) : '';
286
+ const threadLabelWithIdentity = atIndex !== -1 ? nameWithThread.substring(atIndex + 1) : '';
287
+ const threadLabel = stripThreadIdentity(threadLabelWithIdentity);
270
288
  // Convert lastChecked to ms since epoch
271
289
  const checkTime = status.lastChecked instanceof Date ? status.lastChecked.getTime() : new Date(status.lastChecked).getTime();
272
290
  // Store the last checked time based on thread label
@@ -276,7 +294,7 @@ class StatusAggregator {
276
294
  else if (threadLabel && threadLabel.startsWith('worker-')) {
277
295
  const workerIndex = parseInt(threadLabel.substring(7)); // 'worker-'.length = 7
278
296
  if (!isNaN(workerIndex)) {
279
- lastCheckedTimes.workers[workerIndex] = checkTime;
297
+ lastCheckedTimes.workers[workerIndex] = Math.max(lastCheckedTimes.workers[workerIndex] ?? 0, checkTime);
280
298
  }
281
299
  }
282
300
  // Track status counts
@@ -301,7 +319,12 @@ class StatusAggregator {
301
319
  // There are inconsistencies - populate abnormalities
302
320
  for (const [nameWithThread, status] of statusEntries) {
303
321
  if (status.status !== determinedStatus) {
304
- abnormalities.set(nameWithThread, {
322
+ const publicNameWithThread = stripThreadIdentity(nameWithThread);
323
+ const existing = abnormalities.get(publicNameWithThread);
324
+ if (existing && STATUS_PRIORITY.indexOf(existing.status) <= STATUS_PRIORITY.indexOf(status.status)) {
325
+ continue;
326
+ }
327
+ abnormalities.set(publicNameWithThread, {
305
328
  workerIndex: status.workerIndex !== undefined ? status.workerIndex : -1,
306
329
  status: status.status,
307
330
  message: status.message,
@@ -328,14 +351,7 @@ class StatusAggregator {
328
351
  * Determine overall status based on priority
329
352
  */
330
353
  static determineOverallStatus(statusCounts) {
331
- const statusPriority = [
332
- types_ts_1.COMPONENT_STATUS_LEVELS.ERROR,
333
- types_ts_1.COMPONENT_STATUS_LEVELS.WARNING,
334
- types_ts_1.COMPONENT_STATUS_LEVELS.LOADING,
335
- types_ts_1.COMPONENT_STATUS_LEVELS.UNKNOWN,
336
- types_ts_1.COMPONENT_STATUS_LEVELS.HEALTHY,
337
- ];
338
- for (const priorityStatus of statusPriority) {
354
+ for (const priorityStatus of STATUS_PRIORITY) {
339
355
  if (statusCounts.has(priorityStatus) && statusCounts.get(priorityStatus) > 0) {
340
356
  return priorityStatus;
341
357
  }
@@ -1 +1 @@
1
- {"version":3,"file":"crossThread.js","sourceRoot":"","sources":["../../../components/status/crossThread.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"crossThread.js","sourceRoot":"","sources":["../../../components/status/crossThread.ts"],"names":[],"mappings":"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"}
@@ -69,6 +69,7 @@ export interface AggregatedComponentStatus {
69
69
  * Component status information from a worker thread
70
70
  */
71
71
  export interface WorkerComponentStatuses {
72
+ threadId?: number;
72
73
  workerIndex: number | undefined;
73
74
  isMainThread: boolean;
74
75
  statuses: Array<[string, ComponentStatusSummary]>;
@@ -113,6 +113,9 @@ type RocksTransactionWithRetry = RocksTransaction & {
113
113
  };
114
114
  export declare class DatabaseTransaction implements Transaction {
115
115
  #private;
116
+ constructor(options?: {
117
+ scopeOwned?: boolean;
118
+ });
116
119
  writes: TransactionWrite[];
117
120
  writesByKey?: Map<any, Map<unknown, TransactionWrite>>;
118
121
  completions: Promise<void>[];
@@ -146,6 +149,7 @@ export declare class DatabaseTransaction implements Transaction {
146
149
  isReplay?: boolean;
147
150
  timedOut?: boolean;
148
151
  writesAbandoned?: boolean;
152
+ snapshotFree: boolean;
149
153
  getReadTxn(disableSnapshot?: boolean): ReadTransaction;
150
154
  private attachOwnedTransaction;
151
155
  /**
@@ -245,6 +249,30 @@ export declare class DatabaseTransaction implements Transaction {
245
249
  * Resolves with information on the timestamp and success of the commit
246
250
  */
247
251
  commit(options?: CommitOptions): MaybePromise<CommitResolution>;
252
+ /**
253
+ * A successful commit that is NOT the scope's final one leaves the scope still running and still
254
+ * responsible for a commit. Rotate to a fresh OPEN generation so the rest of the scope's writes
255
+ * stage into it and are committed — or rolled back — as one unit, instead of each committing itself
256
+ * the moment it is made. Every dispatch path keeps its plain `open === OPEN` check; CLOSED never
257
+ * gains a second meaning.
258
+ *
259
+ * Deliberately not rotated when: the scope is finished (`doneWriting`), nothing owns this instance,
260
+ * a timeout poisoned it, or a commit failed — a failed or uncertain commit must never be followed by
261
+ * a resumed segment that can commit on its own. Nor when read iterators still hold the native
262
+ * handle: that handle belongs to them until they drain, so there is nothing to rotate into and those
263
+ * writes keep today's immediate-commit path.
264
+ */
265
+ /**
266
+ * Finish a commit: the chain goes with it, then the scope may rotate. A link left attached and CLOSED
267
+ * would be reused by txnForContext for the next write to that database and commit itself, surviving a
268
+ * rollback of the rotated head — the cross-store leftover this rotation exists to prevent. Every
269
+ * commit path must run this, and none may do one half without the other.
270
+ */
271
+ /** Both scope flags leave together, so no exit can clear one and keep the other. */
272
+ private endScopeOwnership;
273
+ private completeMidScopeCommit;
274
+ /** See completeMidScopeCommit, which is the only caller and carries the reasoning. */
275
+ private rotateAfterMidScopeCommit;
248
276
  abort(): void;
249
277
  /**
250
278
  * Give up on a chain of linked transactions after exhausting conflict retries: poison every link