kiku-agent 1.0.9 → 1.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,12 +1,12 @@
1
1
  export const COMMAND_DEFINITIONS = Object.freeze([
2
2
  { name: '/help', usage: '/help [command]', desc: 'Show all commands or details for one command', insert: '/help ' },
3
3
  { name: '/history', usage: '/history [n|search|summary|clear]', desc: 'View, search, or summarize chat history', insert: '/history ' },
4
- { name: '/session', usage: '/session [info|summary|list|export|clear]', desc: 'Manage or summarize the current session', insert: '/session ' },
4
+ { name: '/session', usage: '/session [info|summary|list|load <id>|export|clear]', desc: 'Manage, restore, or summarize conversation sessions', insert: '/session ' },
5
5
  { name: '/thinking', usage: '/thinking [show|hide|toggle]', desc: 'Control reasoning visibility', insert: '/thinking ' },
6
6
  { name: '/details', usage: '/details [Qn] [overview|answer|thinking|tools|tool n]', desc: 'Inspect query diagnostics (F2 opens latest overview)', insert: '/details ' },
7
- { name: '/copy', usage: '/copy [Qn] [answer|thinking|tools|tool n|all|markdown]', desc: 'Copy full untruncated model answer, thinking, or diagnostics to clipboard', insert: '/copy ' },
7
+ { name: '/copy', usage: '/copy [session|[Qn] [answer|thinking|tools|tool n|all|json]]', desc: 'Copy full session transcript, answer, thinking, or tools to clipboard', insert: '/copy ' },
8
8
  { name: '/lang', usage: '/lang [th|zh|en|auto]', desc: 'Set the response language', insert: '/lang ' },
9
- { name: '/theme', usage: '/theme [name|list|current|reset]', desc: 'View or change the terminal color theme', insert: '/theme ' },
9
+ { name: '/theme', usage: '/theme [name|list|current|next|prev|reset]', desc: 'View or change the terminal color theme', insert: '/theme ' },
10
10
  { name: '/mem', usage: '/mem [add|del|search|list|topics|summary|import|export|clear]', desc: 'Manage and summarize long-term memory', insert: '/mem ' },
11
11
  { name: '/subagent', usage: '/subagent <research task>', desc: 'Run a bounded Ju Jingyi research subagent', insert: '/subagent ' },
12
12
  { name: '/research', usage: '/research <question|status|last|sources|cancel>', desc: 'Run coordinated multi-source Ju Jingyi research', insert: '/research ' },
@@ -23,7 +23,7 @@ export const COMMAND_DEFINITIONS = Object.freeze([
23
23
  { name: '/jobs', usage: '/jobs [list|show|cancel|clear]', desc: 'Inspect and control tracked agent jobs', insert: '/jobs ' },
24
24
  { name: '/discover', usage: '/discover [drama|song|stage|photo]', desc: 'Discover something from the catalog', insert: '/discover ' },
25
25
  { name: '/stats', usage: '/stats', desc: 'Show the content database overview', insert: '/stats' },
26
- { name: '/provider', usage: '/provider [list|use <name> [model]|models [name]|info <name>|test|setkey <key>|status]', desc: 'Manage AI providers (OpenAI, Gemini, Groq, DeepSeek, OpenRouter, LM Studio)', insert: '/provider ' },
26
+ { name: '/provider', usage: '/provider [list|use <name> [model]|models [name]|setkey [provider] <key>|info <name>|test|status]', desc: 'Manage AI providers (OpenAI, Gemini, Groq, DeepSeek, OpenRouter, LM Studio)', insert: '/provider ' },
27
27
  { name: '/model', usage: '/model [status|list|recommend|use <id>|reconnect]', desc: 'Inspect, recommend, or switch active AI model', insert: '/model ' },
28
28
  { name: '/mcp', usage: '/mcp [status|list|connect <name> <url|cmd>|disconnect <name>|remove <name>|reconnect [all]|save|reload|tools]', desc: 'Manage persistent Model Context Protocol connections', insert: '/mcp ' },
29
29
  { name: '/ping', usage: '/ping', desc: 'Check active model server latency', insert: '/ping' },
@@ -65,12 +65,14 @@ export const COMMAND_DEFINITIONS = Object.freeze([
65
65
  export const COMMAND_NAMES = Object.freeze(COMMAND_DEFINITIONS.map(command => command.name));
66
66
 
67
67
  export const SUB_COMMANDS = Object.freeze({
68
+ '/help': ['find', 'provider', 'model', 'session', 'details', 'copy', 'mcp', 'mem', 'research', 'verify', 'suggestion', 'skill', 'theme', 'update', 'quiz', 'key', 'play', 'doctor'],
68
69
  '/mem': ['add <fact>', 'search <query>', 'list', 'topics', 'summary', 'del <id>', 'import <path>', 'export', 'clear'],
69
70
  '/quiz': ['lang th', 'lang en', 'lang zh'],
70
71
  '/key': ['show', 'apply <key>', 'clear'],
71
- '/subagent': ['<research task>'],
72
+ '/subagent': ['<research task>', 'status', 'last'],
72
73
  '/research': ['<question>', 'status', 'last', 'sources', 'cancel'],
73
74
  '/verify': ['<claim>'],
75
+ '/sources': ['show'],
74
76
  '/suggestion': ['list', 'run 1', 'run all', 'auto', 'refresh', 'topic drama', 'topic music', 'topic fashion', 'topic 2026'],
75
77
  '/skill': ['learn <instruction>', 'list', 'del <id>', 'on', 'off', 'clear'],
76
78
  '/find': ['--type work', '--type song', '--type role', '--type brand', '--type award', '--type photo', '--type stage', '--year 2026', '--limit 8'],
@@ -79,21 +81,98 @@ export const SUB_COMMANDS = Object.freeze({
79
81
  '/news': ['--days 7', '--days 30', '--official-only', '<topic> --days 14'],
80
82
  '/jobs': ['list', 'show <id>', 'cancel <id>', 'clear'],
81
83
  '/discover': ['drama', 'song', 'stage', 'photo', 'song --mood calm', 'stage --year 2025'],
82
- '/provider': ['list', 'status', 'models', 'models openai', 'models gemini', 'models groq', 'models deepseek', 'models openrouter', 'models lmstudio', 'use openai', 'use openrouter', 'use groq', 'use deepseek', 'use gemini', 'use lmstudio', 'use custom', 'info', 'test', 'setkey <key>'],
84
+ '/stats': ['overview'],
85
+ '/provider': [
86
+ 'list',
87
+ 'status',
88
+ 'models',
89
+ 'models groq',
90
+ 'models openrouter',
91
+ 'models openai',
92
+ 'models gemini',
93
+ 'models deepseek',
94
+ 'models lmstudio',
95
+ 'use groq',
96
+ 'use openrouter',
97
+ 'use openai',
98
+ 'use gemini',
99
+ 'use deepseek',
100
+ 'use lmstudio',
101
+ 'use custom',
102
+ 'setkey <key>',
103
+ 'setkey groq <key>',
104
+ 'setkey openrouter <key>',
105
+ 'setkey openai <key>',
106
+ 'setkey gemini <key>',
107
+ 'setkey deepseek <key>',
108
+ 'info',
109
+ 'info groq',
110
+ 'info openrouter',
111
+ 'info openai',
112
+ 'info gemini',
113
+ 'info deepseek',
114
+ 'info lmstudio',
115
+ 'test',
116
+ 'test groq',
117
+ 'test openrouter',
118
+ 'test openai',
119
+ 'test gemini',
120
+ 'test deepseek',
121
+ 'test lmstudio'
122
+ ],
83
123
  '/model': ['status', 'list', 'recommend', 'use <model-id>', 'reconnect'],
84
124
  '/mcp': ['status', 'list', 'tools', 'connect <name> <url>', 'disconnect <name>', 'remove <name>', 'reconnect [all]', 'save', 'reload'],
125
+ '/ping': ['status'],
126
+ '/config': ['status'],
127
+ '/doctor': ['check'],
128
+ '/prompt': ['show'],
129
+ '/version': ['show'],
130
+ '/update': ['check', 'install', 'install next', 'install canary', 'channel', 'channel latest', 'channel next', 'channel canary', 'rollback', 'help'],
131
+ '/system': ['info'],
132
+ '/gpu': ['status'],
133
+ '/about': ['info'],
134
+ '/ads': ['next'],
135
+ '/gallery': ['show'],
136
+ '/retry': ['again'],
137
+ '/cancel': ['stop'],
138
+ '/clear': ['now'],
139
+ '/save': ['markdown'],
85
140
  '/lang': ['th', 'zh', 'en', 'auto'],
86
- '/theme': ['list', 'current', 'sakura', 'midnight', 'ocean', 'forest', 'sunset', 'monochrome', 'reset'],
141
+ '/theme': ['next', 'prev', 'list', 'current', 'sakura', 'midnight', 'ocean', 'forest', 'sunset', 'monochrome', 'reset'],
87
142
  '/thinking': ['show', 'hide', 'toggle'],
88
143
  '/details': ['latest', 'overview', 'answer', 'thinking', 'tools', 'tool <n>', 'all', 'markdown', 'Q1 overview', 'Q1 tool 1'],
89
- '/copy': ['answer', 'thinking', 'tools', 'tool 1', 'overview', 'all', 'markdown', 'Q1 answer', 'Q1 thinking', 'Q1 all'],
90
- '/session': ['info', 'summary', 'list', 'export', 'clear'],
144
+ '/copy': ['session', 'session markdown', 'session json', 'session text', 'answer', 'thinking', 'tools', 'tool 1', 'overview', 'all', 'markdown', 'json', 'Q1 answer', 'Q1 thinking', 'Q1 tools', 'Q1 all', 'Q1 json'],
145
+ '/session': ['info', 'summary', 'list', 'load <id>', 'export', 'export markdown', 'export json', 'export text', 'copy', 'clear'],
91
146
  '/history': ['10', '20', '50', 'search <query>', 'summary', 'clear'],
147
+ '/play': ['<song name>', 'In Blossom OST', 'Rain Love', 'Ginkgo', '恋爱告急', '叹云兮'],
148
+ '/stop': ['now'],
149
+ '/pause': ['now'],
150
+ '/resume': ['now'],
151
+ '/next': ['track'],
152
+ '/prev': ['track'],
153
+ '/mute': ['now'],
154
+ '/unmute': ['now'],
155
+ '/add': ['<song name>', 'In Blossom OST', 'Rain Love', 'Ginkgo'],
156
+ '/remove': ['1', '2', '3'],
157
+ '/clearqueue': ['now'],
158
+ '/search': ['<query>', 'Ju Jingyi OST', 'Ju Jingyi MV', '鞠婧祎'],
159
+ '/current': ['status'],
92
160
  '/queue': ['clear'],
93
- '/update': ['check', 'install', 'install next', 'install canary', 'channel', 'channel latest', 'channel next', 'channel canary', 'rollback', 'help'],
161
+ '/login': ['browser'],
162
+ '/ytstatus': ['check'],
163
+ '/exit': ['quit'],
94
164
  });
95
165
 
96
166
  export const COMMAND_DETAILS = Object.freeze({
167
+ '/help': {
168
+ summary: 'Display comprehensive help guide, shortcuts, or in-depth documentation for any command',
169
+ usage: '/help [command]',
170
+ subcommands: [
171
+ { cmd: '[command]', desc: 'Show detailed parameter specs, subcommands, and examples for a specific command', example: '/help provider' },
172
+ { cmd: 'all', desc: 'Display complete indexed list of all 60+ commands', example: '/help' },
173
+ ],
174
+ examples: ['/help', '/help provider', '/help session', '/help research', '/help copy'],
175
+ },
97
176
  '/find': {
98
177
  summary: 'Search works, songs, roles, brands, awards, photos, and performances without an active chat model',
99
178
  usage: '/find <query> [--type <type>] [--year YYYY] [--limit 1-20]',
@@ -199,25 +278,45 @@ export const COMMAND_DETAILS = Object.freeze({
199
278
  ],
200
279
  },
201
280
  '/provider': {
202
- summary: 'Manage AI model providers (OpenAI, Gemini, Groq, DeepSeek, OpenRouter, LM Studio)',
203
- usage: '/provider [list | status | use <name> [model] | models [name] | info <name> | test | setkey <key>]',
281
+ summary: 'Manage AI model providers (OpenAI, Gemini, Groq, DeepSeek, OpenRouter, LM Studio) and persist API keys',
282
+ usage: '/provider [list | status | use <name> [model] | models [name] | setkey [provider] <key> | info [name] | test [name]]',
204
283
  subcommands: [
205
284
  { cmd: 'list', desc: 'List all supported providers, availability, and active status', example: '/provider list' },
206
285
  { cmd: 'status', desc: 'Show detailed connection metrics, latency, and credentials for active provider', example: '/provider status' },
207
- { cmd: 'use <name> [model]', desc: 'Switch active AI provider and optionally specify initial model', example: '/provider use gemini gemini-3.7-flash' },
286
+ { cmd: 'use <name> [model]', desc: 'Switch active AI provider and optionally specify initial model', example: '/provider use groq' },
208
287
  { cmd: 'models [name]', desc: 'Fetch live model catalog from the specified or active provider API', example: '/provider models groq' },
209
- { cmd: 'setkey <key>', desc: 'Configure and persist API key for the active provider', example: '/provider setkey sk-...' },
210
- { cmd: 'test', desc: 'Perform a lightweight ping/test call to verify provider responsiveness', example: '/provider test' },
211
- { cmd: 'info <name>', desc: 'Show pricing, context window, token limits, and documentation for a provider', example: '/provider info deepseek' },
288
+ { cmd: 'setkey <key>', desc: 'Configure and persist API key for the active provider', example: '/provider setkey gsk_...' },
289
+ { cmd: 'setkey groq <key>', desc: 'Configure and persist API key specifically for Groq Cloud', example: '/provider setkey groq gsk_...' },
290
+ { cmd: 'setkey openrouter <key>', desc: 'Configure and persist API key specifically for OpenRouter', example: '/provider setkey openrouter sk-or-v1-...' },
291
+ { cmd: 'setkey openai <key>', desc: 'Configure and persist API key specifically for OpenAI', example: '/provider setkey openai sk-...' },
292
+ { cmd: 'setkey gemini <key>', desc: 'Configure and persist API key specifically for Google Gemini', example: '/provider setkey gemini AIzaSy...' },
293
+ { cmd: 'setkey deepseek <key>', desc: 'Configure and persist API key specifically for DeepSeek', example: '/provider setkey deepseek sk-...' },
294
+ { cmd: 'test [name]', desc: 'Perform a lightweight ping/test call to verify provider responsiveness', example: '/provider test groq' },
295
+ { cmd: 'info [name]', desc: 'Show pricing, context window, token limits, and documentation for a provider', example: '/provider info groq' },
212
296
  ],
213
297
  examples: [
214
298
  '/provider list',
215
- '/provider use gemini',
216
- '/provider use openai gpt-5.6-luna',
217
- '/provider setkey YOUR_API_KEY',
299
+ '/provider setkey groq gsk_...',
300
+ '/provider setkey openrouter sk-or-v1-...',
301
+ '/provider use groq',
302
+ '/provider test groq',
218
303
  '/provider models',
219
304
  ],
220
305
  },
306
+ '/key': {
307
+ summary: 'Manage your Developer VIP API Key (earned via /quiz or custom seed)',
308
+ usage: '/key [show | apply <key> | clear]',
309
+ subcommands: [
310
+ { cmd: 'show', desc: 'Display active Developer VIP key, rate limit tiers, and usage format', example: '/key show' },
311
+ { cmd: 'apply <key>', desc: 'Save and activate a Developer VIP API key for higher rate limits', example: '/key apply kiku_vip_sk_...' },
312
+ { cmd: 'clear', desc: 'Remove stored Developer VIP key from local preferences', example: '/key clear' },
313
+ ],
314
+ examples: [
315
+ '/key show',
316
+ '/key apply kiku_vip_sk_test123',
317
+ '/key clear',
318
+ ],
319
+ },
221
320
  '/model': {
222
321
  summary: 'Inspect, recommend, or switch active AI model',
223
322
  usage: '/model [status | list | recommend | use <model-id> | reconnect]',
@@ -263,6 +362,14 @@ export const COMMAND_DETAILS = Object.freeze({
263
362
  '/verify Ju Jingyi will star in a new 2026 historical drama',
264
363
  ],
265
364
  },
365
+ '/sources': {
366
+ summary: 'Display full citation list, verified URLs, and media links from the most recent research job',
367
+ usage: '/sources',
368
+ subcommands: [
369
+ { cmd: '', desc: 'Show all citations, reference domains, and validated external sources from the latest research', example: '/sources' },
370
+ ],
371
+ examples: ['/sources'],
372
+ },
266
373
  '/quiz': {
267
374
  summary: 'Interactive 15-question Ju Jingyi quiz to claim a Developer VIP Key (1,000 req/min)',
268
375
  usage: '/quiz [lang <th|en|zh>]',
@@ -278,23 +385,9 @@ export const COMMAND_DETAILS = Object.freeze({
278
385
  '/quiz lang en',
279
386
  ],
280
387
  },
281
- '/key': {
282
- summary: 'View, apply, or clear your Developer VIP API Key',
283
- usage: '/key [show | apply <key> | clear]',
284
- subcommands: [
285
- { cmd: 'show', desc: 'Display your current stored VIP key', example: '/key show' },
286
- { cmd: 'apply <key>', desc: 'Manually save a VIP key for use in API requests', example: '/key apply kiku_vip_sk_abc123' },
287
- { cmd: 'clear', desc: 'Remove the stored VIP key', example: '/key clear' },
288
- ],
289
- examples: [
290
- '/key',
291
- '/key apply kiku_vip_sk_abc123',
292
- '/key clear',
293
- ],
294
- },
295
388
  '/subagent': {
296
389
  summary: 'Spawn an isolated iterative research subagent to investigate a specific task or subtopic',
297
- usage: '/subagent <task | status | last | tools>',
390
+ usage: '/subagent <task | status | last>',
298
391
  subcommands: [
299
392
  { cmd: '<task>', desc: 'Dispatch dedicated bounded subagent with iterative tool execution', example: '/subagent Search all OST songs sung by Ju Jingyi in 2024-2026' },
300
393
  { cmd: 'status / last', desc: 'Inspect tool calls and synthesized evidence from the previous subagent', example: '/subagent status' },
@@ -357,18 +450,22 @@ export const COMMAND_DETAILS = Object.freeze({
357
450
  ],
358
451
  },
359
452
  '/copy': {
360
- summary: 'Copy complete untruncated model answer, thinking trace, tools, or markdown to system clipboard',
361
- usage: '/copy [Qn] [answer | thinking | tools | tool <n> | all | markdown | overview]',
453
+ summary: 'Copy complete conversation session, model answer, thinking trace, tools, or markdown to system clipboard',
454
+ usage: '/copy [session [markdown|json|text] | [Qn] [answer|thinking|tools|tool <n>|all|markdown|json]]',
362
455
  subcommands: [
456
+ { cmd: 'session [format]', desc: 'Copy entire conversation transcript (markdown, json, or text) to clipboard', example: '/copy session' },
363
457
  { cmd: '[Qn] [answer]', desc: 'Copy complete untruncated model answer to system clipboard (default)', example: '/copy' },
364
458
  { cmd: 'thinking', desc: 'Copy raw chain-of-thought and model reasoning', example: '/copy thinking' },
365
459
  { cmd: 'tools', desc: 'Copy JSON tool executions and arguments', example: '/copy tools' },
366
460
  { cmd: 'tool <n>', desc: 'Copy raw JSON result of specific tool call N', example: '/copy tool 1' },
367
461
  { cmd: 'all / markdown', desc: 'Copy entire Q&A transcript in clean Markdown format', example: '/copy all' },
462
+ { cmd: 'json', desc: 'Copy question diagnostics as JSON', example: '/copy json' },
368
463
  { cmd: 'overview', desc: 'Copy diagnostic overview and metadata', example: '/copy overview' },
369
464
  ],
370
465
  examples: [
371
466
  '/copy',
467
+ '/copy session',
468
+ '/copy session json',
372
469
  '/copy thinking',
373
470
  '/copy Q2 answer',
374
471
  '/copy tool 1',
@@ -377,8 +474,10 @@ export const COMMAND_DETAILS = Object.freeze({
377
474
  },
378
475
  '/theme': {
379
476
  summary: 'View or switch the terminal color theme dynamically',
380
- usage: '/theme [sakura | midnight | ocean | forest | sunset | monochrome | list | current | reset]',
477
+ usage: '/theme [sakura | midnight | ocean | forest | sunset | monochrome | next | prev | list | current | reset]',
381
478
  subcommands: [
479
+ { cmd: 'next', desc: 'Rotate to the next available theme palette', example: '/theme next' },
480
+ { cmd: 'prev', desc: 'Rotate to the previous available theme palette', example: '/theme prev' },
382
481
  { cmd: 'list', desc: 'Preview all available color theme palettes and descriptions', example: '/theme list' },
383
482
  { cmd: 'current', desc: 'Show currently active theme and color samples', example: '/theme current' },
384
483
  { cmd: '<name>', desc: 'Switch theme instantly (sakura, midnight, ocean, forest, sunset, monochrome)', example: '/theme midnight' },
@@ -408,19 +507,25 @@ export const COMMAND_DETAILS = Object.freeze({
408
507
  ],
409
508
  },
410
509
  '/session': {
411
- summary: 'Manage current conversation session, storage, and snapshots',
412
- usage: '/session [info | list | export | clear]',
510
+ summary: 'Manage, export, copy, restore, or summarize conversation sessions and history snapshots',
511
+ usage: '/session [info | summary | list | load <id> | export [format] | copy [format] | clear]',
413
512
  subcommands: [
414
- { cmd: 'info', desc: 'Display session ID, active duration, message count, and turn stats', example: '/session info' },
513
+ { cmd: 'info', desc: 'Display session ID, active duration, message count, tool breakdown, and turn stats', example: '/session info' },
415
514
  { cmd: 'summary', desc: 'Synthesize an AI analytical summary of the active session', example: '/session summary' },
416
515
  { cmd: 'list', desc: 'List all saved conversation sessions on disk', example: '/session list' },
417
- { cmd: 'export', desc: 'Export full conversation session history to JSON', example: '/session export' },
516
+ { cmd: 'load <id>', desc: 'Restore and resume an archived session by ID or list number', example: '/session load 1' },
517
+ { cmd: 'export [format]', desc: 'Export full conversation session history to Markdown (.md), JSON (.json), or Text (.txt)', example: '/session export markdown' },
518
+ { cmd: 'copy [format]', desc: 'Copy entire active session transcript directly to system clipboard', example: '/session copy' },
418
519
  { cmd: 'clear', desc: 'Archive current conversation session and reset history', example: '/session clear' },
419
520
  ],
420
521
  examples: [
421
522
  '/session info',
422
523
  '/session summary',
524
+ '/session export markdown',
525
+ '/session export json',
526
+ '/session copy',
423
527
  '/session list',
528
+ '/session load 1',
424
529
  '/session clear',
425
530
  ],
426
531
  },
@@ -536,6 +641,230 @@ export const COMMAND_DETAILS = Object.freeze({
536
641
  '/play 恋爱告急',
537
642
  ],
538
643
  },
644
+ '/stats': {
645
+ summary: 'Show comprehensive content metrics, database records, and catalog statistics',
646
+ usage: '/stats',
647
+ subcommands: [
648
+ { cmd: '', desc: 'Display total counts for dramas, discography, brands, awards, and gallery photos', example: '/stats' },
649
+ ],
650
+ examples: ['/stats'],
651
+ },
652
+ '/ping': {
653
+ summary: 'Measure live network latency and responsiveness to active LLM inference server',
654
+ usage: '/ping',
655
+ subcommands: [
656
+ { cmd: '', desc: 'Send ping request to active AI model endpoint and report round-trip latency in ms', example: '/ping' },
657
+ ],
658
+ examples: ['/ping'],
659
+ },
660
+ '/config': {
661
+ summary: 'Display current runtime configuration, active provider, paths, and environment settings',
662
+ usage: '/config',
663
+ subcommands: [
664
+ { cmd: '', desc: 'Inspect active LLM provider, base URL, model name, storage directories, and MCP status', example: '/config' },
665
+ ],
666
+ examples: ['/config'],
667
+ },
668
+ '/doctor': {
669
+ summary: 'Run environment diagnostics, dependency verification, and feature health check',
670
+ usage: '/doctor',
671
+ subcommands: [
672
+ { cmd: '', desc: 'Check Node version, LM Studio server, yt-dlp, ffmpeg, MCP server, and disk permissions', example: '/doctor' },
673
+ ],
674
+ examples: ['/doctor'],
675
+ },
676
+ '/prompt': {
677
+ summary: 'Preview the full system prompt and active persona instructions sent to the AI',
678
+ usage: '/prompt',
679
+ subcommands: [
680
+ { cmd: '', desc: 'Inspect the system persona, memory context, and domain rules passed to the LLM', example: '/prompt' },
681
+ ],
682
+ examples: ['/prompt'],
683
+ },
684
+ '/version': {
685
+ summary: 'Display installed Kiku Agent release version, build channel, and package metadata',
686
+ usage: '/version',
687
+ subcommands: [
688
+ { cmd: '', desc: 'Show semantic version, git commit, Node runtime version, and release channel', example: '/version' },
689
+ ],
690
+ examples: ['/version'],
691
+ },
692
+ '/system': {
693
+ summary: 'Display host operating system, CPU architecture, memory usage, and Node process stats',
694
+ usage: '/system',
695
+ subcommands: [
696
+ { cmd: '', desc: 'Show platform OS, total RAM, heap memory allocation, process uptime, and architecture', example: '/system' },
697
+ ],
698
+ examples: ['/system'],
699
+ },
700
+ '/about': {
701
+ summary: 'Display background information, credits, architecture overview, and project links',
702
+ usage: '/about',
703
+ subcommands: [
704
+ { cmd: '', desc: 'Show project mission, tech stack overview, creator credits, and documentation links', example: '/about' },
705
+ ],
706
+ examples: ['/about'],
707
+ },
708
+ '/ads': {
709
+ summary: 'Display community sponsor card and featured ecosystem highlights',
710
+ usage: '/ads',
711
+ subcommands: [
712
+ { cmd: '', desc: 'Cycle and display the next sponsor spotlight card in the terminal', example: '/ads' },
713
+ ],
714
+ examples: ['/ads'],
715
+ },
716
+ '/gallery': {
717
+ summary: 'Render full-color terminal graphic portraits of Ju Jingyi from the asset gallery',
718
+ usage: '/gallery',
719
+ subcommands: [
720
+ { cmd: '', desc: 'Display a high-resolution downsampled ANSI image portrait in the terminal', example: '/gallery' },
721
+ ],
722
+ examples: ['/gallery'],
723
+ },
724
+ '/retry': {
725
+ summary: 'Re-execute the previous query with identical prompt parameters',
726
+ usage: '/retry',
727
+ subcommands: [
728
+ { cmd: '', desc: 'Resend the previous question to the active model for a fresh response', example: '/retry' },
729
+ ],
730
+ examples: ['/retry'],
731
+ },
732
+ '/clear': {
733
+ summary: 'Archive active conversation session and reset terminal screen buffer',
734
+ usage: '/clear',
735
+ subcommands: [
736
+ { cmd: '', desc: 'Archive current session to disk, reset message history, and clear viewport', example: '/clear' },
737
+ ],
738
+ examples: ['/clear'],
739
+ },
740
+ '/save': {
741
+ summary: 'Export the full active conversation transcript to a formatted Markdown file',
742
+ usage: '/save',
743
+ subcommands: [
744
+ { cmd: '', desc: 'Write complete conversation history, reasoning, and tools to an exported Markdown file', example: '/save' },
745
+ ],
746
+ examples: ['/save'],
747
+ },
748
+ '/stop': {
749
+ summary: 'Stop active background audio stream and clear playback process',
750
+ usage: '/stop',
751
+ subcommands: [
752
+ { cmd: '', desc: 'Immediately terminate music audio playback stream', example: '/stop' },
753
+ ],
754
+ examples: ['/stop'],
755
+ },
756
+ '/pause': {
757
+ summary: 'Pause active YouTube music playback stream',
758
+ usage: '/pause',
759
+ subcommands: [
760
+ { cmd: '', desc: 'Pause current audio stream without losing playback position', example: '/pause' },
761
+ ],
762
+ examples: ['/pause'],
763
+ },
764
+ '/resume': {
765
+ summary: 'Resume paused YouTube audio playback',
766
+ usage: '/resume',
767
+ subcommands: [
768
+ { cmd: '', desc: 'Continue playing paused audio stream from current position', example: '/resume' },
769
+ ],
770
+ examples: ['/resume'],
771
+ },
772
+ '/next': {
773
+ summary: 'Skip to the next song in the music playback queue',
774
+ usage: '/next',
775
+ subcommands: [
776
+ { cmd: '', desc: 'Skip current audio track and begin playing next queued track', example: '/next' },
777
+ ],
778
+ examples: ['/next'],
779
+ },
780
+ '/prev': {
781
+ summary: 'Return to and replay the previous song in the music queue',
782
+ usage: '/prev',
783
+ subcommands: [
784
+ { cmd: '', desc: 'Jump back to the previous track in playback history', example: '/prev' },
785
+ ],
786
+ examples: ['/prev'],
787
+ },
788
+ '/mute': {
789
+ summary: 'Mute music audio playback output',
790
+ usage: '/mute',
791
+ subcommands: [
792
+ { cmd: '', desc: 'Silence audio output while keeping playback stream active', example: '/mute' },
793
+ ],
794
+ examples: ['/mute'],
795
+ },
796
+ '/unmute': {
797
+ summary: 'Restore music audio playback volume output',
798
+ usage: '/unmute',
799
+ subcommands: [
800
+ { cmd: '', desc: 'Restore audio volume output to audible level', example: '/unmute' },
801
+ ],
802
+ examples: ['/unmute'],
803
+ },
804
+ '/add': {
805
+ summary: 'Add a YouTube music track or OST song to the playback queue',
806
+ usage: '/add <song_name_or_url>',
807
+ subcommands: [
808
+ { cmd: '<song>', desc: 'Search YouTube and enqueue song for playback', example: '/add 恋爱告急' },
809
+ ],
810
+ examples: ['/add In Blossom OST', '/add 恋爱告急'],
811
+ },
812
+ '/remove': {
813
+ summary: 'Remove a specific track index from the music playback queue',
814
+ usage: '/remove <index>',
815
+ subcommands: [
816
+ { cmd: '<index>', desc: 'Remove track by its position number in /queue', example: '/remove 2' },
817
+ ],
818
+ examples: ['/remove 1', '/remove 3'],
819
+ },
820
+ '/clearqueue': {
821
+ summary: 'Clear all pending tracks from the music playback queue',
822
+ usage: '/clearqueue',
823
+ subcommands: [
824
+ { cmd: '', desc: 'Empty all queued songs while maintaining current track', example: '/clearqueue' },
825
+ ],
826
+ examples: ['/clearqueue'],
827
+ },
828
+ '/search': {
829
+ summary: 'Search YouTube video and audio tracks for Ju Jingyi songs',
830
+ usage: '/search <query>',
831
+ subcommands: [
832
+ { cmd: '<query>', desc: 'Search YouTube for tracks and display title, duration, and direct links', example: '/search In Blossom OST' },
833
+ ],
834
+ examples: ['/search 鞠婧祎', '/search In Blossom OST'],
835
+ },
836
+ '/current': {
837
+ summary: 'Show metadata, duration, and status for the currently playing audio track',
838
+ usage: '/current',
839
+ subcommands: [
840
+ { cmd: '', desc: 'Display track title, elapsed playback duration, buffer state, and YouTube link', example: '/current' },
841
+ ],
842
+ examples: ['/current'],
843
+ },
844
+ '/login': {
845
+ summary: 'Authenticate YouTube session in the browser to enable age-gated music playback',
846
+ usage: '/login',
847
+ subcommands: [
848
+ { cmd: '', desc: 'Open interactive browser session to save YouTube cookies for seamless streaming', example: '/login' },
849
+ ],
850
+ examples: ['/login'],
851
+ },
852
+ '/ytstatus': {
853
+ summary: 'Show YouTube authentication, cookie source, and streaming player status',
854
+ usage: '/ytstatus',
855
+ subcommands: [
856
+ { cmd: '', desc: 'Check cookie availability, browser profile connection, and playback backend health', example: '/ytstatus' },
857
+ ],
858
+ examples: ['/ytstatus'],
859
+ },
860
+ '/exit': {
861
+ summary: 'Archive active conversation session and exit Kiku Agent CLI',
862
+ usage: '/exit',
863
+ subcommands: [
864
+ { cmd: '', desc: 'Safely save active session state to disk and close terminal application', example: '/exit' },
865
+ ],
866
+ examples: ['/exit'],
867
+ },
539
868
  });
540
869
 
541
870
  export function findCommandDefinition(name) {