@fgbg/mdocs 0.8.16 → 0.8.19
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/README.md +114 -76
- package/agent-skills/changelog/SKILL.md +21 -1
- package/agent-skills/index/SKILL.md +1 -1
- package/agent-skills/index.json +4 -4
- package/agent-skills/usage-agent-dev-loop/SKILL.md +7 -7
- package/agent-skills/usage-onboarding-ai/SKILL.md +98 -29
- package/agent-skills/usage-settings/SKILL.md +4 -4
- package/dist/server/agent/Agent/almost-empty.js +15 -0
- package/dist/server/agent/Agent/almost-empty.js.map +1 -0
- package/dist/server/agent/Agent/almost-empty.test.js +20 -0
- package/dist/server/agent/Agent/almost-empty.test.js.map +1 -0
- package/dist/server/agent/Agent/choice-pending.js +71 -0
- package/dist/server/agent/Agent/choice-pending.js.map +1 -0
- package/dist/server/agent/Agent/choice-pending.test.js +58 -0
- package/dist/server/agent/Agent/choice-pending.test.js.map +1 -0
- package/dist/server/agent/Agent/run.js +49 -3
- package/dist/server/agent/Agent/run.js.map +1 -1
- package/dist/server/agent/Agent/system-prompt.js +6 -5
- package/dist/server/agent/Agent/system-prompt.js.map +1 -1
- package/dist/server/agent/Agent/tools-account.js +16 -3
- package/dist/server/agent/Agent/tools-account.js.map +1 -1
- package/dist/server/agent/Agent/tools-choice.js +70 -0
- package/dist/server/agent/Agent/tools-choice.js.map +1 -0
- package/dist/server/agent/Agent/tools-coding.js +6 -3
- package/dist/server/agent/Agent/tools-coding.js.map +1 -1
- package/dist/server/agent/Agent/tools-overwrite.js +158 -0
- package/dist/server/agent/Agent/tools-overwrite.js.map +1 -0
- package/dist/server/routes/agent.routes.js +54 -0
- package/dist/server/routes/agent.routes.js.map +1 -1
- package/dist/server/search/document-index-manager.js +11 -8
- package/dist/server/search/document-index-manager.js.map +1 -1
- package/dist/web/assets/AgentChatPanel-CLKeiDeR.js +1 -0
- package/dist/web/assets/AiWriteWorkbench-Ecp214S5.js +6 -0
- package/dist/web/assets/DiagramEditor-BTRe45TX-DzJEhM4C.js +2 -0
- package/dist/web/assets/DocumentEditor-NPbbAape.js +21 -0
- package/dist/web/assets/{MergeView-BqQuuHxp.js → MergeView-BnWbq08U.js} +2 -2
- package/dist/web/assets/PlaygroundPage-BSGipUkC.js +8 -0
- package/dist/web/assets/SettingsPage-OklrFCx7.js +1 -0
- package/dist/web/assets/Toolbar-DjPuWk5G.js +126 -0
- package/dist/web/assets/VisitorPickerModal-BUS-cOq0.js +1 -0
- package/dist/web/assets/copy-hWOco_4c.js +11 -0
- package/dist/web/assets/diagram-gfUK8OHx.js +3016 -0
- package/dist/web/assets/editor-ONzd_YnO.js +16 -0
- package/dist/web/assets/history-AMIEbyMc.js +6 -0
- package/dist/web/assets/index-BksNm27A.css +1 -0
- package/dist/web/assets/index-C46BU1-j.js +185 -0
- package/dist/web/assets/meta2d-C8Z4cn-d.js +110 -0
- package/dist/web/assets/meta2dEngine-BD2XbzaV-D7hJ1H1g.js +1 -0
- package/dist/web/assets/motion-C4pN8CfU.js +8 -0
- package/dist/web/assets/plus-CnKbiP8x.js +6 -0
- package/dist/web/assets/react-B7vrA7AR.js +2126 -0
- package/dist/web/assets/react-vendor-BNpqFP9B.js +242 -0
- package/dist/web/assets/ui-DxdLi_28.js +3126 -0
- package/dist/web/index.html +28 -3
- package/package.json +2 -2
- package/dist/web/assets/_baseUniq-CTLDRefi.js +0 -1
- package/dist/web/assets/arc-C6HVu_cL.js +0 -1
- package/dist/web/assets/architectureDiagram-Q4EWVU46-BGZyIwfI.js +0 -36
- package/dist/web/assets/blockDiagram-DXYQGD6D-BnmQmYk5.js +0 -132
- package/dist/web/assets/c4Diagram-AHTNJAMY-D5ZSFyGW.js +0 -10
- package/dist/web/assets/channel-ComR_5wI.js +0 -1
- package/dist/web/assets/chunk-4BX2VUAB-bB7dqglW.js +0 -1
- package/dist/web/assets/chunk-4TB4RGXK-DLOuFWAV.js +0 -206
- package/dist/web/assets/chunk-55IACEB6-F-vn8P_5.js +0 -1
- package/dist/web/assets/chunk-EDXVE4YY-DJggdpTr.js +0 -1
- package/dist/web/assets/chunk-FMBD7UC4-CGFWLCLP.js +0 -15
- package/dist/web/assets/chunk-OYMX7WX6-nDiR5vU7.js +0 -231
- package/dist/web/assets/chunk-QZHKN3VN-D29FhQRL.js +0 -1
- package/dist/web/assets/chunk-YZCP3GAM-BmFALtIq.js +0 -1
- package/dist/web/assets/classDiagram-6PBFFD2Q-CxGT_r56.js +0 -1
- package/dist/web/assets/classDiagram-v2-HSJHXN6E-CxGT_r56.js +0 -1
- package/dist/web/assets/clone-J85LHgdR.js +0 -1
- package/dist/web/assets/cose-bilkent-S5V4N54A-J4Iar7P4.js +0 -1
- package/dist/web/assets/cytoscape.esm-BiciSPf8.js +0 -331
- package/dist/web/assets/dagre-KV5264BT-Cg07vwKD.js +0 -4
- package/dist/web/assets/defaultLocale-DX6XiGOO.js +0 -1
- package/dist/web/assets/diagram-5BDNPKRD-D0FP-ifV.js +0 -10
- package/dist/web/assets/diagram-G4DWMVQ6-CNejTsu2.js +0 -24
- package/dist/web/assets/diagram-MMDJMWI5-DEQjM6f7.js +0 -43
- package/dist/web/assets/diagram-TYMM5635-CRGZl6sR.js +0 -24
- package/dist/web/assets/erDiagram-SMLLAGMA-BGOATwuq.js +0 -85
- package/dist/web/assets/flowDiagram-DWJPFMVM-DVHizH8q.js +0 -162
- package/dist/web/assets/ganttDiagram-T4ZO3ILL-dLF_Rbaw.js +0 -292
- package/dist/web/assets/gitGraphDiagram-UUTBAWPF-BNMxCpkL.js +0 -106
- package/dist/web/assets/graph-p7_cO2pv.js +0 -1
- package/dist/web/assets/index-5eJ_7IuO.css +0 -1
- package/dist/web/assets/index-DoJ58x_f.js +0 -6291
- package/dist/web/assets/infoDiagram-42DDH7IO-BDffsV8g.js +0 -2
- package/dist/web/assets/ishikawaDiagram-UXIWVN3A-C7fw-Hwt.js +0 -70
- package/dist/web/assets/journeyDiagram-VCZTEJTY-CuEYHG93.js +0 -139
- package/dist/web/assets/kanban-definition-6JOO6SKY-iodYb2rc.js +0 -89
- package/dist/web/assets/layout-Dblo7Nv4.js +0 -1
- package/dist/web/assets/linear-Dj7ICVZv.js +0 -1
- package/dist/web/assets/min-BC0MiAVU.js +0 -1
- package/dist/web/assets/mindmap-definition-QFDTVHPH-Bi8kR-nH.js +0 -96
- package/dist/web/assets/pieDiagram-DEJITSTG-DFXNJaaz.js +0 -30
- package/dist/web/assets/quadrantDiagram-34T5L4WZ-eG750Sg7.js +0 -7
- package/dist/web/assets/requirementDiagram-MS252O5E-BOS23lbk.js +0 -84
- package/dist/web/assets/sankeyDiagram-XADWPNL6-iuLPdF16.js +0 -10
- package/dist/web/assets/sequenceDiagram-FGHM5R23-9dOhL1F_.js +0 -157
- package/dist/web/assets/stateDiagram-FHFEXIEX-DiYubp3u.js +0 -1
- package/dist/web/assets/stateDiagram-v2-QKLJ7IA2-C0u2afgY.js +0 -1
- package/dist/web/assets/timeline-definition-GMOUNBTQ-B7K2SCHF.js +0 -120
- package/dist/web/assets/vennDiagram-DHZGUBPP-DwsDXISO.js +0 -34
- package/dist/web/assets/wardley-RL74JXVD-DOtyNPcb.js +0 -162
- package/dist/web/assets/wardleyDiagram-NUSXRM2D-IO3BUkVB.js +0 -20
- package/dist/web/assets/xychartDiagram-5P7HB3ND-B_eC9Ig0.js +0 -7
package/README.md
CHANGED
|
@@ -1,116 +1,154 @@
|
|
|
1
1
|
# mdocs
|
|
2
2
|
|
|
3
|
-
Markdown
|
|
3
|
+
**开源 Markdown 知识库** — 给人用,也给 Agent 用。
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
- Vite + React web, Express back-end
|
|
7
|
-
- SQLite metadata, Markdown files as primary storage
|
|
8
|
-
- Lightweight visitor identity, no account system
|
|
9
|
-
- Runs locally or on a small team server
|
|
5
|
+
面向个人开发者与小团队:产品内 **智能助手 + 帮写**,外部 **CLI / Skills** 接入 Cursor / Claude;SQLite + 本地文件,**无账户**即可协作。
|
|
10
6
|
|
|
11
|
-
|
|
7
|
+
[文档站点](https://xuhuafeifei.github.io/mdocs-site/) · [GitHub](https://github.com/xuhuafeifei/mdocs) · [npm `@fgbg/mdocs`](https://www.npmjs.com/package/@fgbg/mdocs) · 当前版本 **0.8.19**
|
|
12
8
|
|
|
13
|
-
|
|
14
|
-
<img
|
|
15
|
-
|
|
9
|
+
<p align="center">
|
|
10
|
+
<img src="image/site主页.png" alt="mdocs 文档站点首页" width="860" />
|
|
11
|
+
</p>
|
|
16
12
|
|
|
17
|
-
|
|
18
|
-
<img width="1440" height="812" alt="image" src="https://github.com/user-attachments/assets/aba8ae95-40d5-49ba-a469-7665f8e3f21b" />
|
|
13
|
+
## 为什么选 mdocs
|
|
19
14
|
|
|
15
|
+
| 能力 | 说明 |
|
|
16
|
+
|------|------|
|
|
17
|
+
| **AI 双模式** | **智能助手**:答疑、搜文、结构操作、有条件全文覆写(低交互),帮你省操作时间。**帮写**:左聊右 Diff、按段接受后再写回(高交互),精细控制每一段文字。 |
|
|
18
|
+
| **Agent 开发闭环** | CLI Token + [mdocs-cli](https://github.com/xuhuafeifei/mdocs-cli) Skills:在 Cursor / Claude 里搜索、读写知识库;`mdocs-dev` / `diagram` 把契约与 Mermaid 落进仓库,减少决策不落盘与知识漂移。 |
|
|
19
|
+
| **本地私有** | 单进程,SQLite + 磁盘文件,无外部 DB / 缓存 / 队列。 |
|
|
20
|
+
| **无账户协作** | 访客即身份;域隔离 + 文档级邀请,从私有到开放按需放开。 |
|
|
21
|
+
| **双模编辑与草稿** | Markdown + 富文本工具栏;Meta2d / Mermaid / Markmap;本地草稿自动保存,空闲可同步云端。 |
|
|
20
22
|
|
|
21
|
-
|
|
23
|
+
<p align="center">
|
|
24
|
+
<img src="image/mdocs%20主页.png" alt="mdocs 编辑主界面" width="860" />
|
|
25
|
+
</p>
|
|
22
26
|
|
|
23
|
-
|
|
24
|
-
`markdown-docs` (located at `~/ddmc/markdown-docs`). That includes, but is
|
|
25
|
-
not limited to:
|
|
27
|
+
## 快速开始
|
|
26
28
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
```bash
|
|
30
|
+
npm install -g @fgbg/mdocs
|
|
31
|
+
mdocs
|
|
32
|
+
# 浏览器打开 http://localhost:4000
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
临时体验:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
npx @fgbg/mdocs
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
需要 **Node.js 22+**。更细的安装(含低内存机器 Swap 说明)见 [文档 · 安装](https://xuhuafeifei.github.io/mdocs-site/docs/getting-started/installation.html)。
|
|
42
|
+
|
|
43
|
+
## 功能速览
|
|
44
|
+
|
|
45
|
+
### 智能助手
|
|
46
|
+
|
|
47
|
+
左下角悬浮入口(可拖动):答疑、搜文、建空文档 / 文件夹、移动文档。已有正文时写作会弹出选择卡:**直接覆写 / 打开帮写审阅 / 取消**。
|
|
48
|
+
|
|
49
|
+
<p align="center">
|
|
50
|
+
<img src="image/Snipaste_2026-08-03_17-39-39.png" alt="智能助手入口标注" width="860" />
|
|
51
|
+
</p>
|
|
52
|
+
|
|
53
|
+
DeepSeek API Key 在设置页配置(按访客隔离):
|
|
54
|
+
|
|
55
|
+
<p align="center">
|
|
56
|
+
<img src="docs/screenshots/ai-settings.png" alt="AI 设置" width="720" />
|
|
57
|
+
</p>
|
|
58
|
+
|
|
59
|
+
### 帮写
|
|
60
|
+
|
|
61
|
+
顶栏 **帮写** 进入全屏工作台:左 AI、右 Markdown Diff,按段接受 / 拒绝后再「完成并写回」。改稿前可查手册 skill、读工作稿,避免盲改。
|
|
62
|
+
|
|
63
|
+
<p align="center">
|
|
64
|
+
<img src="image/mdocs帮写主页.png" alt="帮写工作台" width="860" />
|
|
65
|
+
</p>
|
|
32
66
|
|
|
33
|
-
|
|
34
|
-
author's own demo project.
|
|
67
|
+
### Agent / CLI
|
|
35
68
|
|
|
36
|
-
|
|
37
|
-
`registerPens`, fenced `` ```meta2 `` blocks with inline JSON, **wysiwyg**
|
|
38
|
-
mode (not IR), SVG preview in the preview half of each block, and
|
|
39
|
-
`window.vditorInstance` for `getValue` / `setValue` when editing or deleting
|
|
40
|
-
blocks.
|
|
69
|
+
为 Agent 准备 CLI Token 后,可用 Skills 读写知识库(不必背完整命令,粘贴文章 URL 即可)。
|
|
41
70
|
|
|
42
|
-
|
|
71
|
+
<p align="center">
|
|
72
|
+
<img src="docs/screenshots/mdocs-cli.png" alt="mdocs-cli" width="720" />
|
|
73
|
+
</p>
|
|
43
74
|
|
|
44
|
-
|
|
75
|
+
详见:[Agent 开发闭环](https://xuhuafeifei.github.io/mdocs-site/docs/usage/agent-dev-loop.html) · [CLI Token](https://xuhuafeifei.github.io/mdocs-site/docs/usage/cli-token.html)
|
|
45
76
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
77
|
+
### 编辑、域与协作
|
|
78
|
+
|
|
79
|
+
斜杠菜单插入 Meta2d / Markmap 等;域管理、评论、收藏等能力齐全。
|
|
80
|
+
|
|
81
|
+
<p align="center">
|
|
82
|
+
<img src="docs/screenshots/slash-menu.png" alt="斜杠菜单" width="420" />
|
|
83
|
+
<img src="docs/screenshots/domain-manager.png" alt="域管理" width="420" />
|
|
84
|
+
</p>
|
|
85
|
+
|
|
86
|
+
<p align="center">
|
|
87
|
+
<img src="docs/screenshots/doc-tree.png" alt="文档树" width="280" />
|
|
88
|
+
<img src="docs/screenshots/comments.png" alt="评论" width="560" />
|
|
89
|
+
</p>
|
|
90
|
+
|
|
91
|
+
## 从源码开发
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
git clone https://github.com/xuhuafeifei/mdocs.git
|
|
95
|
+
cd mdocs
|
|
96
|
+
pnpm install
|
|
97
|
+
pnpm dev # API :4000 + Vite :5173(代理 /api)
|
|
49
98
|
```
|
|
50
|
-
````
|
|
51
99
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
100
|
+
```bash
|
|
101
|
+
pnpm build && pnpm start # 生产:同端口提供静态资源与 API
|
|
102
|
+
pnpm test
|
|
103
|
+
pnpm typecheck
|
|
104
|
+
pnpm mdocs visitor list # 管理 CLI(开发用 tsx 入口)
|
|
105
|
+
```
|
|
57
106
|
|
|
58
|
-
|
|
107
|
+
仓库布局:
|
|
59
108
|
|
|
60
109
|
```
|
|
61
110
|
src/
|
|
62
|
-
server/
|
|
63
|
-
web/ Vite React
|
|
64
|
-
shared/
|
|
111
|
+
server/ Express API、Agent、文档/域服务、CLI
|
|
112
|
+
web/ Vite + React 前端
|
|
113
|
+
shared/ 两侧共用类型与路径工具
|
|
65
114
|
```
|
|
66
115
|
|
|
67
|
-
|
|
116
|
+
## 运行时数据
|
|
117
|
+
|
|
118
|
+
默认目录 `~/.mdocs/`(可用 `MDOCS_DATA_DIR` 覆盖):
|
|
68
119
|
|
|
69
120
|
```
|
|
70
121
|
~/.mdocs/
|
|
71
|
-
data.sqlite
|
|
72
|
-
files/
|
|
73
|
-
|
|
74
|
-
assets/
|
|
122
|
+
sqlite/data.sqlite
|
|
123
|
+
files/docs/ # 文档内容
|
|
124
|
+
files/assets/ # 附件
|
|
75
125
|
logs/
|
|
76
126
|
```
|
|
77
127
|
|
|
78
|
-
`domain_id`
|
|
79
|
-
paths. Moving a document between domains only updates the database.
|
|
128
|
+
`domain_id` 只存在于 SQLite,**不会**出现在文件路径里。
|
|
80
129
|
|
|
81
|
-
##
|
|
130
|
+
## 访客身份与迁移
|
|
82
131
|
|
|
83
|
-
|
|
84
|
-
pnpm install
|
|
85
|
-
pnpm dev:server # http://localhost:4000
|
|
86
|
-
pnpm dev:web # http://localhost:5173, proxies /api
|
|
87
|
-
```
|
|
132
|
+
首次访问输入昵称 → 获得 `visitor_id` + 高熵 token;浏览器存明文,服务端只存 `SHA-256(token)`,请求头 `x-visitor-token`。
|
|
88
133
|
|
|
89
|
-
|
|
134
|
+
清缓存后重新注册可用迁移合并身份:
|
|
90
135
|
|
|
91
136
|
```bash
|
|
92
|
-
|
|
93
|
-
|
|
137
|
+
mdocs visitor migrate --from Alice --to Bob --dry-run
|
|
138
|
+
mdocs visitor migrate --from Alice --to Bob --confirm
|
|
94
139
|
```
|
|
95
140
|
|
|
96
|
-
##
|
|
97
|
-
|
|
98
|
-
On first visit the user enters a nickname. The server issues a
|
|
99
|
-
`visitor_id` (UUID) and a high-entropy `visitor_token`. The browser keeps
|
|
100
|
-
the raw token; the server only stores `SHA-256(token)`. Each request
|
|
101
|
-
sends the raw token in an `x-visitor-token` header; the server hashes it
|
|
102
|
-
and looks up the visitor.
|
|
141
|
+
## 相关链接
|
|
103
142
|
|
|
104
|
-
|
|
143
|
+
| | |
|
|
144
|
+
|--|--|
|
|
145
|
+
| 产品文档 | https://xuhuafeifei.github.io/mdocs-site/ |
|
|
146
|
+
| 文档源码站 | https://github.com/xuhuafeifei/mdocs-site |
|
|
147
|
+
| CLI / Skills | https://github.com/xuhuafeifei/mdocs-cli |
|
|
148
|
+
| 问题反馈 | https://github.com/xuhuafeifei/mdocs/issues |
|
|
105
149
|
|
|
106
|
-
|
|
107
|
-
administrator can merge the old identity into the new one:
|
|
150
|
+
截图:[`image/`](./image/) 为最新实拍;[`docs/screenshots/`](./docs/screenshots/) 另有站点素材补充。
|
|
108
151
|
|
|
109
|
-
|
|
110
|
-
pnpm mdocs visitor migrate --from OLD_VISITOR_ID --to NEW_VISITOR_ID --dry-run
|
|
111
|
-
pnpm mdocs visitor migrate --from OLD_VISITOR_ID --to NEW_VISITOR_ID --confirm
|
|
112
|
-
```
|
|
152
|
+
## License
|
|
113
153
|
|
|
114
|
-
|
|
115
|
-
ownership, disables the old visitor, and appends an entry to
|
|
116
|
-
`visitor_migrations` and `audit_logs`. Markdown files are never moved.
|
|
154
|
+
[MIT](./LICENSE)
|
|
@@ -1,13 +1,33 @@
|
|
|
1
1
|
---
|
|
2
2
|
id: changelog
|
|
3
3
|
name: "更新日志"
|
|
4
|
-
description: "-
|
|
4
|
+
description: "- **Meta2d 按需加载**:文档没有流程图时不下载 `@meta2d`;有图 / 插入图 / 打开编辑时再加载 - **流程图属性「Text」输入**:防抖写回画布,不再每敲一字全量重绘(依赖 `@fgbg/lobe-editor@1.0.0-fork.19`) - **构建**:Vite 将 `@meta2d` / `canvas2svg` 单独拆成 `meta2d` chunk"
|
|
5
5
|
keywords: []
|
|
6
6
|
source: changelog.md
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# 更新日志
|
|
10
10
|
|
|
11
|
+
## v0.8.19
|
|
12
|
+
|
|
13
|
+
- **Meta2d 按需加载**:文档没有流程图时不下载 `@meta2d`;有图 / 插入图 / 打开编辑时再加载
|
|
14
|
+
- **流程图属性「Text」输入**:防抖写回画布,不再每敲一字全量重绘(依赖 `@fgbg/lobe-editor@1.0.0-fork.19`)
|
|
15
|
+
- **构建**:Vite 将 `@meta2d` / `canvas2svg` 单独拆成 `meta2d` chunk
|
|
16
|
+
|
|
17
|
+
## v0.8.18
|
|
18
|
+
|
|
19
|
+
- **首屏加速**:编辑器 / 设置 / 助手 / 帮写按需懒加载;Vite 拆分重型 vendor chunk,入口 JS 从约 6MB 降到约 134KB
|
|
20
|
+
- **更快看到侧栏树**:启动时延后全文索引重建(默认约 15s,可用 `MDOCS_INDEX_INITIAL_DELAY_MS` 调整),减轻 HTML TTFB 被 CPU 拖慢
|
|
21
|
+
- **加载壳**:`index.html` 增加「mdocs 加载中…」占位,减少白屏感
|
|
22
|
+
|
|
23
|
+
## v0.8.17
|
|
24
|
+
|
|
25
|
+
- **AI 双模式定位明确**:智能助手(Ask)偏低交互——可答疑、搜文、结构操作,也能直接全文覆写;帮写(Coding)偏高交互——左聊右 Diff、按段接受、你拍板后才写回
|
|
26
|
+
- **智能助手:覆写选择卡**:有正文时请求写作,弹出三选一:直接覆写 / 打开帮写审阅 / 取消
|
|
27
|
+
- **智能助手:写后同步**:覆写成功后若当前打开该文档,自动触发拉取更新逻辑,刷新 headCommitId
|
|
28
|
+
- **帮写欢迎文案**:明确「精细改稿请用帮写」,不再说「不协助写作」
|
|
29
|
+
- **官网文档**:补充双模式 8 维度对比表,更新首页卖点
|
|
30
|
+
|
|
11
31
|
## v0.8.16
|
|
12
32
|
|
|
13
33
|
- **帮写(coding)**:编辑器顶栏 / 欢迎页入口进入全屏工作台;左 AI、右纯 Markdown;按段接受/拒绝提案后再写回(已有文进草稿,空白帮写可新建)
|
|
@@ -17,7 +17,7 @@ source: index.md
|
|
|
17
17
|
|
|
18
18
|
## AI 与 Agent
|
|
19
19
|
|
|
20
|
-
- [
|
|
20
|
+
- [智能助手(AI)](./usage/onboarding-ai.md)——低交互覆写 vs 帮写高交互审阅
|
|
21
21
|
- [Agent 开发闭环](./usage/agent-dev-loop.md)——CLI + Skills 接入 Cursor / Claude
|
|
22
22
|
- [CLI Token](./usage/cli-token.md)——命令行与 Agent 身份令牌
|
|
23
23
|
|
package/agent-skills/index.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
{
|
|
3
3
|
"id": "changelog",
|
|
4
4
|
"name": "更新日志",
|
|
5
|
-
"description": "-
|
|
5
|
+
"description": "- **Meta2d 按需加载**:文档没有流程图时不下载 `@meta2d`;有图 / 插入图 / 打开编辑时再加载 - **流程图属性「Text」输入**:防抖写回画布,不再每敲一字全量重绘(依赖 `@fgbg/lobe-editor@1.0.0-fork.19`) - **构建**:Vite 将 `@meta2d` / `canvas2svg` 单独拆成 `meta2d` chunk",
|
|
6
6
|
"keywords": [],
|
|
7
7
|
"source": "changelog.md"
|
|
8
8
|
},
|
|
@@ -155,8 +155,8 @@
|
|
|
155
155
|
},
|
|
156
156
|
{
|
|
157
157
|
"id": "usage-onboarding-ai",
|
|
158
|
-
"name": "
|
|
159
|
-
"description": "mdocs
|
|
158
|
+
"name": "智能助手(AI)",
|
|
159
|
+
"description": "mdocs 内置 **两种 AI 能力模式**,共用设置页里的 DeepSeek 配置。",
|
|
160
160
|
"keywords": [],
|
|
161
161
|
"source": "usage/onboarding-ai.md"
|
|
162
162
|
},
|
|
@@ -177,7 +177,7 @@
|
|
|
177
177
|
{
|
|
178
178
|
"id": "usage-settings",
|
|
179
179
|
"name": "设置页面",
|
|
180
|
-
"description": "设置页面是 mdocs
|
|
180
|
+
"description": "设置页面是 mdocs 的集中配置中心:身份与密码、收藏与文章、域与成员模板、智能助手、草稿同步等都在这里。",
|
|
181
181
|
"keywords": [],
|
|
182
182
|
"source": "usage/settings.md"
|
|
183
183
|
},
|
|
@@ -10,13 +10,13 @@ source: usage/agent-dev-loop.md
|
|
|
10
10
|
|
|
11
11
|
mdocs 不只给人在浏览器里写文档,也让 **外部 AI Agent**(Cursor、Claude Code、Codex 等)把知识库嵌进日常工作。
|
|
12
12
|
|
|
13
|
-
这和产品内的 [
|
|
13
|
+
这和产品内的 [智能助手(AI)](./onboarding-ai.md) 是两条路:
|
|
14
14
|
|
|
15
|
-
| |
|
|
15
|
+
| | 智能助手 | Agent 开发闭环 |
|
|
16
16
|
|--|----------|----------------|
|
|
17
|
-
| 在哪 | mdocs Web 浮层 | 你的 IDE / Agent 终端 |
|
|
18
|
-
| 干什么 |
|
|
19
|
-
| 会不会改正文 |
|
|
17
|
+
| 在哪 | mdocs Web 浮层 / 帮写 | 你的 IDE / Agent 终端 |
|
|
18
|
+
| 干什么 | 答疑、搜文、结构操作;精细改稿走「帮写」 | 读知识库、按契约开发、按需写回文档 |
|
|
19
|
+
| 会不会改正文 | 智能助手可有条件覆写;帮写需分段接受 | 会按你的指令经 CLI 读写文档 |
|
|
20
20
|
|
|
21
21
|
---
|
|
22
22
|
|
|
@@ -171,9 +171,9 @@ Agent 会按 **mdocs-dev** skill 工作:在项目根维护 **`.mdocs-docs/`
|
|
|
171
171
|
|
|
172
172
|
---
|
|
173
173
|
|
|
174
|
-
##
|
|
174
|
+
## 和智能助手的知识关系
|
|
175
175
|
|
|
176
176
|
- **本站文档**是给人读的手册真源。
|
|
177
|
-
- mdocs
|
|
177
|
+
- mdocs 智能助手构建时会把本站手册打成包内 Skills。
|
|
178
178
|
- 因此:改好本站使用说明,既服务人类读者,也服务产品内 AI。
|
|
179
179
|
|
|
@@ -1,65 +1,134 @@
|
|
|
1
1
|
---
|
|
2
2
|
id: usage-onboarding-ai
|
|
3
|
-
name: "
|
|
4
|
-
description: "mdocs
|
|
3
|
+
name: "智能助手(AI)"
|
|
4
|
+
description: "mdocs 内置 **两种 AI 能力模式**,共用设置页里的 DeepSeek 配置。"
|
|
5
5
|
keywords: []
|
|
6
6
|
source: usage/onboarding-ai.md
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
#
|
|
9
|
+
# 智能助手(AI)
|
|
10
10
|
|
|
11
|
-
mdocs
|
|
11
|
+
mdocs 内置 **两种 AI 能力模式**,共用设置页里的 DeepSeek 配置。
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
|
16
|
-
|
|
13
|
+
**最大区别是用户交互度:**
|
|
14
|
+
|
|
15
|
+
| | 🤖 智能助手 | ✍️ 帮写(Coding) |
|
|
16
|
+
|--|-------------|-------------------|
|
|
17
|
+
| **交互度** | **低**:以结果为导向,正文侧偏 **一次覆写**(空文可直写;有正文需你点确认或改走帮写) | **高**:以过程为导向,必须和你 **交互审阅**——分段提案、接受/拒绝,你拍板后才写回 |
|
|
18
|
+
| **你在干什么** | 提需求 →(必要时确认)→ 看结果 | 提需求 → 看 Diff → 逐段/整批决定 → 完成并写回 |
|
|
19
|
+
|
|
20
|
+
其他差异是为此服务的:
|
|
21
|
+
|
|
22
|
+
| 对比维度 | 智能助手(Ask / Normal) | 帮写(Coding) |
|
|
23
|
+
|---------|--------------------------|----------------|
|
|
24
|
+
| **入口** | 左下角悬浮球(可拖动) | 编辑器顶栏「帮写」/ 欢迎页「AI 帮写」 |
|
|
25
|
+
| **UI** | 小浮层 | 全屏工作台(左对话、右 Markdown Diff) |
|
|
26
|
+
| **写回时机** | 确认后直接写服务端(覆写) | 在缓冲区改到满意,点「完成并写回」才进本地草稿 |
|
|
27
|
+
| **能力侧重** | 答疑、搜文、建空文档/文件夹、找位置、全文一键生成/重写 | 起草、改稿、润色、续写,精细控制每一段 |
|
|
28
|
+
| **会话** | 全局历史(不绑文档) | 按文档隔离 |
|
|
29
|
+
| **存储** | `tenant/<id>/agent/session/` | `tenant/<id>/agent/coding-session/` |
|
|
30
|
+
|
|
31
|
+
**一句话:** 要快、愿意一次覆写 → 智能助手;要和 AI 来回改、段段把关 → 帮写。
|
|
17
32
|
|
|
18
33
|
若你要用 Cursor / Claude 等**外部 Agent** 读写知识库、落开发契约,见 [Agent 开发闭环](./agent-dev-loop.md)。
|
|
19
34
|
|
|
20
|
-
|
|
35
|
+
---
|
|
21
36
|
|
|
22
|
-
|
|
37
|
+
## 智能助手(Ask / Normal)
|
|
23
38
|
|
|
24
|
-
|
|
39
|
+
左下角圆形 **智能助手** 入口(可拖动)。点击打开浮层 **「mdocs 智能助手」**,主编辑区仍保持打开。按住拖动可改位置(本地记住);挪过之后会出现「重置位置」。
|
|
25
40
|
|
|
26
|
-
|
|
41
|
+

|
|
27
42
|
|
|
43
|
+
浮层开场会说明分工:**答疑用智能助手**(可搜文、建空文档、帮你找位置);**写 / 精细改正文请用顶栏「帮写」**。
|
|
44
|
+
|
|
45
|
+
浮层内:
|
|
28
46
|
- 顶部:**+** 新建会话、历史列表、关闭
|
|
29
|
-
-
|
|
47
|
+
- 中间:问候语、快捷提问(如「如何发布文档?」「草稿是什么?」「如何创建域?」)与对话内容
|
|
30
48
|
- 底部输入框:占位「把你的问题告诉我…」
|
|
31
49
|
- 页脚提示:内容由 AI 生成,仅供参考
|
|
32
50
|
|
|
33
|
-
|
|
51
|
+
### 可以做什么
|
|
34
52
|
|
|
35
|
-
|
|
53
|
+
直接问,例如:
|
|
54
|
+
- 如何发布文档?草稿是什么?
|
|
55
|
+
- 如何创建域?权限怎么设置?
|
|
56
|
+
- 帮我搜索 / 列出某域文档,并打开其中一篇说明要点
|
|
57
|
+
- 帮我创建一个空文档「XXX」
|
|
58
|
+
- 这篇文档几乎是空的,帮我写个大纲并直接写好
|
|
59
|
+
|
|
60
|
+
### 覆写机制(有正文时)
|
|
61
|
+
|
|
62
|
+
当文档已有实质内容,智能助手不会静默改写。你若要求覆写,助手会弹出**选择卡**,三选一:
|
|
63
|
+
1. **直接覆写** → 同意后线性写入服务端(带版本冲突校验)
|
|
64
|
+
2. **打开帮写审阅** → 跳帮写模式,先在右侧看提案再决定
|
|
65
|
+
3. **取消** → 不写
|
|
66
|
+
|
|
67
|
+
### 明确不会做
|
|
36
68
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
69
|
+
- 静默改写有实质正文的文档(必须经你确认或走帮写)
|
|
70
|
+
- 越权读取你无权查看的文档(与网页端同一套权限)
|
|
71
|
+
- 精细改稿 / 逐段审阅(请用顶栏 **帮写**)
|
|
72
|
+
|
|
73
|
+
---
|
|
42
74
|
|
|
43
|
-
|
|
75
|
+
## 帮写(Coding 模式)
|
|
44
76
|
|
|
45
|
-
|
|
77
|
+
需要和 AI **高交互**地改正文(逐段看 Diff、接受/拒绝)时用 **帮写**。智能助手偏覆写结果;帮写偏过程协作。
|
|
78
|
+
|
|
79
|
+
### 入口
|
|
80
|
+
|
|
81
|
+
打开一篇文档后,在编辑器**顶栏工具条右侧**(发布 / 删除附近)点击 **帮写**(带星标图标)进入全屏工作台。欢迎页也可点「AI 帮写」从空白开始。
|
|
82
|
+
|
|
83
|
+

|
|
84
|
+
|
|
85
|
+
### 工作流
|
|
86
|
+
|
|
87
|
+
1. 通过顶栏 **帮写**(或欢迎页「AI 帮写」)进入全屏层:左侧对话,右侧 Markdown
|
|
88
|
+
2. 描述要写/改的内容;助手会先读当前工作稿与进场快照,再提交完整 Markdown 提案
|
|
89
|
+
3. 右侧按变更段 **接受 / 拒绝**;也可继续手改
|
|
90
|
+
4. **完成并写回**:已有文档写入本地草稿(需你再发布);空白帮写则创建新文档
|
|
91
|
+
|
|
92
|
+
### 工作台界面
|
|
93
|
+
|
|
94
|
+

|
|
95
|
+
|
|
96
|
+
| 区域 | 说明 |
|
|
97
|
+
|------|------|
|
|
98
|
+
| **顶栏** | 文档名;**取消**退出;**完成并写回**把已接受内容写回(已有文进本地草稿) |
|
|
99
|
+
| **左侧 · 对话** | 说明要写/改什么;助手可「读取帮写工作稿」再「设置帮写正文」更新提案;**+** / 历史管理会话 |
|
|
100
|
+
| **右侧 · 提案** | 红删绿增的分段 Diff;可 **全部接受 / 全部拒绝**,或逐段操作;也可切 **纯编辑** 手改;底部可在变更间跳转 |
|
|
101
|
+
|
|
102
|
+
### 核心设计:高交互审阅
|
|
103
|
+
|
|
104
|
+
帮写的核心不是「更能写」,而是 **必须和你交互**:
|
|
105
|
+
- AI 吐出的是**完整 Markdown 提案**,不是直接改文件
|
|
106
|
+
- 前端 diff 计算后**按段高亮**,每段你可独立「接受」或「拒绝」
|
|
107
|
+
- 接受的段落合并进「当前稿」,剩余可继续手改或再次 AI 续写
|
|
108
|
+
- 全程**不碰服务端**,直到你点「完成并写回」才写入本地草稿
|
|
109
|
+
|
|
110
|
+
### 会话说明
|
|
111
|
+
|
|
112
|
+
- 帮写会话与智能助手**完全隔离**,互不干扰
|
|
46
113
|
- **按文档隔离**:文章 A 的历史看不到文章 B
|
|
47
114
|
- 左侧同样有 **+** / 历史;历史只回放对话文字,不恢复右侧稿
|
|
48
115
|
- 从空白帮写写回成文后,当前对话会绑到新文档,下次打开该文帮写可续聊
|
|
49
116
|
|
|
117
|
+
---
|
|
118
|
+
|
|
50
119
|
## 开始使用前:配置模型
|
|
51
120
|
|
|
52
121
|
1. 打开 **设置 → AI**(侧栏底部访客信息进入设置)
|
|
53
122
|
2. 选择模型:`deepseek-v4-flash` 或 `deepseek-v4-pro`
|
|
54
123
|
3. 填写你的 DeepSeek API Key 并保存
|
|
55
124
|
|
|
56
|
-

|
|
57
126
|
|
|
58
127
|
未配置 Key 时,入口可用但无法发送消息,浮层 / 帮写会提示去设置页配置。
|
|
59
128
|
|
|
60
129
|
每人一份配置,仅本人可用;Key 在服务端按访客隔离存储,不会出现在别的访客界面上。配置页可查看配置名称、模型、脱敏后的 Key 与配置 ID;需要改时可点 **编辑**。
|
|
61
130
|
|
|
62
|
-
##
|
|
131
|
+
## 怎么问(智能助手)
|
|
63
132
|
|
|
64
133
|
可以直接问,例如:
|
|
65
134
|
|
|
@@ -71,7 +140,7 @@ mdocs 内置两种 AI 能力,共用设置页里的 DeepSeek 配置:
|
|
|
71
140
|
|
|
72
141
|
助手会按需阅读 [mdocs 用户手册](https://xuhuafeifei.github.io/mdocs-site/) 相关章节,也可在你有权阅读的范围内读取知识库文档。工具结果(搜索表、域树、读文预览等)会出现在对话时间线中,**默认折叠**,展开可查看;历史会话重开后通常只保留文字、不再回放这些工具块。答完后通常会附带一两个可继续追问的示例。
|
|
73
142
|
|
|
74
|
-
##
|
|
143
|
+
## 会话(智能助手)
|
|
75
144
|
|
|
76
145
|
- 同一访客的对话会保存在数据目录 `tenant/<访客ID>/agent/session/` 下,刷新或重开浮层仍可续聊。
|
|
77
146
|
- 浮层标题栏 **「+」**:新建空会话并切换过去。
|
|
@@ -79,11 +148,11 @@ mdocs 内置两种 AI 能力,共用设置页里的 DeepSeek 配置:
|
|
|
79
148
|
- 会话标题取自**第一条用户消息**(过长会截断),不是模型摘要。
|
|
80
149
|
- 删除、重命名、按天数自动清理尚未提供。
|
|
81
150
|
|
|
82
|
-
##
|
|
151
|
+
## 明确不会做(智能助手)
|
|
83
152
|
|
|
84
|
-
-
|
|
153
|
+
- 静默改写有实质正文的文档(必须经你弹出选择卡确认)
|
|
85
154
|
- 越权读取你无权查看的文档(与网页端同一套权限)
|
|
86
|
-
-
|
|
155
|
+
- 静默替你发布或改权限档(结构操作会走工具;写作类请求会根据上下文决定直写或弹选择卡)
|
|
87
156
|
|
|
88
|
-
|
|
157
|
+
若你在智能助手里要求写作,助手会根据文档状态决定:空文直接覆写,有正文则弹出选择卡。
|
|
89
158
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
id: usage-settings
|
|
3
3
|
name: "设置页面"
|
|
4
|
-
description: "设置页面是 mdocs
|
|
4
|
+
description: "设置页面是 mdocs 的集中配置中心:身份与密码、收藏与文章、域与成员模板、智能助手、草稿同步等都在这里。"
|
|
5
5
|
keywords: []
|
|
6
6
|
source: usage/settings.md
|
|
7
7
|
---
|
|
@@ -10,7 +10,7 @@ source: usage/settings.md
|
|
|
10
10
|
|
|
11
11
|
## 功能概述
|
|
12
12
|
|
|
13
|
-
设置页面是 mdocs
|
|
13
|
+
设置页面是 mdocs 的集中配置中心:身份与密码、收藏与文章、域与成员模板、智能助手、草稿同步等都在这里。
|
|
14
14
|
|
|
15
15
|
## 入口
|
|
16
16
|
|
|
@@ -33,7 +33,7 @@ source: usage/settings.md
|
|
|
33
33
|
| [我的文章](./my-documents.md) | 自己创建的文档、邀请成员、打开 |
|
|
34
34
|
| [域管理](./domain-members.md) | 创建 / 筛选 / 重命名 / 改类型 / 删除域;受限域成员 |
|
|
35
35
|
| [域成员模板](./domain-members.md) | 可复用的访客名单 |
|
|
36
|
-
| [AI](./onboarding-ai.md) |
|
|
36
|
+
| [AI](./onboarding-ai.md) | 智能助手与帮写的 DeepSeek 配置 |
|
|
37
37
|
| [保存与发布](./drafts.md) | 本地快照、自动同步、未发布草稿 |
|
|
38
38
|
|
|
39
39
|
---
|
|
@@ -76,7 +76,7 @@ Token / Cookie 丢失时的自助找回;引入登录密码后已边缘化。
|
|
|
76
76
|
| 我的收藏 | [收藏功能](./bookmarks.md) |
|
|
77
77
|
| 我的文章 | [我的文章](./my-documents.md) |
|
|
78
78
|
| 域管理 / 域成员模板 | [受限域成员与名单模板](./domain-members.md) |
|
|
79
|
-
| AI | [
|
|
79
|
+
| AI | [智能助手(AI)](./onboarding-ai.md) |
|
|
80
80
|
| 保存与发布 | [草稿与同步](./drafts.md) |
|
|
81
81
|
|
|
82
82
|
---
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ask 覆写判空:以纯文本判断「几乎空」。
|
|
3
|
+
* 约定:去空白无正文,或仅一行标题。
|
|
4
|
+
*/
|
|
5
|
+
export function isAlmostEmptyDocumentText(plainText) {
|
|
6
|
+
const trimmed = plainText.replace(/\u00a0/g, " ").trim();
|
|
7
|
+
if (!trimmed)
|
|
8
|
+
return true;
|
|
9
|
+
const lines = trimmed
|
|
10
|
+
.split(/\r?\n/)
|
|
11
|
+
.map((l) => l.trim())
|
|
12
|
+
.filter((l) => l.length > 0);
|
|
13
|
+
return lines.length <= 1;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=almost-empty.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"almost-empty.js","sourceRoot":"","sources":["../../../../src/server/agent/Agent/almost-empty.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAC,SAAiB;IACzD,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACzD,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAE1B,MAAM,KAAK,GAAG,OAAO;SAClB,KAAK,CAAC,OAAO,CAAC;SACd,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE/B,OAAO,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;AAC3B,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { isAlmostEmptyDocumentText } from "./almost-empty.js";
|
|
3
|
+
describe("isAlmostEmptyDocumentText", () => {
|
|
4
|
+
it("empty / whitespace", () => {
|
|
5
|
+
expect(isAlmostEmptyDocumentText("")).toBe(true);
|
|
6
|
+
expect(isAlmostEmptyDocumentText(" \n\t ")).toBe(true);
|
|
7
|
+
});
|
|
8
|
+
it("single title line", () => {
|
|
9
|
+
expect(isAlmostEmptyDocumentText("# 周报")).toBe(true);
|
|
10
|
+
expect(isAlmostEmptyDocumentText("周报")).toBe(true);
|
|
11
|
+
});
|
|
12
|
+
it("title plus blank lines only", () => {
|
|
13
|
+
expect(isAlmostEmptyDocumentText("# 周报\n\n\n")).toBe(true);
|
|
14
|
+
});
|
|
15
|
+
it("has real body", () => {
|
|
16
|
+
expect(isAlmostEmptyDocumentText("# 周报\n\n今天做了三件事。")).toBe(false);
|
|
17
|
+
expect(isAlmostEmptyDocumentText("第一段\n第二段")).toBe(false);
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
//# sourceMappingURL=almost-empty.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"almost-empty.test.js","sourceRoot":"","sources":["../../../../src/server/agent/Agent/almost-empty.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC5B,MAAM,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC3B,MAAM,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,CAAC,yBAAyB,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE;QACvB,MAAM,CAAC,yBAAyB,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClE,MAAM,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|