cc-viewer 1.6.117 → 1.6.119

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 (63) hide show
  1. package/cli.js +2 -75
  2. package/dist/assets/{App-02zwi4UU.js → App-ERlfGIWy.js} +7 -7
  3. package/dist/assets/{AppHeader.module-CNfaZQcW.js → AppHeader.module-YTupOjKD.js} +160 -160
  4. package/dist/assets/{Mobile-D4gqEaZp.js → Mobile-C4LGQwO8.js} +1 -1
  5. package/dist/assets/{_basePickBy-DzG2CKfd.js → _basePickBy-CiA360bF.js} +1 -1
  6. package/dist/assets/{_baseUniq-BUqLhygm.js → _baseUniq-D2Ex4t-8.js} +1 -1
  7. package/dist/assets/{arc-CUaHtfx2.js → arc-CvmyiTCu.js} +1 -1
  8. package/dist/assets/{architectureDiagram-2XIMDMQ5-ZQs3Z7TR.js → architectureDiagram-2XIMDMQ5-CnanNB2O.js} +1 -1
  9. package/dist/assets/{blockDiagram-WCTKOSBZ-CAlc09RM.js → blockDiagram-WCTKOSBZ-CwXsSZvW.js} +1 -1
  10. package/dist/assets/{c4Diagram-IC4MRINW-Cj1jNRwV.js → c4Diagram-IC4MRINW-CaK8uKnG.js} +1 -1
  11. package/dist/assets/channel-Wp0V3UU-.js +1 -0
  12. package/dist/assets/{chunk-4BX2VUAB-hFasPvBG.js → chunk-4BX2VUAB-BhCQDkcm.js} +1 -1
  13. package/dist/assets/{chunk-55IACEB6-DsBm5wTi.js → chunk-55IACEB6-BaZrD5Jj.js} +1 -1
  14. package/dist/assets/{chunk-FMBD7UC4-C1YnYmQH.js → chunk-FMBD7UC4-DaBLCjnN.js} +1 -1
  15. package/dist/assets/{chunk-JSJVCQXG-3DrhQnb4.js → chunk-JSJVCQXG-CQzz1WKC.js} +1 -1
  16. package/dist/assets/{chunk-KX2RTZJC-B99_LU83.js → chunk-KX2RTZJC-DhY9BkCs.js} +1 -1
  17. package/dist/assets/{chunk-NQ4KR5QH-C9BRYrMw.js → chunk-NQ4KR5QH-BDh9Oz81.js} +1 -1
  18. package/dist/assets/{chunk-QZHKN3VN-CmmeFs7v.js → chunk-QZHKN3VN-CCLeDOE6.js} +1 -1
  19. package/dist/assets/{chunk-WL4C6EOR-7IIU5pZl.js → chunk-WL4C6EOR-BPqaJPWk.js} +1 -1
  20. package/dist/assets/classDiagram-VBA2DB6C-gov81m0S.js +1 -0
  21. package/dist/assets/classDiagram-v2-RAHNMMFH-gov81m0S.js +1 -0
  22. package/dist/assets/clone-flxCmEUc.js +1 -0
  23. package/dist/assets/{cose-bilkent-S5V4N54A-DXtFzHw9.js → cose-bilkent-S5V4N54A-sQ_wz1QI.js} +1 -1
  24. package/dist/assets/{dagre-KLK3FWXG-Dn2MtKvt.js → dagre-KLK3FWXG-CCU0d43K.js} +1 -1
  25. package/dist/assets/{diagram-E7M64L7V-D87sOHWp.js → diagram-E7M64L7V-F79pzvR6.js} +1 -1
  26. package/dist/assets/{diagram-IFDJBPK2-CvcpaI4q.js → diagram-IFDJBPK2-pJ47bQZ8.js} +1 -1
  27. package/dist/assets/{diagram-P4PSJMXO-RBfVRGOj.js → diagram-P4PSJMXO-DDMDFbd_.js} +1 -1
  28. package/dist/assets/{erDiagram-INFDFZHY-CWz880q6.js → erDiagram-INFDFZHY-Bg_BAIqN.js} +1 -1
  29. package/dist/assets/{flowDiagram-PKNHOUZH-BrXyGKNj.js → flowDiagram-PKNHOUZH-BXhm4zT5.js} +1 -1
  30. package/dist/assets/{ganttDiagram-A5KZAMGK-Bq8zybkD.js → ganttDiagram-A5KZAMGK-DPDnyu_E.js} +1 -1
  31. package/dist/assets/{gitGraphDiagram-K3NZZRJ6-C1DjiY9w.js → gitGraphDiagram-K3NZZRJ6-4y5dYDpf.js} +1 -1
  32. package/dist/assets/{graph-D-pKQuPD.js → graph-ICw9XbnG.js} +1 -1
  33. package/dist/assets/{index-Cj4zzSXu.js → index-CgS5M5Yp.js} +2 -2
  34. package/dist/assets/{infoDiagram-LFFYTUFH-gHjNhWCD.js → infoDiagram-LFFYTUFH-DD5M-nGt.js} +1 -1
  35. package/dist/assets/{ishikawaDiagram-PHBUUO56-CojMZdC-.js → ishikawaDiagram-PHBUUO56-BJInyuZu.js} +1 -1
  36. package/dist/assets/{journeyDiagram-4ABVD52K-DXK5veLd.js → journeyDiagram-4ABVD52K-CEw2fk4G.js} +1 -1
  37. package/dist/assets/{kanban-definition-K7BYSVSG-7uB0_ROl.js → kanban-definition-K7BYSVSG-n4l9FHz1.js} +1 -1
  38. package/dist/assets/{layout-o0Rg22i1.js → layout-B22C6M2r.js} +1 -1
  39. package/dist/assets/{linear-CsPzZTXE.js → linear-DTQch5RX.js} +1 -1
  40. package/dist/assets/{mermaid.core-C_DeAMKx.js → mermaid.core-CZtx-xb7.js} +4 -4
  41. package/dist/assets/{mindmap-definition-YRQLILUH-9TiOoIPl.js → mindmap-definition-YRQLILUH-Dj4mbEmV.js} +1 -1
  42. package/dist/assets/{pieDiagram-SKSYHLDU-B4iXmPF7.js → pieDiagram-SKSYHLDU-7fDY-c_Z.js} +1 -1
  43. package/dist/assets/{quadrantDiagram-337W2JSQ-BlEiOFlz.js → quadrantDiagram-337W2JSQ-BULs6Z10.js} +1 -1
  44. package/dist/assets/{requirementDiagram-Z7DCOOCP-BjymMEct.js → requirementDiagram-Z7DCOOCP-h9X1gpW9.js} +1 -1
  45. package/dist/assets/{sankeyDiagram-WA2Y5GQK-DjWqQ2GP.js → sankeyDiagram-WA2Y5GQK-DsRSiRSE.js} +1 -1
  46. package/dist/assets/{sequenceDiagram-2WXFIKYE-KzDr-efl.js → sequenceDiagram-2WXFIKYE-CinyWx3Y.js} +1 -1
  47. package/dist/assets/{stateDiagram-RAJIS63D-f3FY6cxu.js → stateDiagram-RAJIS63D-DCziarfA.js} +1 -1
  48. package/dist/assets/stateDiagram-v2-FVOUBMTO-JJUM_736.js +1 -0
  49. package/dist/assets/{timeline-definition-YZTLITO2-B-q6pm7t.js → timeline-definition-YZTLITO2-DB9hQrYl.js} +1 -1
  50. package/dist/assets/{treemap-KZPCXAKY-Di76Kl8P.js → treemap-KZPCXAKY-D9E4Zv79.js} +1 -1
  51. package/dist/assets/{vennDiagram-LZ73GAT5-C6PieDYv.js → vennDiagram-LZ73GAT5-DWO6ZjL2.js} +1 -1
  52. package/dist/assets/{xychartDiagram-JWTSCODW-S_b7Y2yf.js → xychartDiagram-JWTSCODW-CunIJHAt.js} +1 -1
  53. package/dist/index.html +1 -1
  54. package/interceptor.js +3 -2
  55. package/lib/ensure-hooks.js +86 -0
  56. package/package.json +1 -1
  57. package/pty-manager.js +14 -2
  58. package/server.js +24 -4
  59. package/dist/assets/channel-BmixYDIe.js +0 -1
  60. package/dist/assets/classDiagram-VBA2DB6C-V-Lm6Sh2.js +0 -1
  61. package/dist/assets/classDiagram-v2-RAHNMMFH-V-Lm6Sh2.js +0 -1
  62. package/dist/assets/clone-BLD1ejbH.js +0 -1
  63. package/dist/assets/stateDiagram-v2-FVOUBMTO-CSJeWG83.js +0 -1
package/cli.js CHANGED
@@ -7,6 +7,7 @@ import { homedir } from 'node:os';
7
7
  import { spawn } from 'node:child_process';
8
8
  import { t } from './i18n.js';
9
9
  import { INJECT_IMPORT, resolveCliPath, resolveNativePath, resolveNpmClaudePath, buildShellCandidates } from './findcc.js';
10
+ import { ensureHooks } from './lib/ensure-hooks.js';
10
11
 
11
12
  const __dirname = fileURLToPath(new URL('.', import.meta.url));
12
13
 
@@ -256,81 +257,7 @@ async function runProxyCommand(args) {
256
257
  }
257
258
  }
258
259
 
259
- function ensureHooks() {
260
- try {
261
- const claudeDir = resolve(homedir(), '.claude');
262
- const settingsPath = resolve(claudeDir, 'settings.json');
263
- let settings = {};
264
- try { if (existsSync(settingsPath)) settings = JSON.parse(readFileSync(settingsPath, 'utf-8')); } catch {
265
- console.warn('[CC Viewer] ~/.claude/settings.json is malformed, skipping hook injection');
266
- return;
267
- }
268
-
269
- if (!settings.hooks) settings.hooks = {};
270
- if (!Array.isArray(settings.hooks.PreToolUse)) settings.hooks.PreToolUse = [];
271
-
272
- let changed = false;
273
-
274
- // AskUserQuestion hook → ask-bridge.js
275
- const askBridgePath = resolve(__dirname, 'lib', 'ask-bridge.js');
276
- const askCmd = `node "${askBridgePath}"`;
277
- const askExisting = settings.hooks.PreToolUse.find(h => h.matcher === 'AskUserQuestion');
278
- if (askExisting) {
279
- if ((askExisting.hooks?.[0]?.command || '') !== askCmd) {
280
- askExisting.hooks = [{ type: 'command', command: askCmd }];
281
- changed = true;
282
- }
283
- } else {
284
- settings.hooks.PreToolUse.push({
285
- matcher: 'AskUserQuestion',
286
- hooks: [{ type: 'command', command: askCmd }]
287
- });
288
- changed = true;
289
- }
290
-
291
- // Permission approval hook → perm-bridge.js (matcher: "" = match all tools)
292
- const permBridgePath = resolve(__dirname, 'lib', 'perm-bridge.js');
293
- const permCmd = `node "${permBridgePath}"`;
294
- const permMatcher = '';
295
- // Clean up legacy entries: old narrow matchers, null matchers (invalid JSON),
296
- // and conflicting Bash-specific hooks (git guard now merged into perm-bridge.js)
297
- for (let i = settings.hooks.PreToolUse.length - 1; i >= 0; i--) {
298
- const h = settings.hooks.PreToolUse[i];
299
- const cmd = h.hooks?.[0]?.command || '';
300
- if (cmd.includes('perm-bridge.js') && h.matcher !== permMatcher) {
301
- settings.hooks.PreToolUse.splice(i, 1);
302
- changed = true;
303
- } else if ((h.matcher === null || h.matcher === undefined) && cmd.includes('perm-bridge.js')) {
304
- settings.hooks.PreToolUse.splice(i, 1);
305
- changed = true;
306
- } else if (h.matcher === 'Bash' && cmd.includes('grep') && /git|npm/.test(cmd)) {
307
- // Remove legacy standalone Bash git/npm guard — now handled inside perm-bridge.js
308
- settings.hooks.PreToolUse.splice(i, 1);
309
- changed = true;
310
- }
311
- }
312
- const permExisting = settings.hooks.PreToolUse.find(h => h.matcher === permMatcher);
313
- if (permExisting) {
314
- if ((permExisting.hooks?.[0]?.command || '') !== permCmd) {
315
- permExisting.hooks = [{ type: 'command', command: permCmd }];
316
- changed = true;
317
- }
318
- } else {
319
- settings.hooks.PreToolUse.push({
320
- matcher: permMatcher,
321
- hooks: [{ type: 'command', command: permCmd }]
322
- });
323
- changed = true;
324
- }
325
-
326
- if (changed) {
327
- mkdirSync(claudeDir, { recursive: true });
328
- writeFileSync(settingsPath, JSON.stringify(settings, null, 2));
329
- }
330
- } catch (err) {
331
- console.warn('[CC Viewer] Failed to ensure hooks:', err.message);
332
- }
333
- }
260
+ // ensureHooks() extracted to lib/ensure-hooks.js (shared with electron/tab-worker.js)
334
261
 
335
262
  async function runCliMode(extraClaudeArgs = [], cwd) {
336
263
  // 首先尝试 npm 版本(包括 nvm 安装),找不到再尝试 native 版本