codekin 0.5.5 → 0.6.0
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/assets/index-BvKzbtKg.css +1 -0
- package/dist/assets/index-D59Xr9pK.js +182 -0
- package/dist/index.html +2 -2
- package/package.json +1 -1
- package/server/dist/approval-manager.js +1 -1
- package/server/dist/claude-process.d.ts +8 -5
- package/server/dist/claude-process.js +21 -63
- package/server/dist/claude-process.js.map +1 -1
- package/server/dist/coding-process.d.ts +83 -0
- package/server/dist/coding-process.js +32 -0
- package/server/dist/coding-process.js.map +1 -0
- package/server/dist/commit-event-handler.js +1 -0
- package/server/dist/commit-event-handler.js.map +1 -1
- package/server/dist/docs-routes.js +22 -1
- package/server/dist/docs-routes.js.map +1 -1
- package/server/dist/native-permissions.js +2 -1
- package/server/dist/native-permissions.js.map +1 -1
- package/server/dist/opencode-process.d.ts +104 -0
- package/server/dist/opencode-process.js +657 -0
- package/server/dist/opencode-process.js.map +1 -0
- package/server/dist/orchestrator-children.d.ts +9 -0
- package/server/dist/orchestrator-children.js +28 -1
- package/server/dist/orchestrator-children.js.map +1 -1
- package/server/dist/orchestrator-manager.js +17 -0
- package/server/dist/orchestrator-manager.js.map +1 -1
- package/server/dist/orchestrator-routes.js +8 -1
- package/server/dist/orchestrator-routes.js.map +1 -1
- package/server/dist/prompt-router.d.ts +2 -2
- package/server/dist/prompt-router.js +12 -0
- package/server/dist/prompt-router.js.map +1 -1
- package/server/dist/session-lifecycle.d.ts +4 -4
- package/server/dist/session-lifecycle.js +42 -21
- package/server/dist/session-lifecycle.js.map +1 -1
- package/server/dist/session-manager.d.ts +9 -0
- package/server/dist/session-manager.js +87 -45
- package/server/dist/session-manager.js.map +1 -1
- package/server/dist/session-persistence.d.ts +1 -0
- package/server/dist/session-persistence.js +3 -1
- package/server/dist/session-persistence.js.map +1 -1
- package/server/dist/session-routes.js +15 -1
- package/server/dist/session-routes.js.map +1 -1
- package/server/dist/stepflow-handler.d.ts +2 -2
- package/server/dist/stepflow-handler.js +4 -4
- package/server/dist/stepflow-handler.js.map +1 -1
- package/server/dist/tool-labels.d.ts +8 -0
- package/server/dist/tool-labels.js +51 -0
- package/server/dist/tool-labels.js.map +1 -0
- package/server/dist/tsconfig.tsbuildinfo +1 -1
- package/server/dist/types.d.ts +25 -10
- package/server/dist/types.js +4 -1
- package/server/dist/types.js.map +1 -1
- package/server/dist/webhook-dedup.d.ts +11 -0
- package/server/dist/webhook-dedup.js +23 -0
- package/server/dist/webhook-dedup.js.map +1 -1
- package/server/dist/webhook-handler.d.ts +20 -4
- package/server/dist/webhook-handler.js +256 -20
- package/server/dist/webhook-handler.js.map +1 -1
- package/server/dist/webhook-pr-cache.d.ts +57 -0
- package/server/dist/webhook-pr-cache.js +95 -0
- package/server/dist/webhook-pr-cache.js.map +1 -0
- package/server/dist/webhook-pr-github.d.ts +68 -0
- package/server/dist/webhook-pr-github.js +202 -0
- package/server/dist/webhook-pr-github.js.map +1 -0
- package/server/dist/webhook-pr-prompt.d.ts +27 -0
- package/server/dist/webhook-pr-prompt.js +251 -0
- package/server/dist/webhook-pr-prompt.js.map +1 -0
- package/server/dist/webhook-types.d.ts +70 -1
- package/server/dist/webhook-workspace.js +20 -1
- package/server/dist/webhook-workspace.js.map +1 -1
- package/server/dist/workflow-config.d.ts +2 -0
- package/server/dist/workflow-config.js.map +1 -1
- package/server/dist/workflow-loader.js +3 -0
- package/server/dist/workflow-loader.js.map +1 -1
- package/server/dist/workflow-routes.js +6 -2
- package/server/dist/workflow-routes.js.map +1 -1
- package/server/dist/ws-message-handler.js +22 -3
- package/server/dist/ws-message-handler.js.map +1 -1
- package/server/dist/ws-server.js +4 -2
- package/server/dist/ws-server.js.map +1 -1
- package/dist/assets/index-BFkKlY3O.js +0 -182
- package/dist/assets/index-CjEQkT2b.css +0 -1
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
import { existsSync } from 'fs';
|
|
11
11
|
import path from 'path';
|
|
12
12
|
import { ClaudeProcess } from './claude-process.js';
|
|
13
|
+
import { OpenCodeProcess } from './opencode-process.js';
|
|
13
14
|
import { PORT } from './config.js';
|
|
14
15
|
import { deriveSessionToken } from './crypto-utils.js';
|
|
15
16
|
import { evaluateRestart } from './session-restart-scheduler.js';
|
|
@@ -109,14 +110,27 @@ export class SessionLifecycle {
|
|
|
109
110
|
const repoDir = session.groupDir ?? session.workingDir;
|
|
110
111
|
const registryPatterns = this.deps.approvalManager.getAllowedToolsForRepo(repoDir);
|
|
111
112
|
const mergedAllowedTools = [...new Set([...(session.allowedTools || []), ...registryPatterns])];
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
113
|
+
let cp;
|
|
114
|
+
if (session.provider === 'opencode') {
|
|
115
|
+
cp = new OpenCodeProcess(session.workingDir, {
|
|
116
|
+
sessionId: sessionId,
|
|
117
|
+
opencodeSessionId: session.claudeSessionId || undefined,
|
|
118
|
+
model: session.model,
|
|
119
|
+
extraEnv,
|
|
120
|
+
permissionMode: session.permissionMode,
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
cp = new ClaudeProcess(session.workingDir, {
|
|
125
|
+
sessionId: session.claudeSessionId || undefined,
|
|
126
|
+
extraEnv,
|
|
127
|
+
model: session.model,
|
|
128
|
+
permissionMode: session.permissionMode,
|
|
129
|
+
resume,
|
|
130
|
+
allowedTools: mergedAllowedTools,
|
|
131
|
+
addDirs: session.addDirs,
|
|
132
|
+
});
|
|
133
|
+
}
|
|
120
134
|
this.wireClaudeEvents(cp, session, sessionId);
|
|
121
135
|
cp.start();
|
|
122
136
|
session.claudeProcess = cp;
|
|
@@ -136,18 +150,20 @@ export class SessionLifecycle {
|
|
|
136
150
|
const session = this.deps.getSession(sessionId);
|
|
137
151
|
if (!session?.claudeProcess)
|
|
138
152
|
return Promise.resolve();
|
|
139
|
-
// If the process already
|
|
140
|
-
|
|
153
|
+
// If the process is already fully initialized, resolve immediately.
|
|
154
|
+
// Uses isReady() which accounts for provider differences: Claude is ready
|
|
155
|
+
// as soon as alive (stdin buffered), OpenCode needs alive + opencodeSessionId.
|
|
156
|
+
if (session.claudeProcess.isReady())
|
|
141
157
|
return Promise.resolve();
|
|
142
158
|
return new Promise((resolve) => {
|
|
159
|
+
const done = () => { clearTimeout(timer); resolve(); };
|
|
143
160
|
const timer = setTimeout(() => {
|
|
144
161
|
console.warn(`[waitForReady] Timed out waiting for system_init on ${sessionId} after ${timeoutMs}ms`);
|
|
162
|
+
session.claudeProcess?.removeListener('exit', done);
|
|
145
163
|
resolve();
|
|
146
164
|
}, timeoutMs);
|
|
147
|
-
session.claudeProcess.once('system_init',
|
|
148
|
-
|
|
149
|
-
resolve();
|
|
150
|
-
});
|
|
165
|
+
session.claudeProcess.once('system_init', done);
|
|
166
|
+
session.claudeProcess.once('exit', done); // fail-fast if process dies during init
|
|
151
167
|
});
|
|
152
168
|
}
|
|
153
169
|
/**
|
|
@@ -205,18 +221,23 @@ export class SessionLifecycle {
|
|
|
205
221
|
// "Session ID is already in use" means another process holds the lock.
|
|
206
222
|
// Retrying with the same session ID will fail every time, so treat this
|
|
207
223
|
// as a non-restartable exit (same as stopped-by-user).
|
|
208
|
-
|
|
224
|
+
// ClaudeProcess has diagnostic methods (hasSessionConflict, hadOutput, hasSpawnFailed)
|
|
225
|
+
// that OpenCodeProcess does not. Duck-type check via property existence.
|
|
226
|
+
const proc = exitedProcess;
|
|
227
|
+
const sessionConflict = proc.hasSessionConflict ? proc.hasSessionConflict() : false;
|
|
228
|
+
const producedOutput = proc.hadOutput ? proc.hadOutput() : true;
|
|
229
|
+
const spawnFailed = proc.hasSpawnFailed ? proc.hasSpawnFailed() : false;
|
|
209
230
|
// If the process exited without ever producing stdout output, --resume
|
|
210
231
|
// hung on a broken/stale session. Clear claudeSessionId so the next
|
|
211
232
|
// restart attempt uses a fresh session instead of retrying the same
|
|
212
233
|
// broken resume — which would just hang again.
|
|
213
234
|
// Exception: if spawn() itself failed (ENOENT/EACCES), the process never
|
|
214
235
|
// started — the session data on disk is fine, so preserve the ID for retry.
|
|
215
|
-
if (!
|
|
236
|
+
if (!producedOutput && session.claudeSessionId && !spawnFailed) {
|
|
216
237
|
console.warn(`[restart] Session ${sessionId} produced no output before exit — clearing claudeSessionId to force fresh session`);
|
|
217
238
|
session.claudeSessionId = null;
|
|
218
239
|
}
|
|
219
|
-
if (
|
|
240
|
+
if (spawnFailed) {
|
|
220
241
|
console.warn(`[restart] Session ${sessionId} spawn failed (binary not found) — preserving claudeSessionId for retry`);
|
|
221
242
|
}
|
|
222
243
|
// Before evaluating restart, check if the working directory still exists.
|
|
@@ -343,8 +364,8 @@ export class SessionLifecycle {
|
|
|
343
364
|
const session = this.deps.getSession(sessionId);
|
|
344
365
|
if (session?.claudeProcess) {
|
|
345
366
|
session._stoppedByUser = true;
|
|
346
|
-
if (session.
|
|
347
|
-
clearTimeout(session.
|
|
367
|
+
if (session._apiRetry?.timer)
|
|
368
|
+
clearTimeout(session._apiRetry.timer);
|
|
348
369
|
if (session._restartTimer) {
|
|
349
370
|
clearTimeout(session._restartTimer);
|
|
350
371
|
session._restartTimer = undefined;
|
|
@@ -366,8 +387,8 @@ export class SessionLifecycle {
|
|
|
366
387
|
return;
|
|
367
388
|
const cp = session.claudeProcess;
|
|
368
389
|
session._stoppedByUser = true;
|
|
369
|
-
if (session.
|
|
370
|
-
clearTimeout(session.
|
|
390
|
+
if (session._apiRetry?.timer)
|
|
391
|
+
clearTimeout(session._apiRetry.timer);
|
|
371
392
|
if (session._restartTimer) {
|
|
372
393
|
clearTimeout(session._restartTimer);
|
|
373
394
|
session._restartTimer = undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-lifecycle.js","sourceRoot":"","sources":["../session-lifecycle.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session-lifecycle.js","sourceRoot":"","sources":["../session-lifecycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
* - evaluateRestart: pure restart-decision logic (used by SessionLifecycle)
|
|
20
20
|
*/
|
|
21
21
|
import type { WebSocket } from 'ws';
|
|
22
|
+
import type { CodingProvider } from './coding-process.js';
|
|
22
23
|
import { SessionArchive } from './session-archive.js';
|
|
23
24
|
import type { DiffFileStatus, DiffScope, Session, SessionInfo, WsServerMessage } from './types.js';
|
|
24
25
|
import { ApprovalManager } from './approval-manager.js';
|
|
@@ -34,6 +35,10 @@ export interface CreateSessionOptions {
|
|
|
34
35
|
permissionMode?: import('./types.js').PermissionMode;
|
|
35
36
|
/** Additional tools to pre-approve via --allowedTools (e.g. 'Bash(curl:*)', 'WebFetch'). */
|
|
36
37
|
allowedTools?: string[];
|
|
38
|
+
/** Extra directories to grant Claude access to via --add-dir. */
|
|
39
|
+
addDirs?: string[];
|
|
40
|
+
/** AI provider to use for this session. Defaults to 'claude'. */
|
|
41
|
+
provider?: import('./coding-process.js').CodingProvider;
|
|
37
42
|
}
|
|
38
43
|
export declare class SessionManager {
|
|
39
44
|
/** All active (non-archived) sessions, keyed by session UUID. */
|
|
@@ -155,6 +160,7 @@ export declare class SessionManager {
|
|
|
155
160
|
}>;
|
|
156
161
|
/** Clear the isProcessing flag for a session and broadcast the update. */
|
|
157
162
|
clearProcessingFlag(sessionId: string): void;
|
|
163
|
+
private serializeSession;
|
|
158
164
|
list(): SessionInfo[];
|
|
159
165
|
/** List ALL sessions including orchestrator — used by orchestrator cleanup endpoints. */
|
|
160
166
|
listAll(): SessionInfo[];
|
|
@@ -240,6 +246,9 @@ export declare class SessionManager {
|
|
|
240
246
|
always: boolean;
|
|
241
247
|
answer?: string;
|
|
242
248
|
}>;
|
|
249
|
+
getSessionProvider(sessionId: string): string;
|
|
250
|
+
/** Update the provider for a session and restart with the new provider process. */
|
|
251
|
+
setProvider(sessionId: string, provider: CodingProvider): boolean;
|
|
243
252
|
/** Update the model for a session and restart Claude with the new model. */
|
|
244
253
|
setModel(sessionId: string, model: string): boolean;
|
|
245
254
|
/** Update the permission mode for a session and restart Claude with the new mode. */
|
|
@@ -62,6 +62,12 @@ const API_RETRY_PATTERNS = [
|
|
|
62
62
|
/502/,
|
|
63
63
|
/503/,
|
|
64
64
|
];
|
|
65
|
+
/** Sources that represent headless (non-interactive) sessions managed by their own lifecycles. */
|
|
66
|
+
const HEADLESS_SOURCES = new Set(['webhook', 'workflow', 'stepflow', 'agent', 'orchestrator']);
|
|
67
|
+
/** Check whether a session is headless (webhook, workflow, stepflow, agent, orchestrator). */
|
|
68
|
+
function isHeadlessSession(session) {
|
|
69
|
+
return HEADLESS_SOURCES.has(session.source ?? '');
|
|
70
|
+
}
|
|
65
71
|
export class SessionManager {
|
|
66
72
|
/** All active (non-archived) sessions, keyed by session UUID. */
|
|
67
73
|
sessions = new Map();
|
|
@@ -159,7 +165,7 @@ export class SessionManager {
|
|
|
159
165
|
const now = Date.now();
|
|
160
166
|
for (const session of this.sessions.values()) {
|
|
161
167
|
// Skip headless sessions — they are managed by their own lifecycles
|
|
162
|
-
if (session
|
|
168
|
+
if (isHeadlessSession(session))
|
|
163
169
|
continue;
|
|
164
170
|
// Skip sessions with connected clients or no running process
|
|
165
171
|
if (session.clients.size > 0 || !session.claudeProcess?.isAlive())
|
|
@@ -186,10 +192,10 @@ export class SessionManager {
|
|
|
186
192
|
}
|
|
187
193
|
}
|
|
188
194
|
// Prune stale sessions: no process, no clients, older than STALE_SESSION_AGE_MS
|
|
189
|
-
//
|
|
195
|
+
// Headless sessions are exempt from stale pruning — they are long-lived by design.
|
|
190
196
|
const staleIds = [];
|
|
191
197
|
for (const session of this.sessions.values()) {
|
|
192
|
-
if (session
|
|
198
|
+
if (isHeadlessSession(session))
|
|
193
199
|
continue;
|
|
194
200
|
if (session.claudeProcess?.isAlive())
|
|
195
201
|
continue;
|
|
@@ -246,9 +252,11 @@ export class SessionManager {
|
|
|
246
252
|
groupDir: options?.groupDir,
|
|
247
253
|
created: new Date().toISOString(),
|
|
248
254
|
source: options?.source ?? 'manual',
|
|
255
|
+
provider: options?.provider ?? 'claude',
|
|
249
256
|
model: options?.model,
|
|
250
257
|
permissionMode: options?.permissionMode,
|
|
251
258
|
allowedTools: options?.allowedTools,
|
|
259
|
+
addDirs: options?.addDirs,
|
|
252
260
|
claudeProcess: null,
|
|
253
261
|
clients: new Set(),
|
|
254
262
|
outputHistory: [],
|
|
@@ -257,7 +265,7 @@ export class SessionManager {
|
|
|
257
265
|
lastRestartAt: null,
|
|
258
266
|
_stoppedByUser: false,
|
|
259
267
|
_wasActiveBeforeRestart: false,
|
|
260
|
-
|
|
268
|
+
_apiRetry: { count: 0 },
|
|
261
269
|
_turnCount: 0,
|
|
262
270
|
_claudeTurnCount: 0,
|
|
263
271
|
_namingAttempts: 0,
|
|
@@ -589,9 +597,8 @@ export class SessionManager {
|
|
|
589
597
|
this._globalBroadcast?.({ type: 'sessions_updated' });
|
|
590
598
|
}
|
|
591
599
|
}
|
|
592
|
-
|
|
593
|
-
return
|
|
594
|
-
.map((s) => ({
|
|
600
|
+
serializeSession(s) {
|
|
601
|
+
return {
|
|
595
602
|
id: s.id,
|
|
596
603
|
name: s.name,
|
|
597
604
|
created: s.created,
|
|
@@ -603,24 +610,17 @@ export class SessionManager {
|
|
|
603
610
|
connectedClients: s.clients.size,
|
|
604
611
|
lastActivity: new Date(s._lastActivityAt).toISOString(),
|
|
605
612
|
source: s.source,
|
|
606
|
-
}
|
|
613
|
+
};
|
|
614
|
+
}
|
|
615
|
+
list() {
|
|
616
|
+
return Array.from(this.sessions.values())
|
|
617
|
+
.filter((s) => s.source !== 'orchestrator')
|
|
618
|
+
.map((s) => this.serializeSession(s));
|
|
607
619
|
}
|
|
608
620
|
/** List ALL sessions including orchestrator — used by orchestrator cleanup endpoints. */
|
|
609
621
|
listAll() {
|
|
610
622
|
return Array.from(this.sessions.values())
|
|
611
|
-
.map((s) => (
|
|
612
|
-
id: s.id,
|
|
613
|
-
name: s.name,
|
|
614
|
-
created: s.created,
|
|
615
|
-
active: s.claudeProcess?.isAlive() ?? false,
|
|
616
|
-
isProcessing: s.isProcessing,
|
|
617
|
-
workingDir: s.workingDir,
|
|
618
|
-
groupDir: s.groupDir,
|
|
619
|
-
worktreePath: s.worktreePath,
|
|
620
|
-
connectedClients: s.clients.size,
|
|
621
|
-
lastActivity: new Date(s._lastActivityAt).toISOString(),
|
|
622
|
-
source: s.source,
|
|
623
|
-
}));
|
|
623
|
+
.map((s) => this.serializeSession(s));
|
|
624
624
|
}
|
|
625
625
|
rename(sessionId, newName) {
|
|
626
626
|
const session = this.sessions.get(sessionId);
|
|
@@ -704,8 +704,8 @@ export class SessionManager {
|
|
|
704
704
|
return false;
|
|
705
705
|
// Prevent auto-restart when deleting
|
|
706
706
|
session._stoppedByUser = true;
|
|
707
|
-
if (session.
|
|
708
|
-
clearTimeout(session.
|
|
707
|
+
if (session._apiRetry.timer)
|
|
708
|
+
clearTimeout(session._apiRetry.timer);
|
|
709
709
|
if (session._namingTimer)
|
|
710
710
|
clearTimeout(session._namingTimer);
|
|
711
711
|
if (session._leaveGraceTimer)
|
|
@@ -892,23 +892,23 @@ export class SessionManager {
|
|
|
892
892
|
*/
|
|
893
893
|
handleApiRetry(session, sessionId, result) {
|
|
894
894
|
if (!session._lastUserInput || !this.isRetryableApiError(result)) {
|
|
895
|
-
session.
|
|
896
|
-
session.
|
|
895
|
+
session._apiRetry.count = 0;
|
|
896
|
+
session._apiRetry.scheduled = false;
|
|
897
897
|
return false;
|
|
898
898
|
}
|
|
899
899
|
// Skip retry if the original input is older than 60 seconds — context has likely moved on
|
|
900
900
|
if (session._lastUserInputAt && Date.now() - session._lastUserInputAt > 60_000) {
|
|
901
901
|
console.log(`[api-retry] skipping stale retry for session=${sessionId} (input age=${Math.round((Date.now() - session._lastUserInputAt) / 1000)}s)`);
|
|
902
|
-
session.
|
|
903
|
-
session.
|
|
902
|
+
session._apiRetry.count = 0;
|
|
903
|
+
session._apiRetry.scheduled = false;
|
|
904
904
|
return false;
|
|
905
905
|
}
|
|
906
|
-
if (session.
|
|
906
|
+
if (session._apiRetry.count < MAX_API_RETRIES) {
|
|
907
907
|
// Prevent duplicate scheduling from concurrent error paths
|
|
908
|
-
if (session.
|
|
908
|
+
if (session._apiRetry.scheduled)
|
|
909
909
|
return true;
|
|
910
|
-
session.
|
|
911
|
-
const attempt = session.
|
|
910
|
+
session._apiRetry.count++;
|
|
911
|
+
const attempt = session._apiRetry.count;
|
|
912
912
|
const delay = API_RETRY_BASE_DELAY_MS * Math.pow(2, attempt - 1);
|
|
913
913
|
const retryMsg = {
|
|
914
914
|
type: 'system_message',
|
|
@@ -918,12 +918,12 @@ export class SessionManager {
|
|
|
918
918
|
this.addToHistory(session, retryMsg);
|
|
919
919
|
this.broadcast(session, retryMsg);
|
|
920
920
|
console.log(`[api-retry] session=${sessionId} attempt=${attempt}/${MAX_API_RETRIES} delay=${delay}ms error=${result.slice(0, 200)}`);
|
|
921
|
-
if (session.
|
|
922
|
-
clearTimeout(session.
|
|
923
|
-
session.
|
|
924
|
-
session.
|
|
925
|
-
session.
|
|
926
|
-
session.
|
|
921
|
+
if (session._apiRetry.timer)
|
|
922
|
+
clearTimeout(session._apiRetry.timer);
|
|
923
|
+
session._apiRetry.scheduled = true;
|
|
924
|
+
session._apiRetry.timer = setTimeout(() => {
|
|
925
|
+
session._apiRetry.timer = undefined;
|
|
926
|
+
session._apiRetry.scheduled = false;
|
|
927
927
|
if (!session.claudeProcess?.isAlive() || session._stoppedByUser)
|
|
928
928
|
return;
|
|
929
929
|
console.log(`[api-retry] resending message for session=${sessionId} attempt=${attempt}`);
|
|
@@ -939,8 +939,8 @@ export class SessionManager {
|
|
|
939
939
|
};
|
|
940
940
|
this.addToHistory(session, exhaustedMsg);
|
|
941
941
|
this.broadcast(session, exhaustedMsg);
|
|
942
|
-
session.
|
|
943
|
-
session.
|
|
942
|
+
session._apiRetry.count = 0;
|
|
943
|
+
session._apiRetry.scheduled = false;
|
|
944
944
|
return false;
|
|
945
945
|
}
|
|
946
946
|
/**
|
|
@@ -948,8 +948,8 @@ export class SessionManager {
|
|
|
948
948
|
* and trigger session naming if needed.
|
|
949
949
|
*/
|
|
950
950
|
finalizeResult(session, sessionId, result, isError) {
|
|
951
|
-
session.
|
|
952
|
-
session.
|
|
951
|
+
session._apiRetry.count = 0;
|
|
952
|
+
session._apiRetry.scheduled = false;
|
|
953
953
|
session._lastUserInput = undefined;
|
|
954
954
|
session._lastUserInputAt = undefined;
|
|
955
955
|
if (isError) {
|
|
@@ -1013,15 +1013,33 @@ export class SessionManager {
|
|
|
1013
1013
|
const combined = context + '\n\n' + data;
|
|
1014
1014
|
session._lastUserInput = combined;
|
|
1015
1015
|
session._lastUserInputAt = Date.now();
|
|
1016
|
-
session.
|
|
1016
|
+
session._apiRetry.count = 0;
|
|
1017
1017
|
if (!session.isProcessing) {
|
|
1018
1018
|
session.isProcessing = true;
|
|
1019
1019
|
this._globalBroadcast?.({ type: 'sessions_updated' });
|
|
1020
1020
|
}
|
|
1021
|
-
session.claudeProcess
|
|
1021
|
+
if (session.claudeProcess && !session.claudeProcess.isReady()) {
|
|
1022
|
+
void this.waitForReady(sessionId).then(() => session.claudeProcess?.sendMessage(combined));
|
|
1023
|
+
}
|
|
1024
|
+
else {
|
|
1025
|
+
session.claudeProcess?.sendMessage(combined);
|
|
1026
|
+
}
|
|
1022
1027
|
return;
|
|
1023
1028
|
}
|
|
1024
1029
|
}
|
|
1030
|
+
// Process just started — if not ready yet (OpenCode needs server init),
|
|
1031
|
+
// queue the message via waitForReady.
|
|
1032
|
+
if (session.claudeProcess && !session.claudeProcess.isReady()) {
|
|
1033
|
+
session._lastUserInput = data;
|
|
1034
|
+
session._lastUserInputAt = Date.now();
|
|
1035
|
+
session._apiRetry.count = 0;
|
|
1036
|
+
if (!session.isProcessing) {
|
|
1037
|
+
session.isProcessing = true;
|
|
1038
|
+
this._globalBroadcast?.({ type: 'sessions_updated' });
|
|
1039
|
+
}
|
|
1040
|
+
void this.waitForReady(sessionId).then(() => session.claudeProcess?.sendMessage(data));
|
|
1041
|
+
return;
|
|
1042
|
+
}
|
|
1025
1043
|
}
|
|
1026
1044
|
// Track turn count; retry naming on subsequent interactions if still unnamed
|
|
1027
1045
|
if (session._turnCount === 0 && session.name.startsWith('hub:')) {
|
|
@@ -1033,7 +1051,7 @@ export class SessionManager {
|
|
|
1033
1051
|
}
|
|
1034
1052
|
session._lastUserInput = data;
|
|
1035
1053
|
session._lastUserInputAt = Date.now();
|
|
1036
|
-
session.
|
|
1054
|
+
session._apiRetry.count = 0;
|
|
1037
1055
|
if (!session.isProcessing) {
|
|
1038
1056
|
session.isProcessing = true;
|
|
1039
1057
|
this._globalBroadcast?.({ type: 'sessions_updated' });
|
|
@@ -1055,6 +1073,30 @@ export class SessionManager {
|
|
|
1055
1073
|
requestToolApproval(sessionId, toolName, toolInput) {
|
|
1056
1074
|
return this.promptRouter.requestToolApproval(sessionId, toolName, toolInput);
|
|
1057
1075
|
}
|
|
1076
|
+
getSessionProvider(sessionId) {
|
|
1077
|
+
return this.sessions.get(sessionId)?.provider ?? 'claude';
|
|
1078
|
+
}
|
|
1079
|
+
/** Update the provider for a session and restart with the new provider process. */
|
|
1080
|
+
setProvider(sessionId, provider) {
|
|
1081
|
+
const session = this.sessions.get(sessionId);
|
|
1082
|
+
if (!session)
|
|
1083
|
+
return false;
|
|
1084
|
+
if (session.provider === provider)
|
|
1085
|
+
return true;
|
|
1086
|
+
session.provider = provider;
|
|
1087
|
+
session.claudeSessionId = null;
|
|
1088
|
+
this.persistToDiskDebounced();
|
|
1089
|
+
if (session.claudeProcess?.isAlive()) {
|
|
1090
|
+
this.stopClaude(sessionId);
|
|
1091
|
+
session._stoppedByUser = false;
|
|
1092
|
+
setTimeout(() => {
|
|
1093
|
+
if (this.sessions.has(sessionId) && !session._stoppedByUser) {
|
|
1094
|
+
this.startClaude(sessionId);
|
|
1095
|
+
}
|
|
1096
|
+
}, 500);
|
|
1097
|
+
}
|
|
1098
|
+
return true;
|
|
1099
|
+
}
|
|
1058
1100
|
/** Update the model for a session and restart Claude with the new model. */
|
|
1059
1101
|
setModel(sessionId, model) {
|
|
1060
1102
|
const session = this.sessions.get(sessionId);
|
|
@@ -1360,7 +1402,7 @@ export class SessionManager {
|
|
|
1360
1402
|
restoreActiveSessions() {
|
|
1361
1403
|
const toRestore = [];
|
|
1362
1404
|
for (const session of this.sessions.values()) {
|
|
1363
|
-
if (session._wasActiveBeforeRestart && session.claudeSessionId) {
|
|
1405
|
+
if (session._wasActiveBeforeRestart && session.claudeSessionId && session.source !== 'webhook') {
|
|
1364
1406
|
toRestore.push(session);
|
|
1365
1407
|
}
|
|
1366
1408
|
}
|