@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,40 @@
1
+ /**
2
+ * 创建工作空间 DTO
3
+ */
4
+ export declare class CreateWorkspaceDTO {
5
+ name: string;
6
+ description?: string;
7
+ color?: string;
8
+ icon?: string;
9
+ }
10
+ /**
11
+ * 更新工作空间 DTO
12
+ */
13
+ export declare class UpdateWorkspaceDTO {
14
+ name?: string;
15
+ description?: string;
16
+ color?: string;
17
+ icon?: string;
18
+ }
19
+ /**
20
+ * 创建线程 DTO
21
+ */
22
+ export declare class CreateThreadDTO {
23
+ title?: string;
24
+ }
25
+ /**
26
+ * 添加消息 DTO
27
+ */
28
+ export declare class AddMessageDTO {
29
+ role: string;
30
+ content: string;
31
+ type?: string;
32
+ meta?: any;
33
+ }
34
+ /**
35
+ * 更新消息 DTO
36
+ */
37
+ export declare class UpdateMessageDTO {
38
+ content?: string;
39
+ meta?: any;
40
+ }
@@ -0,0 +1,122 @@
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.UpdateMessageDTO = exports.AddMessageDTO = exports.CreateThreadDTO = exports.UpdateWorkspaceDTO = exports.CreateWorkspaceDTO = void 0;
13
+ /**
14
+ * @file 聊天相关数据传输对象 (DTO)
15
+ * @description 工作空间、线程、消息接口的请求参数验证规则
16
+ */
17
+ const validate_1 = require("@midwayjs/validate");
18
+ /**
19
+ * 创建工作空间 DTO
20
+ */
21
+ let CreateWorkspaceDTO = class CreateWorkspaceDTO {
22
+ };
23
+ exports.CreateWorkspaceDTO = CreateWorkspaceDTO;
24
+ __decorate([
25
+ (0, validate_1.Rule)(validate_1.RuleType.string().min(1).max(100).required()),
26
+ __metadata("design:type", String)
27
+ ], CreateWorkspaceDTO.prototype, "name", void 0);
28
+ __decorate([
29
+ (0, validate_1.Rule)(validate_1.RuleType.string().max(500).optional()),
30
+ __metadata("design:type", String)
31
+ ], CreateWorkspaceDTO.prototype, "description", void 0);
32
+ __decorate([
33
+ (0, validate_1.Rule)(validate_1.RuleType.string().max(20).optional()),
34
+ __metadata("design:type", String)
35
+ ], CreateWorkspaceDTO.prototype, "color", void 0);
36
+ __decorate([
37
+ (0, validate_1.Rule)(validate_1.RuleType.string().max(50).optional()),
38
+ __metadata("design:type", String)
39
+ ], CreateWorkspaceDTO.prototype, "icon", void 0);
40
+ exports.CreateWorkspaceDTO = CreateWorkspaceDTO = __decorate([
41
+ (0, validate_1.Rule)(validate_1.RuleType.object())
42
+ ], CreateWorkspaceDTO);
43
+ /**
44
+ * 更新工作空间 DTO
45
+ */
46
+ let UpdateWorkspaceDTO = class UpdateWorkspaceDTO {
47
+ };
48
+ exports.UpdateWorkspaceDTO = UpdateWorkspaceDTO;
49
+ __decorate([
50
+ (0, validate_1.Rule)(validate_1.RuleType.string().min(1).max(100).optional()),
51
+ __metadata("design:type", String)
52
+ ], UpdateWorkspaceDTO.prototype, "name", void 0);
53
+ __decorate([
54
+ (0, validate_1.Rule)(validate_1.RuleType.string().max(500).optional()),
55
+ __metadata("design:type", String)
56
+ ], UpdateWorkspaceDTO.prototype, "description", void 0);
57
+ __decorate([
58
+ (0, validate_1.Rule)(validate_1.RuleType.string().max(20).optional()),
59
+ __metadata("design:type", String)
60
+ ], UpdateWorkspaceDTO.prototype, "color", void 0);
61
+ __decorate([
62
+ (0, validate_1.Rule)(validate_1.RuleType.string().max(50).optional()),
63
+ __metadata("design:type", String)
64
+ ], UpdateWorkspaceDTO.prototype, "icon", void 0);
65
+ exports.UpdateWorkspaceDTO = UpdateWorkspaceDTO = __decorate([
66
+ (0, validate_1.Rule)(validate_1.RuleType.object())
67
+ ], UpdateWorkspaceDTO);
68
+ /**
69
+ * 创建线程 DTO
70
+ */
71
+ let CreateThreadDTO = class CreateThreadDTO {
72
+ };
73
+ exports.CreateThreadDTO = CreateThreadDTO;
74
+ __decorate([
75
+ (0, validate_1.Rule)(validate_1.RuleType.string().max(200).optional()),
76
+ __metadata("design:type", String)
77
+ ], CreateThreadDTO.prototype, "title", void 0);
78
+ exports.CreateThreadDTO = CreateThreadDTO = __decorate([
79
+ (0, validate_1.Rule)(validate_1.RuleType.object())
80
+ ], CreateThreadDTO);
81
+ /**
82
+ * 添加消息 DTO
83
+ */
84
+ let AddMessageDTO = class AddMessageDTO {
85
+ };
86
+ exports.AddMessageDTO = AddMessageDTO;
87
+ __decorate([
88
+ (0, validate_1.Rule)(validate_1.RuleType.string().valid('user', 'assistant', 'system').required()),
89
+ __metadata("design:type", String)
90
+ ], AddMessageDTO.prototype, "role", void 0);
91
+ __decorate([
92
+ (0, validate_1.Rule)(validate_1.RuleType.string().min(1).max(50000).required()),
93
+ __metadata("design:type", String)
94
+ ], AddMessageDTO.prototype, "content", void 0);
95
+ __decorate([
96
+ (0, validate_1.Rule)(validate_1.RuleType.string().max(50).optional()),
97
+ __metadata("design:type", String)
98
+ ], AddMessageDTO.prototype, "type", void 0);
99
+ __decorate([
100
+ (0, validate_1.Rule)(validate_1.RuleType.object().optional()),
101
+ __metadata("design:type", Object)
102
+ ], AddMessageDTO.prototype, "meta", void 0);
103
+ exports.AddMessageDTO = AddMessageDTO = __decorate([
104
+ (0, validate_1.Rule)(validate_1.RuleType.object())
105
+ ], AddMessageDTO);
106
+ /**
107
+ * 更新消息 DTO
108
+ */
109
+ let UpdateMessageDTO = class UpdateMessageDTO {
110
+ };
111
+ exports.UpdateMessageDTO = UpdateMessageDTO;
112
+ __decorate([
113
+ (0, validate_1.Rule)(validate_1.RuleType.string().max(50000).optional()),
114
+ __metadata("design:type", String)
115
+ ], UpdateMessageDTO.prototype, "content", void 0);
116
+ __decorate([
117
+ (0, validate_1.Rule)(validate_1.RuleType.object().optional()),
118
+ __metadata("design:type", Object)
119
+ ], UpdateMessageDTO.prototype, "meta", void 0);
120
+ exports.UpdateMessageDTO = UpdateMessageDTO = __decorate([
121
+ (0, validate_1.Rule)(validate_1.RuleType.object())
122
+ ], UpdateMessageDTO);
@@ -0,0 +1,101 @@
1
+ /**
2
+ * @cicctencent/agent-midway — MidwayJS AI Workstation Component
3
+ *
4
+ * 开箱即用的多智能体工作站组件,提供:
5
+ * - Agent 运行管理(流式/非流式/任务队列)
6
+ * - Application 隔离的多租户数据空间
7
+ * - Agent Profile / MCP Server / Model Config 管理
8
+ * - 聊天工作空间 / 线程 / 消息管理
9
+ * - 连接器系统(7种数据源适配器 + 工具自动发现)
10
+ * - A2A 协议(Agent 间互操作)
11
+ * - IM 渠道集成(飞书/钉钉/企微)
12
+ * - 可观测性系统(链路追踪 + 指标 + 仪表板)
13
+ * - 知识库系统(向量搜索)
14
+ * - 安全审计 + 自动化任务
15
+ *
16
+ * 使用方式:
17
+ * // configuration.ts
18
+ * import * as agentMidway from '@cicctencent/agent-midway';
19
+ *
20
+ * @Configuration({
21
+ * imports: [
22
+ * baseMidwayjs,
23
+ * orm,
24
+ * agentMidway, // ← 一行接入全部 AI 能力
25
+ * ],
26
+ * ...
27
+ * })
28
+ *
29
+ * 可选配置(config.default.ts):
30
+ * export default {
31
+ * agentMidway: {
32
+ * enabled: true, // 默认 true
33
+ * prefix: '/api', // API 路由前缀,默认 '/api'
34
+ * features: { // 按需开关各功能模块
35
+ * agent: true,
36
+ * chat: true,
37
+ * connectors: true,
38
+ * a2a: true,
39
+ * channels: true,
40
+ * observability: true,
41
+ * knowledgeBase: true,
42
+ * security: true,
43
+ * automation: true,
44
+ * settings: true,
45
+ * },
46
+ * dataDir: 'data', // 数据目录,默认 'data'
47
+ * },
48
+ * };
49
+ */
50
+ export * as koa from '@midwayjs/koa';
51
+ export { default as AIAgentProfileEntity } from './model/ai-agent-profile.entity';
52
+ export { default as AIApplicationEntity } from './model/ai-application.entity';
53
+ export { default as AIChatWorkspaceEntity } from './model/ai-chat-workspace.entity';
54
+ export { default as AIChatThreadEntity } from './model/ai-chat-thread.entity';
55
+ export { default as AIChatMessageEntity } from './model/ai-chat-message.entity';
56
+ export { default as AIMCPServerEntity } from './model/ai-mcp-server.entity';
57
+ export { default as AIModelConfigEntity } from './model/ai-model-config.entity';
58
+ export { default as AIKnowledgeBaseEntity } from './model/ai-knowledge-base.entity';
59
+ export { default as AIKBDocumentEntity } from './model/ai-kb-document.entity';
60
+ export { default as AIChatMemoryEntity } from './model/ai-chat-memory.entity';
61
+ export { default as AIChatSkillEntity } from './model/ai-chat-skill.entity';
62
+ export { OpenAIService } from './service/openai.service';
63
+ export { AgentProfileService } from './service/agent-profile.service';
64
+ export { ApplicationService } from './service/application.service';
65
+ export { MCPServerService } from './service/mcp-server.service';
66
+ export { ModelConfigService } from './service/model-config.service';
67
+ export { AIChatService } from './service/ai-chat.service';
68
+ export { AgentServerService } from './service/agent-server.service';
69
+ export { AgentTaskQueueService } from './service/agent-task-queue.service';
70
+ export { PromptBuilderService } from './service/prompt-builder.service';
71
+ export { KnowledgeBaseService } from './service/knowledge-base.service';
72
+ export { ObservabilityService } from './service/observability.service';
73
+ export { ConnectorService } from './service/connector.service';
74
+ export { A2AService } from './service/a2a.service';
75
+ export { AISkillService } from './service/ai-skill.service';
76
+ export { AutomationService } from './service/automation.service';
77
+ export { AgentController } from './controller/agent.controller';
78
+ export { ChatController } from './controller/chat.controller';
79
+ export { AgentProfileController } from './controller/agent-profile.controller';
80
+ export { ApplicationController } from './controller/application.controller';
81
+ export { MCPServerController } from './controller/mcp-server.controller';
82
+ export { ModelConfigController } from './controller/model-config.controller';
83
+ export { SettingsController } from './controller/settings.controller';
84
+ export { SecurityController } from './controller/security.controller';
85
+ export { AutomationController } from './controller/automation.controller';
86
+ export { ConnectorController } from './controller/connector.controller';
87
+ export { A2AController } from './controller/a2a.controller';
88
+ export { ChannelController } from './controller/channel.controller';
89
+ export { ObservabilityController } from './controller/observability.controller';
90
+ export { KnowledgeBaseController } from './controller/knowledge-base.controller';
91
+ export * from './connector/types';
92
+ export { getAdapter, listAdapterTypes, listDataSourceTypes } from './connector/index';
93
+ export * from './channel/types';
94
+ export { ChannelManager } from './channel/index';
95
+ export * from './dto/agent.dto';
96
+ export * from './dto/chat.dto';
97
+ export * from './dto/ai-config.dto';
98
+ export { AgentRunEvent, AgentRunOptions } from './service/agent-server.service';
99
+ export * from './core';
100
+ export * from './adapters';
101
+ export { AIWorkstationComponent } from './component';
package/dist/index.js ADDED
@@ -0,0 +1,195 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
36
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
37
+ };
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.AIWorkstationComponent = exports.ChannelManager = exports.listDataSourceTypes = exports.listAdapterTypes = exports.getAdapter = exports.KnowledgeBaseController = exports.ObservabilityController = exports.ChannelController = exports.A2AController = exports.ConnectorController = exports.AutomationController = exports.SecurityController = exports.SettingsController = exports.ModelConfigController = exports.MCPServerController = exports.ApplicationController = exports.AgentProfileController = exports.ChatController = exports.AgentController = exports.AutomationService = exports.AISkillService = exports.A2AService = exports.ConnectorService = exports.ObservabilityService = exports.KnowledgeBaseService = exports.PromptBuilderService = exports.AgentTaskQueueService = exports.AgentServerService = exports.AIChatService = exports.ModelConfigService = exports.MCPServerService = exports.ApplicationService = exports.AgentProfileService = exports.OpenAIService = exports.AIChatSkillEntity = exports.AIChatMemoryEntity = exports.AIKBDocumentEntity = exports.AIKnowledgeBaseEntity = exports.AIModelConfigEntity = exports.AIMCPServerEntity = exports.AIChatMessageEntity = exports.AIChatThreadEntity = exports.AIChatWorkspaceEntity = exports.AIApplicationEntity = exports.AIAgentProfileEntity = exports.koa = void 0;
43
+ /**
44
+ * @cicctencent/agent-midway — MidwayJS AI Workstation Component
45
+ *
46
+ * 开箱即用的多智能体工作站组件,提供:
47
+ * - Agent 运行管理(流式/非流式/任务队列)
48
+ * - Application 隔离的多租户数据空间
49
+ * - Agent Profile / MCP Server / Model Config 管理
50
+ * - 聊天工作空间 / 线程 / 消息管理
51
+ * - 连接器系统(7种数据源适配器 + 工具自动发现)
52
+ * - A2A 协议(Agent 间互操作)
53
+ * - IM 渠道集成(飞书/钉钉/企微)
54
+ * - 可观测性系统(链路追踪 + 指标 + 仪表板)
55
+ * - 知识库系统(向量搜索)
56
+ * - 安全审计 + 自动化任务
57
+ *
58
+ * 使用方式:
59
+ * // configuration.ts
60
+ * import * as agentMidway from '@cicctencent/agent-midway';
61
+ *
62
+ * @Configuration({
63
+ * imports: [
64
+ * baseMidwayjs,
65
+ * orm,
66
+ * agentMidway, // ← 一行接入全部 AI 能力
67
+ * ],
68
+ * ...
69
+ * })
70
+ *
71
+ * 可选配置(config.default.ts):
72
+ * export default {
73
+ * agentMidway: {
74
+ * enabled: true, // 默认 true
75
+ * prefix: '/api', // API 路由前缀,默认 '/api'
76
+ * features: { // 按需开关各功能模块
77
+ * agent: true,
78
+ * chat: true,
79
+ * connectors: true,
80
+ * a2a: true,
81
+ * channels: true,
82
+ * observability: true,
83
+ * knowledgeBase: true,
84
+ * security: true,
85
+ * automation: true,
86
+ * settings: true,
87
+ * },
88
+ * dataDir: 'data', // 数据目录,默认 'data'
89
+ * },
90
+ * };
91
+ */
92
+ exports.koa = __importStar(require("@midwayjs/koa"));
93
+ // ========== 实体 ==========
94
+ var ai_agent_profile_entity_1 = require("./model/ai-agent-profile.entity");
95
+ Object.defineProperty(exports, "AIAgentProfileEntity", { enumerable: true, get: function () { return __importDefault(ai_agent_profile_entity_1).default; } });
96
+ var ai_application_entity_1 = require("./model/ai-application.entity");
97
+ Object.defineProperty(exports, "AIApplicationEntity", { enumerable: true, get: function () { return __importDefault(ai_application_entity_1).default; } });
98
+ var ai_chat_workspace_entity_1 = require("./model/ai-chat-workspace.entity");
99
+ Object.defineProperty(exports, "AIChatWorkspaceEntity", { enumerable: true, get: function () { return __importDefault(ai_chat_workspace_entity_1).default; } });
100
+ var ai_chat_thread_entity_1 = require("./model/ai-chat-thread.entity");
101
+ Object.defineProperty(exports, "AIChatThreadEntity", { enumerable: true, get: function () { return __importDefault(ai_chat_thread_entity_1).default; } });
102
+ var ai_chat_message_entity_1 = require("./model/ai-chat-message.entity");
103
+ Object.defineProperty(exports, "AIChatMessageEntity", { enumerable: true, get: function () { return __importDefault(ai_chat_message_entity_1).default; } });
104
+ var ai_mcp_server_entity_1 = require("./model/ai-mcp-server.entity");
105
+ Object.defineProperty(exports, "AIMCPServerEntity", { enumerable: true, get: function () { return __importDefault(ai_mcp_server_entity_1).default; } });
106
+ var ai_model_config_entity_1 = require("./model/ai-model-config.entity");
107
+ Object.defineProperty(exports, "AIModelConfigEntity", { enumerable: true, get: function () { return __importDefault(ai_model_config_entity_1).default; } });
108
+ var ai_knowledge_base_entity_1 = require("./model/ai-knowledge-base.entity");
109
+ Object.defineProperty(exports, "AIKnowledgeBaseEntity", { enumerable: true, get: function () { return __importDefault(ai_knowledge_base_entity_1).default; } });
110
+ var ai_kb_document_entity_1 = require("./model/ai-kb-document.entity");
111
+ Object.defineProperty(exports, "AIKBDocumentEntity", { enumerable: true, get: function () { return __importDefault(ai_kb_document_entity_1).default; } });
112
+ var ai_chat_memory_entity_1 = require("./model/ai-chat-memory.entity");
113
+ Object.defineProperty(exports, "AIChatMemoryEntity", { enumerable: true, get: function () { return __importDefault(ai_chat_memory_entity_1).default; } });
114
+ var ai_chat_skill_entity_1 = require("./model/ai-chat-skill.entity");
115
+ Object.defineProperty(exports, "AIChatSkillEntity", { enumerable: true, get: function () { return __importDefault(ai_chat_skill_entity_1).default; } });
116
+ // ========== 服务 ==========
117
+ var openai_service_1 = require("./service/openai.service");
118
+ Object.defineProperty(exports, "OpenAIService", { enumerable: true, get: function () { return openai_service_1.OpenAIService; } });
119
+ var agent_profile_service_1 = require("./service/agent-profile.service");
120
+ Object.defineProperty(exports, "AgentProfileService", { enumerable: true, get: function () { return agent_profile_service_1.AgentProfileService; } });
121
+ var application_service_1 = require("./service/application.service");
122
+ Object.defineProperty(exports, "ApplicationService", { enumerable: true, get: function () { return application_service_1.ApplicationService; } });
123
+ var mcp_server_service_1 = require("./service/mcp-server.service");
124
+ Object.defineProperty(exports, "MCPServerService", { enumerable: true, get: function () { return mcp_server_service_1.MCPServerService; } });
125
+ var model_config_service_1 = require("./service/model-config.service");
126
+ Object.defineProperty(exports, "ModelConfigService", { enumerable: true, get: function () { return model_config_service_1.ModelConfigService; } });
127
+ var ai_chat_service_1 = require("./service/ai-chat.service");
128
+ Object.defineProperty(exports, "AIChatService", { enumerable: true, get: function () { return ai_chat_service_1.AIChatService; } });
129
+ var agent_server_service_1 = require("./service/agent-server.service");
130
+ Object.defineProperty(exports, "AgentServerService", { enumerable: true, get: function () { return agent_server_service_1.AgentServerService; } });
131
+ var agent_task_queue_service_1 = require("./service/agent-task-queue.service");
132
+ Object.defineProperty(exports, "AgentTaskQueueService", { enumerable: true, get: function () { return agent_task_queue_service_1.AgentTaskQueueService; } });
133
+ var prompt_builder_service_1 = require("./service/prompt-builder.service");
134
+ Object.defineProperty(exports, "PromptBuilderService", { enumerable: true, get: function () { return prompt_builder_service_1.PromptBuilderService; } });
135
+ var knowledge_base_service_1 = require("./service/knowledge-base.service");
136
+ Object.defineProperty(exports, "KnowledgeBaseService", { enumerable: true, get: function () { return knowledge_base_service_1.KnowledgeBaseService; } });
137
+ var observability_service_1 = require("./service/observability.service");
138
+ Object.defineProperty(exports, "ObservabilityService", { enumerable: true, get: function () { return observability_service_1.ObservabilityService; } });
139
+ var connector_service_1 = require("./service/connector.service");
140
+ Object.defineProperty(exports, "ConnectorService", { enumerable: true, get: function () { return connector_service_1.ConnectorService; } });
141
+ var a2a_service_1 = require("./service/a2a.service");
142
+ Object.defineProperty(exports, "A2AService", { enumerable: true, get: function () { return a2a_service_1.A2AService; } });
143
+ var ai_skill_service_1 = require("./service/ai-skill.service");
144
+ Object.defineProperty(exports, "AISkillService", { enumerable: true, get: function () { return ai_skill_service_1.AISkillService; } });
145
+ var automation_service_1 = require("./service/automation.service");
146
+ Object.defineProperty(exports, "AutomationService", { enumerable: true, get: function () { return automation_service_1.AutomationService; } });
147
+ // ========== 控制器 ==========
148
+ var agent_controller_1 = require("./controller/agent.controller");
149
+ Object.defineProperty(exports, "AgentController", { enumerable: true, get: function () { return agent_controller_1.AgentController; } });
150
+ var chat_controller_1 = require("./controller/chat.controller");
151
+ Object.defineProperty(exports, "ChatController", { enumerable: true, get: function () { return chat_controller_1.ChatController; } });
152
+ var agent_profile_controller_1 = require("./controller/agent-profile.controller");
153
+ Object.defineProperty(exports, "AgentProfileController", { enumerable: true, get: function () { return agent_profile_controller_1.AgentProfileController; } });
154
+ var application_controller_1 = require("./controller/application.controller");
155
+ Object.defineProperty(exports, "ApplicationController", { enumerable: true, get: function () { return application_controller_1.ApplicationController; } });
156
+ var mcp_server_controller_1 = require("./controller/mcp-server.controller");
157
+ Object.defineProperty(exports, "MCPServerController", { enumerable: true, get: function () { return mcp_server_controller_1.MCPServerController; } });
158
+ var model_config_controller_1 = require("./controller/model-config.controller");
159
+ Object.defineProperty(exports, "ModelConfigController", { enumerable: true, get: function () { return model_config_controller_1.ModelConfigController; } });
160
+ var settings_controller_1 = require("./controller/settings.controller");
161
+ Object.defineProperty(exports, "SettingsController", { enumerable: true, get: function () { return settings_controller_1.SettingsController; } });
162
+ var security_controller_1 = require("./controller/security.controller");
163
+ Object.defineProperty(exports, "SecurityController", { enumerable: true, get: function () { return security_controller_1.SecurityController; } });
164
+ var automation_controller_1 = require("./controller/automation.controller");
165
+ Object.defineProperty(exports, "AutomationController", { enumerable: true, get: function () { return automation_controller_1.AutomationController; } });
166
+ var connector_controller_1 = require("./controller/connector.controller");
167
+ Object.defineProperty(exports, "ConnectorController", { enumerable: true, get: function () { return connector_controller_1.ConnectorController; } });
168
+ var a2a_controller_1 = require("./controller/a2a.controller");
169
+ Object.defineProperty(exports, "A2AController", { enumerable: true, get: function () { return a2a_controller_1.A2AController; } });
170
+ var channel_controller_1 = require("./controller/channel.controller");
171
+ Object.defineProperty(exports, "ChannelController", { enumerable: true, get: function () { return channel_controller_1.ChannelController; } });
172
+ var observability_controller_1 = require("./controller/observability.controller");
173
+ Object.defineProperty(exports, "ObservabilityController", { enumerable: true, get: function () { return observability_controller_1.ObservabilityController; } });
174
+ var knowledge_base_controller_1 = require("./controller/knowledge-base.controller");
175
+ Object.defineProperty(exports, "KnowledgeBaseController", { enumerable: true, get: function () { return knowledge_base_controller_1.KnowledgeBaseController; } });
176
+ // ========== 连接器 ==========
177
+ __exportStar(require("./connector/types"), exports);
178
+ var index_1 = require("./connector/index");
179
+ Object.defineProperty(exports, "getAdapter", { enumerable: true, get: function () { return index_1.getAdapter; } });
180
+ Object.defineProperty(exports, "listAdapterTypes", { enumerable: true, get: function () { return index_1.listAdapterTypes; } });
181
+ Object.defineProperty(exports, "listDataSourceTypes", { enumerable: true, get: function () { return index_1.listDataSourceTypes; } });
182
+ // ========== 渠道 ==========
183
+ __exportStar(require("./channel/types"), exports);
184
+ var index_2 = require("./channel/index");
185
+ Object.defineProperty(exports, "ChannelManager", { enumerable: true, get: function () { return index_2.ChannelManager; } });
186
+ // ========== DTO ==========
187
+ __exportStar(require("./dto/agent.dto"), exports);
188
+ __exportStar(require("./dto/chat.dto"), exports);
189
+ __exportStar(require("./dto/ai-config.dto"), exports);
190
+ // ========== 框架无关核心与适配层 ==========
191
+ __exportStar(require("./core"), exports);
192
+ __exportStar(require("./adapters"), exports);
193
+ // ========== 组件入口 ==========
194
+ var component_1 = require("./component");
195
+ Object.defineProperty(exports, "AIWorkstationComponent", { enumerable: true, get: function () { return component_1.AIWorkstationComponent; } });
@@ -0,0 +1,33 @@
1
+ import { DataSource } from 'typeorm';
2
+ import type { MemoryEntry, MemoryStore } from '../types';
3
+ /**
4
+ * 数据库存储实现(MemoryStore 接口)
5
+ *
6
+ * 参考 ai-chat.service.ts 的 Repository 设计模式,
7
+ * 通过 TypeORM Repository 操作 t_bi_chat_memory 表,
8
+ * 实现 Agent 记忆的持久化存储。
9
+ *
10
+ * 使用方式:
11
+ * ```
12
+ * const store = new DBMemoryStore(dataSource);
13
+ * const memory = new AgentMemory(store);
14
+ * ```
15
+ */
16
+ export declare class DBMemoryStore implements MemoryStore {
17
+ private repo;
18
+ constructor(dataSource: DataSource);
19
+ save(entry: Omit<MemoryEntry, 'id' | 'createdAt'>): Promise<MemoryEntry>;
20
+ getByThread(threadId: string, limit?: number): Promise<MemoryEntry[]>;
21
+ getByUser(userId: string, category?: string, limit?: number): Promise<MemoryEntry[]>;
22
+ search(userId: string, query: string, topK?: number): Promise<MemoryEntry[]>;
23
+ delete(id: string | number): Promise<boolean>;
24
+ clearThread(threadId: string | number): Promise<void>;
25
+ load(userId: string, options?: {
26
+ threadId?: number | string;
27
+ category?: string;
28
+ limit?: number;
29
+ }): Promise<MemoryEntry[]>;
30
+ clear(userId: string): Promise<void>;
31
+ /** 将 TypeORM 实体转换为 MemoryEntry */
32
+ private toMemoryEntry;
33
+ }
@@ -0,0 +1,143 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DBMemoryStore = void 0;
7
+ const typeorm_1 = require("typeorm");
8
+ const ai_chat_memory_entity_1 = __importDefault(require("../model/ai-chat-memory.entity"));
9
+ /**
10
+ * 数据库存储实现(MemoryStore 接口)
11
+ *
12
+ * 参考 ai-chat.service.ts 的 Repository 设计模式,
13
+ * 通过 TypeORM Repository 操作 t_bi_chat_memory 表,
14
+ * 实现 Agent 记忆的持久化存储。
15
+ *
16
+ * 使用方式:
17
+ * ```
18
+ * const store = new DBMemoryStore(dataSource);
19
+ * const memory = new AgentMemory(store);
20
+ * ```
21
+ */
22
+ class DBMemoryStore {
23
+ constructor(dataSource) {
24
+ this.repo = dataSource.getRepository(ai_chat_memory_entity_1.default);
25
+ }
26
+ async save(entry) {
27
+ const entity = this.repo.create({
28
+ userId: entry.userId,
29
+ threadId: String(entry.threadId ?? ''),
30
+ content: entry.content,
31
+ category: entry.category,
32
+ relevance: entry.relevance ?? 0,
33
+ expiresAt: entry.expiresAt ? Number(entry.expiresAt) : null,
34
+ meta: entry.meta ?? null,
35
+ isDeleted: 0,
36
+ });
37
+ const saved = await this.repo.save(entity);
38
+ return this.toMemoryEntry(saved);
39
+ }
40
+ async getByThread(threadId, limit = 50) {
41
+ const now = Date.now();
42
+ const list = await this.repo.find({
43
+ where: {
44
+ threadId,
45
+ isDeleted: 0,
46
+ },
47
+ order: { createTime: 'DESC' },
48
+ take: limit,
49
+ });
50
+ return list
51
+ .filter(e => !e.expiresAt || e.expiresAt > now)
52
+ .map(e => this.toMemoryEntry(e));
53
+ }
54
+ async getByUser(userId, category, limit = 50) {
55
+ const now = Date.now();
56
+ const list = await this.repo.find({
57
+ where: {
58
+ userId,
59
+ isDeleted: 0,
60
+ ...(category ? { category } : {}),
61
+ },
62
+ order: { createTime: 'DESC' },
63
+ take: limit,
64
+ });
65
+ return list
66
+ .filter(e => !e.expiresAt || e.expiresAt > now)
67
+ .map(e => this.toMemoryEntry(e));
68
+ }
69
+ async search(userId, query, topK = 10) {
70
+ const now = Date.now();
71
+ const queryLower = query.toLowerCase();
72
+ const keywords = queryLower.split(/\s+/).filter(w => w.length > 1);
73
+ // 先用 LIKE 模糊查询缩小范围(避免全表扫描)
74
+ const conditions = keywords.map(() => ({
75
+ content: (0, typeorm_1.Like)(`%${query}%`),
76
+ }));
77
+ const list = await this.repo.find({
78
+ where: conditions.length > 0 ? conditions : { userId, isDeleted: 0 },
79
+ take: topK * 3, // 多取一些,后续排序过滤
80
+ });
81
+ // 关键词匹配 + 分类加权(兼容 InMemoryStore 的评分逻辑)
82
+ const scored = list
83
+ .filter(e => e.userId === userId &&
84
+ e.isDeleted === 0 &&
85
+ (!e.expiresAt || e.expiresAt > now))
86
+ .map(e => {
87
+ const contentLower = e.content.toLowerCase();
88
+ let score = 0;
89
+ for (const word of keywords) {
90
+ if (contentLower.includes(word))
91
+ score += 1;
92
+ }
93
+ if (e.category === 'fact')
94
+ score += 0.5;
95
+ if (e.category === 'preference')
96
+ score += 0.3;
97
+ return { entry: e, score };
98
+ })
99
+ .filter(s => s.score > 0)
100
+ .sort((a, b) => b.score - a.score)
101
+ .slice(0, topK);
102
+ return scored.map(s => this.toMemoryEntry(s.entry, s.score));
103
+ }
104
+ async delete(id) {
105
+ await this.repo.update({ id: Number(id) }, { isDeleted: 1 });
106
+ return true;
107
+ }
108
+ async clearThread(threadId) {
109
+ await this.repo.update({ threadId: String(threadId) }, { isDeleted: 1 });
110
+ }
111
+ async load(userId, options) {
112
+ const limit = options?.limit || 50;
113
+ const where = { userId, isDeleted: 0 };
114
+ if (options?.threadId)
115
+ where.threadId = String(options.threadId);
116
+ if (options?.category)
117
+ where.category = options.category;
118
+ const list = await this.repo.find({
119
+ where,
120
+ order: { createTime: 'DESC' },
121
+ take: limit,
122
+ });
123
+ return list.map(e => this.toMemoryEntry(e));
124
+ }
125
+ async clear(userId) {
126
+ await this.repo.update({ userId }, { isDeleted: 1 });
127
+ }
128
+ /** 将 TypeORM 实体转换为 MemoryEntry */
129
+ toMemoryEntry(entity, relevance) {
130
+ return {
131
+ id: entity.id,
132
+ threadId: entity.threadId,
133
+ userId: entity.userId,
134
+ content: entity.content,
135
+ category: entity.category,
136
+ relevance: relevance ?? entity.relevance ?? 0,
137
+ createdAt: entity.createTime || Date.now(),
138
+ expiresAt: entity.expiresAt ?? undefined,
139
+ meta: entity.meta ?? undefined,
140
+ };
141
+ }
142
+ }
143
+ exports.DBMemoryStore = DBMemoryStore;