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.
Files changed (81) hide show
  1. package/dist/assets/index-BvKzbtKg.css +1 -0
  2. package/dist/assets/index-D59Xr9pK.js +182 -0
  3. package/dist/index.html +2 -2
  4. package/package.json +1 -1
  5. package/server/dist/approval-manager.js +1 -1
  6. package/server/dist/claude-process.d.ts +8 -5
  7. package/server/dist/claude-process.js +21 -63
  8. package/server/dist/claude-process.js.map +1 -1
  9. package/server/dist/coding-process.d.ts +83 -0
  10. package/server/dist/coding-process.js +32 -0
  11. package/server/dist/coding-process.js.map +1 -0
  12. package/server/dist/commit-event-handler.js +1 -0
  13. package/server/dist/commit-event-handler.js.map +1 -1
  14. package/server/dist/docs-routes.js +22 -1
  15. package/server/dist/docs-routes.js.map +1 -1
  16. package/server/dist/native-permissions.js +2 -1
  17. package/server/dist/native-permissions.js.map +1 -1
  18. package/server/dist/opencode-process.d.ts +104 -0
  19. package/server/dist/opencode-process.js +657 -0
  20. package/server/dist/opencode-process.js.map +1 -0
  21. package/server/dist/orchestrator-children.d.ts +9 -0
  22. package/server/dist/orchestrator-children.js +28 -1
  23. package/server/dist/orchestrator-children.js.map +1 -1
  24. package/server/dist/orchestrator-manager.js +17 -0
  25. package/server/dist/orchestrator-manager.js.map +1 -1
  26. package/server/dist/orchestrator-routes.js +8 -1
  27. package/server/dist/orchestrator-routes.js.map +1 -1
  28. package/server/dist/prompt-router.d.ts +2 -2
  29. package/server/dist/prompt-router.js +12 -0
  30. package/server/dist/prompt-router.js.map +1 -1
  31. package/server/dist/session-lifecycle.d.ts +4 -4
  32. package/server/dist/session-lifecycle.js +42 -21
  33. package/server/dist/session-lifecycle.js.map +1 -1
  34. package/server/dist/session-manager.d.ts +9 -0
  35. package/server/dist/session-manager.js +87 -45
  36. package/server/dist/session-manager.js.map +1 -1
  37. package/server/dist/session-persistence.d.ts +1 -0
  38. package/server/dist/session-persistence.js +3 -1
  39. package/server/dist/session-persistence.js.map +1 -1
  40. package/server/dist/session-routes.js +15 -1
  41. package/server/dist/session-routes.js.map +1 -1
  42. package/server/dist/stepflow-handler.d.ts +2 -2
  43. package/server/dist/stepflow-handler.js +4 -4
  44. package/server/dist/stepflow-handler.js.map +1 -1
  45. package/server/dist/tool-labels.d.ts +8 -0
  46. package/server/dist/tool-labels.js +51 -0
  47. package/server/dist/tool-labels.js.map +1 -0
  48. package/server/dist/tsconfig.tsbuildinfo +1 -1
  49. package/server/dist/types.d.ts +25 -10
  50. package/server/dist/types.js +4 -1
  51. package/server/dist/types.js.map +1 -1
  52. package/server/dist/webhook-dedup.d.ts +11 -0
  53. package/server/dist/webhook-dedup.js +23 -0
  54. package/server/dist/webhook-dedup.js.map +1 -1
  55. package/server/dist/webhook-handler.d.ts +20 -4
  56. package/server/dist/webhook-handler.js +256 -20
  57. package/server/dist/webhook-handler.js.map +1 -1
  58. package/server/dist/webhook-pr-cache.d.ts +57 -0
  59. package/server/dist/webhook-pr-cache.js +95 -0
  60. package/server/dist/webhook-pr-cache.js.map +1 -0
  61. package/server/dist/webhook-pr-github.d.ts +68 -0
  62. package/server/dist/webhook-pr-github.js +202 -0
  63. package/server/dist/webhook-pr-github.js.map +1 -0
  64. package/server/dist/webhook-pr-prompt.d.ts +27 -0
  65. package/server/dist/webhook-pr-prompt.js +251 -0
  66. package/server/dist/webhook-pr-prompt.js.map +1 -0
  67. package/server/dist/webhook-types.d.ts +70 -1
  68. package/server/dist/webhook-workspace.js +20 -1
  69. package/server/dist/webhook-workspace.js.map +1 -1
  70. package/server/dist/workflow-config.d.ts +2 -0
  71. package/server/dist/workflow-config.js.map +1 -1
  72. package/server/dist/workflow-loader.js +3 -0
  73. package/server/dist/workflow-loader.js.map +1 -1
  74. package/server/dist/workflow-routes.js +6 -2
  75. package/server/dist/workflow-routes.js.map +1 -1
  76. package/server/dist/ws-message-handler.js +22 -3
  77. package/server/dist/ws-message-handler.js.map +1 -1
  78. package/server/dist/ws-server.js +4 -2
  79. package/server/dist/ws-server.js.map +1 -1
  80. package/dist/assets/index-BFkKlY3O.js +0 -182
  81. 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
- const cp = new ClaudeProcess(session.workingDir, {
113
- sessionId: session.claudeSessionId || undefined,
114
- extraEnv,
115
- model: session.model,
116
- permissionMode: session.permissionMode,
117
- resume,
118
- allowedTools: mergedAllowedTools,
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 completed init in a prior turn, resolve immediately
140
- if (session.claudeSessionId)
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
- clearTimeout(timer);
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
- const sessionConflict = exitedProcess.hasSessionConflict();
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 (!exitedProcess.hadOutput() && session.claudeSessionId && !exitedProcess.hasSpawnFailed()) {
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 (exitedProcess.hasSpawnFailed()) {
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._apiRetryTimer)
347
- clearTimeout(session._apiRetryTimer);
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._apiRetryTimer)
370
- clearTimeout(session._apiRetryTimer);
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.source === 'webhook' || session.source === 'workflow' || session.source === 'stepflow' || session.source === 'agent' || session.source === 'orchestrator')
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
- // Agent and orchestrator sessions are exempt — they are long-lived by design.
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.source === 'agent' || session.source === 'orchestrator')
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
- _apiRetryCount: 0,
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
- list() {
593
- return Array.from(this.sessions.values())
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._apiRetryTimer)
708
- clearTimeout(session._apiRetryTimer);
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._apiRetryCount = 0;
896
- session._apiRetryScheduled = false;
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._apiRetryCount = 0;
903
- session._apiRetryScheduled = false;
902
+ session._apiRetry.count = 0;
903
+ session._apiRetry.scheduled = false;
904
904
  return false;
905
905
  }
906
- if (session._apiRetryCount < MAX_API_RETRIES) {
906
+ if (session._apiRetry.count < MAX_API_RETRIES) {
907
907
  // Prevent duplicate scheduling from concurrent error paths
908
- if (session._apiRetryScheduled)
908
+ if (session._apiRetry.scheduled)
909
909
  return true;
910
- session._apiRetryCount++;
911
- const attempt = session._apiRetryCount;
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._apiRetryTimer)
922
- clearTimeout(session._apiRetryTimer);
923
- session._apiRetryScheduled = true;
924
- session._apiRetryTimer = setTimeout(() => {
925
- session._apiRetryTimer = undefined;
926
- session._apiRetryScheduled = false;
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._apiRetryCount = 0;
943
- session._apiRetryScheduled = false;
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._apiRetryCount = 0;
952
- session._apiRetryScheduled = false;
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._apiRetryCount = 0;
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?.sendMessage(combined);
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._apiRetryCount = 0;
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
  }