sessix-server 0.2.1 → 0.2.2

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 +10 -0
  2. package/dist/approval/ApprovalProxy.d.ts.map +1 -1
  3. package/dist/approval/ApprovalProxy.js +44 -6
  4. package/dist/approval/ApprovalProxy.js.map +1 -1
  5. package/dist/hooks/HookInstaller.d.ts +11 -7
  6. package/dist/hooks/HookInstaller.d.ts.map +1 -1
  7. package/dist/hooks/HookInstaller.js +96 -49
  8. package/dist/hooks/HookInstaller.js.map +1 -1
  9. package/dist/index.js +57 -17
  10. package/dist/notification/ExpoNotificationChannel.d.ts.map +1 -1
  11. package/dist/notification/ExpoNotificationChannel.js +9 -1
  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 +13 -5
  16. package/dist/notification/NotificationService.js.map +1 -1
  17. package/dist/providers/ExecutionProvider.d.ts +8 -2
  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 +49 -15
  22. package/dist/providers/ProcessProvider.js.map +1 -1
  23. package/dist/server.d.ts.map +1 -1
  24. package/dist/server.js +23 -16
  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 +7 -3
  29. package/dist/session/SessionManager.d.ts.map +1 -1
  30. package/dist/session/SessionManager.js +45 -5
  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 +3 -3
@@ -24,6 +24,10 @@ export declare class ApprovalProxy {
24
24
  private pendingApprovals;
25
25
  /** 审批请求回调(通知外部推送到手机) */
26
26
  private approvalRequestCallbacks;
27
+ /** YOLO 模式状态:sessionId -> enabled */
28
+ private yoloSessions;
29
+ /** 内存缓存:已被"始终允许"的工具名(避免每次读 settings.json) */
30
+ private alwaysAllowedTools;
27
31
  /** 获取状态信息的回调(由外部注入) */
28
32
  private statusInfoProvider;
29
33
  constructor(options: ApprovalProxyOptions);
@@ -35,6 +39,10 @@ export declare class ApprovalProxy {
35
39
  onApprovalRequest(callback: (request: ApprovalRequest) => void): void;
36
40
  /** 设置状态信息提供者(用于 /health 端点) */
37
41
  setStatusInfoProvider(provider: () => StatusInfo): void;
42
+ /** 设置会话的 YOLO 模式(服务端拦截,即使手机断连也生效) */
43
+ setYoloMode(sessionId: string, enabled: boolean): void;
44
+ /** 检查会话是否处于 YOLO 模式 */
45
+ isYoloMode(sessionId: string): boolean;
38
46
  /**
39
47
  * 注入审批结果
40
48
  *
@@ -46,6 +54,8 @@ export declare class ApprovalProxy {
46
54
  getPendingCount(): number;
47
55
  /** 检查指定审批请求是否仍在等待用户决策 */
48
56
  isPending(requestId: string): boolean;
57
+ /** 检查工具是否已被"始终允许"(内存缓存 + settings.json 双重检查) */
58
+ private isToolAlwaysAllowed;
49
59
  /** 检查工具是否已在 settings.json permissions.allow 中(检查项目级和全局) */
50
60
  private isToolInClaudeSettings;
51
61
  /** 将工具写入 settings.json permissions.allow(项目级或全局) */
@@ -1 +1 @@
1
- {"version":3,"file":"ApprovalProxy.d.ts","sourceRoot":"","sources":["../../src/approval/ApprovalProxy.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEvE,uBAAuB;AACvB,UAAU,oBAAoB;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;CACd;AAED,iCAAiC;AACjC,UAAU,UAAU;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,MAAM,CAAA;CACvB;AAED;;;;;GAKG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,IAAI,CAAQ;IACpB,OAAO,CAAC,YAAY,CAAsD;IAE1E,wDAAwD;IACxD,OAAO,CAAC,gBAAgB,CAIpB;IAEJ,wBAAwB;IACxB,OAAO,CAAC,wBAAwB,CAAgD;IAEhF,uBAAuB;IACvB,OAAO,CAAC,kBAAkB,CAAkC;gBAEhD,OAAO,EAAE,oBAAoB;IAazC;;OAEG;WACU,MAAM,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,aAAa,CAAC;IAe1E,4BAA4B;IAC5B,iBAAiB,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,GAAG,IAAI;IAIrE,+BAA+B;IAC/B,qBAAqB,CAAC,QAAQ,EAAE,MAAM,UAAU,GAAG,IAAI;IAIvD;;;;;OAKG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO;IAkBvE,mBAAmB;IACnB,eAAe,IAAI,MAAM;IAIzB,yBAAyB;IACzB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAIrC,2DAA2D;IAC3D,OAAO,CAAC,sBAAsB;IAsB9B,oDAAoD;IACpD,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAwC5E,2DAA2D;IAC3D,4BAA4B,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,EAAE;IAUlE;;OAEG;IACH,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAUjC,mBAAmB;IACnB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA0BtB,WAAW;IACX,OAAO,CAAC,aAAa;IA2BrB;;;;;;;;;OASG;YACW,kBAAkB;IAyDhC,aAAa;IACb,OAAO,CAAC,YAAY;IASpB,wBAAwB;IACxB,OAAO,CAAC,WAAW;IAenB,oBAAoB;IACpB,OAAO,CAAC,qBAAqB;IAU7B,uCAAuC;IACvC,OAAO,CAAC,aAAa;IAgCrB,sBAAsB;IACtB,OAAO,CAAC,QAAQ;CAQjB"}
1
+ {"version":3,"file":"ApprovalProxy.d.ts","sourceRoot":"","sources":["../../src/approval/ApprovalProxy.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEvE,uBAAuB;AACvB,UAAU,oBAAoB;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;CACd;AAED,iCAAiC;AACjC,UAAU,UAAU;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,MAAM,CAAA;CACvB;AAED;;;;;GAKG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,IAAI,CAAQ;IACpB,OAAO,CAAC,YAAY,CAAsD;IAE1E,wDAAwD;IACxD,OAAO,CAAC,gBAAgB,CAIpB;IAEJ,wBAAwB;IACxB,OAAO,CAAC,wBAAwB,CAAgD;IAEhF,qCAAqC;IACrC,OAAO,CAAC,YAAY,CAA6B;IAEjD,6CAA6C;IAC7C,OAAO,CAAC,kBAAkB,CAAoB;IAE9C,uBAAuB;IACvB,OAAO,CAAC,kBAAkB,CAAkC;gBAEhD,OAAO,EAAE,oBAAoB;IAazC;;OAEG;WACU,MAAM,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,aAAa,CAAC;IAe1E,4BAA4B;IAC5B,iBAAiB,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,GAAG,IAAI;IAIrE,+BAA+B;IAC/B,qBAAqB,CAAC,QAAQ,EAAE,MAAM,UAAU,GAAG,IAAI;IAIvD,qCAAqC;IACrC,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAKtD,uBAAuB;IACvB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAItC;;;;;OAKG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO;IAkBvE,mBAAmB;IACnB,eAAe,IAAI,MAAM;IAIzB,yBAAyB;IACzB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAIrC,gDAAgD;IAChD,OAAO,CAAC,mBAAmB;IAQ3B,2DAA2D;IAC3D,OAAO,CAAC,sBAAsB;IA6B9B,oDAAoD;IACpD,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IA0C5E,2DAA2D;IAC3D,4BAA4B,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,EAAE;IAUlE;;OAEG;IACH,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAUjC,mBAAmB;IACnB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA0BtB,WAAW;IACX,OAAO,CAAC,aAAa;IA2BrB;;;;;;;;;OASG;YACW,kBAAkB;IA+DhC,aAAa;IACb,OAAO,CAAC,YAAY;IASpB,wBAAwB;IACxB,OAAO,CAAC,WAAW;IAenB,oBAAoB;IACpB,OAAO,CAAC,qBAAqB;IAU7B,uCAAuC;IACvC,OAAO,CAAC,aAAa;IAgCrB,sBAAsB;IACtB,OAAO,CAAC,QAAQ;CAQjB"}
@@ -24,6 +24,10 @@ class ApprovalProxy {
24
24
  pendingApprovals = new Map();
25
25
  /** 审批请求回调(通知外部推送到手机) */
26
26
  approvalRequestCallbacks = [];
27
+ /** YOLO 模式状态:sessionId -> enabled */
28
+ yoloSessions = new Map();
29
+ /** 内存缓存:已被"始终允许"的工具名(避免每次读 settings.json) */
30
+ alwaysAllowedTools = new Set();
27
31
  /** 获取状态信息的回调(由外部注入) */
28
32
  statusInfoProvider = null;
29
33
  constructor(options) {
@@ -60,6 +64,15 @@ class ApprovalProxy {
60
64
  setStatusInfoProvider(provider) {
61
65
  this.statusInfoProvider = provider;
62
66
  }
67
+ /** 设置会话的 YOLO 模式(服务端拦截,即使手机断连也生效) */
68
+ setYoloMode(sessionId, enabled) {
69
+ this.yoloSessions.set(sessionId, enabled);
70
+ console.log(`[ApprovalProxy] YOLO 模式 ${enabled ? '已启用' : '已关闭'}: ${sessionId}`);
71
+ }
72
+ /** 检查会话是否处于 YOLO 模式 */
73
+ isYoloMode(sessionId) {
74
+ return this.yoloSessions.get(sessionId) ?? false;
75
+ }
63
76
  /**
64
77
  * 注入审批结果
65
78
  *
@@ -89,6 +102,14 @@ class ApprovalProxy {
89
102
  isPending(requestId) {
90
103
  return this.pendingApprovals.has(requestId);
91
104
  }
105
+ /** 检查工具是否已被"始终允许"(内存缓存 + settings.json 双重检查) */
106
+ isToolAlwaysAllowed(toolName, projectPath) {
107
+ // 1. 内存缓存(最快路径)
108
+ if (this.alwaysAllowedTools.has(toolName))
109
+ return true;
110
+ // 2. settings.json 检查
111
+ return this.isToolInClaudeSettings(toolName, projectPath);
112
+ }
92
113
  /** 检查工具是否已在 settings.json permissions.allow 中(检查项目级和全局) */
93
114
  isToolInClaudeSettings(toolName, projectPath) {
94
115
  const checkPath = (filepath) => {
@@ -96,8 +117,18 @@ class ApprovalProxy {
96
117
  const raw = node_fs_1.default.readFileSync(filepath, 'utf-8');
97
118
  const settings = JSON.parse(raw);
98
119
  const allow = settings?.permissions?.allow ?? [];
99
- // 匹配 "Edit(*)" "Edit" 开头的任何条目
100
- return allow.some(entry => entry === `${toolName}(*)` || entry === toolName);
120
+ return allow.some(entry => {
121
+ // 精确匹配: "Edit" === "Edit"
122
+ if (entry === toolName)
123
+ return true;
124
+ // 通配符匹配: "Edit(*)" 表示允许该工具的所有调用
125
+ if (entry === `${toolName}(*)`)
126
+ return true;
127
+ // MCP 服务器级匹配: 条目 "mcp__pencil" 覆盖 "mcp__pencil__batch_design"
128
+ if (toolName.startsWith(`${entry}__`))
129
+ return true;
130
+ return false;
131
+ });
101
132
  }
102
133
  catch {
103
134
  return false;
@@ -147,6 +178,8 @@ class ApprovalProxy {
147
178
  const label = projectPath ? `${projectPath}/.claude/settings.json` : '~/.claude/settings.json';
148
179
  console.log(`[ApprovalProxy] 已将 ${entry} 写入 ${label}`);
149
180
  }
181
+ // 同步更新内存缓存
182
+ this.alwaysAllowedTools.add(toolName);
150
183
  }
151
184
  catch (err) {
152
185
  console.error('[ApprovalProxy] 写入 settings.json 失败:', err);
@@ -257,10 +290,15 @@ class ApprovalProxy {
257
290
  createdAt: Date.now(),
258
291
  };
259
292
  console.log(`[ApprovalProxy] 收到审批请求: ${requestId} (${approvalRequest.toolName})`);
260
- // 检查工具是否已在 Claude Code settings 中被允许,如果是直接放行(不需要手机审批)
261
- // 优先检查项目级,再检查全局
262
- if (this.isToolInClaudeSettings(approvalRequest.toolName, projectPath !== 'unknown' ? projectPath : undefined)) {
263
- console.log(`[ApprovalProxy] ${approvalRequest.toolName} 已在 settings.json 中被允许,直接放行`);
293
+ // 检查工具是否已被"始终允许"(内存缓存 + settings.json),直接放行不发通知
294
+ if (this.isToolAlwaysAllowed(approvalRequest.toolName, projectPath !== 'unknown' ? projectPath : undefined)) {
295
+ console.log(`[ApprovalProxy] ${approvalRequest.toolName} 已被始终允许,直接放行(不通知)`);
296
+ this.sendJson(res, 200, { decision: 'allow' });
297
+ return;
298
+ }
299
+ // YOLO 模式:服务端直接放行(即使手机断连也生效)
300
+ if (this.yoloSessions.get(approvalRequest.sessionId)) {
301
+ console.log(`[ApprovalProxy] YOLO 模式,自动放行: ${approvalRequest.toolName}`);
264
302
  this.sendJson(res, 200, { decision: 'allow' });
265
303
  return;
266
304
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ApprovalProxy.js","sourceRoot":"","sources":["../../src/approval/ApprovalProxy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ApprovalProxy.js","sourceRoot":"","sources":["../../src/approval/ApprovalProxy.ts"],"names":[],"mappings":"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"}
@@ -2,8 +2,8 @@
2
2
  * Hook 安装器
3
3
  *
4
4
  * 负责将 Sessix 的审批 hook 脚本安装到 Claude Code 中:
5
- * 1. 创建 ~/.sessix/hooks/ 目录并写入 approval-hook.sh
6
- * 2. 在 ~/.claude/settings.json 中注册 PreToolUse hook
5
+ * 1. 创建 ~/.sessix/hooks/ 目录并写入 approval-hook.sh 和 permission-accept.sh
6
+ * 2. 在 ~/.claude/settings.json 中注册 PreToolUse 和 PermissionRequest hook
7
7
  */
8
8
  export declare class HookInstaller {
9
9
  /**
@@ -35,6 +35,8 @@ export declare class HookInstaller {
35
35
  * 从 Claude Code settings.json 移除 Sessix hook 配置
36
36
  */
37
37
  private removeHookFromSettings;
38
+ /** 从指定 hook 事件数组中移除包含指定命令的条目 */
39
+ private removeHookCommand;
38
40
  /**
39
41
  * 读取 Claude Code settings.json
40
42
  */
@@ -44,12 +46,14 @@ export declare class HookInstaller {
44
46
  */
45
47
  private writeClaudeSettings;
46
48
  /**
47
- * 检查 settings 中是否已包含 Sessix hook 配置
49
+ * 检查 settings 中是否已包含所有 Sessix hook 配置
48
50
  */
49
51
  private hasHookConfig;
50
- /**
51
- * 判断一个 hook 条目是否是 Sessix 的
52
- */
53
- private isSessionHookEntry;
52
+ /** 检查 PreToolUse 中是否有 approval-hook.sh */
53
+ private hasPreToolUseConfig;
54
+ /** 检查 PermissionRequest 中是否有 permission-accept.sh */
55
+ private hasPermissionRequestConfig;
56
+ /** 检查 hook 数组中是否包含指定命令 */
57
+ private hasHookEntry;
54
58
  }
55
59
  //# sourceMappingURL=HookInstaller.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HookInstaller.d.ts","sourceRoot":"","sources":["../../src/hooks/HookInstaller.ts"],"names":[],"mappings":"AAkEA;;;;;;GAMG;AACH,qBAAa,aAAa;IACxB;;;;;;;OAOG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB9B;;;;;OAKG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAKhC;;;OAGG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAsBrC;;OAEG;YACW,iBAAiB;IA+B/B;;OAEG;YACW,sBAAsB;IAyBpC;;OAEG;YACW,kBAAkB;IAUhC;;OAEG;YACW,mBAAmB;IAMjC;;OAEG;IACH,OAAO,CAAC,aAAa;IASrB;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAS3B"}
1
+ {"version":3,"file":"HookInstaller.d.ts","sourceRoot":"","sources":["../../src/hooks/HookInstaller.ts"],"names":[],"mappings":"AA6FA;;;;;;GAMG;AACH,qBAAa,aAAa;IACxB;;;;;;;OAOG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB9B;;;;;OAKG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAKhC;;;OAGG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAyBrC;;OAEG;YACW,iBAAiB;IAwC/B;;OAEG;YACW,sBAAsB;IAiBpC,gCAAgC;IAChC,OAAO,CAAC,iBAAiB;IAYzB;;OAEG;YACW,kBAAkB;IAUhC;;OAEG;YACW,mBAAmB;IAMjC;;OAEG;IACH,OAAO,CAAC,aAAa;IAIrB,0CAA0C;IAC1C,OAAO,CAAC,mBAAmB;IAI3B,qDAAqD;IACrD,OAAO,CAAC,0BAA0B;IAIlC,0BAA0B;IAC1B,OAAO,CAAC,YAAY;CAMrB"}
@@ -8,10 +8,14 @@ const node_os_1 = require("node:os");
8
8
  const SESSIX_HOOKS_DIR = (0, node_path_1.join)((0, node_os_1.homedir)(), '.sessix', 'hooks');
9
9
  /** Hook 脚本文件路径 */
10
10
  const HOOK_SCRIPT_PATH = (0, node_path_1.join)(SESSIX_HOOKS_DIR, 'approval-hook.sh');
11
+ /** PermissionRequest 兜底脚本路径 */
12
+ const PERMISSION_ACCEPT_PATH = (0, node_path_1.join)(SESSIX_HOOKS_DIR, 'permission-accept.sh');
11
13
  /** Claude Code settings.json 路径 */
12
14
  const CLAUDE_SETTINGS_PATH = (0, node_path_1.join)((0, node_os_1.homedir)(), '.claude', 'settings.json');
13
15
  /** hook 脚本命令(使用 ~ 前缀,Claude Code 会展开) */
14
16
  const HOOK_COMMAND = '~/.sessix/hooks/approval-hook.sh';
17
+ /** PermissionRequest 兜底脚本命令 */
18
+ const PERMISSION_ACCEPT_COMMAND = '~/.sessix/hooks/permission-accept.sh';
15
19
  /**
16
20
  * approval-hook.sh 脚本模板
17
21
  *
@@ -61,12 +65,32 @@ else
61
65
  exit 0
62
66
  fi
63
67
  `;
68
+ /**
69
+ * permission-accept.sh 脚本模板
70
+ *
71
+ * 仅在 Sessix 管理的会话中激活。
72
+ * 当 Claude Code 弹出内置权限对话框(PermissionRequest)时,
73
+ * 自动接受权限请求,避免 Sessix 会话因缺少终端 UI 而永久阻塞。
74
+ * 不做任何 HTTP 调用,即时返回。
75
+ */
76
+ const PERMISSION_ACCEPT_TEMPLATE = `#!/bin/bash
77
+ # Sessix PermissionRequest 兜底
78
+ # 自动接受权限请求,避免 Sessix 会话阻塞
79
+
80
+ if [ -z "$SESSIX_SESSION_ID" ]; then
81
+ exit 0
82
+ fi
83
+
84
+ # 输出 JSON 决策,自动接受权限请求
85
+ echo '{"decision":"allow"}'
86
+ exit 0
87
+ `;
64
88
  /**
65
89
  * Hook 安装器
66
90
  *
67
91
  * 负责将 Sessix 的审批 hook 脚本安装到 Claude Code 中:
68
- * 1. 创建 ~/.sessix/hooks/ 目录并写入 approval-hook.sh
69
- * 2. 在 ~/.claude/settings.json 中注册 PreToolUse hook
92
+ * 1. 创建 ~/.sessix/hooks/ 目录并写入 approval-hook.sh 和 permission-accept.sh
93
+ * 2. 在 ~/.claude/settings.json 中注册 PreToolUse 和 PermissionRequest hook
70
94
  */
71
95
  class HookInstaller {
72
96
  /**
@@ -82,8 +106,10 @@ class HookInstaller {
82
106
  await (0, promises_1.mkdir)(SESSIX_HOOKS_DIR, { recursive: true });
83
107
  // 2. 写入 hook 脚本
84
108
  await (0, promises_1.writeFile)(HOOK_SCRIPT_PATH, HOOK_SCRIPT_TEMPLATE, 'utf-8');
109
+ await (0, promises_1.writeFile)(PERMISSION_ACCEPT_PATH, PERMISSION_ACCEPT_TEMPLATE, 'utf-8');
85
110
  // 3. 添加执行权限
86
111
  await (0, promises_1.chmod)(HOOK_SCRIPT_PATH, 0o755);
112
+ await (0, promises_1.chmod)(PERMISSION_ACCEPT_PATH, 0o755);
87
113
  // 4. 更新 Claude Code settings.json
88
114
  await this.addHookToSettings();
89
115
  console.log('[HookInstaller] Hook 安装完成');
@@ -103,20 +129,24 @@ class HookInstaller {
103
129
  * 脚本文件和 settings.json 配置必须同时存在才算已安装
104
130
  */
105
131
  async isInstalled() {
106
- // 检查脚本文件是否存在
107
- let scriptExists = false;
132
+ // 检查两个脚本文件是否都存在
133
+ let approvalScriptExists = false;
134
+ let permissionScriptExists = false;
108
135
  try {
109
136
  await (0, promises_1.access)(HOOK_SCRIPT_PATH);
110
- scriptExists = true;
137
+ approvalScriptExists = true;
111
138
  }
112
- catch {
113
- // 脚本不存在
139
+ catch { /* 不存在 */ }
140
+ try {
141
+ await (0, promises_1.access)(PERMISSION_ACCEPT_PATH);
142
+ permissionScriptExists = true;
114
143
  }
144
+ catch { /* 不存在 */ }
115
145
  // 检查 settings.json 中是否有 Sessix hook 配置
116
146
  const settings = await this.readClaudeSettings();
117
147
  const configExists = this.hasHookConfig(settings);
118
- // 两者都存在才算已安装
119
- return scriptExists && configExists;
148
+ // 所有组件都存在才算已安装
149
+ return approvalScriptExists && permissionScriptExists && configExists;
120
150
  }
121
151
  // ============================================
122
152
  // 内部方法
@@ -126,50 +156,66 @@ class HookInstaller {
126
156
  */
127
157
  async addHookToSettings() {
128
158
  let settings = await this.readClaudeSettings();
129
- // 如果已经存在,跳过
130
- if (this.hasHookConfig(settings)) {
131
- console.log('[HookInstaller] Hook 配置已存在,跳过');
132
- return;
133
- }
134
- // 确保 hooks 和 PreToolUse 结构存在
159
+ let changed = false;
160
+ // 确保 hooks 结构存在
135
161
  if (!settings.hooks) {
136
162
  settings.hooks = {};
137
163
  }
138
- if (!settings.hooks.PreToolUse) {
139
- settings.hooks.PreToolUse = [];
164
+ // PreToolUse: approval-hook.sh
165
+ if (!this.hasPreToolUseConfig(settings)) {
166
+ if (!settings.hooks.PreToolUse) {
167
+ settings.hooks.PreToolUse = [];
168
+ }
169
+ settings.hooks.PreToolUse.push({
170
+ matcher: '',
171
+ hooks: [{ type: 'command', command: HOOK_COMMAND }],
172
+ });
173
+ changed = true;
174
+ }
175
+ // PermissionRequest: permission-accept.sh(兜底未知工具)
176
+ if (!this.hasPermissionRequestConfig(settings)) {
177
+ if (!settings.hooks.PermissionRequest) {
178
+ settings.hooks.PermissionRequest = [];
179
+ }
180
+ settings.hooks.PermissionRequest.push({
181
+ matcher: '',
182
+ hooks: [{ type: 'command', command: PERMISSION_ACCEPT_COMMAND }],
183
+ });
184
+ changed = true;
185
+ }
186
+ if (changed) {
187
+ await this.writeClaudeSettings(settings);
188
+ }
189
+ else {
190
+ console.log('[HookInstaller] Hook 配置已存在,跳过');
140
191
  }
141
- // 添加 Sessix hook 配置
142
- settings.hooks.PreToolUse.push({
143
- matcher: '',
144
- hooks: [
145
- {
146
- type: 'command',
147
- command: HOOK_COMMAND,
148
- },
149
- ],
150
- });
151
- await this.writeClaudeSettings(settings);
152
192
  }
153
193
  /**
154
194
  * 从 Claude Code settings.json 移除 Sessix hook 配置
155
195
  */
156
196
  async removeHookFromSettings() {
157
197
  let settings = await this.readClaudeSettings();
158
- if (!settings.hooks?.PreToolUse) {
198
+ if (!settings.hooks)
159
199
  return;
160
- }
161
- // 过滤掉包含 Sessix hook 命令的条目
162
- settings.hooks.PreToolUse = settings.hooks.PreToolUse.filter((entry) => !this.isSessionHookEntry(entry));
163
- // 如果 PreToolUse 为空,删除它
164
- if (settings.hooks.PreToolUse.length === 0) {
165
- delete settings.hooks.PreToolUse;
166
- }
200
+ // 移除 PreToolUse 中的 approval-hook.sh
201
+ this.removeHookCommand(settings, 'PreToolUse', HOOK_COMMAND);
202
+ // 移除 PermissionRequest 中的 permission-accept.sh
203
+ this.removeHookCommand(settings, 'PermissionRequest', PERMISSION_ACCEPT_COMMAND);
167
204
  // 如果 hooks 为空,删除它
168
205
  if (Object.keys(settings.hooks).length === 0) {
169
206
  delete settings.hooks;
170
207
  }
171
208
  await this.writeClaudeSettings(settings);
172
209
  }
210
+ /** 从指定 hook 事件数组中移除包含指定命令的条目 */
211
+ removeHookCommand(settings, event, command) {
212
+ if (!Array.isArray(settings.hooks?.[event]))
213
+ return;
214
+ settings.hooks[event] = settings.hooks[event].filter((entry) => !entry?.hooks?.some?.((h) => h.type === 'command' && h.command === command));
215
+ if (settings.hooks[event].length === 0) {
216
+ delete settings.hooks[event];
217
+ }
218
+ }
173
219
  /**
174
220
  * 读取 Claude Code settings.json
175
221
  */
@@ -192,23 +238,24 @@ class HookInstaller {
192
238
  await (0, promises_1.writeFile)(CLAUDE_SETTINGS_PATH, JSON.stringify(settings, null, 2) + '\n', 'utf-8');
193
239
  }
194
240
  /**
195
- * 检查 settings 中是否已包含 Sessix hook 配置
241
+ * 检查 settings 中是否已包含所有 Sessix hook 配置
196
242
  */
197
243
  hasHookConfig(settings) {
198
- const preToolUse = settings?.hooks?.PreToolUse;
199
- if (!Array.isArray(preToolUse)) {
200
- return false;
201
- }
202
- return preToolUse.some((entry) => this.isSessionHookEntry(entry));
244
+ return this.hasPreToolUseConfig(settings) && this.hasPermissionRequestConfig(settings);
203
245
  }
204
- /**
205
- * 判断一个 hook 条目是否是 Sessix 的
206
- */
207
- isSessionHookEntry(entry) {
208
- if (!entry?.hooks || !Array.isArray(entry.hooks)) {
246
+ /** 检查 PreToolUse 中是否有 approval-hook.sh */
247
+ hasPreToolUseConfig(settings) {
248
+ return this.hasHookEntry(settings?.hooks?.PreToolUse, HOOK_COMMAND);
249
+ }
250
+ /** 检查 PermissionRequest 中是否有 permission-accept.sh */
251
+ hasPermissionRequestConfig(settings) {
252
+ return this.hasHookEntry(settings?.hooks?.PermissionRequest, PERMISSION_ACCEPT_COMMAND);
253
+ }
254
+ /** 检查 hook 数组中是否包含指定命令 */
255
+ hasHookEntry(hookArray, command) {
256
+ if (!Array.isArray(hookArray))
209
257
  return false;
210
- }
211
- return entry.hooks.some((hook) => hook.type === 'command' && hook.command === HOOK_COMMAND);
258
+ return hookArray.some((entry) => entry?.hooks?.some?.((hook) => hook.type === 'command' && hook.command === command));
212
259
  }
213
260
  }
214
261
  exports.HookInstaller = HookInstaller;
@@ -1 +1 @@
1
- {"version":3,"file":"HookInstaller.js","sourceRoot":"","sources":["../../src/hooks/HookInstaller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HookInstaller.js","sourceRoot":"","sources":["../../src/hooks/HookInstaller.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -25,6 +25,8 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
25
25
 
26
26
  // src/index.ts
27
27
  var import_node_os5 = require("os");
28
+ var import_node_fs2 = require("fs");
29
+ var import_node_path5 = require("path");
28
30
 
29
31
  // src/i18n/locales/zh.ts
30
32
  var zh = {
@@ -45,6 +47,7 @@ var zh = {
45
47
  autoDiscoveryOff: " \u2139\uFE0F \u81EA\u52A8\u53D1\u73B0\u5DF2\u5173\u95ED\uFF0C\u624B\u673A\u9700\u624B\u52A8\u8F93\u5165\u5730\u5740\u8FDE\u63A5",
46
48
  pairingOpen: " \u{1F513} \u914D\u5BF9\u6A21\u5F0F\u5DF2\u5F00\u542F\uFF085 \u5206\u949F\u5185\u6709\u6548\uFF09\u2014 \u6309 p \u91CD\u65B0\u5F00\u542F",
47
49
  pairingReopened: "\u{1F513} \u914D\u5BF9\u6A21\u5F0F\u5DF2\u91CD\u65B0\u5F00\u542F\uFF085 \u5206\u949F\uFF09",
50
+ updateAvailable: "\u53D1\u73B0\u65B0\u7248\u672C v{{latest}}\uFF08\u5F53\u524D v{{current}}\uFF09\uFF0C\u8FD0\u884C\u4EE5\u4E0B\u547D\u4EE4\u66F4\u65B0\uFF1A",
48
51
  receivedSignal: "\u6536\u5230 {{signal}}\uFF0C\u6B63\u5728\u4F18\u96C5\u5173\u95ED...",
49
52
  goodbye: "\u6240\u6709\u670D\u52A1\u5DF2\u5173\u95ED\uFF0C\u518D\u89C1\uFF01",
50
53
  shutdownError: "\u5173\u95ED\u8FC7\u7A0B\u51FA\u9519:",
@@ -149,6 +152,7 @@ var en = {
149
152
  autoDiscoveryOff: " Auto-discovery disabled, phone must enter address manually",
150
153
  pairingOpen: " \u{1F513} Pairing mode open (5 min) \u2014 press p to reopen",
151
154
  pairingReopened: "\u{1F513} Pairing mode reopened (5 min)",
155
+ updateAvailable: "New version v{{latest}} available (current v{{current}}). Update with:",
152
156
  receivedSignal: "Received {{signal}}, graceful shutdown...",
153
157
  goodbye: "All services closed, goodbye!",
154
158
  shutdownError: "Shutdown error:",
@@ -2037,22 +2041,27 @@ var MdnsService = class {
2037
2041
  updatePairingState(state) {
2038
2042
  this.pairing = state;
2039
2043
  if (!this.bonjour) return;
2040
- if (this.service) {
2041
- this.service.stop?.(() => {
2044
+ const republish = () => {
2045
+ if (!this.bonjour) return;
2046
+ this.service = this.bonjour.publish({
2047
+ name: "Sessix",
2048
+ type: "sessix",
2049
+ port: this.wsPort,
2050
+ txt: {
2051
+ version: this.version,
2052
+ httpPort: String(this.httpPort),
2053
+ wsPort: String(this.wsPort),
2054
+ pairing: state
2055
+ }
2042
2056
  });
2057
+ };
2058
+ if (this.service) {
2059
+ const old = this.service;
2043
2060
  this.service = null;
2061
+ old.stop?.(() => republish());
2062
+ } else {
2063
+ republish();
2044
2064
  }
2045
- this.service = this.bonjour.publish({
2046
- name: "Sessix",
2047
- type: "sessix",
2048
- port: this.wsPort,
2049
- txt: {
2050
- version: this.version,
2051
- httpPort: String(this.httpPort),
2052
- wsPort: String(this.wsPort),
2053
- pairing: state
2054
- }
2055
- });
2056
2065
  }
2057
2066
  };
2058
2067
 
@@ -3355,9 +3364,6 @@ async function start(opts = {}) {
3355
3364
  onStateChange: (state) => mdnsService?.updatePairingState(state)
3356
3365
  });
3357
3366
  approvalProxy.setPairingManager(pairingManager);
3358
- if (opts.enablePairing !== false) {
3359
- pairingManager.open();
3360
- }
3361
3367
  const authManager = new AuthManager();
3362
3368
  authManager.on("login_url", (url) => {
3363
3369
  wsBridge.broadcast({ type: "auth_login_url", url });
@@ -3733,6 +3739,9 @@ async function start(opts = {}) {
3733
3739
  mdnsService.stop();
3734
3740
  mdnsService = null;
3735
3741
  };
3742
+ if (opts.enablePairing !== false) {
3743
+ pairingManager.open();
3744
+ }
3736
3745
  if (opts.enableAutoConnect !== false) {
3737
3746
  startMdns();
3738
3747
  }
@@ -3798,9 +3807,33 @@ async function start(opts = {}) {
3798
3807
 
3799
3808
  // src/index.ts
3800
3809
  var import_qrcode_terminal = __toESM(require("qrcode-terminal"));
3810
+ function getPackageVersion() {
3811
+ try {
3812
+ const pkg = JSON.parse((0, import_node_fs2.readFileSync)((0, import_node_path5.join)(__dirname, "..", "package.json"), "utf8"));
3813
+ return pkg.version ?? "0.0.0";
3814
+ } catch {
3815
+ return "0.0.0";
3816
+ }
3817
+ }
3818
+ var PKG_VERSION = getPackageVersion();
3819
+ async function fetchLatestVersion() {
3820
+ try {
3821
+ const controller = new AbortController();
3822
+ const timer = setTimeout(() => controller.abort(), 5e3);
3823
+ const res = await fetch("https://registry.npmjs.org/sessix-server/latest", {
3824
+ signal: controller.signal
3825
+ });
3826
+ clearTimeout(timer);
3827
+ if (!res.ok) return null;
3828
+ const data = await res.json();
3829
+ return data.version ?? null;
3830
+ } catch {
3831
+ return null;
3832
+ }
3833
+ }
3801
3834
  async function main() {
3802
3835
  console.log("=".repeat(50));
3803
- console.log(t("startup.banner"));
3836
+ console.log(`${t("startup.banner")} v${PKG_VERSION}`);
3804
3837
  console.log("=".repeat(50));
3805
3838
  console.log();
3806
3839
  const enableAutoConnect = process.env.SESSIX_AUTO_CONNECT !== "false";
@@ -3842,6 +3875,13 @@ async function main() {
3842
3875
  console.log();
3843
3876
  console.log(t("startup.pairingOpen"));
3844
3877
  console.log();
3878
+ fetchLatestVersion().then((latest) => {
3879
+ if (!latest || latest === PKG_VERSION) return;
3880
+ console.log();
3881
+ console.log(` \u{1F4E6} ${t("startup.updateAvailable", { current: PKG_VERSION, latest })}`);
3882
+ console.log(` npx sessix-server@latest`);
3883
+ console.log();
3884
+ });
3845
3885
  const shutdown = async (signal) => {
3846
3886
  console.log(`
3847
3887
  [Main] ${t("startup.receivedSignal", { signal })}`);
@@ -1 +1 @@
1
- {"version":3,"file":"ExpoNotificationChannel.d.ts","sourceRoot":"","sources":["../../src/notification/ExpoNotificationChannel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAI3F;;;;;;;GAOG;AACH,qBAAa,uBAAwB,YAAW,mBAAmB;IACjE,OAAO,CAAC,MAAM,CAAyB;IAEvC,WAAW,IAAI,OAAO;IAItB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK7B,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK1B,IAAI,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;CA6BxD"}
1
+ {"version":3,"file":"ExpoNotificationChannel.d.ts","sourceRoot":"","sources":["../../src/notification/ExpoNotificationChannel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAI3F;;;;;;;GAOG;AACH,qBAAa,uBAAwB,YAAW,mBAAmB;IACjE,OAAO,CAAC,MAAM,CAAyB;IAEvC,WAAW,IAAI,OAAO;IAItB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK7B,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK1B,IAAI,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;CAqCxD"}
@@ -45,7 +45,15 @@ class ExpoNotificationChannel {
45
45
  console.warn('[ExpoNotificationChannel] Expo Push API 返回错误:', res.status, JSON.stringify(body));
46
46
  }
47
47
  else {
48
- console.log('[ExpoNotificationChannel] Expo Push API 响应:', JSON.stringify(body));
48
+ // 检查每个 ticket 的状态,记录失败的推送
49
+ const data = body.data;
50
+ if (Array.isArray(data)) {
51
+ for (const ticket of data) {
52
+ if (ticket.status === 'error') {
53
+ console.error(`[ExpoNotificationChannel] 推送失败: ${ticket.message} (${ticket.details?.error ?? 'unknown'})`);
54
+ }
55
+ }
56
+ }
49
57
  }
50
58
  }
51
59
  catch (err) {