flex-mcp 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.
Files changed (131) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +154 -0
  3. package/dist/api/auth.d.ts +6 -0
  4. package/dist/api/auth.d.ts.map +1 -0
  5. package/dist/api/auth.js +111 -0
  6. package/dist/api/auth.js.map +1 -0
  7. package/dist/api/configs.d.ts +6 -0
  8. package/dist/api/configs.d.ts.map +1 -0
  9. package/dist/api/configs.js +693 -0
  10. package/dist/api/configs.js.map +1 -0
  11. package/dist/api/index.d.ts +6 -0
  12. package/dist/api/index.d.ts.map +1 -0
  13. package/dist/api/index.js +24 -0
  14. package/dist/api/index.js.map +1 -0
  15. package/dist/api/mcp.d.ts +7 -0
  16. package/dist/api/mcp.d.ts.map +1 -0
  17. package/dist/api/mcp.js +46 -0
  18. package/dist/api/mcp.js.map +1 -0
  19. package/dist/api/middleware.d.ts +25 -0
  20. package/dist/api/middleware.d.ts.map +1 -0
  21. package/dist/api/middleware.js +65 -0
  22. package/dist/api/middleware.js.map +1 -0
  23. package/dist/api/prompts.d.ts +6 -0
  24. package/dist/api/prompts.d.ts.map +1 -0
  25. package/dist/api/prompts.js +260 -0
  26. package/dist/api/prompts.js.map +1 -0
  27. package/dist/api/resources.d.ts +6 -0
  28. package/dist/api/resources.d.ts.map +1 -0
  29. package/dist/api/resources.js +159 -0
  30. package/dist/api/resources.js.map +1 -0
  31. package/dist/api/tables.d.ts +15 -0
  32. package/dist/api/tables.d.ts.map +1 -0
  33. package/dist/api/tables.js +702 -0
  34. package/dist/api/tables.js.map +1 -0
  35. package/dist/api/users.d.ts +6 -0
  36. package/dist/api/users.d.ts.map +1 -0
  37. package/dist/api/users.js +96 -0
  38. package/dist/api/users.js.map +1 -0
  39. package/dist/auth/index.d.ts +15 -0
  40. package/dist/auth/index.d.ts.map +1 -0
  41. package/dist/auth/index.js +126 -0
  42. package/dist/auth/index.js.map +1 -0
  43. package/dist/cli.d.ts +7 -0
  44. package/dist/cli.d.ts.map +1 -0
  45. package/dist/cli.js +288 -0
  46. package/dist/cli.js.map +1 -0
  47. package/dist/config.d.ts +21 -0
  48. package/dist/config.d.ts.map +1 -0
  49. package/dist/config.js +54 -0
  50. package/dist/config.js.map +1 -0
  51. package/dist/db/index.d.ts +11 -0
  52. package/dist/db/index.d.ts.map +1 -0
  53. package/dist/db/index.js +164 -0
  54. package/dist/db/index.js.map +1 -0
  55. package/dist/db/schema.d.ts +646 -0
  56. package/dist/db/schema.d.ts.map +1 -0
  57. package/dist/db/schema.js +73 -0
  58. package/dist/db/schema.js.map +1 -0
  59. package/dist/index.d.ts +5 -0
  60. package/dist/index.d.ts.map +1 -0
  61. package/dist/index.js +153 -0
  62. package/dist/index.js.map +1 -0
  63. package/dist/mcp/aggregator.d.ts +78 -0
  64. package/dist/mcp/aggregator.d.ts.map +1 -0
  65. package/dist/mcp/aggregator.js +1266 -0
  66. package/dist/mcp/aggregator.js.map +1 -0
  67. package/dist/mcp/component-loader.d.ts +17 -0
  68. package/dist/mcp/component-loader.d.ts.map +1 -0
  69. package/dist/mcp/component-loader.js +131 -0
  70. package/dist/mcp/component-loader.js.map +1 -0
  71. package/dist/mcp/index.d.ts +7 -0
  72. package/dist/mcp/index.d.ts.map +1 -0
  73. package/dist/mcp/index.js +107 -0
  74. package/dist/mcp/index.js.map +1 -0
  75. package/dist/mcp/mcp-client.d.ts +53 -0
  76. package/dist/mcp/mcp-client.d.ts.map +1 -0
  77. package/dist/mcp/mcp-client.js +418 -0
  78. package/dist/mcp/mcp-client.js.map +1 -0
  79. package/dist/mcp/post-sse-transport.d.ts +52 -0
  80. package/dist/mcp/post-sse-transport.d.ts.map +1 -0
  81. package/dist/mcp/post-sse-transport.js +375 -0
  82. package/dist/mcp/post-sse-transport.js.map +1 -0
  83. package/dist/mcp/service.d.ts +49 -0
  84. package/dist/mcp/service.d.ts.map +1 -0
  85. package/dist/mcp/service.js +358 -0
  86. package/dist/mcp/service.js.map +1 -0
  87. package/dist/mcp/tool-sync.d.ts +27 -0
  88. package/dist/mcp/tool-sync.d.ts.map +1 -0
  89. package/dist/mcp/tool-sync.js +200 -0
  90. package/dist/mcp/tool-sync.js.map +1 -0
  91. package/dist/script/compiler.d.ts +15 -0
  92. package/dist/script/compiler.d.ts.map +1 -0
  93. package/dist/script/compiler.js +163 -0
  94. package/dist/script/compiler.js.map +1 -0
  95. package/dist/script/context.d.ts +11 -0
  96. package/dist/script/context.d.ts.map +1 -0
  97. package/dist/script/context.js +786 -0
  98. package/dist/script/context.js.map +1 -0
  99. package/dist/script/executor.d.ts +43 -0
  100. package/dist/script/executor.d.ts.map +1 -0
  101. package/dist/script/executor.js +126 -0
  102. package/dist/script/executor.js.map +1 -0
  103. package/dist/static.d.ts +21 -0
  104. package/dist/static.d.ts.map +1 -0
  105. package/dist/static.js +95 -0
  106. package/dist/static.js.map +1 -0
  107. package/dist/types/index.d.ts +337 -0
  108. package/dist/types/index.d.ts.map +1 -0
  109. package/dist/types/index.js +5 -0
  110. package/dist/types/index.js.map +1 -0
  111. package/dist/utils/id.d.ts +5 -0
  112. package/dist/utils/id.d.ts.map +1 -0
  113. package/dist/utils/id.js +8 -0
  114. package/dist/utils/id.js.map +1 -0
  115. package/dist/utils/logger.d.ts +21 -0
  116. package/dist/utils/logger.d.ts.map +1 -0
  117. package/dist/utils/logger.js +31 -0
  118. package/dist/utils/logger.js.map +1 -0
  119. package/dist/utils/prompt-template.d.ts +15 -0
  120. package/dist/utils/prompt-template.d.ts.map +1 -0
  121. package/dist/utils/prompt-template.js +82 -0
  122. package/dist/utils/prompt-template.js.map +1 -0
  123. package/dist/utils/telemetry.d.ts +45 -0
  124. package/dist/utils/telemetry.d.ts.map +1 -0
  125. package/dist/utils/telemetry.js +245 -0
  126. package/dist/utils/telemetry.js.map +1 -0
  127. package/dist/utils/variables.d.ts +24 -0
  128. package/dist/utils/variables.d.ts.map +1 -0
  129. package/dist/utils/variables.js +45 -0
  130. package/dist/utils/variables.js.map +1 -0
  131. package/package.json +70 -0
@@ -0,0 +1,337 @@
1
+ /**
2
+ * 类型定义(内联版本,用于 npm 发布)
3
+ */
4
+ export type UserRole = 'admin' | 'user';
5
+ export interface User {
6
+ id: string;
7
+ email: string;
8
+ apiKey: string;
9
+ role: UserRole;
10
+ createdAt: Date;
11
+ updatedAt: Date;
12
+ }
13
+ export interface MCPConfig {
14
+ id: string;
15
+ userId: string;
16
+ name: string;
17
+ components: MCPComponent[];
18
+ customTools: CustomTool[];
19
+ variables: Variable[];
20
+ initScript?: string;
21
+ enableExploreTable?: boolean;
22
+ createdAt: Date;
23
+ updatedAt: Date;
24
+ }
25
+ export interface MCPComponent {
26
+ id: string;
27
+ name: string;
28
+ type: 'npm' | 'url' | 'stdio';
29
+ package?: string;
30
+ version?: string;
31
+ url?: string;
32
+ command?: string;
33
+ args?: string[];
34
+ env?: Record<string, string>;
35
+ namespace?: string;
36
+ disabled?: boolean;
37
+ config?: Record<string, any>;
38
+ }
39
+ export type ToolSource = 'custom' | 'table' | 'mcp' | 'system';
40
+ export interface CustomTool {
41
+ id: string;
42
+ name: string;
43
+ description: string;
44
+ serverScript?: string;
45
+ parameters: ToolParameter[];
46
+ source?: ToolSource;
47
+ }
48
+ export interface ToolParameter {
49
+ name: string;
50
+ type: 'string' | 'number' | 'boolean' | 'object' | 'array';
51
+ description: string;
52
+ required?: boolean;
53
+ default?: any;
54
+ }
55
+ export interface Variable {
56
+ id: string;
57
+ name: string;
58
+ value: string;
59
+ description?: string;
60
+ isSecret?: boolean;
61
+ }
62
+ export interface ApiResponse<T = any> {
63
+ success: boolean;
64
+ data?: T;
65
+ error?: string;
66
+ message?: string;
67
+ }
68
+ export interface LoginRequest {
69
+ email: string;
70
+ apiKey: string;
71
+ }
72
+ export interface AdminLoginRequest {
73
+ username: string;
74
+ password: string;
75
+ }
76
+ export interface AuthToken {
77
+ token: string;
78
+ user: Omit<User, 'apiKey'>;
79
+ }
80
+ export interface MCPTool {
81
+ name: string;
82
+ description: string;
83
+ inputSchema: {
84
+ type: 'object';
85
+ properties: Record<string, any>;
86
+ required?: string[];
87
+ };
88
+ }
89
+ export interface MCPComponentTool {
90
+ id: string;
91
+ userId: string;
92
+ configId: string;
93
+ componentId: string;
94
+ componentName: string;
95
+ toolName: string;
96
+ originalToolName: string;
97
+ description: string;
98
+ inputSchema: {
99
+ type: 'object';
100
+ properties: Record<string, any>;
101
+ required?: string[];
102
+ };
103
+ disabled: boolean;
104
+ toolPatches?: Record<string, any>;
105
+ createdAt: Date;
106
+ updatedAt: Date;
107
+ }
108
+ export interface MCPPrompt {
109
+ name: string;
110
+ description?: string;
111
+ arguments?: Array<{
112
+ name: string;
113
+ description?: string;
114
+ required?: boolean;
115
+ }>;
116
+ }
117
+ export interface Prompt {
118
+ id: string;
119
+ userId: string;
120
+ name: string;
121
+ description?: string;
122
+ arguments: Array<{
123
+ name: string;
124
+ description?: string;
125
+ required?: boolean;
126
+ }>;
127
+ messages: Array<{
128
+ role: 'user' | 'assistant';
129
+ content: {
130
+ type: 'text';
131
+ text: string;
132
+ };
133
+ }>;
134
+ createdAt: Date;
135
+ updatedAt: Date;
136
+ }
137
+ export type ColumnType = 'string' | 'number' | 'boolean' | 'date' | 'json';
138
+ /**
139
+ * 表列定义
140
+ * @property name - 列名
141
+ * @property type - 列类型:'string' | 'number' | 'boolean' | 'date' | 'json'
142
+ * @property nullable - 是否可为空
143
+ * @property defaultValue - 默认值(可选)
144
+ * @property description - 列说明/描述(可选),用于说明该列的用途和含义
145
+ */
146
+ export interface TableColumn {
147
+ name: string;
148
+ type: ColumnType;
149
+ nullable: boolean;
150
+ defaultValue?: any;
151
+ description?: string;
152
+ }
153
+ /**
154
+ * 表定义
155
+ * @property id - 表ID
156
+ * @property name - 表名
157
+ * @property description - 表说明/描述(可选),用于说明该表的用途
158
+ * @property columns - 列定义数组,每个列定义包含列名、类型、是否可为空、默认值和列说明
159
+ * @property allowExplore - 是否允许 AI 探索此表(默认为 true)
160
+ * @property createdAt - 创建时间
161
+ * @property updatedAt - 更新时间
162
+ */
163
+ export interface TableDefinition {
164
+ id: string;
165
+ name: string;
166
+ description?: string;
167
+ columns: TableColumn[];
168
+ allowExplore?: boolean;
169
+ createdAt: Date;
170
+ updatedAt: Date;
171
+ }
172
+ export interface Context {
173
+ user: {
174
+ id: string;
175
+ email: string;
176
+ role: UserRole;
177
+ createdAt: Date;
178
+ updatedAt: Date;
179
+ };
180
+ mcpClient: {
181
+ headers: Record<string, string>;
182
+ config: Record<string, any>;
183
+ };
184
+ http: {
185
+ get(url: string, options?: any): Promise<any>;
186
+ post(url: string, data?: any, options?: any): Promise<any>;
187
+ put(url: string, data?: any, options?: any): Promise<any>;
188
+ delete(url: string, options?: any): Promise<any>;
189
+ };
190
+ fs: {
191
+ readFile(path: string): Promise<string>;
192
+ writeFile(path: string, content: string): Promise<void>;
193
+ exists(path: string): Promise<boolean>;
194
+ listDir(path: string): Promise<string[]>;
195
+ mkdir(path: string): Promise<void>;
196
+ };
197
+ cmd: {
198
+ exec(command: string, options?: {
199
+ cwd?: string;
200
+ timeout?: number;
201
+ }): Promise<{
202
+ stdout: string;
203
+ stderr: string;
204
+ exitCode: number;
205
+ }>;
206
+ };
207
+ utils: {
208
+ md5(input: string): string;
209
+ };
210
+ ripgrep: {
211
+ /**
212
+ * 搜索文件内容
213
+ */
214
+ search(pattern: string, options?: {
215
+ /** 工作目录(相对于用户隔离目录) */
216
+ cwd?: string;
217
+ /** 是否大小写敏感 */
218
+ caseSensitive?: boolean;
219
+ /** 是否启用多行匹配 */
220
+ multiline?: boolean;
221
+ /** 文件过滤模式(glob 模式数组) */
222
+ files?: string[];
223
+ /** 排除文件模式(glob 模式数组) */
224
+ excludeFiles?: string[];
225
+ /** 每个文件的最大匹配数 */
226
+ maxCount?: number;
227
+ /** 总结果数的最大限制 */
228
+ maxResults?: number;
229
+ /** 最大递归深度 */
230
+ maxDepth?: number;
231
+ /** 匹配行之前显示的行数 */
232
+ contextBefore?: number;
233
+ /** 匹配行之后显示的行数 */
234
+ contextAfter?: number;
235
+ /** 匹配行前后显示的行数(等同于同时设置 contextBefore 和 contextAfter) */
236
+ context?: number;
237
+ /** 将模式视为固定字符串而非正则表达式 */
238
+ fixedStrings?: boolean;
239
+ /** 只匹配完整的单词 */
240
+ wordRegexp?: boolean;
241
+ /** 文件类型过滤(如:['js', 'ts']) */
242
+ fileTypes?: string[];
243
+ /** 排除的文件类型 */
244
+ excludeTypes?: string[];
245
+ /** 只返回包含匹配的文件名 */
246
+ filesWithMatches?: boolean;
247
+ /** 只返回每个文件的匹配数量 */
248
+ count?: boolean;
249
+ /** 忽略 .gitignore 和 .ignore 文件 */
250
+ noIgnore?: boolean;
251
+ /** 智能大小写:如果模式包含大写字母则大小写敏感 */
252
+ smartCase?: boolean;
253
+ }): Promise<Array<{
254
+ file: string;
255
+ line: number;
256
+ text: string;
257
+ column?: number;
258
+ contextBefore?: string[];
259
+ contextAfter?: string[];
260
+ }>>;
261
+ /**
262
+ * 通过文件名模式搜索文件
263
+ */
264
+ searchByPath(pattern: string, options?: {
265
+ /** 工作目录(相对于用户隔离目录) */
266
+ cwd?: string;
267
+ /** 是否大小写敏感 */
268
+ caseSensitive?: boolean;
269
+ /** 最大递归深度 */
270
+ maxDepth?: number;
271
+ /** 文件类型过滤(如:['js', 'ts']) */
272
+ fileTypes?: string[];
273
+ /** 排除的文件类型 */
274
+ excludeTypes?: string[];
275
+ /** 排除文件模式(glob 模式数组) */
276
+ excludeFiles?: string[];
277
+ /** 总结果数的最大限制 */
278
+ maxResults?: number;
279
+ /** 忽略 .gitignore 和 .ignore 文件 */
280
+ noIgnore?: boolean;
281
+ }): Promise<string[]>;
282
+ };
283
+ mcp: {
284
+ callTool(toolName: string, args: any): Promise<any>;
285
+ listTools(): Promise<string[]>;
286
+ };
287
+ vars: {
288
+ get(name: string): string;
289
+ has(name: string): boolean;
290
+ getAll(): Record<string, string>;
291
+ set(name: string, value: string, description?: string): void;
292
+ };
293
+ log: {
294
+ info(message: string, ...args: any[]): void;
295
+ error(message: string, ...args: any[]): void;
296
+ warn(message: string, ...args: any[]): void;
297
+ debug(message: string, ...args: any[]): void;
298
+ };
299
+ tables: {
300
+ /**
301
+ * 列出所有表定义
302
+ * @returns 表定义数组,每个表定义包含表名、描述、列定义等信息
303
+ * 列定义(TableColumn)包含列名、类型、是否可为空、默认值和列说明(description)
304
+ */
305
+ list(): Promise<TableDefinition[]>;
306
+ /**
307
+ * 根据表名获取表定义(包含列说明)
308
+ * @param tableName 表名
309
+ * @returns 表定义对象,包含表名、描述、列定义(含字段说明)等信息
310
+ */
311
+ getDefinition(tableName: string): Promise<TableDefinition>;
312
+ /**
313
+ * 根据表名获取表的所有行数据
314
+ * @param tableName 表名
315
+ * @returns 表行数据数组,每行是一个包含列名和值的对象
316
+ */
317
+ get(tableName: string): Promise<Array<Record<string, any>>>;
318
+ /**
319
+ * 根据表名查询表数据,支持过滤
320
+ * @param tableName 表名
321
+ * @param filter 可选的过滤函数,返回 true 的行会被包含在结果中
322
+ * @returns 过滤后的表行数据数组
323
+ */
324
+ query(tableName: string, filter?: (row: Record<string, any>) => boolean): Promise<Array<Record<string, any>>>;
325
+ };
326
+ sql: {
327
+ /**
328
+ * 执行 SQL 语句
329
+ * 只能访问和操作当前用户的表
330
+ * 支持 SELECT, INSERT, UPDATE, DELETE
331
+ * @param sql SQL 语句
332
+ * @returns SELECT 返回结果数组,其他操作返回 { changes: number, lastInsertRowid?: number }
333
+ */
334
+ execute(sql: string): Promise<any>;
335
+ };
336
+ }
337
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * 类型定义(内联版本,用于 npm 发布)
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * ID 生成工具
3
+ */
4
+ export declare function generateId(): string;
5
+ //# sourceMappingURL=id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"id.d.ts","sourceRoot":"","sources":["../../src/utils/id.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,wBAAgB,UAAU,IAAI,MAAM,CAEnC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * ID 生成工具
3
+ */
4
+ import crypto from 'crypto';
5
+ export function generateId() {
6
+ return crypto.randomUUID();
7
+ }
8
+ //# sourceMappingURL=id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"id.js","sourceRoot":"","sources":["../../src/utils/id.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,UAAU,UAAU;IACxB,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * 统一日志工具
3
+ * 提供统一的日志接口,便于后续扩展(如日志级别、日志文件等)
4
+ */
5
+ type LogLevel = 'info' | 'warn' | 'error' | 'debug';
6
+ interface Logger {
7
+ info(message: string, ...args: any[]): void;
8
+ warn(message: string, ...args: any[]): void;
9
+ error(message: string, ...args: any[]): void;
10
+ debug(message: string, ...args: any[]): void;
11
+ }
12
+ declare class ConsoleLogger implements Logger {
13
+ private formatMessage;
14
+ info(message: string, ...args: any[]): void;
15
+ warn(message: string, ...args: any[]): void;
16
+ error(message: string, ...args: any[]): void;
17
+ debug(message: string, ...args: any[]): void;
18
+ }
19
+ export declare const logger: ConsoleLogger;
20
+ export type { Logger, LogLevel };
21
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,KAAK,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAEpD,UAAU,MAAM;IACd,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAC5C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAC5C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAC7C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;CAC9C;AAED,cAAM,aAAc,YAAW,MAAM;IACnC,OAAO,CAAC,aAAa;IASrB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAI3C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAI3C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAI5C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;CAK7C;AAGD,eAAO,MAAM,MAAM,eAAsB,CAAC;AAG1C,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * 统一日志工具
3
+ * 提供统一的日志接口,便于后续扩展(如日志级别、日志文件等)
4
+ */
5
+ class ConsoleLogger {
6
+ formatMessage(level, message, ...args) {
7
+ const timestamp = new Date().toISOString();
8
+ const prefix = `[${timestamp}] [${level.toUpperCase()}]`;
9
+ if (args.length > 0) {
10
+ return `${prefix} ${message} ${args.map(arg => typeof arg === 'object' ? JSON.stringify(arg) : String(arg)).join(' ')}`;
11
+ }
12
+ return `${prefix} ${message}`;
13
+ }
14
+ info(message, ...args) {
15
+ console.log(this.formatMessage('info', message, ...args));
16
+ }
17
+ warn(message, ...args) {
18
+ console.warn(this.formatMessage('warn', message, ...args));
19
+ }
20
+ error(message, ...args) {
21
+ console.error(this.formatMessage('error', message, ...args));
22
+ }
23
+ debug(message, ...args) {
24
+ if (process.env.NODE_ENV === 'development' || process.env.DEBUG === 'true') {
25
+ console.debug(this.formatMessage('debug', message, ...args));
26
+ }
27
+ }
28
+ }
29
+ // 导出单例 logger
30
+ export const logger = new ConsoleLogger();
31
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,MAAM,aAAa;IACT,aAAa,CAAC,KAAe,EAAE,OAAe,EAAE,GAAG,IAAW;QACpE,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,IAAI,SAAS,MAAM,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC;QACzD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,OAAO,GAAG,MAAM,IAAI,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1H,CAAC;QACD,OAAO,GAAG,MAAM,IAAI,OAAO,EAAE,CAAC;IAChC,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,GAAG,IAAW;QAClC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,GAAG,IAAW;QAClC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,GAAG,IAAW;QACnC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,GAAG,IAAW;QACnC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;YAC3E,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;CACF;AAED,cAAc;AACd,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * 提示词模板处理工具
3
+ * 支持变量替换和条件逻辑
4
+ *
5
+ * @deprecated 使用 @flex-mcp/shared 中的 processPromptTemplate 代替
6
+ * 此文件保留仅为向后兼容,新代码应直接从 shared 包导入
7
+ */
8
+ /**
9
+ * 处理提示词模板,支持变量替换和条件逻辑
10
+ * @param text 模板文本
11
+ * @param args 参数对象
12
+ * @returns 处理后的文本
13
+ */
14
+ export declare function processPromptTemplate(text: string, args: Record<string, any>): string;
15
+ //# sourceMappingURL=prompt-template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-template.d.ts","sourceRoot":"","sources":["../../src/utils/prompt-template.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAsEH;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAIrF"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * 提示词模板处理工具
3
+ * 支持变量替换和条件逻辑
4
+ *
5
+ * @deprecated 使用 @flex-mcp/shared 中的 processPromptTemplate 代替
6
+ * 此文件保留仅为向后兼容,新代码应直接从 shared 包导入
7
+ */
8
+ // 重新导出 shared 包中的函数,保持向后兼容
9
+ // 注意:server 包不使用 shared,所以这里需要内联实现
10
+ // 但为了代码一致性,建议后续迁移到使用 shared 包
11
+ /**
12
+ * 判断值是否为真值
13
+ */
14
+ function isTruthy(value) {
15
+ if (value === undefined || value === null) {
16
+ return false;
17
+ }
18
+ if (typeof value === 'boolean') {
19
+ return value;
20
+ }
21
+ if (typeof value === 'string') {
22
+ return value.trim() !== '';
23
+ }
24
+ if (typeof value === 'number') {
25
+ return value !== 0;
26
+ }
27
+ if (Array.isArray(value)) {
28
+ return value.length > 0;
29
+ }
30
+ if (typeof value === 'object') {
31
+ return Object.keys(value).length > 0;
32
+ }
33
+ return Boolean(value);
34
+ }
35
+ /**
36
+ * 处理条件逻辑块
37
+ */
38
+ function processConditionalBlocks(text, args) {
39
+ let result = text;
40
+ const ifPattern = /\{\{#if\s+(\w+)\}\}([\s\S]*?)(?:\{\{else\}\}([\s\S]*?))?\{\{\/if\}\}/g;
41
+ result = result.replace(ifPattern, (match, varName, ifContent, elseContent) => {
42
+ const value = args[varName];
43
+ if (isTruthy(value)) {
44
+ return ifContent || '';
45
+ }
46
+ else {
47
+ return elseContent || '';
48
+ }
49
+ });
50
+ const ifnotPattern = /\{\{#ifnot\s+(\w+)\}\}([\s\S]*?)(?:\{\{else\}\}([\s\S]*?))?\{\{\/ifnot\}\}/g;
51
+ result = result.replace(ifnotPattern, (match, varName, ifnotContent, elseContent) => {
52
+ const value = args[varName];
53
+ if (!isTruthy(value)) {
54
+ return ifnotContent || '';
55
+ }
56
+ else {
57
+ return elseContent || '';
58
+ }
59
+ });
60
+ return result;
61
+ }
62
+ /**
63
+ * 替换简单变量 {{varName}}
64
+ */
65
+ function replaceSimpleVariables(text, args) {
66
+ return text.replace(/\{\{(\w+)\}\}/g, (match, varName) => {
67
+ const value = args[varName];
68
+ return value !== undefined && value !== null ? String(value) : match;
69
+ });
70
+ }
71
+ /**
72
+ * 处理提示词模板,支持变量替换和条件逻辑
73
+ * @param text 模板文本
74
+ * @param args 参数对象
75
+ * @returns 处理后的文本
76
+ */
77
+ export function processPromptTemplate(text, args) {
78
+ let result = processConditionalBlocks(text, args);
79
+ result = replaceSimpleVariables(result, args);
80
+ return result;
81
+ }
82
+ //# sourceMappingURL=prompt-template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-template.js","sourceRoot":"","sources":["../../src/utils/prompt-template.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,2BAA2B;AAC3B,mCAAmC;AACnC,8BAA8B;AAE9B;;GAEG;AACH,SAAS,QAAQ,CAAC,KAAU;IAC1B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;IAC7B,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,KAAK,CAAC,CAAC;IACrB,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1B,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,SAAS,wBAAwB,CAAC,IAAY,EAAE,IAAyB;IACvE,IAAI,MAAM,GAAG,IAAI,CAAC;IAElB,MAAM,SAAS,GAAG,uEAAuE,CAAC;IAC1F,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE;QAC5E,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5B,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACpB,OAAO,SAAS,IAAI,EAAE,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,OAAO,WAAW,IAAI,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,6EAA6E,CAAC;IACnG,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE;QAClF,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACrB,OAAO,YAAY,IAAI,EAAE,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,OAAO,WAAW,IAAI,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAAC,IAAY,EAAE,IAAyB;IACrE,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACvD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5B,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACvE,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAY,EAAE,IAAyB;IAC3E,IAAI,MAAM,GAAG,wBAAwB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAClD,MAAM,GAAG,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC9C,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * 使用统计上报模块(Telemetry)
3
+ *
4
+ * 设计原则:
5
+ * 1. 简单易用:只需调用 report(keypoint, params) 即可
6
+ * 2. 可替换后端:抽象底层实现,支持 PostHog、自定义端点等
7
+ * 3. 完全可选:通过环境变量 DISABLE_TELEMETRY=true 禁用
8
+ * 4. 异步上报:不阻塞主程序
9
+ * 5. 静默失败:上报失败不影响功能
10
+ *
11
+ * 使用方式:
12
+ * import { report } from './utils/telemetry.js';
13
+ * report('tool_called', { tool_name: 'explore_table' });
14
+ */
15
+ /**
16
+ * 上报参数接口
17
+ */
18
+ export interface TelemetryParams {
19
+ [key: string]: any;
20
+ }
21
+ /**
22
+ * 上报事件(公共 API)
23
+ *
24
+ * 说明:
25
+ * - 通用数据(instance_id, version, platform 等)会自动添加到所有上报中
26
+ * - 这些数据在 TelemetryManager 的 metadata 中统一管理
27
+ * - 无需在 params 中重复传递通用数据
28
+ *
29
+ * @param keypoint 事件名称(关键点)
30
+ * @param params 事件参数(只包含事件特定的数据,通用数据会自动添加)
31
+ * @param userId 用户 ID(可选,用于统计用户数量)
32
+ *
33
+ * @example
34
+ * // 简单上报,通用数据会自动添加
35
+ * report('tool_called', { tool_name: 'explore_table' }, userId);
36
+ *
37
+ * // 通用数据(instance_id, version, platform 等)会自动包含,无需手动添加
38
+ * report('server_start', {});
39
+ */
40
+ export declare function report(keypoint: string, params?: TelemetryParams, userId?: string): void;
41
+ /**
42
+ * 在启动时上报(延迟执行,不阻塞启动)
43
+ */
44
+ export declare function reportStartup(): void;
45
+ //# sourceMappingURL=telemetry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../src/utils/telemetry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AA0OD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAE,eAAoB,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAO5F;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAKpC"}