@dongfangw/study-kit 0.0.0-stage → 0.1.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 (110) hide show
  1. package/LICENSE +671 -0
  2. package/README.md +28 -2
  3. package/cordis.patch.yml +3 -0
  4. package/ext/adoc-convert/index.mjs +62 -0
  5. package/lib/client.js +5917 -0
  6. package/lib/client.js.map +1 -0
  7. package/lib/docsplit.d.ts +73 -0
  8. package/lib/docsplit.d.ts.map +1 -0
  9. package/lib/docsplit.js +241 -0
  10. package/lib/docsplit.js.map +1 -0
  11. package/lib/git.d.ts +29 -0
  12. package/lib/git.d.ts.map +1 -0
  13. package/lib/git.js +305 -0
  14. package/lib/git.js.map +1 -0
  15. package/lib/index.d.ts +10 -0
  16. package/lib/index.d.ts.map +1 -0
  17. package/lib/index.js +324 -0
  18. package/lib/index.js.map +1 -0
  19. package/lib/isolation.d.ts +33 -0
  20. package/lib/isolation.d.ts.map +1 -0
  21. package/lib/isolation.js +30 -0
  22. package/lib/isolation.js.map +1 -0
  23. package/lib/libraries.d.ts +36 -0
  24. package/lib/libraries.d.ts.map +1 -0
  25. package/lib/libraries.js +118 -0
  26. package/lib/libraries.js.map +1 -0
  27. package/lib/render.d.ts +22 -0
  28. package/lib/render.d.ts.map +1 -0
  29. package/lib/render.js +568 -0
  30. package/lib/render.js.map +1 -0
  31. package/lib/session.d.ts +23 -0
  32. package/lib/session.d.ts.map +1 -0
  33. package/lib/session.js +35 -0
  34. package/lib/session.js.map +1 -0
  35. package/lib/skills.d.ts +24 -0
  36. package/lib/skills.d.ts.map +1 -0
  37. package/lib/skills.js +111 -0
  38. package/lib/skills.js.map +1 -0
  39. package/lib/slidev.d.ts +13 -0
  40. package/lib/slidev.d.ts.map +1 -0
  41. package/lib/slidev.js +755 -0
  42. package/lib/slidev.js.map +1 -0
  43. package/lib/slidevBin.d.ts +7 -0
  44. package/lib/slidevBin.d.ts.map +1 -0
  45. package/lib/slidevBin.js +130 -0
  46. package/lib/slidevBin.js.map +1 -0
  47. package/lib/slidevEnv.d.ts +56 -0
  48. package/lib/slidevEnv.d.ts.map +1 -0
  49. package/lib/slidevEnv.js +702 -0
  50. package/lib/slidevEnv.js.map +1 -0
  51. package/lib/static.d.ts +8 -0
  52. package/lib/static.d.ts.map +1 -0
  53. package/lib/static.js +79 -0
  54. package/lib/static.js.map +1 -0
  55. package/lib/tools.d.ts +4 -0
  56. package/lib/tools.d.ts.map +1 -0
  57. package/lib/tools.js +160 -0
  58. package/lib/tools.js.map +1 -0
  59. package/lib/types/client/DocMarks.d.ts +76 -0
  60. package/lib/types/client/DocMarks.d.ts.map +1 -0
  61. package/lib/types/client/DocViewer.d.ts +21 -0
  62. package/lib/types/client/DocViewer.d.ts.map +1 -0
  63. package/lib/types/client/GitPanel.d.ts +20 -0
  64. package/lib/types/client/GitPanel.d.ts.map +1 -0
  65. package/lib/types/client/LibraryWorkspace.d.ts +5 -0
  66. package/lib/types/client/LibraryWorkspace.d.ts.map +1 -0
  67. package/lib/types/client/MyLibraries.d.ts +5 -0
  68. package/lib/types/client/MyLibraries.d.ts.map +1 -0
  69. package/lib/types/client/SlidevDeckViewer.d.ts +25 -0
  70. package/lib/types/client/SlidevDeckViewer.d.ts.map +1 -0
  71. package/lib/types/client/SlidevEnvPanel.d.ts +11 -0
  72. package/lib/types/client/SlidevEnvPanel.d.ts.map +1 -0
  73. package/lib/types/client/annotations.d.ts +161 -0
  74. package/lib/types/client/annotations.d.ts.map +1 -0
  75. package/lib/types/client/docEnhance.d.ts +55 -0
  76. package/lib/types/client/docEnhance.d.ts.map +1 -0
  77. package/lib/types/client/docKey.d.ts +22 -0
  78. package/lib/types/client/docKey.d.ts.map +1 -0
  79. package/lib/types/client/git.module.css.gen.d.ts +3 -0
  80. package/lib/types/client/git.module.css.gen.d.ts.map +1 -0
  81. package/lib/types/client/icons.d.ts +50 -0
  82. package/lib/types/client/icons.d.ts.map +1 -0
  83. package/lib/types/client/index.d.ts +12 -0
  84. package/lib/types/client/index.d.ts.map +1 -0
  85. package/lib/types/client/prose.d.ts +19 -0
  86. package/lib/types/client/prose.d.ts.map +1 -0
  87. package/lib/types/client/readerControls.d.ts +55 -0
  88. package/lib/types/client/readerControls.d.ts.map +1 -0
  89. package/lib/types/client/readerPrefs.d.ts +73 -0
  90. package/lib/types/client/readerPrefs.d.ts.map +1 -0
  91. package/lib/types/client/readingPos.d.ts +82 -0
  92. package/lib/types/client/readingPos.d.ts.map +1 -0
  93. package/lib/types/client/styles.module.css.gen.d.ts +3 -0
  94. package/lib/types/client/styles.module.css.gen.d.ts.map +1 -0
  95. package/lib/types/client/submitDraft.d.ts +29 -0
  96. package/lib/types/client/submitDraft.d.ts.map +1 -0
  97. package/lib/types/client/viewActive.d.ts +55 -0
  98. package/lib/types/client/viewActive.d.ts.map +1 -0
  99. package/lib/types/types.d.ts +351 -0
  100. package/lib/types/types.d.ts.map +1 -0
  101. package/lib/types.d.ts +351 -0
  102. package/lib/types.d.ts.map +1 -0
  103. package/lib/types.js +6 -0
  104. package/lib/types.js.map +1 -0
  105. package/package.json +101 -6
  106. package/skills/aero-concept-qa/SKILL.md +65 -0
  107. package/skills/aero-learning-path/SKILL.md +61 -0
  108. package/skills/aero-study-guide/SKILL.md +47 -0
  109. package/skills/aero-think/SKILL.md +59 -0
  110. package/skills/kb-organize/SKILL.md +73 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slidevEnv.js","sourceRoot":"","sources":["../src/slidevEnv.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { IncomingMessage, ServerResponse } from 'node:http';
2
+ /**
3
+ * 发送本地文件,支持单区间 Range。
4
+ * 调用方应已设置 Content-Type 之外的其它头(如 Cache-Control);本函数负责
5
+ * Accept-Ranges / Content-Type / Content-Length / Content-Range / 状态码与流式 body。
6
+ */
7
+ export declare function sendFile(req: IncomingMessage, res: ServerResponse, abs: string, contentType: string): void;
8
+ //# sourceMappingURL=static.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"static.d.ts","sourceRoot":"","sources":["../src/static.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AA6BhE;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAoB1G"}
package/lib/static.js ADDED
@@ -0,0 +1,79 @@
1
+ /**
2
+ * 静态文件发送(Range 感知 + 流式)。
3
+ *
4
+ * 背景:Slidev 课件常嵌大视频(BOPPPS 引入环节),浏览器对 <video> 的默认预载
5
+ * 策略是 metadata——只发 `Range: bytes=0-…` 取文件头/元数据,而不会整文件下载。
6
+ * 若服务端忽略 Range、恒返回 200 + 全量 body,浏览器就会为每段视频完整下载整文件:
7
+ * chp0 绪论一节 5 段视频合计 ~200MB,导致课件页「渲染极慢、备课窗口长时间白屏」。
8
+ * 因此这里实现单区间 Range + createReadStream 流式发送,并对外声明 Accept-Ranges。
9
+ */
10
+ import { createReadStream, statSync } from 'node:fs';
11
+ /** 解析单区间 Range 头;不合法/无法满足时返回 null(回退 200 全量发送)。 */
12
+ function parseRange(range, size) {
13
+ const m = /^bytes=(\d*)-(\d*)$/.exec(range.trim());
14
+ if (m === null)
15
+ return null;
16
+ const a = m[1] ?? '';
17
+ const b = m[2] ?? '';
18
+ if (a === '' && b === '')
19
+ return null;
20
+ let start;
21
+ let end;
22
+ if (a === '') {
23
+ // 后缀区间:最后 b 字节(bytes=-N)
24
+ const n = Number(b);
25
+ if (!Number.isFinite(n) || n <= 0)
26
+ return null;
27
+ start = Math.max(0, size - n);
28
+ end = size - 1;
29
+ }
30
+ else {
31
+ start = Number(a);
32
+ if (!Number.isFinite(start) || start < 0)
33
+ return null;
34
+ end = b === '' ? size - 1 : Number(b);
35
+ if (!Number.isFinite(end))
36
+ return null;
37
+ if (start > end || start >= size)
38
+ return null;
39
+ end = Math.min(end, size - 1);
40
+ }
41
+ if (start < 0 || end < 0 || start > end || end >= size)
42
+ return null;
43
+ return { start, end };
44
+ }
45
+ /**
46
+ * 发送本地文件,支持单区间 Range。
47
+ * 调用方应已设置 Content-Type 之外的其它头(如 Cache-Control);本函数负责
48
+ * Accept-Ranges / Content-Type / Content-Length / Content-Range / 状态码与流式 body。
49
+ */
50
+ export function sendFile(req, res, abs, contentType) {
51
+ const size = statSync(abs).size;
52
+ res.setHeader('Accept-Ranges', 'bytes');
53
+ res.setHeader('Content-Type', contentType);
54
+ const rangeHeader = req.headers.range;
55
+ const range = typeof rangeHeader === 'string' && rangeHeader !== '' ? parseRange(rangeHeader, size) : null;
56
+ if (range === null) {
57
+ res.statusCode = 200;
58
+ res.setHeader('Content-Length', size);
59
+ createReadStream(abs).on('error', onStreamError(res)).pipe(res);
60
+ return;
61
+ }
62
+ const { start, end } = range;
63
+ res.statusCode = 206;
64
+ res.setHeader('Content-Length', end - start + 1);
65
+ res.setHeader('Content-Range', `bytes ${start}-${end}/${size}`);
66
+ createReadStream(abs, { start, end }).on('error', onStreamError(res)).pipe(res);
67
+ }
68
+ /** 流式读取中途出错(如文件被并发删除)时:销毁响应,避免未处理的 stream error 崩溃进程。 */
69
+ function onStreamError(res) {
70
+ return () => {
71
+ try {
72
+ res.destroy();
73
+ }
74
+ catch {
75
+ /* ignore */
76
+ }
77
+ };
78
+ }
79
+ //# sourceMappingURL=static.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"static.js","sourceRoot":"","sources":["../src/static.ts"],"names":[],"mappings":"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"}
package/lib/tools.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ import type { Context } from '@deepseek-ai/cordis';
2
+ import type { Agent } from '@deepseek-ai/dsh-agent';
3
+ export declare function registerKbTools(_rootCtx: Context | null, agent: Agent): () => void;
4
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AAoBnD,wBAAgB,eAAe,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM,IAAI,CA8HlF"}
package/lib/tools.js ADDED
@@ -0,0 +1,160 @@
1
+ /**
2
+ * 学生向 AI 工具:`kb_libraries` / `kb_catalog` / `kb_read` / `kb_search`。
3
+ *
4
+ * 设计约束:
5
+ * - **不出现课程专名**(R3):描述里只说"库",不说哪门课;课程信息来自内容仓的清单。
6
+ * - **私人库隔离**(P3):`private` 库正常可读可搜(那是学生自己的资料),但任何"导出/分享"
7
+ * 路径都要过 `assertNoPrivateLeak`。
8
+ * - 路径解析:`<库id>/<库内相对路径>`;只给相对路径时按可见库顺序找第一个命中的。
9
+ */
10
+ import path from 'node:path';
11
+ import { defineTool } from '@deepseek-ai/dsh-tools';
12
+ import { isInside, searchLibraries } from '@aero/library-core';
13
+ import { readKbText } from "./render.js";
14
+ import { lookResolved } from "./session.js";
15
+ function textOf(value) {
16
+ return [{ type: 'text', text: value }];
17
+ }
18
+ /** 把 `<libId>/<rel>` 拆开;没有库前缀时返回 null 让调用方逐个库试。 */
19
+ function splitLibraryPath(input, ids) {
20
+ const norm = input.replaceAll('\\', '/');
21
+ for (const id of ids) {
22
+ if (norm === id)
23
+ return { id, rel: '' };
24
+ if (norm.startsWith(id + '/'))
25
+ return { id, rel: norm.slice(id.length + 1) };
26
+ }
27
+ return null;
28
+ }
29
+ export function registerKbTools(_rootCtx, agent) {
30
+ const viewerOf = () => lookResolved(agent.session.header.cwd)?.viewer ?? 'student';
31
+ const libs = () => lookResolved(agent.session.header.cwd)?.workspace.libraries ?? [];
32
+ const disposers = [
33
+ agent.ctx.tools.register(defineTool({
34
+ name: 'kb_libraries',
35
+ description: '列出当前工作区里挂载的知识库(id / 名称 / 形态 / 可见性 / 根目录)。当学生问"我在学什么/有哪些资料"、或需要知道某个库的 id 以便用 kb_catalog、kb_read、kb_search 时调用。私人库(visibility: private)只在本人视图出现,不会外传。',
36
+ parameters: {},
37
+ output: { schema: { type: 'object', additionalProperties: true }, render: (_a, v) => textOf(String(v?.text ?? '')) },
38
+ async execute() {
39
+ const ws = lookResolved(agent.session.header.cwd);
40
+ if (ws === null)
41
+ return { text: '未找到知识库:请在工作区放一份 libraries.yaml,或在某个库根放 library.yaml,或设置 AERO_WORKSPACE 指向它们。' };
42
+ const lines = [`工作区:${ws.workspace.root}${ws.workspace.legacy ? '(legacy 布局)' : ''}`, `视图:${ws.viewer}`, ''];
43
+ if (ws.workspace.libraries.length === 0) {
44
+ lines.push('(legacy 布局:按内置规则识别)');
45
+ }
46
+ for (const l of ws.workspace.libraries) {
47
+ const g = l.manifest.groups.length;
48
+ lines.push(`- ${l.manifest.id} · ${l.manifest.title}(${l.manifest.kind} · ${l.manifest.visibility} · ${g} 个分组)`);
49
+ lines.push(` 根目录:${l.root}`);
50
+ if (l.manifest.outline !== undefined && l.manifest.outline.length > 0) {
51
+ lines.push(` 学习路径:${l.manifest.outline.map((o) => o.title).join(' → ')}`);
52
+ }
53
+ }
54
+ return { text: lines.join('\n') };
55
+ },
56
+ })),
57
+ agent.ctx.tools.register(defineTool({
58
+ name: 'kb_catalog',
59
+ description: '列出知识库的目录结构(分组 → 文档/课件),路径为 `<库id>/<库内相对路径>`,可直接传给 kb_read。当学生想了解某库有哪些内容、或需要定位资料时调用。',
60
+ parameters: {},
61
+ output: { schema: { type: 'object', additionalProperties: true }, render: (_a, v) => textOf(String(v?.text ?? '')) },
62
+ async execute() {
63
+ const ws = lookResolved(agent.session.header.cwd);
64
+ if (ws === null)
65
+ return { text: '未找到知识库(放一份 libraries.yaml 或 library.yaml)。' };
66
+ const lines = [`工作区:${ws.workspace.root}`, ''];
67
+ const walk = (nodes, indent) => {
68
+ for (const n of nodes) {
69
+ const kids = (n.children ?? []);
70
+ if (n.type === 'group') {
71
+ lines.push(`${indent}${n.name}/`);
72
+ walk(kids, indent + ' ');
73
+ }
74
+ else {
75
+ lines.push(`${indent}- ${n.name} (${n.path})`);
76
+ }
77
+ }
78
+ };
79
+ for (const l of ws.workspace.libraries) {
80
+ lines.push(`## ${l.manifest.title}(${l.manifest.id})`);
81
+ const { buildLibraryCatalog } = await import('@aero/library-core');
82
+ walk(buildLibraryCatalog(l.root, l.manifest, ws.viewer).groups, ' ');
83
+ lines.push('');
84
+ }
85
+ return { text: lines.join('\n') };
86
+ },
87
+ })),
88
+ agent.ctx.tools.register(defineTool({
89
+ name: 'kb_read',
90
+ description: '读取知识库里一篇文档的原文(Markdown / AsciiDoc,含 $...$ 数学公式)。path 用 kb_catalog 给出的 `<库id>/<库内相对路径>`;也可只给相对路径(按可见库顺序找)。当需要精确引用定义、公式、推导时调用。',
91
+ parameters: {
92
+ path: { type: 'string', required: true, description: '文档路径,如 my-lib/notes/第1章.md' },
93
+ startLine: { type: 'number', description: '起始行号(1 起,默认 1)' },
94
+ maxLines: { type: 'number', description: '最大返回行数(默认 400)' },
95
+ },
96
+ output: { schema: { type: 'object', additionalProperties: true }, render: (_a, v) => textOf(String(v?.text ?? '')) },
97
+ async execute(args) {
98
+ const ws = lookResolved(agent.session.header.cwd);
99
+ if (ws === null)
100
+ throw new Error('未找到知识库(放一份 libraries.yaml 或 library.yaml)。');
101
+ const input = String(args.path ?? '').trim();
102
+ if (input === '')
103
+ throw new Error('path 不能为空');
104
+ const ids = ws.workspace.libraries.map((l) => l.manifest.id);
105
+ const direct = splitLibraryPath(input, ids);
106
+ const candidates = direct !== null
107
+ ? ws.workspace.libraries.filter((l) => l.manifest.id === direct.id).map((l) => ({ lib: l, rel: direct.rel }))
108
+ : ws.workspace.libraries.map((l) => ({ lib: l, rel: input }));
109
+ for (const { lib, rel } of candidates) {
110
+ const abs = path.resolve(lib.root, rel);
111
+ if (!isInside(lib.root, abs))
112
+ throw new Error(`非法路径(越出库根):${rel}`);
113
+ const text = readKbText(lib.root, rel, 8 * 1024 * 1024);
114
+ if (text === null)
115
+ continue;
116
+ const lines = text.split(/\r?\n/);
117
+ const start = Math.max(1, Math.floor(Number(args.startLine ?? 1) || 1));
118
+ const max = Math.max(1, Math.floor(Number(args.maxLines ?? 400) || 400));
119
+ const slice = lines.slice(start - 1, start - 1 + max);
120
+ const header = `# ${lib.manifest.id}/${rel}(共 ${lines.length} 行,展示 ${start}–${start + slice.length - 1} 行)\n`;
121
+ return { text: header + slice.join('\n') };
122
+ }
123
+ throw new Error(`读不到文档:${input}(不存在或过大)`);
124
+ },
125
+ })),
126
+ agent.ctx.tools.register(defineTool({
127
+ name: 'kb_search',
128
+ description: '在当前挂载的知识库里全文检索关键词,返回 库id/路径:行号 与上下文片段(单文档最多 3 条)。知识库可声明状态过滤(如只检索已审核正文)。用于定位概念、公式、术语的出处。',
129
+ parameters: {
130
+ query: { type: 'string', required: true, description: '关键词(中文/英文/公式名)' },
131
+ library: { type: 'string', description: '只搜某个库(库 id),缺省搜全部可见库' },
132
+ },
133
+ output: { schema: { type: 'object', additionalProperties: true }, render: (_a, v) => textOf(String(v?.text ?? '')) },
134
+ async execute(args) {
135
+ const ws = lookResolved(agent.session.header.cwd);
136
+ if (ws === null)
137
+ return { text: '未找到知识库(放一份 libraries.yaml 或 library.yaml)。' };
138
+ const query = String(args.query ?? '').trim();
139
+ if (query === '')
140
+ throw new Error('query 不能为空');
141
+ const only = args.library === undefined ? null : String(args.library);
142
+ const picked = only === null ? libs() : libs().filter((l) => l.manifest.id === only);
143
+ if (picked.length === 0)
144
+ return { text: `没有这个库:${only ?? '(全部)'}` };
145
+ const hits = searchLibraries(picked.map((l) => ({ root: l.root, manifest: l.manifest })), query, { viewer: viewerOf() });
146
+ if (hits.length === 0)
147
+ return { text: `未找到「${query}」的相关内容。` };
148
+ const lines = [`「${query}」命中 ${hits.length} 处:`];
149
+ for (const h of hits)
150
+ lines.push(`- ${h.libraryId}/${h.path}:${h.line}\n ${h.snippet}`);
151
+ return { text: lines.join('\n') };
152
+ },
153
+ })),
154
+ ];
155
+ return () => {
156
+ for (const d of disposers)
157
+ d();
158
+ };
159
+ }
160
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ import { type AnnoAnchor, type AnnoColor, type AnnoStyle, type Annotation, type AnnotationPatch, type NotePin } from './annotations.js';
2
+ export interface SelectionState {
3
+ /** 选区中心(视口坐标)——工具条以它为水平中心。 */
4
+ readonly x: number;
5
+ /** 选区上沿(视口坐标)——工具条贴在它上方。 */
6
+ readonly y: number;
7
+ readonly anchor: AnnoAnchor;
8
+ }
9
+ export declare function SelectionBar({ sel, onPick, onNote, onAsk, onDismiss }: {
10
+ readonly sel: SelectionState;
11
+ readonly onPick: (color: AnnoColor, style: AnnoStyle) => void;
12
+ readonly onNote: () => void;
13
+ readonly onAsk: (() => void) | null;
14
+ readonly onDismiss: () => void;
15
+ }): JSX.Element;
16
+ export interface EditorState {
17
+ readonly id: string;
18
+ /** 浮层落点(视口坐标)。 */
19
+ readonly left: number;
20
+ readonly top: number;
21
+ }
22
+ /** 浮层落点(不含标注 id):调用方把 id 补上即可。 */
23
+ export interface EditorAnchor {
24
+ readonly left: number;
25
+ readonly top: number;
26
+ }
27
+ /** 浮层落点:优先贴标记下方,下面放不下就翻到上方,左右夹在视口内。 */
28
+ export declare function popoverAt(rect: {
29
+ left: number;
30
+ right: number;
31
+ top: number;
32
+ bottom: number;
33
+ }): EditorAnchor;
34
+ interface EditorProps {
35
+ readonly anno: Annotation;
36
+ readonly at: Pick<EditorState, 'left' | 'top'>;
37
+ readonly onPatch: (patch: AnnotationPatch) => void;
38
+ readonly onDelete: () => void;
39
+ readonly onAsk: ((note: string) => void) | null;
40
+ readonly onClose: () => void;
41
+ }
42
+ /**
43
+ * 标注编辑浮层:改色、切线(荧光笔 ⇄ 重点线)、写想法。
44
+ *
45
+ * 保存策略:改色/切线立即生效(点了就能看见);文字用「保存」或 Ctrl/⌘+Enter 提交,
46
+ * 关闭时若有未保存的改动则自动补交一次——学生写着写着点外面走开,不该丢。
47
+ */
48
+ export declare function NoteEditor({ anno, at, onPatch, onDelete, onAsk, onClose }: EditorProps): JSX.Element;
49
+ interface PanelProps {
50
+ readonly title: string;
51
+ readonly annos: readonly Annotation[];
52
+ /** 导出用的文档键(同一次打开只导出当前文档)。 */
53
+ readonly exportKey: string;
54
+ readonly showPage: boolean;
55
+ readonly onLocate: (anno: Annotation) => void;
56
+ readonly onAsk: ((anno: Annotation) => void) | null;
57
+ readonly onDelete: (anno: Annotation) => void;
58
+ readonly onClear: () => void;
59
+ readonly onClose: () => void;
60
+ }
61
+ /** 标记列表:定位 / 删除 / 问 AI / 复制全部(Markdown,贴给 AI 或自己复习)。 */
62
+ export declare function MarksPanel({ title, annos, exportKey, showPage, onLocate, onAsk, onDelete, onClear, onClose, }: PanelProps): JSX.Element;
63
+ export declare function NotePinLayer({ pins, onOpen }: {
64
+ readonly pins: readonly NotePin[];
65
+ readonly onOpen: (id: string) => void;
66
+ }): JSX.Element | null;
67
+ export declare function MarksFab({ count, noted, open, right, onClick }: {
68
+ readonly count: number;
69
+ readonly noted: number;
70
+ readonly open: boolean;
71
+ readonly right: number;
72
+ readonly onClick: () => void;
73
+ }): JSX.Element;
74
+ export declare function annotationQuestion(quote: string, note: string): string;
75
+ export {};
76
+ //# sourceMappingURL=DocMarks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocMarks.d.ts","sourceRoot":"","sources":["../../../src/client/DocMarks.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { DocRenderResult } from '../types.js';
2
+ import { type ReadingContext } from './prose.js';
3
+ interface Props {
4
+ relPath: string;
5
+ result: DocRenderResult;
6
+ onReadingChange: (ctx: ReadingContext) => void;
7
+ /** 打开知识库内另一文档(相对 KB 根路径)——正文内链接的阅读器内导航。 */
8
+ onOpenDoc?: (relPath: string) => void;
9
+ /** 打开**同一文档的另一段**(超长文档被宿主分段,见 src/docsplit.ts 与 /aero-kb/doc?seg=)。 */
10
+ onOpenSegment?: (seg: number) => void;
11
+ /** 会话工作目录参数(取源文档头部属性做「资料名片」用)。 */
12
+ cwdParam?: string;
13
+ /**
14
+ * 「问 AI」出口:把标注的原文 + 自己的想法交给所在工作台(各台自己组上下文并发送)。
15
+ * 不传则不显示「问 AI」按钮(例如无输入区的只读场景)。
16
+ */
17
+ onAsk?: (text: string) => void;
18
+ }
19
+ export declare function DocViewer({ relPath, result, onReadingChange, onOpenDoc, onOpenSegment, cwdParam, onAsk }: Props): JSX.Element;
20
+ export {};
21
+ //# sourceMappingURL=DocViewer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocViewer.d.ts","sourceRoot":"","sources":["../../../src/client/DocViewer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAA6B,KAAK,cAAc,EAAE,MAAM,YAAY,CAAA;AAmB3E,UAAU,KAAK;IACb,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,eAAe,CAAA;IACvB,eAAe,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,IAAI,CAAA;IAC9C,2CAA2C;IAC3C,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IACrC,uEAAuE;IACvE,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IACrC,kCAAkC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;OAGG;IACH,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAC/B;AAqGD,wBAAgB,SAAS,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,KAAK,GAAG,GAAG,CAAC,OAAO,CA80B7H"}
@@ -0,0 +1,20 @@
1
+ import type { ViewGate } from './viewActive.js';
2
+ /**
3
+ * 顶栏「Git」按钮:轮询四仓概况,按状态显示彩色圆点(GitHub 同步指示风格)。
4
+ *
5
+ * `gate` 是所属工作台的可视性门:标签被保活隐藏时**跳过轮询**(每次 `/aero-kb/git/repos`
6
+ * 都要起 git 子进程,后台空转纯属浪费)。省略时不门控(单文件/嵌入式场景)。
7
+ */
8
+ export declare function GitStatusButton({ cwd, refreshKey, onClick, gate }: {
9
+ cwd: string | undefined;
10
+ refreshKey: number;
11
+ onClick: () => void;
12
+ gate?: ViewGate;
13
+ }): JSX.Element;
14
+ export declare function GitPanel({ cwd, onChanged, onClose }: {
15
+ cwd: string | undefined;
16
+ /** 操作成功后通知宿主(刷新目录/案例清单/按钮圆点)。 */
17
+ onChanged: () => void;
18
+ onClose: () => void;
19
+ }): JSX.Element;
20
+ //# sourceMappingURL=GitPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GitPanel.d.ts","sourceRoot":"","sources":["../../../src/client/GitPanel.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAI/C;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;IAClE,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,IAAI,CAAC,EAAE,QAAQ,CAAA;CAChB,GAAG,GAAG,CAAC,OAAO,CA+Cd;AA2BD,wBAAgB,QAAQ,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE;IACpD,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;IACvB,iCAAiC;IACjC,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB,GAAG,GAAG,CAAC,OAAO,CAqOd"}
@@ -0,0 +1,5 @@
1
+ import type { PropsRuntime } from '@deepseek-ai/dsh-client-ui-slots';
2
+ type Props = PropsRuntime<'conversation.view'>;
3
+ export declare function LibraryWorkspace(props: Props): JSX.Element;
4
+ export {};
5
+ //# sourceMappingURL=LibraryWorkspace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LibraryWorkspace.d.ts","sourceRoot":"","sources":["../../../src/client/LibraryWorkspace.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AAapE,KAAK,KAAK,GAAG,YAAY,CAAC,mBAAmB,CAAC,CAAA;AAyI9C,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,GAAG,CAAC,OAAO,CA0X1D"}
@@ -0,0 +1,5 @@
1
+ import type { PropsRuntime } from '@deepseek-ai/dsh-client-ui-slots';
2
+ type Props = PropsRuntime<'conversation.view'>;
3
+ export declare function MyLibraries(_props: Props): JSX.Element;
4
+ export {};
5
+ //# sourceMappingURL=MyLibraries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MyLibraries.d.ts","sourceRoot":"","sources":["../../../src/client/MyLibraries.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AAEpE,KAAK,KAAK,GAAG,YAAY,CAAC,mBAAmB,CAAC,CAAA;AAkD9C,wBAAgB,WAAW,CAAC,MAAM,EAAE,KAAK,GAAG,GAAG,CAAC,OAAO,CAqEtD"}
@@ -0,0 +1,25 @@
1
+ import type { ReadingContext } from './prose.js';
2
+ interface Props {
3
+ relPath: string;
4
+ /** 目录树里展示的课件名(取 slides.md 前置 YAML 的 title)。 */
5
+ name: string;
6
+ /** 形如 `&cwd=…` 的查询串(可为空串)。 */
7
+ cwdParam: string;
8
+ onReadingChange: (ctx: ReadingContext) => void;
9
+ /** 「问 AI」出口(与 DocViewer 同一约定):不传则不显示问 AI 按钮。 */
10
+ onAsk?: (text: string) => void;
11
+ }
12
+ /**
13
+ * Slidev 课件播放器:宿主按需构建出静态 SPA(/aero-kb/slidev/<key>/),
14
+ * 右侧 iframe 嵌入放映视图;支持新窗口/演讲者视图/重新构建。
15
+ *
16
+ * 阅读标注:iframe 与宿主同源,因此可以直接读其中的选区、并在其上盖一层色块
17
+ * (见上面 DOM 段的说明)。标注按**页**锚定——课件的内容随翻页整体替换,
18
+ * 「文本偏移」在课件里没有意义,页号 + 原文才是稳定的坐标。
19
+ *
20
+ * 构建链缺失(no-toolchain)或构建失败时**不再停在「正在准备」转圈**:
21
+ * 展开「Slidev 环境体检」面板,逐项说明缺什么,并在用户确认后代为安装。
22
+ */
23
+ export declare function SlidevDeckViewer({ relPath, name, cwdParam, onReadingChange, onAsk }: Props): JSX.Element;
24
+ export {};
25
+ //# sourceMappingURL=SlidevDeckViewer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SlidevDeckViewer.d.ts","sourceRoot":"","sources":["../../../src/client/SlidevDeckViewer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAoBhD,UAAU,KAAK;IACb,OAAO,EAAE,MAAM,CAAA;IACf,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAA;IACZ,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,eAAe,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,IAAI,CAAA;IAC9C,gDAAgD;IAChD,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAC/B;AAwID;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,EAAE,KAAK,GAAG,GAAG,CAAC,OAAO,CA8bxG"}
@@ -0,0 +1,11 @@
1
+ interface Props {
2
+ /** 课件 slides.md 相对路径(用于追加该课件的主题/依赖检查)。 */
3
+ relPath: string;
4
+ /** 形如 `&cwd=…` 的查询串(可为空串)。 */
5
+ cwdParam: string;
6
+ /** 体检通过后回调(上层可据此重挂载播放器)。 */
7
+ onReady?: () => void;
8
+ }
9
+ export declare function SlidevEnvPanel({ relPath, cwdParam, onReady }: Props): JSX.Element;
10
+ export {};
11
+ //# sourceMappingURL=SlidevEnvPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SlidevEnvPanel.d.ts","sourceRoot":"","sources":["../../../src/client/SlidevEnvPanel.tsx"],"names":[],"mappings":"AAaA,UAAU,KAAK;IACb,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAA;IACf,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,4BAA4B;IAC5B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CACrB;AAgCD,wBAAgB,cAAc,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,KAAK,GAAG,GAAG,CAAC,OAAO,CA6JjF"}