@mikoto_zero/minigame-open-mcp 1.5.4 → 1.5.6

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 (57) hide show
  1. package/README.md +41 -32
  2. package/dist/core/auth/oauth.d.ts +34 -0
  3. package/dist/core/auth/oauth.d.ts.map +1 -0
  4. package/dist/core/auth/oauth.js +118 -0
  5. package/dist/core/auth/oauth.js.map +1 -0
  6. package/dist/core/auth/oauthState.d.ts +41 -0
  7. package/dist/core/auth/oauthState.d.ts.map +1 -0
  8. package/dist/core/auth/oauthState.js +46 -0
  9. package/dist/core/auth/oauthState.js.map +1 -0
  10. package/dist/core/auth/tokenStorage.d.ts +33 -0
  11. package/dist/core/auth/tokenStorage.d.ts.map +1 -0
  12. package/dist/core/auth/tokenStorage.js +108 -0
  13. package/dist/core/auth/tokenStorage.js.map +1 -0
  14. package/dist/core/network/httpClient.d.ts +2 -14
  15. package/dist/core/network/httpClient.d.ts.map +1 -1
  16. package/dist/core/network/httpClient.js +32 -88
  17. package/dist/core/network/httpClient.js.map +1 -1
  18. package/dist/core/types/privateParams.d.ts +1 -1
  19. package/dist/core/utils/cache.d.ts.map +1 -1
  20. package/dist/core/utils/cache.js +2 -2
  21. package/dist/core/utils/cache.js.map +1 -1
  22. package/dist/core/utils/env.d.ts +98 -0
  23. package/dist/core/utils/env.d.ts.map +1 -0
  24. package/dist/core/utils/env.js +227 -0
  25. package/dist/core/utils/env.js.map +1 -0
  26. package/dist/core/utils/logger.d.ts +10 -2
  27. package/dist/core/utils/logger.d.ts.map +1 -1
  28. package/dist/core/utils/logger.js +18 -14
  29. package/dist/core/utils/logger.js.map +1 -1
  30. package/dist/features/app/handlers.d.ts +12 -0
  31. package/dist/features/app/handlers.d.ts.map +1 -1
  32. package/dist/features/app/handlers.js +113 -9
  33. package/dist/features/app/handlers.js.map +1 -1
  34. package/dist/features/app/tools.d.ts.map +1 -1
  35. package/dist/features/app/tools.js +6 -9
  36. package/dist/features/app/tools.js.map +1 -1
  37. package/dist/features/h5Game/handlers.d.ts.map +1 -1
  38. package/dist/features/h5Game/handlers.js +2 -2
  39. package/dist/features/h5Game/handlers.js.map +1 -1
  40. package/dist/features/leaderboard/handlers.js +7 -7
  41. package/dist/features/leaderboard/handlers.js.map +1 -1
  42. package/dist/proxy.js +14 -9
  43. package/dist/server.js +77 -124
  44. package/dist/server.js.map +1 -1
  45. package/dist/version.d.ts +8 -1
  46. package/dist/version.d.ts.map +1 -1
  47. package/dist/version.js +25 -11
  48. package/dist/version.js.map +1 -1
  49. package/package.json +4 -4
  50. package/dist/core/auth/deviceFlow.d.ts +0 -68
  51. package/dist/core/auth/deviceFlow.d.ts.map +0 -1
  52. package/dist/core/auth/deviceFlow.js +0 -303
  53. package/dist/core/auth/deviceFlow.js.map +0 -1
  54. package/dist/core/handlers/environmentHandlers.d.ts +0 -10
  55. package/dist/core/handlers/environmentHandlers.d.ts.map +0 -1
  56. package/dist/core/handlers/environmentHandlers.js +0 -39
  57. package/dist/core/handlers/environmentHandlers.js.map +0 -1
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  > 基于 Model Context Protocol (MCP) 的 **TapTap 小游戏和 H5 游戏**服务器 - 提供排行榜文档和管理 API,支持 **OAuth 2.0 零配置认证**。
4
4
 
5
- 🔐 **零配置 OAuth** | 📚 **完整文档** | 🎯 **17 Tools + 7 Resources** | 🌍 **小游戏 & H5**
5
+ 🔐 **零配置 OAuth** | 📚 **完整文档** | 🎯 **19 Tools + 7 Resources** | 🌍 **小游戏 & H5**
6
6
 
7
7
  ## ✨ 核心特性
8
8
 
@@ -13,7 +13,7 @@
13
13
  - **🚀 三种传输模式** - stdio(本地)、SSE(远程/实时)、HTTP(兼容)
14
14
  - **🔌 多客户端并发** - 独立会话管理,无限并发
15
15
 
16
- **当前版本**: v1.4.13 | **NPM**: [@mikoto_zero/minigame-open-mcp](https://www.npmjs.com/package/@mikoto_zero/minigame-open-mcp)
16
+ **NPM**: [@mikoto_zero/minigame-open-mcp](https://www.npmjs.com/package/@mikoto_zero/minigame-open-mcp)
17
17
 
18
18
  ## 🚀 快速开始
19
19
 
@@ -59,7 +59,7 @@ npx @mikoto_zero/minigame-open-mcp
59
59
 
60
60
  ```bash
61
61
  # 启动 SSE 服务器
62
- TDS_MCP_TRANSPORT=sse TDS_MCP_PORT=3000 \
62
+ TAPTAP_MCP_TRANSPORT=sse TAPTAP_MCP_PORT=3000 \
63
63
  npx @mikoto_zero/minigame-open-mcp
64
64
  ```
65
65
 
@@ -76,7 +76,7 @@ npx @mikoto_zero/minigame-open-mcp
76
76
  }
77
77
  ```
78
78
 
79
- ✅ SSE 模式支持自动授权和实时进度推送!
79
+ ✅ SSE 模式支持实时进度推送!
80
80
 
81
81
  ### Docker 部署
82
82
 
@@ -88,40 +88,44 @@ docker-compose up -d
88
88
  curl http://localhost:5003/health
89
89
  ```
90
90
 
91
- 详见: [Docker 部署文档](docs/DOCKER_DEPLOYMENT.md)
91
+ 详见: [Docker 部署文档](docs/DEPLOYMENT.md#2-docker-部署)
92
92
 
93
93
  ## 📖 功能列表
94
94
 
95
- ### 17 个 Tools
95
+ ### 19 个 Tools
96
96
 
97
97
  #### 流程指引 (1)
98
- - `get_integration_guide` - 完整接入工作流指引
98
+ - `get_leaderboard_integration_guide` - 排行榜完整接入工作流指引
99
99
 
100
100
  #### 信息查询 (2)
101
101
  - `get_current_app_info` - 获取当前应用信息
102
102
  - `check_environment` - 检查环境配置
103
103
 
104
- #### 认证 (1)
104
+ #### 认证 (3)
105
+ - `start_oauth_authorization` - 开始 OAuth 授权(获取二维码)
105
106
  - `complete_oauth_authorization` - 完成 OAuth 授权
107
+ - `clear_auth_data` - 清除认证数据和缓存
106
108
 
107
- #### 应用管理 (2)
109
+ #### 应用管理 (3)
108
110
  - `list_developers_and_apps` - 列出所有应用
109
111
  - `select_app` - 选择当前应用
112
+ - `create_developer` - 创建新开发者
110
113
 
111
- #### 排行榜管理 (4)
114
+ #### 排行榜管理 (5)
112
115
  - `create_leaderboard` - 创建排行榜
113
116
  - `list_leaderboards` - 列出排行榜
114
117
  - `publish_leaderboard` - 发布排行榜
115
118
  - `get_user_leaderboard_scores` - 获取用户分数
119
+ - `get_app_status` - 获取应用审核状态
116
120
 
117
- #### H5 游戏管理 (7)
118
- - `list_h5_games` - 列出 H5 游戏
119
- - `create_h5_game` - 创建 H5 游戏
120
- - `update_h5_game` - 更新游戏信息
121
- - `upload_h5_game` - 上传游戏包
122
- - `publish_h5_game` - 发布游戏
123
- - `get_h5_game_status` - 查询发布状态
124
- - `get_h5_game_share_url` - 获取分享链接
121
+ #### H5 游戏管理 (4)
122
+ - `h5_game_info_gatherer` - 收集 H5 游戏信息(上传前)
123
+ - `h5_game_uploader` - 上传 H5 游戏包
124
+ - `h5_create_app` - 创建新 H5 游戏应用
125
+ - `h5_edit_app` - 编辑 H5 游戏信息
126
+
127
+ #### 振动 API 文档 (1)
128
+ - `get_vibrate_integration_guide` - 振动 API 完整文档和接入指引
125
129
 
126
130
  ### 7 个 Resources
127
131
 
@@ -195,17 +199,17 @@ npm test
195
199
  - 无需配置!自动保存 token 到 `~/.config/taptap-minigame/`
196
200
 
197
201
  **手动配置(可选)**:
198
- - `TDS_MCP_MAC_TOKEN` - MAC Token(JSON 格式)
199
- - `TDS_MCP_CLIENT_ID` - 客户端 ID(已内置)
200
- - `TDS_MCP_CLIENT_TOKEN` - 签名密钥(已内置)
202
+ - `TAPTAP_MCP_MAC_TOKEN` - MAC Token(JSON 格式)
203
+ - `TAPTAP_MCP_CLIENT_ID` - 客户端 ID(非必需,不配置会导致部分工具无法使用)
204
+ - `TAPTAP_MCP_CLIENT_SECRET` - 签名密钥(非必需,不配置会导致部分工具无法使用)
201
205
 
202
206
  **其他**:
203
- - `TDS_MCP_ENV` - 环境:`production`(默认)或 `rnd`
204
- - `TDS_MCP_TRANSPORT` - 传输模式:`stdio`(默认)、`sse`、`http`
205
- - `TDS_MCP_PORT` - 端口(默认 3000)
206
- - `TDS_MCP_VERBOSE` - 详细日志:`true` 或 `false`
207
- - `TDS_MCP_CACHE_DIR` - 缓存目录(默认 `/tmp/taptap-mcp/cache`)
208
- - `TDS_MCP_TEMP_DIR` - 临时文件目录(默认 `/tmp/taptap-mcp/temp`)
207
+ - `TAPTAP_MCP_ENV` - 环境:`production`(默认)或 `rnd`
208
+ - `TAPTAP_MCP_TRANSPORT` - 传输模式:`stdio`(默认)、`sse`、`http`
209
+ - `TAPTAP_MCP_PORT` - 端口(默认 3000)
210
+ - `TAPTAP_MCP_VERBOSE` - 详细日志:`true` 或 `false`
211
+ - `TAPTAP_MCP_CACHE_DIR` - 缓存目录(默认 `/tmp/taptap-mcp/cache`)
212
+ - `TAPTAP_MCP_TEMP_DIR` - 临时文件目录(默认 `/tmp/taptap-mcp/temp`)
209
213
 
210
214
  ### 添加新功能
211
215
 
@@ -219,11 +223,16 @@ npm test
219
223
 
220
224
  ## 📚 文档
221
225
 
222
- - **[CLAUDE.md](CLAUDE.md)** - AI Agent 开发指引
226
+ ### 用户文档
227
+ - **[CONTRIBUTING.md](CONTRIBUTING.md)** - 贡献指南
223
228
  - **[CHANGELOG.md](CHANGELOG.md)** - 版本变更历史
224
- - **[docs/DOCKER_DEPLOYMENT.md](docs/DOCKER_DEPLOYMENT.md)** - Docker 部署指南
225
- - **[docs/MCP_PROXY_GUIDE.md](docs/MCP_PROXY_GUIDE.md)** - MCP Proxy 开发指南
226
- - **[docs/PRIVATE_PROTOCOL.md](docs/PRIVATE_PROTOCOL.md)** - 私有参数协议
229
+
230
+ ### 技术文档
231
+ - **[docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)** - 架构文档
232
+ - **[docs/DEPLOYMENT.md](docs/DEPLOYMENT.md)** - 部署指南(本地、Docker、开发者测试)
233
+ - **[docs/PROXY.md](docs/PROXY.md)** - MCP Proxy 开发指南(面向 TapCode 等平台)
234
+ - **[docs/CI_CD.md](docs/CI_CD.md)** - CI/CD 和自动化发布流程
235
+ - **[docs/PATH_RESOLUTION.md](docs/PATH_RESOLUTION.md)** - 路径解析系统
227
236
 
228
237
  ## 🔄 CI/CD
229
238
 
@@ -249,7 +258,7 @@ gh pr create && gh pr merge
249
258
  4. 自动创建版本 PR 并合并
250
259
  5. 创建 GitHub Release
251
260
 
252
- 详见: [CLAUDE.md - CI/CD 章节](CLAUDE.md#cicd-和自动化发布)
261
+ 详见: [docs/CI_CD.md](docs/CI_CD.md)
253
262
 
254
263
  ## 🤝 贡献
255
264
 
@@ -0,0 +1,34 @@
1
+ /**
2
+ * OAuth 2.0 Device Code Flow 实现
3
+ * 职责:处理 OAuth 网络请求
4
+ */
5
+ import type { MacToken } from '../types/index.js';
6
+ /**
7
+ * Device Code Response
8
+ */
9
+ export interface DeviceCodeData {
10
+ device_code: string;
11
+ qrcode_url: string;
12
+ expires_in?: number;
13
+ interval?: number;
14
+ }
15
+ /**
16
+ * Poll options
17
+ */
18
+ export interface PollOptions {
19
+ maxAttempts?: number;
20
+ intervalMs?: number;
21
+ }
22
+ /**
23
+ * 请求 device code
24
+ */
25
+ export declare function requestDeviceCode(environment?: string): Promise<DeviceCodeData>;
26
+ /**
27
+ * 生成授权 URL
28
+ */
29
+ export declare function generateAuthUrl(qrcodeUrl: string, environment?: string): string;
30
+ /**
31
+ * 轮询获取 token
32
+ */
33
+ export declare function pollForToken(deviceCode: string, environment?: string, options?: PollOptions): Promise<MacToken>;
34
+ //# sourceMappingURL=oauth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../../src/core/auth/oauth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,WAAW,GAAE,MAAqB,GAAG,OAAO,CAAC,cAAc,CAAC,CA0CnG;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,GAAE,MAAqB,GAAG,MAAM,CAG7F;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,UAAU,EAAE,MAAM,EAClB,WAAW,GAAE,MAAqB,EAClC,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,QAAQ,CAAC,CA8EnB"}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * OAuth 2.0 Device Code Flow 实现
3
+ * 职责:处理 OAuth 网络请求
4
+ */
5
+ import { EnvConfig } from '../utils/env.js';
6
+ /**
7
+ * 请求 device code
8
+ */
9
+ export async function requestDeviceCode(environment = 'production') {
10
+ const endpoints = EnvConfig.getEndpoints(environment);
11
+ const clientId = EnvConfig.clientId;
12
+ if (!clientId) {
13
+ throw new Error('❌ 未配置 Client ID\n\n' +
14
+ '请设置环境变量:TAPTAP_MCP_CLIENT_ID\n\n' +
15
+ '获取方式:\n' +
16
+ '1. 登录 TapTap 开放平台: https://developer.taptap.cn\n' +
17
+ '2. 创建或选择应用\n' +
18
+ '3. 在「开发者中心 - 应用配置」中获取 Client ID');
19
+ }
20
+ const url = `https://${endpoints.authHost}/oauth2/v1/device/code`;
21
+ const params = new URLSearchParams({
22
+ client_id: clientId,
23
+ response_type: 'device_code',
24
+ scope: 'public_profile'
25
+ });
26
+ const response = await fetch(url, {
27
+ method: 'POST',
28
+ headers: {
29
+ 'Content-Type': 'application/x-www-form-urlencoded'
30
+ },
31
+ body: params
32
+ });
33
+ if (!response.ok) {
34
+ throw new Error(`Failed to get device code: ${response.status} ${response.statusText}`);
35
+ }
36
+ const json = await response.json();
37
+ if (json.success === true && json.data) {
38
+ return json.data;
39
+ }
40
+ throw new Error(`Failed to get device code: ${json.data?.msg || 'Unknown error'}`);
41
+ }
42
+ /**
43
+ * 生成授权 URL
44
+ */
45
+ export function generateAuthUrl(qrcodeUrl, environment = 'production') {
46
+ const endpoints = EnvConfig.getEndpoints(environment);
47
+ return endpoints.qrcodeBaseUrl + encodeURIComponent(qrcodeUrl);
48
+ }
49
+ /**
50
+ * 轮询获取 token
51
+ */
52
+ export async function pollForToken(deviceCode, environment = 'production', options) {
53
+ const endpoints = EnvConfig.getEndpoints(environment);
54
+ const clientId = EnvConfig.clientId;
55
+ if (!clientId) {
56
+ throw new Error('❌ 未配置 Client ID,请设置环境变量:TAPTAP_MCP_CLIENT_ID');
57
+ }
58
+ const url = `https://${endpoints.authHost}/oauth2/v1/token`;
59
+ const maxAttempts = options?.maxAttempts || 60;
60
+ const intervalMs = options?.intervalMs || 2000;
61
+ let attempts = 0;
62
+ while (attempts < maxAttempts) {
63
+ attempts++;
64
+ await new Promise(resolve => setTimeout(resolve, intervalMs));
65
+ const params = new URLSearchParams({
66
+ grant_type: 'device_token',
67
+ client_id: clientId,
68
+ secret_type: 'hmac-sha-1',
69
+ code: deviceCode
70
+ });
71
+ try {
72
+ const response = await fetch(url, {
73
+ method: 'POST',
74
+ headers: {
75
+ 'Content-Type': 'application/x-www-form-urlencoded'
76
+ },
77
+ body: params
78
+ });
79
+ const json = await response.json();
80
+ // 成功获取 token
81
+ if (json.success === true && json.data) {
82
+ return {
83
+ kid: json.data.kid,
84
+ mac_key: json.data.mac_key,
85
+ token_type: json.data.token_type || 'mac',
86
+ mac_algorithm: json.data.mac_algorithm || 'hmac-sha-1'
87
+ };
88
+ }
89
+ // 检查错误类型
90
+ const error = json.data?.error;
91
+ if (error === 'authorization_pending' || error === 'authorization_waiting') {
92
+ // 继续等待
93
+ if (attempts % 5 === 0) {
94
+ const elapsed = attempts * (intervalMs / 1000);
95
+ process.stderr.write(`⏳ 等待授权中... (${elapsed}秒)\n`);
96
+ }
97
+ continue;
98
+ }
99
+ // 其他错误
100
+ if (error === 'expired_token') {
101
+ throw new Error('❌ 授权码已过期,请重新获取授权链接');
102
+ }
103
+ if (error === 'access_denied') {
104
+ throw new Error('❌ 用户拒绝授权');
105
+ }
106
+ throw new Error(`❌ 授权失败: ${json.data?.error_description || error || 'Unknown error'}`);
107
+ }
108
+ catch (error) {
109
+ if (error instanceof Error && error.message.includes('❌')) {
110
+ throw error;
111
+ }
112
+ // 网络错误,继续轮询
113
+ continue;
114
+ }
115
+ }
116
+ throw new Error('⏰ 授权超时(2分钟),请重新获取授权链接');
117
+ }
118
+ //# sourceMappingURL=oauth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../../src/core/auth/oauth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * OAuth 全局状态管理
3
+ * 用于在 server.ts 和 handlers 之间共享 OAuth 状态
4
+ */
5
+ /**
6
+ * OAuth 待完成状态
7
+ */
8
+ interface PendingOAuthState {
9
+ deviceCode: string;
10
+ environment: string;
11
+ }
12
+ /**
13
+ * 全局 OAuth 状态
14
+ */
15
+ declare class OAuthStateManager {
16
+ private pendingState;
17
+ private authInProgress;
18
+ /**
19
+ * 设置待完成的 OAuth 状态
20
+ */
21
+ setPendingState(state: PendingOAuthState | null): void;
22
+ /**
23
+ * 获取待完成的 OAuth 状态
24
+ */
25
+ getPendingState(): PendingOAuthState | null;
26
+ /**
27
+ * 清除待完成的 OAuth 状态
28
+ */
29
+ clearPendingState(): void;
30
+ /**
31
+ * 设置授权进行中标志
32
+ */
33
+ setAuthInProgress(inProgress: boolean): void;
34
+ /**
35
+ * 检查是否有授权正在进行
36
+ */
37
+ isAuthInProgress(): boolean;
38
+ }
39
+ export declare const oauthState: OAuthStateManager;
40
+ export {};
41
+ //# sourceMappingURL=oauthState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauthState.d.ts","sourceRoot":"","sources":["../../../src/core/auth/oauthState.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,UAAU,iBAAiB;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,cAAM,iBAAiB;IACrB,OAAO,CAAC,YAAY,CAAkC;IACtD,OAAO,CAAC,cAAc,CAAkB;IAExC;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,GAAG,IAAI;IAItD;;OAEG;IACH,eAAe,IAAI,iBAAiB,GAAG,IAAI;IAI3C;;OAEG;IACH,iBAAiB,IAAI,IAAI;IAIzB;;OAEG;IACH,iBAAiB,CAAC,UAAU,EAAE,OAAO,GAAG,IAAI;IAI5C;;OAEG;IACH,gBAAgB,IAAI,OAAO;CAG5B;AAGD,eAAO,MAAM,UAAU,mBAA0B,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * OAuth 全局状态管理
3
+ * 用于在 server.ts 和 handlers 之间共享 OAuth 状态
4
+ */
5
+ /**
6
+ * 全局 OAuth 状态
7
+ */
8
+ class OAuthStateManager {
9
+ constructor() {
10
+ this.pendingState = null;
11
+ this.authInProgress = false;
12
+ }
13
+ /**
14
+ * 设置待完成的 OAuth 状态
15
+ */
16
+ setPendingState(state) {
17
+ this.pendingState = state;
18
+ }
19
+ /**
20
+ * 获取待完成的 OAuth 状态
21
+ */
22
+ getPendingState() {
23
+ return this.pendingState;
24
+ }
25
+ /**
26
+ * 清除待完成的 OAuth 状态
27
+ */
28
+ clearPendingState() {
29
+ this.pendingState = null;
30
+ }
31
+ /**
32
+ * 设置授权进行中标志
33
+ */
34
+ setAuthInProgress(inProgress) {
35
+ this.authInProgress = inProgress;
36
+ }
37
+ /**
38
+ * 检查是否有授权正在进行
39
+ */
40
+ isAuthInProgress() {
41
+ return this.authInProgress;
42
+ }
43
+ }
44
+ // 导出单例
45
+ export const oauthState = new OAuthStateManager();
46
+ //# sourceMappingURL=oauthState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauthState.js","sourceRoot":"","sources":["../../../src/core/auth/oauthState.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH;;GAEG;AACH,MAAM,iBAAiB;IAAvB;QACU,iBAAY,GAA6B,IAAI,CAAC;QAC9C,mBAAc,GAAY,KAAK,CAAC;IAoC1C,CAAC;IAlCC;;OAEG;IACH,eAAe,CAAC,KAA+B;QAC7C,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,iBAAiB;QACf,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,UAAmB;QACnC,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;CACF;AAED,OAAO;AACP,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,iBAAiB,EAAE,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Token 持久化管理
3
+ * 职责:Token 的读取、保存、清除
4
+ */
5
+ import type { MacToken } from '../types/index.js';
6
+ export interface TokenStorageOptions {
7
+ environment?: string;
8
+ }
9
+ /**
10
+ * 获取 token 文件路径
11
+ */
12
+ export declare function getTokenPath(): string;
13
+ /**
14
+ * 从环境变量加载 token(优先级最高)
15
+ */
16
+ export declare function loadTokenFromEnv(): MacToken | null;
17
+ /**
18
+ * 从本地文件加载 token
19
+ */
20
+ export declare function loadTokenFromFile(filePath?: string): MacToken | null;
21
+ /**
22
+ * 加载 token(优先级:环境变量 > 本地文件)
23
+ */
24
+ export declare function loadToken(filePath?: string): MacToken | null;
25
+ /**
26
+ * 保存 token 到本地文件
27
+ */
28
+ export declare function saveToken(token: MacToken, options?: TokenStorageOptions): void;
29
+ /**
30
+ * 清除本地 token 文件
31
+ */
32
+ export declare function clearToken(filePath?: string): void;
33
+ //# sourceMappingURL=tokenStorage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenStorage.d.ts","sourceRoot":"","sources":["../../../src/core/auth/tokenStorage.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAGrC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,QAAQ,GAAG,IAAI,CAalD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAgBpE;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAiB5D;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAoB9E;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAWlD"}
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Token 持久化管理
3
+ * 职责:Token 的读取、保存、清除
4
+ */
5
+ import * as path from 'node:path';
6
+ import * as fs from 'node:fs';
7
+ import { EnvConfig } from '../utils/env.js';
8
+ /**
9
+ * 获取 token 文件路径
10
+ */
11
+ export function getTokenPath() {
12
+ const cacheDir = EnvConfig.cacheDir;
13
+ return path.join(cacheDir, 'global', 'oauth-token.json');
14
+ }
15
+ /**
16
+ * 从环境变量加载 token(优先级最高)
17
+ */
18
+ export function loadTokenFromEnv() {
19
+ const envToken = EnvConfig.macToken;
20
+ if (envToken) {
21
+ try {
22
+ const token = JSON.parse(envToken);
23
+ if (token.kid && token.mac_key) {
24
+ return token;
25
+ }
26
+ }
27
+ catch (error) {
28
+ process.stderr.write('⚠️ Invalid TAPTAP_MCP_MAC_TOKEN format in environment\n');
29
+ }
30
+ }
31
+ return null;
32
+ }
33
+ /**
34
+ * 从本地文件加载 token
35
+ */
36
+ export function loadTokenFromFile(filePath) {
37
+ const tokenPath = filePath || getTokenPath();
38
+ if (fs.existsSync(tokenPath)) {
39
+ try {
40
+ const content = fs.readFileSync(tokenPath, 'utf8');
41
+ const token = JSON.parse(content);
42
+ if (token.kid && token.mac_key) {
43
+ return token;
44
+ }
45
+ }
46
+ catch (error) {
47
+ process.stderr.write(`⚠️ Invalid token file: ${tokenPath}\n`);
48
+ }
49
+ }
50
+ return null;
51
+ }
52
+ /**
53
+ * 加载 token(优先级:环境变量 > 本地文件)
54
+ */
55
+ export function loadToken(filePath) {
56
+ // 1. Try environment variable
57
+ const envToken = loadTokenFromEnv();
58
+ if (envToken) {
59
+ process.stderr.write('✅ Loaded MAC Token from environment variable\n');
60
+ return envToken;
61
+ }
62
+ // 2. Try local file
63
+ const fileToken = loadTokenFromFile(filePath);
64
+ if (fileToken) {
65
+ const tokenPath = filePath || getTokenPath();
66
+ process.stderr.write(`✅ Loaded MAC Token from: ${tokenPath}\n`);
67
+ return fileToken;
68
+ }
69
+ return null;
70
+ }
71
+ /**
72
+ * 保存 token 到本地文件
73
+ */
74
+ export function saveToken(token, options) {
75
+ const tokenPath = getTokenPath();
76
+ try {
77
+ const dir = path.dirname(tokenPath);
78
+ if (!fs.existsSync(dir)) {
79
+ fs.mkdirSync(dir, { recursive: true });
80
+ }
81
+ const tokenData = {
82
+ ...token,
83
+ saved_at: new Date().toISOString(),
84
+ environment: options?.environment
85
+ };
86
+ fs.writeFileSync(tokenPath, JSON.stringify(tokenData, null, 2), 'utf8');
87
+ process.stderr.write(`✅ Token saved to: ${tokenPath}\n`);
88
+ }
89
+ catch (error) {
90
+ process.stderr.write(`⚠️ Failed to save token: ${error instanceof Error ? error.message : String(error)}\n`);
91
+ }
92
+ }
93
+ /**
94
+ * 清除本地 token 文件
95
+ */
96
+ export function clearToken(filePath) {
97
+ const tokenPath = filePath || getTokenPath();
98
+ if (fs.existsSync(tokenPath)) {
99
+ try {
100
+ fs.unlinkSync(tokenPath);
101
+ process.stderr.write(`✅ Token cleared: ${tokenPath}\n`);
102
+ }
103
+ catch (error) {
104
+ process.stderr.write(`⚠️ Failed to clear token: ${error instanceof Error ? error.message : String(error)}\n`);
105
+ }
106
+ }
107
+ }
108
+ //# sourceMappingURL=tokenStorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenStorage.js","sourceRoot":"","sources":["../../../src/core/auth/tokenStorage.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,8 @@
4
4
  */
5
5
  import { MacToken } from '../types/index.js';
6
6
  /**
7
- * Environment configuration
7
+ * API 配置管理
8
+ * 管理 API 请求相关的配置和认证信息
8
9
  */
9
10
  export declare class ApiConfig {
10
11
  private static instance;
@@ -21,11 +22,6 @@ export declare class ApiConfig {
21
22
  */
22
23
  setMacToken(token: MacToken): void;
23
24
  isConfigured(): boolean;
24
- getConfigStatus(): Record<string, string>;
25
- /**
26
- * Get current environment
27
- */
28
- getEnvironment(): 'rnd' | 'production';
29
25
  }
30
26
  /**
31
27
  * HTTP request options
@@ -90,13 +86,5 @@ export declare class HttpClient {
90
86
  * Generate random string
91
87
  */
92
88
  private generateRandomString;
93
- /**
94
- * Get current environment
95
- */
96
- getEnvironment(): string;
97
- /**
98
- * Get API base URL
99
- */
100
- getBaseUrl(): string;
101
89
  }
102
90
  //# sourceMappingURL=httpClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"httpClient.d.ts","sourceRoot":"","sources":["../../../src/core/network/httpClient.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG7C;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAY;IAE5B,QAAQ,EAAE,QAAQ,CAAC;IAC1B,SAAgB,QAAQ,EAAE,MAAM,CAAC;IACjC,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,SAAgB,WAAW,EAAE,KAAK,GAAG,YAAY,CAAC;IAElD,OAAO;IAiCP,OAAO,CAAC,cAAc;WAiBR,WAAW,IAAI,SAAS;IAOtC;;OAEG;IACI,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAUlC,YAAY,IAAI,OAAO;IAIvB,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAShD;;OAEG;IACI,cAAc,IAAI,KAAK,GAAG,YAAY;CAG9C;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,OAAO;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,gBAAgB,CAAC,CAAW;IAEpC;;OAEG;gBACS,OAAO,CAAC,EAAE,OAAO,mBAAmB,EAAE,cAAc;IAKhE;;OAEG;IACG,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,CAAC,CAAC;IAI9E;;OAEG;IACG,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,CAAC,CAAC;IAI/E;;OAEG;YACW,OAAO;IA4MrB;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAgDhC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAoB7B;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IA4CzB;;;OAGG;IACH,OAAO,CAAC,cAAc;IAuBtB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAS5B;;OAEG;IACH,cAAc,IAAI,MAAM;IAIxB;;OAEG;IACH,UAAU,IAAI,MAAM;CAGrB"}
1
+ {"version":3,"file":"httpClient.d.ts","sourceRoot":"","sources":["../../../src/core/network/httpClient.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAI7C;;;GAGG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAY;IAE5B,QAAQ,EAAE,QAAQ,CAAC;IAC1B,SAAgB,QAAQ,EAAE,MAAM,CAAC;IACjC,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,SAAgB,WAAW,EAAE,KAAK,GAAG,YAAY,CAAC;IAElD,OAAO;IA0BP,OAAO,CAAC,cAAc;WAqBR,WAAW,IAAI,SAAS;IAOtC;;OAEG;IACI,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAIlC,YAAY,IAAI,OAAO;CAG/B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,OAAO;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,gBAAgB,CAAC,CAAW;IAEpC;;OAEG;gBACS,OAAO,CAAC,EAAE,OAAO,mBAAmB,EAAE,cAAc;IAQhE;;OAEG;IACG,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,CAAC,CAAC;IAI9E;;OAEG;IACG,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,CAAC,CAAC;IAI/E;;OAEG;YACW,OAAO;IAqMrB;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAoChC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAoB7B;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAiCzB;;;OAGG;IACH,OAAO,CAAC,cAAc;IAuBtB;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAQ7B"}