ccpoke 1.7.1 → 1.7.3

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 (106) hide show
  1. package/ccpoke-lock.json +102 -0
  2. package/dist/agent/claude-code/claude-code-installer.d.ts +7 -21
  3. package/dist/agent/claude-code/claude-code-installer.js +67 -317
  4. package/dist/agent/claude-code/claude-code-installer.js.map +1 -1
  5. package/dist/agent/claude-code/claude-code-provider.d.ts +1 -1
  6. package/dist/agent/claude-code/claude-code-provider.js +6 -6
  7. package/dist/agent/claude-code/claude-code-provider.js.map +1 -1
  8. package/dist/agent/codex/codex-installer.d.ts +7 -12
  9. package/dist/agent/codex/codex-installer.js +50 -105
  10. package/dist/agent/codex/codex-installer.js.map +1 -1
  11. package/dist/agent/codex/codex-provider.d.ts +1 -1
  12. package/dist/agent/codex/codex-provider.js +6 -6
  13. package/dist/agent/codex/codex-provider.js.map +1 -1
  14. package/dist/agent/cursor/cursor-installer.d.ts +7 -13
  15. package/dist/agent/cursor/cursor-installer.js +53 -109
  16. package/dist/agent/cursor/cursor-installer.js.map +1 -1
  17. package/dist/agent/cursor/cursor-provider.d.ts +1 -1
  18. package/dist/agent/cursor/cursor-provider.js +6 -6
  19. package/dist/agent/cursor/cursor-provider.js.map +1 -1
  20. package/dist/agent/gemini-cli/gemini-cli-installer.d.ts +7 -12
  21. package/dist/agent/gemini-cli/gemini-cli-installer.js +64 -91
  22. package/dist/agent/gemini-cli/gemini-cli-installer.js.map +1 -1
  23. package/dist/agent/gemini-cli/gemini-cli-provider.d.ts +1 -1
  24. package/dist/agent/gemini-cli/gemini-cli-provider.js +6 -6
  25. package/dist/agent/gemini-cli/gemini-cli-provider.js.map +1 -1
  26. package/dist/agent/gemini-cli/gemini-cli-settings.d.ts +1 -3
  27. package/dist/agent/gemini-cli/gemini-cli-settings.js +6 -33
  28. package/dist/agent/gemini-cli/gemini-cli-settings.js.map +1 -1
  29. package/dist/agent/opencode/opencode-installer.d.ts +7 -9
  30. package/dist/agent/opencode/opencode-installer.js +18 -130
  31. package/dist/agent/opencode/opencode-installer.js.map +1 -1
  32. package/dist/agent/opencode/opencode-provider.d.ts +1 -1
  33. package/dist/agent/opencode/opencode-provider.js +6 -6
  34. package/dist/agent/opencode/opencode-provider.js.map +1 -1
  35. package/dist/agent/types.d.ts +12 -5
  36. package/dist/channel/discord/discord-session-command-handler.js +1 -0
  37. package/dist/channel/discord/discord-session-command-handler.js.map +1 -1
  38. package/dist/channel/telegram/telegram-channel.d.ts +1 -0
  39. package/dist/channel/telegram/telegram-channel.js +30 -28
  40. package/dist/channel/telegram/telegram-channel.js.map +1 -1
  41. package/dist/commands/setup.js +100 -39
  42. package/dist/commands/setup.js.map +1 -1
  43. package/dist/commands/update.js +3 -1
  44. package/dist/commands/update.js.map +1 -1
  45. package/dist/hooks/hook-env-writer.d.ts +4 -0
  46. package/dist/hooks/hook-env-writer.js +33 -0
  47. package/dist/hooks/hook-env-writer.js.map +1 -0
  48. package/dist/hooks/hook-lock.d.ts +11 -0
  49. package/dist/hooks/hook-lock.js +40 -0
  50. package/dist/hooks/hook-lock.js.map +1 -0
  51. package/dist/hooks/hook-script-copier.d.ts +6 -0
  52. package/dist/hooks/hook-script-copier.js +49 -0
  53. package/dist/hooks/hook-script-copier.js.map +1 -0
  54. package/dist/i18n/locales/en.js +4 -3
  55. package/dist/i18n/locales/en.js.map +1 -1
  56. package/dist/i18n/locales/vi.js +4 -3
  57. package/dist/i18n/locales/vi.js.map +1 -1
  58. package/dist/i18n/locales/zh.js +4 -3
  59. package/dist/i18n/locales/zh.js.map +1 -1
  60. package/dist/i18n/types.d.ts +3 -2
  61. package/dist/index.js +3 -1
  62. package/dist/index.js.map +1 -1
  63. package/dist/tmux/tmux-scanner.js +45 -17
  64. package/dist/tmux/tmux-scanner.js.map +1 -1
  65. package/dist/tmux/tmux-session-resolver.js +8 -8
  66. package/dist/tmux/tmux-session-resolver.js.map +1 -1
  67. package/dist/utils/atomic-file.d.ts +3 -0
  68. package/dist/utils/atomic-file.js +26 -0
  69. package/dist/utils/atomic-file.js.map +1 -0
  70. package/dist/utils/constants.d.ts +1 -0
  71. package/dist/utils/constants.js +15 -2
  72. package/dist/utils/constants.js.map +1 -1
  73. package/dist/utils/paths.d.ts +5 -0
  74. package/dist/utils/paths.js +5 -0
  75. package/dist/utils/paths.js.map +1 -1
  76. package/dist/utils/version-check.js +1 -2
  77. package/dist/utils/version-check.js.map +1 -1
  78. package/hooks/claude-code-notification.cmd +13 -0
  79. package/hooks/claude-code-notification.sh +10 -0
  80. package/hooks/claude-code-permission-request.cmd +13 -0
  81. package/hooks/claude-code-permission-request.sh +13 -0
  82. package/hooks/claude-code-pretooluse.cmd +15 -0
  83. package/hooks/claude-code-pretooluse.sh +13 -0
  84. package/hooks/claude-code-session-start.cmd +13 -0
  85. package/hooks/claude-code-session-start.sh +17 -0
  86. package/hooks/claude-code-stop.cmd +11 -0
  87. package/hooks/claude-code-stop.sh +8 -0
  88. package/hooks/codex-notify.cmd +12 -0
  89. package/hooks/codex-notify.sh +8 -0
  90. package/hooks/cursor-stop.cmd +12 -0
  91. package/hooks/cursor-stop.sh +8 -0
  92. package/hooks/gemini-notification.cmd +12 -0
  93. package/hooks/gemini-notification.sh +10 -0
  94. package/hooks/gemini-session-start.cmd +12 -0
  95. package/hooks/gemini-session-start.sh +10 -0
  96. package/hooks/gemini-stop.cmd +12 -0
  97. package/hooks/gemini-stop.sh +10 -0
  98. package/hooks/lib/common.cmd +12 -0
  99. package/hooks/lib/common.sh +39 -0
  100. package/hooks/lib/json-merge.cjs +11 -0
  101. package/hooks/lib/json-read.cjs +9 -0
  102. package/hooks/opencode-notify.js +119 -0
  103. package/package.json +8 -2
  104. package/dist/utils/windows-hook-script-builder.d.ts +0 -2
  105. package/dist/utils/windows-hook-script-builder.js +0 -24
  106. package/dist/utils/windows-hook-script-builder.js.map +0 -1
@@ -0,0 +1,102 @@
1
+ {
2
+ "claude-code-notification.cmd": {
3
+ "hash": "sha256:ef88b4858794d08b822c5ca934f44a8f277e7169589a1f4dfc99cd6f25f6aad3",
4
+ "version": "1.7.2"
5
+ },
6
+ "claude-code-notification.sh": {
7
+ "hash": "sha256:016e8b15d394ca180e4e876aebfd25fcd68d889d1d7e8cc4c4a6974bc39f807e",
8
+ "version": "1.7.2"
9
+ },
10
+ "claude-code-permission-request.cmd": {
11
+ "hash": "sha256:9487e2021d62b813e578bd9c1810f5fe30c50bfd9f43c79380bc7241ae554683",
12
+ "version": "1.7.2"
13
+ },
14
+ "claude-code-permission-request.sh": {
15
+ "hash": "sha256:e9bd171e2e4394112757cc9b02713373b4e628baf71b813700ace34ee06528e9",
16
+ "version": "1.7.2"
17
+ },
18
+ "claude-code-pretooluse.cmd": {
19
+ "hash": "sha256:2ec9ecaf70b52f1f87e2c0088c4d48ca5c7f28b971f625d3b364f84c95a8959a",
20
+ "version": "1.7.2"
21
+ },
22
+ "claude-code-pretooluse.sh": {
23
+ "hash": "sha256:811b3ed6f121b2464057293dd81e1946f1696259756dc1f043881b4c3e3ec163",
24
+ "version": "1.7.2"
25
+ },
26
+ "claude-code-session-start.cmd": {
27
+ "hash": "sha256:783bba375ed0ca4615b13274d4691f0b60d0faea1d006f32c0fb4d5b51eded81",
28
+ "version": "1.7.2"
29
+ },
30
+ "claude-code-session-start.sh": {
31
+ "hash": "sha256:338d0064bddb47456a0a09bac4de6844fec47a119845e3c135b3cc4b811610cc",
32
+ "version": "1.7.2"
33
+ },
34
+ "claude-code-stop.cmd": {
35
+ "hash": "sha256:35495ab82262c970455311807f0e9029656278b71c0196b1a1a3541fad3406ff",
36
+ "version": "1.7.2"
37
+ },
38
+ "claude-code-stop.sh": {
39
+ "hash": "sha256:031d7181517915b0a363c074c78d0aec5eca0816e58b273811899f33cb39354a",
40
+ "version": "1.7.2"
41
+ },
42
+ "codex-notify.cmd": {
43
+ "hash": "sha256:2b96ce762757fd0d2608188ee66acb7fdebffac891ef272482f558dbea652bb1",
44
+ "version": "1.7.2"
45
+ },
46
+ "codex-notify.sh": {
47
+ "hash": "sha256:86a15daaa63e4953828cdf01f1c6a92efba1b9e3354d0a35a75c9c29f58de51f",
48
+ "version": "1.7.2"
49
+ },
50
+ "cursor-stop.cmd": {
51
+ "hash": "sha256:cc291a6f2ab2b6e8b45bdcc4020b3213db6e1e0c75a8b07a3694b3e6f248cdd4",
52
+ "version": "1.7.2"
53
+ },
54
+ "cursor-stop.sh": {
55
+ "hash": "sha256:4969d0270a55272debc77af239ce9cbc57cb065a8612ca08f22c9e7bcdfe6e5d",
56
+ "version": "1.7.2"
57
+ },
58
+ "gemini-notification.cmd": {
59
+ "hash": "sha256:0ab8e85cacee630e141eb2cc9ea56c24708bc61a482f6bd6212cfbe3e7336c42",
60
+ "version": "1.7.2"
61
+ },
62
+ "gemini-notification.sh": {
63
+ "hash": "sha256:52855f50aa12d1b47ab51a02c743876d2ad7347bcc77123e5bcb16390894fd43",
64
+ "version": "1.7.2"
65
+ },
66
+ "gemini-session-start.cmd": {
67
+ "hash": "sha256:c7238718a0396a6d21c805fc395cbaca9daec70162e61c842cbd375a786b1970",
68
+ "version": "1.7.2"
69
+ },
70
+ "gemini-session-start.sh": {
71
+ "hash": "sha256:1445a2cd5dee986c9f4d47accfa7f080f4c6565d8ea4f5d46f653fdb252cd719",
72
+ "version": "1.7.2"
73
+ },
74
+ "gemini-stop.cmd": {
75
+ "hash": "sha256:337a799ffd0d89357db1343b89e730329fe4f892b15fd9b38e08c22242e2fe90",
76
+ "version": "1.7.2"
77
+ },
78
+ "gemini-stop.sh": {
79
+ "hash": "sha256:4be634fcfac3068f39ad137e922167158ecab04554b5fcfda7132f28bf8b1207",
80
+ "version": "1.7.2"
81
+ },
82
+ "lib/common.cmd": {
83
+ "hash": "sha256:e141ef226e66e205c37c942346aa2847e5a79a5333045ba4c7a844ea45e79d30",
84
+ "version": "1.7.2"
85
+ },
86
+ "lib/common.sh": {
87
+ "hash": "sha256:0900ebf26184cab4dde32b984ad9fbd7d62b6386d740e34f8dc248fe893ecf59",
88
+ "version": "1.7.2"
89
+ },
90
+ "lib/json-merge.cjs": {
91
+ "hash": "sha256:2aca148d358f9500daee42adcbcad5d7d55a689097816727c1113867593e1e36",
92
+ "version": "1.7.2"
93
+ },
94
+ "lib/json-read.cjs": {
95
+ "hash": "sha256:f25e0bb5658f933969e7c3a8352115f76355a02350da416405ad1040d8ed03f3",
96
+ "version": "1.7.2"
97
+ },
98
+ "opencode-notify.js": {
99
+ "hash": "sha256:90f07a262d4c70d1bdc5b442ca539d22d3a9ae64ef3deffd07aba49396cacaf4",
100
+ "version": "1.7.2"
101
+ }
102
+ }
@@ -1,21 +1,7 @@
1
- export declare class ClaudeCodeInstaller {
2
- static isInstalled(): boolean;
3
- static verifyIntegrity(): {
4
- complete: boolean;
5
- missing: string[];
6
- };
7
- static install(hookPort: number, hookSecret: string): void;
8
- static uninstall(): void;
9
- private static writeStopScript;
10
- private static writeSessionStartScript;
11
- private static writeNotificationScript;
12
- private static writePreToolUseScript;
13
- private static writePermissionRequestScript;
14
- private static removeStopScript;
15
- private static removeSessionStartScript;
16
- private static removeNotificationScript;
17
- private static removePreToolUseScript;
18
- private static removePermissionRequestScript;
19
- private static removeFromSettings;
20
- private static readSettings;
21
- }
1
+ import type { IntegrityResult } from "../types.js";
2
+ export declare const claudeCodeInstaller: {
3
+ isInstalled(): boolean;
4
+ verifyIntegrity(): IntegrityResult;
5
+ install(): void;
6
+ uninstall(): void;
7
+ };
@@ -1,37 +1,32 @@
1
- import { existsSync, mkdirSync, readFileSync, renameSync, unlinkSync, writeFileSync, } from "node:fs";
2
- import { ApiRoute, isWindows } from "../../utils/constants.js";
3
- import { getPackageVersion, paths, toPosixPath } from "../../utils/paths.js";
4
- import { buildWindowsHookScript } from "../../utils/windows-hook-script-builder.js";
5
- import { AgentName } from "../types.js";
6
- const VERSION_HEADER_PATTERN = /^#\s*ccpoke-version:\s*(\S+)/;
7
- const VERSION_HEADER_PATTERN_WIN = /^@REM\s+ccpoke-version:\s*(\S+)/;
1
+ import { existsSync } from "node:fs";
2
+ import { HookScriptCopier } from "../../hooks/hook-script-copier.js";
3
+ import { readJsonFile, writeJsonFile } from "../../utils/atomic-file.js";
4
+ import { CCPOKE_MARKER, isWindows } from "../../utils/constants.js";
5
+ import { paths, toPosixPath } from "../../utils/paths.js";
6
+ const SCRIPT_MAP = [
7
+ { source: "claude-code-stop", target: () => paths.claudeCodeHookScript },
8
+ { source: "claude-code-session-start", target: () => paths.claudeCodeSessionStartScript },
9
+ { source: "claude-code-notification", target: () => paths.claudeCodeNotificationScript },
10
+ { source: "claude-code-pretooluse", target: () => paths.claudeCodePreToolUseScript },
11
+ {
12
+ source: "claude-code-permission-request",
13
+ target: () => paths.claudeCodePermissionRequestScript,
14
+ },
15
+ ];
8
16
  function hasCcpokeHook(entries) {
9
- return entries.some((entry) => entry.hooks?.some((h) => typeof h.command === "string" && h.command.includes("ccpoke")));
17
+ return entries.some((entry) => entry.hooks?.some((h) => typeof h.command === "string" && h.command.includes(CCPOKE_MARKER)));
10
18
  }
11
- function readScriptVersion(scriptPath) {
12
- try {
13
- const content = readFileSync(scriptPath, "utf-8");
14
- const lines = content.split("\n");
15
- for (const line of lines.slice(0, 3)) {
16
- const match = line.match(VERSION_HEADER_PATTERN) ?? line.match(VERSION_HEADER_PATTERN_WIN);
17
- if (match)
18
- return match[1] ?? null;
19
- }
20
- return null;
21
- }
22
- catch {
23
- return null;
19
+ function copyScripts() {
20
+ HookScriptCopier.copyLib();
21
+ const ext = isWindows() ? ".cmd" : ".sh";
22
+ for (const entry of SCRIPT_MAP) {
23
+ HookScriptCopier.copy(`${entry.source}${ext}`, entry.target());
24
24
  }
25
25
  }
26
- function isScriptOutdated(scriptPath) {
27
- if (!existsSync(scriptPath))
28
- return false;
29
- return readScriptVersion(scriptPath) !== getPackageVersion();
30
- }
31
- export class ClaudeCodeInstaller {
32
- static isInstalled() {
26
+ export const claudeCodeInstaller = {
27
+ isInstalled() {
33
28
  try {
34
- const settings = ClaudeCodeInstaller.readSettings();
29
+ const settings = readJsonFile(paths.claudeSettings, {});
35
30
  return (hasCcpokeHook(settings.hooks?.Stop ?? []) &&
36
31
  hasCcpokeHook(settings.hooks?.SessionStart ?? []) &&
37
32
  hasCcpokeHook(settings.hooks?.Notification ?? []) &&
@@ -41,52 +36,48 @@ export class ClaudeCodeInstaller {
41
36
  catch {
42
37
  return false;
43
38
  }
44
- }
45
- static verifyIntegrity() {
39
+ },
40
+ verifyIntegrity() {
46
41
  const missing = [];
47
42
  try {
48
- const settings = ClaudeCodeInstaller.readSettings();
49
- if (!hasCcpokeHook(settings.hooks?.Stop ?? []))
43
+ const settings = readJsonFile(paths.claudeSettings, {});
44
+ if (!hasCcpokeHook(settings.hooks?.Stop ?? [])) {
50
45
  missing.push("Stop hook in settings");
51
- if (!hasCcpokeHook(settings.hooks?.SessionStart ?? []))
46
+ }
47
+ if (!hasCcpokeHook(settings.hooks?.SessionStart ?? [])) {
52
48
  missing.push("SessionStart hook in settings");
53
- if (!hasCcpokeHook(settings.hooks?.Notification ?? []))
49
+ }
50
+ if (!hasCcpokeHook(settings.hooks?.Notification ?? [])) {
54
51
  missing.push("Notification hook in settings");
55
- if (!hasCcpokeHook(settings.hooks?.PreToolUse ?? []))
52
+ }
53
+ if (!hasCcpokeHook(settings.hooks?.PreToolUse ?? [])) {
56
54
  missing.push("PreToolUse hook in settings");
57
- if (!hasCcpokeHook(settings.hooks?.PermissionRequest ?? []))
55
+ }
56
+ if (!hasCcpokeHook(settings.hooks?.PermissionRequest ?? [])) {
58
57
  missing.push("PermissionRequest hook in settings");
58
+ }
59
59
  }
60
60
  catch {
61
61
  missing.push("settings.json");
62
62
  }
63
- if (!existsSync(paths.claudeCodeHookScript))
64
- missing.push("stop script file");
65
- if (!existsSync(paths.claudeCodeSessionStartScript))
66
- missing.push("session-start script file");
67
- if (!existsSync(paths.claudeCodeNotificationScript))
68
- missing.push("notification script file");
69
- if (!existsSync(paths.claudeCodePreToolUseScript))
70
- missing.push("pretooluse script file");
71
- if (!existsSync(paths.claudeCodePermissionRequestScript))
72
- missing.push("permission-request script file");
73
- if (isScriptOutdated(paths.claudeCodeHookScript))
74
- missing.push("outdated stop script");
75
- if (isScriptOutdated(paths.claudeCodeSessionStartScript))
76
- missing.push("outdated session-start script");
77
- if (isScriptOutdated(paths.claudeCodeNotificationScript))
78
- missing.push("outdated notification script");
79
- if (isScriptOutdated(paths.claudeCodePreToolUseScript))
80
- missing.push("outdated pretooluse script");
81
- if (isScriptOutdated(paths.claudeCodePermissionRequestScript))
82
- missing.push("outdated permission-request script");
63
+ const ext = isWindows() ? ".cmd" : ".sh";
64
+ for (const entry of SCRIPT_MAP) {
65
+ const targetPath = entry.target();
66
+ if (!existsSync(targetPath)) {
67
+ missing.push(`${entry.source} script file`);
68
+ }
69
+ else if (HookScriptCopier.needsCopy(`${entry.source}${ext}`, targetPath)) {
70
+ missing.push(`outdated ${entry.source} script`);
71
+ }
72
+ }
83
73
  return { complete: missing.length === 0, missing };
84
- }
85
- static install(hookPort, hookSecret) {
86
- ClaudeCodeInstaller.uninstall();
87
- const settings = ClaudeCodeInstaller.readSettings();
88
- if (!settings.hooks)
74
+ },
75
+ install() {
76
+ claudeCodeInstaller.uninstall();
77
+ const settings = readJsonFile(paths.claudeSettings, {});
78
+ if (!settings.hooks) {
89
79
  settings.hooks = {};
80
+ }
90
81
  settings.hooks.Stop = [
91
82
  ...(settings.hooks.Stop ?? []),
92
83
  {
@@ -134,252 +125,21 @@ export class ClaudeCodeInstaller {
134
125
  ],
135
126
  },
136
127
  ];
137
- mkdirSync(paths.claudeDir, { recursive: true });
138
- const tmpSettings = `${paths.claudeSettings}.tmp`;
139
- writeFileSync(tmpSettings, JSON.stringify(settings, null, 2));
140
- renameSync(tmpSettings, paths.claudeSettings);
141
- ClaudeCodeInstaller.writeStopScript(hookPort, hookSecret);
142
- ClaudeCodeInstaller.writeSessionStartScript(hookPort, hookSecret);
143
- ClaudeCodeInstaller.writeNotificationScript(hookPort, hookSecret);
144
- ClaudeCodeInstaller.writePreToolUseScript(hookPort, hookSecret);
145
- ClaudeCodeInstaller.writePermissionRequestScript(hookPort, hookSecret);
146
- }
147
- static uninstall() {
148
- ClaudeCodeInstaller.removeFromSettings();
149
- ClaudeCodeInstaller.removeStopScript();
150
- ClaudeCodeInstaller.removeSessionStartScript();
151
- ClaudeCodeInstaller.removeNotificationScript();
152
- ClaudeCodeInstaller.removePreToolUseScript();
153
- ClaudeCodeInstaller.removePermissionRequestScript();
154
- }
155
- static writeStopScript(hookPort, hookSecret) {
156
- mkdirSync(paths.hooksDir, { recursive: true });
157
- const agentParam = `?agent=${AgentName.ClaudeCode}`;
158
- const version = getPackageVersion();
159
- if (isWindows()) {
160
- writeFileSync(paths.claudeCodeHookScript, buildWindowsHookScript(version, hookPort, `${ApiRoute.HookStop}${agentParam}`, hookSecret), { mode: 0o644 });
128
+ writeJsonFile(paths.claudeSettings, settings);
129
+ copyScripts();
130
+ },
131
+ uninstall() {
132
+ const settings = readJsonFile(paths.claudeSettings, {});
133
+ if (!settings.hooks) {
161
134
  return;
162
135
  }
163
- const script = `#!/bin/bash
164
- # ccpoke-version: ${version}
165
- CCPOKE_HOST="\${CCPOKE_HOST:-localhost}"
166
- INPUT=$(cat | tr -d '\\n\\r')
167
- echo "$INPUT" | grep -q '"session_id"' || exit 0
168
- TMUX_TARGET=""
169
- if [ -n "$TMUX_PANE" ]; then
170
- TMUX_TARGET=$(tmux display-message -t "$TMUX_PANE" -p '#{session_name}:#{window_index}.#{pane_index}' 2>/dev/null || echo "")
171
- elif [ -n "$TMUX" ]; then
172
- TMUX_TARGET=$(tmux display-message -p '#{session_name}:#{window_index}.#{pane_index}' 2>/dev/null || echo "")
173
- fi
174
- if [ -n "$TMUX_TARGET" ] && echo "$TMUX_TARGET" | grep -qE '^[a-zA-Z0-9_.:/@ -]+$'; then
175
- INPUT=$(echo "$INPUT" | sed 's/}$/,"tmux_target":"'"$TMUX_TARGET"'"}/')
176
- fi
177
- echo "$INPUT" | curl -s -X POST "http://$CCPOKE_HOST:${hookPort}${ApiRoute.HookStop}${agentParam}" \\
178
- -H "Content-Type: application/json" -H "X-CCPoke-Secret: ${hookSecret}" \\
179
- --data-binary @- > /dev/null 2>&1 || true
180
- `;
181
- writeFileSync(paths.claudeCodeHookScript, script, { mode: 0o700 });
182
- }
183
- static writeSessionStartScript(hookPort, hookSecret) {
184
- mkdirSync(paths.hooksDir, { recursive: true });
185
- const version = getPackageVersion();
186
- if (isWindows()) {
187
- writeFileSync(paths.claudeCodeSessionStartScript, buildWindowsHookScript(version, hookPort, ApiRoute.HookSessionStart, hookSecret), { mode: 0o644 });
188
- return;
189
- }
190
- const script = `#!/bin/bash
191
- # ccpoke-version: ${version}
192
- CCPOKE_HOST="\${CCPOKE_HOST:-localhost}"
193
- [ -z "$TMUX" ] && exit 0
194
-
195
- INPUT=$(cat)
196
- SESSION_ID=$(echo "$INPUT" | grep -o '"session_id":"[^"]*"' | head -1 | cut -d'"' -f4)
197
- CWD=$(echo "$INPUT" | grep -o '"cwd":"[^"]*"' | head -1 | cut -d'"' -f4)
198
- if [ -n "$TMUX_PANE" ]; then
199
- TMUX_TARGET=$(tmux display-message -t "$TMUX_PANE" -p '#{session_name}:#{window_index}.#{pane_index}' 2>/dev/null)
200
- else
201
- TMUX_TARGET=$(tmux display-message -p '#{session_name}:#{window_index}.#{pane_index}')
202
- fi
203
-
204
- [ -z "$SESSION_ID" ] && exit 0
205
-
206
- json_escape() {
207
- printf '%s' "$1" | sed 's/\\\\/\\\\\\\\/g; s/"/\\\\"/g; s/\t/\\\\t/g' | tr -d '\\n\\r'
208
- }
209
-
210
- PAYLOAD=$(printf '{"session_id":"%s","cwd":"%s","tmux_target":"%s"}' \\
211
- "$(json_escape "$SESSION_ID")" "$(json_escape "$CWD")" "$(json_escape "$TMUX_TARGET")")
212
-
213
- curl -s -X POST "http://$CCPOKE_HOST:${hookPort}${ApiRoute.HookSessionStart}" \\
214
- -H "Content-Type: application/json" \\
215
- -H "X-CCPoke-Secret: ${hookSecret}" \\
216
- -d "$PAYLOAD" \\
217
- --max-time 3 > /dev/null 2>&1 || true
218
- `;
219
- writeFileSync(paths.claudeCodeSessionStartScript, script, { mode: 0o700 });
220
- }
221
- static writeNotificationScript(hookPort, hookSecret) {
222
- mkdirSync(paths.hooksDir, { recursive: true });
223
- const version = getPackageVersion();
224
- if (isWindows()) {
225
- writeFileSync(paths.claudeCodeNotificationScript, buildWindowsHookScript(version, hookPort, ApiRoute.HookNotification, hookSecret), { mode: 0o644 });
226
- return;
227
- }
228
- const script = `#!/bin/bash
229
- # ccpoke-version: ${version}
230
- CCPOKE_HOST="\${CCPOKE_HOST:-localhost}"
231
- INPUT=$(cat)
232
- SESSION_ID=$(echo "$INPUT" | grep -o '"session_id":"[^"]*"' | head -1 | cut -d'"' -f4)
233
- [ -z "$SESSION_ID" ] && exit 0
234
-
235
- TMUX_TARGET=""
236
- if [ -n "$TMUX_PANE" ]; then
237
- TMUX_TARGET=$(tmux display-message -t "$TMUX_PANE" -p '#{session_name}:#{window_index}.#{pane_index}' 2>/dev/null || echo "")
238
- elif [ -n "$TMUX" ]; then
239
- TMUX_TARGET=$(tmux display-message -p '#{session_name}:#{window_index}.#{pane_index}' 2>/dev/null || echo "")
240
- fi
241
-
242
- # Inject tmux_target into the raw JSON from Claude Code
243
- if [ -n "$TMUX_TARGET" ] && echo "$TMUX_TARGET" | grep -qE '^[a-zA-Z0-9_.:/@ -]+$'; then
244
- PAYLOAD=$(echo "$INPUT" | sed 's/}$/,"tmux_target":"'"$TMUX_TARGET"'"}/')
245
- else
246
- PAYLOAD="$INPUT"
247
- fi
248
-
249
- echo "$PAYLOAD" | curl -s -X POST "http://$CCPOKE_HOST:${hookPort}${ApiRoute.HookNotification}" \\
250
- -H "Content-Type: application/json" \\
251
- -H "X-CCPoke-Secret: ${hookSecret}" \\
252
- --data-binary @- \\
253
- --max-time 5 > /dev/null 2>&1 || true
254
- `;
255
- writeFileSync(paths.claudeCodeNotificationScript, script, { mode: 0o700 });
256
- }
257
- static writePreToolUseScript(hookPort, hookSecret) {
258
- mkdirSync(paths.hooksDir, { recursive: true });
259
- const version = getPackageVersion();
260
- if (isWindows()) {
261
- writeFileSync(paths.claudeCodePreToolUseScript, buildWindowsHookScript(version, hookPort, ApiRoute.HookAskUserQuestion, hookSecret), { mode: 0o644 });
262
- return;
263
- }
264
- const script = `#!/bin/bash
265
- # ccpoke-version: ${version}
266
- CCPOKE_HOST="\${CCPOKE_HOST:-localhost}"
267
- INPUT=$(cat)
268
- TOOL_NAME=$(echo "$INPUT" | grep -o '"tool_name":"[^"]*"' | head -1 | cut -d'"' -f4)
269
- [ "$TOOL_NAME" != "AskUserQuestion" ] && exit 0
270
-
271
- SESSION_ID=$(echo "$INPUT" | grep -o '"session_id":"[^"]*"' | head -1 | cut -d'"' -f4)
272
- [ -z "$SESSION_ID" ] && exit 0
273
-
274
- TMUX_TARGET=""
275
- if [ -n "$TMUX_PANE" ]; then
276
- TMUX_TARGET=$(tmux display-message -t "$TMUX_PANE" -p '#{session_name}:#{window_index}.#{pane_index}' 2>/dev/null || echo "")
277
- elif [ -n "$TMUX" ]; then
278
- TMUX_TARGET=$(tmux display-message -p '#{session_name}:#{window_index}.#{pane_index}' 2>/dev/null || echo "")
279
- fi
280
-
281
- if [ -n "$TMUX_TARGET" ] && echo "$TMUX_TARGET" | grep -qE '^[a-zA-Z0-9_.:/@ -]+$'; then
282
- PAYLOAD=$(echo "$INPUT" | sed 's/}$/,"tmux_target":"'"$TMUX_TARGET"'"}/')
283
- else
284
- PAYLOAD="$INPUT"
285
- fi
286
-
287
- echo "$PAYLOAD" | curl -s -X POST "http://$CCPOKE_HOST:${hookPort}${ApiRoute.HookAskUserQuestion}" \\
288
- -H "Content-Type: application/json" \\
289
- -H "X-CCPoke-Secret: ${hookSecret}" \\
290
- --data-binary @- \\
291
- --max-time 3 > /dev/null 2>&1 || true
292
- `;
293
- writeFileSync(paths.claudeCodePreToolUseScript, script, { mode: 0o700 });
294
- }
295
- static writePermissionRequestScript(hookPort, hookSecret) {
296
- mkdirSync(paths.hooksDir, { recursive: true });
297
- const version = getPackageVersion();
298
- if (isWindows()) {
299
- writeFileSync(paths.claudeCodePermissionRequestScript, buildWindowsHookScript(version, hookPort, ApiRoute.HookPermissionRequest, hookSecret), { mode: 0o644 });
300
- return;
301
- }
302
- const script = `#!/bin/bash
303
- # ccpoke-version: ${version}
304
- CCPOKE_HOST="\${CCPOKE_HOST:-localhost}"
305
- INPUT=$(cat)
306
- TOOL_NAME=$(echo "$INPUT" | grep -o '"tool_name":"[^"]*"' | head -1 | cut -d'"' -f4)
307
- [ "$TOOL_NAME" = "AskUserQuestion" ] && exit 0
308
-
309
- SESSION_ID=$(echo "$INPUT" | grep -o '"session_id":"[^"]*"' | head -1 | cut -d'"' -f4)
310
- [ -z "$SESSION_ID" ] && exit 0
311
-
312
- TMUX_TARGET=""
313
- if [ -n "$TMUX_PANE" ]; then
314
- TMUX_TARGET=$(tmux display-message -t "$TMUX_PANE" -p '#{session_name}:#{window_index}.#{pane_index}' 2>/dev/null || echo "")
315
- elif [ -n "$TMUX" ]; then
316
- TMUX_TARGET=$(tmux display-message -p '#{session_name}:#{window_index}.#{pane_index}' 2>/dev/null || echo "")
317
- fi
318
-
319
- if [ -n "$TMUX_TARGET" ] && echo "$TMUX_TARGET" | grep -qE '^[a-zA-Z0-9_.:/@ -]+$'; then
320
- PAYLOAD=$(echo "$INPUT" | sed 's/}$/,"tmux_target":"'"$TMUX_TARGET"'"}/')
321
- else
322
- PAYLOAD="$INPUT"
323
- fi
324
-
325
- echo "$PAYLOAD" | curl -s -X POST "http://$CCPOKE_HOST:${hookPort}${ApiRoute.HookPermissionRequest}" \\
326
- -H "Content-Type: application/json" \\
327
- -H "X-CCPoke-Secret: ${hookSecret}" \\
328
- --data-binary @- \\
329
- --max-time 3 > /dev/null 2>&1 || true
330
- `;
331
- writeFileSync(paths.claudeCodePermissionRequestScript, script, { mode: 0o700 });
332
- }
333
- static removeStopScript() {
334
- try {
335
- unlinkSync(paths.claudeCodeHookScript);
336
- }
337
- catch {
338
- /* may not exist */
339
- }
340
- }
341
- static removeSessionStartScript() {
342
- try {
343
- unlinkSync(paths.claudeCodeSessionStartScript);
344
- }
345
- catch {
346
- /* may not exist */
347
- }
348
- }
349
- static removeNotificationScript() {
350
- try {
351
- unlinkSync(paths.claudeCodeNotificationScript);
352
- }
353
- catch {
354
- /* may not exist */
355
- }
356
- }
357
- static removePreToolUseScript() {
358
- try {
359
- unlinkSync(paths.claudeCodePreToolUseScript);
360
- }
361
- catch {
362
- /* may not exist */
363
- }
364
- }
365
- static removePermissionRequestScript() {
366
- try {
367
- unlinkSync(paths.claudeCodePermissionRequestScript);
368
- }
369
- catch {
370
- /* may not exist */
371
- }
372
- }
373
- static removeFromSettings() {
374
- const settings = ClaudeCodeInstaller.readSettings();
375
- if (!settings.hooks)
376
- return;
377
136
  const hooks = settings.hooks;
378
137
  for (const hookType of Object.keys(hooks)) {
379
138
  const entries = hooks[hookType];
380
- if (!Array.isArray(entries))
139
+ if (!Array.isArray(entries)) {
381
140
  continue;
382
- const filtered = entries.filter((entry) => !entry.hooks?.some((h) => typeof h.command === "string" && h.command.includes("ccpoke")));
141
+ }
142
+ const filtered = entries.filter((entry) => !entry.hooks?.some((h) => typeof h.command === "string" && h.command.includes(CCPOKE_MARKER)));
383
143
  if (filtered.length === 0) {
384
144
  delete hooks[hookType];
385
145
  }
@@ -390,20 +150,10 @@ echo "$PAYLOAD" | curl -s -X POST "http://$CCPOKE_HOST:${hookPort}${ApiRoute.Hoo
390
150
  if (Object.keys(hooks).length === 0) {
391
151
  delete settings.hooks;
392
152
  }
393
- const tmpSettings = `${paths.claudeSettings}.tmp`;
394
- writeFileSync(tmpSettings, JSON.stringify(settings, null, 2));
395
- renameSync(tmpSettings, paths.claudeSettings);
396
- }
397
- static readSettings() {
398
- try {
399
- return JSON.parse(readFileSync(paths.claudeSettings, "utf-8"));
153
+ writeJsonFile(paths.claudeSettings, settings);
154
+ for (const entry of SCRIPT_MAP) {
155
+ HookScriptCopier.remove(entry.target());
400
156
  }
401
- catch (err) {
402
- const isFileNotFound = err instanceof Error && err.code === "ENOENT";
403
- if (isFileNotFound)
404
- return {};
405
- throw err;
406
- }
407
- }
408
- }
157
+ },
158
+ };
409
159
  //# sourceMappingURL=claude-code-installer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"claude-code-installer.js","sourceRoot":"","sources":["../../../src/agent/claude-code/claude-code-installer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,SAAS,EACT,YAAY,EACZ,UAAU,EACV,UAAU,EACV,aAAa,GACd,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AACpF,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,sBAAsB,GAAG,8BAA8B,CAAC;AAC9D,MAAM,0BAA0B,GAAG,iCAAiC,CAAC;AAyBrE,SAAS,aAAa,CAAC,OAA0B;IAC/C,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAC5B,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CACxF,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,UAAkB;IAC3C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YACrC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAC3F,IAAI,KAAK;gBAAE,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QACrC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,UAAkB;IAC1C,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1C,OAAO,iBAAiB,CAAC,UAAU,CAAC,KAAK,iBAAiB,EAAE,CAAC;AAC/D,CAAC;AAED,MAAM,OAAO,mBAAmB;IAC9B,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,mBAAmB,CAAC,YAAY,EAAE,CAAC;YACpD,OAAO,CACL,aAAa,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,IAAI,EAAE,CAAC;gBACzC,aAAa,CAAC,QAAQ,CAAC,KAAK,EAAE,YAAY,IAAI,EAAE,CAAC;gBACjD,aAAa,CAAC,QAAQ,CAAC,KAAK,EAAE,YAAY,IAAI,EAAE,CAAC;gBACjD,aAAa,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,IAAI,EAAE,CAAC;gBAC/C,aAAa,CAAC,QAAQ,CAAC,KAAK,EAAE,iBAAiB,IAAI,EAAE,CAAC,CACvD,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,MAAM,CAAC,eAAe;QACpB,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,mBAAmB,CAAC,YAAY,EAAE,CAAC;YACpD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,IAAI,EAAE,CAAC;gBAAE,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;YACtF,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,EAAE,YAAY,IAAI,EAAE,CAAC;gBACpD,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;YAChD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,EAAE,YAAY,IAAI,EAAE,CAAC;gBACpD,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;YAChD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,IAAI,EAAE,CAAC;gBAClD,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YAC9C,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,EAAE,iBAAiB,IAAI,EAAE,CAAC;gBACzD,OAAO,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QACvD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAChC,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,oBAAoB,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC9E,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,4BAA4B,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAC/F,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,4BAA4B,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAC9F,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,0BAA0B,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAC1F,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,iCAAiC,CAAC;YACtD,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QACjD,IAAI,gBAAgB,CAAC,KAAK,CAAC,oBAAoB,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACvF,IAAI,gBAAgB,CAAC,KAAK,CAAC,4BAA4B,CAAC;YACtD,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QAChD,IAAI,gBAAgB,CAAC,KAAK,CAAC,4BAA4B,CAAC;YACtD,OAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QAC/C,IAAI,gBAAgB,CAAC,KAAK,CAAC,0BAA0B,CAAC;YACpD,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAC7C,IAAI,gBAAgB,CAAC,KAAK,CAAC,iCAAiC,CAAC;YAC3D,OAAO,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QAErD,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;IACrD,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,QAAgB,EAAE,UAAkB;QACjD,mBAAmB,CAAC,SAAS,EAAE,CAAC;QAEhC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,YAAY,EAAE,CAAC;QACpD,IAAI,CAAC,QAAQ,CAAC,KAAK;YAAE,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC;QAEzC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG;YACpB,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;YAC9B;gBACE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;aAC5F;SACF,CAAC;QAEF,QAAQ,CAAC,KAAK,CAAC,YAAY,GAAG;YAC5B,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC;YACtC;gBACE,KAAK,EAAE;oBACL,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,4BAA4B,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;iBAC1F;aACF;SACF,CAAC;QACF,QAAQ,CAAC,KAAK,CAAC,YAAY,GAAG;YAC5B,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC;YACtC;gBACE,KAAK,EAAE;oBACL;wBACE,IAAI,EAAE,SAAS;wBACf,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,4BAA4B,CAAC;wBACxD,OAAO,EAAE,EAAE;qBACZ;iBACF;aACF;SACF,CAAC;QACF,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG;YAC1B,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;YACpC;gBACE,OAAO,EAAE,iBAAiB;gBAC1B,KAAK,EAAE;oBACL,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,0BAA0B,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;iBACxF;aACF;SACF,CAAC;QACF,QAAQ,CAAC,KAAK,CAAC,iBAAiB,GAAG;YACjC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC;YAC3C;gBACE,KAAK,EAAE;oBACL;wBACE,IAAI,EAAE,SAAS;wBACf,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,iCAAiC,CAAC;wBAC7D,OAAO,EAAE,CAAC;qBACX;iBACF;aACF;SACF,CAAC;QAEF,SAAS,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,MAAM,WAAW,GAAG,GAAG,KAAK,CAAC,cAAc,MAAM,CAAC;QAClD,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9D,UAAU,CAAC,WAAW,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;QAE9C,mBAAmB,CAAC,eAAe,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC1D,mBAAmB,CAAC,uBAAuB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAClE,mBAAmB,CAAC,uBAAuB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAClE,mBAAmB,CAAC,qBAAqB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAChE,mBAAmB,CAAC,4BAA4B,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACzE,CAAC;IAED,MAAM,CAAC,SAAS;QACd,mBAAmB,CAAC,kBAAkB,EAAE,CAAC;QACzC,mBAAmB,CAAC,gBAAgB,EAAE,CAAC;QACvC,mBAAmB,CAAC,wBAAwB,EAAE,CAAC;QAC/C,mBAAmB,CAAC,wBAAwB,EAAE,CAAC;QAC/C,mBAAmB,CAAC,sBAAsB,EAAE,CAAC;QAC7C,mBAAmB,CAAC,6BAA6B,EAAE,CAAC;IACtD,CAAC;IAEO,MAAM,CAAC,eAAe,CAAC,QAAgB,EAAE,UAAkB;QACjE,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE/C,MAAM,UAAU,GAAG,UAAU,SAAS,CAAC,UAAU,EAAE,CAAC;QACpD,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;QAEpC,IAAI,SAAS,EAAE,EAAE,CAAC;YAChB,aAAa,CACX,KAAK,CAAC,oBAAoB,EAC1B,sBAAsB,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC,QAAQ,GAAG,UAAU,EAAE,EAAE,UAAU,CAAC,EAC1F,EAAE,IAAI,EAAE,KAAK,EAAE,CAChB,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG;oBACC,OAAO;;;;;;;;;;;;;uDAa4B,QAAQ,GAAG,QAAQ,CAAC,QAAQ,GAAG,UAAU;6DACnC,UAAU;;CAEtE,CAAC;QAEE,aAAa,CAAC,KAAK,CAAC,oBAAoB,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACrE,CAAC;IAEO,MAAM,CAAC,uBAAuB,CAAC,QAAgB,EAAE,UAAkB;QACzE,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE/C,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;QAEpC,IAAI,SAAS,EAAE,EAAE,CAAC;YAChB,aAAa,CACX,KAAK,CAAC,4BAA4B,EAClC,sBAAsB,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,gBAAgB,EAAE,UAAU,CAAC,EAChF,EAAE,IAAI,EAAE,KAAK,EAAE,CAChB,CAAC;YACF,OAAO;QACT,CAAC;QACD,MAAM,MAAM,GAAG;oBACC,OAAO;;;;;;;;;;;;;;;;;;;;;;uCAsBY,QAAQ,GAAG,QAAQ,CAAC,gBAAgB;;yBAElD,UAAU;;;CAGlC,CAAC;QAEE,aAAa,CAAC,KAAK,CAAC,4BAA4B,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7E,CAAC;IAEO,MAAM,CAAC,uBAAuB,CAAC,QAAgB,EAAE,UAAkB;QACzE,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE/C,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;QAEpC,IAAI,SAAS,EAAE,EAAE,CAAC;YAChB,aAAa,CACX,KAAK,CAAC,4BAA4B,EAClC,sBAAsB,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,gBAAgB,EAAE,UAAU,CAAC,EAChF,EAAE,IAAI,EAAE,KAAK,EAAE,CAChB,CAAC;YACF,OAAO;QACT,CAAC;QACD,MAAM,MAAM,GAAG;oBACC,OAAO;;;;;;;;;;;;;;;;;;;;yDAoB8B,QAAQ,GAAG,QAAQ,CAAC,gBAAgB;;yBAEpE,UAAU;;;CAGlC,CAAC;QAEE,aAAa,CAAC,KAAK,CAAC,4BAA4B,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7E,CAAC;IAEO,MAAM,CAAC,qBAAqB,CAAC,QAAgB,EAAE,UAAkB;QACvE,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE/C,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;QAEpC,IAAI,SAAS,EAAE,EAAE,CAAC;YAChB,aAAa,CACX,KAAK,CAAC,0BAA0B,EAChC,sBAAsB,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,mBAAmB,EAAE,UAAU,CAAC,EACnF,EAAE,IAAI,EAAE,KAAK,EAAE,CAChB,CAAC;YACF,OAAO;QACT,CAAC;QACD,MAAM,MAAM,GAAG;oBACC,OAAO;;;;;;;;;;;;;;;;;;;;;;yDAsB8B,QAAQ,GAAG,QAAQ,CAAC,mBAAmB;;yBAEvE,UAAU;;;CAGlC,CAAC;QAEE,aAAa,CAAC,KAAK,CAAC,0BAA0B,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3E,CAAC;IAEO,MAAM,CAAC,4BAA4B,CAAC,QAAgB,EAAE,UAAkB;QAC9E,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE/C,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;QAEpC,IAAI,SAAS,EAAE,EAAE,CAAC;YAChB,aAAa,CACX,KAAK,CAAC,iCAAiC,EACvC,sBAAsB,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,qBAAqB,EAAE,UAAU,CAAC,EACrF,EAAE,IAAI,EAAE,KAAK,EAAE,CAChB,CAAC;YACF,OAAO;QACT,CAAC;QACD,MAAM,MAAM,GAAG;oBACC,OAAO;;;;;;;;;;;;;;;;;;;;;;yDAsB8B,QAAQ,GAAG,QAAQ,CAAC,qBAAqB;;yBAEzE,UAAU;;;CAGlC,CAAC;QAEE,aAAa,CAAC,KAAK,CAAC,iCAAiC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAClF,CAAC;IAEO,MAAM,CAAC,gBAAgB;QAC7B,IAAI,CAAC;YACH,UAAU,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACzC,CAAC;QAAC,MAAM,CAAC;YACP,mBAAmB;QACrB,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,wBAAwB;QACrC,IAAI,CAAC;YACH,UAAU,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QACjD,CAAC;QAAC,MAAM,CAAC;YACP,mBAAmB;QACrB,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,wBAAwB;QACrC,IAAI,CAAC;YACH,UAAU,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QACjD,CAAC;QAAC,MAAM,CAAC;YACP,mBAAmB;QACrB,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,sBAAsB;QACnC,IAAI,CAAC;YACH,UAAU,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC/C,CAAC;QAAC,MAAM,CAAC;YACP,mBAAmB;QACrB,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,6BAA6B;QAC1C,IAAI,CAAC;YACH,UAAU,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACtD,CAAC;QAAC,MAAM,CAAC;YACP,mBAAmB;QACrB,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,kBAAkB;QAC/B,MAAM,QAAQ,GAAG,mBAAmB,CAAC,YAAY,EAAE,CAAC;QACpD,IAAI,CAAC,QAAQ,CAAC,KAAK;YAAE,OAAO;QAE5B,MAAM,KAAK,GAAG,QAAQ,CAAC,KAA0C,CAAC;QAClE,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;YAChC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;gBAAE,SAAS;YAEtC,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAC7B,CAAC,KAAK,EAAE,EAAE,CACR,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAC3F,CAAC;YAEF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;YAC7B,CAAC;QACH,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpC,OAAO,QAAQ,CAAC,KAAK,CAAC;QACxB,CAAC;QAED,MAAM,WAAW,GAAG,GAAG,KAAK,CAAC,cAAc,MAAM,CAAC;QAClD,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9D,UAAU,CAAC,WAAW,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;IAChD,CAAC;IAEO,MAAM,CAAC,YAAY;QACzB,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC;QACjE,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,cAAc,GAClB,GAAG,YAAY,KAAK,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,CAAC;YAC3E,IAAI,cAAc;gBAAE,OAAO,EAAE,CAAC;YAC9B,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"claude-code-installer.js","sourceRoot":"","sources":["../../../src/agent/claude-code/claude-code-installer.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ export declare class ClaudeCodeProvider implements AgentProvider {
6
6
  readonly submitKeys: string[];
7
7
  detect(): boolean;
8
8
  isHookInstalled(): boolean;
9
- installHook(port: number, secret: string): void;
9
+ installHook(): void;
10
10
  uninstallHook(): void;
11
11
  verifyIntegrity(): {
12
12
  complete: boolean;
@@ -4,7 +4,7 @@ import { collectGitChanges } from "../../utils/git-collector.js";
4
4
  import { logError } from "../../utils/log.js";
5
5
  import { paths } from "../../utils/paths.js";
6
6
  import { AGENT_DISPLAY_NAMES, AgentName, } from "../types.js";
7
- import { ClaudeCodeInstaller } from "./claude-code-installer.js";
7
+ import { claudeCodeInstaller } from "./claude-code-installer.js";
8
8
  import { extractProjectName, isValidStopEvent, parseTranscript } from "./claude-code-parser.js";
9
9
  const TRANSCRIPT_SETTLE_DELAY_MS = 500;
10
10
  export class ClaudeCodeProvider {
@@ -16,16 +16,16 @@ export class ClaudeCodeProvider {
16
16
  return existsSync(paths.claudeDir);
17
17
  }
18
18
  isHookInstalled() {
19
- return ClaudeCodeInstaller.isInstalled();
19
+ return claudeCodeInstaller.isInstalled();
20
20
  }
21
- installHook(port, secret) {
22
- ClaudeCodeInstaller.install(port, secret);
21
+ installHook() {
22
+ claudeCodeInstaller.install();
23
23
  }
24
24
  uninstallHook() {
25
- ClaudeCodeInstaller.uninstall();
25
+ claudeCodeInstaller.uninstall();
26
26
  }
27
27
  verifyIntegrity() {
28
- return ClaudeCodeInstaller.verifyIntegrity();
28
+ return claudeCodeInstaller.verifyIntegrity();
29
29
  }
30
30
  parseEvent(raw) {
31
31
  if (!isValidStopEvent(raw)) {