record-safer-mcp-server 1.0.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.
- package/README.md +67 -0
- package/dist/api-client.d.ts +110 -0
- package/dist/api-client.d.ts.map +1 -0
- package/dist/api-client.js +353 -0
- package/dist/api-client.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +35 -0
- package/dist/index.js.map +1 -0
- package/dist/prompts/index.d.ts +7 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +91 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/resources/index.d.ts +7 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +49 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/tools/devices.d.ts +7 -0
- package/dist/tools/devices.d.ts.map +1 -0
- package/dist/tools/devices.js +26 -0
- package/dist/tools/devices.js.map +1 -0
- package/dist/tools/levels.d.ts +7 -0
- package/dist/tools/levels.d.ts.map +1 -0
- package/dist/tools/levels.js +18 -0
- package/dist/tools/levels.js.map +1 -0
- package/dist/tools/markers.d.ts +7 -0
- package/dist/tools/markers.d.ts.map +1 -0
- package/dist/tools/markers.js +36 -0
- package/dist/tools/markers.js.map +1 -0
- package/dist/tools/monitor.d.ts +7 -0
- package/dist/tools/monitor.d.ts.map +1 -0
- package/dist/tools/monitor.js +48 -0
- package/dist/tools/monitor.js.map +1 -0
- package/dist/tools/recording.d.ts +7 -0
- package/dist/tools/recording.d.ts.map +1 -0
- package/dist/tools/recording.js +36 -0
- package/dist/tools/recording.js.map +1 -0
- package/dist/tools/settings.d.ts +7 -0
- package/dist/tools/settings.d.ts.map +1 -0
- package/dist/tools/settings.js +33 -0
- package/dist/tools/settings.js.map +1 -0
- package/dist/tools/storage.d.ts +7 -0
- package/dist/tools/storage.d.ts.map +1 -0
- package/dist/tools/storage.js +21 -0
- package/dist/tools/storage.js.map +1 -0
- package/dist/tools/system.d.ts +7 -0
- package/dist/tools/system.d.ts.map +1 -0
- package/dist/tools/system.js +47 -0
- package/dist/tools/system.js.map +1 -0
- package/dist/types.d.ts +196 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +4 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +20 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +29 -0
- package/dist/utils.js.map +1 -0
- package/package.json +35 -0
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Prompts — 预定义提示模板
|
|
3
|
+
* MCP Prompts — Predefined prompt templates
|
|
4
|
+
*/
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
export function registerPrompts(server) {
|
|
7
|
+
// recording_assistant — 专业录音助手
|
|
8
|
+
server.prompt("recording_assistant", "专业录音助手 / Professional Recording Assistant", { task: z.string().describe("要执行的录音任务 / Recording task to perform") }, ({ task }) => ({
|
|
9
|
+
messages: [{
|
|
10
|
+
role: "user",
|
|
11
|
+
content: {
|
|
12
|
+
type: "text",
|
|
13
|
+
text: `你是 Record Safer Pro 的专业录音助手。请帮助用户完成以下任务:${task}\n\n` +
|
|
14
|
+
`工作流程:\n` +
|
|
15
|
+
`1. 使用 list_audio_devices 查看可用设备\n` +
|
|
16
|
+
`2. 使用 get_recording_status 检查当前状态\n` +
|
|
17
|
+
`3. 根据需要使用 initialize_session 配置录音\n` +
|
|
18
|
+
`4. 使用 start_recording 开始录音\n` +
|
|
19
|
+
`5. 录音过程中可使用 add_marker 添加标记\n` +
|
|
20
|
+
`6. 使用 stop_recording 停止录音\n\n` +
|
|
21
|
+
`You are a professional recording assistant for Record Safer Pro. Please help the user complete the following task: ${task}\n\n` +
|
|
22
|
+
`Workflow:\n` +
|
|
23
|
+
`1. Use list_audio_devices to view available devices\n` +
|
|
24
|
+
`2. Use get_recording_status to check current status\n` +
|
|
25
|
+
`3. Use initialize_session to configure recording as needed\n` +
|
|
26
|
+
`4. Use start_recording to begin recording\n` +
|
|
27
|
+
`5. Use add_marker to add markers during recording\n` +
|
|
28
|
+
`6. Use stop_recording to stop recording`,
|
|
29
|
+
},
|
|
30
|
+
}],
|
|
31
|
+
}));
|
|
32
|
+
// troubleshoot — 故障诊断助手
|
|
33
|
+
server.prompt("troubleshoot", "故障诊断助手 / Troubleshooting Assistant", { symptom: z.string().describe("问题症状描述 / Description of the issue symptom") }, ({ symptom }) => ({
|
|
34
|
+
messages: [{
|
|
35
|
+
role: "user",
|
|
36
|
+
content: {
|
|
37
|
+
type: "text",
|
|
38
|
+
text: `你是 Record Safer Pro 的故障诊断专家。用户报告了以下问题:${symptom}\n\n` +
|
|
39
|
+
`诊断流程:\n` +
|
|
40
|
+
`1. 使用 get_recording_status 检查录音状态\n` +
|
|
41
|
+
`2. 使用 get_system_info 获取系统信息\n` +
|
|
42
|
+
`3. 使用 check_disk_health 检查磁盘健康状况\n` +
|
|
43
|
+
`4. 使用 get_device_signals 检查设备信号\n` +
|
|
44
|
+
`5. 根据诊断结果提供解决方案\n\n` +
|
|
45
|
+
`You are a troubleshooting expert for Record Safer Pro. The user reported the following issue: ${symptom}\n\n` +
|
|
46
|
+
`Diagnostic workflow:\n` +
|
|
47
|
+
`1. Use get_recording_status to check recording status\n` +
|
|
48
|
+
`2. Use get_system_info to get system information\n` +
|
|
49
|
+
`3. Use check_disk_health to check disk health\n` +
|
|
50
|
+
`4. Use get_device_signals to check device signals\n` +
|
|
51
|
+
`5. Provide solutions based on diagnostic results`,
|
|
52
|
+
},
|
|
53
|
+
}],
|
|
54
|
+
}));
|
|
55
|
+
// generate_report — 录音报告生成
|
|
56
|
+
server.prompt("generate_report", "录音报告生成 / Recording Report Generator", { format: z.enum(["brief", "detailed"]).optional().describe("报告格式 / Report format (brief or detailed, defaults to brief)") }, ({ format }) => {
|
|
57
|
+
const reportFormat = format ?? "brief";
|
|
58
|
+
const formatLabel = reportFormat === "brief"
|
|
59
|
+
? "简要报告 / Brief Report"
|
|
60
|
+
: "详细报告 / Detailed Report";
|
|
61
|
+
return {
|
|
62
|
+
messages: [{
|
|
63
|
+
role: "user",
|
|
64
|
+
content: {
|
|
65
|
+
type: "text",
|
|
66
|
+
text: `你是 Record Safer Pro 的报告生成助手。请生成一份${formatLabel}。\n\n` +
|
|
67
|
+
`报告生成流程:\n` +
|
|
68
|
+
`1. 使用 get_recording_status 获取录音状态\n` +
|
|
69
|
+
`2. 使用 list_tracks 获取轨道信息\n` +
|
|
70
|
+
`3. 使用 list_markers 获取标记点信息\n` +
|
|
71
|
+
`4. 使用 get_system_info 获取系统信息\n` +
|
|
72
|
+
(reportFormat === "detailed"
|
|
73
|
+
? `5. 使用 get_disk_space 获取磁盘空间信息\n6. 使用 get_settings 获取当前配置\n`
|
|
74
|
+
: "") +
|
|
75
|
+
`请将以上信息整理为结构化的${formatLabel}。\n\n` +
|
|
76
|
+
`You are a report generation assistant for Record Safer Pro. Please generate a ${formatLabel}.\n\n` +
|
|
77
|
+
`Report generation workflow:\n` +
|
|
78
|
+
`1. Use get_recording_status to get recording status\n` +
|
|
79
|
+
`2. Use list_tracks to get track information\n` +
|
|
80
|
+
`3. Use list_markers to get marker information\n` +
|
|
81
|
+
`4. Use get_system_info to get system information\n` +
|
|
82
|
+
(reportFormat === "detailed"
|
|
83
|
+
? `5. Use get_disk_space to get disk space information\n6. Use get_settings to get current configuration\n`
|
|
84
|
+
: "") +
|
|
85
|
+
`Please compile the above information into a structured ${formatLabel}.`,
|
|
86
|
+
},
|
|
87
|
+
}],
|
|
88
|
+
};
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +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;AAGpE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,QAwElD"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Resources — 只读数据源
|
|
3
|
+
* MCP Resources — Read-only data sources
|
|
4
|
+
*/
|
|
5
|
+
import { RecordSaferClient } from "../api-client.js";
|
|
6
|
+
export function registerResources(server) {
|
|
7
|
+
const client = new RecordSaferClient();
|
|
8
|
+
// recordsafer://devices — 音频输入设备列表
|
|
9
|
+
server.resource("devices", "recordsafer://devices", { mimeType: "application/json", description: "音频输入设备列表 / Audio input devices" }, async () => ({
|
|
10
|
+
contents: [{
|
|
11
|
+
uri: "recordsafer://devices",
|
|
12
|
+
mimeType: "application/json",
|
|
13
|
+
text: JSON.stringify(await client.listDevices(), null, 2),
|
|
14
|
+
}],
|
|
15
|
+
}));
|
|
16
|
+
// recordsafer://status — 录音状态快照
|
|
17
|
+
server.resource("status", "recordsafer://status", { mimeType: "application/json", description: "录音状态快照 / Recording status snapshot" }, async () => ({
|
|
18
|
+
contents: [{
|
|
19
|
+
uri: "recordsafer://status",
|
|
20
|
+
mimeType: "application/json",
|
|
21
|
+
text: JSON.stringify(await client.getRecordingStatus(), null, 2),
|
|
22
|
+
}],
|
|
23
|
+
}));
|
|
24
|
+
// recordsafer://settings — 系统设置
|
|
25
|
+
server.resource("settings", "recordsafer://settings", { mimeType: "application/json", description: "系统设置 / System settings" }, async () => ({
|
|
26
|
+
contents: [{
|
|
27
|
+
uri: "recordsafer://settings",
|
|
28
|
+
mimeType: "application/json",
|
|
29
|
+
text: JSON.stringify(await client.getSettings(), null, 2),
|
|
30
|
+
}],
|
|
31
|
+
}));
|
|
32
|
+
// recordsafer://system/info — 系统与应用信息
|
|
33
|
+
server.resource("system-info", "recordsafer://system/info", { mimeType: "application/json", description: "系统与应用信息 / System and application information" }, async () => ({
|
|
34
|
+
contents: [{
|
|
35
|
+
uri: "recordsafer://system/info",
|
|
36
|
+
mimeType: "application/json",
|
|
37
|
+
text: JSON.stringify(await client.getSystemInfo(), null, 2),
|
|
38
|
+
}],
|
|
39
|
+
}));
|
|
40
|
+
// recordsafer://system/disk — 磁盘空间信息
|
|
41
|
+
server.resource("system-disk", "recordsafer://system/disk", { mimeType: "application/json", description: "磁盘空间信息 / Disk space information" }, async () => ({
|
|
42
|
+
contents: [{
|
|
43
|
+
uri: "recordsafer://system/disk",
|
|
44
|
+
mimeType: "application/json",
|
|
45
|
+
text: JSON.stringify(await client.getDiskSpace(), null, 2),
|
|
46
|
+
}],
|
|
47
|
+
}));
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,MAAM,UAAU,iBAAiB,CAAC,MAAiB;IACjD,MAAM,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAC;IAEvC,mCAAmC;IACnC,MAAM,CAAC,QAAQ,CACb,SAAS,EACT,uBAAuB,EACvB,EAAE,QAAQ,EAAE,kBAAkB,EAAE,WAAW,EAAE,gCAAgC,EAAE,EAC/E,KAAK,IAAI,EAAE,CAAC,CAAC;QACX,QAAQ,EAAE,CAAC;gBACT,GAAG,EAAE,uBAAuB;gBAC5B,QAAQ,EAAE,kBAAkB;gBAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;aAC1D,CAAC;KACH,CAAC,CACH,CAAC;IAEF,gCAAgC;IAChC,MAAM,CAAC,QAAQ,CACb,QAAQ,EACR,sBAAsB,EACtB,EAAE,QAAQ,EAAE,kBAAkB,EAAE,WAAW,EAAE,oCAAoC,EAAE,EACnF,KAAK,IAAI,EAAE,CAAC,CAAC;QACX,QAAQ,EAAE,CAAC;gBACT,GAAG,EAAE,sBAAsB;gBAC3B,QAAQ,EAAE,kBAAkB;gBAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;aACjE,CAAC;KACH,CAAC,CACH,CAAC;IAEF,gCAAgC;IAChC,MAAM,CAAC,QAAQ,CACb,UAAU,EACV,wBAAwB,EACxB,EAAE,QAAQ,EAAE,kBAAkB,EAAE,WAAW,EAAE,wBAAwB,EAAE,EACvE,KAAK,IAAI,EAAE,CAAC,CAAC;QACX,QAAQ,EAAE,CAAC;gBACT,GAAG,EAAE,wBAAwB;gBAC7B,QAAQ,EAAE,kBAAkB;gBAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;aAC1D,CAAC;KACH,CAAC,CACH,CAAC;IAEF,sCAAsC;IACtC,MAAM,CAAC,QAAQ,CACb,aAAa,EACb,2BAA2B,EAC3B,EAAE,QAAQ,EAAE,kBAAkB,EAAE,WAAW,EAAE,8CAA8C,EAAE,EAC7F,KAAK,IAAI,EAAE,CAAC,CAAC;QACX,QAAQ,EAAE,CAAC;gBACT,GAAG,EAAE,2BAA2B;gBAChC,QAAQ,EAAE,kBAAkB;gBAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;aAC5D,CAAC;KACH,CAAC,CACH,CAAC;IAEF,qCAAqC;IACrC,MAAM,CAAC,QAAQ,CACb,aAAa,EACb,2BAA2B,EAC3B,EAAE,QAAQ,EAAE,kBAAkB,EAAE,WAAW,EAAE,iCAAiC,EAAE,EAChF,KAAK,IAAI,EAAE,CAAC,CAAC;QACX,QAAQ,EAAE,CAAC;gBACT,GAAG,EAAE,2BAA2B;gBAChC,QAAQ,EAAE,kBAAkB;gBAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;aAC3D,CAAC;KACH,CAAC,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 设备管理 Tools — 音频设备查询与电平监控
|
|
3
|
+
* Device Management Tools — Audio device queries and level monitoring
|
|
4
|
+
*/
|
|
5
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
6
|
+
export declare function registerDeviceTools(server: McpServer): void;
|
|
7
|
+
//# sourceMappingURL=devices.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"devices.d.ts","sourceRoot":"","sources":["../../src/tools/devices.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AASpE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,QAkEpD"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 设备管理 Tools — 音频设备查询与电平监控
|
|
3
|
+
* Device Management Tools — Audio device queries and level monitoring
|
|
4
|
+
*/
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
import { RecordSaferClient } from "../api-client.js";
|
|
7
|
+
import { handleToolCall } from "../utils.js";
|
|
8
|
+
const deviceIdSchema = {
|
|
9
|
+
deviceId: z.string().min(1).describe("设备ID / Device ID"),
|
|
10
|
+
};
|
|
11
|
+
export function registerDeviceTools(server) {
|
|
12
|
+
const client = new RecordSaferClient();
|
|
13
|
+
// list_audio_devices [read] — 无参数
|
|
14
|
+
server.tool("list_audio_devices", "列出所有音频输入设备 / List all audio input devices [read]", {}, async () => handleToolCall("list_audio_devices", "read", () => client.listDevices()));
|
|
15
|
+
// list_output_devices [read] — 无参数
|
|
16
|
+
server.tool("list_output_devices", "列出所有音频输出设备 / List all audio output devices [read]", {}, async () => handleToolCall("list_output_devices", "read", () => client.listOutputDevices()));
|
|
17
|
+
// get_buffer_sizes [read] — 需要 deviceId
|
|
18
|
+
server.tool("get_buffer_sizes", "获取设备支持的缓冲区大小 / Get supported buffer sizes for a device [read]", deviceIdSchema, async ({ deviceId }) => handleToolCall("get_buffer_sizes", "read", () => client.getBufferSizes(deviceId)));
|
|
19
|
+
// get_device_signals [read] — 需要 deviceId
|
|
20
|
+
server.tool("get_device_signals", "获取设备信号信息 / Get device signal information [read]", deviceIdSchema, async ({ deviceId }) => handleToolCall("get_device_signals", "read", () => client.getDeviceSignals(deviceId)));
|
|
21
|
+
// get_device_levels [read] — 需要 deviceId
|
|
22
|
+
server.tool("get_device_levels", "获取设备实时电平数据 / Get real-time device level data in dBFS [read]", deviceIdSchema, async ({ deviceId }) => handleToolCall("get_device_levels", "read", () => client.getDeviceLevels(deviceId)));
|
|
23
|
+
// stop_level_monitoring [write] — 无参数
|
|
24
|
+
server.tool("stop_level_monitoring", "停止电平监控 / Stop level monitoring [write]", {}, async () => handleToolCall("stop_level_monitoring", "write", () => client.stopLevelMonitoring()));
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=devices.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"devices.js","sourceRoot":"","sources":["../../src/tools/devices.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,cAAc,GAAG;IACrB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC;CACzD,CAAC;AAEF,MAAM,UAAU,mBAAmB,CAAC,MAAiB;IACnD,MAAM,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAC;IAEvC,kCAAkC;IAClC,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,kDAAkD,EAClD,EAAE,EACF,KAAK,IAAI,EAAE,CACT,cAAc,CAAC,oBAAoB,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAC3E,CAAC;IAEF,mCAAmC;IACnC,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,mDAAmD,EACnD,EAAE,EACF,KAAK,IAAI,EAAE,CACT,cAAc,CAAC,qBAAqB,EAAE,MAAM,EAAE,GAAG,EAAE,CACjD,MAAM,CAAC,iBAAiB,EAAE,CAC3B,CACJ,CAAC;IAEF,wCAAwC;IACxC,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,+DAA+D,EAC/D,cAAc,EACd,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CACrB,cAAc,CAAC,kBAAkB,EAAE,MAAM,EAAE,GAAG,EAAE,CAC9C,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAChC,CACJ,CAAC;IAEF,0CAA0C;IAC1C,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,iDAAiD,EACjD,cAAc,EACd,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CACrB,cAAc,CAAC,oBAAoB,EAAE,MAAM,EAAE,GAAG,EAAE,CAChD,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAClC,CACJ,CAAC;IAEF,yCAAyC;IACzC,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,6DAA6D,EAC7D,cAAc,EACd,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CACrB,cAAc,CAAC,mBAAmB,EAAE,MAAM,EAAE,GAAG,EAAE,CAC/C,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CACjC,CACJ,CAAC;IAEF,sCAAsC;IACtC,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,wCAAwC,EACxC,EAAE,EACF,KAAK,IAAI,EAAE,CACT,cAAc,CAAC,uBAAuB,EAAE,OAAO,EAAE,GAAG,EAAE,CACpD,MAAM,CAAC,mBAAmB,EAAE,CAC7B,CACJ,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 电平监控 Tools — 电平订阅与回调控制
|
|
3
|
+
* Level Monitoring Tools — Level subscription and callback control
|
|
4
|
+
*/
|
|
5
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
6
|
+
export declare function registerLevelTools(server: McpServer): void;
|
|
7
|
+
//# sourceMappingURL=levels.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"levels.d.ts","sourceRoot":"","sources":["../../src/tools/levels.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,QA8CnD"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 电平监控 Tools — 电平订阅与回调控制
|
|
3
|
+
* Level Monitoring Tools — Level subscription and callback control
|
|
4
|
+
*/
|
|
5
|
+
import { RecordSaferClient } from "../api-client.js";
|
|
6
|
+
import { handleToolCall } from "../utils.js";
|
|
7
|
+
export function registerLevelTools(server) {
|
|
8
|
+
const client = new RecordSaferClient();
|
|
9
|
+
// subscribe_levels [write] — 无参数
|
|
10
|
+
server.tool("subscribe_levels", "订阅电平更新 / Subscribe to WebSocket level updates [write]", {}, async () => handleToolCall("subscribe_levels", "write", () => client.subscribeLevels()));
|
|
11
|
+
// unsubscribe_levels [write] — 无参数
|
|
12
|
+
server.tool("unsubscribe_levels", "取消订阅电平更新 / Unsubscribe from level updates [write]", {}, async () => handleToolCall("unsubscribe_levels", "write", () => client.unsubscribeLevels()));
|
|
13
|
+
// disable_level_callback [write] — 无参数
|
|
14
|
+
server.tool("disable_level_callback", "禁用电平计算(安全模式)/ Disable level calculation (Safe Mode) [write]", {}, async () => handleToolCall("disable_level_callback", "write", () => client.disableLevelCallback()));
|
|
15
|
+
// enable_level_callback [write] — 无参数
|
|
16
|
+
server.tool("enable_level_callback", "启用电平计算 / Enable level calculation [write]", {}, async () => handleToolCall("enable_level_callback", "write", () => client.enableLevelCallback()));
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=levels.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"levels.js","sourceRoot":"","sources":["../../src/tools/levels.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,UAAU,kBAAkB,CAAC,MAAiB;IAClD,MAAM,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAC;IAEvC,iCAAiC;IACjC,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,uDAAuD,EACvD,EAAE,EACF,KAAK,IAAI,EAAE,CACT,cAAc,CAAC,kBAAkB,EAAE,OAAO,EAAE,GAAG,EAAE,CAC/C,MAAM,CAAC,eAAe,EAAE,CACzB,CACJ,CAAC;IAEF,mCAAmC;IACnC,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,mDAAmD,EACnD,EAAE,EACF,KAAK,IAAI,EAAE,CACT,cAAc,CAAC,oBAAoB,EAAE,OAAO,EAAE,GAAG,EAAE,CACjD,MAAM,CAAC,iBAAiB,EAAE,CAC3B,CACJ,CAAC;IAEF,uCAAuC;IACvC,MAAM,CAAC,IAAI,CACT,wBAAwB,EACxB,6DAA6D,EAC7D,EAAE,EACF,KAAK,IAAI,EAAE,CACT,cAAc,CAAC,wBAAwB,EAAE,OAAO,EAAE,GAAG,EAAE,CACrD,MAAM,CAAC,oBAAoB,EAAE,CAC9B,CACJ,CAAC;IAEF,sCAAsC;IACtC,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,2CAA2C,EAC3C,EAAE,EACF,KAAK,IAAI,EAAE,CACT,cAAc,CAAC,uBAAuB,EAAE,OAAO,EAAE,GAAG,EAAE,CACpD,MAAM,CAAC,mBAAmB,EAAE,CAC7B,CACJ,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 轨道与标记 Tools — 轨道管理与标记点操作
|
|
3
|
+
* Track & Marker Tools — Track management and marker operations
|
|
4
|
+
*/
|
|
5
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
6
|
+
export declare function registerMarkerTools(server: McpServer): void;
|
|
7
|
+
//# sourceMappingURL=markers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markers.d.ts","sourceRoot":"","sources":["../../src/tools/markers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKpE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,QAyFpD"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 轨道与标记 Tools — 轨道管理与标记点操作
|
|
3
|
+
* Track & Marker Tools — Track management and marker operations
|
|
4
|
+
*/
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
import { RecordSaferClient } from "../api-client.js";
|
|
7
|
+
import { handleToolCall } from "../utils.js";
|
|
8
|
+
export function registerMarkerTools(server) {
|
|
9
|
+
const client = new RecordSaferClient();
|
|
10
|
+
// list_tracks [read] — 无参数
|
|
11
|
+
server.tool("list_tracks", "列出可用轨道 / List available tracks [read]", {}, async () => handleToolCall("list_tracks", "read", () => client.listTracks()));
|
|
12
|
+
// stop_track [write] — 需要 trackId
|
|
13
|
+
server.tool("stop_track", "停止轨道 / Stop a track [write]", { trackId: z.string().min(1).describe("轨道ID / Track ID") }, async ({ trackId }) => handleToolCall("stop_track", "write", () => client.stopTrack(trackId)));
|
|
14
|
+
// list_markers [read] — 无参数
|
|
15
|
+
server.tool("list_markers", "列出所有标记 / List all markers [read]", {}, async () => handleToolCall("list_markers", "read", () => client.listMarkers()));
|
|
16
|
+
// add_marker [write] — 可选 label
|
|
17
|
+
server.tool("add_marker", "添加标记 / Add a marker [write]", { label: z.string().optional().describe("标记名称 / Marker label") }, async ({ label }) => handleToolCall("add_marker", "write", () => client.addMarker(label)));
|
|
18
|
+
// sync_markers [write] — 无参数
|
|
19
|
+
server.tool("sync_markers", "同步标记 / Sync markers [write]", {}, async () => handleToolCall("sync_markers", "write", () => client.syncMarkers()));
|
|
20
|
+
// rename_marker [write] — 需要 id 和 name
|
|
21
|
+
server.tool("rename_marker", "重命名标记 / Rename a marker [write]", {
|
|
22
|
+
id: z.string().min(1).describe("标记ID / Marker ID"),
|
|
23
|
+
name: z.string().min(1).describe("新名称 / New name"),
|
|
24
|
+
}, async ({ id, name }) => handleToolCall("rename_marker", "write", () => client.renameMarker(id, name)));
|
|
25
|
+
// rename_channel [write] — 需要 id 和 name
|
|
26
|
+
server.tool("rename_channel", "重命名通道 / Rename a channel [write]", {
|
|
27
|
+
id: z.string().min(1).describe("通道ID / Channel ID"),
|
|
28
|
+
name: z.string().min(1).describe("新名称 / New name"),
|
|
29
|
+
}, async ({ id, name }) => handleToolCall("rename_channel", "write", () => client.renameChannel(id, name)));
|
|
30
|
+
// set_channel_color [write] — 需要 id 和 color
|
|
31
|
+
server.tool("set_channel_color", "设置通道颜色 / Set channel color [write]", {
|
|
32
|
+
id: z.string().min(1).describe("通道ID / Channel ID"),
|
|
33
|
+
color: z.string().min(1).describe("颜色值 / Color value"),
|
|
34
|
+
}, async ({ id, color }) => handleToolCall("set_channel_color", "write", () => client.setChannelColor(id, color)));
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=markers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markers.js","sourceRoot":"","sources":["../../src/tools/markers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,UAAU,mBAAmB,CAAC,MAAiB;IACnD,MAAM,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAC;IAEvC,2BAA2B;IAC3B,MAAM,CAAC,IAAI,CACT,aAAa,EACb,uCAAuC,EACvC,EAAE,EACF,KAAK,IAAI,EAAE,CACT,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CACnE,CAAC;IAEF,kCAAkC;IAClC,MAAM,CAAC,IAAI,CACT,YAAY,EACZ,6BAA6B,EAC7B,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,EAC1D,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CACpB,cAAc,CAAC,YAAY,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CACzE,CAAC;IAEF,4BAA4B;IAC5B,MAAM,CAAC,IAAI,CACT,cAAc,EACd,kCAAkC,EAClC,EAAE,EACF,KAAK,IAAI,EAAE,CACT,cAAc,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CACrE,CAAC;IAEF,gCAAgC;IAChC,MAAM,CAAC,IAAI,CACT,YAAY,EACZ,6BAA6B,EAC7B,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,EAChE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAClB,cAAc,CAAC,YAAY,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CACvE,CAAC;IAEF,6BAA6B;IAC7B,MAAM,CAAC,IAAI,CACT,cAAc,EACd,6BAA6B,EAC7B,EAAE,EACF,KAAK,IAAI,EAAE,CACT,cAAc,CAAC,cAAc,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CACtE,CAAC;IAEF,uCAAuC;IACvC,MAAM,CAAC,IAAI,CACT,eAAe,EACf,iCAAiC,EACjC;QACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAClD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC;KACnD,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CACrB,cAAc,CAAC,eAAe,EAAE,OAAO,EAAE,GAAG,EAAE,CAC5C,MAAM,CAAC,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,CAC9B,CACJ,CAAC;IAEF,wCAAwC;IACxC,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,kCAAkC,EAClC;QACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QACnD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC;KACnD,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CACrB,cAAc,CAAC,gBAAgB,EAAE,OAAO,EAAE,GAAG,EAAE,CAC7C,MAAM,CAAC,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,CAC/B,CACJ,CAAC;IAEF,4CAA4C;IAC5C,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,oCAAoC,EACpC;QACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QACnD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;KACvD,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CACtB,cAAc,CAAC,mBAAmB,EAAE,OAAO,EAAE,GAAG,EAAE,CAChD,MAAM,CAAC,eAAe,CAAC,EAAE,EAAE,KAAK,CAAC,CAClC,CACJ,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 监听/DSP 控制 Tools — 监听混音器与通道控制
|
|
3
|
+
* Monitor/DSP Control Tools — Monitor mixer and channel controls
|
|
4
|
+
*/
|
|
5
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
6
|
+
export declare function registerMonitorTools(server: McpServer): void;
|
|
7
|
+
//# sourceMappingURL=monitor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"monitor.d.ts","sourceRoot":"","sources":["../../src/tools/monitor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AASpE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,QAuIrD"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 监听/DSP 控制 Tools — 监听混音器与通道控制
|
|
3
|
+
* Monitor/DSP Control Tools — Monitor mixer and channel controls
|
|
4
|
+
*/
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
import { RecordSaferClient } from "../api-client.js";
|
|
7
|
+
import { handleToolCall } from "../utils.js";
|
|
8
|
+
const channelIndexSchema = {
|
|
9
|
+
index: z.number().int().min(0).describe("通道索引 / Channel index"),
|
|
10
|
+
};
|
|
11
|
+
export function registerMonitorTools(server) {
|
|
12
|
+
const client = new RecordSaferClient();
|
|
13
|
+
// ===== 监听状态 =====
|
|
14
|
+
server.tool("get_monitor_status", "获取监听状态 / Get monitor status [read]", {}, async () => handleToolCall("get_monitor_status", "read", () => client.getMonitorStatus()));
|
|
15
|
+
server.tool("start_monitor", "启动监听 / Start monitoring [recording_control]", {}, async () => handleToolCall("start_monitor", "recording_control", () => client.startMonitor()));
|
|
16
|
+
server.tool("stop_monitor", "停止监听 / Stop monitoring [recording_control]", {}, async () => handleToolCall("stop_monitor", "recording_control", () => client.stopMonitor()));
|
|
17
|
+
server.tool("set_master_volume", "设置主音量 / Set master volume [write]", {
|
|
18
|
+
volume: z.number().describe("主音量 / Master volume"),
|
|
19
|
+
pan: z
|
|
20
|
+
.number()
|
|
21
|
+
.min(-1)
|
|
22
|
+
.max(1)
|
|
23
|
+
.optional()
|
|
24
|
+
.describe("主声像 (-1.0 到 1.0) / Master pan (-1.0 to 1.0)"),
|
|
25
|
+
}, async ({ volume, pan }) => handleToolCall("set_master_volume", "write", () => client.setMasterVolume(volume, pan)));
|
|
26
|
+
server.tool("get_mix_levels", "获取混音电平 / Get current mix levels [read]", {}, async () => handleToolCall("get_mix_levels", "read", () => client.getMixLevels()));
|
|
27
|
+
// ===== 通道控制 =====
|
|
28
|
+
server.tool("set_channel_volume", "设置通道音量 / Set channel volume [write]", {
|
|
29
|
+
...channelIndexSchema,
|
|
30
|
+
volume: z.number().describe("通道音量 / Channel volume"),
|
|
31
|
+
}, async ({ index, volume }) => handleToolCall("set_channel_volume", "write", () => client.setChannelVolume(index, volume)));
|
|
32
|
+
server.tool("set_channel_pan", "设置通道声像 / Set channel pan [write]", {
|
|
33
|
+
...channelIndexSchema,
|
|
34
|
+
pan: z
|
|
35
|
+
.number()
|
|
36
|
+
.min(-1)
|
|
37
|
+
.max(1)
|
|
38
|
+
.describe("通道声像 (-1.0 到 1.0) / Channel pan (-1.0 to 1.0)"),
|
|
39
|
+
}, async ({ index, pan }) => handleToolCall("set_channel_pan", "write", () => client.setChannelPan(index, pan)));
|
|
40
|
+
server.tool("toggle_channel_solo", "切换通道独奏 / Toggle channel solo [write]", channelIndexSchema, async ({ index }) => handleToolCall("toggle_channel_solo", "write", () => client.toggleChannelSolo(index)));
|
|
41
|
+
server.tool("toggle_channel_mute", "切换通道静音 / Toggle channel mute [write]", channelIndexSchema, async ({ index }) => handleToolCall("toggle_channel_mute", "write", () => client.toggleChannelMute(index)));
|
|
42
|
+
server.tool("set_channel_ms_process", "设置通道 M/S 处理 / Set channel M/S processing [write]", {
|
|
43
|
+
...channelIndexSchema,
|
|
44
|
+
enabled: z.boolean().describe("是否启用 / Enable or disable"),
|
|
45
|
+
}, async ({ index, enabled }) => handleToolCall("set_channel_ms_process", "write", () => client.setChannelMsProcess(index, enabled)));
|
|
46
|
+
server.tool("toggle_channel_phase_invert", "切换通道相位反转 / Toggle channel phase invert [write]", channelIndexSchema, async ({ index }) => handleToolCall("toggle_channel_phase_invert", "write", () => client.toggleChannelPhaseInvert(index)));
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=monitor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"monitor.js","sourceRoot":"","sources":["../../src/tools/monitor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 录音控制 Tools — 会话初始化、录音启停、状态查询
|
|
3
|
+
* Recording Control Tools — Session initialization, recording start/stop, status query
|
|
4
|
+
*/
|
|
5
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
6
|
+
export declare function registerRecordingTools(server: McpServer): void;
|
|
7
|
+
//# sourceMappingURL=recording.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recording.d.ts","sourceRoot":"","sources":["../../src/tools/recording.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKpE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,QAwEvD"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 录音控制 Tools — 会话初始化、录音启停、状态查询
|
|
3
|
+
* Recording Control Tools — Session initialization, recording start/stop, status query
|
|
4
|
+
*/
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
import { RecordSaferClient } from "../api-client.js";
|
|
7
|
+
import { handleToolCall } from "../utils.js";
|
|
8
|
+
export function registerRecordingTools(server) {
|
|
9
|
+
const client = new RecordSaferClient();
|
|
10
|
+
// initialize_session [recording_control]
|
|
11
|
+
server.tool("initialize_session", "初始化录音会话 / Initialize recording session [recording_control]", {
|
|
12
|
+
deviceId: z.string().min(1).describe("设备ID / Device ID"),
|
|
13
|
+
sampleRate: z.number().describe("采样率 / Sample rate"),
|
|
14
|
+
bitDepth: z
|
|
15
|
+
.enum(["16-bit", "24-bit", "32-bit Float"])
|
|
16
|
+
.describe("位深度 / Bit depth"),
|
|
17
|
+
channels: z
|
|
18
|
+
.array(z.number())
|
|
19
|
+
.describe("通道列表 / Channel list"),
|
|
20
|
+
outputPath: z.string().min(1).describe("输出路径 / Output path"),
|
|
21
|
+
audioFormat: z
|
|
22
|
+
.enum(["wav", "caf"])
|
|
23
|
+
.describe("音频格式 / Audio format"),
|
|
24
|
+
}, async ({ deviceId, sampleRate, bitDepth, channels, outputPath, audioFormat }) => handleToolCall("initialize_session", "recording_control", () => client.initializeSession({ deviceId, sampleRate, bitDepth, channels, outputPath, audioFormat })));
|
|
25
|
+
// reset_session [recording_control]
|
|
26
|
+
server.tool("reset_session", "重置当前会话 / Reset current session [recording_control]", {}, async () => handleToolCall("reset_session", "recording_control", () => client.resetSession()));
|
|
27
|
+
// start_recording [recording_control]
|
|
28
|
+
server.tool("start_recording", "开始录音 / Start recording [recording_control]", {
|
|
29
|
+
safeMode: z.boolean().optional().describe("安全模式 / Safe mode"),
|
|
30
|
+
}, async ({ safeMode }) => handleToolCall("start_recording", "recording_control", () => client.startRecording(safeMode !== undefined ? { safeMode } : undefined)));
|
|
31
|
+
// stop_recording [recording_control]
|
|
32
|
+
server.tool("stop_recording", "停止录音 / Stop recording [recording_control]", {}, async () => handleToolCall("stop_recording", "recording_control", () => client.stopRecording()));
|
|
33
|
+
// get_recording_status [read]
|
|
34
|
+
server.tool("get_recording_status", "获取录音状态 / Get current recording status [read]", {}, async () => handleToolCall("get_recording_status", "read", () => client.getRecordingStatus()));
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=recording.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recording.js","sourceRoot":"","sources":["../../src/tools/recording.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,UAAU,sBAAsB,CAAC,MAAiB;IACtD,MAAM,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAC;IAEvC,yCAAyC;IACzC,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,4DAA4D,EAC5D;QACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QACxD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QACpD,QAAQ,EAAE,CAAC;aACR,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;aAC1C,QAAQ,CAAC,iBAAiB,CAAC;QAC9B,QAAQ,EAAE,CAAC;aACR,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;aACjB,QAAQ,CAAC,qBAAqB,CAAC;QAClC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QAC5D,WAAW,EAAE,CAAC;aACX,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;aACpB,QAAQ,CAAC,qBAAqB,CAAC;KACnC,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,EAAE,EAAE,CAC9E,cAAc,CAAC,oBAAoB,EAAE,mBAAmB,EAAE,GAAG,EAAE,CAC7D,MAAM,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAChG,CACJ,CAAC;IAEF,oCAAoC;IACpC,MAAM,CAAC,IAAI,CACT,eAAe,EACf,oDAAoD,EACpD,EAAE,EACF,KAAK,IAAI,EAAE,CACT,cAAc,CAAC,eAAe,EAAE,mBAAmB,EAAE,GAAG,EAAE,CACxD,MAAM,CAAC,YAAY,EAAE,CACtB,CACJ,CAAC;IAEF,sCAAsC;IACtC,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB,4CAA4C,EAC5C;QACE,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;KAC9D,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CACrB,cAAc,CAAC,iBAAiB,EAAE,mBAAmB,EAAE,GAAG,EAAE,CAC1D,MAAM,CAAC,cAAc,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CACzE,CACJ,CAAC;IAEF,qCAAqC;IACrC,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,2CAA2C,EAC3C,EAAE,EACF,KAAK,IAAI,EAAE,CACT,cAAc,CAAC,gBAAgB,EAAE,mBAAmB,EAAE,GAAG,EAAE,CACzD,MAAM,CAAC,aAAa,EAAE,CACvB,CACJ,CAAC;IAEF,8BAA8B;IAC9B,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,8CAA8C,EAC9C,EAAE,EACF,KAAK,IAAI,EAAE,CACT,cAAc,CAAC,sBAAsB,EAAE,MAAM,EAAE,GAAG,EAAE,CAClD,MAAM,CAAC,kBAAkB,EAAE,CAC5B,CACJ,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 配置管理 Tools — 输出路径、音频格式、系统设置
|
|
3
|
+
* Settings Management Tools — Output path, audio format, system settings
|
|
4
|
+
*/
|
|
5
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
6
|
+
export declare function registerSettingsTools(server: McpServer): void;
|
|
7
|
+
//# sourceMappingURL=settings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/tools/settings.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKpE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,QA0EtD"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 配置管理 Tools — 输出路径、音频格式、系统设置
|
|
3
|
+
* Settings Management Tools — Output path, audio format, system settings
|
|
4
|
+
*/
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
import { RecordSaferClient } from "../api-client.js";
|
|
7
|
+
import { handleToolCall } from "../utils.js";
|
|
8
|
+
export function registerSettingsTools(server) {
|
|
9
|
+
const client = new RecordSaferClient();
|
|
10
|
+
// get_output_path [read] — 无参数
|
|
11
|
+
server.tool("get_output_path", "获取当前输出目录 / Get current output directory [read]", {}, async () => handleToolCall("get_output_path", "read", () => client.getOutputPath()));
|
|
12
|
+
// set_output_path [write] — 需要 path
|
|
13
|
+
server.tool("set_output_path", "设置输出目录 / Set output directory [write]", {
|
|
14
|
+
path: z.string().min(1).describe("输出路径 / Output path"),
|
|
15
|
+
}, async ({ path }) => handleToolCall("set_output_path", "write", () => client.setOutputPath(path)));
|
|
16
|
+
// get_audio_format [read] — 无参数
|
|
17
|
+
server.tool("get_audio_format", "获取当前音频格式设置 / Get current audio format settings [read]", {}, async () => handleToolCall("get_audio_format", "read", () => client.getAudioFormat()));
|
|
18
|
+
// set_audio_format [write] — 可选 format, sampleRate, bitDepth
|
|
19
|
+
server.tool("set_audio_format", "设置音频格式 / Set audio format [write]", {
|
|
20
|
+
format: z.enum(["wav", "caf"]).optional(),
|
|
21
|
+
sampleRate: z.number().optional(),
|
|
22
|
+
bitDepth: z.enum(["16-bit", "24-bit", "32-bit Float"]).optional(),
|
|
23
|
+
}, async ({ format, sampleRate, bitDepth }) => handleToolCall("set_audio_format", "write", () => client.setAudioFormat({ format, sampleRate, bitDepth })));
|
|
24
|
+
// get_settings [read] — 无参数
|
|
25
|
+
server.tool("get_settings", "获取所有系统设置 / Get all system settings [read]", {}, async () => handleToolCall("get_settings", "read", () => client.getSettings()));
|
|
26
|
+
// update_settings [write] — 需要 settings 对象
|
|
27
|
+
server.tool("update_settings", "更新系统设置 / Update system settings [write]", {
|
|
28
|
+
settings: z
|
|
29
|
+
.record(z.unknown())
|
|
30
|
+
.describe("设置键值对 / Settings key-value pairs"),
|
|
31
|
+
}, async ({ settings }) => handleToolCall("update_settings", "write", () => client.updateSettings(settings)));
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/tools/settings.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,UAAU,qBAAqB,CAAC,MAAiB;IACrD,MAAM,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAC;IAEvC,+BAA+B;IAC/B,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB,gDAAgD,EAChD,EAAE,EACF,KAAK,IAAI,EAAE,CACT,cAAc,CAAC,iBAAiB,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAC1E,CAAC;IAEF,oCAAoC;IACpC,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB,uCAAuC,EACvC;QACE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC;KACvD,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CACjB,cAAc,CAAC,iBAAiB,EAAE,OAAO,EAAE,GAAG,EAAE,CAC9C,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAC3B,CACJ,CAAC;IAEF,gCAAgC;IAChC,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,uDAAuD,EACvD,EAAE,EACF,KAAK,IAAI,EAAE,CACT,cAAc,CAAC,kBAAkB,EAAE,MAAM,EAAE,GAAG,EAAE,CAC9C,MAAM,CAAC,cAAc,EAAE,CACxB,CACJ,CAAC;IAEF,6DAA6D;IAC7D,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,mCAAmC,EACnC;QACE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE;QACzC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACjC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,QAAQ,EAAE;KAClE,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,CACzC,cAAc,CAAC,kBAAkB,EAAE,OAAO,EAAE,GAAG,EAAE,CAC/C,MAAM,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CACxD,CACJ,CAAC;IAEF,4BAA4B;IAC5B,MAAM,CAAC,IAAI,CACT,cAAc,EACd,2CAA2C,EAC3C,EAAE,EACF,KAAK,IAAI,EAAE,CACT,cAAc,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CACrE,CAAC;IAEF,2CAA2C;IAC3C,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB,yCAAyC,EACzC;QACE,QAAQ,EAAE,CAAC;aACR,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;aACnB,QAAQ,CAAC,kCAAkC,CAAC;KAChD,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CACrB,cAAc,CAAC,iBAAiB,EAAE,OAAO,EAAE,GAAG,EAAE,CAC9C,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAChC,CACJ,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 存储管理 Tools — 存储卷、外部驱动器、路径验证与锁定
|
|
3
|
+
* Storage Management Tools — Volumes, external drives, path validation and locking
|
|
4
|
+
*/
|
|
5
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
6
|
+
export declare function registerStorageTools(server: McpServer): void;
|
|
7
|
+
//# sourceMappingURL=storage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/tools/storage.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKpE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,QAmDrD"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 存储管理 Tools — 存储卷、外部驱动器、路径验证与锁定
|
|
3
|
+
* Storage Management Tools — Volumes, external drives, path validation and locking
|
|
4
|
+
*/
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
import { RecordSaferClient } from "../api-client.js";
|
|
7
|
+
import { handleToolCall } from "../utils.js";
|
|
8
|
+
export function registerStorageTools(server) {
|
|
9
|
+
const client = new RecordSaferClient();
|
|
10
|
+
// list_volumes [read] — 无参数
|
|
11
|
+
server.tool("list_volumes", "列出存储卷 / List storage volumes [read]", {}, async () => handleToolCall("list_volumes", "read", () => client.listVolumes()));
|
|
12
|
+
// list_external_drives [read] — 无参数
|
|
13
|
+
server.tool("list_external_drives", "列出外部驱动器 / List external drives [read]", {}, async () => handleToolCall("list_external_drives", "read", () => client.listExternalDrives()));
|
|
14
|
+
// validate_storage_path [write] — 需要 path
|
|
15
|
+
server.tool("validate_storage_path", "验证存储路径 / Validate storage path [write]", { path: z.string().min(1).describe("存储路径 / Storage path") }, async ({ path }) => handleToolCall("validate_storage_path", "write", () => client.validateStoragePath(path)));
|
|
16
|
+
// lock_storage [write] — 无参数
|
|
17
|
+
server.tool("lock_storage", "锁定存储 / Lock storage [write]", {}, async () => handleToolCall("lock_storage", "write", () => client.lockStorage()));
|
|
18
|
+
// unlock_storage [write] — 无参数
|
|
19
|
+
server.tool("unlock_storage", "解锁存储 / Unlock storage [write]", {}, async () => handleToolCall("unlock_storage", "write", () => client.unlockStorage()));
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/tools/storage.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,UAAU,oBAAoB,CAAC,MAAiB;IACpD,MAAM,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAC;IAEvC,4BAA4B;IAC5B,MAAM,CAAC,IAAI,CACT,cAAc,EACd,qCAAqC,EACrC,EAAE,EACF,KAAK,IAAI,EAAE,CACT,cAAc,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CACrE,CAAC;IAEF,oCAAoC;IACpC,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,uCAAuC,EACvC,EAAE,EACF,KAAK,IAAI,EAAE,CACT,cAAc,CAAC,sBAAsB,EAAE,MAAM,EAAE,GAAG,EAAE,CAClD,MAAM,CAAC,kBAAkB,EAAE,CAC5B,CACJ,CAAC;IAEF,0CAA0C;IAC1C,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,wCAAwC,EACxC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,EAC3D,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CACjB,cAAc,CAAC,uBAAuB,EAAE,OAAO,EAAE,GAAG,EAAE,CACpD,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,CACjC,CACJ,CAAC;IAEF,6BAA6B;IAC7B,MAAM,CAAC,IAAI,CACT,cAAc,EACd,6BAA6B,EAC7B,EAAE,EACF,KAAK,IAAI,EAAE,CACT,cAAc,CAAC,cAAc,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CACtE,CAAC;IAEF,+BAA+B;IAC/B,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,+BAA+B,EAC/B,EAAE,EACF,KAAK,IAAI,EAAE,CACT,cAAc,CAAC,gBAAgB,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAC1E,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 系统、激活、文件工具与系统控制 Tools
|
|
3
|
+
* System, Activation, File Tools & System Control Tools
|
|
4
|
+
*/
|
|
5
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
6
|
+
export declare function registerSystemTools(server: McpServer): void;
|
|
7
|
+
//# sourceMappingURL=system.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../src/tools/system.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKpE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,QAgLpD"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 系统、激活、文件工具与系统控制 Tools
|
|
3
|
+
* System, Activation, File Tools & System Control Tools
|
|
4
|
+
*/
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
import { RecordSaferClient } from "../api-client.js";
|
|
7
|
+
import { handleToolCall } from "../utils.js";
|
|
8
|
+
export function registerSystemTools(server) {
|
|
9
|
+
const client = new RecordSaferClient();
|
|
10
|
+
// ===== 系统信息与更新 (Requirements 10.1-10.7) =====
|
|
11
|
+
// get_system_info [read] — 无参数
|
|
12
|
+
server.tool("get_system_info", "获取系统信息 / Get system information [read]", {}, async () => handleToolCall("get_system_info", "read", () => client.getSystemInfo()));
|
|
13
|
+
// get_disk_space [read] — 无参数
|
|
14
|
+
server.tool("get_disk_space", "获取磁盘空间信息 / Get disk space information [read]", {}, async () => handleToolCall("get_disk_space", "read", () => client.getDiskSpace()));
|
|
15
|
+
// check_disk_health [write] — 无参数
|
|
16
|
+
server.tool("check_disk_health", "检查磁盘健康状态 / Check disk health [write]", {}, async () => handleToolCall("check_disk_health", "write", () => client.checkDiskHealth()));
|
|
17
|
+
// check_updates [read] — 无参数
|
|
18
|
+
server.tool("check_updates", "检查更新 / Check for updates [read]", {}, async () => handleToolCall("check_updates", "read", () => client.checkUpdates()));
|
|
19
|
+
// get_update_badge [read] — 无参数
|
|
20
|
+
server.tool("get_update_badge", "获取更新徽章信息 / Get update badge info [read]", {}, async () => handleToolCall("get_update_badge", "read", () => client.getUpdateBadge()));
|
|
21
|
+
// install_update [recording_control] — 无参数
|
|
22
|
+
server.tool("install_update", "安装更新 / Install update [recording_control]", {}, async () => handleToolCall("install_update", "recording_control", () => client.installUpdate()));
|
|
23
|
+
// get_download_progress [read] — 无参数
|
|
24
|
+
server.tool("get_download_progress", "获取下载进度 / Get download progress [read]", {}, async () => handleToolCall("get_download_progress", "read", () => client.getDownloadProgress()));
|
|
25
|
+
// ===== 激活与许可 (Requirements 11.1-11.4) =====
|
|
26
|
+
// activate_license [write] — 需要 key
|
|
27
|
+
server.tool("activate_license", "激活许可证 / Activate license [write]", { key: z.string().min(1).describe("许可证密钥 / License key") }, async ({ key }) => handleToolCall("activate_license", "write", () => client.activateLicense(key)));
|
|
28
|
+
// get_activation_status [read] — 无参数
|
|
29
|
+
server.tool("get_activation_status", "获取激活状态 / Get activation status [read]", {}, async () => handleToolCall("get_activation_status", "read", () => client.getActivationStatus()));
|
|
30
|
+
// set_activation [write] — 需要 data
|
|
31
|
+
server.tool("set_activation", "设置激活数据 / Set activation data [write]", { data: z.record(z.unknown()).describe("激活数据 / Activation data") }, async ({ data }) => handleToolCall("set_activation", "write", () => client.setActivation(data)));
|
|
32
|
+
// restore_license [write] — 无参数
|
|
33
|
+
server.tool("restore_license", "恢复许可证 / Restore license [write]", {}, async () => handleToolCall("restore_license", "write", () => client.restoreLicense()));
|
|
34
|
+
// ===== 文件工具 (Requirements 12.1-12.3) =====
|
|
35
|
+
// start_split [recording_control] — 需要 params
|
|
36
|
+
server.tool("start_split", "开始文件分割 / Start file split [recording_control]", { params: z.record(z.unknown()).describe("分割参数 / Split parameters") }, async ({ params }) => handleToolCall("start_split", "recording_control", () => client.startSplit(params)));
|
|
37
|
+
// get_split_progress [read] — 无参数
|
|
38
|
+
server.tool("get_split_progress", "获取分割进度 / Get split progress [read]", {}, async () => handleToolCall("get_split_progress", "read", () => client.getSplitProgress()));
|
|
39
|
+
// cancel_split [recording_control] — 无参数
|
|
40
|
+
server.tool("cancel_split", "取消分割 / Cancel split [recording_control]", {}, async () => handleToolCall("cancel_split", "recording_control", () => client.cancelSplit()));
|
|
41
|
+
// ===== 系统控制 (Requirements 13.1-13.2) =====
|
|
42
|
+
// send_telemetry [write] — 需要 data
|
|
43
|
+
server.tool("send_telemetry", "发送遥测数据 / Send telemetry data [write]", { data: z.record(z.unknown()).describe("遥测数据 / Telemetry data") }, async ({ data }) => handleToolCall("send_telemetry", "write", () => client.sendTelemetry(data)));
|
|
44
|
+
// shutdown [recording_control] — 无参数
|
|
45
|
+
server.tool("shutdown", "关闭后端服务 / Shutdown backend service [recording_control]", {}, async () => handleToolCall("shutdown", "recording_control", () => client.shutdown()));
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=system.js.map
|