@jesonliu/lark-claudecode-bridge 1.4.3 → 2.0.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.
- package/assets/web/css/main.css +766 -574
- package/assets/web/index.html +37 -17
- package/assets/web/js/auth.js +217 -0
- package/assets/web/js/bootstrap.js +36 -34
- package/assets/web/js/core.js +4 -3
- package/assets/web/js/main.js +79 -20
- package/assets/web/js/markdown.js +64 -0
- package/assets/web/js/pages/apps.js +338 -251
- package/assets/web/js/pages/chats.js +446 -0
- package/assets/web/js/pages/claude.js +243 -180
- package/assets/web/js/pages/mcp.js +59 -43
- package/assets/web/js/pages/memory.js +39 -43
- package/assets/web/js/pages/overview.js +344 -76
- package/assets/web/js/pages/permissions.js +40 -32
- package/assets/web/js/pages/plugins.js +51 -37
- package/assets/web/js/pages/skills.js +68 -92
- package/assets/web/js/pages/slash.js +31 -23
- package/assets/web/js/pages/workspaces.js +114 -73
- package/assets/web/js/theme.js +21 -18
- package/assets/web/js/ui.js +75 -32
- package/dist/bin/lcb.js +15 -0
- package/dist/bin/lcb.js.map +1 -1
- package/dist/gateway/feishu-gateway.d.ts +11 -0
- package/dist/gateway/feishu-gateway.js +5 -0
- package/dist/gateway/feishu-gateway.js.map +1 -1
- package/dist/gateway/gateway-registry.d.ts +16 -0
- package/dist/gateway/gateway-registry.js +10 -0
- package/dist/gateway/gateway-registry.js.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/web/chats-api.d.ts +77 -0
- package/dist/web/chats-api.js +475 -0
- package/dist/web/chats-api.js.map +1 -0
- package/dist/web/logs-api.d.ts +37 -0
- package/dist/web/logs-api.js +141 -0
- package/dist/web/logs-api.js.map +1 -0
- package/dist/web/server.js +125 -6
- package/dist/web/server.js.map +1 -1
- package/dist/web/webauth.d.ts +44 -0
- package/dist/web/webauth.js +177 -0
- package/dist/web/webauth.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
// ============ 极简 Markdown 渲染(公共模块) ============
|
|
2
|
+
// 先整体转义再还原语法,绝无 XSS 面。支持:标题 / 代码块 / 行内代码 / 粗斜体 /
|
|
3
|
+
// 列表 / 引用 / 链接 / 分割线 / 表格。消费方:Skill 文件查看(只看视图)、会话页 AI 回复气泡。
|
|
4
|
+
import { esc } from './core.js';
|
|
5
|
+
|
|
6
|
+
export function renderMarkdown(src) {
|
|
7
|
+
const codeBlocks = [];
|
|
8
|
+
let text = String(src).replace(/```(\w*)\n?([\s\S]*?)(?:```|$)/g, (_m, lang, code) => {
|
|
9
|
+
codeBlocks.push(`<pre style="background:var(--code-bg);border:1px solid var(--border);border-radius:8px;padding:10px;overflow:auto;font-size:12px"><code>${esc(code.replace(/\n$/, ''))}</code></pre>`);
|
|
10
|
+
return `\n ${codeBlocks.length - 1} \n`;
|
|
11
|
+
});
|
|
12
|
+
const lines = text.split('\n');
|
|
13
|
+
const out = [];
|
|
14
|
+
let listOpen = false;
|
|
15
|
+
const closeList = () => { if (listOpen) { out.push('</ul>'); listOpen = false; } };
|
|
16
|
+
const inline = (s) => esc(s)
|
|
17
|
+
.replace(/`([^`]+)`/g, '<code style="background:var(--code-bg);padding:1px 5px;border-radius:4px;font-size:12px">$1</code>')
|
|
18
|
+
.replace(/\*\*([^*]+)\*\*/g, '<strong>$1</strong>')
|
|
19
|
+
.replace(/\*([^*]+)\*/g, '<em>$1</em>')
|
|
20
|
+
.replace(/\[([^\]]+)\]\(([^)]+)\)/g, '<a href="$2" target="_blank" rel="noopener">$1</a>');
|
|
21
|
+
const isDelim = (l) => /^\s*\|?[\s:|-]+\|[\s:|-]*$/.test(l) && l.includes('-');
|
|
22
|
+
const cells = (l) => l.trim().replace(/^\||\|$/g, '').split('|').map((c) => inline(c.trim()));
|
|
23
|
+
let i = 0;
|
|
24
|
+
while (i < lines.length) {
|
|
25
|
+
const line = lines[i];
|
|
26
|
+
const block = /^ (\d+) $/.exec(line);
|
|
27
|
+
if (block) { closeList(); out.push(codeBlocks[Number(block[1])]); i++; continue; }
|
|
28
|
+
// 表格:表头行 |a|b| + 分隔行 |---|---| 的连续块
|
|
29
|
+
if (line.includes('|') && line.trim().startsWith('|') && i + 1 < lines.length && isDelim(lines[i + 1])) {
|
|
30
|
+
closeList();
|
|
31
|
+
const head = cells(line);
|
|
32
|
+
i += 2;
|
|
33
|
+
const rows = [];
|
|
34
|
+
while (i < lines.length && lines[i].includes('|') && lines[i].trim().startsWith('|')) {
|
|
35
|
+
rows.push(cells(lines[i]));
|
|
36
|
+
i++;
|
|
37
|
+
}
|
|
38
|
+
out.push(`<table style="border-collapse:collapse;font-size:12.5px;margin:8px 0">`
|
|
39
|
+
+ `<thead><tr>${head.map((h) => `<th style="border:1px solid var(--border);padding:5px 10px;text-align:left">${h}</th>`).join('')}</tr></thead>`
|
|
40
|
+
+ `<tbody>${rows.map((r) => `<tr>${r.map((c) => `<td style="border:1px solid var(--border);padding:5px 10px">${c}</td>`).join('')}</tr>`).join('')}</tbody></table>`);
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
const h = /^(#{1,4})\s+(.*)$/.exec(line);
|
|
44
|
+
if (h) { closeList(); const lv = h[1].length; out.push(`<h${lv + 1} style="margin:12px 0 6px">${inline(h[2])}</h${lv + 1}>`); i++; continue; }
|
|
45
|
+
if (/^\s*[-*]\s+/.test(line)) {
|
|
46
|
+
if (!listOpen) { out.push('<ul style="margin:4px 0;padding-left:22px">'); listOpen = true; }
|
|
47
|
+
out.push(`<li style="margin:2px 0">${inline(line.replace(/^\s*[-*]\s+/, ''))}</li>`);
|
|
48
|
+
i++; continue;
|
|
49
|
+
}
|
|
50
|
+
if (/^\s*\d+\.\s+/.test(line)) {
|
|
51
|
+
if (!listOpen) { out.push('<ul style="margin:4px 0;padding-left:22px">'); listOpen = true; }
|
|
52
|
+
out.push(`<li style="margin:2px 0">${inline(line.replace(/^\s*\d+\.\s+/, ''))}</li>`);
|
|
53
|
+
i++; continue;
|
|
54
|
+
}
|
|
55
|
+
closeList();
|
|
56
|
+
if (/^---+\s*$/.test(line)) { out.push('<hr style="border:none;border-top:1px solid var(--border);margin:10px 0">'); i++; continue; }
|
|
57
|
+
if (/^>\s?/.test(line)) { out.push(`<blockquote style="margin:6px 0;padding:4px 12px;border-left:3px solid var(--border2);color:var(--mut)">${inline(line.replace(/^>\s?/, ''))}</blockquote>`); i++; continue; }
|
|
58
|
+
if (line.trim() === '') { out.push(''); i++; continue; }
|
|
59
|
+
out.push(`<p style="margin:4px 0">${inline(line)}</p>`);
|
|
60
|
+
i++;
|
|
61
|
+
}
|
|
62
|
+
closeList();
|
|
63
|
+
return out.join('\n');
|
|
64
|
+
}
|