claude-relay 2.4.2 → 2.5.0

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 (75) hide show
  1. package/bin/cli.js +1 -2350
  2. package/package.json +7 -42
  3. package/LICENSE +0 -21
  4. package/README.md +0 -281
  5. package/lib/cli-sessions.js +0 -270
  6. package/lib/config.js +0 -222
  7. package/lib/daemon.js +0 -423
  8. package/lib/ipc.js +0 -112
  9. package/lib/pages.js +0 -714
  10. package/lib/project.js +0 -1224
  11. package/lib/public/app.js +0 -2157
  12. package/lib/public/apple-touch-icon.png +0 -0
  13. package/lib/public/css/base.css +0 -145
  14. package/lib/public/css/diff.css +0 -128
  15. package/lib/public/css/filebrowser.css +0 -1076
  16. package/lib/public/css/highlight.css +0 -144
  17. package/lib/public/css/input.css +0 -512
  18. package/lib/public/css/menus.css +0 -683
  19. package/lib/public/css/messages.css +0 -1159
  20. package/lib/public/css/overlays.css +0 -731
  21. package/lib/public/css/rewind.css +0 -529
  22. package/lib/public/css/sidebar.css +0 -794
  23. package/lib/public/favicon.svg +0 -26
  24. package/lib/public/icon-192.png +0 -0
  25. package/lib/public/icon-512.png +0 -0
  26. package/lib/public/icon-mono.svg +0 -19
  27. package/lib/public/index.html +0 -460
  28. package/lib/public/manifest.json +0 -27
  29. package/lib/public/modules/diff.js +0 -398
  30. package/lib/public/modules/events.js +0 -21
  31. package/lib/public/modules/filebrowser.js +0 -1375
  32. package/lib/public/modules/fileicons.js +0 -172
  33. package/lib/public/modules/icons.js +0 -54
  34. package/lib/public/modules/input.js +0 -578
  35. package/lib/public/modules/markdown.js +0 -149
  36. package/lib/public/modules/notifications.js +0 -643
  37. package/lib/public/modules/qrcode.js +0 -70
  38. package/lib/public/modules/rewind.js +0 -334
  39. package/lib/public/modules/sidebar.js +0 -628
  40. package/lib/public/modules/state.js +0 -3
  41. package/lib/public/modules/terminal.js +0 -658
  42. package/lib/public/modules/theme.js +0 -622
  43. package/lib/public/modules/tools.js +0 -1410
  44. package/lib/public/modules/utils.js +0 -56
  45. package/lib/public/style.css +0 -10
  46. package/lib/public/sw.js +0 -75
  47. package/lib/push.js +0 -125
  48. package/lib/sdk-bridge.js +0 -771
  49. package/lib/server.js +0 -577
  50. package/lib/sessions.js +0 -402
  51. package/lib/terminal-manager.js +0 -187
  52. package/lib/terminal.js +0 -24
  53. package/lib/themes/ayu-light.json +0 -9
  54. package/lib/themes/catppuccin-latte.json +0 -9
  55. package/lib/themes/catppuccin-mocha.json +0 -9
  56. package/lib/themes/claude-light.json +0 -9
  57. package/lib/themes/claude.json +0 -9
  58. package/lib/themes/dracula.json +0 -9
  59. package/lib/themes/everforest-light.json +0 -9
  60. package/lib/themes/everforest.json +0 -9
  61. package/lib/themes/github-light.json +0 -9
  62. package/lib/themes/gruvbox-dark.json +0 -9
  63. package/lib/themes/gruvbox-light.json +0 -9
  64. package/lib/themes/monokai.json +0 -9
  65. package/lib/themes/nord-light.json +0 -9
  66. package/lib/themes/nord.json +0 -9
  67. package/lib/themes/one-dark.json +0 -9
  68. package/lib/themes/one-light.json +0 -9
  69. package/lib/themes/rose-pine-dawn.json +0 -9
  70. package/lib/themes/rose-pine.json +0 -9
  71. package/lib/themes/solarized-dark.json +0 -9
  72. package/lib/themes/solarized-light.json +0 -9
  73. package/lib/themes/tokyo-night-light.json +0 -9
  74. package/lib/themes/tokyo-night.json +0 -9
  75. package/lib/updater.js +0 -96
@@ -1,149 +0,0 @@
1
- import { copyToClipboard } from './utils.js';
2
- import { refreshIcons } from './icons.js';
3
- import { getMermaidThemeVars } from './theme.js';
4
-
5
- // Initialize markdown parser
6
- marked.use({ gfm: true, breaks: false });
7
-
8
- // Initialize mermaid
9
- mermaid.initialize({
10
- startOnLoad: false,
11
- theme: "dark",
12
- themeVariables: getMermaidThemeVars()
13
- });
14
-
15
- export function updateMermaidTheme(vars) {
16
- mermaid.initialize({
17
- startOnLoad: false,
18
- theme: "dark",
19
- themeVariables: vars
20
- });
21
- }
22
-
23
- var mermaidIdCounter = 0;
24
-
25
- export function renderMarkdown(text) {
26
- return DOMPurify.sanitize(marked.parse(text));
27
- }
28
-
29
- export function highlightCodeBlocks(el) {
30
- el.querySelectorAll("pre code:not(.hljs):not(.language-mermaid)").forEach(function (block) {
31
- hljs.highlightElement(block);
32
- });
33
- el.querySelectorAll("pre:not(.has-copy-btn):not([data-mermaid-processed])").forEach(function (pre) {
34
- // Skip non-content code blocks (tool details, diffs, etc.)
35
- if (!pre.querySelector("code")) return;
36
- pre.classList.add("has-copy-btn");
37
- pre.style.position = "relative";
38
- var btn = document.createElement("button");
39
- btn.className = "code-copy-btn";
40
- btn.title = "Copy";
41
- btn.innerHTML = '<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>';
42
- btn.addEventListener("click", function (e) {
43
- e.stopPropagation();
44
- var code = pre.querySelector("code");
45
- var text = code ? code.textContent : pre.textContent;
46
- copyToClipboard(text).then(function () {
47
- btn.innerHTML = '<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>';
48
- setTimeout(function () {
49
- btn.innerHTML = '<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>';
50
- }, 1500);
51
- });
52
- });
53
- pre.appendChild(btn);
54
- });
55
- }
56
-
57
- export function renderMermaidBlocks(el) {
58
- var blocks = el.querySelectorAll("pre code.language-mermaid");
59
- blocks.forEach(function (codeEl) {
60
- var pre = codeEl.parentElement;
61
- if (!pre || pre.dataset.mermaidProcessed) return;
62
- pre.dataset.mermaidProcessed = "true";
63
-
64
- var source = codeEl.textContent;
65
- if (!source || !source.trim()) return;
66
-
67
- var id = "mermaid-" + (++mermaidIdCounter);
68
- var container = document.createElement("div");
69
- container.className = "mermaid-diagram";
70
-
71
- try {
72
- mermaid.render(id, source.trim()).then(function (result) {
73
- container.innerHTML = result.svg;
74
- container.addEventListener("click", function () {
75
- showMermaidModal(container.innerHTML);
76
- });
77
- if (pre.parentNode) pre.parentNode.replaceChild(container, pre);
78
- }).catch(function (err) {
79
- pre.classList.add("mermaid-error");
80
- var errHint = document.createElement("div");
81
- errHint.className = "mermaid-error-hint";
82
- errHint.textContent = "Diagram render failed";
83
- if (pre.parentNode) pre.parentNode.insertBefore(errHint, pre.nextSibling);
84
- var errDiv = document.getElementById("d" + id);
85
- if (errDiv) errDiv.remove();
86
- });
87
- } catch (err) {
88
- pre.classList.add("mermaid-error");
89
- }
90
- });
91
- }
92
-
93
- export function showMermaidModal(svgHtml) {
94
- var modal = document.getElementById("mermaid-modal");
95
- var body = document.getElementById("mermaid-modal-body");
96
- if (!modal || !body) return;
97
- body.innerHTML = svgHtml;
98
- modal.classList.remove("hidden");
99
- refreshIcons();
100
-
101
- var dlBtn = document.getElementById("mermaid-download-btn");
102
- dlBtn.onclick = function () {
103
- downloadMermaidPng(body.querySelector("svg"));
104
- };
105
- }
106
-
107
- export function closeMermaidModal() {
108
- var modal = document.getElementById("mermaid-modal");
109
- if (modal) modal.classList.add("hidden");
110
- }
111
-
112
- export function downloadMermaidPng(svgEl) {
113
- if (!svgEl) return;
114
- var svgClone = svgEl.cloneNode(true);
115
- // Ensure dimensions
116
- var bbox = svgEl.getBoundingClientRect();
117
- var scale = 2; // 2x for retina quality
118
- var w = bbox.width * scale;
119
- var h = bbox.height * scale;
120
- svgClone.setAttribute("width", w);
121
- svgClone.setAttribute("height", h);
122
-
123
- var serializer = new XMLSerializer();
124
- var svgStr = serializer.serializeToString(svgClone);
125
- var svgBlob = new Blob([svgStr], { type: "image/svg+xml;charset=utf-8" });
126
- var url = URL.createObjectURL(svgBlob);
127
-
128
- var img = new Image();
129
- img.onload = function () {
130
- var canvas = document.createElement("canvas");
131
- canvas.width = w;
132
- canvas.height = h;
133
- var ctx = canvas.getContext("2d");
134
- // Dark background
135
- ctx.fillStyle = "#1E1D1A";
136
- ctx.fillRect(0, 0, w, h);
137
- ctx.drawImage(img, 0, 0, w, h);
138
- URL.revokeObjectURL(url);
139
-
140
- canvas.toBlob(function (blob) {
141
- var a = document.createElement("a");
142
- a.href = URL.createObjectURL(blob);
143
- a.download = "diagram.png";
144
- a.click();
145
- URL.revokeObjectURL(a.href);
146
- }, "image/png");
147
- };
148
- img.src = url;
149
- }