sessix-server 0.1.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 (61) hide show
  1. package/dist/approval/ApprovalProxy.d.ts +86 -0
  2. package/dist/approval/ApprovalProxy.d.ts.map +1 -0
  3. package/dist/approval/ApprovalProxy.js +363 -0
  4. package/dist/approval/ApprovalProxy.js.map +1 -0
  5. package/dist/hooks/HookInstaller.d.ts +55 -0
  6. package/dist/hooks/HookInstaller.d.ts.map +1 -0
  7. package/dist/hooks/HookInstaller.js +215 -0
  8. package/dist/hooks/HookInstaller.js.map +1 -0
  9. package/dist/index.d.ts +2 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +3115 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/mdns/MdnsService.d.ts +36 -0
  14. package/dist/mdns/MdnsService.d.ts.map +1 -0
  15. package/dist/mdns/MdnsService.js +66 -0
  16. package/dist/mdns/MdnsService.js.map +1 -0
  17. package/dist/notification/ActivityPushChannel.d.ts +54 -0
  18. package/dist/notification/ActivityPushChannel.d.ts.map +1 -0
  19. package/dist/notification/ActivityPushChannel.js +235 -0
  20. package/dist/notification/ActivityPushChannel.js.map +1 -0
  21. package/dist/notification/ExpoNotificationChannel.d.ts +17 -0
  22. package/dist/notification/ExpoNotificationChannel.d.ts.map +1 -0
  23. package/dist/notification/ExpoNotificationChannel.js +57 -0
  24. package/dist/notification/ExpoNotificationChannel.js.map +1 -0
  25. package/dist/notification/MacNotificationChannel.d.ts +22 -0
  26. package/dist/notification/MacNotificationChannel.d.ts.map +1 -0
  27. package/dist/notification/MacNotificationChannel.js +33 -0
  28. package/dist/notification/MacNotificationChannel.js.map +1 -0
  29. package/dist/notification/NotificationService.d.ts +50 -0
  30. package/dist/notification/NotificationService.d.ts.map +1 -0
  31. package/dist/notification/NotificationService.js +177 -0
  32. package/dist/notification/NotificationService.js.map +1 -0
  33. package/dist/providers/ExecutionProvider.d.ts +60 -0
  34. package/dist/providers/ExecutionProvider.d.ts.map +1 -0
  35. package/dist/providers/ExecutionProvider.js +3 -0
  36. package/dist/providers/ExecutionProvider.js.map +1 -0
  37. package/dist/providers/ProcessProvider.d.ts +117 -0
  38. package/dist/providers/ProcessProvider.d.ts.map +1 -0
  39. package/dist/providers/ProcessProvider.js +507 -0
  40. package/dist/providers/ProcessProvider.js.map +1 -0
  41. package/dist/server.d.ts +32 -0
  42. package/dist/server.d.ts.map +1 -0
  43. package/dist/server.js +3054 -0
  44. package/dist/server.js.map +1 -0
  45. package/dist/session/ProjectReader.d.ts +44 -0
  46. package/dist/session/ProjectReader.d.ts.map +1 -0
  47. package/dist/session/ProjectReader.js +471 -0
  48. package/dist/session/ProjectReader.js.map +1 -0
  49. package/dist/session/SessionFileWatcher.d.ts +35 -0
  50. package/dist/session/SessionFileWatcher.d.ts.map +1 -0
  51. package/dist/session/SessionFileWatcher.js +207 -0
  52. package/dist/session/SessionFileWatcher.js.map +1 -0
  53. package/dist/session/SessionManager.d.ts +114 -0
  54. package/dist/session/SessionManager.d.ts.map +1 -0
  55. package/dist/session/SessionManager.js +356 -0
  56. package/dist/session/SessionManager.js.map +1 -0
  57. package/dist/ws/WsBridge.d.ts +55 -0
  58. package/dist/ws/WsBridge.d.ts.map +1 -0
  59. package/dist/ws/WsBridge.js +220 -0
  60. package/dist/ws/WsBridge.js.map +1 -0
  61. package/package.json +38 -0
@@ -0,0 +1,507 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProcessProvider = void 0;
4
+ const child_process_1 = require("child_process");
5
+ const readline_1 = require("readline");
6
+ const events_1 = require("events");
7
+ const node_os_1 = require("node:os");
8
+ const uuid_1 = require("uuid");
9
+ /** 查找 claude CLI 的完整路径 */
10
+ function findClaudePath() {
11
+ try {
12
+ return (0, child_process_1.execSync)('which claude', { encoding: 'utf-8' }).trim();
13
+ }
14
+ catch {
15
+ // 常见安装位置
16
+ const candidates = [
17
+ `${process.env.HOME}/.local/bin/claude`,
18
+ '/usr/local/bin/claude',
19
+ '/opt/homebrew/bin/claude',
20
+ ];
21
+ for (const candidate of candidates) {
22
+ try {
23
+ (0, child_process_1.execSync)(`test -x "${candidate}"`);
24
+ return candidate;
25
+ }
26
+ catch { /* 继续 */ }
27
+ }
28
+ return 'claude'; // 兜底,依赖 PATH
29
+ }
30
+ }
31
+ const CLAUDE_PATH = findClaudePath();
32
+ /**
33
+ * 基于 child_process.spawn 的 ExecutionProvider 实现
34
+ *
35
+ * 直接在本机通过 spawn 启动 `claude` CLI 进程,
36
+ * 从 stdout 逐行读取 NDJSON 格式的 stream-json 事件。
37
+ */
38
+ class ProcessProvider {
39
+ /** 活跃会话映射表:sessionId -> { session, process } */
40
+ activeSessions = new Map();
41
+ /** 事件发射器,用于分发 Claude 事件流 */
42
+ emitter = new events_1.EventEmitter();
43
+ /**
44
+ * 启动新会话或恢复已有会话
45
+ *
46
+ * 会 spawn 一个 `claude` CLI 进程,设置工作目录和环境变量,
47
+ * 并开始监听 stdout 的 NDJSON 输出。
48
+ */
49
+ async startSession(opts) {
50
+ const { projectPath, message, sessionId: existingSessionId, model } = opts;
51
+ const sessionId = existingSessionId ?? (0, uuid_1.v4)();
52
+ // 如果该 sessionId 已有活跃进程,先终止
53
+ if (this.activeSessions.has(sessionId)) {
54
+ await this.killSession(sessionId);
55
+ }
56
+ // 构建项目 ID(使用路径的最后一段)
57
+ const projectId = projectPath.split('/').filter(Boolean).pop() ?? 'unknown';
58
+ // 创建 Session 对象
59
+ const session = {
60
+ id: sessionId,
61
+ projectId,
62
+ projectPath,
63
+ status: 'running',
64
+ createdAt: Date.now(),
65
+ lastActiveAt: Date.now(),
66
+ summary: message.slice(0, 80),
67
+ };
68
+ // 启动 Claude CLI 进程(如果是恢复已有会话,使用 --resume)
69
+ const resume = opts.resume ?? !!existingSessionId;
70
+ const proc = this.spawnClaudeProcess(sessionId, projectPath, resume, model);
71
+ // 写入第一条用户消息
72
+ this.writeUserMessage(proc, message, sessionId);
73
+ session.pid = proc.pid;
74
+ // 保存到活跃会话映射
75
+ this.activeSessions.set(sessionId, { session, process: proc, model });
76
+ // 监听进程错误(如命令不存在)
77
+ proc.on('error', (err) => {
78
+ console.error(`[ProcessProvider] 会话 ${sessionId} 进程错误:`, err.message);
79
+ // 立即从活跃映射中移除,防止僵尸会话
80
+ this.activeSessions.delete(sessionId);
81
+ // 发射合成 error result 事件,让 SessionManager 广播状态变化到手机端
82
+ const syntheticResult = {
83
+ type: 'result',
84
+ subtype: 'error',
85
+ result: `进程启动失败: ${err.message}`,
86
+ session_id: sessionId,
87
+ duration_ms: 0,
88
+ is_error: true,
89
+ num_turns: 0,
90
+ };
91
+ this.emitter.emit(this.getEventName(sessionId), syntheticResult);
92
+ });
93
+ // 监听 stdout,逐行解析 NDJSON
94
+ this.attachStdoutListener(sessionId, proc);
95
+ // 监听 stderr,记录日志但不影响运行
96
+ this.attachStderrListener(sessionId, proc);
97
+ // 监听进程退出
98
+ this.attachExitListener(sessionId, proc);
99
+ return session;
100
+ }
101
+ /**
102
+ * 终止指定会话
103
+ *
104
+ * kill 进程并从活跃映射中移除。
105
+ */
106
+ async killSession(sessionId) {
107
+ const entry = this.activeSessions.get(sessionId);
108
+ if (!entry) {
109
+ return;
110
+ }
111
+ // 终止进程(检查 exitCode/signalCode 判断进程是否已退出,
112
+ // 而非依赖 .killed 标志 — 它只表示 kill() 是否被调用过)
113
+ if (entry.process.exitCode === null && entry.process.signalCode === null) {
114
+ // 先关闭 stdin,让 Claude 进程感知到 EOF 并准备退出
115
+ try {
116
+ entry.process.stdin?.end();
117
+ }
118
+ catch { /* 忽略 */ }
119
+ entry.process.kill('SIGTERM');
120
+ // 给进程 3 秒优雅退出时间,超时则强制终止
121
+ await new Promise((resolve) => {
122
+ const timeout = setTimeout(() => {
123
+ if (entry.process.exitCode === null && entry.process.signalCode === null) {
124
+ entry.process.kill('SIGKILL');
125
+ }
126
+ resolve();
127
+ }, 3000);
128
+ entry.process.once('exit', () => {
129
+ clearTimeout(timeout);
130
+ resolve();
131
+ });
132
+ });
133
+ }
134
+ // 从活跃映射中移除
135
+ this.activeSessions.delete(sessionId);
136
+ }
137
+ /**
138
+ * 向已有会话发送新消息
139
+ *
140
+ * 快速路径:进程存活时直接写 stdin(毫秒级响应)。
141
+ * 慢速路径:进程已退出时 respawn 并 --resume。
142
+ */
143
+ async sendMessage(sessionId, message) {
144
+ const entry = this.activeSessions.get(sessionId);
145
+ if (!entry) {
146
+ throw new Error(`会话 ${sessionId} 不存在或已结束`);
147
+ }
148
+ // 快速路径:进程存活,直接写 stdin
149
+ if (entry.process.exitCode === null &&
150
+ entry.process.signalCode === null &&
151
+ !entry.process.stdin?.destroyed) {
152
+ this.writeUserMessage(entry.process, message, sessionId);
153
+ return;
154
+ }
155
+ // 慢速路径:进程已退出(崩溃/OOM),respawn 并恢复会话
156
+ console.log(`[ProcessProvider] 会话 ${sessionId}: 进程已退出,respawn 重新启动`);
157
+ const proc = this.spawnClaudeProcess(sessionId, entry.session.projectPath, true, entry.model);
158
+ this.writeUserMessage(proc, message, sessionId);
159
+ // 更新会话状态
160
+ entry.session.status = 'running';
161
+ entry.session.lastActiveAt = Date.now();
162
+ entry.session.pid = proc.pid;
163
+ entry.process = proc;
164
+ // 监听进程错误
165
+ proc.on('error', (err) => {
166
+ console.error(`[ProcessProvider] 会话 ${sessionId} sendMessage 进程错误:`, err.message);
167
+ this.activeSessions.delete(sessionId);
168
+ const syntheticResult = {
169
+ type: 'result',
170
+ subtype: 'error',
171
+ result: `消息发送失败: ${err.message}`,
172
+ session_id: sessionId,
173
+ duration_ms: 0,
174
+ is_error: true,
175
+ num_turns: 0,
176
+ };
177
+ this.emitter.emit(this.getEventName(sessionId), syntheticResult);
178
+ });
179
+ this.attachStdoutListener(sessionId, proc);
180
+ this.attachStderrListener(sessionId, proc);
181
+ this.attachExitListener(sessionId, proc);
182
+ }
183
+ /**
184
+ * 订阅指定会话的 Claude 事件流
185
+ *
186
+ * @returns 取消订阅函数
187
+ */
188
+ onEvent(sessionId, callback) {
189
+ const eventName = this.getEventName(sessionId);
190
+ this.emitter.on(eventName, callback);
191
+ // 返回取消订阅函数
192
+ return () => {
193
+ this.emitter.off(eventName, callback);
194
+ };
195
+ }
196
+ /**
197
+ * 获取当前所有活跃会话列表
198
+ */
199
+ getActiveSessions() {
200
+ return Array.from(this.activeSessions.values()).map((entry) => entry.session);
201
+ }
202
+ // ============================================
203
+ // 私有方法
204
+ // ============================================
205
+ /**
206
+ * 启动 claude CLI 进程(持久模式,stdin 保持开放接收多条消息)
207
+ */
208
+ spawnClaudeProcess(sessionId, projectPath, resume = false, model) {
209
+ const args = [
210
+ '--input-format', 'stream-json',
211
+ '--output-format', 'stream-json',
212
+ '--verbose',
213
+ '--include-partial-messages',
214
+ ];
215
+ if (resume) {
216
+ // 恢复已有会话:--resume <session-id>
217
+ args.push('--resume', sessionId);
218
+ }
219
+ else {
220
+ // 创建新会话:--session-id <uuid>
221
+ args.push('--session-id', sessionId);
222
+ }
223
+ if (model) {
224
+ args.push('--model', model);
225
+ }
226
+ // 构建子进程环境变量
227
+ // 移除 CLAUDECODE 以允许从 Claude Code 会话内启动独立的 Claude 实例
228
+ const env = { ...process.env, SESSIX_SESSION_ID: sessionId };
229
+ delete env.CLAUDECODE;
230
+ const proc = (0, child_process_1.spawn)(CLAUDE_PATH, args, {
231
+ cwd: projectPath,
232
+ env,
233
+ stdio: ['pipe', 'pipe', 'pipe'],
234
+ });
235
+ return proc;
236
+ }
237
+ /**
238
+ * 向持久进程的 stdin 写入一条用户消息(NDJSON 格式)
239
+ *
240
+ * 写入失败时合成 error result 事件,确保 SessionManager 能感知到失败。
241
+ */
242
+ writeUserMessage(proc, message, sessionId) {
243
+ const payload = JSON.stringify({
244
+ type: 'user',
245
+ session_id: '',
246
+ message: { role: 'user', content: [{ type: 'text', text: message }] },
247
+ parent_tool_use_id: null,
248
+ });
249
+ if (!proc.stdin || proc.stdin.destroyed) {
250
+ console.error(`[ProcessProvider] stdin 不可用,消息丢失`);
251
+ if (sessionId) {
252
+ this.emitWriteError(sessionId, '进程 stdin 已关闭,消息未送达');
253
+ }
254
+ return;
255
+ }
256
+ proc.stdin.write(payload + '\n', (err) => {
257
+ if (err && sessionId) {
258
+ console.error(`[ProcessProvider] 会话 ${sessionId} stdin 写入失败:`, err.message);
259
+ this.emitWriteError(sessionId, `消息发送失败: ${err.message}`);
260
+ }
261
+ });
262
+ }
263
+ /**
264
+ * 发出写入失败的合成错误事件
265
+ */
266
+ emitWriteError(sessionId, message) {
267
+ const syntheticResult = {
268
+ type: 'result',
269
+ subtype: 'error',
270
+ result: message,
271
+ session_id: sessionId,
272
+ duration_ms: 0,
273
+ is_error: true,
274
+ num_turns: 0,
275
+ };
276
+ this.emitter.emit(this.getEventName(sessionId), syntheticResult);
277
+ }
278
+ /**
279
+ * 挂载 stdout 监听器,逐行解析 NDJSON
280
+ */
281
+ attachStdoutListener(sessionId, proc) {
282
+ if (!proc.stdout) {
283
+ console.warn(`[ProcessProvider] 会话 ${sessionId}: stdout 不可用`);
284
+ return;
285
+ }
286
+ const rl = (0, readline_1.createInterface)({
287
+ input: proc.stdout,
288
+ crlfDelay: Infinity,
289
+ });
290
+ rl.on('line', (line) => {
291
+ // 跳过空行
292
+ const trimmed = line.trim();
293
+ if (!trimmed)
294
+ return;
295
+ // 尝试解析 JSON
296
+ const result = this.parseLine(trimmed);
297
+ if (result.ok) {
298
+ const event = result.value;
299
+ // 检测 AskUserQuestion tool_use,发射内部事件通知 SessionManager
300
+ if (event.type === 'assistant') {
301
+ for (const block of event.message.content) {
302
+ if (block.type === 'tool_use' && block.name === 'AskUserQuestion') {
303
+ const input = block.input;
304
+ this.emitter.emit(this.getQuestionEventName(sessionId), {
305
+ toolUseId: block.id,
306
+ question: input.question ?? '',
307
+ options: input.options,
308
+ });
309
+ }
310
+ }
311
+ }
312
+ // 更新会话状态
313
+ this.updateSessionStatus(sessionId, event);
314
+ // 发射事件
315
+ this.emitter.emit(this.getEventName(sessionId), event);
316
+ }
317
+ else {
318
+ console.warn(`[ProcessProvider] 会话 ${sessionId}: 无法解析行: ${trimmed.substring(0, 100)}`);
319
+ }
320
+ });
321
+ }
322
+ /**
323
+ * 挂载 stderr 监听器,记录日志
324
+ */
325
+ attachStderrListener(sessionId, proc) {
326
+ if (!proc.stderr)
327
+ return;
328
+ proc.stderr.on('data', (data) => {
329
+ const text = data.toString().trim();
330
+ if (text) {
331
+ console.error(`[ProcessProvider] 会话 ${sessionId} stderr: ${text}`);
332
+ }
333
+ });
334
+ }
335
+ /**
336
+ * 挂载进程退出监听器
337
+ *
338
+ * 当进程退出时发出合成的 result 事件,确保 SessionManager 能感知到退出。
339
+ * 正常退出时 Claude 会先通过 stdout 发送真实 result 事件,
340
+ * updateSessionStatus 会将 session.status 更新为 idle/error。
341
+ * 此时合成事件会重复触发,导致手机端出现两张总结卡。
342
+ * 修复:已收到真实 result(status 已为 idle/error)时跳过合成事件。
343
+ * 异常退出时(crash/OOM/killed)没有真实 result 事件,合成事件确保状态正确广播。
344
+ */
345
+ attachExitListener(sessionId, proc) {
346
+ proc.once('exit', (code, signal) => {
347
+ const entry = this.activeSessions.get(sessionId);
348
+ if (!entry)
349
+ return;
350
+ // 确保退出的是当前活跃进程(防止旧进程退出影响新进程)
351
+ if (entry.process !== proc)
352
+ return;
353
+ // 清除 PID
354
+ entry.session.pid = undefined;
355
+ entry.session.lastActiveAt = Date.now();
356
+ // 若 stdout 已传来真实 result 事件,session.status 已被设为 idle/error
357
+ // Node.js 保证 readline line 事件先于 process exit 事件触发,此检查是安全的
358
+ const alreadyHasResult = entry.session.status === 'idle' || entry.session.status === 'error';
359
+ if (alreadyHasResult)
360
+ return;
361
+ // code=143 = 128+SIGTERM:claude CLI 自己捕获 SIGTERM 并以此码退出
362
+ const isNormal = code === 0 || code === 143 || signal === 'SIGTERM';
363
+ entry.session.status = isNormal ? 'idle' : 'error';
364
+ if (!isNormal) {
365
+ console.error(`[ProcessProvider] 会话 ${sessionId}: 进程异常退出 code=${code} signal=${signal}`);
366
+ }
367
+ // 发出合成 result 事件,让 SessionManager 广播状态变化到手机端
368
+ const syntheticResult = {
369
+ type: 'result',
370
+ subtype: isNormal ? 'success' : 'error',
371
+ session_id: sessionId,
372
+ is_error: !isNormal,
373
+ result: isNormal ? '' : `进程退出 code=${code} signal=${signal}`,
374
+ duration_ms: 0,
375
+ num_turns: 0,
376
+ };
377
+ this.emitter.emit(this.getEventName(sessionId), syntheticResult);
378
+ });
379
+ }
380
+ /**
381
+ * 解析一行 NDJSON 文本为 ClaudeStreamEvent
382
+ */
383
+ parseLine(line) {
384
+ try {
385
+ const parsed = JSON.parse(line);
386
+ return { ok: true, value: parsed };
387
+ }
388
+ catch (err) {
389
+ return {
390
+ ok: false,
391
+ error: err instanceof Error ? err : new Error(String(err)),
392
+ };
393
+ }
394
+ }
395
+ /**
396
+ * 根据 Claude 事件更新会话状态
397
+ */
398
+ updateSessionStatus(sessionId, event) {
399
+ const entry = this.activeSessions.get(sessionId);
400
+ if (!entry)
401
+ return;
402
+ entry.session.lastActiveAt = Date.now();
403
+ switch (event.type) {
404
+ case 'system':
405
+ // init 事件表示 Claude 已启动
406
+ if (event.subtype === 'init') {
407
+ entry.session.status = 'running';
408
+ }
409
+ break;
410
+ case 'assistant':
411
+ // 收到 assistant 消息,正在运行
412
+ entry.session.status = 'running';
413
+ break;
414
+ case 'result':
415
+ // 任务结束
416
+ entry.session.status = event.is_error ? 'error' : 'idle';
417
+ break;
418
+ }
419
+ }
420
+ /**
421
+ * 根据对话上下文生成下一步建议指令
422
+ *
423
+ * 使用 --output-format text 做一次性调用,返回纯文本结果。
424
+ */
425
+ async generateSuggestion(context) {
426
+ const prompt = `你是一个 AI 编程助手。根据以下 Claude Code 对话上下文,建议用户下一步最有价值的一条指令(直接给出指令内容,不要解释,不要加引号):\n\n${context}`;
427
+ return new Promise((resolve, reject) => {
428
+ const env = { ...process.env };
429
+ delete env.CLAUDECODE;
430
+ const proc = (0, child_process_1.spawn)(CLAUDE_PATH, ['-p', prompt, '--output-format', 'text'], {
431
+ cwd: (0, node_os_1.homedir)(),
432
+ env,
433
+ stdio: ['pipe', 'pipe', 'pipe'],
434
+ });
435
+ proc.stdin.end();
436
+ let output = '';
437
+ proc.stdout?.on('data', (data) => {
438
+ output += data.toString();
439
+ });
440
+ proc.once('exit', (code) => {
441
+ if (code === 0) {
442
+ resolve(output.trim());
443
+ }
444
+ else {
445
+ reject(new Error(`generateSuggestion 进程退出码: ${code}`));
446
+ }
447
+ });
448
+ proc.once('error', reject);
449
+ });
450
+ }
451
+ /**
452
+ * 向正在等待中的 AskUserQuestion 提供答案
453
+ *
454
+ * 将答案写入 Claude 进程的 stdin(作为 tool_result),
455
+ * Claude 收到后继续执行。
456
+ */
457
+ async answerQuestion(sessionId, toolUseId, answer) {
458
+ const entry = this.activeSessions.get(sessionId);
459
+ if (!entry) {
460
+ throw new Error(`会话 ${sessionId} 不存在`);
461
+ }
462
+ if (!entry.process.stdin || entry.process.stdin.destroyed) {
463
+ throw new Error(`会话 ${sessionId} stdin 不可用`);
464
+ }
465
+ // 写入 tool_result NDJSON 行,让 Claude 继续执行
466
+ const toolResult = JSON.stringify({
467
+ type: 'tool_result',
468
+ tool_use_id: toolUseId,
469
+ content: answer,
470
+ });
471
+ await new Promise((resolve, reject) => {
472
+ entry.process.stdin.write(toolResult + '\n', (err) => {
473
+ if (err)
474
+ reject(err);
475
+ else
476
+ resolve();
477
+ });
478
+ });
479
+ console.log(`[ProcessProvider] 会话 ${sessionId}: AskUserQuestion 已回答 (toolUseId=${toolUseId})`);
480
+ }
481
+ /**
482
+ * 订阅指定会话的 AskUserQuestion 事件
483
+ *
484
+ * @returns 取消订阅函数
485
+ */
486
+ onQuestion(sessionId, callback) {
487
+ const eventName = this.getQuestionEventName(sessionId);
488
+ this.emitter.on(eventName, callback);
489
+ return () => {
490
+ this.emitter.off(eventName, callback);
491
+ };
492
+ }
493
+ /**
494
+ * 生成事件名称
495
+ */
496
+ getEventName(sessionId) {
497
+ return `claude:${sessionId}`;
498
+ }
499
+ /**
500
+ * 生成 AskUserQuestion 内部事件名称
501
+ */
502
+ getQuestionEventName(sessionId) {
503
+ return `question:${sessionId}`;
504
+ }
505
+ }
506
+ exports.ProcessProvider = ProcessProvider;
507
+ //# sourceMappingURL=ProcessProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProcessProvider.js","sourceRoot":"","sources":["../../src/providers/ProcessProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { Session, ServerEvent } from '@sessix/shared';
2
+
3
+ interface ServerInstance {
4
+ token: string;
5
+ wsPort: number;
6
+ httpPort: number;
7
+ getActiveSessions: () => Session[];
8
+ getConnectionCount: () => number;
9
+ stop: () => Promise<void>;
10
+ /** 运行时切换本地 Mac 通知 */
11
+ setMacNotification: (enabled: boolean) => void;
12
+ /** 运行时切换 Expo 远程推送 */
13
+ setExpoPush: (enabled: boolean) => void;
14
+ /** 订阅所有 ServerEvent(供 Electron 内部使用,例如 Token 统计) */
15
+ onServerEvent: (cb: (event: ServerEvent) => void) => () => void;
16
+ }
17
+ interface ServerOptions {
18
+ /** 覆盖 token(默认读取 ~/.sessix/token 或自动生成) */
19
+ token?: string;
20
+ enableMacNotification?: boolean;
21
+ enableExpoPush?: boolean;
22
+ /** ActivityKit Push 配置(可选,用于后台更新 Live Activity) */
23
+ activityPush?: {
24
+ teamId: string;
25
+ keyId: string;
26
+ authKeyPath: string;
27
+ sandbox?: boolean;
28
+ };
29
+ }
30
+ declare function start(opts?: ServerOptions): Promise<ServerInstance>;
31
+
32
+ export { type ServerInstance, type ServerOptions, start };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAe,WAAW,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAoDvE,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,iBAAiB,EAAE,MAAM,OAAO,EAAE,CAAA;IAClC,kBAAkB,EAAE,MAAM,MAAM,CAAA;IAChC,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACzB,qBAAqB;IACrB,kBAAkB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;IAC9C,sBAAsB;IACtB,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;IACvC,oDAAoD;IACpD,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,KAAK,MAAM,IAAI,CAAA;CAChE;AAED,MAAM,WAAW,aAAa;IAC5B,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,mDAAmD;IACnD,YAAY,CAAC,EAAE;QACb,MAAM,EAAE,MAAM,CAAA;QACd,KAAK,EAAE,MAAM,CAAA;QACb,WAAW,EAAE,MAAM,CAAA;QACnB,OAAO,CAAC,EAAE,OAAO,CAAA;KAClB,CAAA;CACF;AAMD,wBAAsB,KAAK,CAAC,IAAI,GAAE,aAAkB,GAAG,OAAO,CAAC,cAAc,CAAC,CA+Y7E"}