record_safer_pro_mcp 1.0.40 → 1.0.42

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 CHANGED
@@ -273,8 +273,9 @@ npx -y record_safer_pro_mcp@latest --doctor
273
273
  | 录音状态 | 获取通道、混音、健康状态、最小录音状态 |
274
274
  | 通道操作 | 重命名通道、调颜色、音量、声像、solo、mute、反相 |
275
275
  | 录音中管理 | 添加标记、列出轨道、列出标记、重命名标记 |
276
+ | 说明书问答 | 检索内嵌用户手册 RAG,用于安装、模式、格式、位深、警报和 MCP 使用说明 |
276
277
 
277
- 当前仅暴露 24 个高频核心工具,不通过 MCP 暴露以下能力:
278
+ 当前仅暴露 25 个高频核心工具,不通过 MCP 暴露以下能力:
278
279
 
279
280
  - 系统设置
280
281
  - 更新
@@ -673,8 +674,9 @@ The current MCP server is intentionally focused on high-frequency recording task
673
674
  | Recording status | retrieve channels, mix, health, and minimal status |
674
675
  | Channel operations | rename channel, set color, volume, pan, solo, mute, phase invert |
675
676
  | In-session management | add markers, list tracks, list markers, rename markers |
677
+ | Manual Q&A | search the embedded user-manual RAG for install, mode, format, bit-depth, alert, and MCP usage guidance |
676
678
 
677
- Only 24 high-frequency core tools are exposed at this time. The following capabilities are intentionally not exposed through MCP:
679
+ Only 25 high-frequency core tools are exposed at this time. The following capabilities are intentionally not exposed through MCP:
678
680
 
679
681
  - system settings
680
682
  - updates
@@ -0,0 +1,52 @@
1
+ export type ManualRagAudience = "end_user" | "developer_support";
2
+ export type ManualRagChunk = {
3
+ id: string;
4
+ source_path: string;
5
+ source_type: string;
6
+ audience: ManualRagAudience;
7
+ module: string;
8
+ authority?: string;
9
+ retrieval_priority?: number;
10
+ title: string;
11
+ heading_path?: string[];
12
+ start_line: number;
13
+ end_line: number;
14
+ text: string;
15
+ };
16
+ export type ManualRagSearchOptions = {
17
+ query: string;
18
+ top?: number;
19
+ audience?: ManualRagAudience;
20
+ module?: string;
21
+ };
22
+ export type ManualRagSearchResult = {
23
+ rank: number;
24
+ score: number;
25
+ matched: string[];
26
+ audience: ManualRagAudience;
27
+ module: string;
28
+ authority: string;
29
+ sourcePath: string;
30
+ startLine: number;
31
+ endLine: number;
32
+ title: string;
33
+ headingPath: string[];
34
+ text: string;
35
+ };
36
+ export type ManualRagSearchResponse = {
37
+ query: string;
38
+ generatedAt: string;
39
+ corpus: {
40
+ included: Array<"manual_chunks" | "support_chunks">;
41
+ evidenceIncluded: false;
42
+ };
43
+ resultCount: number;
44
+ guidance: string;
45
+ results: ManualRagSearchResult[];
46
+ };
47
+ export declare function getManualRagConfig(): unknown;
48
+ export declare function getManualRagAnswerPolicy(): string;
49
+ export declare function getManualRagPlaybook(): string;
50
+ export declare function getManualRagGeneratedAt(): string;
51
+ export declare function searchManualRag(options: ManualRagSearchOptions): ManualRagSearchResponse;
52
+ //# sourceMappingURL=manual-rag.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manual-rag.d.ts","sourceRoot":"","sources":["../src/manual-rag.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,mBAAmB,CAAC;AAEjE,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE;QACN,QAAQ,EAAE,KAAK,CAAC,eAAe,GAAG,gBAAgB,CAAC,CAAC;QACpD,gBAAgB,EAAE,KAAK,CAAC;KACzB,CAAC;IACF,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,qBAAqB,EAAE,CAAC;CAClC,CAAC;AAwCF,wBAAgB,kBAAkB,IAAI,OAAO,CAK5C;AAED,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD;AA2GD,wBAAgB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,uBAAuB,CA2CxF"}
@@ -0,0 +1,201 @@
1
+ import { MANUAL_RAG_ANSWER_POLICY_MD, MANUAL_RAG_CONFIG_JSON, MANUAL_RAG_GENERATED_AT, MANUAL_RAG_MANUAL_CHUNKS_JSONL, MANUAL_RAG_PLAYBOOK_MD, MANUAL_RAG_SUPPORT_CHUNKS_JSONL, } from "./resources/manual-rag-content.js";
2
+ const STOP_WORDS = new Set([
3
+ "about",
4
+ "after",
5
+ "all",
6
+ "also",
7
+ "and",
8
+ "are",
9
+ "but",
10
+ "can",
11
+ "for",
12
+ "from",
13
+ "get",
14
+ "has",
15
+ "have",
16
+ "into",
17
+ "not",
18
+ "record",
19
+ "recording",
20
+ "return",
21
+ "set",
22
+ "the",
23
+ "this",
24
+ "true",
25
+ "type",
26
+ "use",
27
+ "void",
28
+ "with",
29
+ "用户",
30
+ "使用",
31
+ "系统",
32
+ "软件",
33
+ "录音",
34
+ "功能",
35
+ ]);
36
+ let chunkCache = null;
37
+ let configCache = null;
38
+ export function getManualRagConfig() {
39
+ if (configCache == null) {
40
+ configCache = JSON.parse(MANUAL_RAG_CONFIG_JSON);
41
+ }
42
+ return configCache;
43
+ }
44
+ export function getManualRagAnswerPolicy() {
45
+ return MANUAL_RAG_ANSWER_POLICY_MD;
46
+ }
47
+ export function getManualRagPlaybook() {
48
+ return MANUAL_RAG_PLAYBOOK_MD;
49
+ }
50
+ export function getManualRagGeneratedAt() {
51
+ return MANUAL_RAG_GENERATED_AT;
52
+ }
53
+ function parseJsonl(jsonl) {
54
+ return jsonl
55
+ .split("\n")
56
+ .filter(Boolean)
57
+ .map((line) => JSON.parse(line));
58
+ }
59
+ function getChunks() {
60
+ if (chunkCache == null) {
61
+ chunkCache = [
62
+ ...parseJsonl(MANUAL_RAG_MANUAL_CHUNKS_JSONL),
63
+ ...parseJsonl(MANUAL_RAG_SUPPORT_CHUNKS_JSONL),
64
+ ];
65
+ }
66
+ return chunkCache;
67
+ }
68
+ function tokenize(text) {
69
+ const lower = text.toLowerCase();
70
+ const words = [];
71
+ const latinMatches = lower.match(/[a-z0-9][a-z0-9_-]{1,}/g) || [];
72
+ for (const token of latinMatches) {
73
+ for (const piece of token.split(/[_-]+/)) {
74
+ if (piece.length >= 2 && !STOP_WORDS.has(piece))
75
+ words.push(piece);
76
+ }
77
+ if (token.length >= 2 && !STOP_WORDS.has(token))
78
+ words.push(token);
79
+ }
80
+ const cjkMatches = text.match(/[\u3400-\u9fff]{2,}/g) || [];
81
+ for (const seq of cjkMatches) {
82
+ if (seq.length <= 12 && !STOP_WORDS.has(seq))
83
+ words.push(seq);
84
+ for (let i = 0; i < seq.length - 1; i++) {
85
+ const gram = seq.slice(i, i + 2);
86
+ if (!STOP_WORDS.has(gram))
87
+ words.push(gram);
88
+ }
89
+ for (let i = 0; i < seq.length - 2; i += 2) {
90
+ const gram = seq.slice(i, i + 3);
91
+ if (!STOP_WORDS.has(gram))
92
+ words.push(gram);
93
+ }
94
+ }
95
+ return words;
96
+ }
97
+ function scoreChunk(chunk, query, queryTokens) {
98
+ const haystack = [
99
+ chunk.source_path,
100
+ chunk.title,
101
+ ...(chunk.heading_path || []),
102
+ chunk.module,
103
+ chunk.audience,
104
+ chunk.authority,
105
+ chunk.text,
106
+ ].join("\n").toLowerCase();
107
+ const counts = new Map();
108
+ for (const token of tokenize(haystack)) {
109
+ counts.set(token, (counts.get(token) || 0) + 1);
110
+ }
111
+ let score = 0;
112
+ const matched = [];
113
+ for (const token of queryTokens) {
114
+ const count = counts.get(token) || 0;
115
+ if (count > 0) {
116
+ score += Math.min(8, 1 + Math.log2(count + 1));
117
+ matched.push(token);
118
+ }
119
+ if ((chunk.title || "").toLowerCase().includes(token))
120
+ score += 4;
121
+ if ((chunk.heading_path || []).join(" ").toLowerCase().includes(token))
122
+ score += 3;
123
+ if ((chunk.source_path || "").toLowerCase().includes(token))
124
+ score += 2;
125
+ }
126
+ const normalizedQuery = query.toLowerCase();
127
+ if (normalizedQuery.length >= 4 && haystack.includes(normalizedQuery))
128
+ score += 12;
129
+ const priority = Number(chunk.retrieval_priority || 40);
130
+ score *= 0.8 + Math.max(0, Math.min(priority, 100)) / 100;
131
+ if (chunk.module === "manual_playbook")
132
+ score += 12;
133
+ if (chunk.authority === "canonical_code_checked")
134
+ score += 8;
135
+ if (chunk.audience === "end_user")
136
+ score *= 1.35;
137
+ if (chunk.audience === "developer_support")
138
+ score *= 1.05;
139
+ return { score, matched: [...new Set(matched)] };
140
+ }
141
+ function excerpt(text, queryTokens, length = 1200) {
142
+ const lower = text.toLowerCase();
143
+ let best = 0;
144
+ for (const token of queryTokens) {
145
+ const idx = lower.indexOf(token.toLowerCase());
146
+ if (idx >= 0) {
147
+ best = Math.max(0, idx - 160);
148
+ break;
149
+ }
150
+ }
151
+ const snippet = text.slice(best, best + length).replace(/\s+/g, " ").trim();
152
+ return `${best > 0 ? "..." : ""}${snippet}${best + length < text.length ? "..." : ""}`;
153
+ }
154
+ function normalizeTop(rawTop) {
155
+ if (!Number.isFinite(rawTop))
156
+ return 5;
157
+ return Math.max(1, Math.min(12, Math.trunc(rawTop || 5)));
158
+ }
159
+ export function searchManualRag(options) {
160
+ const query = options.query.trim();
161
+ const queryTokens = [...new Set(tokenize(query))];
162
+ const top = normalizeTop(options.top);
163
+ const filtered = getChunks().filter((chunk) => {
164
+ if (options.audience && chunk.audience !== options.audience)
165
+ return false;
166
+ if (options.module && chunk.module !== options.module)
167
+ return false;
168
+ return true;
169
+ });
170
+ const results = filtered
171
+ .map((chunk) => ({ chunk, ...scoreChunk(chunk, query, queryTokens) }))
172
+ .filter((item) => item.score > 0)
173
+ .sort((a, b) => b.score - a.score)
174
+ .slice(0, top)
175
+ .map((item, index) => ({
176
+ rank: index + 1,
177
+ score: Number(item.score.toFixed(2)),
178
+ matched: item.matched,
179
+ audience: item.chunk.audience,
180
+ module: item.chunk.module,
181
+ authority: item.chunk.authority || "user_manual_source",
182
+ sourcePath: item.chunk.source_path,
183
+ startLine: item.chunk.start_line,
184
+ endLine: item.chunk.end_line,
185
+ title: item.chunk.title,
186
+ headingPath: item.chunk.heading_path || [],
187
+ text: excerpt(item.chunk.text, queryTokens),
188
+ }));
189
+ return {
190
+ query,
191
+ generatedAt: MANUAL_RAG_GENERATED_AT,
192
+ corpus: {
193
+ included: ["manual_chunks", "support_chunks"],
194
+ evidenceIncluded: false,
195
+ },
196
+ resultCount: results.length,
197
+ guidance: "Use manual_playbook/canonical_code_checked results first. This MCP RAG intentionally excludes implementation_evidence chunks by default; do not expose source paths unless the user asks for technical provenance.",
198
+ results,
199
+ };
200
+ }
201
+ //# sourceMappingURL=manual-rag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manual-rag.js","sourceRoot":"","sources":["../src/manual-rag.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,QAuFlD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AASpE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,QAiIlD"}
@@ -3,6 +3,7 @@
3
3
  * MCP Resources — Read-only data sources
4
4
  */
5
5
  import { RecordSaferClient } from "../api-client.js";
6
+ import { MANUAL_RAG_ANSWER_POLICY_MD, MANUAL_RAG_CONFIG_JSON, MANUAL_RAG_PLAYBOOK_MD, } from "./manual-rag-content.js";
6
7
  import { MIXING_GUIDE_MD } from "./mixing-guide-content.js";
7
8
  export function registerResources(server) {
8
9
  const client = new RecordSaferClient();
@@ -55,5 +56,29 @@ export function registerResources(server) {
55
56
  text: MIXING_GUIDE_MD,
56
57
  }],
57
58
  }));
59
+ // recordsafer://docs/manual-answer-policy — 用户说明书回答规则
60
+ server.resource("manual-answer-policy", "recordsafer://docs/manual-answer-policy", { mimeType: "text/markdown", description: "AI answer policy for user-facing Record Safer Pro manual questions." }, async () => ({
61
+ contents: [{
62
+ uri: "recordsafer://docs/manual-answer-policy",
63
+ mimeType: "text/markdown",
64
+ text: MANUAL_RAG_ANSWER_POLICY_MD,
65
+ }],
66
+ }));
67
+ // recordsafer://docs/manual-playbook — 代码校准后的高优先级用户手册口径
68
+ server.resource("manual-playbook", "recordsafer://docs/manual-playbook", { mimeType: "text/markdown", description: "Code-checked manual answer playbook. Read first for user-facing product manual answers." }, async () => ({
69
+ contents: [{
70
+ uri: "recordsafer://docs/manual-playbook",
71
+ mimeType: "text/markdown",
72
+ text: MANUAL_RAG_PLAYBOOK_MD,
73
+ }],
74
+ }));
75
+ // recordsafer://rag/config — 内嵌 RAG 配置与统计
76
+ server.resource("manual-rag-config", "recordsafer://rag/config", { mimeType: "application/json", description: "Embedded manual RAG config and corpus statistics." }, async () => ({
77
+ contents: [{
78
+ uri: "recordsafer://rag/config",
79
+ mimeType: "application/json",
80
+ text: MANUAL_RAG_CONFIG_JSON,
81
+ }],
82
+ }));
58
83
  }
59
84
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"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"}