sessix-server 0.2.4 → 0.2.6

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 (34) hide show
  1. package/dist/approval/ApprovalProxy.d.ts +0 -10
  2. package/dist/approval/ApprovalProxy.d.ts.map +1 -1
  3. package/dist/approval/ApprovalProxy.js +6 -44
  4. package/dist/approval/ApprovalProxy.js.map +1 -1
  5. package/dist/hooks/HookInstaller.d.ts +7 -11
  6. package/dist/hooks/HookInstaller.d.ts.map +1 -1
  7. package/dist/hooks/HookInstaller.js +49 -96
  8. package/dist/hooks/HookInstaller.js.map +1 -1
  9. package/dist/index.js +205 -145
  10. package/dist/notification/ExpoNotificationChannel.d.ts.map +1 -1
  11. package/dist/notification/ExpoNotificationChannel.js +1 -9
  12. package/dist/notification/ExpoNotificationChannel.js.map +1 -1
  13. package/dist/notification/NotificationService.d.ts +1 -1
  14. package/dist/notification/NotificationService.d.ts.map +1 -1
  15. package/dist/notification/NotificationService.js +5 -13
  16. package/dist/notification/NotificationService.js.map +1 -1
  17. package/dist/providers/ExecutionProvider.d.ts +2 -8
  18. package/dist/providers/ExecutionProvider.d.ts.map +1 -1
  19. package/dist/providers/ProcessProvider.d.ts +2 -2
  20. package/dist/providers/ProcessProvider.d.ts.map +1 -1
  21. package/dist/providers/ProcessProvider.js +15 -49
  22. package/dist/providers/ProcessProvider.js.map +1 -1
  23. package/dist/server.d.ts.map +1 -1
  24. package/dist/server.js +198 -139
  25. package/dist/server.js.map +1 -1
  26. package/dist/session/ProjectReader.js +1 -1
  27. package/dist/session/ProjectReader.js.map +1 -1
  28. package/dist/session/SessionManager.d.ts +3 -7
  29. package/dist/session/SessionManager.d.ts.map +1 -1
  30. package/dist/session/SessionManager.js +5 -45
  31. package/dist/session/SessionManager.js.map +1 -1
  32. package/dist/ws/WsBridge.js +4 -4
  33. package/dist/ws/WsBridge.js.map +1 -1
  34. package/package.json +1 -1
package/dist/server.js CHANGED
@@ -295,38 +295,87 @@ function t(key, params) {
295
295
  // src/server.ts
296
296
  var import_uuid4 = require("uuid");
297
297
  var import_promises4 = require("fs/promises");
298
- var import_node_os5 = require("os");
299
- var import_node_path4 = require("path");
300
- var import_node_child_process2 = require("child_process");
298
+ var import_node_os6 = require("os");
299
+ var import_node_path5 = require("path");
300
+ var import_node_child_process4 = require("child_process");
301
301
  var import_node_util = require("util");
302
302
 
303
303
  // src/providers/ProcessProvider.ts
304
- var import_child_process2 = require("child_process");
304
+ var import_child_process = require("child_process");
305
305
  var import_readline = require("readline");
306
306
  var import_events = require("events");
307
- var import_node_os = require("os");
307
+ var import_node_os2 = require("os");
308
308
  var import_uuid = require("uuid");
309
309
 
310
310
  // src/utils/claudePath.ts
311
- var import_child_process = require("child_process");
311
+ var import_node_child_process2 = require("child_process");
312
+ var import_node_fs = require("fs");
313
+ var import_node_path = require("path");
314
+ var import_node_os = require("os");
315
+
316
+ // src/utils/platform.ts
317
+ var import_node_child_process = require("child_process");
318
+ var isWindows = process.platform === "win32";
319
+ function killProcessCrossPlatform(proc, timeoutMs = 3e3) {
320
+ return new Promise((resolve) => {
321
+ if (proc.exitCode !== null || proc.signalCode !== null) {
322
+ resolve();
323
+ return;
324
+ }
325
+ const onExit = () => {
326
+ clearTimeout(timer);
327
+ resolve();
328
+ };
329
+ proc.once("exit", onExit);
330
+ if (isWindows) {
331
+ if (proc.pid) {
332
+ (0, import_node_child_process.spawn)("taskkill", ["/PID", String(proc.pid), "/T", "/F"], { stdio: "ignore" });
333
+ }
334
+ } else {
335
+ proc.kill("SIGTERM");
336
+ }
337
+ const timer = setTimeout(() => {
338
+ if (proc.exitCode === null && proc.signalCode === null) {
339
+ if (!isWindows) {
340
+ proc.kill("SIGKILL");
341
+ }
342
+ }
343
+ resolve();
344
+ }, timeoutMs);
345
+ });
346
+ }
347
+ function isNormalExit(code, signal) {
348
+ if (code === 0) return true;
349
+ if (isWindows) {
350
+ return code === 1;
351
+ }
352
+ return code === 143 || signal === "SIGTERM";
353
+ }
354
+
355
+ // src/utils/claudePath.ts
312
356
  function findClaudePath() {
313
357
  try {
314
- return (0, import_child_process.execSync)("which claude", { encoding: "utf-8" }).trim();
358
+ const cmd = isWindows ? "where claude" : "which claude";
359
+ return (0, import_node_child_process2.execSync)(cmd, { encoding: "utf-8" }).trim().split("\n")[0];
315
360
  } catch {
316
- const candidates = [
317
- `${process.env.HOME}/.local/bin/claude`,
318
- "/usr/local/bin/claude",
319
- "/opt/homebrew/bin/claude"
320
- ];
321
- for (const candidate of candidates) {
322
- try {
323
- (0, import_child_process.execSync)(`test -x "${candidate}"`);
324
- return candidate;
325
- } catch {
326
- }
361
+ }
362
+ const candidates = isWindows ? [
363
+ (0, import_node_path.join)(process.env.LOCALAPPDATA ?? "", "Programs", "claude", "claude.exe"),
364
+ (0, import_node_path.join)((0, import_node_os.homedir)(), "AppData", "Local", "Programs", "claude", "claude.exe"),
365
+ (0, import_node_path.join)((0, import_node_os.homedir)(), ".claude", "local", "claude.exe")
366
+ ] : [
367
+ (0, import_node_path.join)((0, import_node_os.homedir)(), ".local", "bin", "claude"),
368
+ "/usr/local/bin/claude",
369
+ "/opt/homebrew/bin/claude"
370
+ ];
371
+ for (const candidate of candidates) {
372
+ try {
373
+ (0, import_node_fs.accessSync)(candidate, import_node_fs.constants.X_OK);
374
+ return candidate;
375
+ } catch {
327
376
  }
328
- return "claude";
329
377
  }
378
+ return "claude";
330
379
  }
331
380
 
332
381
  // src/providers/ProcessProvider.ts
@@ -399,19 +448,7 @@ var ProcessProvider = class {
399
448
  entry.process.stdin?.end();
400
449
  } catch {
401
450
  }
402
- entry.process.kill("SIGTERM");
403
- await new Promise((resolve) => {
404
- const timeout = setTimeout(() => {
405
- if (entry.process.exitCode === null && entry.process.signalCode === null) {
406
- entry.process.kill("SIGKILL");
407
- }
408
- resolve();
409
- }, 3e3);
410
- entry.process.once("exit", () => {
411
- clearTimeout(timeout);
412
- resolve();
413
- });
414
- });
451
+ await killProcessCrossPlatform(entry.process);
415
452
  }
416
453
  this.emittedQuestionToolUseIds.delete(sessionId);
417
454
  this.activeSessions.delete(sessionId);
@@ -441,7 +478,7 @@ var ProcessProvider = class {
441
478
  entry.process.stdin?.end();
442
479
  } catch {
443
480
  }
444
- entry.process.kill("SIGTERM");
481
+ killProcessCrossPlatform(entry.process);
445
482
  }
446
483
  } else {
447
484
  console.log(`[ProcessProvider] Session ${sessionId}: process exited, respawning`);
@@ -523,7 +560,7 @@ var ProcessProvider = class {
523
560
  }
524
561
  const env = { ...process.env, SESSIX_SESSION_ID: sessionId };
525
562
  delete env.CLAUDECODE;
526
- const proc = (0, import_child_process2.spawn)(CLAUDE_PATH, args, {
563
+ const proc = (0, import_child_process.spawn)(CLAUDE_PATH, args, {
527
564
  cwd: projectPath,
528
565
  env,
529
566
  stdio: ["pipe", "pipe", "pipe"]
@@ -669,7 +706,7 @@ var ProcessProvider = class {
669
706
  entry.session.lastActiveAt = Date.now();
670
707
  const alreadyHasResult = entry.session.status === "idle" || entry.session.status === "error";
671
708
  if (alreadyHasResult) return;
672
- const isNormal = code === 0 || code === 143 || signal === "SIGTERM";
709
+ const isNormal = isNormalExit(code, signal);
673
710
  entry.session.status = isNormal ? "idle" : "error";
674
711
  if (!isNormal) {
675
712
  console.error(
@@ -735,8 +772,8 @@ ${context}`;
735
772
  return new Promise((resolve, reject) => {
736
773
  const env = { ...process.env };
737
774
  delete env.CLAUDECODE;
738
- const proc = (0, import_child_process2.spawn)(CLAUDE_PATH, ["-p", prompt, "--output-format", "text"], {
739
- cwd: (0, import_node_os.homedir)(),
775
+ const proc = (0, import_child_process.spawn)(CLAUDE_PATH, ["-p", prompt, "--output-format", "text"], {
776
+ cwd: (0, import_node_os2.homedir)(),
740
777
  env,
741
778
  stdio: ["pipe", "pipe", "pipe"]
742
779
  });
@@ -1628,15 +1665,15 @@ var WsBridge = class _WsBridge {
1628
1665
 
1629
1666
  // src/approval/ApprovalProxy.ts
1630
1667
  var import_node_http = __toESM(require("http"));
1631
- var import_node_fs = __toESM(require("fs"));
1632
- var import_node_path = __toESM(require("path"));
1633
- var import_node_os2 = __toESM(require("os"));
1668
+ var import_node_fs2 = __toESM(require("fs"));
1669
+ var import_node_path2 = __toESM(require("path"));
1670
+ var import_node_os3 = __toESM(require("os"));
1634
1671
  var import_uuid3 = require("uuid");
1635
1672
  var ApprovalProxy = class _ApprovalProxy {
1636
1673
  server;
1637
1674
  token;
1638
1675
  port;
1639
- settingsPath = import_node_path.default.join(import_node_os2.default.homedir(), ".claude", "settings.json");
1676
+ settingsPath = import_node_path2.default.join(import_node_os3.default.homedir(), ".claude", "settings.json");
1640
1677
  /** 待处理的审批请求:requestId -> { resolve, timer, request } */
1641
1678
  pendingApprovals = /* @__PURE__ */ new Map();
1642
1679
  /** 审批请求回调(通知外部推送到手机) */
@@ -1741,7 +1778,7 @@ var ApprovalProxy = class _ApprovalProxy {
1741
1778
  isToolInClaudeSettings(toolName, projectPath) {
1742
1779
  const checkPath = (filepath) => {
1743
1780
  try {
1744
- const raw = import_node_fs.default.readFileSync(filepath, "utf-8");
1781
+ const raw = import_node_fs2.default.readFileSync(filepath, "utf-8");
1745
1782
  const settings = JSON.parse(raw);
1746
1783
  const allow = settings?.permissions?.allow ?? [];
1747
1784
  return allow.some((entry) => {
@@ -1755,24 +1792,24 @@ var ApprovalProxy = class _ApprovalProxy {
1755
1792
  }
1756
1793
  };
1757
1794
  if (projectPath) {
1758
- const projectSettingsPath = import_node_path.default.join(projectPath, ".claude", "settings.json");
1795
+ const projectSettingsPath = import_node_path2.default.join(projectPath, ".claude", "settings.json");
1759
1796
  if (checkPath(projectSettingsPath)) return true;
1760
1797
  }
1761
1798
  return checkPath(this.settingsPath);
1762
1799
  }
1763
1800
  /** 将工具写入 settings.json permissions.allow(项目级或全局) */
1764
1801
  addToClaudeSettings(projectPath, toolName) {
1765
- const targetPath = projectPath ? import_node_path.default.join(projectPath, ".claude", "settings.json") : this.settingsPath;
1802
+ const targetPath = projectPath ? import_node_path2.default.join(projectPath, ".claude", "settings.json") : this.settingsPath;
1766
1803
  try {
1767
1804
  if (projectPath) {
1768
- const dir = import_node_path.default.dirname(targetPath);
1769
- if (!import_node_fs.default.existsSync(dir)) {
1770
- import_node_fs.default.mkdirSync(dir, { recursive: true });
1805
+ const dir = import_node_path2.default.dirname(targetPath);
1806
+ if (!import_node_fs2.default.existsSync(dir)) {
1807
+ import_node_fs2.default.mkdirSync(dir, { recursive: true });
1771
1808
  }
1772
1809
  }
1773
1810
  let settings = {};
1774
1811
  try {
1775
- settings = JSON.parse(import_node_fs.default.readFileSync(targetPath, "utf-8"));
1812
+ settings = JSON.parse(import_node_fs2.default.readFileSync(targetPath, "utf-8"));
1776
1813
  } catch {
1777
1814
  }
1778
1815
  if (!settings.permissions) {
@@ -1786,7 +1823,7 @@ var ApprovalProxy = class _ApprovalProxy {
1786
1823
  const entry = `${toolName}(*)`;
1787
1824
  if (!allow.includes(entry)) {
1788
1825
  allow.push(entry);
1789
- import_node_fs.default.writeFileSync(targetPath, JSON.stringify(settings, null, 2), "utf-8");
1826
+ import_node_fs2.default.writeFileSync(targetPath, JSON.stringify(settings, null, 2), "utf-8");
1790
1827
  const label = projectPath ? `${projectPath}/.claude/settings.json` : "~/.claude/settings.json";
1791
1828
  console.log(`[ApprovalProxy] ${t("approval.alwaysAllowWritten", { entry, label })}`);
1792
1829
  }
@@ -2010,11 +2047,12 @@ var ApprovalProxy = class _ApprovalProxy {
2010
2047
 
2011
2048
  // src/mdns/MdnsService.ts
2012
2049
  var import_bonjour_service = __toESM(require("bonjour-service"));
2013
- var import_node_os3 = require("os");
2050
+ var import_node_os4 = require("os");
2014
2051
  function getLanAddresses() {
2015
2052
  const results = [];
2016
- for (const [name, addrs] of Object.entries((0, import_node_os3.networkInterfaces)())) {
2017
- if (name.startsWith("utun") || name.startsWith("lo")) continue;
2053
+ for (const [name, addrs] of Object.entries((0, import_node_os4.networkInterfaces)())) {
2054
+ if (name.startsWith("utun") || name === "lo") continue;
2055
+ if (isWindows && (name.startsWith("vEthernet") || name.includes("Loopback"))) continue;
2018
2056
  for (const addr of addrs ?? []) {
2019
2057
  if (addr.family === "IPv4" && !addr.internal) {
2020
2058
  results.push(addr.address);
@@ -2045,7 +2083,13 @@ var MdnsService = class {
2045
2083
  return;
2046
2084
  }
2047
2085
  const lanAddrs = getLanAddresses();
2048
- this.bonjour = lanAddrs.length > 0 ? new import_bonjour_service.default({ interface: lanAddrs[0] }) : new import_bonjour_service.default();
2086
+ const onMdnsError = (err) => {
2087
+ console.warn(`[MdnsService] mDNS error (non-fatal): ${err.message}`);
2088
+ this.stop();
2089
+ };
2090
+ const opts = lanAddrs.length > 0 ? { interface: lanAddrs[0] } : {};
2091
+ this.bonjour = new import_bonjour_service.default(opts, onMdnsError);
2092
+ this.bonjour.server?.mdns?.on("error", onMdnsError);
2049
2093
  if (lanAddrs.length > 0) {
2050
2094
  console.log(`[MdnsService] ${t("mdns.boundInterface", { ip: lanAddrs[0] })}`);
2051
2095
  }
@@ -2110,72 +2154,62 @@ var MdnsService = class {
2110
2154
 
2111
2155
  // src/hooks/HookInstaller.ts
2112
2156
  var import_promises2 = require("fs/promises");
2113
- var import_node_path2 = require("path");
2114
- var import_node_os4 = require("os");
2115
- var SESSIX_HOOKS_DIR = (0, import_node_path2.join)((0, import_node_os4.homedir)(), ".sessix", "hooks");
2116
- var HOOK_SCRIPT_PATH = (0, import_node_path2.join)(SESSIX_HOOKS_DIR, "approval-hook.sh");
2117
- var PERMISSION_ACCEPT_PATH = (0, import_node_path2.join)(SESSIX_HOOKS_DIR, "permission-accept.sh");
2118
- var CLAUDE_SETTINGS_PATH = (0, import_node_path2.join)((0, import_node_os4.homedir)(), ".claude", "settings.json");
2119
- var HOOK_COMMAND = "~/.sessix/hooks/approval-hook.sh";
2120
- var PERMISSION_ACCEPT_COMMAND = "~/.sessix/hooks/permission-accept.sh";
2121
- var HOOK_SCRIPT_TEMPLATE = `#!/bin/bash
2122
- # Sessix Approval Hook
2123
- # \u4EC5\u5728 Sessix \u7BA1\u7406\u7684\u4F1A\u8BDD\u4E2D\u6FC0\u6D3B
2124
-
2125
- if [ -z "$SESSIX_SESSION_ID" ]; then
2126
- exit 0
2127
- fi
2128
-
2129
- # \u4ECE stdin \u8BFB\u53D6 hook payload
2130
- PAYLOAD=$(cat)
2131
-
2132
- # \u83B7\u53D6\u9879\u76EE\u8DEF\u5F84\uFF08\u5F53\u524D\u5DE5\u4F5C\u76EE\u5F55\uFF09
2133
- PROJECT_PATH="$PWD"
2134
-
2135
- # \u53D1\u9001\u5BA1\u6279\u8BF7\u6C42\u5230 Sessix \u670D\u52A1\u5668\uFF08\u957F\u8F6E\u8BE2\uFF0C\u8D85\u65F6\u65F6\u95F4 > 300s\uFF09
2136
- RESPONSE=$(curl -s -X POST "http://localhost:3746/hook/approval" \\
2137
- -H "Content-Type: application/json" \\
2138
- -d "{\\"sessionId\\": \\"$SESSIX_SESSION_ID\\", \\"projectPath\\": \\"$PROJECT_PATH\\", \\"payload\\": $PAYLOAD}" \\
2139
- --max-time 320 \\
2140
- 2>/dev/null)
2141
-
2142
- if [ $? -ne 0 ] || [ -z "$RESPONSE" ]; then
2143
- # \u5982\u679C Sessix \u670D\u52A1\u5668\u4E0D\u53EF\u7528\uFF0C\u9ED8\u8BA4\u653E\u884C\uFF08exit 0 = \u6279\u51C6\uFF09
2144
- exit 0
2145
- fi
2157
+ var import_node_path3 = require("path");
2158
+ var import_node_os5 = require("os");
2159
+ var SESSIX_HOOKS_DIR = (0, import_node_path3.join)((0, import_node_os5.homedir)(), ".sessix", "hooks");
2160
+ var HOOK_SCRIPT_PATH = (0, import_node_path3.join)(SESSIX_HOOKS_DIR, "approval-hook.js");
2161
+ var PERMISSION_ACCEPT_PATH = (0, import_node_path3.join)(SESSIX_HOOKS_DIR, "permission-accept.js");
2162
+ var CLAUDE_SETTINGS_PATH = (0, import_node_path3.join)((0, import_node_os5.homedir)(), ".claude", "settings.json");
2163
+ var HOOK_COMMAND = "node ~/.sessix/hooks/approval-hook.js";
2164
+ var PERMISSION_ACCEPT_COMMAND = "node ~/.sessix/hooks/permission-accept.js";
2165
+ var LEGACY_HOOK_COMMANDS = [
2166
+ "~/.sessix/hooks/approval-hook.sh",
2167
+ "~/.sessix/hooks/permission-accept.sh"
2168
+ ];
2169
+ var HOOK_SCRIPT_TEMPLATE = `#!/usr/bin/env node
2170
+ // Sessix Approval Hook
2171
+ // \u4EC5\u5728 Sessix \u7BA1\u7406\u7684\u4F1A\u8BDD\u4E2D\u6FC0\u6D3B
2146
2172
 
2147
- # \u89E3\u6790\u670D\u52A1\u5668\u54CD\u5E94
2148
- DECISION=$(echo "$RESPONSE" | grep -o '\\"decision\\":\\"[^"]*\\"' | cut -d'"' -f4)
2173
+ const sessionId = process.env.SESSIX_SESSION_ID
2174
+ if (!sessionId) process.exit(0)
2149
2175
 
2150
- if [ "$DECISION" = "allow" ]; then
2151
- # \u7528\u6237\u6279\u51C6\u6216\u670D\u52A1\u5668\u8D85\u65F6\u81EA\u52A8\u6279\u51C6
2152
- exit 0
2153
- elif [ "$DECISION" = "deny" ]; then
2154
- # \u7528\u6237\u660E\u786E\u62D2\u7EDD
2155
- exit 1
2156
- else
2157
- # \u672A\u77E5\u54CD\u5E94\uFF0C\u9ED8\u8BA4\u653E\u884C
2158
- exit 0
2159
- fi
2176
+ let payload = ''
2177
+ process.stdin.on('data', (chunk) => { payload += chunk })
2178
+ process.stdin.on('end', async () => {
2179
+ try {
2180
+ const res = await fetch('http://localhost:3746/hook/approval', {
2181
+ method: 'POST',
2182
+ headers: { 'Content-Type': 'application/json' },
2183
+ body: JSON.stringify({
2184
+ sessionId,
2185
+ projectPath: process.cwd(),
2186
+ payload: JSON.parse(payload),
2187
+ }),
2188
+ signal: AbortSignal.timeout(320000),
2189
+ })
2190
+ const data = await res.json()
2191
+ process.exit(data.decision === 'deny' ? 1 : 0)
2192
+ } catch {
2193
+ // Sessix \u670D\u52A1\u5668\u4E0D\u53EF\u7528\uFF0C\u9ED8\u8BA4\u653E\u884C
2194
+ process.exit(0)
2195
+ }
2196
+ })
2160
2197
  `;
2161
- var PERMISSION_ACCEPT_TEMPLATE = `#!/bin/bash
2162
- # Sessix PermissionRequest \u515C\u5E95
2163
- # \u81EA\u52A8\u63A5\u53D7\u6743\u9650\u8BF7\u6C42\uFF0C\u907F\u514D Sessix \u4F1A\u8BDD\u963B\u585E
2198
+ var PERMISSION_ACCEPT_TEMPLATE = `#!/usr/bin/env node
2199
+ // Sessix PermissionRequest \u515C\u5E95
2200
+ // \u81EA\u52A8\u63A5\u53D7\u6743\u9650\u8BF7\u6C42\uFF0C\u907F\u514D Sessix \u4F1A\u8BDD\u963B\u585E
2164
2201
 
2165
- if [ -z "$SESSIX_SESSION_ID" ]; then
2166
- exit 0
2167
- fi
2202
+ if (!process.env.SESSIX_SESSION_ID) process.exit(0)
2168
2203
 
2169
- # \u8F93\u51FA JSON \u51B3\u7B56\uFF0C\u81EA\u52A8\u63A5\u53D7\u6743\u9650\u8BF7\u6C42
2170
- echo '{"decision":"allow"}'
2171
- exit 0
2204
+ process.stdout.write('{"decision":"allow"}\\n')
2205
+ process.exit(0)
2172
2206
  `;
2173
2207
  var HookInstaller = class {
2174
2208
  /**
2175
2209
  * 安装 hook
2176
2210
  *
2177
2211
  * 1. 创建 ~/.sessix/hooks/ 目录
2178
- * 2. 写入 approval-hook.sh 脚本
2212
+ * 2. 写入 approval-hook.js 脚本
2179
2213
  * 3. 赋予执行权限
2180
2214
  * 4. 更新 Claude Code settings.json 添加 hook 配置
2181
2215
  */
@@ -2228,6 +2262,10 @@ var HookInstaller = class {
2228
2262
  async addHookToSettings() {
2229
2263
  let settings = await this.readClaudeSettings();
2230
2264
  let changed = false;
2265
+ for (const cmd of LEGACY_HOOK_COMMANDS) {
2266
+ this.removeHookCommand(settings, "PreToolUse", cmd);
2267
+ this.removeHookCommand(settings, "PermissionRequest", cmd);
2268
+ }
2231
2269
  if (!settings.hooks) {
2232
2270
  settings.hooks = {};
2233
2271
  }
@@ -2295,7 +2333,7 @@ var HookInstaller = class {
2295
2333
  * 写入 Claude Code settings.json
2296
2334
  */
2297
2335
  async writeClaudeSettings(settings) {
2298
- await (0, import_promises2.mkdir)((0, import_node_path2.join)((0, import_node_os4.homedir)(), ".claude"), { recursive: true });
2336
+ await (0, import_promises2.mkdir)((0, import_node_path3.join)((0, import_node_os5.homedir)(), ".claude"), { recursive: true });
2299
2337
  await (0, import_promises2.writeFile)(CLAUDE_SETTINGS_PATH, JSON.stringify(settings, null, 2) + "\n", "utf-8");
2300
2338
  }
2301
2339
  /**
@@ -2304,11 +2342,11 @@ var HookInstaller = class {
2304
2342
  hasHookConfig(settings) {
2305
2343
  return this.hasPreToolUseConfig(settings) && this.hasPermissionRequestConfig(settings);
2306
2344
  }
2307
- /** 检查 PreToolUse 中是否有 approval-hook.sh */
2345
+ /** 检查 PreToolUse 中是否有 approval-hook.js */
2308
2346
  hasPreToolUseConfig(settings) {
2309
2347
  return this.hasHookEntry(settings?.hooks?.PreToolUse, HOOK_COMMAND);
2310
2348
  }
2311
- /** 检查 PermissionRequest 中是否有 permission-accept.sh */
2349
+ /** 检查 PermissionRequest 中是否有 permission-accept.js */
2312
2350
  hasPermissionRequestConfig(settings) {
2313
2351
  return this.hasHookEntry(settings?.hooks?.PermissionRequest, PERMISSION_ACCEPT_COMMAND);
2314
2352
  }
@@ -2322,7 +2360,7 @@ var HookInstaller = class {
2322
2360
  };
2323
2361
 
2324
2362
  // src/notification/NotificationService.ts
2325
- var import_node_path3 = require("path");
2363
+ var import_node_path4 = require("path");
2326
2364
  var NotificationService = class {
2327
2365
  constructor(sessionManager, expoChannel = null) {
2328
2366
  this.sessionManager = sessionManager;
@@ -2418,7 +2456,7 @@ var NotificationService = class {
2418
2456
  const dangerLevel = this.getDangerLevel(request.toolName);
2419
2457
  const isDangerous = dangerLevel === "danger" || dangerLevel === "write";
2420
2458
  const categoryId = isDangerous ? "APPROVAL_DANGEROUS" : "APPROVAL_NORMAL";
2421
- const projectName = (0, import_node_path3.basename)(
2459
+ const projectName = (0, import_node_path4.basename)(
2422
2460
  this.sessionManager.getActiveSessions().find((s) => s.id === request.sessionId)?.projectPath ?? ""
2423
2461
  );
2424
2462
  const pushTitle = isDangerous ? `\u26A0\uFE0F ${title}` : title;
@@ -2474,7 +2512,7 @@ var NotificationService = class {
2474
2512
  /** 从审批请求中提取操作目标的简短描述 */
2475
2513
  extractTarget(request) {
2476
2514
  const input = request.toolInput;
2477
- if (input.file_path) return (0, import_node_path3.basename)(String(input.file_path));
2515
+ if (input.file_path) return (0, import_node_path4.basename)(String(input.file_path));
2478
2516
  if (input.command) return String(input.command).slice(0, 40);
2479
2517
  return request.description.slice(0, 40);
2480
2518
  }
@@ -2577,7 +2615,7 @@ var NotificationService = class {
2577
2615
  getSessionTitle(sessionId) {
2578
2616
  const session = this.sessionManager.getActiveSessions().find((s) => s.id === sessionId);
2579
2617
  if (!session) return "Unknown";
2580
- return session.summary ?? (0, import_node_path3.basename)(session.projectPath);
2618
+ return session.summary ?? (0, import_node_path4.basename)(session.projectPath);
2581
2619
  }
2582
2620
  /** 获取会话的 YOLO 模式状态 */
2583
2621
  getYoloMode(sessionId) {
@@ -2585,9 +2623,9 @@ var NotificationService = class {
2585
2623
  }
2586
2624
  };
2587
2625
 
2588
- // src/notification/MacNotificationChannel.ts
2589
- var import_node_child_process = require("child_process");
2590
- var MacNotificationChannel = class {
2626
+ // src/notification/DesktopNotificationChannel.ts
2627
+ var import_node_child_process3 = require("child_process");
2628
+ var DesktopNotificationChannel = class {
2591
2629
  isAvailable() {
2592
2630
  return process.platform === "darwin";
2593
2631
  }
@@ -2598,9 +2636,9 @@ var MacNotificationChannel = class {
2598
2636
  const sound = payload.sound ?? "Ping";
2599
2637
  const script = `display notification "${body}" with title "${title}" sound name "${sound}"`;
2600
2638
  return new Promise((resolve) => {
2601
- (0, import_node_child_process.execFile)("osascript", ["-e", script], (err) => {
2639
+ (0, import_node_child_process3.execFile)("osascript", ["-e", script], (err) => {
2602
2640
  if (err) {
2603
- console.warn("[MacNotificationChannel] Send notification failed:", err.message);
2641
+ console.warn("[DesktopNotificationChannel] Send notification failed:", err.message);
2604
2642
  }
2605
2643
  resolve();
2606
2644
  });
@@ -3226,11 +3264,11 @@ var PairingManager = class {
3226
3264
  };
3227
3265
 
3228
3266
  // src/auth/AuthManager.ts
3267
+ var import_child_process2 = require("child_process");
3229
3268
  var import_child_process3 = require("child_process");
3230
- var import_child_process4 = require("child_process");
3231
3269
  var import_util = require("util");
3232
3270
  var import_events2 = require("events");
3233
- var execFileAsync = (0, import_util.promisify)(import_child_process4.execFile);
3271
+ var execFileAsync = (0, import_util.promisify)(import_child_process3.execFile);
3234
3272
  var CLAUDE_PATH2 = findClaudePath();
3235
3273
  var LOGIN_TIMEOUT_MS = 5 * 60 * 1e3;
3236
3274
  var AuthManager = class extends import_events2.EventEmitter {
@@ -3261,7 +3299,7 @@ var AuthManager = class extends import_events2.EventEmitter {
3261
3299
  }
3262
3300
  this.clearLoginTimeout();
3263
3301
  this.urlSent = false;
3264
- const proc = (0, import_child_process3.spawn)(CLAUDE_PATH2, ["auth", "login"], {
3302
+ const proc = (0, import_child_process2.spawn)(CLAUDE_PATH2, ["auth", "login"], {
3265
3303
  env: { ...process.env, BROWSER: "echo" },
3266
3304
  stdio: ["pipe", "pipe", "pipe"]
3267
3305
  });
@@ -3347,15 +3385,31 @@ var AuthManager = class extends import_events2.EventEmitter {
3347
3385
  var import_promises5 = require("fs/promises");
3348
3386
  var WS_PORT = 3745;
3349
3387
  var HTTP_PORT = 3746;
3350
- var execAsync = (0, import_node_util.promisify)(import_node_child_process2.exec);
3388
+ var execAsync = (0, import_node_util.promisify)(import_node_child_process4.exec);
3351
3389
  async function killPortProcess(port) {
3352
3390
  try {
3353
- const { stdout } = await execAsync(`lsof -ti :${port}`);
3354
- const pids = stdout.trim().split("\n").filter((p) => p && /^\d+$/.test(p));
3355
- if (pids.length > 0) {
3356
- await execAsync(`kill -9 ${pids.join(" ")}`);
3357
- await new Promise((resolve) => setTimeout(resolve, 600));
3391
+ if (isWindows) {
3392
+ const { stdout } = await execAsync(
3393
+ `netstat -ano | findstr :${port} | findstr LISTENING`
3394
+ );
3395
+ const pids = /* @__PURE__ */ new Set();
3396
+ for (const line of stdout.trim().split("\n")) {
3397
+ const parts = line.trim().split(/\s+/);
3398
+ const pid = parts[parts.length - 1];
3399
+ if (pid && /^\d+$/.test(pid) && pid !== "0") pids.add(pid);
3400
+ }
3401
+ for (const pid of pids) {
3402
+ await execAsync(`taskkill /PID ${pid} /F`).catch(() => {
3403
+ });
3404
+ }
3405
+ } else {
3406
+ const { stdout } = await execAsync(`lsof -ti :${port}`);
3407
+ const pids = stdout.trim().split("\n").filter((p) => p && /^\d+$/.test(p));
3408
+ if (pids.length > 0) {
3409
+ await execAsync(`kill -9 ${pids.join(" ")}`);
3410
+ }
3358
3411
  }
3412
+ await new Promise((resolve) => setTimeout(resolve, 600));
3359
3413
  } catch {
3360
3414
  }
3361
3415
  }
@@ -3373,8 +3427,8 @@ async function createWithRetry(label, port, factory) {
3373
3427
  }
3374
3428
  }
3375
3429
  async function start(opts = {}) {
3376
- const configDir = (0, import_node_path4.join)((0, import_node_os5.homedir)(), ".sessix");
3377
- const tokenFile = (0, import_node_path4.join)(configDir, "token");
3430
+ const configDir = (0, import_node_path5.join)((0, import_node_os6.homedir)(), ".sessix");
3431
+ const tokenFile = (0, import_node_path5.join)(configDir, "token");
3378
3432
  let token;
3379
3433
  if (opts.token !== void 0) {
3380
3434
  token = opts.token;
@@ -3397,7 +3451,7 @@ async function start(opts = {}) {
3397
3451
  const expoChannel = new ExpoNotificationChannel();
3398
3452
  const notificationService = new NotificationService(sessionManager, expoChannel);
3399
3453
  notificationService.addChannel("expo", expoChannel, opts.enableExpoPush !== false);
3400
- notificationService.addChannel("mac", new MacNotificationChannel(), opts.enableMacNotification !== false);
3454
+ notificationService.addChannel("mac", new DesktopNotificationChannel(), opts.enableMacNotification !== false);
3401
3455
  if (opts.activityPush) {
3402
3456
  try {
3403
3457
  const activityChannel = new ActivityPushChannel(opts.activityPush);
@@ -3424,7 +3478,7 @@ async function start(opts = {}) {
3424
3478
  let mdnsService = null;
3425
3479
  const pairingManager = new PairingManager({
3426
3480
  token,
3427
- serverName: (0, import_node_os5.hostname)(),
3481
+ serverName: (0, import_node_os6.hostname)(),
3428
3482
  version: "0.2.0",
3429
3483
  onStateChange: (state) => mdnsService?.updatePairingState(state)
3430
3484
  });
@@ -3794,12 +3848,17 @@ async function start(opts = {}) {
3794
3848
  }));
3795
3849
  const startMdns = () => {
3796
3850
  if (mdnsService) return;
3797
- mdnsService = new MdnsService({
3798
- wsPort: WS_PORT,
3799
- httpPort: HTTP_PORT,
3800
- pairing: pairingManager.state
3801
- });
3802
- mdnsService.start();
3851
+ try {
3852
+ mdnsService = new MdnsService({
3853
+ wsPort: WS_PORT,
3854
+ httpPort: HTTP_PORT,
3855
+ pairing: pairingManager.state
3856
+ });
3857
+ mdnsService.start();
3858
+ } catch (err) {
3859
+ console.warn(`[Server] mDNS failed to start (non-fatal): ${err.message}`);
3860
+ mdnsService = null;
3861
+ }
3803
3862
  };
3804
3863
  const stopMdns = () => {
3805
3864
  if (!mdnsService) return;
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}