kiku-agent 1.0.11 → 1.2.0
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/README.md +300 -495
- package/package.json +12 -11
- package/public/fonts/GoogleSans-Bold.ttf +0 -0
- package/public/fonts/GoogleSans-Bold.woff2 +0 -0
- package/public/fonts/GoogleSans-BoldItalic.ttf +0 -0
- package/public/fonts/GoogleSans-Italic.ttf +0 -0
- package/public/fonts/GoogleSans-Latin-400.woff2 +0 -0
- package/public/fonts/GoogleSans-Latin-500.woff2 +0 -0
- package/public/fonts/GoogleSans-Latin-600.woff2 +0 -0
- package/public/fonts/GoogleSans-Latin-700.woff2 +0 -0
- package/public/fonts/GoogleSans-Medium.ttf +0 -0
- package/public/fonts/GoogleSans-Medium.woff2 +0 -0
- package/public/fonts/GoogleSans-Regular.ttf +0 -0
- package/public/fonts/GoogleSans-Regular.woff2 +0 -0
- package/public/fonts/GoogleSans-Thai-400.woff2 +0 -0
- package/public/fonts/GoogleSans-Thai-500.woff2 +0 -0
- package/public/fonts/GoogleSans-Thai-600.woff2 +0 -0
- package/public/fonts/GoogleSans-Thai-700.woff2 +0 -0
- package/public/fonts/NotoSansThai-Bold.woff2 +0 -0
- package/public/fonts/NotoSansThai-Regular.woff2 +0 -0
- package/public/fonts/google-sans-official.css +900 -0
- package/public/images/0040jbadgy1id6am4yxqfj61s82dn1kx02.jpg +0 -0
- package/public/images/0040jbadgy1id6am708pbj62c0340qv602.jpg +0 -0
- package/public/images/0040jbadgy1id6amb81uqj62c0340x6q02.jpg +0 -0
- package/public/images/0040jbadgy1id6amcqte3j62c0340qv602.jpg +0 -0
- package/public/images/0040jbadgy1id6amdg3xcj62b232wqv502.jpg +0 -0
- package/public/images/0040jbadgy1id6amexv23j620v2pau0x02.jpg +0 -0
- package/public/images/0040jbadly8icq3if7twwj60qy0qy0uc02.jpg +0 -0
- package/public/images/008ET7Legy1ig9s89nri5j30i20n1gn4.jpg +0 -0
- package/public/images/008ET7Legy1ig9s8a2lmlj30i20ny409.jpg +0 -0
- package/public/images/008ET7Legy1ig9s8ay1hsj30i20nk3zv.jpg +0 -0
- package/public/images/008ET7Legy1ig9s8bab6sj30i20o7go1.jpg +0 -0
- package/public/images/008ET7Legy1ig9s8blqsxj30i20oiq4r.jpg +0 -0
- package/public/images/008ET7Legy1ig9s8cbxkzj30i20mxmzh.jpg +0 -0
- package/public/images/douyin-update/thumbs//346/212/226/351/237/2632026820-399915.jpg +0 -0
- package/public/images/douyin-update/thumbs//346/212/226/351/237/2632026820-424041.jpg +0 -0
- package/public/images/douyin-update/thumbs//346/212/226/351/237/2632026820-588166.jpg +0 -0
- package/public/images/douyin-update/thumbs//346/212/226/351/237/2632026820-672198.jpg +0 -0
- package/public/images/douyin-update/thumbs//346/212/226/351/237/2632026820-700522.jpg +0 -0
- package/public/images/douyin-update/thumbs//346/212/226/351/237/2632026820-839722.jpg +0 -0
- package/public/images/douyin-update/thumbs//346/212/226/351/237/2632026825-460586.jpg +0 -0
- package/public/images/douyin-update/thumbs//346/212/226/351/237/263202694-689407.jpg +0 -0
- package/public/images/douyin-update//346/212/226/351/237/2632026820-399915.mp4 +0 -0
- package/public/images/douyin-update//346/212/226/351/237/2632026820-424041.mp4 +0 -0
- package/public/images/douyin-update//346/212/226/351/237/2632026820-588166.mp4 +0 -0
- package/public/images/douyin-update//346/212/226/351/237/2632026820-672198.mp4 +0 -0
- package/public/images/douyin-update//346/212/226/351/237/2632026820-700522.mp4 +0 -0
- package/public/images/douyin-update//346/212/226/351/237/2632026820-839722.mp4 +0 -0
- package/public/images/douyin-update//346/212/226/351/237/2632026825-460586.mp4 +0 -0
- package/public/images/douyin-update//346/212/226/351/237/263202694-689407.mp4 +0 -0
- package/public/images/general/0040jbadgy1id6am4yxqfj61s82dn1kx02.jpg +0 -0
- package/public/images/general/0040jbadgy1id6am708pbj62c0340qv602.jpg +0 -0
- package/public/images/general/0040jbadgy1id6amb81uqj62c0340x6q02.jpg +0 -0
- package/public/images/general/0040jbadgy1id6amcqte3j62c0340qv602.jpg +0 -0
- package/public/images/general/0040jbadgy1id6amdg3xcj62b232wqv502.jpg +0 -0
- package/public/images/general/0040jbadgy1id6amexv23j620v2pau0x02.jpg +0 -0
- package/public/images/general/0040jbadly8icq3if7twwj60qy0qy0uc02.jpg +0 -0
- package/public/images/general/008ET7Legy1ig9s89nri5j30i20n1gn4.jpg +0 -0
- package/public/images/general/008ET7Legy1ig9s8a2lmlj30i20ny409.jpg +0 -0
- package/public/images/general/008ET7Legy1ig9s8ay1hsj30i20nk3zv.jpg +0 -0
- package/public/images/general/008ET7Legy1ig9s8bab6sj30i20o7go1.jpg +0 -0
- package/public/images/general/008ET7Legy1ig9s8blqsxj30i20oiq4r.jpg +0 -0
- package/public/images/general/008ET7Legy1ig9s8cbxkzj30i20mxmzh.jpg +0 -0
- package/public/images/general/jujingyi_portrait.jpg +0 -0
- package/public/images/jujingyi_portrait.jpg +0 -0
- package/public/images/series/a-millenniums-wait/poster.jpg +0 -0
- package/public/images/series/beauty-of-resilience/poster.jpg +0 -0
- package/public/images/series/detective-samoyeds/poster.jpg +0 -0
- package/public/images/series/everyday/poster.jpg +0 -0
- package/public/images/series/fu-rong-ancient-painting/poster.jpg +0 -0
- package/public/images/series/in-a-class-of-her-own/poster.jpg +0 -0
- package/public/images/series/in-blossom/poster.jpg +0 -0
- package/public/images/series/legend-of-yunxi/poster.jpg +0 -0
- package/public/images/series/lets-fight/poster-2.jpg +0 -0
- package/public/images/series/lets-fight/poster.jpg +0 -0
- package/public/images/series/love-emergency/poster.jpg +0 -0
- package/public/images/series/love-under-the-full-moon/poster.jpg +0 -0
- package/public/images/series/money-bastion/poster.jpg +0 -0
- package/public/images/series/mr-swimmer/poster.jpg +0 -0
- package/public/images/series/novoland-castle-in-the-sky/poster.jpg +0 -0
- package/public/images/series/please-give-me-a-pair-of-wings/poster.jpg +0 -0
- package/public/images/series/rebirth-for-you/poster.jpg +0 -0
- package/public/images/series/sword-and-fairy-4/poster.jpg +0 -0
- package/public/images/series/the-blooms-at-ruyi-pavilion/poster.jpg +0 -0
- package/public/images/series/the-eternal-fragrance/poster-2.jpg +0 -0
- package/public/images/series/the-eternal-fragrance/poster.jpg +0 -0
- package/public/images/series/the-fallen-flowers/poster.jpg +0 -0
- package/public/images/series/the-legend-of-white-snake/poster.jpg +0 -0
- package/public/images/series/veil-of-shadows/poster.jpg +0 -0
- package/public/images/series/wanhua-sin/poster-2.jpg +0 -0
- package/public/images/series/wanhua-sin/poster.jpg +0 -0
- package/public/images/weibo-update/41/345/210/206/351/222/237/345/211/215/0040jbadgy1igrkj10yogj62u03s0npe02.jpg +0 -0
- package/public/images/weibo-update/41/345/210/206/351/222/237/345/211/215/0040jbadgy1igrkj2pdvyj61li25jkjl02.jpg +0 -0
- package/public/images/weibo-update/41/345/210/206/351/222/237/345/211/215/0040jbadgy1igrkj71177j62672w9e8302.jpg +0 -0
- package/public/images/weibo-update/41/345/210/206/351/222/237/345/211/215/0040jbadgy1igrkj7twpfj62192197rw02.jpg +0 -0
- package/public/images/weibo-update/41/345/210/206/351/222/237/345/211/215/0040jbadgy1igrkj8jfu8j62c03401kx02.jpg +0 -0
- package/public/images/weibo-update/41/345/210/206/351/222/237/345/211/215/0040jbadgy1igrkj9dhdsj622k2l77wh02.jpg +0 -0
- package/public/images/weibo-update/41/345/210/206/351/222/237/345/211/215/0040jbadgy1igrkja31s4j62bw3407r802.jpg +0 -0
- package/public/images/weibo-update/41/345/210/206/351/222/237/345/211/215/0040jbadgy1igrkjcf331j61402ey1kx02.jpg +0 -0
- package/public/images/weibo-update/41/345/210/206/351/222/237/345/211/215/0040jbadgy1igrkjdx8gqj62602pihdt02.jpg +0 -0
- package/public/images/weibo-update/41/345/210/206/351/222/237/345/211/215/0040jbadgy1igrkjfvxnzj62432n57wh02.jpg +0 -0
- package/public/images/weibo-update/8-14-17-16/0040jbadgy1ig3ixniv2yj627y4fxb2b02.jpg +0 -0
- package/public/images/weibo-update/8-14-17-16/0040jbadgy1ig3ixsvbdaj625k2vfu1102.jpg +0 -0
- package/public/images/weibo-update/8-14-17-16/0040jbadgy1ig3ixxxdaoj62c03501l202.jpg +0 -0
- package/public/images/weibo-update/8-14-17-16/0040jbadgy1ig3ixzeef9j62c0340npd02.jpg +0 -0
- package/public/images/weibo-update/8-14-17-16/0040jbadgy1ig3iy0vs6tj626t4rbhdu02.jpg +0 -0
- package/public/images/weibo-update/8-14-17-16/0040jbadgy1ig3iy21wwuj62bt34hx6q02.jpg +0 -0
- package/public/images/weibo-update/8-8-17-39/0040jbadgy1ifwly4wr85j62z629y7wh02.jpg +0 -0
- package/public/images/weibo-update/8-8-17-39/0040jbadgy1ifwly67oilj623u2t5npd02.jpg +0 -0
- package/public/images/weibo-update/8-8-17-39/0040jbadgy1ifwly9qtw8j62c0340u0x02.jpg +0 -0
- package/public/images/weibo-update/8-8-17-39/0040jbadgy1ifwlyem4m4j63402c01kz02.jpg +0 -0
- package/public/images/weibo-update/8-8-17-39/0040jbadgy1ifwlygkoq4j627s2yeavd02.jpg +0 -0
- package/public/images/weibo-update/8-8-17-39/0040jbadgy1ifwlyjh0daj62bw340nm102.jpg +0 -0
- package/public/images/weibo-update/8-8-17-39/0040jbadgy1ifwlylejlhj62bw3401kx02.jpg +0 -0
- package/public/images/weibo-update/today/0040jbadgy1igaiaa8b7fj627j2y67wh02.jpg +0 -0
- package/public/images/weibo-update/today/0040jbadgy1igaiagw3ezj61s02ebu0x02.jpg +0 -0
- package/public/images/weibo-update/today/0040jbadgy1igaiaivng3j61rv2ebx6p02.jpg +0 -0
- package/public/images/weibo-update/today/0040jbadgy1igaiajuixvj62bw340qv502.jpg +0 -0
- package/public/images/weibo-update/today/0040jbadgy1igaiapyartj62bw340hdt02.jpg +0 -0
- package/public/images/weibo-update/today/0040jbadgy1igaibkwu4ij61vy2iq1kx02.jpg +0 -0
- package/public/images/weibo-update/today/0040jbadgy1igaic1fvkpj61u92eo1ky02.jpg +0 -0
- package/public/images/weibo-update/today/0040jbadgy1igaic3cruhj62822ywb2902.jpg +0 -0
- package/public/manifest.json +25 -0
- package/public/mcp-logo-128.png +0 -0
- package/public/mcp-logo-64.png +0 -0
- package/public/mcp-logo.svg +16 -0
- package/server/agent/agentCore.js +542 -74
- package/server/agent/appPaths.js +1 -0
- package/server/agent/audioPlayer.js +4 -2
- package/server/agent/citations.js +294 -0
- package/server/agent/clarificationAnalytics.js +477 -0
- package/server/agent/clarifyingQuestions.js +1089 -0
- package/server/agent/cli.js +549 -125
- package/server/agent/commandFeatures.js +1 -0
- package/server/agent/commandRegistry.js +946 -879
- package/server/agent/commands.js +546 -272
- package/server/agent/config.js +581 -412
- package/server/agent/contextCompactor.js +2 -2
- package/server/agent/debate.js +235 -0
- package/server/agent/eventBus.js +3 -0
- package/server/agent/feedbackLearning.js +217 -0
- package/server/agent/llmClient.js +512 -394
- package/server/agent/mcpClient.js +182 -32
- package/server/agent/memory.js +283 -224
- package/server/agent/modelManager.js +79 -39
- package/server/agent/profiles.js +178 -0
- package/server/agent/publicTools.js +22 -0
- package/server/agent/queryDetails.js +68 -8
- package/server/agent/quizData.js +398 -384
- package/server/agent/research.js +121 -79
- package/server/agent/sanitizer.js +104 -13
- package/server/agent/session.js +319 -11
- package/server/agent/subagent.js +8 -3
- package/server/agent/suggestionTui.js +294 -0
- package/server/agent/suggestions.js +69 -3
- package/server/agent/telemetry.js +119 -0
- package/server/agent/terminalImage.js +146 -27
- package/server/agent/theme.js +17 -0
- package/server/agent/toolRouter.js +16 -1
- package/server/agent/tools.js +424 -225
- package/server/agent/ui.js +486 -64
- package/server/agent/version.js +2 -4
- package/server/agent/webSearch.js +111 -11
- package/server/agent/youtubeAuth.js +24 -6
- package/server/apiRouter.js +4222 -0
- package/server/mcp/data/discography.js +25 -16
- package/server/mcp/data/gallery.js +308 -20
- package/server/mcp/data/profile.js +74 -44
- package/server/mcp/data/timeline.js +1 -1
- package/server/mcp/data/works.js +51 -17
- package/server/mcp/dataAdapter.js +5 -3
- package/server/mcp/handler.js +5 -11
- package/server/mcp/prompts.js +86 -0
- package/server/mcp/security.js +18 -15
- package/server/mcp/server.js +7 -2
- package/server/mcp/tools.js +66 -2
- package/server/web-chat/core/browserLauncher.js +18 -0
- package/server/web-chat/core/connection.js +194 -0
- package/server/web-chat/core/conversationContext.js +82 -0
- package/server/web-chat/core/directCatalogEngine.js +196 -0
- package/server/web-chat/core/dramaKnowledge.js +142 -0
- package/server/web-chat/core/errorHandler.js +51 -0
- package/server/web-chat/core/followUpEngine.js +182 -0
- package/server/web-chat/core/futureEventGuard.js +80 -0
- package/server/web-chat/core/memorySnapshot.js +12 -0
- package/server/web-chat/core/security.js +146 -0
- package/server/web-chat/core/toolInspector.js +52 -0
- package/server/web-chat/router.js +120 -0
- package/server/web-chat/routes/chatRoute.js +397 -0
- package/server/web-chat/routes/clarifyConfigRoute.js +98 -0
- package/server/web-chat/routes/clarifyRoute.js +83 -0
- package/server/web-chat/routes/compareRoute.js +79 -0
- package/server/web-chat/routes/exportRoute.js +59 -0
- package/server/web-chat/routes/feedbackRoute.js +57 -0
- package/server/web-chat/routes/newsRoute.js +33 -0
- package/server/web-chat/routes/quizRoute.js +11 -0
- package/server/web-chat/routes/staticRoute.js +103 -0
- package/server/web-chat/routes/statusRoute.js +52 -0
- package/server/web-chat/routes/suggestRoute.js +77 -0
- package/server/web-chat/routes/timelineRoute.js +34 -0
- package/server/web-chat/routes/verifyRoute.js +57 -0
- package/server/web-chat/server.js +116 -0
- package/server/web-chat/ui/htmlBuilder.js +91 -0
- package/server/web-chat/ui/previews/agentBubble.preview.html +134 -0
- package/server/web-chat/ui/scripts/agentBubbleSystem.js +320 -0
- package/server/web-chat/ui/scripts/client.js +8397 -0
- package/server/web-chat/ui/scripts/kikuDb.js +177 -0
- package/server/web-chat/ui/scripts/suggestionsData.js +118 -0
- package/server/web-chat/ui/scripts/webchatI18n.js +291 -0
- package/server/web-chat/ui/styles/main.css +8568 -0
- package/server/web-chat/ui/templates/body.html +796 -0
- package/server/webChatHtml.js +1 -0
- package/server/webChatServer.js +6 -0
- package/src/data/discographyData.js +892 -866
- package/src/data/galleryData.js +1805 -561
- package/src/data/profileData.js +79 -2
- package/src/data/socialUpdatesData.js +106 -47
- package/src/data/timelineData.js +1 -1
- package/src/data/worksData.js +25 -4
- package/tokens.css +97 -0
- package/server/agent/updateManager.js +0 -456
|
@@ -1,879 +1,946 @@
|
|
|
1
|
-
export const COMMAND_DEFINITIONS = Object.freeze([
|
|
2
|
-
{ name: '/help', usage: '/help [command]', desc: 'Show all commands or details for one command', insert: '/help ' },
|
|
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|load <id>|export|clear]', desc: 'Manage, restore, or summarize conversation sessions', insert: '/session ' },
|
|
5
|
-
{ name: '/thinking', usage: '/thinking [show|hide|toggle]', desc: 'Control reasoning visibility', insert: '/thinking ' },
|
|
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 [session|[Qn] [answer|thinking|tools|tool n|all|json]]', desc: 'Copy full session transcript, answer, thinking, or tools to clipboard', insert: '/copy ' },
|
|
8
|
-
{ name: '/lang', usage: '/lang [th|zh|en|auto]', desc: 'Set the response language', insert: '/lang ' },
|
|
9
|
-
{ name: '/theme', usage: '/theme [name|list|current|next|prev|reset]', desc: 'View or change the terminal color theme', insert: '/theme ' },
|
|
10
|
-
{ name: '/mem', usage: '/mem [add|del|search|list|topics|summary|import|export|clear]', desc: 'Manage and summarize long-term memory', insert: '/mem ' },
|
|
11
|
-
{ name: '/subagent', usage: '/subagent <research task>', desc: 'Run a bounded Ju Jingyi research subagent', insert: '/subagent ' },
|
|
12
|
-
{ name: '/research', usage: '/research <question|status|last|sources|cancel>', desc: 'Run coordinated multi-source Ju Jingyi research', insert: '/research ' },
|
|
13
|
-
{ name: '/verify', usage: '/verify <claim>', desc: 'Verify a Ju Jingyi claim with independent workers', insert: '/verify ' },
|
|
14
|
-
{ name: '/sources', usage: '/sources', desc: 'Show sources from the latest research job', insert: '/sources' },
|
|
15
|
-
{ name: '/
|
|
16
|
-
{ name: '/
|
|
17
|
-
{ name: '/
|
|
18
|
-
{ name: '/
|
|
19
|
-
{ name: '/
|
|
20
|
-
{ name: '/
|
|
21
|
-
{ name: '/
|
|
22
|
-
{ name: '/
|
|
23
|
-
{ name: '/
|
|
24
|
-
{ name: '/
|
|
25
|
-
{ name: '/
|
|
26
|
-
{ name: '/
|
|
27
|
-
{ name: '/
|
|
28
|
-
{ name: '/
|
|
29
|
-
{ name: '/
|
|
30
|
-
{ name: '/
|
|
31
|
-
{ name: '/
|
|
32
|
-
{ name: '/
|
|
33
|
-
{ name: '/
|
|
34
|
-
{ name: '/
|
|
35
|
-
{ name: '/
|
|
36
|
-
{ name: '/
|
|
37
|
-
{ name: '/
|
|
38
|
-
{ name: '/
|
|
39
|
-
{ name: '/
|
|
40
|
-
{ name: '/
|
|
41
|
-
{ name: '/
|
|
42
|
-
{ name: '/
|
|
43
|
-
{ name: '/
|
|
44
|
-
{ name: '/
|
|
45
|
-
{ name: '/
|
|
46
|
-
{ name: '/
|
|
47
|
-
{ name: '/
|
|
48
|
-
{ name: '/
|
|
49
|
-
{ name: '/
|
|
50
|
-
{ name: '/
|
|
51
|
-
{ name: '/
|
|
52
|
-
{ name: '/
|
|
53
|
-
{ name: '/
|
|
54
|
-
{ name: '/
|
|
55
|
-
{ name: '/
|
|
56
|
-
{ name: '/
|
|
57
|
-
{ name: '/
|
|
58
|
-
{ name: '/
|
|
59
|
-
{ name: '/
|
|
60
|
-
{ name: '/
|
|
61
|
-
{ name: '/
|
|
62
|
-
{ name: '/
|
|
63
|
-
])
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
'
|
|
87
|
-
'
|
|
88
|
-
'
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
'
|
|
93
|
-
|
|
94
|
-
'
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
'
|
|
99
|
-
|
|
100
|
-
'
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
'
|
|
105
|
-
|
|
106
|
-
'
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
],
|
|
123
|
-
'/
|
|
124
|
-
'/
|
|
125
|
-
'/
|
|
126
|
-
'/
|
|
127
|
-
'/
|
|
128
|
-
'/
|
|
129
|
-
'/
|
|
130
|
-
'/
|
|
131
|
-
'/
|
|
132
|
-
'/
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
'/
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
'/
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
'/
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
'/
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
],
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
],
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
],
|
|
250
|
-
|
|
251
|
-
'/
|
|
252
|
-
'/
|
|
253
|
-
'
|
|
254
|
-
'/
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
{ cmd: '
|
|
264
|
-
{ cmd: '
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
],
|
|
271
|
-
|
|
272
|
-
'/
|
|
273
|
-
'/
|
|
274
|
-
'
|
|
275
|
-
'/
|
|
276
|
-
'/
|
|
277
|
-
|
|
278
|
-
],
|
|
279
|
-
},
|
|
280
|
-
'/
|
|
281
|
-
summary: '
|
|
282
|
-
usage: '/
|
|
283
|
-
subcommands: [
|
|
284
|
-
{ cmd: '
|
|
285
|
-
{ cmd: '
|
|
286
|
-
{ cmd: '
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
{ cmd: '
|
|
295
|
-
{ cmd: '
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
],
|
|
314
|
-
|
|
315
|
-
'/
|
|
316
|
-
'/
|
|
317
|
-
'/
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
'/
|
|
335
|
-
'/
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
{ cmd: '
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
'/
|
|
362
|
-
'
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
'/
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
'
|
|
397
|
-
'/
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
'/
|
|
415
|
-
'
|
|
416
|
-
'
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
{ cmd: '
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
'
|
|
449
|
-
'/
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
{ cmd: '
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
'/
|
|
468
|
-
'/
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
],
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
{ cmd: '
|
|
480
|
-
{ cmd: '
|
|
481
|
-
{ cmd: '
|
|
482
|
-
{ cmd: '
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
'/
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
{ cmd: '
|
|
498
|
-
{ cmd: '
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
],
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
{ cmd: '
|
|
514
|
-
{ cmd: '
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
'
|
|
528
|
-
'
|
|
529
|
-
'/
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
'/
|
|
543
|
-
'/
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
{ cmd: '
|
|
553
|
-
{ cmd: '
|
|
554
|
-
{ cmd: '
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
'/
|
|
559
|
-
'/
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
{ cmd: '
|
|
569
|
-
{ cmd: '
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
'/
|
|
573
|
-
'/
|
|
574
|
-
'/
|
|
575
|
-
],
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
{ cmd: '
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
'/
|
|
608
|
-
'/
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
],
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
'/
|
|
629
|
-
'/
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
{ cmd: '
|
|
638
|
-
],
|
|
639
|
-
examples: [
|
|
640
|
-
'/
|
|
641
|
-
'/
|
|
642
|
-
],
|
|
643
|
-
},
|
|
644
|
-
'/
|
|
645
|
-
summary: 'Show
|
|
646
|
-
usage: '/
|
|
647
|
-
subcommands: [
|
|
648
|
-
{ cmd: '', desc: '
|
|
649
|
-
],
|
|
650
|
-
examples: [
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
},
|
|
676
|
-
'/
|
|
677
|
-
summary: '
|
|
678
|
-
usage: '/
|
|
679
|
-
subcommands: [
|
|
680
|
-
{ cmd: '', desc: '
|
|
681
|
-
],
|
|
682
|
-
examples: [
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
],
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
],
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
],
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
],
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
{ cmd: '', desc: '
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
1
|
+
export const COMMAND_DEFINITIONS = Object.freeze([
|
|
2
|
+
{ name: '/help', usage: '/help [command]', desc: 'Show all commands or details for one command', insert: '/help ' },
|
|
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|load <id>|export|clear]', desc: 'Manage, restore, or summarize conversation sessions', insert: '/session ' },
|
|
5
|
+
{ name: '/thinking', usage: '/thinking [show|hide|toggle]', desc: 'Control reasoning visibility', insert: '/thinking ' },
|
|
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 [session|[Qn] [answer|thinking|tools|tool n|all|json]]', desc: 'Copy full session transcript, answer, thinking, or tools to clipboard', insert: '/copy ' },
|
|
8
|
+
{ name: '/lang', usage: '/lang [th|zh|en|auto]', desc: 'Set the response language', insert: '/lang ' },
|
|
9
|
+
{ name: '/theme', usage: '/theme [name|list|current|next|prev|reset]', desc: 'View or change the terminal color theme', insert: '/theme ' },
|
|
10
|
+
{ name: '/mem', usage: '/mem [add|del|search|list|topics|summary|import|export|clear]', desc: 'Manage and summarize long-term memory', insert: '/mem ' },
|
|
11
|
+
{ name: '/subagent', usage: '/subagent <research task>', desc: 'Run a bounded Ju Jingyi research subagent', insert: '/subagent ' },
|
|
12
|
+
{ name: '/research', usage: '/research <question|status|last|sources|cancel>', desc: 'Run coordinated multi-source Ju Jingyi research', insert: '/research ' },
|
|
13
|
+
{ name: '/verify', usage: '/verify <claim>', desc: 'Verify a Ju Jingyi claim with independent workers', insert: '/verify ' },
|
|
14
|
+
{ name: '/sources', usage: '/sources', desc: 'Show sources from the latest research job', insert: '/sources' },
|
|
15
|
+
{ name: '/debate', usage: '/debate <claim|status|last>', desc: 'Run multi-agent adversarial debate & fact synthesis', insert: '/debate ' },
|
|
16
|
+
{ name: '/timeline', usage: '/timeline [year|era]', desc: 'Render career milestone graphic timeline in terminal', insert: '/timeline ' },
|
|
17
|
+
{ name: '/suggestion', usage: '/suggestion [list|run <id|all>|auto|refresh|topic <name>]', desc: 'Generate AI research suggestions & execute with concurrent subagents', insert: '/suggestion ' },
|
|
18
|
+
{ name: '/skill', usage: '/skill [learn|list|del|on|off|clear]', desc: 'Teach Kiku how to answer for you', insert: '/skill ' },
|
|
19
|
+
{ name: '/tool', usage: '/tool <name> [args]', desc: 'Execute a registered tool directly', insert: '/tool ' },
|
|
20
|
+
{ name: '/tools', usage: '/tools [filter]', desc: 'List registered tools', insert: '/tools ' },
|
|
21
|
+
{ name: '/find', usage: '/find <query> [--type <type>] [--year YYYY]', desc: 'Search every Ju Jingyi catalog', insert: '/find ' },
|
|
22
|
+
{ name: '/compare', usage: '/compare <item-a> -- <item-b>', desc: 'Compare catalog entries or career years', insert: '/compare ' },
|
|
23
|
+
{ name: '/favorites', usage: '/favorites [list|add|suggest|remove|export]', desc: 'Manage a persistent fan collection', insert: '/favorites ' },
|
|
24
|
+
{ name: '/news', usage: '/news [topic] [--days N] [--official-only]', desc: 'Find recent source-backed Ju Jingyi news', insert: '/news ' },
|
|
25
|
+
{ name: '/jobs', usage: '/jobs [list|show|cancel|clear]', desc: 'Inspect and control tracked agent jobs', insert: '/jobs ' },
|
|
26
|
+
{ name: '/discover', usage: '/discover [drama|song|stage|photo]', desc: 'Discover something from the catalog', insert: '/discover ' },
|
|
27
|
+
{ name: '/stats', usage: '/stats', desc: 'Show the content database overview', insert: '/stats' },
|
|
28
|
+
{ 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 ' },
|
|
29
|
+
{ name: '/model', usage: '/model [status|list|recommend|use <id>|reconnect]', desc: 'Inspect, recommend, or switch active AI model', insert: '/model ' },
|
|
30
|
+
{ name: '/profile', usage: '/profile [list|use <name>|show <name>|save <name>|delete <name>]', desc: 'Manage configuration profiles (default, fast, deep-reasoning, cloud, gemini)', insert: '/profile ' },
|
|
31
|
+
{ 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 ' },
|
|
32
|
+
{ name: '/ping', usage: '/ping', desc: 'Check active model server latency', insert: '/ping' },
|
|
33
|
+
{ name: '/config', usage: '/config', desc: 'Show runtime configuration', insert: '/config' },
|
|
34
|
+
{ name: '/doctor', usage: '/doctor', desc: 'Check first-run environment and optional features', insert: '/doctor' },
|
|
35
|
+
{ name: '/prompt', usage: '/prompt', desc: 'Preview the active system persona', insert: '/prompt' },
|
|
36
|
+
{ name: '/version', usage: '/version', desc: 'Show Kiku Agent version information', insert: '/version' },
|
|
37
|
+
{ name: '/system', usage: '/system', desc: 'Show operating-system and memory information', insert: '/system' },
|
|
38
|
+
{ name: '/gpu', usage: '/gpu [status]', desc: 'Show GPU & VRAM hardware resource metrics', insert: '/gpu' },
|
|
39
|
+
{ name: '/about', usage: '/about', desc: 'Show information about Kiku Agent', insert: '/about' },
|
|
40
|
+
{ name: '/quiz', usage: '/quiz [lang]', desc: 'Take the 15-question Ju Jingyi quiz to claim a Developer VIP Key', insert: '/quiz ' },
|
|
41
|
+
{ name: '/key', usage: '/key [show|apply <key>|clear]', desc: 'Manage your Developer VIP API Key', insert: '/key ' },
|
|
42
|
+
{ name: '/ads', usage: '/ads', desc: 'Show the next sponsor card', insert: '/ads' },
|
|
43
|
+
{ name: '/gallery', usage: '/gallery', desc: 'Show the next Ju Jingyi image in the terminal', insert: '/gallery' },
|
|
44
|
+
{ name: '/retry', usage: '/retry', desc: 'Retry the previous query', insert: '/retry' },
|
|
45
|
+
{ name: '/cancel', usage: '/cancel', desc: 'Abort the currently running query, tool, or subagent task', insert: '/cancel' },
|
|
46
|
+
{ name: '/clear', usage: '/clear', desc: 'Archive the session and clear the screen', insert: '/clear' },
|
|
47
|
+
{ name: '/save', usage: '/save [markdown|html|json|text]', desc: 'Export the transcript to file', insert: '/save ' },
|
|
48
|
+
{ name: '/play', usage: '/play <song>', desc: 'Play music', insert: '/play ' },
|
|
49
|
+
{ name: '/stop', usage: '/stop', desc: 'Stop music playback', insert: '/stop' },
|
|
50
|
+
{ name: '/pause', usage: '/pause', desc: 'Pause music playback', insert: '/pause' },
|
|
51
|
+
{ name: '/resume', usage: '/resume', desc: 'Resume music playback', insert: '/resume' },
|
|
52
|
+
{ name: '/next', usage: '/next', desc: 'Play the next queued track', insert: '/next' },
|
|
53
|
+
{ name: '/prev', usage: '/prev', desc: 'Return to the previous track', insert: '/prev' },
|
|
54
|
+
{ name: '/mute', usage: '/mute', desc: 'Mute music playback', insert: '/mute' },
|
|
55
|
+
{ name: '/unmute', usage: '/unmute', desc: 'Unmute music playback', insert: '/unmute' },
|
|
56
|
+
{ name: '/add', usage: '/add <song>', desc: 'Add a song to the music queue', insert: '/add ' },
|
|
57
|
+
{ name: '/remove', usage: '/remove <index>', desc: 'Remove a song from the music queue', insert: '/remove ' },
|
|
58
|
+
{ name: '/clearqueue', usage: '/clearqueue', desc: 'Clear the music queue', insert: '/clearqueue' },
|
|
59
|
+
{ name: '/search', usage: '/search <query>', desc: 'Search YouTube', insert: '/search ' },
|
|
60
|
+
{ name: '/current', usage: '/current', desc: 'Show the current track', insert: '/current' },
|
|
61
|
+
{ name: '/queue', usage: '/queue [clear]', desc: 'Show or clear the active queue', insert: '/queue ' },
|
|
62
|
+
{ name: '/web', usage: '/web [start|open|stop|status|restart] [port]', desc: 'Start or open the standalone chatbot web app (port 3300)', insert: '/web ' },
|
|
63
|
+
{ name: '/web-chat', usage: '/web-chat [start|open|stop|status|restart] [port]', desc: 'Start or open the standalone chatbot web app (port 3300)', insert: '/web-chat ' },
|
|
64
|
+
{ name: '/login', usage: '/login', desc: 'Connect a YouTube browser session', insert: '/login' },
|
|
65
|
+
{ name: '/ytstatus', usage: '/ytstatus', desc: 'Show YouTube authentication status', insert: '/ytstatus' },
|
|
66
|
+
{ name: '/exit', usage: '/exit', desc: 'Archive the session and quit', insert: '/exit' },
|
|
67
|
+
]);
|
|
68
|
+
|
|
69
|
+
export const COMMAND_NAMES = Object.freeze(COMMAND_DEFINITIONS.map(command => command.name));
|
|
70
|
+
|
|
71
|
+
export const COMMAND_CATEGORIES = Object.freeze([
|
|
72
|
+
{
|
|
73
|
+
id: 'conversation',
|
|
74
|
+
name: 'Conversation & Session',
|
|
75
|
+
icon: '◆',
|
|
76
|
+
commands: ['/help', '/web', '/web-chat', '/session', '/history', '/details', '/copy', '/thinking', '/clear', '/save', '/retry', '/cancel', '/exit'],
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
id: 'research',
|
|
80
|
+
name: 'Research & Intelligence',
|
|
81
|
+
icon: '✦',
|
|
82
|
+
commands: ['/research', '/subagent', '/verify', '/debate', '/suggestion', '/sources', '/jobs'],
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
id: 'catalog',
|
|
86
|
+
name: 'Catalog, News & Memory',
|
|
87
|
+
icon: '■',
|
|
88
|
+
commands: ['/find', '/compare', '/timeline', '/discover', '/favorites', '/news', '/stats', '/mem', '/skill'],
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
id: 'model',
|
|
92
|
+
name: 'AI Model & MCP Connectivity',
|
|
93
|
+
icon: '●',
|
|
94
|
+
commands: ['/provider', '/model', '/profile', '/mcp', '/ping', '/prompt', '/config'],
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
id: 'media',
|
|
98
|
+
name: 'Music & Gallery',
|
|
99
|
+
icon: '🎵',
|
|
100
|
+
commands: ['/play', '/stop', '/pause', '/resume', '/next', '/prev', '/queue', '/add', '/remove', '/clearqueue', '/search', '/current', '/mute', '/unmute', '/login', '/ytstatus', '/gallery'],
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
id: 'system',
|
|
104
|
+
name: 'System, Theme & Developer Tools',
|
|
105
|
+
icon: '◆',
|
|
106
|
+
commands: ['/doctor', '/system', '/gpu', '/version', '/theme', '/lang', '/quiz', '/key', '/about', '/tools', '/tool', '/ads'],
|
|
107
|
+
},
|
|
108
|
+
]);
|
|
109
|
+
|
|
110
|
+
export const SUB_COMMANDS = Object.freeze({
|
|
111
|
+
'/help': ['find', 'web', 'provider', 'model', 'session', 'details', 'copy', 'mcp', 'mem', 'research', 'verify', 'suggestion', 'skill', 'theme', 'quiz', 'key', 'play', 'doctor'],
|
|
112
|
+
'/web': ['start', 'open', 'status', 'stop', 'restart', '3001'],
|
|
113
|
+
'/web-chat': ['start', 'open', 'status', 'stop', 'restart', '3001'],
|
|
114
|
+
'/mem': ['add <fact>', 'search <query>', 'list', 'topics', 'summary', 'del <id>', 'import <path>', 'export', 'clear'],
|
|
115
|
+
'/quiz': ['lang th', 'lang en', 'lang zh'],
|
|
116
|
+
'/key': ['show', 'apply <key>', 'clear'],
|
|
117
|
+
'/subagent': ['<research task>', 'status', 'last'],
|
|
118
|
+
'/research': ['<question>', 'status', 'last', 'sources', 'cancel'],
|
|
119
|
+
'/verify': ['<claim>'],
|
|
120
|
+
'/debate': ['<claim>', 'status', 'last', 'cancel'],
|
|
121
|
+
'/timeline': ['2026', '2024-2026', 'snh48', 'solo', 'studio', 'drama'],
|
|
122
|
+
'/sources': ['show'],
|
|
123
|
+
'/suggestion': ['list', 'run 1', 'run all', 'auto', 'refresh', 'topic drama', 'topic music', 'topic fashion', 'topic 2026'],
|
|
124
|
+
'/skill': ['learn <instruction>', 'list', 'del <id>', 'on', 'off', 'clear'],
|
|
125
|
+
'/find': ['--type work', '--type song', '--type role', '--type brand', '--type award', '--type photo', '--type stage', '--year 2026', '--limit 8'],
|
|
126
|
+
'/compare': ['<item-a> -- <item-b>', '<year-a> -- <year-b>', '--type work', '--type song'],
|
|
127
|
+
'/favorites': ['list', 'list --type work', 'add <query>', 'add song <query>', 'suggest', 'remove <id>', 'export json', 'export markdown'],
|
|
128
|
+
'/news': ['--days 7', '--days 30', '--official-only', '<topic> --days 14'],
|
|
129
|
+
'/jobs': ['list', 'show <id>', 'cancel <id>', 'clear'],
|
|
130
|
+
'/discover': ['drama', 'song', 'stage', 'photo', 'song --mood calm', 'stage --year 2025'],
|
|
131
|
+
'/stats': ['overview'],
|
|
132
|
+
'/provider': [
|
|
133
|
+
'list',
|
|
134
|
+
'status',
|
|
135
|
+
'models',
|
|
136
|
+
'models groq',
|
|
137
|
+
'models openrouter',
|
|
138
|
+
'models openai',
|
|
139
|
+
'models gemini',
|
|
140
|
+
'models deepseek',
|
|
141
|
+
'models lmstudio',
|
|
142
|
+
'use groq',
|
|
143
|
+
'use openrouter',
|
|
144
|
+
'use openai',
|
|
145
|
+
'use gemini',
|
|
146
|
+
'use deepseek',
|
|
147
|
+
'use lmstudio',
|
|
148
|
+
'use custom',
|
|
149
|
+
'setkey <key>',
|
|
150
|
+
'setkey groq <key>',
|
|
151
|
+
'setkey openrouter <key>',
|
|
152
|
+
'setkey openai <key>',
|
|
153
|
+
'setkey gemini <key>',
|
|
154
|
+
'setkey deepseek <key>',
|
|
155
|
+
'info',
|
|
156
|
+
'info groq',
|
|
157
|
+
'info openrouter',
|
|
158
|
+
'info openai',
|
|
159
|
+
'info gemini',
|
|
160
|
+
'info deepseek',
|
|
161
|
+
'info lmstudio',
|
|
162
|
+
'test',
|
|
163
|
+
'test groq',
|
|
164
|
+
'test openrouter',
|
|
165
|
+
'test openai',
|
|
166
|
+
'test gemini',
|
|
167
|
+
'test deepseek',
|
|
168
|
+
'test lmstudio'
|
|
169
|
+
],
|
|
170
|
+
'/model': ['status', 'list', 'recommend', 'use <model-id>', 'reconnect'],
|
|
171
|
+
'/profile': ['list', 'use default', 'use fast', 'use deep-reasoning', 'use cloud', 'use gemini', 'show default', 'save <name>', 'delete <name>'],
|
|
172
|
+
'/mcp': ['status', 'list', 'tools', 'connect <name> <url>', 'disconnect <name>', 'remove <name>', 'reconnect [all]', 'save', 'reload'],
|
|
173
|
+
'/ping': ['status'],
|
|
174
|
+
'/config': ['status'],
|
|
175
|
+
'/doctor': ['check'],
|
|
176
|
+
'/prompt': ['show'],
|
|
177
|
+
'/version': ['show'],
|
|
178
|
+
'/system': ['info'],
|
|
179
|
+
'/gpu': ['status'],
|
|
180
|
+
'/about': ['info'],
|
|
181
|
+
'/ads': ['next'],
|
|
182
|
+
'/gallery': ['show'],
|
|
183
|
+
'/retry': ['again'],
|
|
184
|
+
'/cancel': ['stop'],
|
|
185
|
+
'/clear': ['now'],
|
|
186
|
+
'/save': ['markdown'],
|
|
187
|
+
'/lang': ['th', 'zh', 'en', 'auto'],
|
|
188
|
+
'/theme': ['next', 'prev', 'list', 'current', 'sakura', 'midnight', 'ocean', 'forest', 'sunset', 'monochrome', 'reset'],
|
|
189
|
+
'/thinking': ['show', 'hide', 'toggle'],
|
|
190
|
+
'/details': ['latest', 'overview', 'answer', 'thinking', 'tools', 'tool <n>', 'all', 'markdown', 'Q1 overview', 'Q1 tool 1'],
|
|
191
|
+
'/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'],
|
|
192
|
+
'/session': ['info', 'summary', 'list', 'load <id>', 'export', 'export markdown', 'export json', 'export text', 'copy', 'clear'],
|
|
193
|
+
'/history': ['10', '20', '50', 'search <query>', 'summary', 'clear'],
|
|
194
|
+
'/play': ['<song name>', 'In Blossom OST', 'Rain Love', 'Ginkgo', '恋爱告急', '叹云兮'],
|
|
195
|
+
'/stop': ['now'],
|
|
196
|
+
'/pause': ['now'],
|
|
197
|
+
'/resume': ['now'],
|
|
198
|
+
'/next': ['track'],
|
|
199
|
+
'/prev': ['track'],
|
|
200
|
+
'/mute': ['now'],
|
|
201
|
+
'/unmute': ['now'],
|
|
202
|
+
'/add': ['<song name>', 'In Blossom OST', 'Rain Love', 'Ginkgo'],
|
|
203
|
+
'/remove': ['1', '2', '3'],
|
|
204
|
+
'/clearqueue': ['now'],
|
|
205
|
+
'/search': ['<query>', 'Ju Jingyi OST', 'Ju Jingyi MV', '鞠婧祎'],
|
|
206
|
+
'/current': ['status'],
|
|
207
|
+
'/queue': ['clear'],
|
|
208
|
+
'/login': ['browser'],
|
|
209
|
+
'/ytstatus': ['check'],
|
|
210
|
+
'/exit': ['quit'],
|
|
211
|
+
});
|
|
212
|
+
|
|
213
|
+
export const COMMAND_DETAILS = Object.freeze({
|
|
214
|
+
'/help': {
|
|
215
|
+
summary: 'Display comprehensive help guide, shortcuts, or in-depth documentation for any command',
|
|
216
|
+
usage: '/help [command]',
|
|
217
|
+
subcommands: [
|
|
218
|
+
{ cmd: '[command]', desc: 'Show detailed parameter specs, subcommands, and examples for a specific command', example: '/help provider' },
|
|
219
|
+
{ cmd: 'all', desc: 'Display complete indexed list of all 60+ commands', example: '/help' },
|
|
220
|
+
],
|
|
221
|
+
examples: ['/help', '/help provider', '/help session', '/help research', '/help copy'],
|
|
222
|
+
},
|
|
223
|
+
'/web': {
|
|
224
|
+
summary: 'Launch or manage the dedicated standalone web chatbot on port 3300',
|
|
225
|
+
usage: '/web [start|open|stop|status|restart] [port]',
|
|
226
|
+
subcommands: [
|
|
227
|
+
{ cmd: 'start [port]', desc: 'Start standalone web chatbot server (default port 3300) and open browser', example: '/web start' },
|
|
228
|
+
{ cmd: 'open', desc: 'Open current web chatbot URL in default browser', example: '/web open' },
|
|
229
|
+
{ cmd: 'status', desc: 'Check standalone web server running state and port', example: '/web status' },
|
|
230
|
+
{ cmd: 'stop', desc: 'Stop the standalone web chatbot server', example: '/web stop' },
|
|
231
|
+
{ cmd: 'restart', desc: 'Restart the standalone web chatbot server', example: '/web restart' },
|
|
232
|
+
],
|
|
233
|
+
examples: ['/web', '/web open', '/web status', '/web stop'],
|
|
234
|
+
},
|
|
235
|
+
'/web-chat': {
|
|
236
|
+
summary: 'Launch or manage the dedicated standalone web chatbot on port 3300 (alias for /web)',
|
|
237
|
+
usage: '/web-chat [start|open|stop|status|restart] [port]',
|
|
238
|
+
subcommands: [
|
|
239
|
+
{ cmd: 'start [port]', desc: 'Start standalone web chatbot server (default port 3300) and open browser', example: '/web-chat start' },
|
|
240
|
+
{ cmd: 'open', desc: 'Open current web chatbot URL in default browser', example: '/web-chat open' },
|
|
241
|
+
{ cmd: 'status', desc: 'Check standalone web server running state and port', example: '/web-chat status' },
|
|
242
|
+
{ cmd: 'stop', desc: 'Stop the standalone web chatbot server', example: '/web-chat stop' },
|
|
243
|
+
{ cmd: 'restart', desc: 'Restart the standalone web chatbot server', example: '/web-chat restart' },
|
|
244
|
+
],
|
|
245
|
+
examples: ['/web-chat', '/web-chat open', '/web-chat status', '/web-chat stop'],
|
|
246
|
+
},
|
|
247
|
+
'/find': {
|
|
248
|
+
summary: 'Search works, songs, roles, brands, awards, photos, and performances without an active chat model',
|
|
249
|
+
usage: '/find <query> [--type <type>] [--year YYYY] [--limit 1-20]',
|
|
250
|
+
subcommands: [
|
|
251
|
+
{ cmd: '<query>', desc: 'Search all supported catalog types', example: '/find In Blossom' },
|
|
252
|
+
{ cmd: '--type <type>', desc: 'Limit results to work, song, role, brand, award, photo, or stage', example: '/find Rain Love --type song' },
|
|
253
|
+
{ cmd: '--year YYYY', desc: 'Limit results to one catalog year', example: '/find --type work --year 2025' },
|
|
254
|
+
{ cmd: '--limit N', desc: 'Return between 1 and 20 results', example: '/find จวีจิ้งอี --limit 12' },
|
|
255
|
+
],
|
|
256
|
+
examples: ['/find In Blossom', '/find Versace --type brand', '/find --type work --year 2026'],
|
|
257
|
+
},
|
|
258
|
+
'/compare': {
|
|
259
|
+
summary: 'Compare two catalog entries or summarize two career years side by side',
|
|
260
|
+
usage: '/compare <item-a> -- <item-b> [--type <type>]',
|
|
261
|
+
subcommands: [
|
|
262
|
+
{ cmd: '<item-a> -- <item-b>', desc: 'Resolve and compare two catalog entries', example: '/compare In Blossom -- Beauty of Resilience' },
|
|
263
|
+
{ cmd: '<year-a> -- <year-b>', desc: 'Compare catalog activity across two years', example: '/compare 2024 -- 2025' },
|
|
264
|
+
{ cmd: '--type <type>', desc: 'Resolve both items within one catalog type', example: '/compare Rain Love -- Moonlight --type song' },
|
|
265
|
+
],
|
|
266
|
+
examples: ['/compare In Blossom -- Beauty of Resilience', '/compare 2024 -- 2025'],
|
|
267
|
+
},
|
|
268
|
+
'/favorites': {
|
|
269
|
+
summary: 'Build and export a persistent personal collection of Ju Jingyi content with AI suggestions',
|
|
270
|
+
usage: '/favorites [list | add [type] <query> | suggest | remove <id> | export <json|markdown>]',
|
|
271
|
+
subcommands: [
|
|
272
|
+
{ cmd: 'list [--type <type>]', desc: 'List every favorite or filter by catalog type', example: '/favorites list --type song' },
|
|
273
|
+
{ cmd: 'add [type] <query>', desc: 'Resolve a catalog entry and save it', example: '/favorites add song Rain Love' },
|
|
274
|
+
{ cmd: 'suggest', desc: 'Synthesize AI recommendations based on your saved favorites', example: '/favorites suggest' },
|
|
275
|
+
{ cmd: 'remove <id>', desc: 'Remove one favorite by its displayed ID', example: '/favorites remove fav_123_abc' },
|
|
276
|
+
{ cmd: 'export <json|markdown>', desc: 'Export favorites to the protected Kiku exports directory', example: '/favorites export markdown' },
|
|
277
|
+
],
|
|
278
|
+
examples: ['/favorites add In Blossom', '/favorites suggest', '/favorites list', '/favorites export json'],
|
|
279
|
+
},
|
|
280
|
+
'/news': {
|
|
281
|
+
summary: 'Search recent Ju Jingyi coverage and display source URLs with available dates',
|
|
282
|
+
usage: '/news [topic] [--days 1-90] [--official-only]',
|
|
283
|
+
subcommands: [
|
|
284
|
+
{ cmd: '[topic]', desc: 'Search recent news for an optional topic', example: '/news ซีรีส์ใหม่' },
|
|
285
|
+
{ cmd: '--days N', desc: 'Set the recent-news window from 1 to 90 days', example: '/news Versace --days 30' },
|
|
286
|
+
{ cmd: '--official-only', desc: 'Keep results from supported official social and media hosts', example: '/news --days 14 --official-only' },
|
|
287
|
+
],
|
|
288
|
+
examples: ['/news', '/news drama --days 7', '/news --official-only'],
|
|
289
|
+
},
|
|
290
|
+
'/jobs': {
|
|
291
|
+
summary: 'Inspect, cancel, and clear tracked research, verification, subagent, and suggestion jobs',
|
|
292
|
+
usage: '/jobs [list | show <id> | cancel <id> | clear]',
|
|
293
|
+
subcommands: [
|
|
294
|
+
{ cmd: 'list', desc: 'List active and recent jobs', example: '/jobs list' },
|
|
295
|
+
{ cmd: 'show <id>', desc: 'Show timestamps, state, and error details for one job', example: '/jobs show job_123_abc' },
|
|
296
|
+
{ cmd: 'cancel <id>', desc: 'Abort one running job', example: '/jobs cancel job_123_abc' },
|
|
297
|
+
{ cmd: 'clear', desc: 'Remove completed, failed, and cancelled jobs', example: '/jobs clear' },
|
|
298
|
+
],
|
|
299
|
+
examples: ['/jobs', '/jobs show job_123_abc', '/jobs cancel job_123_abc'],
|
|
300
|
+
},
|
|
301
|
+
'/discover': {
|
|
302
|
+
summary: 'Pick a catalog recommendation for a drama, song, stage performance, or photo',
|
|
303
|
+
usage: '/discover [drama|song|stage|photo] [--year YYYY] [--mood <mood>]',
|
|
304
|
+
subcommands: [
|
|
305
|
+
{ cmd: 'drama | song | stage | photo', desc: 'Choose the type of recommendation', example: '/discover drama' },
|
|
306
|
+
{ cmd: '--year YYYY', desc: 'Limit discovery to one year', example: '/discover stage --year 2025' },
|
|
307
|
+
{ cmd: '--mood <mood>', desc: 'Use calm, romantic, energetic, dramatic, or any', example: '/discover song --mood calm' },
|
|
308
|
+
],
|
|
309
|
+
examples: ['/discover drama', '/discover song --mood calm', '/discover photo'],
|
|
310
|
+
},
|
|
311
|
+
'/suggestion': {
|
|
312
|
+
summary: 'Generate AI research suggestions & execute with concurrent subagents',
|
|
313
|
+
usage: '/suggestion [list | run <id|ids|all> | auto | topic <name> | refresh]',
|
|
314
|
+
subcommands: [
|
|
315
|
+
{ cmd: 'list', desc: 'Display generated research suggestions and categories (default)', example: '/suggestion list' },
|
|
316
|
+
{ cmd: 'run <id|ids|all>', desc: 'Dispatch concurrent subagent workers to research the selected questions in parallel', example: '/suggestion run 1,2,3' },
|
|
317
|
+
{ cmd: 'auto', desc: 'Auto-generate fresh research topics and immediately dispatch parallel subagents', example: '/suggestion auto' },
|
|
318
|
+
{ cmd: 'topic <name>', desc: 'Generate research questions tailored to a specific topic (drama, music, brand, awards, 2026)', example: '/suggestion topic drama' },
|
|
319
|
+
{ cmd: 'refresh', desc: 'Re-roll and generate a fresh batch of 5 suggestion topics', example: '/suggestion refresh' },
|
|
320
|
+
],
|
|
321
|
+
examples: [
|
|
322
|
+
'/suggestion',
|
|
323
|
+
'/suggestion run 1',
|
|
324
|
+
'/suggestion run 1,2,3',
|
|
325
|
+
'/suggestion run all',
|
|
326
|
+
'/suggestion auto',
|
|
327
|
+
'/suggestion topic 2026',
|
|
328
|
+
],
|
|
329
|
+
},
|
|
330
|
+
'/mcp': {
|
|
331
|
+
summary: 'Manage persistent Model Context Protocol (MCP) server connections and external tools',
|
|
332
|
+
usage: '/mcp [status | list | connect <name> <url|stdio> | disconnect <name> | remove <name> | reconnect [all] | save [workspace|global] | reload | tools]',
|
|
333
|
+
subcommands: [
|
|
334
|
+
{ cmd: 'status / list', desc: 'Display active live MCP servers, saved offline configurations, and registered tool counts', example: '/mcp status' },
|
|
335
|
+
{ cmd: 'connect <name> <url|cmd>', desc: 'Connect and permanently save an MCP server config (auto-reconnects on startup)', example: '/mcp connect kiku https://jujingyi-kikuuu.vercel.app/mcp' },
|
|
336
|
+
{ cmd: 'save [workspace|global]', desc: 'Explicitly save all MCP configurations to workspace (.mcp.json) or global storage', example: '/mcp save workspace' },
|
|
337
|
+
{ cmd: 'reload / reconnect [name|all]', desc: 'Reload and reconnect all configured MCP servers from disk', example: '/mcp reconnect all' },
|
|
338
|
+
{ cmd: 'disconnect <name>', desc: 'Disconnect the active live session while keeping the configuration saved for later', example: '/mcp disconnect kiku' },
|
|
339
|
+
{ cmd: 'remove <name>', desc: 'Permanently remove the server from saved configuration and disconnect', example: '/mcp remove kiku' },
|
|
340
|
+
{ cmd: 'tools', desc: 'Inspect all registered MCP tools, parameters, and input schemas', example: '/mcp tools' },
|
|
341
|
+
],
|
|
342
|
+
examples: [
|
|
343
|
+
'/mcp status',
|
|
344
|
+
'/mcp connect kiku https://jujingyi-kikuuu.vercel.app/mcp',
|
|
345
|
+
'/mcp connect local stdio node ./server/mcp/stdio.js',
|
|
346
|
+
'/mcp tools',
|
|
347
|
+
'/mcp save workspace',
|
|
348
|
+
'/mcp reconnect all',
|
|
349
|
+
],
|
|
350
|
+
},
|
|
351
|
+
'/provider': {
|
|
352
|
+
summary: 'Manage AI model providers (OpenAI, Gemini, Groq, DeepSeek, OpenRouter, LM Studio) and persist API keys',
|
|
353
|
+
usage: '/provider [list | status | use <name> [model] | models [name] | setkey [provider] <key> | info [name] | test [name]]',
|
|
354
|
+
subcommands: [
|
|
355
|
+
{ cmd: 'list', desc: 'List all supported providers, availability, and active status', example: '/provider list' },
|
|
356
|
+
{ cmd: 'status', desc: 'Show detailed connection metrics, latency, and credentials for active provider', example: '/provider status' },
|
|
357
|
+
{ cmd: 'use <name> [model]', desc: 'Switch active AI provider and optionally specify initial model', example: '/provider use groq' },
|
|
358
|
+
{ cmd: 'models [name]', desc: 'Fetch live model catalog from the specified or active provider API', example: '/provider models groq' },
|
|
359
|
+
{ cmd: 'setkey <key>', desc: 'Configure and persist API key for the active provider', example: '/provider setkey gsk_...' },
|
|
360
|
+
{ cmd: 'setkey groq <key>', desc: 'Configure and persist API key specifically for Groq Cloud', example: '/provider setkey groq gsk_...' },
|
|
361
|
+
{ cmd: 'setkey openrouter <key>', desc: 'Configure and persist API key specifically for OpenRouter', example: '/provider setkey openrouter sk-or-v1-...' },
|
|
362
|
+
{ cmd: 'setkey openai <key>', desc: 'Configure and persist API key specifically for OpenAI', example: '/provider setkey openai sk-...' },
|
|
363
|
+
{ cmd: 'setkey gemini <key>', desc: 'Configure and persist API key specifically for Google Gemini', example: '/provider setkey gemini AIzaSy...' },
|
|
364
|
+
{ cmd: 'setkey deepseek <key>', desc: 'Configure and persist API key specifically for DeepSeek', example: '/provider setkey deepseek sk-...' },
|
|
365
|
+
{ cmd: 'test [name]', desc: 'Perform a lightweight ping/test call to verify provider responsiveness', example: '/provider test groq' },
|
|
366
|
+
{ cmd: 'info [name]', desc: 'Show pricing, context window, token limits, and documentation for a provider', example: '/provider info groq' },
|
|
367
|
+
],
|
|
368
|
+
examples: [
|
|
369
|
+
'/provider list',
|
|
370
|
+
'/provider setkey groq gsk_...',
|
|
371
|
+
'/provider setkey openrouter sk-or-v1-...',
|
|
372
|
+
'/provider use groq',
|
|
373
|
+
'/provider test groq',
|
|
374
|
+
'/provider models',
|
|
375
|
+
],
|
|
376
|
+
},
|
|
377
|
+
'/key': {
|
|
378
|
+
summary: 'Manage your Developer VIP API Key (earned via /quiz or custom seed)',
|
|
379
|
+
usage: '/key [show | apply <key> | clear]',
|
|
380
|
+
subcommands: [
|
|
381
|
+
{ cmd: 'show', desc: 'Display active Developer VIP key, rate limit tiers, and usage format', example: '/key show' },
|
|
382
|
+
{ cmd: 'apply <key>', desc: 'Save and activate a Developer VIP API key for higher rate limits', example: '/key apply kiku_vip_sk_...' },
|
|
383
|
+
{ cmd: 'clear', desc: 'Remove stored Developer VIP key from local preferences', example: '/key clear' },
|
|
384
|
+
],
|
|
385
|
+
examples: [
|
|
386
|
+
'/key show',
|
|
387
|
+
'/key apply kiku_vip_sk_test123',
|
|
388
|
+
'/key clear',
|
|
389
|
+
],
|
|
390
|
+
},
|
|
391
|
+
'/model': {
|
|
392
|
+
summary: 'Inspect, recommend, or switch active AI model',
|
|
393
|
+
usage: '/model [status | list | recommend | use <model-id> | reconnect]',
|
|
394
|
+
subcommands: [
|
|
395
|
+
{ cmd: 'status', desc: 'Display active model name, provider, latency, and context configuration', example: '/model status' },
|
|
396
|
+
{ cmd: 'list', desc: 'List models reported by the active provider or local LM Studio instance', example: '/model list' },
|
|
397
|
+
{ cmd: 'use <model-id>', desc: 'Switch active model immediately without restarting the agent', example: '/model use google/gemma-4-e4b' },
|
|
398
|
+
{ cmd: 'recommend', desc: 'Show curated model recommendations optimized for Ju Jingyi knowledge tasks', example: '/model recommend' },
|
|
399
|
+
{ cmd: 'reconnect', desc: 'Reconnect to the local or cloud model server and verify availability', example: '/model reconnect' },
|
|
400
|
+
],
|
|
401
|
+
examples: [
|
|
402
|
+
'/model status',
|
|
403
|
+
'/model list',
|
|
404
|
+
'/model recommend',
|
|
405
|
+
'/model use gemma-4-e4b',
|
|
406
|
+
'/model reconnect',
|
|
407
|
+
],
|
|
408
|
+
},
|
|
409
|
+
'/research': {
|
|
410
|
+
summary: 'Run coordinated multi-source Ju Jingyi research (3 parallel subagents: catalog, web, verifier)',
|
|
411
|
+
usage: '/research <question | status | last | sources | cancel>',
|
|
412
|
+
subcommands: [
|
|
413
|
+
{ cmd: '<question>', desc: 'Launch multi-worker deep research across local database and web sources', example: '/research ผลงานซีรีส์ปี 2026 ของจวีจิ้งอี' },
|
|
414
|
+
{ cmd: 'status', desc: 'Check status of running background research workers', example: '/research status' },
|
|
415
|
+
{ cmd: 'last', desc: 'Display synthesized findings from the latest research job', example: '/research last' },
|
|
416
|
+
{ cmd: 'sources', desc: 'List all validated URLs and citations collected during research', example: '/research sources' },
|
|
417
|
+
{ cmd: 'cancel', desc: 'Cancel the currently active research job', example: '/research cancel' },
|
|
418
|
+
],
|
|
419
|
+
examples: [
|
|
420
|
+
'/research What are Ju Jingyi\'s 2026 drama projects?',
|
|
421
|
+
'/research status',
|
|
422
|
+
'/research sources',
|
|
423
|
+
],
|
|
424
|
+
},
|
|
425
|
+
'/verify': {
|
|
426
|
+
summary: 'Verify a Ju Jingyi claim or rumor with independent workers across official catalog & web sources',
|
|
427
|
+
usage: '/verify <claim about Ju Jingyi>',
|
|
428
|
+
subcommands: [
|
|
429
|
+
{ cmd: '<claim>', desc: 'Run multi-worker verification to produce a strict verdict (VERIFIED, UNVERIFIED, CONFLICTING, FALSE)', example: '/verify จวีจิ้งอีเป็น Brand Ambassador ของ Versace ในปี 2026' },
|
|
430
|
+
],
|
|
431
|
+
examples: [
|
|
432
|
+
'/verify จวีจิ้งอีชนะเลือกตั้ง SNH48 สองสมัยซ้อน',
|
|
433
|
+
'/verify Ju Jingyi will star in a new 2026 historical drama',
|
|
434
|
+
],
|
|
435
|
+
},
|
|
436
|
+
'/sources': {
|
|
437
|
+
summary: 'Display full citation list, verified URLs, and media links from the most recent research job',
|
|
438
|
+
usage: '/sources',
|
|
439
|
+
subcommands: [
|
|
440
|
+
{ cmd: '', desc: 'Show all citations, reference domains, and validated external sources from the latest research', example: '/sources' },
|
|
441
|
+
],
|
|
442
|
+
examples: ['/sources'],
|
|
443
|
+
},
|
|
444
|
+
'/quiz': {
|
|
445
|
+
summary: 'Interactive 15-question Ju Jingyi quiz to claim a Developer VIP Key (1,000 req/min)',
|
|
446
|
+
usage: '/quiz [lang <th|en|zh>]',
|
|
447
|
+
subcommands: [
|
|
448
|
+
{ cmd: '', desc: 'Start the quiz in your current language setting', example: '/quiz' },
|
|
449
|
+
{ cmd: 'lang th', desc: 'Start the quiz in Thai', example: '/quiz lang th' },
|
|
450
|
+
{ cmd: 'lang en', desc: 'Start the quiz in English', example: '/quiz lang en' },
|
|
451
|
+
{ cmd: 'lang zh', desc: 'Start the quiz in Chinese', example: '/quiz lang zh' },
|
|
452
|
+
],
|
|
453
|
+
examples: [
|
|
454
|
+
'/quiz',
|
|
455
|
+
'/quiz lang th',
|
|
456
|
+
'/quiz lang en',
|
|
457
|
+
],
|
|
458
|
+
},
|
|
459
|
+
'/subagent': {
|
|
460
|
+
summary: 'Spawn an isolated iterative research subagent to investigate a specific task or subtopic',
|
|
461
|
+
usage: '/subagent <task | status | last>',
|
|
462
|
+
subcommands: [
|
|
463
|
+
{ cmd: '<task>', desc: 'Dispatch dedicated bounded subagent with iterative tool execution', example: '/subagent Search all OST songs sung by Ju Jingyi in 2024-2026' },
|
|
464
|
+
{ cmd: 'status / last', desc: 'Inspect tool calls and synthesized evidence from the previous subagent', example: '/subagent status' },
|
|
465
|
+
],
|
|
466
|
+
examples: [
|
|
467
|
+
'/subagent Explore Versace brand ambassadorship milestones',
|
|
468
|
+
'/subagent status',
|
|
469
|
+
],
|
|
470
|
+
},
|
|
471
|
+
'/mem': {
|
|
472
|
+
summary: 'Manage long-term semantic memory and persistent facts',
|
|
473
|
+
usage: '/mem [list | add <fact> | search <query> | topics | del <id> | import <path> | export | clear]',
|
|
474
|
+
subcommands: [
|
|
475
|
+
{ cmd: 'list', desc: 'View all stored long-term memory facts', example: '/mem list' },
|
|
476
|
+
{ cmd: 'add <fact>', desc: 'Store a verified fact directly into persistent memory', example: '/mem add จวีจิ้งอีเกิดวันที่ 18 มิถุนายน 1994' },
|
|
477
|
+
{ cmd: 'search <query>', desc: 'Search stored memory facts using relevance ranking', example: '/mem search Versace' },
|
|
478
|
+
{ cmd: 'topics', desc: 'View list of categorized memory topics', example: '/mem topics' },
|
|
479
|
+
{ cmd: 'del <id>', desc: 'Delete a specific memory entry by ID', example: '/mem del m_123' },
|
|
480
|
+
{ cmd: 'export', desc: 'Export memory facts to JSON file', example: '/mem export' },
|
|
481
|
+
{ cmd: 'import <path>', desc: 'Import memory facts from a JSON file', example: '/mem import ./facts.json' },
|
|
482
|
+
{ cmd: 'clear', desc: 'Wipe all long-term memory facts', example: '/mem clear' },
|
|
483
|
+
],
|
|
484
|
+
examples: [
|
|
485
|
+
'/mem list',
|
|
486
|
+
'/mem add ผู้ใช้ชื่นชอบซีรีส์ In Blossom เป็นพิเศษ',
|
|
487
|
+
'/mem search In Blossom',
|
|
488
|
+
],
|
|
489
|
+
},
|
|
490
|
+
'/skill': {
|
|
491
|
+
summary: 'Teach Kiku custom persona rules and response preferences',
|
|
492
|
+
usage: '/skill [learn <instruction> | list | on | off | del <id> | clear]',
|
|
493
|
+
subcommands: [
|
|
494
|
+
{ cmd: 'learn <instruction>', desc: 'Teach Kiku how to format responses or adapt tone', example: '/skill learn ตอบภาษาไทยแบบสุภาพและกระชับเสมอ' },
|
|
495
|
+
{ cmd: 'list', desc: 'List all active learned skills and their IDs', example: '/skill list' },
|
|
496
|
+
{ cmd: 'on / off', desc: 'Enable or disable learned skills globally', example: '/skill off' },
|
|
497
|
+
{ cmd: 'del <id>', desc: 'Remove a specific learned skill by ID', example: '/skill del s_123' },
|
|
498
|
+
{ cmd: 'clear', desc: 'Delete all custom learned skills', example: '/skill clear' },
|
|
499
|
+
],
|
|
500
|
+
examples: [
|
|
501
|
+
'/skill learn ตอบภาษาไทยและลงท้ายด้วยค่ะเสมอ',
|
|
502
|
+
'/skill list',
|
|
503
|
+
],
|
|
504
|
+
},
|
|
505
|
+
'/details': {
|
|
506
|
+
summary: 'Inspect deep diagnostics, tool timeline, and token metrics for queries',
|
|
507
|
+
usage: '/details [Qn] [overview | answer | thinking | tools | tool <n> | all | markdown]',
|
|
508
|
+
subcommands: [
|
|
509
|
+
{ cmd: 'overview / [Qn]', desc: 'View summary of duration, iterations, token counts, and tool timeline (Press F2 for latest)', example: '/details Q1' },
|
|
510
|
+
{ cmd: 'answer', desc: 'View the complete untruncated final answer', example: '/details answer' },
|
|
511
|
+
{ cmd: 'thinking', desc: 'Inspect raw chain-of-thought and model reasoning', example: '/details thinking' },
|
|
512
|
+
{ cmd: 'tools', desc: 'List all tool calls executed during query processing', example: '/details tools' },
|
|
513
|
+
{ cmd: 'tool <n>', desc: 'Inspect exact arguments and raw return payload for tool call N', example: '/details tool 1' },
|
|
514
|
+
{ cmd: 'all / markdown', desc: 'View full formatted Markdown transcript of the query', example: '/details all' },
|
|
515
|
+
],
|
|
516
|
+
examples: [
|
|
517
|
+
'/details',
|
|
518
|
+
'/details Q1 overview',
|
|
519
|
+
'/details Q1 tool 1',
|
|
520
|
+
'/details all',
|
|
521
|
+
],
|
|
522
|
+
},
|
|
523
|
+
'/copy': {
|
|
524
|
+
summary: 'Copy complete conversation session, model answer, thinking trace, tools, or markdown to system clipboard',
|
|
525
|
+
usage: '/copy [session [markdown|json|text] | [Qn] [answer|thinking|tools|tool <n>|all|markdown|json]]',
|
|
526
|
+
subcommands: [
|
|
527
|
+
{ cmd: 'session [format]', desc: 'Copy entire conversation transcript (markdown, json, or text) to clipboard', example: '/copy session' },
|
|
528
|
+
{ cmd: '[Qn] [answer]', desc: 'Copy complete untruncated model answer to system clipboard (default)', example: '/copy' },
|
|
529
|
+
{ cmd: 'thinking', desc: 'Copy raw chain-of-thought and model reasoning', example: '/copy thinking' },
|
|
530
|
+
{ cmd: 'tools', desc: 'Copy JSON tool executions and arguments', example: '/copy tools' },
|
|
531
|
+
{ cmd: 'tool <n>', desc: 'Copy raw JSON result of specific tool call N', example: '/copy tool 1' },
|
|
532
|
+
{ cmd: 'all / markdown', desc: 'Copy entire Q&A transcript in clean Markdown format', example: '/copy all' },
|
|
533
|
+
{ cmd: 'json', desc: 'Copy question diagnostics as JSON', example: '/copy json' },
|
|
534
|
+
{ cmd: 'overview', desc: 'Copy diagnostic overview and metadata', example: '/copy overview' },
|
|
535
|
+
],
|
|
536
|
+
examples: [
|
|
537
|
+
'/copy',
|
|
538
|
+
'/copy session',
|
|
539
|
+
'/copy session json',
|
|
540
|
+
'/copy thinking',
|
|
541
|
+
'/copy Q2 answer',
|
|
542
|
+
'/copy tool 1',
|
|
543
|
+
'/copy all',
|
|
544
|
+
],
|
|
545
|
+
},
|
|
546
|
+
'/theme': {
|
|
547
|
+
summary: 'View or switch the terminal color theme dynamically',
|
|
548
|
+
usage: '/theme [sakura | midnight | ocean | forest | sunset | monochrome | next | prev | list | current | reset]',
|
|
549
|
+
subcommands: [
|
|
550
|
+
{ cmd: 'next', desc: 'Rotate to the next available theme palette', example: '/theme next' },
|
|
551
|
+
{ cmd: 'prev', desc: 'Rotate to the previous available theme palette', example: '/theme prev' },
|
|
552
|
+
{ cmd: 'list', desc: 'Preview all available color theme palettes and descriptions', example: '/theme list' },
|
|
553
|
+
{ cmd: 'current', desc: 'Show currently active theme and color samples', example: '/theme current' },
|
|
554
|
+
{ cmd: '<name>', desc: 'Switch theme instantly (sakura, midnight, ocean, forest, sunset, monochrome)', example: '/theme midnight' },
|
|
555
|
+
{ cmd: 'reset', desc: 'Reset to default theme (sakura)', example: '/theme reset' },
|
|
556
|
+
],
|
|
557
|
+
examples: [
|
|
558
|
+
'/theme list',
|
|
559
|
+
'/theme midnight',
|
|
560
|
+
'/theme ocean',
|
|
561
|
+
'/theme monochrome',
|
|
562
|
+
],
|
|
563
|
+
},
|
|
564
|
+
'/session': {
|
|
565
|
+
summary: 'Manage, export, copy, restore, or summarize conversation sessions and history snapshots',
|
|
566
|
+
usage: '/session [info | summary | list | load <id> | export [format] | copy [format] | clear]',
|
|
567
|
+
subcommands: [
|
|
568
|
+
{ cmd: 'info', desc: 'Display session ID, active duration, message count, tool breakdown, and turn stats', example: '/session info' },
|
|
569
|
+
{ cmd: 'summary', desc: 'Synthesize an AI analytical summary of the active session', example: '/session summary' },
|
|
570
|
+
{ cmd: 'list', desc: 'List all saved conversation sessions on disk', example: '/session list' },
|
|
571
|
+
{ cmd: 'load <id>', desc: 'Restore and resume an archived session by ID or list number', example: '/session load 1' },
|
|
572
|
+
{ cmd: 'export [format]', desc: 'Export full conversation session history to Markdown (.md), JSON (.json), or Text (.txt)', example: '/session export markdown' },
|
|
573
|
+
{ cmd: 'copy [format]', desc: 'Copy entire active session transcript directly to system clipboard', example: '/session copy' },
|
|
574
|
+
{ cmd: 'clear', desc: 'Archive current conversation session and reset history', example: '/session clear' },
|
|
575
|
+
],
|
|
576
|
+
examples: [
|
|
577
|
+
'/session info',
|
|
578
|
+
'/session summary',
|
|
579
|
+
'/session export markdown',
|
|
580
|
+
'/session export json',
|
|
581
|
+
'/session copy',
|
|
582
|
+
'/session list',
|
|
583
|
+
'/session load 1',
|
|
584
|
+
'/session clear',
|
|
585
|
+
],
|
|
586
|
+
},
|
|
587
|
+
'/history': {
|
|
588
|
+
summary: 'View, search, or summarize recent chat message history',
|
|
589
|
+
usage: '/history [count | search <query> | summary | clear]',
|
|
590
|
+
subcommands: [
|
|
591
|
+
{ cmd: '[n]', desc: 'Display the last N messages (default: 20)', example: '/history 10' },
|
|
592
|
+
{ cmd: 'search <query>', desc: 'Search messages in current session history', example: '/history search In Blossom' },
|
|
593
|
+
{ cmd: 'summary', desc: 'Synthesize an AI summary of past conversation turns', example: '/history summary' },
|
|
594
|
+
{ cmd: 'clear', desc: 'Clear in-memory conversation history', example: '/history clear' },
|
|
595
|
+
],
|
|
596
|
+
examples: [
|
|
597
|
+
'/history',
|
|
598
|
+
'/history summary',
|
|
599
|
+
'/history 50',
|
|
600
|
+
'/history search drama',
|
|
601
|
+
],
|
|
602
|
+
},
|
|
603
|
+
'/thinking': {
|
|
604
|
+
summary: 'Control reasoning and chain-of-thought visibility during generation',
|
|
605
|
+
usage: '/thinking [show | hide | toggle]',
|
|
606
|
+
subcommands: [
|
|
607
|
+
{ cmd: 'show', desc: 'Display live model reasoning process in real time', example: '/thinking show' },
|
|
608
|
+
{ cmd: 'hide', desc: 'Hide thinking process and display only final answers', example: '/thinking hide' },
|
|
609
|
+
{ cmd: 'toggle', desc: 'Toggle thinking display mode on/off', example: '/thinking toggle' },
|
|
610
|
+
],
|
|
611
|
+
examples: [
|
|
612
|
+
'/thinking show',
|
|
613
|
+
'/thinking hide',
|
|
614
|
+
'/thinking toggle',
|
|
615
|
+
],
|
|
616
|
+
},
|
|
617
|
+
'/lang': {
|
|
618
|
+
summary: 'Set response language for AI synthesis',
|
|
619
|
+
usage: '/lang [th | zh | en | auto]',
|
|
620
|
+
subcommands: [
|
|
621
|
+
{ cmd: 'th', desc: 'Set response language to Thai (ค่ะ/นะคะ)', example: '/lang th' },
|
|
622
|
+
{ cmd: 'zh', desc: 'Set response language to Chinese (中文)', example: '/lang zh' },
|
|
623
|
+
{ cmd: 'en', desc: 'Set response language to English', example: '/lang en' },
|
|
624
|
+
{ cmd: 'auto', desc: 'Auto-detect response language from user input (default)', example: '/lang auto' },
|
|
625
|
+
],
|
|
626
|
+
examples: [
|
|
627
|
+
'/lang th',
|
|
628
|
+
'/lang zh',
|
|
629
|
+
'/lang auto',
|
|
630
|
+
],
|
|
631
|
+
},
|
|
632
|
+
'/queue': {
|
|
633
|
+
summary: 'Inspect or clear music playback audio queue',
|
|
634
|
+
usage: '/queue [clear]',
|
|
635
|
+
subcommands: [
|
|
636
|
+
{ cmd: '', desc: 'Show currently queued music tracks and playback state', example: '/queue' },
|
|
637
|
+
{ cmd: 'clear', desc: 'Wipe all pending tracks from the music queue', example: '/queue clear' },
|
|
638
|
+
],
|
|
639
|
+
examples: [
|
|
640
|
+
'/queue',
|
|
641
|
+
'/queue clear',
|
|
642
|
+
],
|
|
643
|
+
},
|
|
644
|
+
'/gpu': {
|
|
645
|
+
summary: 'Show GPU & VRAM hardware resource metrics',
|
|
646
|
+
usage: '/gpu [status]',
|
|
647
|
+
subcommands: [
|
|
648
|
+
{ cmd: 'status', desc: 'Show real-time NVIDIA/Metal GPU compute utilization and VRAM memory usage', example: '/gpu' },
|
|
649
|
+
],
|
|
650
|
+
examples: [
|
|
651
|
+
'/gpu',
|
|
652
|
+
],
|
|
653
|
+
},
|
|
654
|
+
'/tools': {
|
|
655
|
+
summary: 'List registered SSOT knowledge and external tools',
|
|
656
|
+
usage: '/tools [filter]',
|
|
657
|
+
subcommands: [
|
|
658
|
+
{ cmd: '[filter]', desc: 'List all registered tools or filter by keyword', example: '/tools drama' },
|
|
659
|
+
],
|
|
660
|
+
examples: [
|
|
661
|
+
'/tools',
|
|
662
|
+
'/tools search',
|
|
663
|
+
'/tools mcp',
|
|
664
|
+
],
|
|
665
|
+
},
|
|
666
|
+
'/cancel': {
|
|
667
|
+
summary: 'Abort the currently running query, tool, or subagent task',
|
|
668
|
+
usage: '/cancel',
|
|
669
|
+
subcommands: [
|
|
670
|
+
{ cmd: '', desc: 'Instantly cancel running model generation, tool execution, or research subagents', example: '/cancel' },
|
|
671
|
+
],
|
|
672
|
+
examples: [
|
|
673
|
+
'/cancel',
|
|
674
|
+
],
|
|
675
|
+
},
|
|
676
|
+
'/tool': {
|
|
677
|
+
summary: 'Execute a registered SSOT tool directly with arguments',
|
|
678
|
+
usage: '/tool <name> [json_args | raw_query]',
|
|
679
|
+
subcommands: [
|
|
680
|
+
{ cmd: '<name> [args]', desc: 'Call tool directly without model synthesis', example: '/tool search_works {"year":2026}' },
|
|
681
|
+
],
|
|
682
|
+
examples: [
|
|
683
|
+
'/tool get_profile_and_fandom',
|
|
684
|
+
'/tool search_works In Blossom',
|
|
685
|
+
'/tool search_discography {"category":"ost"}',
|
|
686
|
+
],
|
|
687
|
+
},
|
|
688
|
+
'/play': {
|
|
689
|
+
summary: 'Stream YouTube audio for Ju Jingyi songs and OSTs',
|
|
690
|
+
usage: '/play <song_name_or_url>',
|
|
691
|
+
subcommands: [
|
|
692
|
+
{ cmd: '<song>', desc: 'Search and play song on YouTube in the background', example: '/play 恋爱告急' },
|
|
693
|
+
],
|
|
694
|
+
examples: [
|
|
695
|
+
'/play In Blossom OST',
|
|
696
|
+
'/play 恋爱告急',
|
|
697
|
+
],
|
|
698
|
+
},
|
|
699
|
+
'/stats': {
|
|
700
|
+
summary: 'Show comprehensive content metrics, database records, and catalog statistics',
|
|
701
|
+
usage: '/stats',
|
|
702
|
+
subcommands: [
|
|
703
|
+
{ cmd: '', desc: 'Display total counts for dramas, discography, brands, awards, and gallery photos', example: '/stats' },
|
|
704
|
+
],
|
|
705
|
+
examples: ['/stats'],
|
|
706
|
+
},
|
|
707
|
+
'/ping': {
|
|
708
|
+
summary: 'Measure live network latency and responsiveness to active LLM inference server',
|
|
709
|
+
usage: '/ping',
|
|
710
|
+
subcommands: [
|
|
711
|
+
{ cmd: '', desc: 'Send ping request to active AI model endpoint and report round-trip latency in ms', example: '/ping' },
|
|
712
|
+
],
|
|
713
|
+
examples: ['/ping'],
|
|
714
|
+
},
|
|
715
|
+
'/config': {
|
|
716
|
+
summary: 'Display current runtime configuration, active profile, provider, paths, and environment settings',
|
|
717
|
+
usage: '/config',
|
|
718
|
+
subcommands: [
|
|
719
|
+
{ cmd: '', desc: 'Inspect active profile, LLM provider, base URL, model name, storage directories, and MCP status', example: '/config' },
|
|
720
|
+
],
|
|
721
|
+
examples: ['/config'],
|
|
722
|
+
},
|
|
723
|
+
'/profile': {
|
|
724
|
+
summary: 'Manage AI configuration profiles (default, fast, deep-reasoning, cloud, gemini)',
|
|
725
|
+
usage: '/profile [list | use <name> | show <name> | save <name> | delete <name>]',
|
|
726
|
+
subcommands: [
|
|
727
|
+
{ cmd: 'list', desc: 'List all available built-in and custom profiles', example: '/profile list' },
|
|
728
|
+
{ cmd: 'use <name>', desc: 'Switch to a configuration profile', example: '/profile use fast' },
|
|
729
|
+
{ cmd: 'show <name>', desc: 'Show detailed settings of a profile', example: '/profile show deep-reasoning' },
|
|
730
|
+
{ cmd: 'save <name>', desc: 'Save current model, provider, temperature, and thinking mode to a named profile', example: '/profile save custom' },
|
|
731
|
+
{ cmd: 'delete <name>', desc: 'Delete a custom profile (built-in profiles cannot be deleted)', example: '/profile delete custom' },
|
|
732
|
+
],
|
|
733
|
+
examples: ['/profile list', '/profile use fast', '/profile use deep-reasoning', '/profile save my-setup'],
|
|
734
|
+
},
|
|
735
|
+
'/doctor': {
|
|
736
|
+
summary: 'Run environment diagnostics, dependency verification, and feature health check',
|
|
737
|
+
usage: '/doctor',
|
|
738
|
+
subcommands: [
|
|
739
|
+
{ cmd: '', desc: 'Check Node version, LM Studio server, yt-dlp, ffmpeg, MCP server, and disk permissions', example: '/doctor' },
|
|
740
|
+
],
|
|
741
|
+
examples: ['/doctor'],
|
|
742
|
+
},
|
|
743
|
+
'/prompt': {
|
|
744
|
+
summary: 'Preview the full system prompt and active persona instructions sent to the AI',
|
|
745
|
+
usage: '/prompt',
|
|
746
|
+
subcommands: [
|
|
747
|
+
{ cmd: '', desc: 'Inspect the system persona, memory context, and domain rules passed to the LLM', example: '/prompt' },
|
|
748
|
+
],
|
|
749
|
+
examples: ['/prompt'],
|
|
750
|
+
},
|
|
751
|
+
'/version': {
|
|
752
|
+
summary: 'Display installed Kiku Agent release version, build channel, and package metadata',
|
|
753
|
+
usage: '/version',
|
|
754
|
+
subcommands: [
|
|
755
|
+
{ cmd: '', desc: 'Show semantic version, git commit, Node runtime version, and release channel', example: '/version' },
|
|
756
|
+
],
|
|
757
|
+
examples: ['/version'],
|
|
758
|
+
},
|
|
759
|
+
'/system': {
|
|
760
|
+
summary: 'Display host operating system, CPU architecture, memory usage, and Node process stats',
|
|
761
|
+
usage: '/system',
|
|
762
|
+
subcommands: [
|
|
763
|
+
{ cmd: '', desc: 'Show platform OS, total RAM, heap memory allocation, process uptime, and architecture', example: '/system' },
|
|
764
|
+
],
|
|
765
|
+
examples: ['/system'],
|
|
766
|
+
},
|
|
767
|
+
'/about': {
|
|
768
|
+
summary: 'Display background information, credits, architecture overview, and project links',
|
|
769
|
+
usage: '/about',
|
|
770
|
+
subcommands: [
|
|
771
|
+
{ cmd: '', desc: 'Show project mission, tech stack overview, creator credits, and documentation links', example: '/about' },
|
|
772
|
+
],
|
|
773
|
+
examples: ['/about'],
|
|
774
|
+
},
|
|
775
|
+
'/ads': {
|
|
776
|
+
summary: 'Display community sponsor card and featured ecosystem highlights',
|
|
777
|
+
usage: '/ads',
|
|
778
|
+
subcommands: [
|
|
779
|
+
{ cmd: '', desc: 'Cycle and display the next sponsor spotlight card in the terminal', example: '/ads' },
|
|
780
|
+
],
|
|
781
|
+
examples: ['/ads'],
|
|
782
|
+
},
|
|
783
|
+
'/gallery': {
|
|
784
|
+
summary: 'Render full-color terminal graphic portraits of Ju Jingyi from the asset gallery',
|
|
785
|
+
usage: '/gallery',
|
|
786
|
+
subcommands: [
|
|
787
|
+
{ cmd: '', desc: 'Display a high-resolution downsampled ANSI image portrait in the terminal', example: '/gallery' },
|
|
788
|
+
],
|
|
789
|
+
examples: ['/gallery'],
|
|
790
|
+
},
|
|
791
|
+
'/retry': {
|
|
792
|
+
summary: 'Re-execute the previous query with identical prompt parameters',
|
|
793
|
+
usage: '/retry',
|
|
794
|
+
subcommands: [
|
|
795
|
+
{ cmd: '', desc: 'Resend the previous question to the active model for a fresh response', example: '/retry' },
|
|
796
|
+
],
|
|
797
|
+
examples: ['/retry'],
|
|
798
|
+
},
|
|
799
|
+
'/clear': {
|
|
800
|
+
summary: 'Archive active conversation session and reset terminal screen buffer',
|
|
801
|
+
usage: '/clear',
|
|
802
|
+
subcommands: [
|
|
803
|
+
{ cmd: '', desc: 'Archive current session to disk, reset message history, and clear viewport', example: '/clear' },
|
|
804
|
+
],
|
|
805
|
+
examples: ['/clear'],
|
|
806
|
+
},
|
|
807
|
+
'/save': {
|
|
808
|
+
summary: 'Export the full active conversation transcript to a formatted Markdown file',
|
|
809
|
+
usage: '/save',
|
|
810
|
+
subcommands: [
|
|
811
|
+
{ cmd: '', desc: 'Write complete conversation history, reasoning, and tools to an exported Markdown file', example: '/save' },
|
|
812
|
+
],
|
|
813
|
+
examples: ['/save'],
|
|
814
|
+
},
|
|
815
|
+
'/stop': {
|
|
816
|
+
summary: 'Stop active background audio stream and clear playback process',
|
|
817
|
+
usage: '/stop',
|
|
818
|
+
subcommands: [
|
|
819
|
+
{ cmd: '', desc: 'Immediately terminate music audio playback stream', example: '/stop' },
|
|
820
|
+
],
|
|
821
|
+
examples: ['/stop'],
|
|
822
|
+
},
|
|
823
|
+
'/pause': {
|
|
824
|
+
summary: 'Pause active YouTube music playback stream',
|
|
825
|
+
usage: '/pause',
|
|
826
|
+
subcommands: [
|
|
827
|
+
{ cmd: '', desc: 'Pause current audio stream without losing playback position', example: '/pause' },
|
|
828
|
+
],
|
|
829
|
+
examples: ['/pause'],
|
|
830
|
+
},
|
|
831
|
+
'/resume': {
|
|
832
|
+
summary: 'Resume paused YouTube audio playback',
|
|
833
|
+
usage: '/resume',
|
|
834
|
+
subcommands: [
|
|
835
|
+
{ cmd: '', desc: 'Continue playing paused audio stream from current position', example: '/resume' },
|
|
836
|
+
],
|
|
837
|
+
examples: ['/resume'],
|
|
838
|
+
},
|
|
839
|
+
'/next': {
|
|
840
|
+
summary: 'Skip to the next song in the music playback queue',
|
|
841
|
+
usage: '/next',
|
|
842
|
+
subcommands: [
|
|
843
|
+
{ cmd: '', desc: 'Skip current audio track and begin playing next queued track', example: '/next' },
|
|
844
|
+
],
|
|
845
|
+
examples: ['/next'],
|
|
846
|
+
},
|
|
847
|
+
'/prev': {
|
|
848
|
+
summary: 'Return to and replay the previous song in the music queue',
|
|
849
|
+
usage: '/prev',
|
|
850
|
+
subcommands: [
|
|
851
|
+
{ cmd: '', desc: 'Jump back to the previous track in playback history', example: '/prev' },
|
|
852
|
+
],
|
|
853
|
+
examples: ['/prev'],
|
|
854
|
+
},
|
|
855
|
+
'/mute': {
|
|
856
|
+
summary: 'Mute music audio playback output',
|
|
857
|
+
usage: '/mute',
|
|
858
|
+
subcommands: [
|
|
859
|
+
{ cmd: '', desc: 'Silence audio output while keeping playback stream active', example: '/mute' },
|
|
860
|
+
],
|
|
861
|
+
examples: ['/mute'],
|
|
862
|
+
},
|
|
863
|
+
'/unmute': {
|
|
864
|
+
summary: 'Restore music audio playback volume output',
|
|
865
|
+
usage: '/unmute',
|
|
866
|
+
subcommands: [
|
|
867
|
+
{ cmd: '', desc: 'Restore audio volume output to audible level', example: '/unmute' },
|
|
868
|
+
],
|
|
869
|
+
examples: ['/unmute'],
|
|
870
|
+
},
|
|
871
|
+
'/add': {
|
|
872
|
+
summary: 'Add a YouTube music track or OST song to the playback queue',
|
|
873
|
+
usage: '/add <song_name_or_url>',
|
|
874
|
+
subcommands: [
|
|
875
|
+
{ cmd: '<song>', desc: 'Search YouTube and enqueue song for playback', example: '/add 恋爱告急' },
|
|
876
|
+
],
|
|
877
|
+
examples: ['/add In Blossom OST', '/add 恋爱告急'],
|
|
878
|
+
},
|
|
879
|
+
'/remove': {
|
|
880
|
+
summary: 'Remove a specific track index from the music playback queue',
|
|
881
|
+
usage: '/remove <index>',
|
|
882
|
+
subcommands: [
|
|
883
|
+
{ cmd: '<index>', desc: 'Remove track by its position number in /queue', example: '/remove 2' },
|
|
884
|
+
],
|
|
885
|
+
examples: ['/remove 1', '/remove 3'],
|
|
886
|
+
},
|
|
887
|
+
'/clearqueue': {
|
|
888
|
+
summary: 'Clear all pending tracks from the music playback queue',
|
|
889
|
+
usage: '/clearqueue',
|
|
890
|
+
subcommands: [
|
|
891
|
+
{ cmd: '', desc: 'Empty all queued songs while maintaining current track', example: '/clearqueue' },
|
|
892
|
+
],
|
|
893
|
+
examples: ['/clearqueue'],
|
|
894
|
+
},
|
|
895
|
+
'/search': {
|
|
896
|
+
summary: 'Search YouTube video and audio tracks for Ju Jingyi songs',
|
|
897
|
+
usage: '/search <query>',
|
|
898
|
+
subcommands: [
|
|
899
|
+
{ cmd: '<query>', desc: 'Search YouTube for tracks and display title, duration, and direct links', example: '/search In Blossom OST' },
|
|
900
|
+
],
|
|
901
|
+
examples: ['/search 鞠婧祎', '/search In Blossom OST'],
|
|
902
|
+
},
|
|
903
|
+
'/current': {
|
|
904
|
+
summary: 'Show metadata, duration, and status for the currently playing audio track',
|
|
905
|
+
usage: '/current',
|
|
906
|
+
subcommands: [
|
|
907
|
+
{ cmd: '', desc: 'Display track title, elapsed playback duration, buffer state, and YouTube link', example: '/current' },
|
|
908
|
+
],
|
|
909
|
+
examples: ['/current'],
|
|
910
|
+
},
|
|
911
|
+
'/login': {
|
|
912
|
+
summary: 'Authenticate YouTube session in the browser to enable age-gated music playback',
|
|
913
|
+
usage: '/login',
|
|
914
|
+
subcommands: [
|
|
915
|
+
{ cmd: '', desc: 'Open interactive browser session to save YouTube cookies for seamless streaming', example: '/login' },
|
|
916
|
+
],
|
|
917
|
+
examples: ['/login'],
|
|
918
|
+
},
|
|
919
|
+
'/ytstatus': {
|
|
920
|
+
summary: 'Show YouTube authentication, cookie source, and streaming player status',
|
|
921
|
+
usage: '/ytstatus',
|
|
922
|
+
subcommands: [
|
|
923
|
+
{ cmd: '', desc: 'Check cookie availability, browser profile connection, and playback backend health', example: '/ytstatus' },
|
|
924
|
+
],
|
|
925
|
+
examples: ['/ytstatus'],
|
|
926
|
+
},
|
|
927
|
+
'/exit': {
|
|
928
|
+
summary: 'Archive active conversation session and exit Kiku Agent CLI',
|
|
929
|
+
usage: '/exit',
|
|
930
|
+
subcommands: [
|
|
931
|
+
{ cmd: '', desc: 'Safely save active session state to disk and close terminal application', example: '/exit' },
|
|
932
|
+
],
|
|
933
|
+
examples: ['/exit'],
|
|
934
|
+
},
|
|
935
|
+
});
|
|
936
|
+
|
|
937
|
+
export function findCommandDefinition(name) {
|
|
938
|
+
const normalized = name?.startsWith('/') ? name.toLowerCase() : `/${String(name || '').toLowerCase()}`;
|
|
939
|
+
return COMMAND_DEFINITIONS.find(command => command.name === normalized) || null;
|
|
940
|
+
}
|
|
941
|
+
|
|
942
|
+
export function getCommandDetails(name) {
|
|
943
|
+
if (!name) return null;
|
|
944
|
+
const normalized = name.startsWith('/') ? name.toLowerCase() : `/${String(name).toLowerCase()}`;
|
|
945
|
+
return COMMAND_DETAILS[normalized] || null;
|
|
946
|
+
}
|