mcp-paike 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 (59) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +124 -0
  3. package/dist/__tests__/__mocks__/open.d.ts +2 -0
  4. package/dist/__tests__/__mocks__/open.d.ts.map +1 -0
  5. package/dist/__tests__/__mocks__/open.js +5 -0
  6. package/dist/__tests__/__mocks__/open.js.map +1 -0
  7. package/dist/__tests__/toolRegistry.test.d.ts +2 -0
  8. package/dist/__tests__/toolRegistry.test.d.ts.map +1 -0
  9. package/dist/__tests__/toolRegistry.test.js +160 -0
  10. package/dist/__tests__/toolRegistry.test.js.map +1 -0
  11. package/dist/api/client.d.ts +10 -0
  12. package/dist/api/client.d.ts.map +1 -0
  13. package/dist/api/client.js +58 -0
  14. package/dist/api/client.js.map +1 -0
  15. package/dist/auth/tokenManager.d.ts +30 -0
  16. package/dist/auth/tokenManager.d.ts.map +1 -0
  17. package/dist/auth/tokenManager.js +107 -0
  18. package/dist/auth/tokenManager.js.map +1 -0
  19. package/dist/config/index.d.ts +7 -0
  20. package/dist/config/index.d.ts.map +1 -0
  21. package/dist/config/index.js +20 -0
  22. package/dist/config/index.js.map +1 -0
  23. package/dist/index.d.ts +3 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +144 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/tools/attendances.d.ts +145 -0
  28. package/dist/tools/attendances.d.ts.map +1 -0
  29. package/dist/tools/attendances.js +202 -0
  30. package/dist/tools/attendances.js.map +1 -0
  31. package/dist/tools/auth.d.ts +62 -0
  32. package/dist/tools/auth.d.ts.map +1 -0
  33. package/dist/tools/auth.js +193 -0
  34. package/dist/tools/auth.js.map +1 -0
  35. package/dist/tools/classes.d.ts +125 -0
  36. package/dist/tools/classes.d.ts.map +1 -0
  37. package/dist/tools/classes.js +195 -0
  38. package/dist/tools/classes.js.map +1 -0
  39. package/dist/tools/finance.d.ts +152 -0
  40. package/dist/tools/finance.d.ts.map +1 -0
  41. package/dist/tools/finance.js +319 -0
  42. package/dist/tools/finance.js.map +1 -0
  43. package/dist/tools/index.d.ts +29 -0
  44. package/dist/tools/index.d.ts.map +1 -0
  45. package/dist/tools/index.js +46 -0
  46. package/dist/tools/index.js.map +1 -0
  47. package/dist/tools/sessions.d.ts +126 -0
  48. package/dist/tools/sessions.d.ts.map +1 -0
  49. package/dist/tools/sessions.js +169 -0
  50. package/dist/tools/sessions.js.map +1 -0
  51. package/dist/tools/students.d.ts +171 -0
  52. package/dist/tools/students.d.ts.map +1 -0
  53. package/dist/tools/students.js +295 -0
  54. package/dist/tools/students.js.map +1 -0
  55. package/dist/utils/logger.d.ts +8 -0
  56. package/dist/utils/logger.d.ts.map +1 -0
  57. package/dist/utils/logger.js +73 -0
  58. package/dist/utils/logger.js.map +1 -0
  59. package/package.json +57 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"finance.d.ts","sourceRoot":"","sources":["../../src/tools/finance.ts"],"names":[],"mappings":"AAaA,UAAU,UAAU;IAClB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAiDD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;oBAqBR;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,KAAG,OAAO,CAAC,UAAU,CAAC;CA8IxB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;oBAahB;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,KAAG,OAAO,CAAC,UAAU,CAAC;CAmDlE,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;mBAUd,OAAO,CAAC,UAAU,CAAC;CAwEvC,CAAC;AAYF,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;oBA1UD;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,KAAG,OAAO,CAAC,UAAU,CAAC;;;;;;;;;;;;;;oBAwKD;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,KAAG,OAAO,CAAC,UAAU,CAAC;;;;;;;;;;mBA0E9C,OAAO,CAAC,UAAU,CAAC;IAwFvC,CAAC"}
@@ -0,0 +1,319 @@
1
+ import { apiClient } from '../api/client.js';
2
+ import { tokenManager } from '../auth/tokenManager.js';
3
+ import { logger } from '../utils/logger.js';
4
+ /** Maximum records per API page (matches backend limit) */
5
+ const PAGE_SIZE = 10000;
6
+ /** Maximum pages to fetch as safety limit */
7
+ const MAX_PAGES = 20;
8
+ /**
9
+ * Query teacher sales and session fees by date range
10
+ *
11
+ * Access Control:
12
+ * - STAFF: Can only query their own data
13
+ * - ADMIN/SUPER_ADMIN: Can query any teacher's data
14
+ *
15
+ * @returns Formatted report with:
16
+ * - Total sessions count
17
+ * - Total sales amount (课销)
18
+ * - Total session fees (课次费)
19
+ * - Session-by-session breakdown
20
+ */
21
+ export const getTeacherSalesTool = {
22
+ name: 'get_teacher_sales',
23
+ description: '查询教师课销与课次费 - 按日期范围查询课销金额、课次费(员工只能查自己)',
24
+ inputSchema: {
25
+ type: 'object',
26
+ properties: {
27
+ startDate: {
28
+ type: 'string',
29
+ description: '开始日期 (YYYY-MM-DD),必填',
30
+ },
31
+ endDate: {
32
+ type: 'string',
33
+ description: '结束日期 (YYYY-MM-DD),必填',
34
+ },
35
+ teacherId: {
36
+ type: 'string',
37
+ description: '教师ID(可选,管理员可查询所有教师,员工只能查自己)',
38
+ },
39
+ },
40
+ required: ['startDate', 'endDate'],
41
+ },
42
+ handler: async (args) => {
43
+ try {
44
+ logger.debug('查询教师课销', args);
45
+ // Get current user for STAFF role restriction
46
+ const user = tokenManager.getUser();
47
+ const isAdmin = user?.role === 'ADMIN' || user?.role === 'SUPER_ADMIN';
48
+ // Build query params - use pagination to fetch all data
49
+ const params = {
50
+ startDate: args.startDate,
51
+ endDate: args.endDate,
52
+ pageSize: PAGE_SIZE,
53
+ page: 1,
54
+ };
55
+ // STAFF can only query their own data
56
+ if (!isAdmin) {
57
+ if (args.teacherId && args.teacherId !== user?.id) {
58
+ return {
59
+ content: [
60
+ {
61
+ type: 'text',
62
+ text: '权限不足:员工只能查询自己的课销数据。',
63
+ },
64
+ ],
65
+ isError: true,
66
+ };
67
+ }
68
+ if (user?.id) {
69
+ params.teacherIds = user.id;
70
+ }
71
+ }
72
+ else if (args.teacherId) {
73
+ params.teacherIds = args.teacherId;
74
+ }
75
+ // Fetch all pages of data
76
+ const allSessions = [];
77
+ let currentPage = 1;
78
+ let totalPages = 1;
79
+ do {
80
+ params.page = currentPage;
81
+ const result = await apiClient.get('/api/teachers/attendance-export', params);
82
+ if (result.data && result.data.length > 0) {
83
+ allSessions.push(...result.data);
84
+ }
85
+ totalPages = result.pagination?.totalPages || 1;
86
+ currentPage++;
87
+ } while (currentPage <= totalPages && currentPage <= MAX_PAGES);
88
+ if (allSessions.length === 0) {
89
+ return {
90
+ content: [
91
+ {
92
+ type: 'text',
93
+ text: `查询期间 ${args.startDate} 至 ${args.endDate} 无课程数据。`,
94
+ },
95
+ ],
96
+ };
97
+ }
98
+ // Aggregate by teacher
99
+ const teacherStats = new Map();
100
+ allSessions.forEach((session) => {
101
+ const teacherName = session.teacherName || '未分配';
102
+ if (!teacherStats.has(teacherName)) {
103
+ teacherStats.set(teacherName, {
104
+ name: teacherName,
105
+ department: session.teacherDepartment || '-',
106
+ sessionCount: 0,
107
+ totalSales: 0,
108
+ totalSessionFee: 0,
109
+ presentCount: 0,
110
+ });
111
+ }
112
+ const stats = teacherStats.get(teacherName);
113
+ stats.sessionCount += 1;
114
+ stats.presentCount += session.presentCount || 0;
115
+ // Parse currency strings like "¥12,345.67" (use global replace for commas)
116
+ const salesAmount = parseFloat((session.totalSales || '¥0').replace('¥', '').replace(/,/g, '')) || 0;
117
+ const feeAmount = parseFloat((session.totalSessionFee || '¥0').replace('¥', '').replace(/,/g, '')) || 0;
118
+ stats.totalSales += salesAmount;
119
+ stats.totalSessionFee += feeAmount;
120
+ });
121
+ // Format output
122
+ let output = `教师课销报表\n`;
123
+ output += `查询期间: ${args.startDate} 至 ${args.endDate}\n`;
124
+ output += `共 ${allSessions.length} 节课\n`;
125
+ output += `${'='.repeat(50)}\n\n`;
126
+ for (const [name, stats] of teacherStats.entries()) {
127
+ output += `【${name}】${stats.department !== '-' ? ` (${stats.department})` : ''}\n`;
128
+ output += ` 课程节数: ${stats.sessionCount} 节\n`;
129
+ output += ` 实到学生: ${stats.presentCount} 人次\n`;
130
+ output += ` 课销总额: ¥${stats.totalSales.toFixed(2)}\n`;
131
+ output += ` 课次费: ¥${stats.totalSessionFee.toFixed(2)}\n\n`;
132
+ }
133
+ // Calculate grand totals
134
+ const grandTotals = Array.from(teacherStats.values()).reduce((acc, stats) => ({
135
+ sessionCount: acc.sessionCount + stats.sessionCount,
136
+ totalSales: acc.totalSales + stats.totalSales,
137
+ totalSessionFee: acc.totalSessionFee + stats.totalSessionFee,
138
+ }), { sessionCount: 0, totalSales: 0, totalSessionFee: 0 });
139
+ output += `${'='.repeat(50)}\n`;
140
+ output += `总计: ${grandTotals.sessionCount} 节课 | 课销 ¥${grandTotals.totalSales.toFixed(2)} | 课次费 ¥${grandTotals.totalSessionFee.toFixed(2)}`;
141
+ return {
142
+ content: [{ type: 'text', text: output }],
143
+ };
144
+ }
145
+ catch (error) {
146
+ logger.error('查询教师课销失败:', error.message);
147
+ return {
148
+ content: [{ type: 'text', text: `查询失败: ${error.message}` }],
149
+ isError: true,
150
+ };
151
+ }
152
+ },
153
+ };
154
+ /**
155
+ * Query student session balance details
156
+ *
157
+ * Access Control:
158
+ * - All authenticated users can query
159
+ *
160
+ * @returns Student info with:
161
+ * - Name, status, type
162
+ * - Balance per course category
163
+ * - Used vs total sessions breakdown
164
+ */
165
+ export const getStudentBalanceDetailTool = {
166
+ name: 'get_student_balance_detail',
167
+ description: '查询学员课次余额详情 - 获取学员各类型课程的余额',
168
+ inputSchema: {
169
+ type: 'object',
170
+ properties: {
171
+ studentId: {
172
+ type: 'string',
173
+ description: '学员ID,必填',
174
+ },
175
+ },
176
+ required: ['studentId'],
177
+ },
178
+ handler: async (args) => {
179
+ try {
180
+ logger.debug('查询学员余额详情', args);
181
+ // Get student info first
182
+ const student = await apiClient.get(`/api/students/${args.studentId}`);
183
+ // Get category balances
184
+ const balances = await apiClient.get(`/api/students/${args.studentId}/category-balances`);
185
+ if (!balances || balances.length === 0) {
186
+ return {
187
+ content: [
188
+ {
189
+ type: 'text',
190
+ text: `学员「${student.name}」暂无任何课次余额记录。`,
191
+ },
192
+ ],
193
+ };
194
+ }
195
+ let output = `学员课次余额\n`;
196
+ output += `${'='.repeat(40)}\n\n`;
197
+ output += `姓名: ${student.name}\n`;
198
+ output += `状态: ${formatStudentStatus(student.status)}\n`;
199
+ output += `类型: ${student.studentType === 'FORMAL' ? '正式学员' : '意向学员'}\n\n`;
200
+ output += `各类型余额:\n`;
201
+ let totalRemaining = 0;
202
+ balances.forEach((balance) => {
203
+ output += ` - ${balance.categoryName}: ${balance.remainingSessions} 课次`;
204
+ output += ` (已用 ${balance.usedSessions || 0}/${balance.totalSessions || balance.remainingSessions})\n`;
205
+ totalRemaining += balance.remainingSessions;
206
+ });
207
+ output += `\n${'='.repeat(40)}\n`;
208
+ output += `总剩余: ${totalRemaining} 课次`;
209
+ return {
210
+ content: [{ type: 'text', text: output }],
211
+ };
212
+ }
213
+ catch (error) {
214
+ logger.error('查询学员余额详情失败:', error.message);
215
+ return {
216
+ content: [{ type: 'text', text: `查询失败: ${error.message}` }],
217
+ isError: true,
218
+ };
219
+ }
220
+ },
221
+ };
222
+ /**
223
+ * Query session fee rules for all course categories
224
+ *
225
+ * Access Control:
226
+ * - ADMIN/SUPER_ADMIN only (requiredRole: 'ADMIN')
227
+ *
228
+ * @returns List of fee rules organized by category:
229
+ * - Category name
230
+ * - Student count ranges (min-max)
231
+ * - Session rate per student count tier
232
+ */
233
+ export const getSessionFeeRulesTool = {
234
+ name: 'get_session_fee_rules',
235
+ description: '查询课次费规则 - 查看不同人数对应的课次费率(仅管理员可用)',
236
+ inputSchema: {
237
+ type: 'object',
238
+ properties: {},
239
+ required: [],
240
+ },
241
+ // CRITICAL: Admin-only tool
242
+ requiredRole: 'ADMIN',
243
+ handler: async () => {
244
+ try {
245
+ logger.debug('查询课次费规则');
246
+ const rules = await apiClient.get('/api/teacher-session-rates');
247
+ if (!rules || rules.length === 0) {
248
+ return {
249
+ content: [
250
+ {
251
+ type: 'text',
252
+ text: '暂无课次费规则配置。\n请在管理后台添加课次费规则。',
253
+ },
254
+ ],
255
+ };
256
+ }
257
+ // Group by category
258
+ const categoryRules = new Map();
259
+ rules.forEach((rule) => {
260
+ const categoryName = rule.category?.name || '未分类';
261
+ if (!categoryRules.has(categoryName)) {
262
+ categoryRules.set(categoryName, []);
263
+ }
264
+ categoryRules.get(categoryName).push(rule);
265
+ });
266
+ let output = `课次费规则配置\n`;
267
+ output += `${'='.repeat(50)}\n\n`;
268
+ for (const [category, categoryRuleList] of categoryRules.entries()) {
269
+ output += `【${category}】\n`;
270
+ // Sort by minStudents
271
+ categoryRuleList.sort((a, b) => a.minStudents - b.minStudents);
272
+ categoryRuleList.forEach((rule) => {
273
+ const rate = typeof rule.sessionRate === 'object' ? Number(rule.sessionRate) : rule.sessionRate;
274
+ output += ` ${rule.minStudents}-${rule.maxStudents}人: ¥${Number(rate).toFixed(2)}/节\n`;
275
+ });
276
+ output += '\n';
277
+ }
278
+ output += `${'='.repeat(50)}\n`;
279
+ output += `共 ${rules.length} 条规则`;
280
+ return {
281
+ content: [{ type: 'text', text: output }],
282
+ };
283
+ }
284
+ catch (error) {
285
+ logger.error('查询课次费规则失败:', error.message);
286
+ // Handle 403 specifically
287
+ if (error.message.includes('403') || error.message.includes('权限')) {
288
+ return {
289
+ content: [
290
+ {
291
+ type: 'text',
292
+ text: '权限不足:此操作需要管理员权限。',
293
+ },
294
+ ],
295
+ isError: true,
296
+ };
297
+ }
298
+ return {
299
+ content: [{ type: 'text', text: `查询失败: ${error.message}` }],
300
+ isError: true,
301
+ };
302
+ }
303
+ },
304
+ };
305
+ // Helper functions
306
+ function formatStudentStatus(status) {
307
+ const statusMap = {
308
+ ACTIVE: '学习中',
309
+ PAUSED: '暂停',
310
+ GRADUATED: '毕业',
311
+ };
312
+ return statusMap[status] || status;
313
+ }
314
+ export const financeTools = [
315
+ getTeacherSalesTool,
316
+ getStudentBalanceDetailTool,
317
+ getSessionFeeRulesTool,
318
+ ];
319
+ //# sourceMappingURL=finance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"finance.js","sourceRoot":"","sources":["../../src/tools/finance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ interface ToolResult {
2
+ content: Array<{
3
+ type: 'text';
4
+ text: string;
5
+ }>;
6
+ isError?: boolean;
7
+ }
8
+ interface Tool {
9
+ name: string;
10
+ description: string;
11
+ inputSchema: {
12
+ type: 'object';
13
+ properties: Record<string, any>;
14
+ required: string[];
15
+ };
16
+ handler: (args: any) => Promise<ToolResult>;
17
+ requiredRole?: 'ADMIN';
18
+ }
19
+ declare class ToolRegistry {
20
+ private tools;
21
+ constructor();
22
+ getTool(name: string): Tool | undefined;
23
+ getAllTools(): Tool[];
24
+ getToolsForRole(userRole: string | null): Tool[];
25
+ getToolNames(): string[];
26
+ }
27
+ export declare const toolRegistry: ToolRegistry;
28
+ export type { Tool, ToolResult };
29
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAOA,UAAU,UAAU;IAClB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,UAAU,IAAI;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAChC,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;IACF,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5C,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAYD,cAAM,YAAY;IAChB,OAAO,CAAC,KAAK,CAAgC;;IAQ7C,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAIvC,WAAW,IAAI,IAAI,EAAE;IAIrB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,EAAE;IAchD,YAAY,IAAI,MAAM,EAAE;CAGzB;AAED,eAAO,MAAM,YAAY,cAAqB,CAAC;AAC/C,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC"}
@@ -0,0 +1,46 @@
1
+ import { authTools } from './auth.js';
2
+ import { studentTools } from './students.js';
3
+ import { classTools } from './classes.js';
4
+ import { sessionTools } from './sessions.js';
5
+ import { attendanceTools } from './attendances.js';
6
+ import { financeTools } from './finance.js';
7
+ // Combine all tools
8
+ const allTools = [
9
+ ...authTools,
10
+ ...studentTools,
11
+ ...classTools,
12
+ ...sessionTools,
13
+ ...attendanceTools,
14
+ ...financeTools,
15
+ ];
16
+ class ToolRegistry {
17
+ tools = new Map();
18
+ constructor() {
19
+ for (const tool of allTools) {
20
+ this.tools.set(tool.name, tool);
21
+ }
22
+ }
23
+ getTool(name) {
24
+ return this.tools.get(name);
25
+ }
26
+ getAllTools() {
27
+ return Array.from(this.tools.values());
28
+ }
29
+ getToolsForRole(userRole) {
30
+ return Array.from(this.tools.values()).filter((tool) => {
31
+ // No role requirement = available to all authenticated users
32
+ if (!tool.requiredRole)
33
+ return true;
34
+ // ADMIN requirement: Only ADMIN or SUPER_ADMIN
35
+ if (tool.requiredRole === 'ADMIN') {
36
+ return userRole === 'ADMIN' || userRole === 'SUPER_ADMIN';
37
+ }
38
+ return false;
39
+ });
40
+ }
41
+ getToolNames() {
42
+ return Array.from(this.tools.keys());
43
+ }
44
+ }
45
+ export const toolRegistry = new ToolRegistry();
46
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAmB5C,oBAAoB;AACpB,MAAM,QAAQ,GAAW;IACvB,GAAG,SAAS;IACZ,GAAG,YAAY;IACf,GAAG,UAAU;IACb,GAAG,YAAY;IACf,GAAG,eAAe;IAClB,GAAG,YAAY;CAChB,CAAC;AAEF,MAAM,YAAY;IACR,KAAK,GAAsB,IAAI,GAAG,EAAE,CAAC;IAE7C;QACE,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED,OAAO,CAAC,IAAY;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,WAAW;QACT,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,eAAe,CAAC,QAAuB;QACrC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;YACrD,6DAA6D;YAC7D,IAAI,CAAC,IAAI,CAAC,YAAY;gBAAE,OAAO,IAAI,CAAC;YAEpC,+CAA+C;YAC/C,IAAI,IAAI,CAAC,YAAY,KAAK,OAAO,EAAE,CAAC;gBAClC,OAAO,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,aAAa,CAAC;YAC5D,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;IAED,YAAY;QACV,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC;CACF;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC"}
@@ -0,0 +1,126 @@
1
+ interface ToolResult {
2
+ content: Array<{
3
+ type: 'text';
4
+ text: string;
5
+ }>;
6
+ isError?: boolean;
7
+ }
8
+ export declare const listSessionsTool: {
9
+ name: string;
10
+ description: string;
11
+ inputSchema: {
12
+ type: "object";
13
+ properties: {
14
+ startDate: {
15
+ type: string;
16
+ description: string;
17
+ };
18
+ endDate: {
19
+ type: string;
20
+ description: string;
21
+ };
22
+ teacherId: {
23
+ type: string;
24
+ description: string;
25
+ };
26
+ classId: {
27
+ type: string;
28
+ description: string;
29
+ };
30
+ page: {
31
+ type: string;
32
+ description: string;
33
+ };
34
+ pageSize: {
35
+ type: string;
36
+ description: string;
37
+ };
38
+ };
39
+ required: never[];
40
+ };
41
+ handler: (args: {
42
+ startDate?: string;
43
+ endDate?: string;
44
+ teacherId?: string;
45
+ classId?: string;
46
+ page?: number;
47
+ pageSize?: number;
48
+ }) => Promise<ToolResult>;
49
+ };
50
+ export declare const getSessionTool: {
51
+ name: string;
52
+ description: string;
53
+ inputSchema: {
54
+ type: "object";
55
+ properties: {
56
+ sessionId: {
57
+ type: string;
58
+ description: string;
59
+ };
60
+ };
61
+ required: string[];
62
+ };
63
+ handler: (args: {
64
+ sessionId: string;
65
+ }) => Promise<ToolResult>;
66
+ };
67
+ export declare const sessionTools: ({
68
+ name: string;
69
+ description: string;
70
+ inputSchema: {
71
+ type: "object";
72
+ properties: {
73
+ startDate: {
74
+ type: string;
75
+ description: string;
76
+ };
77
+ endDate: {
78
+ type: string;
79
+ description: string;
80
+ };
81
+ teacherId: {
82
+ type: string;
83
+ description: string;
84
+ };
85
+ classId: {
86
+ type: string;
87
+ description: string;
88
+ };
89
+ page: {
90
+ type: string;
91
+ description: string;
92
+ };
93
+ pageSize: {
94
+ type: string;
95
+ description: string;
96
+ };
97
+ };
98
+ required: never[];
99
+ };
100
+ handler: (args: {
101
+ startDate?: string;
102
+ endDate?: string;
103
+ teacherId?: string;
104
+ classId?: string;
105
+ page?: number;
106
+ pageSize?: number;
107
+ }) => Promise<ToolResult>;
108
+ } | {
109
+ name: string;
110
+ description: string;
111
+ inputSchema: {
112
+ type: "object";
113
+ properties: {
114
+ sessionId: {
115
+ type: string;
116
+ description: string;
117
+ };
118
+ };
119
+ required: string[];
120
+ };
121
+ handler: (args: {
122
+ sessionId: string;
123
+ }) => Promise<ToolResult>;
124
+ })[];
125
+ export {};
126
+ //# sourceMappingURL=sessions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/tools/sessions.ts"],"names":[],"mappings":"AAGA,UAAU,UAAU;IAClB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAGD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAiCL;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,KAAG,OAAO,CAAC,UAAU,CAAC;CA2DxB,CAAC;AAGF,eAAO,MAAM,cAAc;;;;;;;;;;;;;oBAaH;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,KAAG,OAAO,CAAC,UAAU,CAAC;CAkClE,CAAC;AAmCF,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAvJD;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,KAAG,OAAO,CAAC,UAAU,CAAC;;;;;;;;;;;;;;oBA2ED;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,KAAG,OAAO,CAAC,UAAU,CAAC;IAwElE,CAAC"}