@junctionpanel/server 0.1.89 → 0.1.90
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.
|
@@ -269,6 +269,10 @@ export declare class Session {
|
|
|
269
269
|
private scheduleCheckoutDiffTargetRefresh;
|
|
270
270
|
private emitCheckoutDiffUpdate;
|
|
271
271
|
private computeCheckoutDiffSnapshot;
|
|
272
|
+
private buildCheckoutDiffTimeoutSnapshot;
|
|
273
|
+
private canReuseCheckoutDiffPayload;
|
|
274
|
+
private publishCheckoutDiffSnapshot;
|
|
275
|
+
private discardCheckoutDiffWatchTargetIfUnused;
|
|
272
276
|
private refreshCheckoutDiffTarget;
|
|
273
277
|
private ensureCheckoutDiffWatchTarget;
|
|
274
278
|
private handleSubscribeCheckoutDiffRequest;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/server/session.ts"],"names":[],"mappings":"AAQA,OAAO,EAGL,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EA0B5B,MAAM,eAAe,CAAA;AACtB,OAAO,KAAK,EAAE,eAAe,EAAyB,MAAM,iCAAiC,CAAA;AAE7F,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,yBAAyB,CAAA;AAQhC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAA;AAE9E,MAAM,MAAM,wBAAwB,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,CAAA;AAE/D,OAAO,EAEL,KAAK,+BAA+B,EACrC,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAkDvD,OAAO,EAAE,YAAY,EAA0B,MAAM,0BAA0B,CAAA;AAQ/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AACnE,OAAO,KAAK,EACV,4BAA4B,EAC5B,sBAAsB,EACvB,MAAM,uBAAuB,CAAA;AAkD9B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/server/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -58,6 +58,7 @@ const sharedWorkspaceGitOperationStates = new Map();
|
|
|
58
58
|
const DEFAULT_AGENT_PROVIDER = AGENT_PROVIDER_IDS[0];
|
|
59
59
|
const CHECKOUT_DIFF_WATCH_DEBOUNCE_MS = 150;
|
|
60
60
|
const CHECKOUT_DIFF_FALLBACK_REFRESH_MS = 5000;
|
|
61
|
+
const CHECKOUT_DIFF_OPERATION_TIMEOUT_MS = 12000;
|
|
61
62
|
const WORKSPACE_STATUS_WATCH_DEBOUNCE_MS = 250;
|
|
62
63
|
const WORKSPACE_STATUS_GIT_REFRESH_MS = 3000;
|
|
63
64
|
const WORKSPACE_STATUS_PR_ACTIVE_REFRESH_MS = 15000;
|
|
@@ -66,6 +67,12 @@ const WORKSPACE_STATUS_PR_ACTIVE_RETRY_MAX_REFRESH_MS = 60000;
|
|
|
66
67
|
const WORKSPACE_STATUS_PR_ACTIVE_CACHE_MAX_AGE_MS = 45000;
|
|
67
68
|
const WORKSPACE_STATUS_PR_PASSIVE_CACHE_MAX_AGE_MS = 3 * 60000;
|
|
68
69
|
const PROVIDER_CHILD_THREADS_REFRESH_DEBOUNCE_MS = 250;
|
|
70
|
+
function maybeUnrefTimer(timer) {
|
|
71
|
+
if (timer && typeof timer.unref === 'function') {
|
|
72
|
+
;
|
|
73
|
+
timer.unref();
|
|
74
|
+
}
|
|
75
|
+
}
|
|
69
76
|
const PROVIDER_CHILD_THREADS_PERSISTED_LIST_INITIAL_LIMIT = 500;
|
|
70
77
|
const PROVIDER_CHILD_THREADS_PERSISTED_LIST_MAX_LIMIT = 50000;
|
|
71
78
|
const TERMINAL_STREAM_WINDOW_BYTES = 256 * 1024;
|
|
@@ -4489,30 +4496,113 @@ export class Session {
|
|
|
4489
4496
|
};
|
|
4490
4497
|
}
|
|
4491
4498
|
}
|
|
4499
|
+
buildCheckoutDiffTimeoutSnapshot(cwd, previousSnapshot = null) {
|
|
4500
|
+
return {
|
|
4501
|
+
cwd,
|
|
4502
|
+
files: previousSnapshot?.files ?? [],
|
|
4503
|
+
error: {
|
|
4504
|
+
code: 'UNKNOWN',
|
|
4505
|
+
message: 'Changes are taking longer than expected to load. Try again in a moment.',
|
|
4506
|
+
},
|
|
4507
|
+
};
|
|
4508
|
+
}
|
|
4509
|
+
canReuseCheckoutDiffPayload(target) {
|
|
4510
|
+
return (target.latestPayload !== null &&
|
|
4511
|
+
!target.latestPayloadIsTimeout &&
|
|
4512
|
+
!target.refreshQueuedAfterWrite &&
|
|
4513
|
+
!this.isWorkspaceGitWritePending(target.workspaceGitKey));
|
|
4514
|
+
}
|
|
4515
|
+
publishCheckoutDiffSnapshot(target, snapshot, options) {
|
|
4516
|
+
target.latestPayload = snapshot;
|
|
4517
|
+
target.latestPayloadIsTimeout = options?.isTimeout ?? false;
|
|
4518
|
+
if (!areCheckoutDiffSnapshotsEqual(target.latestComparablePayload, snapshot)) {
|
|
4519
|
+
target.latestComparablePayload = snapshot;
|
|
4520
|
+
this.emitCheckoutDiffUpdate(target, snapshot);
|
|
4521
|
+
}
|
|
4522
|
+
}
|
|
4523
|
+
discardCheckoutDiffWatchTargetIfUnused(target) {
|
|
4524
|
+
if (target.subscriptions.size > 0) {
|
|
4525
|
+
return;
|
|
4526
|
+
}
|
|
4527
|
+
if (this.checkoutDiffTargets.get(target.key) !== target) {
|
|
4528
|
+
return;
|
|
4529
|
+
}
|
|
4530
|
+
this.closeCheckoutDiffWatchTarget(target);
|
|
4531
|
+
this.checkoutDiffTargets.delete(target.key);
|
|
4532
|
+
}
|
|
4492
4533
|
async refreshCheckoutDiffTarget(target) {
|
|
4493
|
-
if (target.
|
|
4534
|
+
if (target.activeRefreshPromise) {
|
|
4494
4535
|
target.refreshQueued = true;
|
|
4495
4536
|
return;
|
|
4496
4537
|
}
|
|
4497
|
-
|
|
4538
|
+
const activeRefreshPromise = (async () => {
|
|
4498
4539
|
do {
|
|
4499
4540
|
target.refreshQueued = false;
|
|
4500
|
-
const
|
|
4501
|
-
|
|
4502
|
-
|
|
4541
|
+
const previousSnapshot = target.latestPayload;
|
|
4542
|
+
let resolveRefresh = null;
|
|
4543
|
+
let refreshSettled = false;
|
|
4544
|
+
target.refreshPromise = new Promise((resolve) => {
|
|
4545
|
+
resolveRefresh = resolve;
|
|
4503
4546
|
});
|
|
4504
|
-
|
|
4505
|
-
|
|
4506
|
-
|
|
4507
|
-
|
|
4547
|
+
const settleRefresh = () => {
|
|
4548
|
+
if (resolveRefresh) {
|
|
4549
|
+
resolveRefresh();
|
|
4550
|
+
}
|
|
4551
|
+
};
|
|
4552
|
+
const timeoutHandle = setTimeout(() => {
|
|
4553
|
+
this.sessionLogger.warn({
|
|
4554
|
+
cwd: target.cwd,
|
|
4555
|
+
compare: target.compare,
|
|
4556
|
+
timeoutMs: CHECKOUT_DIFF_OPERATION_TIMEOUT_MS,
|
|
4557
|
+
}, 'Checkout diff snapshot timed out');
|
|
4558
|
+
refreshSettled = true;
|
|
4559
|
+
this.publishCheckoutDiffSnapshot(target, this.buildCheckoutDiffTimeoutSnapshot(target.cwd, previousSnapshot), { isTimeout: true });
|
|
4560
|
+
settleRefresh();
|
|
4561
|
+
}, CHECKOUT_DIFF_OPERATION_TIMEOUT_MS);
|
|
4562
|
+
maybeUnrefTimer(timeoutHandle);
|
|
4563
|
+
try {
|
|
4564
|
+
const snapshot = await this.computeCheckoutDiffSnapshot(target.cwd, target.compare, {
|
|
4565
|
+
diffCwd: target.diffCwd,
|
|
4566
|
+
detail: target.detail,
|
|
4567
|
+
});
|
|
4568
|
+
clearTimeout(timeoutHandle);
|
|
4569
|
+
this.publishCheckoutDiffSnapshot(target, snapshot);
|
|
4570
|
+
if (!refreshSettled) {
|
|
4571
|
+
refreshSettled = true;
|
|
4572
|
+
settleRefresh();
|
|
4573
|
+
}
|
|
4574
|
+
}
|
|
4575
|
+
catch (error) {
|
|
4576
|
+
clearTimeout(timeoutHandle);
|
|
4577
|
+
const snapshot = {
|
|
4578
|
+
cwd: target.cwd,
|
|
4579
|
+
files: previousSnapshot?.files ?? [],
|
|
4580
|
+
error: this.toCheckoutError(error),
|
|
4581
|
+
};
|
|
4582
|
+
this.publishCheckoutDiffSnapshot(target, snapshot);
|
|
4583
|
+
if (!refreshSettled) {
|
|
4584
|
+
refreshSettled = true;
|
|
4585
|
+
settleRefresh();
|
|
4586
|
+
}
|
|
4587
|
+
}
|
|
4588
|
+
finally {
|
|
4589
|
+
clearTimeout(timeoutHandle);
|
|
4590
|
+
if (!refreshSettled) {
|
|
4591
|
+
refreshSettled = true;
|
|
4592
|
+
settleRefresh();
|
|
4593
|
+
}
|
|
4594
|
+
target.refreshPromise = null;
|
|
4508
4595
|
}
|
|
4509
4596
|
} while (target.refreshQueued);
|
|
4510
4597
|
})();
|
|
4598
|
+
target.activeRefreshPromise = activeRefreshPromise;
|
|
4511
4599
|
try {
|
|
4512
|
-
await
|
|
4600
|
+
await activeRefreshPromise;
|
|
4513
4601
|
}
|
|
4514
4602
|
finally {
|
|
4515
|
-
target.
|
|
4603
|
+
if (target.activeRefreshPromise === activeRefreshPromise) {
|
|
4604
|
+
target.activeRefreshPromise = null;
|
|
4605
|
+
}
|
|
4516
4606
|
}
|
|
4517
4607
|
}
|
|
4518
4608
|
async ensureCheckoutDiffWatchTarget(cwd, compare, detail) {
|
|
@@ -4535,10 +4625,12 @@ export class Session {
|
|
|
4535
4625
|
fallbackRefreshInterval: null,
|
|
4536
4626
|
debounceTimer: null,
|
|
4537
4627
|
refreshPromise: null,
|
|
4628
|
+
activeRefreshPromise: null,
|
|
4538
4629
|
refreshQueued: false,
|
|
4539
4630
|
refreshQueuedAfterWrite: false,
|
|
4540
4631
|
latestPayload: null,
|
|
4541
4632
|
latestComparablePayload: null,
|
|
4633
|
+
latestPayloadIsTimeout: false,
|
|
4542
4634
|
};
|
|
4543
4635
|
const repoWatchPath = watchRoot ?? cwd;
|
|
4544
4636
|
const watchPaths = new Set([repoWatchPath]);
|
|
@@ -4581,7 +4673,54 @@ export class Session {
|
|
|
4581
4673
|
const compare = this.normalizeCheckoutDiffCompare(msg.compare);
|
|
4582
4674
|
const detail = msg.detail ?? 'full';
|
|
4583
4675
|
this.removeCheckoutDiffSubscription(msg.subscriptionId);
|
|
4584
|
-
|
|
4676
|
+
let subscribeSetupTimedOut = false;
|
|
4677
|
+
const target = await new Promise((resolve, reject) => {
|
|
4678
|
+
let settled = false;
|
|
4679
|
+
const resolveOnce = (value) => {
|
|
4680
|
+
if (settled) {
|
|
4681
|
+
return;
|
|
4682
|
+
}
|
|
4683
|
+
settled = true;
|
|
4684
|
+
resolve(value);
|
|
4685
|
+
};
|
|
4686
|
+
const timeoutHandle = setTimeout(() => {
|
|
4687
|
+
subscribeSetupTimedOut = true;
|
|
4688
|
+
this.sessionLogger.warn({
|
|
4689
|
+
cwd,
|
|
4690
|
+
compare,
|
|
4691
|
+
timeoutMs: CHECKOUT_DIFF_OPERATION_TIMEOUT_MS,
|
|
4692
|
+
}, 'Checkout diff subscribe setup timed out');
|
|
4693
|
+
resolveOnce(null);
|
|
4694
|
+
}, CHECKOUT_DIFF_OPERATION_TIMEOUT_MS);
|
|
4695
|
+
maybeUnrefTimer(timeoutHandle);
|
|
4696
|
+
void this.ensureCheckoutDiffWatchTarget(cwd, compare, detail)
|
|
4697
|
+
.then((nextTarget) => {
|
|
4698
|
+
clearTimeout(timeoutHandle);
|
|
4699
|
+
if (subscribeSetupTimedOut) {
|
|
4700
|
+
this.discardCheckoutDiffWatchTargetIfUnused(nextTarget);
|
|
4701
|
+
return;
|
|
4702
|
+
}
|
|
4703
|
+
resolveOnce(nextTarget);
|
|
4704
|
+
})
|
|
4705
|
+
.catch((error) => {
|
|
4706
|
+
clearTimeout(timeoutHandle);
|
|
4707
|
+
if (subscribeSetupTimedOut) {
|
|
4708
|
+
return;
|
|
4709
|
+
}
|
|
4710
|
+
reject(error instanceof Error ? error : new Error(String(error)));
|
|
4711
|
+
});
|
|
4712
|
+
});
|
|
4713
|
+
if (!target) {
|
|
4714
|
+
this.emit({
|
|
4715
|
+
type: 'subscribe_checkout_diff_response',
|
|
4716
|
+
payload: {
|
|
4717
|
+
subscriptionId: msg.subscriptionId,
|
|
4718
|
+
...this.buildCheckoutDiffTimeoutSnapshot(cwd),
|
|
4719
|
+
requestId: msg.requestId,
|
|
4720
|
+
},
|
|
4721
|
+
});
|
|
4722
|
+
return;
|
|
4723
|
+
}
|
|
4585
4724
|
target.subscriptions.add(msg.subscriptionId);
|
|
4586
4725
|
this.checkoutDiffSubscriptions.set(msg.subscriptionId, {
|
|
4587
4726
|
targetKey: target.key,
|
|
@@ -4589,20 +4728,23 @@ export class Session {
|
|
|
4589
4728
|
if (target.refreshPromise) {
|
|
4590
4729
|
await target.refreshPromise;
|
|
4591
4730
|
}
|
|
4592
|
-
|
|
4593
|
-
|
|
4594
|
-
|
|
4731
|
+
let canReuseLatestPayload = this.canReuseCheckoutDiffPayload(target);
|
|
4732
|
+
if (!canReuseLatestPayload && !target.activeRefreshPromise) {
|
|
4733
|
+
void this.refreshCheckoutDiffTarget(target);
|
|
4734
|
+
}
|
|
4735
|
+
if (target.refreshPromise) {
|
|
4736
|
+
await target.refreshPromise;
|
|
4737
|
+
}
|
|
4738
|
+
canReuseLatestPayload = this.canReuseCheckoutDiffPayload(target);
|
|
4595
4739
|
const shouldPreserveQueuedComparablePayload = !canReuseLatestPayload && target.refreshQueuedAfterWrite;
|
|
4596
|
-
|
|
4597
|
-
|
|
4598
|
-
|
|
4599
|
-
|
|
4600
|
-
|
|
4601
|
-
});
|
|
4740
|
+
if (!target.latestPayload) {
|
|
4741
|
+
target.latestPayload = this.buildCheckoutDiffTimeoutSnapshot(cwd);
|
|
4742
|
+
target.latestPayloadIsTimeout = true;
|
|
4743
|
+
}
|
|
4744
|
+
const snapshot = target.latestPayload;
|
|
4602
4745
|
if (!snapshot) {
|
|
4603
4746
|
throw new Error('Checkout diff snapshot was unavailable');
|
|
4604
4747
|
}
|
|
4605
|
-
target.latestPayload = snapshot;
|
|
4606
4748
|
if (!shouldPreserveQueuedComparablePayload) {
|
|
4607
4749
|
target.latestComparablePayload = snapshot;
|
|
4608
4750
|
}
|