@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
package/lib/session.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { resolveWorkspace } from "./libraries.js";
|
|
2
|
+
const TTL_MS = 30_000;
|
|
3
|
+
const cache = new Map();
|
|
4
|
+
/** 当前身份:教师 profile 还是学生。旧环境变量 `AERO_TEACHER_MODE` 继续认(兼容期)。 */
|
|
5
|
+
export function currentViewer() {
|
|
6
|
+
const explicit = (process.env.AERO_VIEWER ?? '').trim().toLowerCase();
|
|
7
|
+
if (explicit === 'teacher' || explicit === 'student')
|
|
8
|
+
return explicit;
|
|
9
|
+
const legacy = (process.env.AERO_TEACHER_MODE ?? '').trim().toLowerCase();
|
|
10
|
+
return legacy === '1' || legacy === 'true' || legacy === 'yes' ? 'teacher' : 'student';
|
|
11
|
+
}
|
|
12
|
+
/** 取(或重算)某会话 cwd 的解析结果。解析不到返回 null。 */
|
|
13
|
+
export function resolveFor(cwd, force = false) {
|
|
14
|
+
const key = cwd === null || cwd === undefined || cwd === '' ? '<process>' : cwd;
|
|
15
|
+
const cached = cache.get(key);
|
|
16
|
+
if (!force && cached !== undefined && Date.now() - cached.at < TTL_MS)
|
|
17
|
+
return cached;
|
|
18
|
+
const workspace = resolveWorkspace(cwd);
|
|
19
|
+
if (workspace === null) {
|
|
20
|
+
cache.delete(key);
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
const resolved = { cwd: key, viewer: currentViewer(), workspace, at: Date.now() };
|
|
24
|
+
cache.set(key, resolved);
|
|
25
|
+
return resolved;
|
|
26
|
+
}
|
|
27
|
+
/** 只读缓存(工具里用;不触发解析)。 */
|
|
28
|
+
export function lookResolved(cwd) {
|
|
29
|
+
return resolveFor(cwd, false);
|
|
30
|
+
}
|
|
31
|
+
/** 强制清空(`libraries.yaml` 被改动、或 pull 成功后调用)。 */
|
|
32
|
+
export function invalidate() {
|
|
33
|
+
cache.clear();
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,gBAAgB,EAA0B,MAAM,gBAAgB,CAAA;AASzE,MAAM,MAAM,GAAG,MAAM,CAAA;AACrB,MAAM,KAAK,GAAG,IAAI,GAAG,EAAoB,CAAA;AAEzC,+DAA+D;AAC/D,MAAM,UAAU,aAAa;IAC3B,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IACrE,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,QAAkB,CAAA;IAC/E,MAAM,MAAM,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IACzE,OAAO,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAA;AACxF,CAAC;AAED,uCAAuC;AACvC,MAAM,UAAU,UAAU,CAAC,GAA8B,EAAE,KAAK,GAAG,KAAK;IACtE,MAAM,GAAG,GAAG,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAA;IAC/E,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC7B,IAAI,CAAC,KAAK,IAAI,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM;QAAE,OAAO,MAAM,CAAA;IACpF,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAA;IACvC,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACvB,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACjB,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,QAAQ,GAAa,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAA;IAC3F,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;IACxB,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,wBAAwB;AACxB,MAAM,UAAU,YAAY,CAAC,GAA8B;IACzD,OAAO,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;AAC/B,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,UAAU;IACxB,KAAK,CAAC,KAAK,EAAE,CAAA;AACf,CAAC"}
|
package/lib/skills.d.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Context } from '@deepseek-ai/cordis';
|
|
2
|
+
/** 从 SKILL.md 抽 frontmatter(只认 `key: value`,够用且不引 YAML)。 */
|
|
3
|
+
export declare function parseSkillFrontmatter(source: string): {
|
|
4
|
+
name?: string;
|
|
5
|
+
description?: string;
|
|
6
|
+
body: string;
|
|
7
|
+
};
|
|
8
|
+
export interface BundledSkill {
|
|
9
|
+
name: string;
|
|
10
|
+
description: string;
|
|
11
|
+
content: string;
|
|
12
|
+
file: string;
|
|
13
|
+
}
|
|
14
|
+
/** 读包内 `skills/` 目录。 */
|
|
15
|
+
export declare function loadBundledSkills(skillsDir: string): BundledSkill[];
|
|
16
|
+
/**
|
|
17
|
+
* 注册技能。返回已注册的名字数组(供冒烟与日志用)。
|
|
18
|
+
* 注意:调用方应把它放进 `ctx.effect()`,返回的 disposer 负责注销。
|
|
19
|
+
*/
|
|
20
|
+
export declare function registerBundledSkills(ctx: Context, skillsDir: string): {
|
|
21
|
+
names: string[];
|
|
22
|
+
dispose: () => void;
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=skills.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAElD,4DAA4D;AAC5D,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAc3G;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;CACb;AAED,wBAAwB;AACxB,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,EAAE,CAkBnE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,CA6C/G"}
|
package/lib/skills.js
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 运行时技能注册:把包内 `skills/<name>/SKILL.md` 注册进 DSH 的技能注册表。
|
|
3
|
+
*
|
|
4
|
+
* 为什么不靠 `.dsh/skills` 的符号链接:
|
|
5
|
+
* - 链接是**本地状态**,学生 clone 下来没有;随包注册则装完即用;
|
|
6
|
+
* - Windows 上创建 junction 需要脚本与权限,学校机房常常卡在这一步;
|
|
7
|
+
* - 优先级 `project(100) > runtime > user(400)`:项目里的同名技能仍可覆盖我们,
|
|
8
|
+
* 所以"套件自带 + 课程本地改写"能共存(P5 师生共创的机制基础)。
|
|
9
|
+
*
|
|
10
|
+
* 失败策略:**best-effort**。`ctx.skills` 不存在(老 profile)或某份技能解析失败时只告警,
|
|
11
|
+
* 绝不让插件 apply 失败——阅读器比技能重要。
|
|
12
|
+
*/
|
|
13
|
+
import { existsSync, readFileSync, readdirSync } from 'node:fs';
|
|
14
|
+
import path from 'node:path';
|
|
15
|
+
/** 从 SKILL.md 抽 frontmatter(只认 `key: value`,够用且不引 YAML)。 */
|
|
16
|
+
export function parseSkillFrontmatter(source) {
|
|
17
|
+
const m = /^---\r?\n([\s\S]*?)\r?\n---\r?\n?/.exec(source);
|
|
18
|
+
if (m === null)
|
|
19
|
+
return { body: source };
|
|
20
|
+
const out = { body: source.slice((m[0] ?? '').length) };
|
|
21
|
+
for (const line of (m[1] ?? '').split(/\r?\n/)) {
|
|
22
|
+
const kv = /^([A-Za-z_][A-Za-z0-9_]*):\s*(.*)$/.exec(line);
|
|
23
|
+
if (kv === null)
|
|
24
|
+
continue;
|
|
25
|
+
const key = kv[1] ?? '';
|
|
26
|
+
const raw = kv[2] ?? '';
|
|
27
|
+
const value = raw.replace(/^['"]|['"]$/g, '').trim();
|
|
28
|
+
if (key === 'name')
|
|
29
|
+
out.name = value;
|
|
30
|
+
if (key === 'description')
|
|
31
|
+
out.description = value;
|
|
32
|
+
}
|
|
33
|
+
return out;
|
|
34
|
+
}
|
|
35
|
+
/** 读包内 `skills/` 目录。 */
|
|
36
|
+
export function loadBundledSkills(skillsDir) {
|
|
37
|
+
if (!existsSync(skillsDir))
|
|
38
|
+
return [];
|
|
39
|
+
const out = [];
|
|
40
|
+
for (const entry of readdirSync(skillsDir, { withFileTypes: true })) {
|
|
41
|
+
if (!entry.isDirectory())
|
|
42
|
+
continue;
|
|
43
|
+
const file = path.join(skillsDir, entry.name, 'SKILL.md');
|
|
44
|
+
if (!existsSync(file))
|
|
45
|
+
continue;
|
|
46
|
+
const fm = parseSkillFrontmatter(readFileSync(file, 'utf8'));
|
|
47
|
+
const name = fm.name ?? entry.name;
|
|
48
|
+
if (!/^[a-z0-9][a-z0-9-]*$/.test(name))
|
|
49
|
+
continue;
|
|
50
|
+
out.push({
|
|
51
|
+
name,
|
|
52
|
+
description: fm.description ?? '',
|
|
53
|
+
content: fm.body,
|
|
54
|
+
file,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
return out.sort((a, b) => a.name.localeCompare(b.name));
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* 注册技能。返回已注册的名字数组(供冒烟与日志用)。
|
|
61
|
+
* 注意:调用方应把它放进 `ctx.effect()`,返回的 disposer 负责注销。
|
|
62
|
+
*/
|
|
63
|
+
export function registerBundledSkills(ctx, skillsDir) {
|
|
64
|
+
const skills = loadBundledSkills(skillsDir);
|
|
65
|
+
const registry = (() => {
|
|
66
|
+
try {
|
|
67
|
+
return ctx.get?.('skills');
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
return undefined;
|
|
71
|
+
}
|
|
72
|
+
})();
|
|
73
|
+
if (registry === undefined || typeof registry.register !== 'function') {
|
|
74
|
+
console.warn(`[study-kit] 当前 profile 没有 skills 服务,跳过随包技能注册(${skills.length} 个);阅读器不受影响`);
|
|
75
|
+
return { names: [], dispose: () => { } };
|
|
76
|
+
}
|
|
77
|
+
const disposers = [];
|
|
78
|
+
const names = [];
|
|
79
|
+
for (const s of skills) {
|
|
80
|
+
try {
|
|
81
|
+
const dispose = registry.register({
|
|
82
|
+
name: s.name,
|
|
83
|
+
description: s.description,
|
|
84
|
+
content: s.content,
|
|
85
|
+
path: s.file,
|
|
86
|
+
invocation: { modelInvocable: true, userInvocable: true },
|
|
87
|
+
});
|
|
88
|
+
disposers.push(dispose);
|
|
89
|
+
names.push(s.name);
|
|
90
|
+
}
|
|
91
|
+
catch (e) {
|
|
92
|
+
console.warn(`[study-kit] 技能注册失败:${s.name}(${e instanceof Error ? e.message : String(e)})`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
if (names.length > 0)
|
|
96
|
+
console.log(`[study-kit] 已注册随包技能 ${names.length} 个:${names.join(', ')}`);
|
|
97
|
+
return {
|
|
98
|
+
names,
|
|
99
|
+
dispose: () => {
|
|
100
|
+
for (const d of disposers) {
|
|
101
|
+
try {
|
|
102
|
+
d();
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
/* 忽略注销异常 */
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=skills.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"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"}
|
package/lib/slidev.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { IncomingMessage, ServerResponse } from 'node:http';
|
|
2
|
+
export interface SlidevHandlerOptions {
|
|
3
|
+
resolveKbRoot: (hint: string | undefined) => string | null;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* /aero-kb/slidev 路由:
|
|
7
|
+
* - GET /aero-kb/slidev/meta?p=<rel>&cwd=…&rebuild=1 → 状态/触发构建
|
|
8
|
+
* - GET /aero-kb/slidev/<key>/<file…> → 构建产物静态托管
|
|
9
|
+
*/
|
|
10
|
+
export declare function createSlidevHandler(opts: SlidevHandlerOptions): (req: IncomingMessage, res: ServerResponse) => void;
|
|
11
|
+
/** 插件卸载时终止所有构建子进程。 */
|
|
12
|
+
export declare function disposeSlidev(): void;
|
|
13
|
+
//# sourceMappingURL=slidev.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slidev.d.ts","sourceRoot":"","sources":["../src/slidev.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAgpBhE,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,KAAK,MAAM,GAAG,IAAI,CAAA;CAC3D;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,oBAAoB,GAAG,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,KAAK,IAAI,CAInH;AAiFD,sBAAsB;AACtB,wBAAgB,aAAa,IAAI,IAAI,CAapC"}
|