@nbtca/prompt 1.0.23 → 1.0.24

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 (83) hide show
  1. package/dist/config/data.js +5 -1
  2. package/dist/config/paths.js +5 -0
  3. package/dist/config/preferences.js +1 -8
  4. package/dist/core/icons.js +18 -5
  5. package/dist/core/logo.js +1 -2
  6. package/dist/core/menu.js +7 -122
  7. package/dist/core/text.js +9 -3
  8. package/dist/core/ui.js +0 -1
  9. package/dist/core/vim-keys.js +6 -5
  10. package/dist/features/calendar.js +50 -9
  11. package/dist/features/docs.js +128 -49
  12. package/dist/features/links.js +42 -0
  13. package/dist/features/settings.js +120 -0
  14. package/dist/features/status.js +19 -26
  15. package/dist/features/theme.js +9 -101
  16. package/dist/features/update.js +74 -0
  17. package/dist/i18n/index.js +7 -16
  18. package/dist/i18n/locales/en.json +43 -54
  19. package/dist/i18n/locales/zh.json +43 -54
  20. package/dist/index.js +107 -67
  21. package/dist/main.js +14 -5
  22. package/package.json +4 -1
  23. package/dist/config/data.d.ts +0 -23
  24. package/dist/config/data.d.ts.map +0 -1
  25. package/dist/config/data.js.map +0 -1
  26. package/dist/config/preferences.d.ts +0 -14
  27. package/dist/config/preferences.d.ts.map +0 -1
  28. package/dist/config/preferences.js.map +0 -1
  29. package/dist/config/theme.d.ts +0 -23
  30. package/dist/config/theme.d.ts.map +0 -1
  31. package/dist/config/theme.js +0 -25
  32. package/dist/config/theme.js.map +0 -1
  33. package/dist/core/icons.d.ts +0 -3
  34. package/dist/core/icons.d.ts.map +0 -1
  35. package/dist/core/icons.js.map +0 -1
  36. package/dist/core/logo.d.ts +0 -9
  37. package/dist/core/logo.d.ts.map +0 -1
  38. package/dist/core/logo.js.map +0 -1
  39. package/dist/core/menu.d.ts +0 -14
  40. package/dist/core/menu.d.ts.map +0 -1
  41. package/dist/core/menu.js.map +0 -1
  42. package/dist/core/text.d.ts +0 -7
  43. package/dist/core/text.d.ts.map +0 -1
  44. package/dist/core/text.js.map +0 -1
  45. package/dist/core/ui.d.ts +0 -38
  46. package/dist/core/ui.d.ts.map +0 -1
  47. package/dist/core/ui.js.map +0 -1
  48. package/dist/core/vim-keys.d.ts +0 -8
  49. package/dist/core/vim-keys.d.ts.map +0 -1
  50. package/dist/core/vim-keys.js.map +0 -1
  51. package/dist/features/calendar.d.ts +0 -29
  52. package/dist/features/calendar.d.ts.map +0 -1
  53. package/dist/features/calendar.js.map +0 -1
  54. package/dist/features/docs.d.ts +0 -8
  55. package/dist/features/docs.d.ts.map +0 -1
  56. package/dist/features/docs.js.map +0 -1
  57. package/dist/features/repair.d.ts +0 -10
  58. package/dist/features/repair.d.ts.map +0 -1
  59. package/dist/features/repair.js +0 -29
  60. package/dist/features/repair.js.map +0 -1
  61. package/dist/features/status.d.ts +0 -31
  62. package/dist/features/status.d.ts.map +0 -1
  63. package/dist/features/status.js.map +0 -1
  64. package/dist/features/theme.d.ts +0 -8
  65. package/dist/features/theme.d.ts.map +0 -1
  66. package/dist/features/theme.js.map +0 -1
  67. package/dist/features/website.d.ts +0 -30
  68. package/dist/features/website.d.ts.map +0 -1
  69. package/dist/features/website.js +0 -48
  70. package/dist/features/website.js.map +0 -1
  71. package/dist/i18n/index.d.ts +0 -209
  72. package/dist/i18n/index.d.ts.map +0 -1
  73. package/dist/i18n/index.js.map +0 -1
  74. package/dist/index.d.ts +0 -5
  75. package/dist/index.d.ts.map +0 -1
  76. package/dist/index.js.map +0 -1
  77. package/dist/main.d.ts +0 -12
  78. package/dist/main.d.ts.map +0 -1
  79. package/dist/main.js.map +0 -1
  80. package/dist/types.d.ts +0 -48
  81. package/dist/types.d.ts.map +0 -1
  82. package/dist/types.js +0 -6
  83. package/dist/types.js.map +0 -1
package/dist/index.js CHANGED
@@ -2,18 +2,18 @@
2
2
  * NBTCA Prompt entry point
3
3
  */
4
4
  import chalk from 'chalk';
5
+ import open from 'open';
5
6
  import { main } from './main.js';
6
- import { runMenuAction } from './core/menu.js';
7
7
  import { fetchEvents, renderEventsTable, serializeEvents } from './features/calendar.js';
8
8
  import { checkServices, countServiceHealth, hasServiceFailures, renderServiceStatusTable, serializeServiceStatus } from './features/status.js';
9
9
  import { pickIcon } from './core/icons.js';
10
10
  import { applyColorModePreference } from './config/preferences.js';
11
11
  import { openDocsInBrowser } from './features/docs.js';
12
12
  import { runThemeCommand } from './features/theme.js';
13
- import { REPAIR_URL } from './features/repair.js';
14
- import { WEBSITE_URLS } from './features/website.js';
15
13
  import { setLanguage, t } from './i18n/index.js';
16
14
  import { clearScreen } from './core/ui.js';
15
+ import { APP_INFO, URLS } from './config/data.js';
16
+ import { runUpdateCheck } from './features/update.js';
17
17
  const ACTION_ALIASES = {
18
18
  events: 'events',
19
19
  event: 'events',
@@ -30,13 +30,13 @@ const ACTION_ALIASES = {
30
30
  status: 'status',
31
31
  };
32
32
  const URL_ACTIONS = {
33
- repair: REPAIR_URL,
34
- website: WEBSITE_URLS.homepage,
35
- github: WEBSITE_URLS.github,
36
- roadmap: WEBSITE_URLS.roadmap
33
+ repair: URLS.repair,
34
+ website: URLS.homepage,
35
+ github: URLS.github,
36
+ roadmap: URLS.roadmap
37
37
  };
38
- const KNOWN_FLAGS = new Set(['--help', '--open', '--json', '--plain', '--no-logo', '--watch']);
39
- const KNOWN_FLAG_PREFIXES = ['--interval=', '--timeout=', '--retries='];
38
+ const KNOWN_FLAGS = new Set(['--help', '--version', '--open', '--json', '--plain', '--no-logo', '--watch', '--today']);
39
+ const KNOWN_FLAG_PREFIXES = ['--interval=', '--timeout=', '--retries=', '--next='];
40
40
  const STATUS_WATCH_INTERVAL_MIN = 3;
41
41
  const STATUS_WATCH_INTERVAL_MAX = 300;
42
42
  const STATUS_TIMEOUT_MIN = 1000;
@@ -67,21 +67,20 @@ function getAllowedFlagsFor(command) {
67
67
  const allowed = new Set(['--help', '--plain']);
68
68
  if (!command) {
69
69
  allowed.add('--no-logo');
70
+ allowed.add('--version');
70
71
  return allowed;
71
72
  }
72
- if (command === 'lang' || command === 'language') {
73
+ if (command === 'lang' || command === 'language')
73
74
  return allowed;
74
- }
75
- if (command === 'theme') {
75
+ if (command === 'theme')
76
76
  return allowed;
77
- }
78
77
  const action = ACTION_ALIASES[command];
79
- if (!action) {
78
+ if (!action)
80
79
  return allowed;
81
- }
82
80
  switch (action) {
83
81
  case 'events':
84
82
  allowed.add('--json');
83
+ allowed.add('--today');
85
84
  return allowed;
86
85
  case 'status':
87
86
  allowed.add('--json');
@@ -103,9 +102,10 @@ function getAllowedFlagPrefixesFor(command) {
103
102
  if (!command)
104
103
  return [];
105
104
  const action = ACTION_ALIASES[command];
106
- if (action === 'status') {
105
+ if (action === 'events')
106
+ return ['--next='];
107
+ if (action === 'status')
107
108
  return ['--interval=', '--timeout=', '--retries='];
108
- }
109
109
  return [];
110
110
  }
111
111
  function validateFlags(command, flags) {
@@ -136,36 +136,51 @@ function printHelp() {
136
136
  console.log(chalk.bold('NBTCA Prompt'));
137
137
  console.log();
138
138
  console.log('Usage:');
139
- console.log(' nbtca Start interactive menu');
140
- console.log(' nbtca <command> [flags] Run one command directly');
141
- console.log(' nbtca lang <zh|en> Set language preference');
142
- console.log(' nbtca theme ... Configure icon and color mode');
139
+ console.log(' nbtca Interactive menu');
140
+ console.log(' nbtca <command> [flags] Run a command');
143
141
  console.log();
144
142
  console.log('Commands:');
145
- console.log(' events | status | repair | docs | website | github | roadmap | about | theme');
143
+ console.log(' events Upcoming activities');
144
+ console.log(' docs Knowledge base');
145
+ console.log(' status Service health');
146
+ console.log(' website Official website URL');
147
+ console.log(' github GitHub organization URL');
148
+ console.log(' roadmap Project roadmap URL');
149
+ console.log(' repair Repair service URL');
150
+ console.log(' theme View or set theme');
151
+ console.log(' lang <zh|en> Set language');
152
+ console.log(' update Check for updates');
146
153
  console.log();
147
154
  console.log('Flags:');
148
- console.log(' --help Show help');
149
- console.log(' --open Open browser for URL commands');
150
- console.log(' --json JSON output (supported by `events`, `status`)');
151
- console.log(' --watch Continuously refresh status output (`status` only)');
152
- console.log(' --interval=<seconds> Refresh interval for `status --watch` (3-300)');
153
- console.log(' --timeout=<ms> HTTP timeout for status checks (1000-20000)');
154
- console.log(' --retries=<n> Retry count for transient status failures (0-5)');
155
- console.log(' --plain Disable color output');
156
- console.log(' --no-logo Skip startup logo in menu mode');
157
- console.log();
158
- console.log('Examples:');
159
- console.log(' nbtca events --json');
160
- console.log(' nbtca status --json');
161
- console.log(' nbtca status --watch --interval=10');
162
- console.log(' nbtca status --timeout=8000 --retries=2');
163
- console.log(' nbtca theme icon ascii');
164
- console.log(' nbtca roadmap');
165
- console.log(' nbtca roadmap --open');
155
+ console.log(' --version Show version');
156
+ console.log(' --help Show help');
157
+ console.log(' --open Open in browser (URL commands)');
158
+ console.log(' --json JSON output (events, status)');
159
+ console.log(' --today Today only (events)');
160
+ console.log(' --next=<n> Limit to next N (events)');
161
+ console.log(' --watch Live refresh (status)');
162
+ console.log(' --interval=<s> Refresh interval (status --watch)');
163
+ console.log(' --timeout=<ms> HTTP timeout (status)');
164
+ console.log(' --retries=<n> Retry count (status)');
165
+ console.log(' --plain No color');
166
+ console.log(' --no-logo Skip logo');
166
167
  }
167
168
  async function runEventsCommand(flags) {
168
- const events = await fetchEvents();
169
+ let events = await fetchEvents();
170
+ if (flags.has('--today')) {
171
+ const now = new Date();
172
+ const todayStr = `${String(now.getMonth() + 1).padStart(2, '0')}-${String(now.getDate()).padStart(2, '0')}`;
173
+ events = events.filter(e => e.date === todayStr);
174
+ }
175
+ const nextFlag = Array.from(flags).find(f => f.startsWith('--next='));
176
+ if (nextFlag) {
177
+ const n = Number.parseInt(nextFlag.split('=')[1] || '', 10);
178
+ if (!Number.isInteger(n) || n < 1) {
179
+ console.error(chalk.red('Invalid --next value. Use --next=<number> (>= 1).'));
180
+ process.exit(1);
181
+ }
182
+ events = events.slice(0, n);
183
+ }
169
184
  if (flags.has('--json')) {
170
185
  process.stdout.write(JSON.stringify(serializeEvents(events), null, 2) + '\n');
171
186
  return;
@@ -187,26 +202,19 @@ async function runStatusCommand(flags) {
187
202
  process.exit(1);
188
203
  }
189
204
  if (!Number.isInteger(timeoutMs) || timeoutMs < STATUS_TIMEOUT_MIN || timeoutMs > STATUS_TIMEOUT_MAX) {
190
- console.error(chalk.red(trans.status.invalidTimeout
191
- .replace('{min}', String(STATUS_TIMEOUT_MIN))
192
- .replace('{max}', String(STATUS_TIMEOUT_MAX))));
205
+ console.error(chalk.red(trans.status.invalidTimeout.replace('{min}', String(STATUS_TIMEOUT_MIN)).replace('{max}', String(STATUS_TIMEOUT_MAX))));
193
206
  process.exit(1);
194
207
  }
195
208
  if (!Number.isInteger(retries) || retries < STATUS_RETRIES_MIN || retries > STATUS_RETRIES_MAX) {
196
- console.error(chalk.red(trans.status.invalidRetries
197
- .replace('{min}', String(STATUS_RETRIES_MIN))
198
- .replace('{max}', String(STATUS_RETRIES_MAX))));
209
+ console.error(chalk.red(trans.status.invalidRetries.replace('{min}', String(STATUS_RETRIES_MIN)).replace('{max}', String(STATUS_RETRIES_MAX))));
199
210
  process.exit(1);
200
211
  }
201
212
  if (watch && flags.has('--json')) {
202
213
  console.error(chalk.red(trans.status.watchJsonConflict));
203
214
  process.exit(1);
204
215
  }
205
- if (watch &&
206
- (!Number.isInteger(intervalSeconds) || intervalSeconds < STATUS_WATCH_INTERVAL_MIN || intervalSeconds > STATUS_WATCH_INTERVAL_MAX)) {
207
- console.error(chalk.red(trans.status.invalidInterval
208
- .replace('{min}', String(STATUS_WATCH_INTERVAL_MIN))
209
- .replace('{max}', String(STATUS_WATCH_INTERVAL_MAX))));
216
+ if (watch && (!Number.isInteger(intervalSeconds) || intervalSeconds < STATUS_WATCH_INTERVAL_MIN || intervalSeconds > STATUS_WATCH_INTERVAL_MAX)) {
217
+ console.error(chalk.red(trans.status.invalidInterval.replace('{min}', String(STATUS_WATCH_INTERVAL_MIN)).replace('{max}', String(STATUS_WATCH_INTERVAL_MAX))));
210
218
  process.exit(1);
211
219
  }
212
220
  if (watch && !hasInteractiveTerminal()) {
@@ -215,9 +223,7 @@ async function runStatusCommand(flags) {
215
223
  }
216
224
  if (watch) {
217
225
  let stopped = false;
218
- const onSigint = () => {
219
- stopped = true;
220
- };
226
+ const onSigint = () => { stopped = true; };
221
227
  process.once('SIGINT', onSigint);
222
228
  console.log(chalk.dim(`${trans.status.watchStarted.replace('{seconds}', String(intervalSeconds))} | ${trans.status.watchHint}`));
223
229
  try {
@@ -226,7 +232,7 @@ async function runStatusCommand(flags) {
226
232
  const hasFailures = hasServiceFailures(services);
227
233
  const health = countServiceHealth(services);
228
234
  clearScreen();
229
- console.log(chalk.bold(`${pickIcon('📡', '[status]')} ${trans.status.watchUpdated}: ${new Date().toLocaleString()}`));
235
+ console.log(chalk.bold(`${trans.status.watchUpdated}: ${new Date().toLocaleString()}`));
230
236
  console.log(chalk.dim(`${trans.status.up}: ${health.up} | ${trans.status.down}: ${health.down} | ${trans.status.watchHint}`));
231
237
  console.log();
232
238
  const useColor = !flags.has('--plain') && !!process.stdout.isTTY;
@@ -280,11 +286,15 @@ function maybeDisableColor(flags) {
280
286
  async function runCommandMode(argv) {
281
287
  const { command, args, flags } = parseArgs(argv);
282
288
  maybeDisableColor(flags);
283
- validateFlags(command, flags);
289
+ if (flags.has('--version') || command === '--version' || command === '-v' || command === 'version') {
290
+ console.log(APP_INFO.version);
291
+ return;
292
+ }
284
293
  if (flags.has('--help') || command === '--help' || command === '-h' || command === 'help') {
285
294
  printHelp();
286
295
  return;
287
296
  }
297
+ validateFlags(command, flags);
288
298
  if (!command) {
289
299
  if (!hasInteractiveTerminal()) {
290
300
  console.error(chalk.red('Interactive mode requires a TTY terminal.'));
@@ -320,6 +330,10 @@ async function runCommandMode(argv) {
320
330
  }
321
331
  return;
322
332
  }
333
+ if (command === 'update') {
334
+ await runUpdateCheck();
335
+ return;
336
+ }
323
337
  const action = ACTION_ALIASES[command];
324
338
  if (!action) {
325
339
  console.error(chalk.red(`Unknown command: ${command}`));
@@ -332,26 +346,53 @@ async function runCommandMode(argv) {
332
346
  }
333
347
  if (action === 'status') {
334
348
  const ok = await runStatusCommand(flags);
335
- if (!ok) {
349
+ if (!ok)
336
350
  process.exit(1);
337
- }
338
351
  return;
339
352
  }
340
- if (action === 'docs' && !hasInteractiveTerminal()) {
341
- if (flags.has('--open')) {
342
- await openDocsInBrowser();
353
+ if (action === 'docs') {
354
+ if (!hasInteractiveTerminal()) {
355
+ if (flags.has('--open')) {
356
+ await openDocsInBrowser();
357
+ }
358
+ else {
359
+ process.stdout.write(URLS.docs + '\n');
360
+ }
343
361
  }
344
362
  else {
345
- process.stdout.write(WEBSITE_URLS.docs + '\n');
363
+ const { showDocsMenu } = await import('./features/docs.js');
364
+ await showDocsMenu();
346
365
  }
347
366
  return;
348
367
  }
368
+ if (action === 'about') {
369
+ const { note } = await import('@clack/prompts');
370
+ const { padEndV } = await import('./core/text.js');
371
+ const pad = 12;
372
+ const row = (label, value) => `${chalk.dim(padEndV(label, pad))}${value}`;
373
+ const link = (label, url) => row(label, chalk.cyan(url));
374
+ const trans = t();
375
+ const content = [
376
+ row(trans.about.project, APP_INFO.name),
377
+ row(trans.about.version, `v${APP_INFO.version}`),
378
+ '',
379
+ link(trans.about.github, APP_INFO.repository),
380
+ link(trans.about.website, URLS.homepage),
381
+ ].join('\n');
382
+ note(content, trans.about.title);
383
+ return;
384
+ }
385
+ // URL actions: repair, website, github, roadmap
349
386
  const mappedUrl = URL_ACTIONS[action];
350
- if (mappedUrl && !flags.has('--open')) {
351
- process.stdout.write(mappedUrl + '\n');
387
+ if (mappedUrl) {
388
+ if (flags.has('--open')) {
389
+ await open(mappedUrl);
390
+ }
391
+ else {
392
+ process.stdout.write(mappedUrl + '\n');
393
+ }
352
394
  return;
353
395
  }
354
- await runMenuAction(action);
355
396
  }
356
397
  runCommandMode(process.argv.slice(2)).catch((err) => {
357
398
  if (err?.message?.includes('SIGINT') || err?.message?.includes('User force closed')) {
@@ -367,4 +408,3 @@ runCommandMode(process.argv.slice(2)).catch((err) => {
367
408
  }
368
409
  process.exit(1);
369
410
  });
370
- //# sourceMappingURL=index.js.map
package/dist/main.js CHANGED
@@ -10,6 +10,7 @@ import { showMainMenu } from './core/menu.js';
10
10
  import { APP_INFO } from './config/data.js';
11
11
  import { enableVimKeys } from './core/vim-keys.js';
12
12
  import { t } from './i18n/index.js';
13
+ import { checkForUpdate } from './features/update.js';
13
14
  /**
14
15
  * Main program entry point
15
16
  */
@@ -23,24 +24,32 @@ export async function main(options = {}) {
23
24
  }
24
25
  // Display logo (smart fallback)
25
26
  if (!options.skipLogo) {
26
- await printLogo();
27
+ printLogo();
27
28
  }
29
+ // Non-blocking update check (fire and forget, print before menu if resolved in time)
30
+ const updatePromise = checkForUpdate();
28
31
  // Open session frame
29
32
  intro(chalk.cyan('NBTCA Prompt') + chalk.dim(` v${APP_INFO.version}`));
33
+ // Show update notification if ready
34
+ const updateMsg = await Promise.race([
35
+ updatePromise,
36
+ new Promise(r => setTimeout(r, 500, null)),
37
+ ]);
38
+ if (updateMsg)
39
+ console.log(chalk.yellow(updateMsg));
30
40
  // Show main menu (loop)
31
41
  await showMainMenu();
32
42
  }
33
43
  catch (err) {
34
- // Handle Ctrl+C exit
35
- if (err.message?.includes('SIGINT') || err.message?.includes('User force closed')) {
44
+ const message = err instanceof Error ? err.message : String(err ?? '');
45
+ if (message.includes('SIGINT') || message.includes('User force closed')) {
36
46
  console.log();
37
47
  console.log(chalk.dim(t().common.goodbye));
38
48
  process.exit(0);
39
49
  }
40
50
  else {
41
- console.error('Error occurred:', err);
51
+ console.error('Error occurred:', message || err);
42
52
  process.exit(1);
43
53
  }
44
54
  }
45
55
  }
46
- //# sourceMappingURL=main.js.map
package/package.json CHANGED
@@ -1,8 +1,11 @@
1
1
  {
2
2
  "name": "@nbtca/prompt",
3
- "version": "1.0.23",
3
+ "version": "1.0.24",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
+ "exports": {
7
+ ".": "./dist/index.js"
8
+ },
6
9
  "bin": {
7
10
  "nbtca": "bin/nbtca-welcome.js",
8
11
  "nbtca-welcome": "bin/nbtca-welcome.js"
@@ -1,23 +0,0 @@
1
- /**
2
- * 核心URL配置
3
- * 集中管理所有外部链接
4
- */
5
- export declare const URLS: {
6
- readonly homepage: "https://nbtca.space";
7
- readonly github: "https://github.com/nbtca";
8
- readonly roadmap: "https://github.com/orgs/nbtca/projects/5";
9
- readonly docs: "https://docs.nbtca.space";
10
- readonly repair: "https://nbtca.space/repair";
11
- readonly calendar: "https://ical.nbtca.space";
12
- readonly email: "contact@nbtca.space";
13
- };
14
- export declare const APP_INFO: {
15
- readonly name: "Prompt";
16
- readonly version: string;
17
- readonly description: "浙大宁波理工学院计算机协会";
18
- readonly fullDescription: "NBTCA Prompt - 极简命令行工具";
19
- readonly author: "m1ngsama <contact@m1ng.space>";
20
- readonly license: "MIT";
21
- readonly repository: "https://github.com/nbtca/prompt";
22
- };
23
- //# sourceMappingURL=data.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../src/config/data.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAmBH,eAAO,MAAM,IAAI;;;;;;;;CAQP,CAAC;AAEX,eAAO,MAAM,QAAQ;;;;;;;;CAQX,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"data.js","sourceRoot":"","sources":["../../src/config/data.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAErC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,SAAS,kBAAkB;IACzB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QACvD,OAAO,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB,QAAQ,EAAE,qBAAqB;IAC/B,MAAM,EAAI,0BAA0B;IACpC,OAAO,EAAG,0CAA0C;IACpD,IAAI,EAAM,0BAA0B;IACpC,MAAM,EAAI,4BAA4B;IACtC,QAAQ,EAAE,0BAA0B;IACpC,KAAK,EAAK,qBAAqB;CACvB,CAAC;AAEX,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,kBAAkB,EAAE;IAC7B,WAAW,EAAE,eAAe;IAC5B,eAAe,EAAE,wBAAwB;IACzC,MAAM,EAAE,+BAA+B;IACvC,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,iCAAiC;CACrC,CAAC"}
@@ -1,14 +0,0 @@
1
- export type IconMode = 'auto' | 'ascii' | 'unicode';
2
- export type ColorMode = 'auto' | 'on' | 'off';
3
- export interface Preferences {
4
- iconMode: IconMode;
5
- colorMode: ColorMode;
6
- }
7
- export declare function loadPreferences(): Preferences;
8
- export declare function setIconMode(mode: IconMode): boolean;
9
- export declare function setColorMode(mode: ColorMode): boolean;
10
- export declare function resetPreferences(): boolean;
11
- export declare function resolveIconMode(): IconMode;
12
- export declare function resolveColorMode(): ColorMode;
13
- export declare function applyColorModePreference(forcePlain: boolean): void;
14
- //# sourceMappingURL=preferences.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"preferences.d.ts","sourceRoot":"","sources":["../../src/config/preferences.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;AACpD,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC;AAE9C,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,SAAS,CAAC;CACtB;AAuBD,wBAAgB,eAAe,IAAI,WAAW,CAmB7C;AAYD,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAInD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAIrD;AAED,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C;AAED,wBAAgB,eAAe,IAAI,QAAQ,CAM1C;AAED,wBAAgB,gBAAgB,IAAI,SAAS,CAM5C;AAED,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,OAAO,GAAG,IAAI,CAclE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"preferences.js","sourceRoot":"","sources":["../../src/config/preferences.ts"],"names":[],"mappings":"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"}
@@ -1,23 +0,0 @@
1
- /**
2
- * 极简主题配置
3
- * 只保留基础颜色定义
4
- */
5
- /**
6
- * 基础颜色常量
7
- */
8
- export declare const COLORS: {
9
- readonly cyan: "#00bcd4";
10
- readonly blue: "#2196f3";
11
- readonly green: "#4caf50";
12
- readonly yellow: "#ffeb3b";
13
- readonly red: "#f44336";
14
- readonly gray: "#9e9e9e";
15
- readonly white: "#ffffff";
16
- readonly primary: "#00bcd4";
17
- readonly success: "#4caf50";
18
- readonly warning: "#ffeb3b";
19
- readonly error: "#f44336";
20
- readonly info: "#2196f3";
21
- readonly muted: "#9e9e9e";
22
- };
23
- //# sourceMappingURL=theme.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../src/config/theme.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,eAAO,MAAM,MAAM;;;;;;;;;;;;;;CAiBT,CAAC"}
@@ -1,25 +0,0 @@
1
- /**
2
- * 极简主题配置
3
- * 只保留基础颜色定义
4
- */
5
- /**
6
- * 基础颜色常量
7
- */
8
- export const COLORS = {
9
- // 主题色
10
- cyan: '#00bcd4',
11
- blue: '#2196f3',
12
- green: '#4caf50',
13
- yellow: '#ffeb3b',
14
- red: '#f44336',
15
- gray: '#9e9e9e',
16
- white: '#ffffff',
17
- // 语义色
18
- primary: '#00bcd4',
19
- success: '#4caf50',
20
- warning: '#ffeb3b',
21
- error: '#f44336',
22
- info: '#2196f3',
23
- muted: '#9e9e9e'
24
- };
25
- //# sourceMappingURL=theme.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"theme.js","sourceRoot":"","sources":["../../src/config/theme.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,MAAM;IACN,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,SAAS;IACjB,GAAG,EAAE,SAAS;IACd,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,SAAS;IAEhB,MAAM;IACN,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,SAAS;CACR,CAAC"}
@@ -1,3 +0,0 @@
1
- export declare function useUnicodeIcons(): boolean;
2
- export declare function pickIcon(unicodeIcon: string, asciiIcon: string): string;
3
- //# sourceMappingURL=icons.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"icons.d.ts","sourceRoot":"","sources":["../../src/core/icons.ts"],"names":[],"mappings":"AAOA,wBAAgB,eAAe,IAAI,OAAO,CAQzC;AAED,wBAAgB,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEvE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"icons.js","sourceRoot":"","sources":["../../src/core/icons.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,SAAS,qBAAqB;IAC5B,MAAM,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3F,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,MAAM,UAAU,GAAG,eAAe,EAAE,CAAC;IACrC,IAAI,UAAU,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IACzC,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAE1C,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IACvD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IAC3D,OAAO,qBAAqB,EAAE,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,WAAmB,EAAE,SAAiB;IAC7D,OAAO,eAAe,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;AACrD,CAAC"}
@@ -1,9 +0,0 @@
1
- /**
2
- * Smart logo display module
3
- * Attempts to display iTerm2 image format logo, falls back to ASCII art
4
- */
5
- /**
6
- * Attempt to read and display logo file
7
- */
8
- export declare function printLogo(): Promise<void>;
9
- //# sourceMappingURL=logo.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logo.d.ts","sourceRoot":"","sources":["../../src/core/logo.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAoCH;;GAEG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CA+B/C"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"logo.js","sourceRoot":"","sources":["../../src/core/logo.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AAEvC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC;;GAEG;AACH,SAAS,kBAAkB,CAAC,IAAY;IACtC,MAAM,YAAY,GAAG,QAAQ,CAAC;QAC5B,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE,EAAK,YAAY;QAC7C,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,EAAG,WAAW;QAC5C,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE,CAAK,OAAO;KACzC,CAAC,CAAC;IACH,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB;IACvB,MAAM,OAAO,GAAG,2DAA2D,CAAC;IAC5E,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC1B,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;QACrD,MAAM,WAAW,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACpD,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACzB,gBAAgB,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,sDAAsD;IACxD,CAAC;IAED,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,wBAAwB,CAAC,CAAC;QAChE,MAAM,YAAY,GAAG,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACnE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACnB,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QACH,gBAAgB,EAAE,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC;QAC3C,gBAAgB,EAAE,CAAC;IACrB,CAAC;AACH,CAAC"}
@@ -1,14 +0,0 @@
1
- /**
2
- * Minimalist menu system
3
- * Modern @clack/prompts select() with emoji icons and hint text
4
- */
5
- export type MenuAction = 'events' | 'repair' | 'docs' | 'status' | 'links' | 'website' | 'github' | 'roadmap' | 'about' | 'language' | 'theme';
6
- /**
7
- * Display main menu — loops until user exits via Ctrl+C
8
- */
9
- export declare function showMainMenu(): Promise<void>;
10
- /**
11
- * Handle user action
12
- */
13
- export declare function runMenuAction(action: MenuAction): Promise<void>;
14
- //# sourceMappingURL=menu.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"menu.d.ts","sourceRoot":"","sources":["../../src/core/menu.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAgBH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,CAAC;AAmB/I;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAoBlD;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAcrE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"menu.js","sourceRoot":"","sources":["../../src/core/menu.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- /** Total visual width of a string (CJK characters count as 2). */
2
- export declare function visualWidth(str: string): number;
3
- /** Pad string to target visual width with trailing spaces. */
4
- export declare function padEndV(str: string, width: number): string;
5
- /** Truncate to visual width limit, appending '...' if cut. */
6
- export declare function truncate(str: string, maxWidth: number): string;
7
- //# sourceMappingURL=text.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/core/text.ts"],"names":[],"mappings":"AAiBA,kEAAkE;AAClE,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAI/C;AAED,8DAA8D;AAC9D,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED,8DAA8D;AAC9D,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAW9D"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"text.js","sourceRoot":"","sources":["../../src/core/text.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,SAAS,SAAS,CAAC,EAAU;IAC3B,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAClC,OAAO,CACL,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC,IAAK,cAAc;QACjD,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC,IAAK,wBAAwB;QAC3D,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC,IAAK,8BAA8B;QACjE,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC,IAAK,kBAAkB;QACrD,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC,IAAK,yBAAyB;QAC5D,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC,IAAK,mBAAmB;QACtD,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC,IAAK,+BAA+B;QAClE,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC,IAAK,0BAA0B;QAC7D,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC,IAAK,kBAAkB;QACrD,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC,CAAK,kBAAkB;KACtD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACZ,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,MAAM,EAAE,IAAI,GAAG;QAAE,CAAC,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,CAAC;AACX,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,OAAO,CAAC,GAAW,EAAE,KAAa;IAChD,MAAM,GAAG,GAAG,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IACrC,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAC/C,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,QAAQ,CAAC,GAAW,EAAE,QAAgB;IACpD,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,QAAQ;QAAE,OAAO,GAAG,CAAC;IAC7C,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;QACrB,MAAM,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;QACzB,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,GAAG,CAAC;YAAE,MAAM;QACjC,CAAC,IAAI,EAAE,CAAC;QACR,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC;IACjB,CAAC;IACD,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC;AACjC,CAAC"}
package/dist/core/ui.d.ts DELETED
@@ -1,38 +0,0 @@
1
- /**
2
- * Minimalist UI component library
3
- * Delegates to @clack/prompts for modern terminal output
4
- */
5
- /**
6
- * Display success message
7
- */
8
- export declare function success(msg: string): void;
9
- /**
10
- * Display error message
11
- */
12
- export declare function error(msg: string): void;
13
- /**
14
- * Display info message
15
- */
16
- export declare function info(msg: string): void;
17
- /**
18
- * Display warning message
19
- */
20
- export declare function warning(msg: string): void;
21
- /**
22
- * Display divider line
23
- */
24
- export declare function printDivider(): void;
25
- /**
26
- * Clear screen
27
- */
28
- export declare function clearScreen(): void;
29
- /**
30
- * Print empty lines
31
- */
32
- export declare function printNewLine(count?: number): void;
33
- /**
34
- * Create and start a real async spinner.
35
- * Caller is responsible for calling .stop(msg) or .stop(msg, 1) on error.
36
- */
37
- export declare function createSpinner(msg: string): import("@clack/prompts").SpinnerResult;
38
- //# sourceMappingURL=ui.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/core/ui.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH;;GAEG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEzC;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEvC;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEtC;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEzC;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAInC;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAIlC;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,GAAE,MAAU,GAAG,IAAI,CAIpD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,0CAIxC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/core/ui.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,GAAG,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,GAAW;IACjC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,KAAK,CAAC,GAAW;IAC/B,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,IAAI,CAAC,GAAW;IAC9B,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,GAAW;IACjC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IACnD,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW;IACzB,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACzB,OAAO,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,QAAgB,CAAC;IAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,MAAM,CAAC,GAAG,YAAY,EAAE,CAAC;IACzB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACb,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -1,8 +0,0 @@
1
- /**
2
- * Vim keybindings support
3
- * Intercepts raw data events and replaces vim keys with terminal escape sequences
4
- * before readline processes them. This avoids patching the keypress layer which
5
- * breaks in Node.js v25+ (emitKeys generator crash).
6
- */
7
- export declare function enableVimKeys(): void;
8
- //# sourceMappingURL=vim-keys.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vim-keys.d.ts","sourceRoot":"","sources":["../../src/core/vim-keys.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH,wBAAgB,aAAa,IAAI,IAAI,CAgBpC"}