@nbtca/prompt 1.0.3 → 1.0.5

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,53 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## [1.0.5] - 2025-12-10
4
+
5
+ ### Fixed
6
+ - **Knowledge Base 403 Error**: Resolved GitHub API rate limiting issue that caused 403 errors when browsing documentation
7
+ - Added GitHub token authentication support via `GITHUB_TOKEN` or `GH_TOKEN` environment variables
8
+ - Improved error messages with rate limit information and reset time
9
+ - Increased rate limit from 60 to 5000 requests per hour when using a token
10
+
11
+ ### Added
12
+ - **Pager-Style Document Viewer**: Documents now open in a pager (similar to vim/journalctl/less)
13
+ - Natural scrolling navigation with arrow keys, Space, j/k (vim-style), and q to quit
14
+ - Content doesn't flood the terminal anymore
15
+ - Better reading experience for long documents
16
+ - Automatic fallback to direct output if pager is unavailable
17
+ - **Re-read Document Option**: Added ability to re-read a document after viewing without going back to the list
18
+ - **Environment Variable Support**:
19
+ - `GITHUB_TOKEN` or `GH_TOKEN` for GitHub API authentication
20
+ - `PAGER` for custom pager selection (defaults to `less`)
21
+
22
+ ### Improved
23
+ - Enhanced error handling with detailed rate limit diagnostics
24
+ - Better user feedback when rate limits are reached
25
+ - Clearer instructions for resolving authentication issues
26
+
27
+ ### Technical Details
28
+ - Added `displayInPager()` function for spawning system pager processes
29
+ - Enhanced `fetchGitHubDirectory()` with conditional token authentication
30
+ - Updated documentation viewer workflow for better UX
31
+
32
+ ## [1.0.4] - 2025-12-10
33
+
34
+ ### Enhanced
35
+ - **Smooth Slogan Animation**: Implemented true color interpolation for buttery smooth gradient animation
36
+ - Increased frame rate from 24 to 60 FPS for ultra-smooth motion
37
+ - Changed easing from cubic to sine wave for more natural transitions
38
+ - Dynamically generate gradients per frame instead of using pre-defined set
39
+ - Eliminates staggered/jumping effect in the slogan text animation
40
+
41
+ ### Technical Details
42
+ - Added `hexToRgb()`, `rgbToHex()`, and `interpolateColor()` functions for mathematical color blending
43
+ - Implemented `easeInOutSine()` easing function for smooth acceleration/deceleration
44
+ - Each frame now uses unique, mathematically interpolated colors
45
+
46
+ ## [1.0.3] - 2025-11-27
47
+
48
+ ### Changed
49
+ - Version alignment and bug fixes
50
+
3
51
  ## [1.0.2] - 2025-11-27
4
52
 
5
53
  ### Added
package/README.md CHANGED
@@ -13,9 +13,10 @@ NBTCA Prompt is a minimalist command-line interface tool designed for the Comput
13
13
 
14
14
  - View upcoming association events (30-day calendar)
15
15
  - Access repair service information
16
- - Browse technical documentation from terminal
16
+ - Browse technical documentation from terminal with pager support (vim/journalctl style)
17
17
  - Quick links to official website and GitHub
18
18
  - Minimalist design with maximum terminal compatibility
19
+ - Smooth gradient animations for enhanced visual experience
19
20
 
20
21
  ## Installation
21
22
 
@@ -131,11 +132,25 @@ src/
131
132
 
132
133
  The knowledge base viewer features:
133
134
 
134
- - Direct GitHub repository access
135
+ - Direct GitHub repository access with authentication support
136
+ - Pager-style document reading (similar to vim/journalctl/less)
135
137
  - VitePress syntax cleaning
136
- - Terminal Markdown rendering
138
+ - Terminal Markdown rendering with color support
137
139
  - Browser fallback option
138
140
  - Directory tree navigation
141
+ - Improved error handling with rate limit detection
142
+
143
+ ### GitHub Token Configuration (Optional)
144
+
145
+ To avoid GitHub API rate limits when browsing documentation, you can set a GitHub token:
146
+
147
+ ```bash
148
+ export GITHUB_TOKEN="your_github_token_here"
149
+ # or
150
+ export GH_TOKEN="your_github_token_here"
151
+ ```
152
+
153
+ Without a token, you have 60 requests per hour. With a token, you get 5000 requests per hour.
139
154
 
140
155
  ### Supported Formats
141
156
 
@@ -163,6 +178,10 @@ ASCII-based UI elements ensure rendering on any terminal emulator.
163
178
 
164
179
  ## Common Issues
165
180
 
181
+ ### Q: Getting 403 error when browsing documentation?
182
+
183
+ A: This is due to GitHub API rate limiting. Set a `GITHUB_TOKEN` environment variable to increase your rate limit from 60 to 5000 requests per hour. See the [GitHub Token Configuration](#github-token-configuration-optional) section above.
184
+
166
185
  ### Q: Auto-restart when using `pnpm run dev:watch`?
167
186
 
168
187
  A: This is expected behavior. Use `pnpm run dev` for interactive testing.
@@ -171,6 +190,10 @@ A: This is expected behavior. Use `pnpm run dev` for interactive testing.
171
190
 
172
191
  A: Select the Exit option from menu, or press Ctrl+C.
173
192
 
193
+ ### Q: How to navigate documents in the pager?
194
+
195
+ A: Use arrow keys, Space (page down), 'j/k' (vim-style), or 'q' to quit the pager.
196
+
174
197
  ### Q: Changes not reflected?
175
198
 
176
199
  A: If using `pnpm start`, rebuild with `pnpm run build` first.
@@ -206,6 +229,25 @@ MIT License - See LICENSE file for details
206
229
 
207
230
  ## Changelog
208
231
 
232
+ ### v1.0.5 (2025-12-10)
233
+
234
+ - **Fixed**: Knowledge Base 403 error due to GitHub API rate limiting
235
+ - **Added**: GitHub token authentication support (GITHUB_TOKEN/GH_TOKEN)
236
+ - **Added**: Pager-style document viewer (vim/journalctl/less style)
237
+ - **Added**: "Re-read document" option after viewing
238
+ - **Improved**: Better error messages with rate limit information
239
+ - **Improved**: Document reading experience with scroll navigation
240
+
241
+ ### v1.0.4 (2025-12-10)
242
+
243
+ - **Enhanced**: Smooth slogan animation with true color interpolation
244
+ - **Improved**: 60 FPS animation with sine easing for natural transitions
245
+ - **Technical**: Added hexToRgb, rgbToHex, and interpolateColor functions
246
+
247
+ ### v1.0.3 (2025-11-27)
248
+
249
+ - Version alignment and bug fixes
250
+
209
251
  ### v1.0.1 (2025-11-27)
210
252
 
211
253
  - Added terminal documentation viewer
@@ -1 +1 @@
1
- {"version":3,"file":"logo.d.ts","sourceRoot":"","sources":["../../src/core/logo.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAwDH;;GAEG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAmC/C"}
1
+ {"version":3,"file":"logo.d.ts","sourceRoot":"","sources":["../../src/core/logo.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAoIH;;GAEG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAmC/C"}
package/dist/core/logo.js CHANGED
@@ -21,25 +21,78 @@ function createBlueGradient(text) {
21
21
  return blueGradient(text);
22
22
  }
23
23
  /**
24
- * 显示渐变动画效果(优化版 - 更丝滑的动画)
24
+ * 将十六进制颜色转换为RGB
25
+ */
26
+ function hexToRgb(hex) {
27
+ const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
28
+ return result
29
+ ? [parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)]
30
+ : [0, 0, 0];
31
+ }
32
+ /**
33
+ * 将RGB转换为十六进制颜色
34
+ */
35
+ function rgbToHex(r, g, b) {
36
+ return '#' + [r, g, b].map(x => {
37
+ const hex = Math.round(x).toString(16);
38
+ return hex.length === 1 ? '0' + hex : hex;
39
+ }).join('');
40
+ }
41
+ /**
42
+ * 在两个颜色之间进行线性插值
43
+ */
44
+ function interpolateColor(color1, color2, factor) {
45
+ const [r1, g1, b1] = hexToRgb(color1);
46
+ const [r2, g2, b2] = hexToRgb(color2);
47
+ const r = r1 + (r2 - r1) * factor;
48
+ const g = g1 + (g2 - g1) * factor;
49
+ const b = b1 + (b2 - b1) * factor;
50
+ return rgbToHex(r, g, b);
51
+ }
52
+ /**
53
+ * 缓动函数 - 平滑的进出效果
54
+ */
55
+ function easeInOutSine(t) {
56
+ return -(Math.cos(Math.PI * t) - 1) / 2;
57
+ }
58
+ /**
59
+ * 显示渐变动画效果(优化版 - 真正丝滑的动画)
25
60
  */
26
61
  async function animateGradient(text, duration = 1200) {
27
- const frames = 24; // 增加帧数使动画更流畅
62
+ const frames = 60; // 60帧实现真正的流畅动画
28
63
  const frameDelay = duration / frames;
29
- // 预创建所有渐变对象
30
- const gradients = [
31
- gradient('#1e3a8a', '#2563eb', '#3b82f6'),
32
- gradient('#2563eb', '#3b82f6', '#0ea5e9'),
33
- gradient('#3b82f6', '#0ea5e9', '#06b6d4'),
34
- gradient('#0ea5e9', '#06b6d4', '#14b8a6'),
35
- gradient('#06b6d4', '#14b8a6', '#0ea5e9'),
36
- gradient('#14b8a6', '#0ea5e9', '#3b82f6'),
37
- gradient('#0ea5e9', '#3b82f6', '#2563eb'),
38
- gradient('#3b82f6', '#2563eb', '#1e3a8a'),
64
+ // 定义颜色序列 - 形成完整的蓝色系循环
65
+ const colorSequence = [
66
+ '#1e3a8a', // 深蓝
67
+ '#2563eb', //
68
+ '#3b82f6', // 亮蓝
69
+ '#0ea5e9', // 天蓝
70
+ '#06b6d4', // 青色
71
+ '#14b8a6', // 青绿
72
+ '#06b6d4', // 青色
73
+ '#0ea5e9', // 天蓝
74
+ '#3b82f6', // 亮蓝
75
+ '#2563eb', // 蓝
76
+ '#1e3a8a', // 深蓝
39
77
  ];
40
78
  for (let i = 0; i < frames; i++) {
41
- const gradientIndex = Math.floor((i / frames) * gradients.length);
42
- const frameGradient = gradients[gradientIndex];
79
+ // 使用平滑的正弦缓动
80
+ const progress = easeInOutSine(i / frames);
81
+ // 计算在颜色序列中的位置
82
+ const position = progress * (colorSequence.length - 1);
83
+ const index1 = Math.floor(position);
84
+ const index2 = Math.min(index1 + 1, colorSequence.length - 1);
85
+ const localProgress = position - index1;
86
+ // 在相邻颜色间插值,生成三个平滑过渡的颜色
87
+ const color1 = interpolateColor(colorSequence[index1], colorSequence[index2], localProgress);
88
+ const nextIndex1 = Math.min(index2, colorSequence.length - 1);
89
+ const nextIndex2 = Math.min(nextIndex1 + 1, colorSequence.length - 1);
90
+ const color2 = interpolateColor(colorSequence[nextIndex1], colorSequence[nextIndex2], localProgress);
91
+ const nextIndex3 = Math.min(nextIndex2, colorSequence.length - 1);
92
+ const nextIndex4 = Math.min(nextIndex3 + 1, colorSequence.length - 1);
93
+ const color3 = interpolateColor(colorSequence[nextIndex3], colorSequence[nextIndex4], localProgress);
94
+ // 为当前帧创建渐变
95
+ const frameGradient = gradient(color1, color2, color3);
43
96
  // 清除当前行并显示新帧
44
97
  process.stdout.write('\r' + frameGradient(text));
45
98
  await new Promise(resolve => setTimeout(resolve, frameDelay));
@@ -1 +1 @@
1
- {"version":3,"file":"logo.js","sourceRoot":"","sources":["../../src/core/logo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logo.js","sourceRoot":"","sources":["../../src/core/logo.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../src/features/docs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAiTH;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAapE;AAED;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAsClD"}
1
+ {"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../src/features/docs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAkXH;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAapE;AAED;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAsClD"}
@@ -9,6 +9,7 @@ import chalk from 'chalk';
9
9
  import open from 'open';
10
10
  import inquirer from 'inquirer';
11
11
  import { error, info, success, warning } from '../core/ui.js';
12
+ import { spawn } from 'child_process';
12
13
  // 配置marked使用终端渲染器
13
14
  marked.setOptions({
14
15
  // @ts-ignore - markedTerminal类型定义问题
@@ -22,6 +23,11 @@ const GITHUB_REPO = {
22
23
  repo: 'documents',
23
24
  branch: 'main'
24
25
  };
26
+ /**
27
+ * GitHub Token (可选 - 用于避免 API 速率限制)
28
+ * 从环境变量读取,如果没有则使用未认证请求
29
+ */
30
+ const GITHUB_TOKEN = process.env['GITHUB_TOKEN'] || process.env['GH_TOKEN'];
25
31
  /**
26
32
  * 预定义的文档分类
27
33
  */
@@ -40,12 +46,17 @@ const DOC_CATEGORIES = [
40
46
  async function fetchGitHubDirectory(path = '') {
41
47
  const url = `https://api.github.com/repos/${GITHUB_REPO.owner}/${GITHUB_REPO.repo}/contents/${path}?ref=${GITHUB_REPO.branch}`;
42
48
  try {
49
+ const headers = {
50
+ 'Accept': 'application/vnd.github.v3+json',
51
+ 'User-Agent': 'NBTCA-CLI'
52
+ };
53
+ // 如果有 GitHub Token,添加认证头以避免速率限制
54
+ if (GITHUB_TOKEN) {
55
+ headers['Authorization'] = `Bearer ${GITHUB_TOKEN}`;
56
+ }
43
57
  const response = await axios.get(url, {
44
58
  timeout: 10000,
45
- headers: {
46
- 'Accept': 'application/vnd.github.v3+json',
47
- 'User-Agent': 'NBTCA-CLI'
48
- }
59
+ headers
49
60
  });
50
61
  return response.data
51
62
  .filter((item) => {
@@ -79,6 +90,16 @@ async function fetchGitHubDirectory(path = '') {
79
90
  });
80
91
  }
81
92
  catch (err) {
93
+ // 提供更详细的错误信息
94
+ if (err.response?.status === 403) {
95
+ const rateLimitRemaining = err.response.headers['x-ratelimit-remaining'];
96
+ const rateLimitReset = err.response.headers['x-ratelimit-reset'];
97
+ if (rateLimitRemaining === '0') {
98
+ const resetDate = new Date(parseInt(rateLimitReset) * 1000);
99
+ throw new Error(`GitHub API 速率限制已达上限,将在 ${resetDate.toLocaleTimeString()} 重置。\n提示: 设置 GITHUB_TOKEN 环境变量可获得更高的速率限制。`);
100
+ }
101
+ throw new Error(`GitHub API 拒绝访问 (403)。\n提示: 尝试设置 GITHUB_TOKEN 环境变量。`);
102
+ }
82
103
  throw new Error(`无法获取目录内容: ${err.message}`);
83
104
  }
84
105
  }
@@ -202,6 +223,43 @@ async function browseDirectory(dirPath = '') {
202
223
  }
203
224
  }
204
225
  }
226
+ /**
227
+ * 使用系统pager (less/more) 显示内容
228
+ * 提供类似vim/journalctl的阅读体验
229
+ */
230
+ async function displayInPager(content, title) {
231
+ return new Promise((resolve) => {
232
+ // 检测可用的pager程序
233
+ const pager = process.env['PAGER'] || 'less';
234
+ // 为内容添加标题
235
+ const fullContent = `${chalk.cyan.bold(`>> ${title}`)}\n${chalk.gray('='.repeat(80))}\n\n${content}\n\n${chalk.gray('='.repeat(80))}\n${chalk.dim('End of document - Press q to quit')}\n`;
236
+ // less的参数: -R (支持颜色), -F (如果内容少于一屏则直接显示), -X (退出时不清屏)
237
+ const lessArgs = ['-R', '-F', '-X'];
238
+ try {
239
+ const child = spawn(pager, lessArgs, {
240
+ stdio: ['pipe', 'inherit', 'inherit'],
241
+ shell: true
242
+ });
243
+ // 将内容写入pager的stdin
244
+ child.stdin.write(fullContent);
245
+ child.stdin.end();
246
+ child.on('exit', (code) => {
247
+ resolve(code === 0);
248
+ });
249
+ child.on('error', () => {
250
+ // 如果pager失败,回退到直接输出
251
+ console.error(chalk.yellow('⚠ Pager不可用,使用标准输出'));
252
+ console.log(fullContent);
253
+ resolve(false);
254
+ });
255
+ }
256
+ catch {
257
+ // 回退方案: 直接输出
258
+ console.log(fullContent);
259
+ resolve(false);
260
+ }
261
+ });
262
+ }
205
263
  /**
206
264
  * 查看Markdown文件
207
265
  */
@@ -214,21 +272,12 @@ async function viewMarkdownFile(path) {
214
272
  const cleanedContent = cleanMarkdownContent(rawContent);
215
273
  // 提取标题
216
274
  const title = extractDocTitle(cleanedContent) || path.split('/').pop() || path;
217
- console.clear();
218
- console.log();
219
- console.log(chalk.cyan.bold(`>> ${title}`));
220
- console.log(chalk.gray(` ${path}`));
221
- console.log();
222
- console.log(chalk.gray('='.repeat(80)));
223
- console.log();
224
275
  // 渲染Markdown到终端
225
- const rendered = marked(cleanedContent);
226
- console.log(rendered);
227
- console.log();
228
- console.log(chalk.gray('='.repeat(80)));
229
- console.log();
230
- console.log(chalk.dim(' Note: Some features are only available in browser'));
231
- console.log();
276
+ const rendered = await marked(cleanedContent);
277
+ console.log('\r' + ' '.repeat(60) + '\r'); // 清除加载提示
278
+ // 使用pager显示文档 (类似vim/journalctl的阅读体验)
279
+ await displayInPager(rendered, `${title}\n${chalk.gray(` ${path}`)}`);
280
+ console.log(); // 添加空行
232
281
  success('文档加载完成');
233
282
  console.log();
234
283
  // 提供后续操作选项
@@ -239,6 +288,7 @@ async function viewMarkdownFile(path) {
239
288
  message: '选择操作:',
240
289
  choices: [
241
290
  { name: '[ <] Back to docs list', value: 'back' },
291
+ { name: '[ ↻] Re-read document', value: 'reread' },
242
292
  { name: '[ *] Open in browser', value: 'browser' }
243
293
  ]
244
294
  }
@@ -246,6 +296,10 @@ async function viewMarkdownFile(path) {
246
296
  if (action === 'browser') {
247
297
  await openDocsInBrowser(path);
248
298
  }
299
+ else if (action === 'reread') {
300
+ // 重新阅读文档
301
+ await viewMarkdownFile(path);
302
+ }
249
303
  }
250
304
  catch (err) {
251
305
  console.log('\r' + ' '.repeat(60) + '\r');
@@ -1 +1 @@
1
- {"version":3,"file":"docs.js","sourceRoot":"","sources":["../../src/features/docs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,gBAAgB,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE9D,kBAAkB;AAClB,MAAM,CAAC,UAAU,CAAC;IAChB,oCAAoC;IACpC,QAAQ,EAAE,IAAI,gBAAgB,EAAE;CACjC,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,WAAW,GAAG;IAClB,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,WAAW;IACjB,MAAM,EAAE,MAAM;CACf,CAAC;AAYF;;GAEG;AACH,MAAM,cAAc,GAAG;IACrB,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,UAAU,EAAE;IAC9C,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,KAAK,EAAE;IAC1C,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,QAAQ,EAAE;IAChD,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,SAAS,EAAE;IAC/C,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC9C,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,UAAU,EAAE;IAChD,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,WAAW,EAAE;CAClD,CAAC;AAEF;;GAEG;AACH,KAAK,UAAU,oBAAoB,CAAC,OAAe,EAAE;IACnD,MAAM,GAAG,GAAG,gCAAgC,WAAW,CAAC,KAAK,IAAI,WAAW,CAAC,IAAI,aAAa,IAAI,QAAQ,WAAW,CAAC,MAAM,EAAE,CAAC;IAE/H,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YACpC,OAAO,EAAE,KAAK;YACd,OAAO,EAAE;gBACP,QAAQ,EAAE,gCAAgC;gBAC1C,YAAY,EAAE,WAAW;aAC1B;SACF,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC,IAAI;aACjB,MAAM,CAAC,CAAC,IAAS,EAAE,EAAE;YACpB,6BAA6B;YAC7B,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC5C,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc;gBAAE,OAAO,KAAK,CAAC;YAC/C,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc;gBAAE,OAAO,KAAK,CAAC;YAC/C,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB;gBAAE,OAAO,KAAK,CAAC;YAEjD,qBAAqB;YACrB,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC;YAErE,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;aACD,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,CAAC;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM;YAC1C,GAAG,EAAE,IAAI,CAAC,GAAG;SACd,CAAC,CAAC;aACF,IAAI,CAAC,CAAC,CAAU,EAAE,CAAU,EAAE,EAAE;YAC/B,SAAS;YACT,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;gBAAE,OAAO,CAAC,CAAC,CAAC;YACrD,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK;gBAAE,OAAO,CAAC,CAAC;YACpD,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACP,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,aAAa,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,qBAAqB,CAAC,IAAY;IAC/C,MAAM,GAAG,GAAG,qCAAqC,WAAW,CAAC,KAAK,IAAI,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;IAEvH,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YACpC,OAAO,EAAE,KAAK;YACd,OAAO,EAAE;gBACP,YAAY,EAAE,WAAW;aAC1B;SACF,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,aAAa,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,oBAAoB,CAAC,OAAe;IAC3C,IAAI,OAAO,GAAG,OAAO,CAAC;IAEtB,sCAAsC;IACtC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC;IAExD,0DAA0D;IAC1D,eAAe;IACf,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,4CAA4C,EAAE,EAAE,CAAC,CAAC;IAC5E,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAEzC,+BAA+B;IAC/B,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,8BAA8B,CAAC,CAAC;IAE3E,4BAA4B;IAC5B,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAE7C,gBAAgB;IAChB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;IAElD,gBAAgB;IAChB,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAEzB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,OAAe;IACtC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAC3C,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,eAAe,CAAC,UAAkB,EAAE;IACjD,IAAI,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,OAAO,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;QAErD,MAAM,KAAK,GAAG,MAAM,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAElD,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS;QAEpD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,OAAO,CAAC,CAAC;YACjB,OAAO;QACT,CAAC;QAED,SAAS;QACT,MAAM,OAAO,GAAG;YACd,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;gBACZ,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;gBAC5E,IAAI,QAAQ,CAAC,SAAS,EAAE;aACzB,CAAC,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACpB,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,KAAK;oBACvB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,GAAG,CAAC;oBACnC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,IAAI,EAAE,CAAC;gBACrC,KAAK,EAAE,IAAI;aACZ,CAAC,CAAC;YACH,IAAI,QAAQ,CAAC,SAAS,EAAE;YACxB,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;SAC1E,CAAC;QAEF,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YACzC;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,CAAC,CAAC,UAAU;gBAClD,OAAO;gBACP,QAAQ,EAAE,EAAE;gBACZ,IAAI,EAAE,KAAK;aACZ;SACF,CAAC,CAAC;QAEH,SAAS;QACT,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC7B,OAAO;QACT,CAAC;aAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACpC,SAAS;YACT,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC7D,MAAM,eAAe,CAAC,UAAU,CAAC,CAAC;QACpC,CAAC;aAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YACnC,QAAQ;YACR,MAAM,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC;aAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACpC,OAAO;YACP,MAAM,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACtC,eAAe;YACf,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;IAEH,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAEhD,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YACtC;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,OAAO;gBAChB,OAAO,EAAE,IAAI;aACd;SACF,CAAC,CAAC;QAEH,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,gBAAgB,CAAC,IAAY;IAC1C,IAAI,CAAC;QACH,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;QAEtB,wBAAwB;QACxB,MAAM,UAAU,GAAG,MAAM,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAErD,kBAAkB;QAClB,MAAM,cAAc,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;QAExD,OAAO;QACP,MAAM,KAAK,GAAG,eAAe,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC;QAE/E,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,gBAAgB;QAChB,MAAM,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtB,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC,CAAC;QAC9E,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,OAAO,CAAC,QAAQ,CAAC,CAAC;QAClB,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,WAAW;QACX,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YACvC;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,OAAO;gBAChB,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,wBAAwB,EAAE,KAAK,EAAE,MAAM,EAAE;oBACjD,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,SAAS,EAAE;iBACnD;aACF;SACF,CAAC,CAAC;QAEH,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;IAEH,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QAC1C,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAChD,OAAO,CAAC,WAAW,CAAC,CAAC;QACrB,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;YAC5C;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,YAAY;gBACrB,OAAO,EAAE,IAAI;aACd;SACF,CAAC,CAAC;QAEH,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAa;IACnD,IAAI,CAAC;QACH,IAAI,CAAC,YAAY,CAAC,CAAC;QACnB,MAAM,GAAG,GAAG,IAAI;YACd,CAAC,CAAC,4BAA4B,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE;YACzD,CAAC,CAAC,0BAA0B,CAAC;QAC/B,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,OAAO,CAAC,aAAa,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,KAAK,CAAC,SAAS,CAAC,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC,CAAC;IACrF,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,MAAM,OAAO,GAAG;QACd,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC5B,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,KAAK,EAAE,GAAG,CAAC,IAAI;SAChB,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,SAAS,EAAE;QACxB,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE;QAC9D,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE;KAC9D,CAAC;IAEF,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;QACvC;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,SAAS;YAClB,OAAO;YACP,QAAQ,EAAE,EAAE;YACZ,IAAI,EAAE,KAAK;SACZ;KACF,CAAC,CAAC;IAEH,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO;IACT,CAAC;SAAM,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,MAAM,iBAAiB,EAAE,CAAC;IAC5B,CAAC;SAAM,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,cAAc;QACd,MAAM,gBAAgB,CAAC,WAAW,CAAC,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,SAAS;QACT,MAAM,eAAe,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"docs.js","sourceRoot":"","sources":["../../src/features/docs.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nbtca/prompt",
3
- "version": "1.0.3",
3
+ "version": "1.0.5",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
package/src/core/logo.ts CHANGED
@@ -25,27 +25,103 @@ function createBlueGradient(text: string): string {
25
25
  }
26
26
 
27
27
  /**
28
- * 显示渐变动画效果(优化版 - 更丝滑的动画)
28
+ * 将十六进制颜色转换为RGB
29
+ */
30
+ function hexToRgb(hex: string): [number, number, number] {
31
+ const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
32
+ return result
33
+ ? [parseInt(result[1]!, 16), parseInt(result[2]!, 16), parseInt(result[3]!, 16)]
34
+ : [0, 0, 0];
35
+ }
36
+
37
+ /**
38
+ * 将RGB转换为十六进制颜色
39
+ */
40
+ function rgbToHex(r: number, g: number, b: number): string {
41
+ return '#' + [r, g, b].map(x => {
42
+ const hex = Math.round(x).toString(16);
43
+ return hex.length === 1 ? '0' + hex : hex;
44
+ }).join('');
45
+ }
46
+
47
+ /**
48
+ * 在两个颜色之间进行线性插值
49
+ */
50
+ function interpolateColor(color1: string, color2: string, factor: number): string {
51
+ const [r1, g1, b1] = hexToRgb(color1);
52
+ const [r2, g2, b2] = hexToRgb(color2);
53
+
54
+ const r = r1 + (r2 - r1) * factor;
55
+ const g = g1 + (g2 - g1) * factor;
56
+ const b = b1 + (b2 - b1) * factor;
57
+
58
+ return rgbToHex(r, g, b);
59
+ }
60
+
61
+ /**
62
+ * 缓动函数 - 平滑的进出效果
63
+ */
64
+ function easeInOutSine(t: number): number {
65
+ return -(Math.cos(Math.PI * t) - 1) / 2;
66
+ }
67
+
68
+ /**
69
+ * 显示渐变动画效果(优化版 - 真正丝滑的动画)
29
70
  */
30
71
  async function animateGradient(text: string, duration: number = 1200): Promise<void> {
31
- const frames = 24; // 增加帧数使动画更流畅
72
+ const frames = 60; // 60帧实现真正的流畅动画
32
73
  const frameDelay = duration / frames;
33
74
 
34
- // 预创建所有渐变对象
35
- const gradients = [
36
- gradient('#1e3a8a', '#2563eb', '#3b82f6'),
37
- gradient('#2563eb', '#3b82f6', '#0ea5e9'),
38
- gradient('#3b82f6', '#0ea5e9', '#06b6d4'),
39
- gradient('#0ea5e9', '#06b6d4', '#14b8a6'),
40
- gradient('#06b6d4', '#14b8a6', '#0ea5e9'),
41
- gradient('#14b8a6', '#0ea5e9', '#3b82f6'),
42
- gradient('#0ea5e9', '#3b82f6', '#2563eb'),
43
- gradient('#3b82f6', '#2563eb', '#1e3a8a'),
75
+ // 定义颜色序列 - 形成完整的蓝色系循环
76
+ const colorSequence = [
77
+ '#1e3a8a', // 深蓝
78
+ '#2563eb', //
79
+ '#3b82f6', // 亮蓝
80
+ '#0ea5e9', // 天蓝
81
+ '#06b6d4', // 青色
82
+ '#14b8a6', // 青绿
83
+ '#06b6d4', // 青色
84
+ '#0ea5e9', // 天蓝
85
+ '#3b82f6', // 亮蓝
86
+ '#2563eb', // 蓝
87
+ '#1e3a8a', // 深蓝
44
88
  ];
45
89
 
46
90
  for (let i = 0; i < frames; i++) {
47
- const gradientIndex = Math.floor((i / frames) * gradients.length);
48
- const frameGradient = gradients[gradientIndex]!;
91
+ // 使用平滑的正弦缓动
92
+ const progress = easeInOutSine(i / frames);
93
+
94
+ // 计算在颜色序列中的位置
95
+ const position = progress * (colorSequence.length - 1);
96
+ const index1 = Math.floor(position);
97
+ const index2 = Math.min(index1 + 1, colorSequence.length - 1);
98
+ const localProgress = position - index1;
99
+
100
+ // 在相邻颜色间插值,生成三个平滑过渡的颜色
101
+ const color1 = interpolateColor(
102
+ colorSequence[index1]!,
103
+ colorSequence[index2]!,
104
+ localProgress
105
+ );
106
+
107
+ const nextIndex1 = Math.min(index2, colorSequence.length - 1);
108
+ const nextIndex2 = Math.min(nextIndex1 + 1, colorSequence.length - 1);
109
+ const color2 = interpolateColor(
110
+ colorSequence[nextIndex1]!,
111
+ colorSequence[nextIndex2]!,
112
+ localProgress
113
+ );
114
+
115
+ const nextIndex3 = Math.min(nextIndex2, colorSequence.length - 1);
116
+ const nextIndex4 = Math.min(nextIndex3 + 1, colorSequence.length - 1);
117
+ const color3 = interpolateColor(
118
+ colorSequence[nextIndex3]!,
119
+ colorSequence[nextIndex4]!,
120
+ localProgress
121
+ );
122
+
123
+ // 为当前帧创建渐变
124
+ const frameGradient = gradient(color1, color2, color3);
49
125
 
50
126
  // 清除当前行并显示新帧
51
127
  process.stdout.write('\r' + frameGradient(text));
@@ -10,6 +10,7 @@ import chalk from 'chalk';
10
10
  import open from 'open';
11
11
  import inquirer from 'inquirer';
12
12
  import { error, info, success, warning } from '../core/ui.js';
13
+ import { spawn } from 'child_process';
13
14
 
14
15
  // 配置marked使用终端渲染器
15
16
  marked.setOptions({
@@ -26,6 +27,12 @@ const GITHUB_REPO = {
26
27
  branch: 'main'
27
28
  };
28
29
 
30
+ /**
31
+ * GitHub Token (可选 - 用于避免 API 速率限制)
32
+ * 从环境变量读取,如果没有则使用未认证请求
33
+ */
34
+ const GITHUB_TOKEN = process.env['GITHUB_TOKEN'] || process.env['GH_TOKEN'];
35
+
29
36
  /**
30
37
  * 文档结构类型
31
38
  */
@@ -56,12 +63,19 @@ async function fetchGitHubDirectory(path: string = ''): Promise<DocItem[]> {
56
63
  const url = `https://api.github.com/repos/${GITHUB_REPO.owner}/${GITHUB_REPO.repo}/contents/${path}?ref=${GITHUB_REPO.branch}`;
57
64
 
58
65
  try {
66
+ const headers: any = {
67
+ 'Accept': 'application/vnd.github.v3+json',
68
+ 'User-Agent': 'NBTCA-CLI'
69
+ };
70
+
71
+ // 如果有 GitHub Token,添加认证头以避免速率限制
72
+ if (GITHUB_TOKEN) {
73
+ headers['Authorization'] = `Bearer ${GITHUB_TOKEN}`;
74
+ }
75
+
59
76
  const response = await axios.get(url, {
60
77
  timeout: 10000,
61
- headers: {
62
- 'Accept': 'application/vnd.github.v3+json',
63
- 'User-Agent': 'NBTCA-CLI'
64
- }
78
+ headers
65
79
  });
66
80
 
67
81
  return response.data
@@ -90,6 +104,17 @@ async function fetchGitHubDirectory(path: string = ''): Promise<DocItem[]> {
90
104
  return a.name.localeCompare(b.name);
91
105
  });
92
106
  } catch (err: any) {
107
+ // 提供更详细的错误信息
108
+ if (err.response?.status === 403) {
109
+ const rateLimitRemaining = err.response.headers['x-ratelimit-remaining'];
110
+ const rateLimitReset = err.response.headers['x-ratelimit-reset'];
111
+
112
+ if (rateLimitRemaining === '0') {
113
+ const resetDate = new Date(parseInt(rateLimitReset) * 1000);
114
+ throw new Error(`GitHub API 速率限制已达上限,将在 ${resetDate.toLocaleTimeString()} 重置。\n提示: 设置 GITHUB_TOKEN 环境变量可获得更高的速率限制。`);
115
+ }
116
+ throw new Error(`GitHub API 拒绝访问 (403)。\n提示: 尝试设置 GITHUB_TOKEN 环境变量。`);
117
+ }
93
118
  throw new Error(`无法获取目录内容: ${err.message}`);
94
119
  }
95
120
  }
@@ -231,6 +256,50 @@ async function browseDirectory(dirPath: string = ''): Promise<void> {
231
256
  }
232
257
  }
233
258
 
259
+ /**
260
+ * 使用系统pager (less/more) 显示内容
261
+ * 提供类似vim/journalctl的阅读体验
262
+ */
263
+ async function displayInPager(content: string, title: string): Promise<boolean> {
264
+ return new Promise((resolve) => {
265
+ // 检测可用的pager程序
266
+ const pager = process.env['PAGER'] || 'less';
267
+
268
+ // 为内容添加标题
269
+ const fullContent = `${chalk.cyan.bold(`>> ${title}`)}\n${chalk.gray('='.repeat(80))}\n\n${content}\n\n${chalk.gray('='.repeat(80))}\n${chalk.dim('End of document - Press q to quit')}\n`;
270
+
271
+ // less的参数: -R (支持颜色), -F (如果内容少于一屏则直接显示), -X (退出时不清屏)
272
+ const lessArgs = ['-R', '-F', '-X'];
273
+
274
+ try {
275
+ const child = spawn(pager, lessArgs, {
276
+ stdio: ['pipe', 'inherit', 'inherit'],
277
+ shell: true
278
+ });
279
+
280
+ // 将内容写入pager的stdin
281
+ child.stdin.write(fullContent);
282
+ child.stdin.end();
283
+
284
+ child.on('exit', (code) => {
285
+ resolve(code === 0);
286
+ });
287
+
288
+ child.on('error', () => {
289
+ // 如果pager失败,回退到直接输出
290
+ console.error(chalk.yellow('⚠ Pager不可用,使用标准输出'));
291
+ console.log(fullContent);
292
+ resolve(false);
293
+ });
294
+
295
+ } catch {
296
+ // 回退方案: 直接输出
297
+ console.log(fullContent);
298
+ resolve(false);
299
+ }
300
+ });
301
+ }
302
+
234
303
  /**
235
304
  * 查看Markdown文件
236
305
  */
@@ -247,23 +316,15 @@ async function viewMarkdownFile(path: string): Promise<void> {
247
316
  // 提取标题
248
317
  const title = extractDocTitle(cleanedContent) || path.split('/').pop() || path;
249
318
 
250
- console.clear();
251
- console.log();
252
- console.log(chalk.cyan.bold(`>> ${title}`));
253
- console.log(chalk.gray(` ${path}`));
254
- console.log();
255
- console.log(chalk.gray('='.repeat(80)));
256
- console.log();
257
-
258
319
  // 渲染Markdown到终端
259
- const rendered = marked(cleanedContent);
260
- console.log(rendered);
261
- console.log();
262
- console.log(chalk.gray('='.repeat(80)));
263
- console.log();
264
- console.log(chalk.dim(' Note: Some features are only available in browser'));
265
- console.log();
320
+ const rendered = await marked(cleanedContent);
321
+
322
+ console.log('\r' + ' '.repeat(60) + '\r'); // 清除加载提示
323
+
324
+ // 使用pager显示文档 (类似vim/journalctl的阅读体验)
325
+ await displayInPager(rendered, `${title}\n${chalk.gray(` ${path}`)}`);
266
326
 
327
+ console.log(); // 添加空行
267
328
  success('文档加载完成');
268
329
  console.log();
269
330
 
@@ -275,6 +336,7 @@ async function viewMarkdownFile(path: string): Promise<void> {
275
336
  message: '选择操作:',
276
337
  choices: [
277
338
  { name: '[ <] Back to docs list', value: 'back' },
339
+ { name: '[ ↻] Re-read document', value: 'reread' },
278
340
  { name: '[ *] Open in browser', value: 'browser' }
279
341
  ]
280
342
  }
@@ -282,6 +344,9 @@ async function viewMarkdownFile(path: string): Promise<void> {
282
344
 
283
345
  if (action === 'browser') {
284
346
  await openDocsInBrowser(path);
347
+ } else if (action === 'reread') {
348
+ // 重新阅读文档
349
+ await viewMarkdownFile(path);
285
350
  }
286
351
 
287
352
  } catch (err: any) {
@@ -1,25 +0,0 @@
1
- {
2
- "permissions": {
3
- "allow": [
4
- "Bash(gh pr create:*)",
5
- "Bash(gh release:*)",
6
- "Bash(npm whoami:*)",
7
- "Bash(git fetch:*)",
8
- "Bash(git pull:*)",
9
- "Bash(Jump: g/G)",
10
- "Bash(npm run build:*)",
11
- "Bash(git add:*)",
12
- "Bash(git commit -m \"$(cat <<''EOF''\nfix: correct version display in application\n\nPrevious commit bumped package.json to 1.0.2 but missed updating the version in the application code itself, causing the UI to still display 1.0.0.\nEOF\n)\")",
13
- "Bash(git tag:*)",
14
- "Bash(git push:*)",
15
- "Bash(npm publish:*)",
16
- "Bash(npm view:*)",
17
- "Bash(npm unpublish:*)",
18
- "Bash(npm config:*)",
19
- "Bash(tee:*)",
20
- "Bash(npm cache clean:*)"
21
- ],
22
- "deny": [],
23
- "ask": []
24
- }
25
- }
@@ -1,27 +0,0 @@
1
- Prompt Wiki
2
-
3
- ## Memo
4
-
5
- NBTCA support bunch of services since latest contribution from party members.
6
-
7
- - Blog about active and skills
8
-
9
- - NBTCA Calendar and notification
10
-
11
- - Repair service
12
-
13
- - Tech support
14
-
15
- - Open source code of service support applications
16
-
17
- - Docs of archive
18
-
19
- - Minecraft server
20
-
21
- Design purpose
22
-
23
- - Build multi-independent tools and each tool focus one thing
24
-
25
- - K.I.S.S. (keep it simple stupid)
26
-
27
- - Gather tools to construct interactive service