@cicctencent/agent-midway 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.
Files changed (160) hide show
  1. package/README.md +280 -0
  2. package/dist/adapters/express.d.ts +8 -0
  3. package/dist/adapters/express.js +91 -0
  4. package/dist/adapters/index.d.ts +5 -0
  5. package/dist/adapters/index.js +21 -0
  6. package/dist/adapters/koa.d.ts +3 -0
  7. package/dist/adapters/koa.js +75 -0
  8. package/dist/adapters/midway.d.ts +5 -0
  9. package/dist/adapters/midway.js +11 -0
  10. package/dist/adapters/next.d.ts +12 -0
  11. package/dist/adapters/next.js +89 -0
  12. package/dist/adapters/shared.d.ts +4 -0
  13. package/dist/adapters/shared.js +31 -0
  14. package/dist/channel/dingtalk.d.ts +18 -0
  15. package/dist/channel/dingtalk.js +68 -0
  16. package/dist/channel/feishu.d.ts +20 -0
  17. package/dist/channel/feishu.js +96 -0
  18. package/dist/channel/index.d.ts +46 -0
  19. package/dist/channel/index.js +311 -0
  20. package/dist/channel/types.d.ts +77 -0
  21. package/dist/channel/types.js +7 -0
  22. package/dist/channel/wecom.d.ts +22 -0
  23. package/dist/channel/wecom.js +106 -0
  24. package/dist/component.d.ts +49 -0
  25. package/dist/component.js +129 -0
  26. package/dist/connector/calendar-adapter.d.ts +19 -0
  27. package/dist/connector/calendar-adapter.js +236 -0
  28. package/dist/connector/db-adapter.d.ts +28 -0
  29. package/dist/connector/db-adapter.js +193 -0
  30. package/dist/connector/email-adapter.d.ts +23 -0
  31. package/dist/connector/email-adapter.js +192 -0
  32. package/dist/connector/fs-adapter.d.ts +15 -0
  33. package/dist/connector/fs-adapter.js +199 -0
  34. package/dist/connector/http-adapter.d.ts +29 -0
  35. package/dist/connector/http-adapter.js +181 -0
  36. package/dist/connector/index.d.ts +24 -0
  37. package/dist/connector/index.js +454 -0
  38. package/dist/connector/mcp-adapter.d.ts +27 -0
  39. package/dist/connector/mcp-adapter.js +156 -0
  40. package/dist/connector/mq-adapter.d.ts +25 -0
  41. package/dist/connector/mq-adapter.js +181 -0
  42. package/dist/connector/types.d.ts +205 -0
  43. package/dist/connector/types.js +9 -0
  44. package/dist/controller/a2a.controller.d.ts +41 -0
  45. package/dist/controller/a2a.controller.js +150 -0
  46. package/dist/controller/agent-profile.controller.d.ts +97 -0
  47. package/dist/controller/agent-profile.controller.js +200 -0
  48. package/dist/controller/agent.controller.d.ts +199 -0
  49. package/dist/controller/agent.controller.js +414 -0
  50. package/dist/controller/application.controller.d.ts +113 -0
  51. package/dist/controller/application.controller.js +217 -0
  52. package/dist/controller/automation.controller.d.ts +113 -0
  53. package/dist/controller/automation.controller.js +246 -0
  54. package/dist/controller/channel.controller.d.ts +73 -0
  55. package/dist/controller/channel.controller.js +183 -0
  56. package/dist/controller/chat.controller.d.ts +188 -0
  57. package/dist/controller/chat.controller.js +375 -0
  58. package/dist/controller/connector.controller.d.ts +134 -0
  59. package/dist/controller/connector.controller.js +257 -0
  60. package/dist/controller/knowledge-base.controller.d.ts +157 -0
  61. package/dist/controller/knowledge-base.controller.js +278 -0
  62. package/dist/controller/mcp-server.controller.d.ts +115 -0
  63. package/dist/controller/mcp-server.controller.js +236 -0
  64. package/dist/controller/model-config.controller.d.ts +139 -0
  65. package/dist/controller/model-config.controller.js +274 -0
  66. package/dist/controller/observability.controller.d.ts +124 -0
  67. package/dist/controller/observability.controller.js +142 -0
  68. package/dist/controller/security.controller.d.ts +91 -0
  69. package/dist/controller/security.controller.js +172 -0
  70. package/dist/controller/settings.controller.d.ts +83 -0
  71. package/dist/controller/settings.controller.js +280 -0
  72. package/dist/core/ai-workstation.d.ts +17 -0
  73. package/dist/core/ai-workstation.js +129 -0
  74. package/dist/core/index.d.ts +4 -0
  75. package/dist/core/index.js +20 -0
  76. package/dist/core/service-container.d.ts +12 -0
  77. package/dist/core/service-container.js +54 -0
  78. package/dist/core/sse.d.ts +6 -0
  79. package/dist/core/sse.js +56 -0
  80. package/dist/core/types.d.ts +72 -0
  81. package/dist/core/types.js +2 -0
  82. package/dist/dto/agent.dto.d.ts +21 -0
  83. package/dist/dto/agent.dto.js +79 -0
  84. package/dist/dto/ai-config.dto.d.ts +67 -0
  85. package/dist/dto/ai-config.dto.js +249 -0
  86. package/dist/dto/chat.dto.d.ts +40 -0
  87. package/dist/dto/chat.dto.js +122 -0
  88. package/dist/index.d.ts +101 -0
  89. package/dist/index.js +195 -0
  90. package/dist/memory/db-store.d.ts +33 -0
  91. package/dist/memory/db-store.js +143 -0
  92. package/dist/memory/index.d.ts +187 -0
  93. package/dist/memory/index.js +443 -0
  94. package/dist/model/ai-agent-profile.entity.d.ts +32 -0
  95. package/dist/model/ai-agent-profile.entity.js +289 -0
  96. package/dist/model/ai-application.entity.d.ts +20 -0
  97. package/dist/model/ai-application.entity.js +166 -0
  98. package/dist/model/ai-chat-memory.entity.d.ts +16 -0
  99. package/dist/model/ai-chat-memory.entity.js +123 -0
  100. package/dist/model/ai-chat-message.entity.d.ts +16 -0
  101. package/dist/model/ai-chat-message.entity.js +122 -0
  102. package/dist/model/ai-chat-skill.entity.d.ts +19 -0
  103. package/dist/model/ai-chat-skill.entity.js +155 -0
  104. package/dist/model/ai-chat-thread.entity.d.ts +15 -0
  105. package/dist/model/ai-chat-thread.entity.js +113 -0
  106. package/dist/model/ai-chat-workspace.entity.d.ts +17 -0
  107. package/dist/model/ai-chat-workspace.entity.js +136 -0
  108. package/dist/model/ai-kb-document.entity.d.ts +16 -0
  109. package/dist/model/ai-kb-document.entity.js +122 -0
  110. package/dist/model/ai-knowledge-base.entity.d.ts +22 -0
  111. package/dist/model/ai-knowledge-base.entity.js +185 -0
  112. package/dist/model/ai-mcp-server.entity.d.ts +23 -0
  113. package/dist/model/ai-mcp-server.entity.js +198 -0
  114. package/dist/model/ai-model-config.entity.d.ts +24 -0
  115. package/dist/model/ai-model-config.entity.js +200 -0
  116. package/dist/service/a2a.service.d.ts +142 -0
  117. package/dist/service/a2a.service.js +537 -0
  118. package/dist/service/agent-profile.service.d.ts +34 -0
  119. package/dist/service/agent-profile.service.js +110 -0
  120. package/dist/service/agent-server.service.d.ts +91 -0
  121. package/dist/service/agent-server.service.js +634 -0
  122. package/dist/service/agent-task-queue.service.d.ts +98 -0
  123. package/dist/service/agent-task-queue.service.js +283 -0
  124. package/dist/service/ai-chat.service.d.ts +103 -0
  125. package/dist/service/ai-chat.service.js +431 -0
  126. package/dist/service/ai-skill.service.d.ts +116 -0
  127. package/dist/service/ai-skill.service.js +457 -0
  128. package/dist/service/application.service.d.ts +42 -0
  129. package/dist/service/application.service.js +139 -0
  130. package/dist/service/automation.service.d.ts +37 -0
  131. package/dist/service/automation.service.js +196 -0
  132. package/dist/service/connector.service.d.ts +136 -0
  133. package/dist/service/connector.service.js +524 -0
  134. package/dist/service/knowledge-base.service.d.ts +138 -0
  135. package/dist/service/knowledge-base.service.js +528 -0
  136. package/dist/service/mcp-server.service.d.ts +39 -0
  137. package/dist/service/mcp-server.service.js +143 -0
  138. package/dist/service/model-config.service.d.ts +57 -0
  139. package/dist/service/model-config.service.js +168 -0
  140. package/dist/service/observability.service.d.ts +145 -0
  141. package/dist/service/observability.service.js +281 -0
  142. package/dist/service/openai.service.d.ts +88 -0
  143. package/dist/service/openai.service.js +406 -0
  144. package/dist/service/prompt-builder.service.d.ts +50 -0
  145. package/dist/service/prompt-builder.service.js +246 -0
  146. package/dist/tools/code-exec.tool.d.ts +37 -0
  147. package/dist/tools/code-exec.tool.js +162 -0
  148. package/dist/tools/datetime.tool.d.ts +21 -0
  149. package/dist/tools/datetime.tool.js +379 -0
  150. package/dist/tools/http-request.tool.d.ts +43 -0
  151. package/dist/tools/http-request.tool.js +455 -0
  152. package/dist/tools/registry.d.ts +71 -0
  153. package/dist/tools/registry.js +77 -0
  154. package/dist/tools/text-process.tool.d.ts +7 -0
  155. package/dist/tools/text-process.tool.js +366 -0
  156. package/dist/tools/web-search.tool.d.ts +28 -0
  157. package/dist/tools/web-search.tool.js +304 -0
  158. package/dist/types.d.ts +70 -0
  159. package/dist/types.js +7 -0
  160. package/package.json +69 -0
@@ -0,0 +1,196 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.AutomationService = void 0;
13
+ /**
14
+ * 自动化定时任务调度服务
15
+ *
16
+ * 基于 node-cron 的定时调度,触发时创建独立 Agent 会话执行任务。
17
+ * 使用动态 require 处理 node-cron 依赖,避免硬依赖。
18
+ */
19
+ const core_1 = require("@midwayjs/core");
20
+ const midwayjs_base_1 = require("@cicctencent/midwayjs-base");
21
+ const typeorm_1 = require("@midwayjs/typeorm");
22
+ const agent_server_service_1 = require("./agent-server.service");
23
+ // 动态加载 node-cron(可选依赖)
24
+ let cron;
25
+ try {
26
+ cron = require('node-cron');
27
+ }
28
+ catch {
29
+ console.warn('[AutomationService] node-cron not installed, scheduler disabled');
30
+ }
31
+ /** 活跃的 cron 任务映射(id → ScheduledTask) */
32
+ const activeJobs = new Map();
33
+ let AutomationService = class AutomationService extends midwayjs_base_1.BaseService {
34
+ constructor() {
35
+ super(...arguments);
36
+ this.initialized = false;
37
+ }
38
+ /** 初始化自动化调度器:加载所有已启用任务并注册 cron */
39
+ async initAutomationScheduler() {
40
+ if (this.initialized)
41
+ return;
42
+ if (!cron) {
43
+ console.warn('[AutomationService] node-cron not available, skipping scheduler init');
44
+ return;
45
+ }
46
+ try {
47
+ const enabled = await this.dataSource.query('SELECT * FROM t_ai_automation WHERE is_deleted = 0 AND status = ?', ['active']);
48
+ for (const automation of enabled) {
49
+ this.scheduleJob(automation);
50
+ }
51
+ this.initialized = true;
52
+ console.log(`[AutomationService] Initialized with ${enabled.length} active job(s)`);
53
+ }
54
+ catch (err) {
55
+ console.error('[AutomationService] Init failed:', err?.message);
56
+ }
57
+ }
58
+ /** 确保调度器已初始化 */
59
+ async ensureInitialized() {
60
+ if (!this.initialized) {
61
+ await this.initAutomationScheduler();
62
+ }
63
+ }
64
+ /** 为单个任务注册 cron 调度 */
65
+ scheduleJob(automation) {
66
+ if (!cron)
67
+ return;
68
+ // 先注销已有的
69
+ this.unscheduleJob(automation.id);
70
+ const schedule = automation.config?.cron || automation.config?.schedule || automation.schedule;
71
+ if (!schedule) {
72
+ console.warn(`[AutomationService] No schedule for task ${automation.id}`);
73
+ return;
74
+ }
75
+ if (!cron.validate(schedule)) {
76
+ console.warn(`[AutomationService] Invalid cron expression for task ${automation.id}: ${schedule}`);
77
+ return;
78
+ }
79
+ const task = cron.schedule(schedule, () => {
80
+ this.executeAutomation(automation.id).catch(err => {
81
+ console.error(`[AutomationService] Task ${automation.id} failed:`, err);
82
+ });
83
+ });
84
+ activeJobs.set(automation.id, task);
85
+ console.log(`[AutomationService] Scheduled task ${automation.id} (${automation.name}) with cron: ${schedule}`);
86
+ }
87
+ /** 注销调度 */
88
+ unscheduleJob(id) {
89
+ const existing = activeJobs.get(id);
90
+ if (existing) {
91
+ existing.stop();
92
+ activeJobs.delete(id);
93
+ }
94
+ }
95
+ /** 实际执行自动化任务:创建 Agent 会话 + 运行 Agent + 记录结果 */
96
+ async executeAutomation(id, triggerType = 'schedule') {
97
+ // 查询任务
98
+ const automations = await this.dataSource.query('SELECT * FROM t_ai_automation WHERE id = ? AND is_deleted = 0', [id]);
99
+ if (!automations || automations.length === 0) {
100
+ throw new Error(`Automation ${id} not found`);
101
+ }
102
+ const automation = automations[0];
103
+ // 解析 config
104
+ let config = {};
105
+ try {
106
+ config = typeof automation.config === 'string' ? JSON.parse(automation.config) : automation.config;
107
+ }
108
+ catch { /* ignore */ }
109
+ const prompt = config.prompt || automation.prompt || automation.name;
110
+ const agentProfileId = config.agentProfileId || config.agent_profile_id || automation.agent_profile_id;
111
+ const startedAt = new Date();
112
+ const startTime = Date.now();
113
+ // 标记运行中
114
+ try {
115
+ await this.dataSource.query('UPDATE t_ai_automation SET last_status = ?, last_run_at = NOW() WHERE id = ?', ['running', id]);
116
+ }
117
+ catch { /* ignore */ }
118
+ let status = 'success';
119
+ let result = '';
120
+ const errors = [];
121
+ try {
122
+ // 通过 AgentServerService 运行 Agent
123
+ const runResult = await this.agentServerService.runAgent(prompt, {
124
+ profileId: agentProfileId,
125
+ maxSteps: config.maxSteps || 20,
126
+ timeout: config.timeout || 120000,
127
+ });
128
+ result = runResult?.content || runResult?.finalContent || String(runResult || 'Completed');
129
+ }
130
+ catch (err) {
131
+ errors.push(err.message || 'Automation execution failed');
132
+ status = 'error';
133
+ result = errors.join('\n');
134
+ }
135
+ const finishedAt = new Date();
136
+ const duration = Date.now() - startTime;
137
+ // 更新任务状态
138
+ try {
139
+ await this.dataSource.query('UPDATE t_ai_automation SET last_status = ?, last_result = ? WHERE id = ?', [status, result.slice(0, 2000), id]);
140
+ }
141
+ catch { /* ignore */ }
142
+ // 保存执行记录
143
+ try {
144
+ await this.dataSource.query(`INSERT INTO t_ai_automation_run (automation_id, status, trigger_type, prompt, result, errors, started_at, finished_at, duration)
145
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`, [id, status, triggerType, prompt, result.slice(0, 5000), JSON.stringify(errors), startedAt, finishedAt, duration]);
146
+ }
147
+ catch { /* ignore */ }
148
+ return result;
149
+ }
150
+ /** 刷新所有调度 */
151
+ async refreshScheduler() {
152
+ // 停止所有现有任务
153
+ for (const [, task] of activeJobs) {
154
+ task.stop();
155
+ }
156
+ activeJobs.clear();
157
+ // 重新加载启用的任务
158
+ if (!cron)
159
+ return;
160
+ try {
161
+ const enabled = await this.dataSource.query('SELECT * FROM t_ai_automation WHERE is_deleted = 0 AND status = ?', ['active']);
162
+ for (const automation of enabled) {
163
+ this.scheduleJob(automation);
164
+ }
165
+ }
166
+ catch (err) {
167
+ console.error('[AutomationService] Refresh failed:', err?.message);
168
+ }
169
+ }
170
+ /** 获取活跃任务数 */
171
+ getActiveJobCount() {
172
+ return activeJobs.size;
173
+ }
174
+ /** 停止所有调度任务(服务关闭时调用) */
175
+ stopAll() {
176
+ for (const [, task] of activeJobs) {
177
+ task.stop();
178
+ }
179
+ activeJobs.clear();
180
+ }
181
+ };
182
+ exports.AutomationService = AutomationService;
183
+ __decorate([
184
+ (0, typeorm_1.InjectDataSource)('default'),
185
+ __metadata("design:type", Function)
186
+ ], AutomationService.prototype, "dataSource", void 0);
187
+ __decorate([
188
+ (0, core_1.Inject)(),
189
+ __metadata("design:type", agent_server_service_1.AgentServerService)
190
+ ], AutomationService.prototype, "agentServerService", void 0);
191
+ exports.AutomationService = AutomationService = __decorate([
192
+ (0, core_1.Provide)(),
193
+ (0, core_1.Scope)(core_1.ScopeEnum.Singleton),
194
+ (0, core_1.Provide)(),
195
+ (0, core_1.Scope)(core_1.ScopeEnum.Singleton)
196
+ ], AutomationService);
@@ -0,0 +1,136 @@
1
+ import { BaseService } from '@cicctencent/midwayjs-base';
2
+ import type { DataSourceConfig, DataSourceType, ConnectionTestResult, DiscoveredTool, MCPServerConfig, DataSourceTypeInfo } from '../connector/types';
3
+ /** 连接器配置(带元数据) */
4
+ export interface ConnectorRecord {
5
+ id: string;
6
+ config: DataSourceConfig;
7
+ createdAt: number;
8
+ updatedAt: number;
9
+ }
10
+ /** 连接器 manifest 类型 */
11
+ export interface ConnectorManifest {
12
+ name: string;
13
+ description?: string;
14
+ category?: string;
15
+ version?: string;
16
+ author?: string;
17
+ icon?: string;
18
+ color?: string;
19
+ enabled?: boolean;
20
+ dataSourceType?: string;
21
+ dataSourceConfig?: Record<string, unknown>;
22
+ apiRoot?: string;
23
+ requestBuilderId?: string;
24
+ urlTemplate?: string;
25
+ relay?: {
26
+ url: string;
27
+ headers?: Record<string, string>;
28
+ };
29
+ auth?: {
30
+ type: 'bearer' | 'basic' | 'apiKey' | 'custom';
31
+ value: string;
32
+ name?: string;
33
+ };
34
+ response?: {
35
+ extract?: string;
36
+ errorField?: string;
37
+ errorMessage?: string;
38
+ };
39
+ skillsEnabled?: Record<string, boolean>;
40
+ }
41
+ /** 目录式连接器实体 */
42
+ export interface ConnectorEntity {
43
+ id: string;
44
+ name: string;
45
+ description?: string;
46
+ icon?: string;
47
+ color?: string;
48
+ category: string;
49
+ version?: string;
50
+ author?: string;
51
+ mcpServerIds: (number | string)[];
52
+ skillIds: string[];
53
+ enabled: boolean;
54
+ status: string;
55
+ dataSourceType?: string;
56
+ dataSourceConfig?: Record<string, unknown>;
57
+ createdAt: string;
58
+ updatedAt: string;
59
+ }
60
+ export declare class ConnectorService extends BaseService {
61
+ private initialized;
62
+ init(): Promise<void>;
63
+ /** 列出所有连接器 */
64
+ list(): Promise<ConnectorRecord[]>;
65
+ /** 获取单个连接器 */
66
+ get(id: string): Promise<ConnectorRecord | null>;
67
+ /** 创建连接器 */
68
+ create(config: DataSourceConfig): Promise<ConnectorRecord>;
69
+ /** 更新连接器 */
70
+ update(id: string, config: Partial<DataSourceConfig>): Promise<ConnectorRecord | null>;
71
+ /** 删除连接器 */
72
+ delete(id: string): Promise<boolean>;
73
+ /** 测试连接 */
74
+ testConnection(id: string): Promise<ConnectionTestResult>;
75
+ /** 测试配置(未保存的配置) */
76
+ testConfig(config: DataSourceConfig): Promise<ConnectionTestResult>;
77
+ /** 发现工具 */
78
+ discoverTools(id: string): Promise<DiscoveredTool[]>;
79
+ /** 生成清单 */
80
+ generateManifest(id: string): Promise<{
81
+ tools: DiscoveredTool[];
82
+ metadata: Record<string, any>;
83
+ }>;
84
+ /** 生成 MCP 服务器配置 */
85
+ generateMCPServerConfigs(id: string): Promise<MCPServerConfig[]>;
86
+ /** 获取所有数据源类型 */
87
+ getDataSourceTypes(): DataSourceType[];
88
+ /** 获取所有适配器类型 */
89
+ getAdapterTypes(): DataSourceType[];
90
+ /** 获取数据源类型信息(前端向导展示用) */
91
+ getDataSourceTypeInfos(): DataSourceTypeInfo[];
92
+ /** 获取指定类型的信息 */
93
+ getDataSourceTypeInfo(type: DataSourceType): DataSourceTypeInfo;
94
+ /** 自动发现连接器:扫描 data/connectors/ 目录,为每个有 manifest.json 的目录构建连接器实体 */
95
+ autoDiscoverConnectors(): Promise<void>;
96
+ /** 从 manifest 构建连接器实体 */
97
+ private buildConnectorFromManifest;
98
+ /** 列出所有目录式连接器实体 */
99
+ listConnectorEntities(): ConnectorEntity[];
100
+ /** 获取单个目录式连接器实体 */
101
+ getConnectorEntity(id: string): ConnectorEntity | undefined;
102
+ /** 获取连接器包目录(校验存在性) */
103
+ private getConnectorPackageDir;
104
+ /** 读取 manifest.json */
105
+ getManifest(connectorId: string): ConnectorManifest;
106
+ /** 更新 manifest.json */
107
+ updateManifest(connectorId: string, updates: Partial<ConnectorManifest>): ConnectorManifest;
108
+ /** 启用/禁用连接器,回写 manifest.json */
109
+ toggleConnector(id: string, enabled: boolean): ConnectorEntity | undefined;
110
+ /** 重新生成连接器:重新调用适配器发现工具,清空并重写 mcp-servers/*.json */
111
+ regenerateConnector(connectorId: string): Promise<{
112
+ toolCount: number;
113
+ connector: ConnectorEntity;
114
+ }>;
115
+ /** 新增 MCP 服务器配置文件 */
116
+ addConnectorMCPServer(connectorId: string, config: Record<string, unknown>): Promise<{
117
+ serverName: string;
118
+ }>;
119
+ /** 更新 MCP 服务器配置文件 */
120
+ updateConnectorMCPServer(connectorId: string, serverName: string, config: Record<string, unknown>): Promise<void>;
121
+ /** 删除 MCP 服务器配置文件 */
122
+ removeConnectorMCPServer(connectorId: string, serverName: string): Promise<void>;
123
+ /** 读取 Skill .md 文件完整内容 */
124
+ getConnectorSkillFile(connectorId: string, skillId: string): {
125
+ content: string;
126
+ };
127
+ /** 新建 Skill .md 文件 */
128
+ addConnectorSkill(connectorId: string, skillId: string, content: string): Promise<void>;
129
+ /** 更新 Skill .md 文件 */
130
+ updateConnectorSkill(connectorId: string, skillId: string, content: string): Promise<void>;
131
+ /** 删除 Skill .md 文件 */
132
+ removeConnectorSkill(connectorId: string, skillId: string): Promise<void>;
133
+ private getFilePath;
134
+ private generateId;
135
+ private ensureDir;
136
+ }