@dongfangw/study-kit 0.0.0-stage → 0.1.1
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/LICENSE +671 -0
- package/README.md +28 -2
- package/cordis.patch.yml +3 -0
- package/ext/adoc-convert/index.mjs +62 -0
- package/lib/client.js +5917 -0
- package/lib/client.js.map +1 -0
- package/lib/docsplit.d.ts +73 -0
- package/lib/docsplit.d.ts.map +1 -0
- package/lib/docsplit.js +241 -0
- package/lib/docsplit.js.map +1 -0
- package/lib/git.d.ts +29 -0
- package/lib/git.d.ts.map +1 -0
- package/lib/git.js +305 -0
- package/lib/git.js.map +1 -0
- package/lib/index.d.ts +10 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +324 -0
- package/lib/index.js.map +1 -0
- package/lib/isolation.d.ts +33 -0
- package/lib/isolation.d.ts.map +1 -0
- package/lib/isolation.js +30 -0
- package/lib/isolation.js.map +1 -0
- package/lib/libraries.d.ts +36 -0
- package/lib/libraries.d.ts.map +1 -0
- package/lib/libraries.js +118 -0
- package/lib/libraries.js.map +1 -0
- package/lib/render.d.ts +22 -0
- package/lib/render.d.ts.map +1 -0
- package/lib/render.js +568 -0
- package/lib/render.js.map +1 -0
- package/lib/session.d.ts +23 -0
- package/lib/session.d.ts.map +1 -0
- package/lib/session.js +35 -0
- package/lib/session.js.map +1 -0
- package/lib/skills.d.ts +24 -0
- package/lib/skills.d.ts.map +1 -0
- package/lib/skills.js +111 -0
- package/lib/skills.js.map +1 -0
- package/lib/slidev.d.ts +13 -0
- package/lib/slidev.d.ts.map +1 -0
- package/lib/slidev.js +755 -0
- package/lib/slidev.js.map +1 -0
- package/lib/slidevBin.d.ts +7 -0
- package/lib/slidevBin.d.ts.map +1 -0
- package/lib/slidevBin.js +130 -0
- package/lib/slidevBin.js.map +1 -0
- package/lib/slidevEnv.d.ts +56 -0
- package/lib/slidevEnv.d.ts.map +1 -0
- package/lib/slidevEnv.js +702 -0
- package/lib/slidevEnv.js.map +1 -0
- package/lib/static.d.ts +8 -0
- package/lib/static.d.ts.map +1 -0
- package/lib/static.js +79 -0
- package/lib/static.js.map +1 -0
- package/lib/tools.d.ts +4 -0
- package/lib/tools.d.ts.map +1 -0
- package/lib/tools.js +160 -0
- package/lib/tools.js.map +1 -0
- package/lib/types/client/DocMarks.d.ts +76 -0
- package/lib/types/client/DocMarks.d.ts.map +1 -0
- package/lib/types/client/DocViewer.d.ts +21 -0
- package/lib/types/client/DocViewer.d.ts.map +1 -0
- package/lib/types/client/GitPanel.d.ts +20 -0
- package/lib/types/client/GitPanel.d.ts.map +1 -0
- package/lib/types/client/LibraryWorkspace.d.ts +5 -0
- package/lib/types/client/LibraryWorkspace.d.ts.map +1 -0
- package/lib/types/client/MyLibraries.d.ts +5 -0
- package/lib/types/client/MyLibraries.d.ts.map +1 -0
- package/lib/types/client/SlidevDeckViewer.d.ts +25 -0
- package/lib/types/client/SlidevDeckViewer.d.ts.map +1 -0
- package/lib/types/client/SlidevEnvPanel.d.ts +11 -0
- package/lib/types/client/SlidevEnvPanel.d.ts.map +1 -0
- package/lib/types/client/annotations.d.ts +161 -0
- package/lib/types/client/annotations.d.ts.map +1 -0
- package/lib/types/client/docEnhance.d.ts +55 -0
- package/lib/types/client/docEnhance.d.ts.map +1 -0
- package/lib/types/client/docKey.d.ts +22 -0
- package/lib/types/client/docKey.d.ts.map +1 -0
- package/lib/types/client/git.module.css.gen.d.ts +3 -0
- package/lib/types/client/git.module.css.gen.d.ts.map +1 -0
- package/lib/types/client/icons.d.ts +50 -0
- package/lib/types/client/icons.d.ts.map +1 -0
- package/lib/types/client/index.d.ts +12 -0
- package/lib/types/client/index.d.ts.map +1 -0
- package/lib/types/client/prose.d.ts +19 -0
- package/lib/types/client/prose.d.ts.map +1 -0
- package/lib/types/client/readerControls.d.ts +55 -0
- package/lib/types/client/readerControls.d.ts.map +1 -0
- package/lib/types/client/readerPrefs.d.ts +73 -0
- package/lib/types/client/readerPrefs.d.ts.map +1 -0
- package/lib/types/client/readingPos.d.ts +82 -0
- package/lib/types/client/readingPos.d.ts.map +1 -0
- package/lib/types/client/styles.module.css.gen.d.ts +3 -0
- package/lib/types/client/styles.module.css.gen.d.ts.map +1 -0
- package/lib/types/client/submitDraft.d.ts +29 -0
- package/lib/types/client/submitDraft.d.ts.map +1 -0
- package/lib/types/client/viewActive.d.ts +55 -0
- package/lib/types/client/viewActive.d.ts.map +1 -0
- package/lib/types/types.d.ts +351 -0
- package/lib/types/types.d.ts.map +1 -0
- package/lib/types.d.ts +351 -0
- package/lib/types.d.ts.map +1 -0
- package/lib/types.js +6 -0
- package/lib/types.js.map +1 -0
- package/package.json +101 -6
- package/skills/aero-concept-qa/SKILL.md +65 -0
- package/skills/aero-learning-path/SKILL.md +61 -0
- package/skills/aero-study-guide/SKILL.md +47 -0
- package/skills/aero-think/SKILL.md +59 -0
- package/skills/kb-organize/SKILL.md +73 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 把文字填进会话输入区并**真的发出去**(工作台各处的「问 AI」共用)。
|
|
3
|
+
*
|
|
4
|
+
* 两个坑,都是实测出来的:
|
|
5
|
+
*
|
|
6
|
+
* 1. `setDraft(text)` 之后不能立刻提交。草稿真身在 Lexical 编辑器里,`setDraft` 只是把文本
|
|
7
|
+
* 交给编辑器;要等编辑器完成一次更新、草稿回到输入状态之后才算"在输入框里"。同一个 tick
|
|
8
|
+
* 里紧跟 `submit()`,提交机读到的还是空草稿,于是既不发送也不报错——现象就是"点了按钮,
|
|
9
|
+
* 输入框里有字,但消息发不出去"。
|
|
10
|
+
*
|
|
11
|
+
* 2. 即使等草稿发布之后再调 `inputActions.submit()`,在工作台视图里也**仍然是空操作**
|
|
12
|
+
* (实测:输入框里明明有草稿,调 submit 后既不发送、也没有任何提示;而把光标点进输入框
|
|
13
|
+
* 按一次回车,DSH 立刻正常走发送流程)。原因在 DSH 的输入机内部(provide 出来的动作面
|
|
14
|
+
* 与当前挂载的输入外壳不是同一个),插件侧改不动。
|
|
15
|
+
*
|
|
16
|
+
* 因此这里采用"草稿已发布 → 在输入框里按回车"的路径:这正是用户自己的发送手势,实测有效。
|
|
17
|
+
* 只有连输入框都找不到时,才退回官方 `submit()`。
|
|
18
|
+
*
|
|
19
|
+
* @param actions - 会话输入区动作(`inputActions`),仅作为最后的兜底。
|
|
20
|
+
* @param text - 刚填进去的文本(用于在 DOM 里认出"装着这段草稿的那个输入框")。
|
|
21
|
+
* @param readDraft - 读取"已发布草稿"的函数,通常是 `() => draftRef.current`。
|
|
22
|
+
* @param tries - 最多轮询次数。
|
|
23
|
+
* @param intervalMs - 轮询间隔(毫秒)。
|
|
24
|
+
*/
|
|
25
|
+
export interface DraftActions {
|
|
26
|
+
submit(): void;
|
|
27
|
+
}
|
|
28
|
+
export declare function sendFilledDraft(actions: DraftActions, text: string, readDraft: () => string, tries?: number, intervalMs?: number): void;
|
|
29
|
+
//# sourceMappingURL=submitDraft.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"submitDraft.d.ts","sourceRoot":"","sources":["../../../src/client/submitDraft.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,IAAI,IAAI,CAAA;CACf;AAgCD,wBAAgB,eAAe,CAC7B,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,MAAM,EACvB,KAAK,SAAK,EACV,UAAU,SAAK,GACd,IAAI,CAgBN"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 视图可见性门控(viewActive)——保活(keep-alive)下把隐藏标签的活停下来。
|
|
3
|
+
*
|
|
4
|
+
* ## 为什么需要
|
|
5
|
+
*
|
|
6
|
+
* 宿主给会话视图打了本地硬化补丁(dsh-client-ui-conversation 的 `wdf2026-keepalive`):
|
|
7
|
+
* 访问过的标签都常驻 DOM,非激活者 `display:none`。好处是切回来还是原来那一份内容
|
|
8
|
+
* (已打开的文档、目录树、Slidev 播放器、滚动位置都在);代价是**隐藏的工作台仍在跑 JS**:
|
|
9
|
+
* · 仿真组件的 `setInterval(calc, 500)` / `requestAnimationFrame` 循环照转(60fps 的
|
|
10
|
+
* 画布动画在后台继续算);
|
|
11
|
+
* · Git 状态每 60s 拉一次 `/aero-kb/git/repos`(一次 git 调用 = 若干子进程)。
|
|
12
|
+
* 于是"在对话里打字/滚动"会跟后台的隐藏标签抢主线程——这也是「插件整体卡顿」的一部分。
|
|
13
|
+
*
|
|
14
|
+
* ## 做法
|
|
15
|
+
*
|
|
16
|
+
* 每个工作台绑一个门(gate):`bind(根元素)` 之后,门用 `checkVisibility()` 判断根元素
|
|
17
|
+
* 是否真的被渲染(祖先 `display:none` 时为 false;不依赖宿主一定带 data-* 标记)。
|
|
18
|
+
* · `interval(fn, ms)`:到点先问门,隐藏就跳过本次 tick;
|
|
19
|
+
* · `raf(cb)` / `cancelRaf(id)`:隐藏时**不排帧**、把回调挂起,可见后由看门狗续上。
|
|
20
|
+
* 严格说:切换发生的那一帧可能已经排进队列(隐藏前就算好的),所以"停住"的准确
|
|
21
|
+
* 语义是**最多再跑一帧**——随后立刻挂起,不再以 60fps 空转。
|
|
22
|
+
*
|
|
23
|
+
* ## 关键取舍
|
|
24
|
+
*
|
|
25
|
+
* 1. **只在"确证隐藏"时暂停**:没绑定元素、元素已卸载、浏览器不支持 `checkVisibility`
|
|
26
|
+
* 且量不到盒子时,一律按"可见"处理——宁可多算,不可让画面停死。
|
|
27
|
+
* 2. **自纠错,不依赖事件**:可见性采样节流 250ms,由 tick 与看门狗自己驱动。宿主是
|
|
28
|
+
* display 切换、React 重渲染还是整棵树替换,都不影响判定。
|
|
29
|
+
* 3. **挂起的 rAF 必须有唤醒**:隐藏期间没人调 `raf()`,所以挂起后起一个 250ms 的
|
|
30
|
+
* 看门狗轮询;一旦可见就把挂起的回调续排。看门狗只在有挂起项时存在。
|
|
31
|
+
* 4. **id 语义与浏览器一致**:`interval` 返回真实 interval id(可直接 `clearInterval`);
|
|
32
|
+
* `raf` 返回门自己的 id(用 `cancelRaf` 清),回调里再次 `raf()` 会拿到新 id——
|
|
33
|
+
* 与"每帧重新 `requestAnimationFrame(loop)`"的写法兼容。
|
|
34
|
+
*/
|
|
35
|
+
export interface ViewGate {
|
|
36
|
+
/** 绑定工作台根元素(传 null 解绑)。绑定后按该元素的可见性判定。 */
|
|
37
|
+
bind(el: Element | null): void;
|
|
38
|
+
/** 当前是否可见(内部节流采样)。 */
|
|
39
|
+
isActive(): boolean;
|
|
40
|
+
/** 可见时才 tick 的 setInterval;返回浏览器 interval id,可直接 clearInterval。 */
|
|
41
|
+
interval(fn: () => void, ms: number): number;
|
|
42
|
+
/** 可见时才排帧的 requestAnimationFrame;返回门 id,用 cancelRaf 取消。 */
|
|
43
|
+
raf(cb: FrameRequestCallback): number;
|
|
44
|
+
/** 取消一个 raf 门 id(重复取消、取消已完成的 id 都安全)。 */
|
|
45
|
+
cancelRaf(id: number): void;
|
|
46
|
+
/** 正在挂起等待可见的帧数(诊断用;测试与探针断言可见性) */
|
|
47
|
+
pendingFrames(): number;
|
|
48
|
+
}
|
|
49
|
+
/** 创建一个独立的门(每个工作台一个,互不影响)。 */
|
|
50
|
+
export declare function createViewGate(): ViewGate;
|
|
51
|
+
/** 仿真工作台的门(SimWorkspace 绑定根元素;各 sim 的定时器/帧循环用它)。 */
|
|
52
|
+
export declare const simViewGate: ViewGate;
|
|
53
|
+
/** 学习资料工作台的门(Git 轮询等后台活用它)。 */
|
|
54
|
+
export declare const libraryViewGate: ViewGate;
|
|
55
|
+
//# sourceMappingURL=viewActive.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"viewActive.d.ts","sourceRoot":"","sources":["../../../src/client/viewActive.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAaH,MAAM,WAAW,QAAQ;IACvB,yCAAyC;IACzC,IAAI,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI,CAAA;IAC9B,sBAAsB;IACtB,QAAQ,IAAI,OAAO,CAAA;IACnB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,EAAE,MAAM,IAAI,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IAC5C,2DAA2D;IAC3D,GAAG,CAAC,EAAE,EAAE,oBAAoB,GAAG,MAAM,CAAA;IACrC,yCAAyC;IACzC,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,kCAAkC;IAClC,aAAa,IAAI,MAAM,CAAA;CACxB;AAED,8BAA8B;AAC9B,wBAAgB,cAAc,IAAI,QAAQ,CAkFzC;AAED,oDAAoD;AACpD,eAAO,MAAM,WAAW,UAAmB,CAAA;AAE3C,+BAA+B;AAC/B,eAAO,MAAM,eAAe,UAAmB,CAAA"}
|
|
@@ -0,0 +1,351 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 共享类型(宿主 + 客户端共用)。宿主负责生成 /aero-kb 的响应,
|
|
3
|
+
* 客户端消费这些结构渲染 UI。
|
|
4
|
+
*/
|
|
5
|
+
/** 目录树节点(JSON 序列化,跨进程传输)。 */
|
|
6
|
+
export interface KbTreeNode {
|
|
7
|
+
/** 稳定唯一 id(基于 KB 相对路径)。 */
|
|
8
|
+
readonly id: string;
|
|
9
|
+
/** 显示名。 */
|
|
10
|
+
readonly name: string;
|
|
11
|
+
/** 节点类型。 */
|
|
12
|
+
readonly type: 'group' | 'doc' | 'deck';
|
|
13
|
+
/** KB 根目录相对路径(doc/deck 为文件路径;group 为目录路径)。 */
|
|
14
|
+
readonly path: string;
|
|
15
|
+
/** 扩展名(doc 为 md/adoc,deck 为 slides.md)。 */
|
|
16
|
+
readonly ext?: string;
|
|
17
|
+
/** 文件字节大小。 */
|
|
18
|
+
readonly size?: number;
|
|
19
|
+
/** 子节点(group)。 */
|
|
20
|
+
readonly children?: readonly KbTreeNode[];
|
|
21
|
+
}
|
|
22
|
+
/** 目录接口响应。 */
|
|
23
|
+
export interface CatalogResponse {
|
|
24
|
+
/** 实际解析出的 KB 根目录(绝对路径,供调试/展示)。 */
|
|
25
|
+
readonly root: string;
|
|
26
|
+
readonly generatedAt: number;
|
|
27
|
+
/** 各知识库分组的顶层树。 */
|
|
28
|
+
readonly groups: readonly KbTreeNode[];
|
|
29
|
+
/** 目录解析失败 / 未找到知识库时的提示(供 UI 直接展示)。 */
|
|
30
|
+
readonly error?: string;
|
|
31
|
+
/** 当前实例是否为教师模式(AERO_TEACHER_MODE=1):备课工作台据此决定是否可用。 */
|
|
32
|
+
readonly teacherMode?: boolean;
|
|
33
|
+
}
|
|
34
|
+
/** 文档标题/章节锚点(用于阅读上下文跟踪)。 */
|
|
35
|
+
export interface DocSection {
|
|
36
|
+
/** 标题锚点 id(已注入到 HTML 的 heading 上)。 */
|
|
37
|
+
readonly id: string;
|
|
38
|
+
/** 标题文本。 */
|
|
39
|
+
readonly title: string;
|
|
40
|
+
/** 标题层级 1-6。 */
|
|
41
|
+
readonly level: number;
|
|
42
|
+
}
|
|
43
|
+
/** 超大文档的分段信息(段数 > 1 时才随渲染结果返回)。 */
|
|
44
|
+
export interface DocSegmentsInfo {
|
|
45
|
+
/** 段序号(0 起)。 */
|
|
46
|
+
readonly index: number;
|
|
47
|
+
/** 导航标题(该段首个标题,或「第 N 段」)。 */
|
|
48
|
+
readonly title: string;
|
|
49
|
+
/** 该段源文本字符数(用于导航提示)。 */
|
|
50
|
+
readonly chars: number;
|
|
51
|
+
}
|
|
52
|
+
/** md / adoc 文档渲染结果。 */
|
|
53
|
+
export interface DocRenderResult {
|
|
54
|
+
readonly ok: boolean;
|
|
55
|
+
readonly kind: 'md' | 'adoc';
|
|
56
|
+
readonly title: string;
|
|
57
|
+
/** 已渲染的正文 HTML(含 KaTeX 数学,图片路径已重写为 /aero-kb/asset)。 */
|
|
58
|
+
readonly html: string;
|
|
59
|
+
/** 标题锚点列表(按文档顺序)。 */
|
|
60
|
+
readonly sections: readonly DocSection[];
|
|
61
|
+
/** 当前是第几段(仅分段文档有;0 起)。 */
|
|
62
|
+
readonly seg?: number;
|
|
63
|
+
/** 全部分段(仅分段文档有;> 1 段时客户端显示段落导航)。 */
|
|
64
|
+
readonly segments?: readonly DocSegmentsInfo[];
|
|
65
|
+
readonly error?: string;
|
|
66
|
+
}
|
|
67
|
+
/** Slidev slides.md 渲染结果(每页一个 HTML 字符串)。 */
|
|
68
|
+
export interface SlideRenderResult {
|
|
69
|
+
readonly ok: boolean;
|
|
70
|
+
readonly title: string;
|
|
71
|
+
/** 每页幻灯片渲染后的 HTML。 */
|
|
72
|
+
readonly slides: readonly string[];
|
|
73
|
+
readonly error?: string;
|
|
74
|
+
}
|
|
75
|
+
/** GET /aero-kb/source?p=<rel> 响应:源文档原文(供编辑器加载)。 */
|
|
76
|
+
export interface PrepSourceResponse {
|
|
77
|
+
readonly ok: boolean;
|
|
78
|
+
readonly relPath: string;
|
|
79
|
+
/** 源文档原始文本。 */
|
|
80
|
+
readonly text: string;
|
|
81
|
+
/** 文件字节大小。 */
|
|
82
|
+
readonly size?: number;
|
|
83
|
+
readonly error?: string;
|
|
84
|
+
}
|
|
85
|
+
/** POST /aero-kb/save 响应:直接保存编辑后的源文档。 */
|
|
86
|
+
export interface PrepSaveResponse {
|
|
87
|
+
readonly ok: boolean;
|
|
88
|
+
readonly relPath: string;
|
|
89
|
+
/** 写入的字节数。 */
|
|
90
|
+
readonly bytes?: number;
|
|
91
|
+
readonly error?: string;
|
|
92
|
+
}
|
|
93
|
+
/** 案例参数定义(驱动客户端表单自动生成)。 */
|
|
94
|
+
export interface SimCaseParam {
|
|
95
|
+
readonly name: string;
|
|
96
|
+
readonly label: string;
|
|
97
|
+
readonly type: 'number' | 'select';
|
|
98
|
+
readonly default: number | string;
|
|
99
|
+
readonly min?: number;
|
|
100
|
+
readonly max?: number;
|
|
101
|
+
readonly step?: number;
|
|
102
|
+
readonly unit?: string;
|
|
103
|
+
readonly options?: readonly string[];
|
|
104
|
+
}
|
|
105
|
+
/** 来源标注。 */
|
|
106
|
+
export interface SimCaseSource {
|
|
107
|
+
readonly name: string;
|
|
108
|
+
readonly url?: string;
|
|
109
|
+
}
|
|
110
|
+
/** 案例在本章教学中的角色;与 kind(技术交付形态)相互独立。 */
|
|
111
|
+
export type SimLearningRole = 'core' | 'support' | 'application' | 'extension' | 'verification';
|
|
112
|
+
/** 计算/外链类案例的探究引导:先作判断,再用可观察证据归纳规律。 */
|
|
113
|
+
export interface SimInquiry {
|
|
114
|
+
readonly predict: string;
|
|
115
|
+
readonly vary: string;
|
|
116
|
+
readonly observe: string;
|
|
117
|
+
readonly conclude: string;
|
|
118
|
+
}
|
|
119
|
+
/** 一个仿真案例。 */
|
|
120
|
+
export interface SimCase {
|
|
121
|
+
readonly id: string;
|
|
122
|
+
readonly title: string;
|
|
123
|
+
readonly chapter: number;
|
|
124
|
+
/** A=静态出图 B=纯前端 C=长驻应用(二期) D=外部链接 E=离线自托管 HTML5 仿真(本地静态资源,无网可用) */
|
|
125
|
+
readonly kind: 'A' | 'B' | 'C' | 'D' | 'E';
|
|
126
|
+
readonly status: 'ready' | 'planned';
|
|
127
|
+
readonly adapter?: string;
|
|
128
|
+
readonly jsEntry?: string;
|
|
129
|
+
/** kind B:inline 进入 DSH 主客户端 bundle;iframe 从 embedFile 隔离加载重型依赖。 */
|
|
130
|
+
readonly clientRender?: 'inline' | 'iframe';
|
|
131
|
+
/** kind B:单文件自包含 HTML 内嵌构建(相对 sim/embed/,如 mdGas/index.html)。
|
|
132
|
+
* 由 sim/embed-build.mjs 生成:React/CSS 全内联、零外网零后端,可直接复制进
|
|
133
|
+
* Slidev 课件 public/sims/<id>/ 后以 iframe 相对路径内嵌(原则 P1)。 */
|
|
134
|
+
readonly embedFile?: string;
|
|
135
|
+
readonly appDir?: string;
|
|
136
|
+
/** kind C:应用入口脚本文件名(位于 appDir 目录内),缺省回退 app.py。 */
|
|
137
|
+
readonly appEntry?: string;
|
|
138
|
+
readonly webUrl?: string;
|
|
139
|
+
/** kind E:本地静态资源目录(相对 sim/phet/,如 gases-intro)。 */
|
|
140
|
+
readonly localDir?: string;
|
|
141
|
+
/** kind E:入口 HTML 文件名(位于 localDir 目录内)。 */
|
|
142
|
+
readonly entryHtml?: string;
|
|
143
|
+
readonly embed?: boolean;
|
|
144
|
+
readonly params?: readonly SimCaseParam[];
|
|
145
|
+
readonly description?: string;
|
|
146
|
+
readonly source?: SimCaseSource;
|
|
147
|
+
/** 教学层级:核心探究/理解支撑/工程应用/拓展前瞻/课后核验。 */
|
|
148
|
+
readonly learningRole?: SimLearningRole;
|
|
149
|
+
/** 页面顶部的“先猜—调整—观察—归纳”探究任务卡。 */
|
|
150
|
+
readonly inquiry?: SimInquiry;
|
|
151
|
+
}
|
|
152
|
+
/** 案例目录接口响应。 */
|
|
153
|
+
export interface SimCatalogResponse {
|
|
154
|
+
readonly ok: boolean;
|
|
155
|
+
/** 按章节升序排列的全部案例。 */
|
|
156
|
+
readonly cases: readonly SimCase[];
|
|
157
|
+
readonly error?: string;
|
|
158
|
+
}
|
|
159
|
+
/** Tier A 运行结果中的一张图。 */
|
|
160
|
+
export interface SimImage {
|
|
161
|
+
readonly file: string;
|
|
162
|
+
readonly title: string;
|
|
163
|
+
/** 宿主注入的可访问 URL(/aero-sim/out/<runId>/<file>)。 */
|
|
164
|
+
readonly url: string;
|
|
165
|
+
}
|
|
166
|
+
/** Tier A 运行结果中的一张表。 */
|
|
167
|
+
export interface SimTable {
|
|
168
|
+
readonly title: string;
|
|
169
|
+
readonly header: readonly string[];
|
|
170
|
+
readonly rows: readonly (readonly string[])[];
|
|
171
|
+
}
|
|
172
|
+
/** Tier A 运行接口响应。 */
|
|
173
|
+
export interface SimRunResponse {
|
|
174
|
+
readonly ok: boolean;
|
|
175
|
+
readonly caseId: string;
|
|
176
|
+
readonly runId?: string;
|
|
177
|
+
readonly cached?: boolean;
|
|
178
|
+
readonly images: readonly SimImage[];
|
|
179
|
+
readonly tables: readonly SimTable[];
|
|
180
|
+
readonly notes?: string;
|
|
181
|
+
/** 可信适配器返回的结构化工件(交互前端可选消费,限制为 JSON 值)。 */
|
|
182
|
+
readonly data?: unknown;
|
|
183
|
+
readonly error?: string;
|
|
184
|
+
}
|
|
185
|
+
/** Tier C 应用启动接口响应(POST /aero-sim/app/<id>/start)。 */
|
|
186
|
+
export interface SimAppStartResponse {
|
|
187
|
+
readonly ok: boolean;
|
|
188
|
+
readonly id: string;
|
|
189
|
+
/** 启动成功时的嵌入地址(/aero-sim/app/<id>/)。 */
|
|
190
|
+
readonly url?: string;
|
|
191
|
+
readonly error?: string;
|
|
192
|
+
}
|
|
193
|
+
/** Tier C 应用状态(GET /aero-sim/app/<id>/status)。 */
|
|
194
|
+
export interface SimAppStatusResponse {
|
|
195
|
+
readonly ok: boolean;
|
|
196
|
+
readonly id: string;
|
|
197
|
+
readonly state: 'stopped' | 'starting' | 'running' | 'error';
|
|
198
|
+
readonly port?: number;
|
|
199
|
+
readonly url?: string;
|
|
200
|
+
readonly idleSeconds?: number;
|
|
201
|
+
readonly error?: string;
|
|
202
|
+
}
|
|
203
|
+
/** 一条 git 提交。 */
|
|
204
|
+
export interface GitCommit {
|
|
205
|
+
/** 短 hash(前 10 位)。 */
|
|
206
|
+
readonly hash: string;
|
|
207
|
+
readonly message: string;
|
|
208
|
+
readonly author: string;
|
|
209
|
+
/** ISO 8601 提交时间。 */
|
|
210
|
+
readonly date: string;
|
|
211
|
+
}
|
|
212
|
+
/** 一条工作区改动(porcelain XY + 路径)。 */
|
|
213
|
+
export interface GitChange {
|
|
214
|
+
/** 文件路径(重命名显示为 old → new)。 */
|
|
215
|
+
readonly path: string;
|
|
216
|
+
/** XY 状态码(M/A/D/R/?? 等)。 */
|
|
217
|
+
readonly status: string;
|
|
218
|
+
/** 是否已暂存。 */
|
|
219
|
+
readonly staged: boolean;
|
|
220
|
+
}
|
|
221
|
+
/** 四仓概况列表项。 */
|
|
222
|
+
export interface GitRepoSummary {
|
|
223
|
+
readonly id: string;
|
|
224
|
+
readonly name: string;
|
|
225
|
+
readonly dir: string;
|
|
226
|
+
readonly branch: string;
|
|
227
|
+
readonly remote: string;
|
|
228
|
+
readonly ahead: number;
|
|
229
|
+
readonly behind: number;
|
|
230
|
+
readonly dirty: boolean;
|
|
231
|
+
readonly lastCommit: GitCommit | null;
|
|
232
|
+
}
|
|
233
|
+
/** GET /aero-kb/git/repos 响应。 */
|
|
234
|
+
export interface GitReposResponse {
|
|
235
|
+
readonly ok: boolean;
|
|
236
|
+
readonly repos: readonly GitRepoSummary[];
|
|
237
|
+
readonly error?: string;
|
|
238
|
+
}
|
|
239
|
+
/** GET /aero-kb/git/<id>/status 响应。 */
|
|
240
|
+
export interface GitStatusResponse {
|
|
241
|
+
readonly ok: boolean;
|
|
242
|
+
readonly id: string;
|
|
243
|
+
readonly branch: string;
|
|
244
|
+
readonly upstream: string;
|
|
245
|
+
readonly ahead: number;
|
|
246
|
+
readonly behind: number;
|
|
247
|
+
readonly changes: readonly GitChange[];
|
|
248
|
+
readonly log: readonly GitCommit[];
|
|
249
|
+
readonly error?: string;
|
|
250
|
+
}
|
|
251
|
+
/** POST /aero-kb/git/<id>/fetch|pull|push|commit 响应。 */
|
|
252
|
+
export interface GitOpResponse {
|
|
253
|
+
readonly ok: boolean;
|
|
254
|
+
readonly op: 'fetch' | 'pull' | 'push' | 'commit';
|
|
255
|
+
readonly id: string;
|
|
256
|
+
/** git 子进程输出(stdout+stderr 合并,最多保留末尾 256KB)。 */
|
|
257
|
+
readonly output: string;
|
|
258
|
+
/** 操作后的最新状态(成功时)。 */
|
|
259
|
+
readonly summary?: GitStatusResponse;
|
|
260
|
+
readonly error?: string;
|
|
261
|
+
}
|
|
262
|
+
/** GET /aero-kb/slidev/meta?p=<slides.md 相对路径> 响应。 */
|
|
263
|
+
export interface SlidevMetaResponse {
|
|
264
|
+
readonly ok: boolean;
|
|
265
|
+
/** p 指向的确实是 Slidev 课件(slides.md)。 */
|
|
266
|
+
readonly isDeck: boolean;
|
|
267
|
+
readonly relPath: string;
|
|
268
|
+
/** 构建/静态资源在 /aero-kb/slidev/<key>/ 下托管时的 key。 */
|
|
269
|
+
readonly key: string;
|
|
270
|
+
readonly status: 'ready' | 'building' | 'queued' | 'error' | 'not-deck' | 'no-toolchain';
|
|
271
|
+
/** 构建完成时间戳(毫秒),用于 iframe 缓存击穿;未构建时为 0。 */
|
|
272
|
+
readonly builtAt: number;
|
|
273
|
+
readonly slidesUrl: string;
|
|
274
|
+
/** 演讲者视图 URL;构建产物不含 presenter.html 时为空字符串。 */
|
|
275
|
+
readonly presenterUrl: string;
|
|
276
|
+
readonly error: string;
|
|
277
|
+
/** 最近一次构建日志的末尾片段(失败诊断用)。 */
|
|
278
|
+
readonly log: string;
|
|
279
|
+
/** 构建链就绪时的 @slidev/cli 版本;未知为空串。 */
|
|
280
|
+
readonly slidevVersion?: string;
|
|
281
|
+
/** 构建链缺依赖时的体检快照(前端据此直接渲染体检面板,无需再请求一次)。 */
|
|
282
|
+
readonly env?: SlidevEnvReport | undefined;
|
|
283
|
+
}
|
|
284
|
+
/** 单项体检结论。 */
|
|
285
|
+
export interface SlidevEnvCheck {
|
|
286
|
+
readonly id: string;
|
|
287
|
+
readonly label: string;
|
|
288
|
+
readonly status: 'ok' | 'warn' | 'fail';
|
|
289
|
+
/** 实测值/问题描述。 */
|
|
290
|
+
readonly detail: string;
|
|
291
|
+
/** 修复建议(可含命令)。 */
|
|
292
|
+
readonly hint: string;
|
|
293
|
+
/** 探测到的版本号(无则空串)。 */
|
|
294
|
+
readonly version: string;
|
|
295
|
+
}
|
|
296
|
+
/** 一个需要用户同意的修复动作。 */
|
|
297
|
+
export interface SlidevEnvAction {
|
|
298
|
+
readonly id: string;
|
|
299
|
+
readonly label: string;
|
|
300
|
+
/** 为什么需要它。 */
|
|
301
|
+
readonly reason: string;
|
|
302
|
+
/** 将执行的命令(展示给用户)。 */
|
|
303
|
+
readonly command: string;
|
|
304
|
+
/** 执行目录;空串表示宿主机当前工作目录。 */
|
|
305
|
+
readonly cwd: string;
|
|
306
|
+
/** global=写宿主机全局环境;workspace=只写仓库内目录。 */
|
|
307
|
+
readonly scope: 'global' | 'workspace';
|
|
308
|
+
/** 会写入哪里(给用户看的范围说明)。 */
|
|
309
|
+
readonly writes: string;
|
|
310
|
+
/** 同意票据:POST 时原样带回,服务端校验「动作未被篡改且经用户同意」。 */
|
|
311
|
+
readonly token: string;
|
|
312
|
+
readonly disabled: boolean;
|
|
313
|
+
readonly disabledReason: string;
|
|
314
|
+
}
|
|
315
|
+
/** 环境体检报告。 */
|
|
316
|
+
export interface SlidevEnvReport {
|
|
317
|
+
readonly ok: boolean;
|
|
318
|
+
/** 课件构建链是否就绪(fail 项都会导致构建失败;warn 不影响)。 */
|
|
319
|
+
readonly ready: boolean;
|
|
320
|
+
readonly platform: string;
|
|
321
|
+
readonly nodeVersion: string;
|
|
322
|
+
readonly checks: readonly SlidevEnvCheck[];
|
|
323
|
+
/** 当前缺失项的修复动作(可为空)。 */
|
|
324
|
+
readonly actions: readonly SlidevEnvAction[];
|
|
325
|
+
/** 一句话结论。 */
|
|
326
|
+
readonly summary: string;
|
|
327
|
+
/** 体检时间戳(毫秒)。 */
|
|
328
|
+
readonly probedAt: number;
|
|
329
|
+
}
|
|
330
|
+
/** 安装任务状态(进行中/结果概要)。 */
|
|
331
|
+
export interface SlidevEnvInstallState {
|
|
332
|
+
readonly running: boolean;
|
|
333
|
+
readonly actionId: string;
|
|
334
|
+
readonly startedAt: number;
|
|
335
|
+
readonly finishedAt: number;
|
|
336
|
+
readonly output: string;
|
|
337
|
+
readonly code: number | null;
|
|
338
|
+
readonly error: string;
|
|
339
|
+
}
|
|
340
|
+
/** POST /aero-kb/slidev/env 成功响应。 */
|
|
341
|
+
export interface SlidevEnvFixResult {
|
|
342
|
+
readonly ok: boolean;
|
|
343
|
+
readonly actionId: string;
|
|
344
|
+
readonly command: string;
|
|
345
|
+
readonly code: number | null;
|
|
346
|
+
readonly output: string;
|
|
347
|
+
readonly error: string;
|
|
348
|
+
/** 安装后的复检报告。 */
|
|
349
|
+
readonly report: SlidevEnvReport;
|
|
350
|
+
}
|
|
351
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|