@tom2012/cc-web 1.5.38 → 1.5.40

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 (54) hide show
  1. package/README.md +5 -1
  2. package/backend/dist/chat-process-manager.d.ts +43 -0
  3. package/backend/dist/chat-process-manager.d.ts.map +1 -0
  4. package/backend/dist/chat-process-manager.js +240 -0
  5. package/backend/dist/chat-process-manager.js.map +1 -0
  6. package/backend/dist/config.d.ts +2 -1
  7. package/backend/dist/config.d.ts.map +1 -1
  8. package/backend/dist/config.js +1 -0
  9. package/backend/dist/config.js.map +1 -1
  10. package/backend/dist/hooks-manager.d.ts +20 -0
  11. package/backend/dist/hooks-manager.d.ts.map +1 -0
  12. package/backend/dist/hooks-manager.js +139 -0
  13. package/backend/dist/hooks-manager.js.map +1 -0
  14. package/backend/dist/index.d.ts.map +1 -1
  15. package/backend/dist/index.js +216 -6
  16. package/backend/dist/index.js.map +1 -1
  17. package/backend/dist/routes/hooks.d.ts +14 -0
  18. package/backend/dist/routes/hooks.d.ts.map +1 -0
  19. package/backend/dist/routes/hooks.js +62 -0
  20. package/backend/dist/routes/hooks.js.map +1 -0
  21. package/backend/dist/routes/projects.d.ts.map +1 -1
  22. package/backend/dist/routes/projects.js +46 -0
  23. package/backend/dist/routes/projects.js.map +1 -1
  24. package/backend/dist/routes/update.d.ts.map +1 -1
  25. package/backend/dist/routes/update.js +22 -13
  26. package/backend/dist/routes/update.js.map +1 -1
  27. package/backend/dist/session-manager.d.ts +12 -2
  28. package/backend/dist/session-manager.d.ts.map +1 -1
  29. package/backend/dist/session-manager.js +45 -15
  30. package/backend/dist/session-manager.js.map +1 -1
  31. package/backend/dist/terminal-manager.d.ts +5 -1
  32. package/backend/dist/terminal-manager.d.ts.map +1 -1
  33. package/backend/dist/terminal-manager.js +13 -2
  34. package/backend/dist/terminal-manager.js.map +1 -1
  35. package/backend/dist/types.d.ts +2 -0
  36. package/backend/dist/types.d.ts.map +1 -1
  37. package/frontend/dist/assets/ChatView-CmGXAs2a.js +11 -0
  38. package/frontend/dist/assets/GraphPreview-0UgP3AnJ.js +22 -0
  39. package/frontend/dist/assets/OfficePreview-DhY6Py9Y.js +13 -0
  40. package/frontend/dist/assets/ProjectPage-9CEnUXvW.css +32 -0
  41. package/frontend/dist/assets/ProjectPage-Ckxkh4Nr.js +169 -0
  42. package/frontend/dist/assets/SettingsPage-Dmb7V9a0.js +36 -0
  43. package/frontend/dist/assets/SkillHubPage-C5zcxERj.js +11 -0
  44. package/frontend/dist/assets/chevron-down-BEvQLdWD.js +6 -0
  45. package/frontend/dist/assets/index-C9_Mp1hE.js +275 -0
  46. package/frontend/dist/assets/{index-lRhMzYm_.js → index-DEta9t2M.js} +1 -1
  47. package/frontend/dist/assets/index-DjgiG4hc.css +1 -0
  48. package/frontend/dist/assets/{jszip.min-JFbhTBvU.js → jszip.min-s-54SERU.js} +1 -1
  49. package/frontend/dist/assets/select-Cfjj__BG.js +11 -0
  50. package/frontend/dist/assets/user-_adqQY3y.js +11 -0
  51. package/frontend/dist/index.html +2 -2
  52. package/package.json +1 -1
  53. package/frontend/dist/assets/index-BTxKTqXV.js +0 -554
  54. package/frontend/dist/assets/index-DpzQcaS6.css +0 -32
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  A self-hosted web application (distributed as npm package) that provides a browser-based interface for [Claude Code](https://docs.anthropic.com/en/docs/claude-code) CLI sessions. Create projects, each with a persistent terminal running Claude Code, and interact with them through a real-time terminal UI.
4
4
 
5
- **Current version**: v1.5.38 | [GitHub](https://github.com/zbc0315/cc-web) | MIT License
5
+ **Current version**: v1.5.40 | [GitHub](https://github.com/zbc0315/cc-web) | MIT License
6
6
 
7
7
  ## Features
8
8
 
@@ -24,6 +24,10 @@ A self-hosted web application (distributed as npm package) that provides a brows
24
24
  - **SkillHub**: Browse, search, and download community-shared shortcut commands from GitHub; share your own with one click
25
25
  - **Ambient Sound**: Background sounds (singing bowl, rain, wind, stream, etc.) that play when LLM is active, with custom upload support
26
26
  - **Dark/Light Theme**: Toggle between themes
27
+ - **Real-time Activity Push**: Dashboard receives project activity updates via WebSocket (no polling), with semantic status badges (Thinking/Writing/Tool)
28
+ - **Code Splitting**: Lazy-loaded routes and heavy components (Office preview, Graph, Chat) — only loaded on demand
29
+ - **Global State (Zustand)**: Auth and project state shared across pages without prop drilling
30
+ - **Error Boundaries**: Graceful error handling with toast notifications instead of alerts
27
31
 
28
32
  ## Prerequisites
29
33
 
@@ -0,0 +1,43 @@
1
+ /**
2
+ * ChatProcessManager — manages claude --print SDK subprocess per project.
3
+ *
4
+ * Key design notes:
5
+ * - sessionManager.startSession() is called AFTER system.init is received,
6
+ * not immediately after spawn (JSONL file doesn't exist yet at spawn time).
7
+ * - tool_result blocks appear in USER-role messages in SDK output, not assistant.
8
+ * - hasTerminal() is the public API name (mirrors TerminalManager.hasTerminal).
9
+ * - Crash restart uses 3s delay; interrupt restart is immediate (500ms).
10
+ */
11
+ import { EventEmitter } from 'events';
12
+ import { Project } from './types';
13
+ export interface ChatStreamEvent {
14
+ projectId: string;
15
+ type: 'stream' | 'tool_start' | 'tool_end' | 'turn_end' | 'rate_limit' | 'status';
16
+ delta?: string;
17
+ contentType?: 'text' | 'thinking';
18
+ toolName?: string;
19
+ toolInput?: unknown;
20
+ toolOutput?: string;
21
+ costUsd?: number;
22
+ resetsAt?: number;
23
+ status?: string;
24
+ }
25
+ declare class ChatProcessManager extends EventEmitter {
26
+ private instances;
27
+ private restartTimers;
28
+ start(project: Project, continueSession?: boolean): void;
29
+ stop(projectId: string): void;
30
+ /** Interrupt current generation and immediately restart with --continue */
31
+ interrupt(projectId: string): void;
32
+ sendMessage(projectId: string, text: string): boolean;
33
+ /** Named hasTerminal for API consistency with TerminalManager */
34
+ hasTerminal(projectId: string): boolean;
35
+ getLastActivityAt(projectId: string): number | null;
36
+ private stopInternal;
37
+ private buildArgs;
38
+ private parseLine;
39
+ private handleExit;
40
+ }
41
+ export declare const chatProcessManager: ChatProcessManager;
42
+ export {};
43
+ //# sourceMappingURL=chat-process-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-process-manager.d.ts","sourceRoot":"","sources":["../src/chat-process-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAIlC,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,QAAQ,GAAG,YAAY,GAAG,UAAU,GAAG,UAAU,GAAG,YAAY,GAAG,QAAQ,CAAC;IAClF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAYD,cAAM,kBAAmB,SAAQ,YAAY;IAC3C,OAAO,CAAC,SAAS,CAAmC;IACpD,OAAO,CAAC,aAAa,CAAoD;IAEzE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,eAAe,UAAQ,GAAG,IAAI;IAkDtD,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAI7B,2EAA2E;IAC3E,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAgBlC,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO;IAerD,iEAAiE;IACjE,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAIvC,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAInD,OAAO,CAAC,YAAY;IAkBpB,OAAO,CAAC,SAAS;IAcjB,OAAO,CAAC,SAAS;IAyEjB,OAAO,CAAC,UAAU;CAqBnB;AAED,eAAO,MAAM,kBAAkB,oBAA2B,CAAC"}
@@ -0,0 +1,240 @@
1
+ "use strict";
2
+ /**
3
+ * ChatProcessManager — manages claude --print SDK subprocess per project.
4
+ *
5
+ * Key design notes:
6
+ * - sessionManager.startSession() is called AFTER system.init is received,
7
+ * not immediately after spawn (JSONL file doesn't exist yet at spawn time).
8
+ * - tool_result blocks appear in USER-role messages in SDK output, not assistant.
9
+ * - hasTerminal() is the public API name (mirrors TerminalManager.hasTerminal).
10
+ * - Crash restart uses 3s delay; interrupt restart is immediate (500ms).
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.chatProcessManager = void 0;
14
+ const child_process_1 = require("child_process");
15
+ const events_1 = require("events");
16
+ const config_1 = require("./config");
17
+ const session_manager_1 = require("./session-manager");
18
+ class ChatProcessManager extends events_1.EventEmitter {
19
+ constructor() {
20
+ super(...arguments);
21
+ this.instances = new Map();
22
+ this.restartTimers = new Map();
23
+ }
24
+ start(project, continueSession = false) {
25
+ this.stopInternal(project.id, false);
26
+ const args = this.buildArgs(project, continueSession);
27
+ const userShell = process.env.SHELL || '/bin/zsh';
28
+ const proc = (0, child_process_1.spawn)(userShell, ['-ilc', args.join(' ')], {
29
+ cwd: project.folderPath,
30
+ env: { ...process.env },
31
+ stdio: ['pipe', 'pipe', 'pipe'],
32
+ });
33
+ const instance = {
34
+ process: proc,
35
+ project,
36
+ intentionalStop: false,
37
+ lastActivityAt: null,
38
+ sessionId: null,
39
+ pendingToolName: null,
40
+ lineBuffer: '',
41
+ };
42
+ this.instances.set(project.id, instance);
43
+ project.status = 'running';
44
+ (0, config_1.saveProject)(project);
45
+ // NOTE: sessionManager.startSession() is called later, when system.init arrives
46
+ proc.stdout?.on('data', (chunk) => {
47
+ instance.lastActivityAt = Date.now();
48
+ instance.lineBuffer += chunk.toString('utf-8');
49
+ const lines = instance.lineBuffer.split('\n');
50
+ instance.lineBuffer = lines.pop() ?? '';
51
+ for (const line of lines) {
52
+ const trimmed = line.trim();
53
+ if (trimmed)
54
+ this.parseLine(project.id, instance, trimmed);
55
+ }
56
+ });
57
+ proc.stderr?.on('data', (data) => {
58
+ console.error(`[ChatProcess ${project.id}] stderr:`, data.toString().slice(0, 200));
59
+ });
60
+ proc.on('exit', (code) => {
61
+ console.log(`[ChatProcess] Exit for ${project.id}, code: ${code}`);
62
+ this.handleExit(project.id);
63
+ });
64
+ console.log(`[ChatProcessManager] Started for project ${project.id}`);
65
+ }
66
+ stop(projectId) {
67
+ this.stopInternal(projectId, true);
68
+ }
69
+ /** Interrupt current generation and immediately restart with --continue */
70
+ interrupt(projectId) {
71
+ const instance = this.instances.get(projectId);
72
+ if (!instance)
73
+ return;
74
+ // Mark intentionalStop so handleExit doesn't trigger crash-restart
75
+ instance.intentionalStop = true;
76
+ try {
77
+ instance.process.kill('SIGINT');
78
+ }
79
+ catch { /**/ }
80
+ this.instances.delete(projectId);
81
+ this.emit('event', { projectId, type: 'status', status: 'restarting' });
82
+ // Immediate restart (no 3s delay — user-initiated, not a crash)
83
+ setTimeout(() => {
84
+ this.start(instance.project, true);
85
+ }, 500);
86
+ }
87
+ sendMessage(projectId, text) {
88
+ const instance = this.instances.get(projectId);
89
+ if (!instance?.process.stdin)
90
+ return false;
91
+ const msg = JSON.stringify({
92
+ type: 'user',
93
+ message: { role: 'user', content: text },
94
+ }) + '\n';
95
+ try {
96
+ instance.process.stdin.write(msg);
97
+ return true;
98
+ }
99
+ catch {
100
+ return false;
101
+ }
102
+ }
103
+ /** Named hasTerminal for API consistency with TerminalManager */
104
+ hasTerminal(projectId) {
105
+ return this.instances.has(projectId);
106
+ }
107
+ getLastActivityAt(projectId) {
108
+ return this.instances.get(projectId)?.lastActivityAt ?? null;
109
+ }
110
+ stopInternal(projectId, updateStatus) {
111
+ const timer = this.restartTimers.get(projectId);
112
+ if (timer) {
113
+ clearTimeout(timer);
114
+ this.restartTimers.delete(projectId);
115
+ }
116
+ const instance = this.instances.get(projectId);
117
+ if (!instance)
118
+ return;
119
+ instance.intentionalStop = true;
120
+ try {
121
+ instance.process.kill('SIGTERM');
122
+ }
123
+ catch { /**/ }
124
+ this.instances.delete(projectId);
125
+ session_manager_1.sessionManager.stopWatcherForProject(projectId);
126
+ if (updateStatus) {
127
+ instance.project.status = 'stopped';
128
+ (0, config_1.saveProject)(instance.project);
129
+ }
130
+ }
131
+ buildArgs(project, continueSession) {
132
+ const args = [
133
+ 'claude',
134
+ '--print',
135
+ '--output-format', 'stream-json',
136
+ '--input-format', 'stream-json',
137
+ '--include-partial-messages',
138
+ '--verbose',
139
+ ];
140
+ if (continueSession)
141
+ args.push('--continue');
142
+ if (project.permissionMode === 'unlimited')
143
+ args.push('--dangerously-skip-permissions');
144
+ return args;
145
+ }
146
+ parseLine(projectId, instance, line) {
147
+ let record;
148
+ try {
149
+ record = JSON.parse(line);
150
+ }
151
+ catch {
152
+ return;
153
+ }
154
+ const type = record.type;
155
+ // ── system.init: call startSession now (JSONL file is about to be created) ──
156
+ if (type === 'system' && record.subtype === 'init') {
157
+ instance.sessionId = record.session_id ?? null;
158
+ session_manager_1.sessionManager.startSession(instance.project.id, instance.project.folderPath);
159
+ return;
160
+ }
161
+ // ── assistant messages: text, thinking, tool_use blocks ──
162
+ if (type === 'assistant') {
163
+ const msg = record.message;
164
+ for (const block of (msg?.content ?? [])) {
165
+ const btype = block.type;
166
+ if (btype === 'text') {
167
+ const text = block.text ?? '';
168
+ if (text) {
169
+ this.emit('event', { projectId, type: 'stream', delta: text, contentType: 'text' });
170
+ }
171
+ }
172
+ else if (btype === 'thinking') {
173
+ const thinking = block.thinking ?? '';
174
+ if (thinking) {
175
+ this.emit('event', { projectId, type: 'stream', delta: thinking, contentType: 'thinking' });
176
+ }
177
+ }
178
+ else if (btype === 'tool_use') {
179
+ const name = block.name ?? 'tool';
180
+ instance.pendingToolName = name;
181
+ this.emit('event', { projectId, type: 'tool_start', toolName: name, toolInput: block.input });
182
+ }
183
+ }
184
+ return;
185
+ }
186
+ // ── user messages: tool_result blocks (SDK returns tool results as user-role messages) ──
187
+ if (type === 'user') {
188
+ const msg = record.message;
189
+ if (msg?.role !== 'tool')
190
+ return; // only process tool result messages
191
+ for (const block of (msg?.content ?? [])) {
192
+ if (block.type === 'tool_result') {
193
+ const content = block.content;
194
+ const output = typeof content === 'string' ? content : JSON.stringify(content).slice(0, 500);
195
+ this.emit('event', {
196
+ projectId,
197
+ type: 'tool_end',
198
+ toolName: instance.pendingToolName ?? 'tool',
199
+ toolOutput: output,
200
+ });
201
+ instance.pendingToolName = null;
202
+ }
203
+ }
204
+ return;
205
+ }
206
+ // ── result: turn complete ──
207
+ if (type === 'result') {
208
+ this.emit('event', { projectId, type: 'turn_end', costUsd: record.total_cost_usd ?? 0 });
209
+ return;
210
+ }
211
+ // ── rate_limit_event ──
212
+ if (type === 'rate_limit_event') {
213
+ const info = record.rate_limit_info;
214
+ if (info?.resetsAt) {
215
+ this.emit('event', { projectId, type: 'rate_limit', resetsAt: info.resetsAt });
216
+ }
217
+ }
218
+ }
219
+ handleExit(projectId) {
220
+ const instance = this.instances.get(projectId);
221
+ if (!instance || instance.intentionalStop) {
222
+ this.instances.delete(projectId);
223
+ return;
224
+ }
225
+ const { project } = instance;
226
+ this.instances.delete(projectId);
227
+ project.status = 'restarting';
228
+ (0, config_1.saveProject)(project);
229
+ this.emit('event', { projectId, type: 'status', status: 'restarting' });
230
+ console.log(`[ChatProcessManager] Auto-restarting ${projectId} with --continue in 3s...`);
231
+ const timer = setTimeout(() => {
232
+ this.restartTimers.delete(projectId);
233
+ if (!this.instances.has(projectId))
234
+ this.start(project, true);
235
+ }, 3000);
236
+ this.restartTimers.set(projectId, timer);
237
+ }
238
+ }
239
+ exports.chatProcessManager = new ChatProcessManager();
240
+ //# sourceMappingURL=chat-process-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-process-manager.js","sourceRoot":"","sources":["../src/chat-process-manager.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { Project, Config, CliTool } from './types';
1
+ import { Project, Config, CliTool, ProjectMode } from './types';
2
2
  export interface GlobalShortcut {
3
3
  id: string;
4
4
  label: string;
@@ -32,6 +32,7 @@ export interface ProjectConfig {
32
32
  permissionMode: 'limited' | 'unlimited';
33
33
  cliTool: CliTool;
34
34
  createdAt: string;
35
+ mode?: ProjectMode;
35
36
  }
36
37
  export declare function ccwebDir(folderPath: string): string;
37
38
  export declare function ccwebSessionsDir(folderPath: string): string;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEnD,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,QAAQ,QAAmE,CAAC;AAYzF,wBAAgB,YAAY,IAAI,IAAI,CAOnC;AAMD,wBAAgB,SAAS,IAAI,MAAM,CAUlC;AAED,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,SAAS,CAErD;AAED,wBAAgB,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAGtD;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAI3E;AAED,kGAAkG;AAClG,wBAAgB,gBAAgB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAI1D;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AAID,iDAAiD;AACjD,wBAAgB,kBAAkB,IAAI,SAAS,EAAE,CAOhD;AAED,wBAAgB,WAAW,IAAI,OAAO,EAAE,CAIvC;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAEtD;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAE1D;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CASlD;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAE9C;AAQD,wBAAgB,kBAAkB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,cAAc,EAAE,CAItE;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,cAAc,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAGxF;AAOD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,SAAS,GAAG,WAAW,CAAC;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,wDAAwD;AACxD,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAW7E;AAED,iFAAiF;AACjF,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAQ1E;AAID,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAID,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,EAAE,CAQ1E;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,IAAI,CAI3F;AAED,kDAAkD;AAClD,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI,CAM7F"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEhE,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,QAAQ,QAAmE,CAAC;AAYzF,wBAAgB,YAAY,IAAI,IAAI,CAOnC;AAMD,wBAAgB,SAAS,IAAI,MAAM,CAUlC;AAED,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,SAAS,CAErD;AAED,wBAAgB,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAGtD;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAI3E;AAED,kGAAkG;AAClG,wBAAgB,gBAAgB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAI1D;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AAID,iDAAiD;AACjD,wBAAgB,kBAAkB,IAAI,SAAS,EAAE,CAOhD;AAED,wBAAgB,WAAW,IAAI,OAAO,EAAE,CAIvC;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAEtD;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAE1D;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CASlD;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAE9C;AAQD,wBAAgB,kBAAkB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,cAAc,EAAE,CAItE;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,cAAc,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAGxF;AAOD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,SAAS,GAAG,WAAW,CAAC;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB;AAED,wBAAgB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,wDAAwD;AACxD,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAY7E;AAED,iFAAiF;AACjF,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAQ1E;AAID,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAID,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,EAAE,CAQ1E;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,IAAI,CAI3F;AAED,kDAAkD;AAClD,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI,CAM7F"}
@@ -191,6 +191,7 @@ function writeProjectConfig(folderPath, project) {
191
191
  permissionMode: project.permissionMode,
192
192
  cliTool: project.cliTool,
193
193
  createdAt: project.createdAt,
194
+ mode: project.mode,
194
195
  };
195
196
  atomicWriteSync(path.join(dir, PROJECT_CONFIG_FILE), JSON.stringify(config, null, 2));
196
197
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * HooksManager — manages ccweb entries in ~/.claude/settings.json
3
+ *
4
+ * install() is idempotent: always calls uninstall() first, then adds fresh hooks.
5
+ * This handles the crash-without-cleanup scenario correctly.
6
+ *
7
+ * Hook commands include "# ccweb-hook" marker at the end so uninstall()
8
+ * can precisely identify and remove them without touching user-defined hooks.
9
+ */
10
+ declare class HooksManager {
11
+ private portFile;
12
+ constructor(portFile: string);
13
+ /** Remove all ccweb hook entries (identified by CCWEB_MARKER) */
14
+ uninstall(): void;
15
+ /** Idempotent install: remove stale entries first, then add fresh hooks */
16
+ install(): void;
17
+ isInstalled(): boolean;
18
+ }
19
+ export { HooksManager };
20
+ //# sourceMappingURL=hooks-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks-manager.d.ts","sourceRoot":"","sources":["../src/hooks-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAsDH,cAAM,YAAY;IAChB,OAAO,CAAC,QAAQ,CAAS;gBAEb,QAAQ,EAAE,MAAM;IAI5B,iEAAiE;IACjE,SAAS,IAAI,IAAI;IA2BjB,2EAA2E;IAC3E,OAAO,IAAI,IAAI;IAiBf,WAAW,IAAI,OAAO;CAMvB;AAED,OAAO,EAAE,YAAY,EAAE,CAAC"}
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+ /**
3
+ * HooksManager — manages ccweb entries in ~/.claude/settings.json
4
+ *
5
+ * install() is idempotent: always calls uninstall() first, then adds fresh hooks.
6
+ * This handles the crash-without-cleanup scenario correctly.
7
+ *
8
+ * Hook commands include "# ccweb-hook" marker at the end so uninstall()
9
+ * can precisely identify and remove them without touching user-defined hooks.
10
+ */
11
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ var desc = Object.getOwnPropertyDescriptor(m, k);
14
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
15
+ desc = { enumerable: true, get: function() { return m[k]; } };
16
+ }
17
+ Object.defineProperty(o, k2, desc);
18
+ }) : (function(o, m, k, k2) {
19
+ if (k2 === undefined) k2 = k;
20
+ o[k2] = m[k];
21
+ }));
22
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
23
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
24
+ }) : function(o, v) {
25
+ o["default"] = v;
26
+ });
27
+ var __importStar = (this && this.__importStar) || (function () {
28
+ var ownKeys = function(o) {
29
+ ownKeys = Object.getOwnPropertyNames || function (o) {
30
+ var ar = [];
31
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
32
+ return ar;
33
+ };
34
+ return ownKeys(o);
35
+ };
36
+ return function (mod) {
37
+ if (mod && mod.__esModule) return mod;
38
+ var result = {};
39
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
40
+ __setModuleDefault(result, mod);
41
+ return result;
42
+ };
43
+ })();
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.HooksManager = void 0;
46
+ const fs = __importStar(require("fs"));
47
+ const path = __importStar(require("path"));
48
+ const os = __importStar(require("os"));
49
+ const CLAUDE_SETTINGS_FILE = path.join(os.homedir(), '.claude', 'settings.json');
50
+ const CCWEB_MARKER = '# ccweb-hook';
51
+ const HOOK_EVENTS = ['PreToolUse', 'PostToolUse', 'Stop'];
52
+ /**
53
+ * Build the curl command for each hook event.
54
+ * Note: Stop event does NOT have CLAUDE_SESSION_ID available, so we omit it.
55
+ */
56
+ function buildCommand(event, portFile) {
57
+ const baseBody = [
58
+ `\\"event\\":\\"${event}\\"`,
59
+ `\\"dir\\":\\"$CLAUDE_PROJECT_DIR\\"`,
60
+ ];
61
+ // PreToolUse and PostToolUse have CLAUDE_TOOL_NAME and CLAUDE_SESSION_ID
62
+ if (event === 'PreToolUse' || event === 'PostToolUse') {
63
+ baseBody.push(`\\"tool\\":\\"$CLAUDE_TOOL_NAME\\"`);
64
+ baseBody.push(`\\"session\\":\\"$CLAUDE_SESSION_ID\\"`);
65
+ }
66
+ const body = baseBody.join(',');
67
+ return (`curl -sf -X POST "http://localhost:$(cat ${portFile})/api/hooks"` +
68
+ ` -H "Content-Type: application/json"` +
69
+ ` -d "{${body}}" || true ${CCWEB_MARKER}`);
70
+ }
71
+ function readSettings() {
72
+ if (!fs.existsSync(CLAUDE_SETTINGS_FILE))
73
+ return {};
74
+ try {
75
+ return JSON.parse(fs.readFileSync(CLAUDE_SETTINGS_FILE, 'utf-8'));
76
+ }
77
+ catch {
78
+ return {};
79
+ }
80
+ }
81
+ function atomicWrite(data) {
82
+ const dir = path.dirname(CLAUDE_SETTINGS_FILE);
83
+ if (!fs.existsSync(dir))
84
+ fs.mkdirSync(dir, { recursive: true });
85
+ const tmp = CLAUDE_SETTINGS_FILE + `.tmp.${process.pid}`;
86
+ fs.writeFileSync(tmp, JSON.stringify(data, null, 2), 'utf-8');
87
+ fs.renameSync(tmp, CLAUDE_SETTINGS_FILE);
88
+ }
89
+ class HooksManager {
90
+ constructor(portFile) {
91
+ this.portFile = portFile;
92
+ }
93
+ /** Remove all ccweb hook entries (identified by CCWEB_MARKER) */
94
+ uninstall() {
95
+ const settings = readSettings();
96
+ const hooks = (settings.hooks ?? {});
97
+ let changed = false;
98
+ for (const event of HOOK_EVENTS) {
99
+ const list = (hooks[event] ?? []);
100
+ const cleaned = list
101
+ .map((group) => ({
102
+ ...group,
103
+ hooks: (group.hooks ?? []).filter((h) => !h.command?.includes(CCWEB_MARKER)),
104
+ }))
105
+ .filter((group) => (group.hooks?.length ?? 0) > 0);
106
+ if (JSON.stringify(cleaned) !== JSON.stringify(list)) {
107
+ hooks[event] = cleaned;
108
+ changed = true;
109
+ }
110
+ }
111
+ if (changed) {
112
+ settings.hooks = hooks;
113
+ atomicWrite(settings);
114
+ console.log('[HooksManager] Uninstalled ccweb hooks');
115
+ }
116
+ }
117
+ /** Idempotent install: remove stale entries first, then add fresh hooks */
118
+ install() {
119
+ this.uninstall(); // always clean first — handles crash-without-cleanup
120
+ const settings = readSettings();
121
+ const hooks = (settings.hooks ?? {});
122
+ for (const event of HOOK_EVENTS) {
123
+ const list = (hooks[event] ?? []);
124
+ list.push({ hooks: [{ type: 'command', command: buildCommand(event, this.portFile) }] });
125
+ hooks[event] = list;
126
+ }
127
+ settings.hooks = hooks;
128
+ atomicWrite(settings);
129
+ console.log('[HooksManager] Installed ccweb hooks');
130
+ }
131
+ isInstalled() {
132
+ const settings = readSettings();
133
+ const hooks = (settings.hooks ?? {});
134
+ const list = (hooks['PreToolUse'] ?? []);
135
+ return list.some((g) => g.hooks?.some((h) => h.command?.includes(CCWEB_MARKER)));
136
+ }
137
+ }
138
+ exports.HooksManager = HooksManager;
139
+ //# sourceMappingURL=hooks-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks-manager.js","sourceRoot":"","sources":["../src/hooks-manager.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAmOA,QAAA,MAAM,GAAG,6CAAY,CAAC;AAkWtB,eAAe,GAAG,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA2OA,QAAA,MAAM,GAAG,6CAAY,CAAC;AAsiBtB,eAAe,GAAG,CAAC"}