mcp-paike 1.0.9 → 1.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.
@@ -1,7 +1,8 @@
1
1
  declare class ApiClient {
2
- private instance;
2
+ private baseUrl;
3
+ private hostHeader;
3
4
  constructor();
4
- private formatError;
5
+ private request;
5
6
  get<T>(url: string, params?: Record<string, any>): Promise<T>;
6
7
  post<T>(url: string, data?: any): Promise<T>;
7
8
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAKA,cAAM,SAAS;IACb,OAAO,CAAC,QAAQ,CAAgB;;IAoChC,OAAO,CAAC,WAAW;IAcb,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAK7D,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;CAInD;AAED,eAAO,MAAM,SAAS,WAAkB,CAAC"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAmCA,cAAM,SAAS;IACb,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAS;;YASb,OAAO;IAuDf,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAI7D,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;CAGnD;AAED,eAAO,MAAM,SAAS,WAAkB,CAAC"}
@@ -1,57 +1,95 @@
1
- import axios from 'axios';
2
1
  import { config } from '../config/index.js';
3
2
  import { tokenManager } from '../auth/tokenManager.js';
4
3
  import { logger } from '../utils/logger.js';
4
+ // Extract hostname from URL for Host header
5
+ function getHostFromUrl(url) {
6
+ try {
7
+ return new URL(url).hostname;
8
+ }
9
+ catch {
10
+ return '';
11
+ }
12
+ }
13
+ // Build base URL using IP if configured (bypasses SNI detection)
14
+ function buildBaseUrl() {
15
+ if (config.apiIp) {
16
+ const url = new URL(config.apiBaseUrl);
17
+ return `${url.protocol}//${config.apiIp}${url.port ? ':' + url.port : ''}`;
18
+ }
19
+ return config.apiBaseUrl;
20
+ }
21
+ // Build query string from params
22
+ function buildQueryString(params) {
23
+ if (!params)
24
+ return '';
25
+ const searchParams = new URLSearchParams();
26
+ for (const [key, value] of Object.entries(params)) {
27
+ if (value !== undefined && value !== null) {
28
+ searchParams.append(key, String(value));
29
+ }
30
+ }
31
+ const qs = searchParams.toString();
32
+ return qs ? `?${qs}` : '';
33
+ }
5
34
  class ApiClient {
6
- instance;
35
+ baseUrl;
36
+ hostHeader;
7
37
  constructor() {
8
- this.instance = axios.create({
9
- baseURL: config.apiBaseUrl,
10
- timeout: 30000,
11
- headers: {
12
- 'Content-Type': 'application/json',
13
- },
14
- });
15
- // Add auth token to requests
16
- this.instance.interceptors.request.use((config) => {
17
- const token = tokenManager.getToken();
18
- if (token) {
19
- config.headers.Authorization = `Bearer ${token}`;
20
- }
21
- return config;
22
- });
23
- // Handle errors
24
- this.instance.interceptors.response.use((response) => response, (error) => {
25
- if (error.response?.status === 401) {
26
- logger.warn('Token 已过期或无效');
27
- // Clear credentials asynchronously, don't block error response
28
- tokenManager.clearCredentials().catch(() => {
29
- // Ignore errors during cleanup
30
- });
31
- }
32
- throw this.formatError(error);
33
- });
38
+ this.baseUrl = buildBaseUrl();
39
+ this.hostHeader = config.apiIp ? getHostFromUrl(config.apiBaseUrl) : '';
40
+ logger.info(`[ApiClient] Config: baseUrl=${this.baseUrl}, hostHeader=${this.hostHeader || '(not set)'}`);
34
41
  }
35
- formatError(error) {
36
- const response = error.response;
37
- if (response?.data?.message) {
38
- return new Error(response.data.message);
42
+ async request(method, url, data, params) {
43
+ const fullUrl = `${this.baseUrl}${url}${buildQueryString(params)}`;
44
+ const token = tokenManager.getToken();
45
+ const headers = {
46
+ 'Content-Type': 'application/json',
47
+ };
48
+ if (token) {
49
+ headers['Authorization'] = `Bearer ${token}`;
39
50
  }
40
- if (error.code === 'ECONNREFUSED') {
41
- return new Error('无法连接到服务器,请检查网络或服务是否运行');
51
+ if (this.hostHeader) {
52
+ headers['Host'] = this.hostHeader;
53
+ }
54
+ logger.debug(`[ApiClient] ${method} ${url}`, { hasToken: !!token });
55
+ try {
56
+ const response = await fetch(fullUrl, {
57
+ method,
58
+ headers,
59
+ body: data ? JSON.stringify(data) : undefined,
60
+ });
61
+ const responseData = await response.json();
62
+ if (!response.ok) {
63
+ if (response.status === 401) {
64
+ logger.warn('Token 已过期或无效');
65
+ tokenManager.clearCredentials().catch(() => { });
66
+ }
67
+ throw new Error(responseData.message || `HTTP ${response.status}`);
68
+ }
69
+ if (!responseData.success) {
70
+ throw new Error(responseData.message || '请求失败');
71
+ }
72
+ return responseData.data;
42
73
  }
43
- if (error.code === 'ECONNABORTED') {
44
- return new Error('请求超时,请稍后重试');
74
+ catch (error) {
75
+ // Handle network errors
76
+ if (error.cause?.code === 'ECONNREFUSED') {
77
+ throw new Error('无法连接到服务器,请检查网络或服务是否运行');
78
+ }
79
+ if (error.cause?.code === 'ECONNRESET') {
80
+ throw new Error('连接被重置,请稍后重试');
81
+ }
82
+ if (error.name === 'TimeoutError' || error.cause?.code === 'ETIMEDOUT') {
83
+ throw new Error('请求超时,请稍后重试');
84
+ }
85
+ throw error;
45
86
  }
46
- return new Error(error.message || '请求失败');
47
87
  }
48
88
  async get(url, params) {
49
- const response = await this.instance.get(url, { params });
50
- return response.data.data;
89
+ return this.request('GET', url, undefined, params);
51
90
  }
52
91
  async post(url, data) {
53
- const response = await this.instance.post(url, data);
54
- return response.data.data;
92
+ return this.request('POST', url, data);
55
93
  }
56
94
  }
57
95
  export const apiClient = new ApiClient();
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,SAAS;IACL,QAAQ,CAAgB;IAEhC;QACE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;YAC3B,OAAO,EAAE,MAAM,CAAC,UAAU;YAC1B,OAAO,EAAE,KAAK;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;aACnC;SACF,CAAC,CAAC;QAEH,6BAA6B;QAC7B,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YAChD,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;YACtC,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,CAAC,OAAO,CAAC,aAAa,GAAG,UAAU,KAAK,EAAE,CAAC;YACnD,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,gBAAgB;QAChB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CACrC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,EACtB,CAAC,KAAiB,EAAE,EAAE;YACpB,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG,EAAE,CAAC;gBACnC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAC5B,+DAA+D;gBAC/D,YAAY,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;oBACzC,+BAA+B;gBACjC,CAAC,CAAC,CAAC;YACL,CAAC;YACD,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC,CACF,CAAC;IACJ,CAAC;IAEO,WAAW,CAAC,KAAiB;QACnC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAe,CAAC;QACvC,IAAI,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;YAC5B,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YAClC,OAAO,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YAClC,OAAO,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,GAAG,CAAI,GAAW,EAAE,MAA4B;QACpD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAgC,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QACzF,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,IAAI,CAAI,GAAW,EAAE,IAAU;QACnC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAgC,GAAG,EAAE,IAAI,CAAC,CAAC;QACpF,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B,CAAC;CACF;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ export declare const config: {
2
2
  apiBaseUrl: string;
3
3
  authPageUrl: string;
4
4
  logLevel: string;
5
+ apiIp: string;
5
6
  };
6
7
  export declare function validateConfig(): void;
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,MAAM;;;;CAIlB,CAAC;AAEF,wBAAgB,cAAc,IAAI,IAAI,CAQrC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,MAAM;;;;;CAMlB,CAAC;AAEF,wBAAgB,cAAc,IAAI,IAAI,CAQrC"}
@@ -8,6 +8,8 @@ export const config = {
8
8
  apiBaseUrl: process.env.MCP_API_BASE_URL || 'https://paike.bohecoding.com',
9
9
  authPageUrl: process.env.MCP_AUTH_PAGE_URL || 'https://paike.bohecoding.com/mcp-auth',
10
10
  logLevel: process.env.MCP_LOG_LEVEL || 'info',
11
+ // Optional: IP address for direct connection (bypasses SNI detection on Alibaba Cloud)
12
+ apiIp: process.env.MCP_API_IP || '',
11
13
  };
12
14
  export function validateConfig() {
13
15
  const required = ['MCP_API_BASE_URL'];
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1D,mCAAmC;AACnC,YAAY,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC;AAEzD,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,8BAA8B;IAC1E,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,uCAAuC;IACrF,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,MAAM;CAC9C,CAAC;AAEF,MAAM,UAAU,cAAc;IAC5B,MAAM,QAAQ,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAE5D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,IAAI,CAAC,iDAAiD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpF,OAAO,CAAC,IAAI,CAAC,wFAAwF,CAAC,CAAC;IACzG,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1D,mCAAmC;AACnC,YAAY,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC;AAEzD,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,8BAA8B;IAC1E,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,uCAAuC;IACrF,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,MAAM;IAC7C,uFAAuF;IACvF,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE;CACpC,CAAC;AAEF,MAAM,UAAU,cAAc;IAC5B,MAAM,QAAQ,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAE5D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,IAAI,CAAC,iDAAiD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpF,OAAO,CAAC,IAAI,CAAC,wFAAwF,CAAC,CAAC;IACzG,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/tools/auth.ts"],"names":[],"mappings":"AAMA,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,SAAS;;;;;;;;;;;;;oBAaE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,KAAG,OAAO,CAAC,UAAU,CAAC;CAkF/D,CAAC;AAGF,eAAO,MAAM,kBAAkB;;;;;;;;mBAQV,OAAO,CAAC,UAAU,CAAC;CA4CvC,CAAC;AAkDF,eAAO,MAAM,SAAS;;;;;;;;;;;;;oBA3LE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,KAAG,OAAO,CAAC,UAAU,CAAC;;;;;;;;;mBA6F3C,OAAO,CAAC,UAAU,CAAC;IA8FgB,CAAC"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/tools/auth.ts"],"names":[],"mappings":"AAyBA,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,SAAS;;;;;;;;;;;;;oBAaE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,KAAG,OAAO,CAAC,UAAU,CAAC;CAkF/D,CAAC;AAGF,eAAO,MAAM,kBAAkB;;;;;;;;mBAQV,OAAO,CAAC,UAAU,CAAC;CA4CvC,CAAC;AA0FF,eAAO,MAAM,SAAS;;;;;;;;;;;;;oBAnOE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,KAAG,OAAO,CAAC,UAAU,CAAC;;;;;;;;;mBA6F3C,OAAO,CAAC,UAAU,CAAC;IAsIgB,CAAC"}
@@ -2,6 +2,23 @@ import open from 'open';
2
2
  import { config } from '../config/index.js';
3
3
  import { tokenManager } from '../auth/tokenManager.js';
4
4
  import { logger } from '../utils/logger.js';
5
+ // Build API URL, using IP if configured (bypasses SNI detection on Alibaba Cloud)
6
+ function buildApiUrl(path) {
7
+ if (config.apiIp) {
8
+ const url = new URL(config.apiBaseUrl);
9
+ return `${url.protocol}//${config.apiIp}${url.port ? ':' + url.port : ''}${path}`;
10
+ }
11
+ return `${config.apiBaseUrl}${path}`;
12
+ }
13
+ // Get Host header value from API base URL
14
+ function getApiHost() {
15
+ try {
16
+ return new URL(config.apiBaseUrl).hostname;
17
+ }
18
+ catch {
19
+ return '';
20
+ }
21
+ }
5
22
  // Login tool - opens browser and instructs user to paste token
6
23
  export const loginTool = {
7
24
  name: 'login',
@@ -147,13 +164,48 @@ export const getCurrentUserTool = {
147
164
  };
148
165
  // Helper function to validate token
149
166
  async function validateToken(token) {
150
- // Temporarily set the token for validation
151
- const response = await fetch(`${config.apiBaseUrl}/api/auth/me`, {
152
- headers: {
153
- 'Authorization': `Bearer ${token}`,
154
- 'Content-Type': 'application/json',
155
- },
156
- });
167
+ const apiUrl = buildApiUrl('/api/auth/me');
168
+ const headers = {
169
+ 'Authorization': `Bearer ${token}`,
170
+ 'Content-Type': 'application/json',
171
+ };
172
+ // Add Host header when using IP mode
173
+ if (config.apiIp) {
174
+ headers['Host'] = getApiHost();
175
+ logger.debug(`Validating token via IP: ${config.apiIp} with Host: ${headers['Host']}`);
176
+ }
177
+ // Create fetch options
178
+ const fetchOptions = {
179
+ headers,
180
+ };
181
+ // When using IP mode, we need to disable SSL verification
182
+ // Node.js fetch doesn't support custom agents directly, so we use undici's Agent
183
+ if (config.apiIp) {
184
+ // Use a workaround: set NODE_TLS_REJECT_UNAUTHORIZED for this request
185
+ // This is not ideal but works for the auth validation
186
+ const originalTlsReject = process.env.NODE_TLS_REJECT_UNAUTHORIZED;
187
+ process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
188
+ try {
189
+ const response = await fetch(apiUrl, fetchOptions);
190
+ if (!response.ok) {
191
+ const errorData = await response.json().catch(() => ({}));
192
+ throw new Error(errorData.message || `验证失败 (${response.status})`);
193
+ }
194
+ const result = await response.json();
195
+ return result.data;
196
+ }
197
+ finally {
198
+ // Restore original setting
199
+ if (originalTlsReject === undefined) {
200
+ delete process.env.NODE_TLS_REJECT_UNAUTHORIZED;
201
+ }
202
+ else {
203
+ process.env.NODE_TLS_REJECT_UNAUTHORIZED = originalTlsReject;
204
+ }
205
+ }
206
+ }
207
+ // Normal mode (no IP override)
208
+ const response = await fetch(apiUrl, fetchOptions);
157
209
  if (!response.ok) {
158
210
  const errorData = await response.json().catch(() => ({}));
159
211
  throw new Error(errorData.message || `验证失败 (${response.status})`);
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/tools/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/tools/auth.ts"],"names":[],"mappings":"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"}
@@ -5,30 +5,7 @@ interface ToolResult {
5
5
  }>;
6
6
  isError?: boolean;
7
7
  }
8
- export declare const listAchievementTypesTool: {
9
- name: string;
10
- description: string;
11
- inputSchema: {
12
- type: "object";
13
- properties: {
14
- category: {
15
- type: string;
16
- enum: string[];
17
- description: string;
18
- };
19
- isActive: {
20
- type: string;
21
- description: string;
22
- };
23
- };
24
- required: never[];
25
- };
26
- handler: (args: {
27
- category?: string;
28
- isActive?: boolean;
29
- }) => Promise<ToolResult>;
30
- };
31
- export declare const getStudentAchievementsTool: {
8
+ export declare const getStudentGrowthRecordsTool: {
32
9
  name: string;
33
10
  description: string;
34
11
  inputSchema: {
@@ -61,18 +38,23 @@ export declare const getStudentAchievementsTool: {
61
38
  endDate?: string;
62
39
  }) => Promise<ToolResult>;
63
40
  };
64
- export declare const listAchievementsByTypeTool: {
41
+ export declare const listGrowthRecordsTool: {
65
42
  name: string;
66
43
  description: string;
67
44
  inputSchema: {
68
45
  type: "object";
69
46
  properties: {
70
- achievementTypeId: {
47
+ studentName: {
48
+ type: string;
49
+ description: string;
50
+ };
51
+ title: {
71
52
  type: string;
72
53
  description: string;
73
54
  };
74
- level: {
55
+ category: {
75
56
  type: string;
57
+ enum: string[];
76
58
  description: string;
77
59
  };
78
60
  isPublic: {
@@ -96,11 +78,12 @@ export declare const listAchievementsByTypeTool: {
96
78
  description: string;
97
79
  };
98
80
  };
99
- required: string[];
81
+ required: never[];
100
82
  };
101
83
  handler: (args: {
102
- achievementTypeId: string;
103
- level?: string;
84
+ studentName?: string;
85
+ title?: string;
86
+ category?: string;
104
87
  isPublic?: boolean;
105
88
  startDate?: string;
106
89
  endDate?: string;
@@ -108,29 +91,7 @@ export declare const listAchievementsByTypeTool: {
108
91
  pageSize?: number;
109
92
  }) => Promise<ToolResult>;
110
93
  };
111
- export declare const achievementTools: ({
112
- name: string;
113
- description: string;
114
- inputSchema: {
115
- type: "object";
116
- properties: {
117
- category: {
118
- type: string;
119
- enum: string[];
120
- description: string;
121
- };
122
- isActive: {
123
- type: string;
124
- description: string;
125
- };
126
- };
127
- required: never[];
128
- };
129
- handler: (args: {
130
- category?: string;
131
- isActive?: boolean;
132
- }) => Promise<ToolResult>;
133
- } | {
94
+ export declare const growthRecordTools: ({
134
95
  name: string;
135
96
  description: string;
136
97
  inputSchema: {
@@ -168,12 +129,17 @@ export declare const achievementTools: ({
168
129
  inputSchema: {
169
130
  type: "object";
170
131
  properties: {
171
- achievementTypeId: {
132
+ studentName: {
133
+ type: string;
134
+ description: string;
135
+ };
136
+ title: {
172
137
  type: string;
173
138
  description: string;
174
139
  };
175
- level: {
140
+ category: {
176
141
  type: string;
142
+ enum: string[];
177
143
  description: string;
178
144
  };
179
145
  isPublic: {
@@ -197,11 +163,12 @@ export declare const achievementTools: ({
197
163
  description: string;
198
164
  };
199
165
  };
200
- required: string[];
166
+ required: never[];
201
167
  };
202
168
  handler: (args: {
203
- achievementTypeId: string;
204
- level?: string;
169
+ studentName?: string;
170
+ title?: string;
171
+ category?: string;
205
172
  isPublic?: boolean;
206
173
  startDate?: string;
207
174
  endDate?: string;
@@ -210,4 +177,4 @@ export declare const achievementTools: ({
210
177
  }) => Promise<ToolResult>;
211
178
  })[];
212
179
  export {};
213
- //# sourceMappingURL=achievements.d.ts.map
180
+ //# sourceMappingURL=growthRecords.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"growthRecords.d.ts","sourceRoot":"","sources":["../../src/tools/growthRecords.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;AAYD,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;oBA2BhB;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,KAAG,OAAO,CAAC,UAAU,CAAC;CAqExB,CAAC;AAGF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBA2CV;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,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;CA+ExB,CAAC;AASF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;oBAzNN;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,KAAG,OAAO,CAAC,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAmHD;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,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;IAwF4D,CAAC"}