@junctionpanel/server 0.1.73 → 0.1.75
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.
- package/dist/server/client/daemon-client.d.ts +1 -0
- package/dist/server/client/daemon-client.d.ts.map +1 -1
- package/dist/server/client/daemon-client.js +63 -8
- package/dist/server/client/daemon-client.js.map +1 -1
- package/dist/server/server/agent/provider-model-cache.d.ts +2 -0
- package/dist/server/server/agent/provider-model-cache.d.ts.map +1 -1
- package/dist/server/server/agent/provider-model-cache.js +58 -0
- package/dist/server/server/agent/provider-model-cache.js.map +1 -1
- package/dist/server/server/agent/providers/codex-app-server-agent.d.ts.map +1 -1
- package/dist/server/server/agent/providers/codex-app-server-agent.js +91 -72
- package/dist/server/server/agent/providers/codex-app-server-agent.js.map +1 -1
- package/dist/server/server/agent/providers/opencode-agent.d.ts +1 -0
- package/dist/server/server/agent/providers/opencode-agent.d.ts.map +1 -1
- package/dist/server/server/agent/providers/opencode-agent.js +111 -90
- package/dist/server/server/agent/providers/opencode-agent.js.map +1 -1
- package/dist/server/server/relay-transport.d.ts.map +1 -1
- package/dist/server/server/relay-transport.js +47 -2
- package/dist/server/server/relay-transport.js.map +1 -1
- package/dist/server/server/session.d.ts +1 -1
- package/dist/server/server/session.d.ts.map +1 -1
- package/dist/server/server/session.js +118 -45
- package/dist/server/server/session.js.map +1 -1
- package/package.json +2 -2
|
@@ -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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"}
|
|
@@ -47,8 +47,10 @@ const READ_ONLY_GIT_ENV = {
|
|
|
47
47
|
};
|
|
48
48
|
const DEFAULT_STORED_TIMELINE_FETCH_LIMIT = 200;
|
|
49
49
|
const pendingAgentInitializations = new Map();
|
|
50
|
+
const implicitAgentInitializationFailures = new Map();
|
|
50
51
|
const pendingAgentMessageExecutions = new Map();
|
|
51
52
|
const CREATE_AGENT_REPLAY_WINDOW_MS = 15 * 60000;
|
|
53
|
+
const IMPLICIT_AGENT_LOAD_FAILURE_COOLDOWN_MS = 60000;
|
|
52
54
|
const pendingCreateAgentRequests = new Map();
|
|
53
55
|
const sharedWorkspaceGitOperationStates = new Map();
|
|
54
56
|
const DEFAULT_AGENT_PROVIDER = AGENT_PROVIDER_IDS[0];
|
|
@@ -57,7 +59,8 @@ const CHECKOUT_DIFF_FALLBACK_REFRESH_MS = 5000;
|
|
|
57
59
|
const WORKSPACE_STATUS_WATCH_DEBOUNCE_MS = 250;
|
|
58
60
|
const WORKSPACE_STATUS_GIT_REFRESH_MS = 3000;
|
|
59
61
|
const WORKSPACE_STATUS_PR_ACTIVE_REFRESH_MS = 15000;
|
|
60
|
-
const
|
|
62
|
+
const WORKSPACE_STATUS_PR_ACTIVE_RETRY_REFRESH_MS = 30000;
|
|
63
|
+
const WORKSPACE_STATUS_PR_ACTIVE_RETRY_MAX_REFRESH_MS = 60000;
|
|
61
64
|
const WORKSPACE_STATUS_PR_ACTIVE_CACHE_MAX_AGE_MS = 45000;
|
|
62
65
|
const WORKSPACE_STATUS_PR_PASSIVE_CACHE_MAX_AGE_MS = 3 * 60000;
|
|
63
66
|
const PROVIDER_CHILD_THREADS_REFRESH_DEBOUNCE_MS = 250;
|
|
@@ -90,6 +93,25 @@ function storePendingCreateAgentRequest(replayKey, promise) {
|
|
|
90
93
|
});
|
|
91
94
|
return entry;
|
|
92
95
|
}
|
|
96
|
+
function cloneSessionError(error) {
|
|
97
|
+
const cloned = new Error(error.message);
|
|
98
|
+
cloned.name = error.name;
|
|
99
|
+
if (error.stack) {
|
|
100
|
+
cloned.stack = error.stack;
|
|
101
|
+
}
|
|
102
|
+
if ('cause' in error) {
|
|
103
|
+
Object.defineProperty(cloned, 'cause', {
|
|
104
|
+
configurable: true,
|
|
105
|
+
enumerable: false,
|
|
106
|
+
value: error.cause,
|
|
107
|
+
writable: true,
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
return cloned;
|
|
111
|
+
}
|
|
112
|
+
function normalizeSessionError(error) {
|
|
113
|
+
return error instanceof Error ? error : new Error(String(error));
|
|
114
|
+
}
|
|
93
115
|
const DIRTY_WORKTREE_CONFIRMATION_REQUIRED = 'dirty_worktree_confirmation_required';
|
|
94
116
|
class SessionRequestError extends Error {
|
|
95
117
|
constructor(code, message) {
|
|
@@ -611,41 +633,60 @@ export class Session {
|
|
|
611
633
|
rows: cloneRows(selected),
|
|
612
634
|
};
|
|
613
635
|
}
|
|
614
|
-
async ensureAgentLoaded(agentId) {
|
|
636
|
+
async ensureAgentLoaded(agentId, options) {
|
|
615
637
|
const existing = this.agentManager.getAgent(agentId);
|
|
616
638
|
if (existing) {
|
|
639
|
+
implicitAgentInitializationFailures.delete(agentId);
|
|
617
640
|
return existing;
|
|
618
641
|
}
|
|
619
642
|
const inflight = pendingAgentInitializations.get(agentId);
|
|
620
643
|
if (inflight) {
|
|
621
644
|
return inflight;
|
|
622
645
|
}
|
|
646
|
+
const forceRetry = options?.forceRetry ?? false;
|
|
647
|
+
const recentFailure = implicitAgentInitializationFailures.get(agentId);
|
|
648
|
+
if (!forceRetry
|
|
649
|
+
&& recentFailure
|
|
650
|
+
&& Date.now() - recentFailure.failedAt < IMPLICIT_AGENT_LOAD_FAILURE_COOLDOWN_MS) {
|
|
651
|
+
throw cloneSessionError(recentFailure.error);
|
|
652
|
+
}
|
|
623
653
|
const initPromise = (async () => {
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
654
|
+
try {
|
|
655
|
+
const record = await this.agentStorage.get(agentId);
|
|
656
|
+
if (!record) {
|
|
657
|
+
throw new Error(`Agent not found: ${agentId}`);
|
|
658
|
+
}
|
|
659
|
+
const handle = toAgentPersistenceHandle(this.sessionLogger, record.persistence);
|
|
660
|
+
let snapshot;
|
|
661
|
+
if (handle) {
|
|
662
|
+
snapshot = await this.agentManager.resumeAgentFromPersistence(handle, buildConfigOverrides(record), agentId, {
|
|
663
|
+
...extractTimestamps(record),
|
|
664
|
+
...extractTimelineSnapshot(record),
|
|
665
|
+
parentAgentId: record.parentAgentId ?? null,
|
|
666
|
+
});
|
|
667
|
+
this.sessionLogger.info({ agentId, provider: record.provider }, 'Agent resumed from persistence');
|
|
668
|
+
}
|
|
669
|
+
else {
|
|
670
|
+
const config = buildSessionConfig(record);
|
|
671
|
+
snapshot = await this.agentManager.createAgent(config, agentId, {
|
|
672
|
+
labels: record.labels,
|
|
673
|
+
parentAgentId: record.parentAgentId ?? null,
|
|
674
|
+
});
|
|
675
|
+
this.sessionLogger.info({ agentId, provider: record.provider }, 'Agent created from stored config');
|
|
676
|
+
}
|
|
677
|
+
await this.agentManager.hydrateTimelineFromProvider(agentId);
|
|
678
|
+
await this.reconcilePersistedPendingPermissions(record, agentId);
|
|
679
|
+
implicitAgentInitializationFailures.delete(agentId);
|
|
680
|
+
return this.agentManager.getAgent(agentId) ?? snapshot;
|
|
637
681
|
}
|
|
638
|
-
|
|
639
|
-
const
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
682
|
+
catch (error) {
|
|
683
|
+
const normalizedError = normalizeSessionError(error);
|
|
684
|
+
implicitAgentInitializationFailures.set(agentId, {
|
|
685
|
+
error: normalizedError,
|
|
686
|
+
failedAt: Date.now(),
|
|
643
687
|
});
|
|
644
|
-
|
|
688
|
+
throw normalizedError;
|
|
645
689
|
}
|
|
646
|
-
await this.agentManager.hydrateTimelineFromProvider(agentId);
|
|
647
|
-
await this.reconcilePersistedPendingPermissions(record, agentId);
|
|
648
|
-
return this.agentManager.getAgent(agentId) ?? snapshot;
|
|
649
690
|
})();
|
|
650
691
|
pendingAgentInitializations.set(agentId, initPromise);
|
|
651
692
|
try {
|
|
@@ -3646,9 +3687,9 @@ export class Session {
|
|
|
3646
3687
|
clearInterval(target.gitRefreshInterval);
|
|
3647
3688
|
target.gitRefreshInterval = null;
|
|
3648
3689
|
}
|
|
3649
|
-
if (target.
|
|
3650
|
-
|
|
3651
|
-
target.
|
|
3690
|
+
if (target.prRefreshTimer) {
|
|
3691
|
+
clearTimeout(target.prRefreshTimer);
|
|
3692
|
+
target.prRefreshTimer = null;
|
|
3652
3693
|
}
|
|
3653
3694
|
for (const watcher of target.watchers) {
|
|
3654
3695
|
watcher.close();
|
|
@@ -3690,20 +3731,24 @@ export class Session {
|
|
|
3690
3731
|
!== (nextGit.isJunctionOwnedWorktree ? nextGit.mainRepoRoot : null)));
|
|
3691
3732
|
}
|
|
3692
3733
|
updateWorkspaceStatusPrPolling(target) {
|
|
3693
|
-
if (target.
|
|
3694
|
-
|
|
3695
|
-
target.
|
|
3734
|
+
if (target.prRefreshTimer) {
|
|
3735
|
+
clearTimeout(target.prRefreshTimer);
|
|
3736
|
+
target.prRefreshTimer = null;
|
|
3696
3737
|
}
|
|
3697
3738
|
if (!this.workspaceStatusShouldPollPullRequest(target)) {
|
|
3698
3739
|
return;
|
|
3699
3740
|
}
|
|
3700
|
-
|
|
3701
|
-
|
|
3741
|
+
if (target.refreshPromise || target.pendingPrRefresh) {
|
|
3742
|
+
return;
|
|
3743
|
+
}
|
|
3744
|
+
const delayMs = this.resolveWorkspaceStatusPrRefreshDelayMs(target);
|
|
3745
|
+
target.prRefreshTimer = setTimeout(() => {
|
|
3746
|
+
target.prRefreshTimer = null;
|
|
3702
3747
|
this.scheduleWorkspaceStatusTargetRefresh(target, {
|
|
3703
3748
|
includePr: true,
|
|
3704
3749
|
debounce: false,
|
|
3705
3750
|
});
|
|
3706
|
-
},
|
|
3751
|
+
}, delayMs);
|
|
3707
3752
|
}
|
|
3708
3753
|
updateWorkspaceStatusGitPolling(target) {
|
|
3709
3754
|
if (target.gitRefreshInterval) {
|
|
@@ -3721,10 +3766,14 @@ export class Session {
|
|
|
3721
3766
|
});
|
|
3722
3767
|
}, WORKSPACE_STATUS_GIT_REFRESH_MS);
|
|
3723
3768
|
}
|
|
3724
|
-
|
|
3725
|
-
|
|
3726
|
-
|
|
3727
|
-
|
|
3769
|
+
resolveWorkspaceStatusPrRefreshDelayMs(target) {
|
|
3770
|
+
if (target.prRefreshFailureCount <= 0) {
|
|
3771
|
+
return WORKSPACE_STATUS_PR_ACTIVE_REFRESH_MS;
|
|
3772
|
+
}
|
|
3773
|
+
if (target.prRefreshFailureCount === 1) {
|
|
3774
|
+
return WORKSPACE_STATUS_PR_ACTIVE_RETRY_REFRESH_MS;
|
|
3775
|
+
}
|
|
3776
|
+
return WORKSPACE_STATUS_PR_ACTIVE_RETRY_MAX_REFRESH_MS;
|
|
3728
3777
|
}
|
|
3729
3778
|
workspaceStatusShouldPollPullRequest(target) {
|
|
3730
3779
|
if (target.subscriptions.size === 0) {
|
|
@@ -3859,10 +3908,22 @@ export class Session {
|
|
|
3859
3908
|
const prRefreshGeneration = includePr ? target.prRefreshGeneration : null;
|
|
3860
3909
|
target.pendingGitRefresh = false;
|
|
3861
3910
|
target.pendingPrRefresh = false;
|
|
3862
|
-
|
|
3863
|
-
|
|
3864
|
-
|
|
3865
|
-
|
|
3911
|
+
let snapshot;
|
|
3912
|
+
try {
|
|
3913
|
+
snapshot = await this.computeWorkspaceStatusSnapshot(target, {
|
|
3914
|
+
includePr,
|
|
3915
|
+
fullGit,
|
|
3916
|
+
});
|
|
3917
|
+
}
|
|
3918
|
+
catch (error) {
|
|
3919
|
+
if (includePr) {
|
|
3920
|
+
target.prRefreshFailureCount = Math.min(target.prRefreshFailureCount + 1, 2);
|
|
3921
|
+
}
|
|
3922
|
+
throw error;
|
|
3923
|
+
}
|
|
3924
|
+
if (includePr) {
|
|
3925
|
+
target.prRefreshFailureCount = 0;
|
|
3926
|
+
}
|
|
3866
3927
|
if (!this.hasWorkspaceStatusTarget(target)) {
|
|
3867
3928
|
return;
|
|
3868
3929
|
}
|
|
@@ -3887,7 +3948,6 @@ export class Session {
|
|
|
3887
3948
|
|| includePr
|
|
3888
3949
|
|| (previousHasLoadedPullRequest && !gitIdentityChanged);
|
|
3889
3950
|
target.latestPayloadHasFullGitData = !snapshot.git.isGit || fullGit;
|
|
3890
|
-
this.updateWorkspaceStatusPrPolling(target);
|
|
3891
3951
|
const fingerprint = this.workspaceStatusSnapshotFingerprint(snapshot);
|
|
3892
3952
|
if (fingerprint !== target.latestFingerprint) {
|
|
3893
3953
|
target.latestFingerprint = fingerprint;
|
|
@@ -3900,6 +3960,9 @@ export class Session {
|
|
|
3900
3960
|
}
|
|
3901
3961
|
finally {
|
|
3902
3962
|
target.refreshPromise = null;
|
|
3963
|
+
if (this.hasWorkspaceStatusTarget(target)) {
|
|
3964
|
+
this.updateWorkspaceStatusPrPolling(target);
|
|
3965
|
+
}
|
|
3903
3966
|
}
|
|
3904
3967
|
}
|
|
3905
3968
|
async ensureWorkspaceStatusWatchTarget(cwd, remoteName) {
|
|
@@ -3918,7 +3981,8 @@ export class Session {
|
|
|
3918
3981
|
watchers: [],
|
|
3919
3982
|
hasTimedRefreshFallbackOnly: false,
|
|
3920
3983
|
gitRefreshInterval: null,
|
|
3921
|
-
|
|
3984
|
+
prRefreshTimer: null,
|
|
3985
|
+
prRefreshFailureCount: 0,
|
|
3922
3986
|
debounceTimer: null,
|
|
3923
3987
|
refreshPromise: null,
|
|
3924
3988
|
pendingGitRefresh: false,
|
|
@@ -3971,11 +4035,20 @@ export class Session {
|
|
|
3971
4035
|
if (remoteName) {
|
|
3972
4036
|
this.assertSafeRemoteName(remoteName);
|
|
3973
4037
|
}
|
|
3974
|
-
this.
|
|
3975
|
-
const
|
|
4038
|
+
const targetKey = this.buildWorkspaceStatusTargetKey(cwd, remoteName);
|
|
4039
|
+
const existingSubscription = this.workspaceStatusSubscriptions.get(msg.subscriptionId);
|
|
4040
|
+
const existingTarget = existingSubscription?.targetKey === targetKey
|
|
4041
|
+
? this.workspaceStatusTargets.get(existingSubscription.targetKey) ?? null
|
|
4042
|
+
: null;
|
|
4043
|
+
let target = existingTarget;
|
|
4044
|
+
if (!target) {
|
|
4045
|
+
this.removeWorkspaceStatusSubscription(msg.subscriptionId);
|
|
4046
|
+
target = await this.ensureWorkspaceStatusWatchTarget(cwd, remoteName);
|
|
4047
|
+
}
|
|
3976
4048
|
target.subscriptions.set(msg.subscriptionId, mode);
|
|
3977
4049
|
this.workspaceStatusSubscriptions.set(msg.subscriptionId, {
|
|
3978
4050
|
targetKey: target.key,
|
|
4051
|
+
mode,
|
|
3979
4052
|
});
|
|
3980
4053
|
this.updateWorkspaceStatusGitPolling(target);
|
|
3981
4054
|
this.updateWorkspaceStatusPrPolling(target);
|