diff options
Diffstat (limited to 'modules/core/module-system.js')
| -rw-r--r-- | modules/core/module-system.js | 92 |
1 files changed, 63 insertions, 29 deletions
diff --git a/modules/core/module-system.js b/modules/core/module-system.js index 77525c7..cfb7cc4 100644 --- a/modules/core/module-system.js +++ b/modules/core/module-system.js @@ -277,39 +277,73 @@ } return; } - // Categorize all commands - const cats = { - files: ['ls','ll','cat','put','rm','mv','cp','mkdir','rmdir','cd','pwd','find','grep','head','tail','sort','wc','touch','tree','du','upload','download','vfs-export','vfs-import','edit','diff','trash','trash-dir','ls-trash','empty-trash'], - ai: ['ai','ask','ai-clear','ai-system','ai-context','ai-allow','ai-deny','ai-ignore','ai-stop','ai-model','ai-compress','debug'], - search: ['search','s','ddg','duck','fetch','web','extract'], - tools: ['calc','cron-every','cron-list','cron-stop','cron-clear','wpm','mindmap','theme','voice','alias','unalias', - 'which','env','date','cal','yes','seq','base64','printf','cut','uniq','hostname','whoami','basename','dirname','sleep','expand','tutorial','gzip','gunzip','encrypt','decrypt','files','session-save','session-load','session-list','session-delete','session-export','session-import'], - system: ['help','clear','cls','echo','mem','status','font-size','setfont','smart-prompt','logs','preview','factory-reset','reset-vfs','export','unset','script','sh','set','test','logrotate','health-check','memory-map-export','commands','check','checkpoint','checkpoint-list','rollback','checkpoint-del'], - net: ['server','servers','server-check','server-remove','monitor'], - mods: ['modules','listmods','loadmod','removemod','load-local','loadlocal','startup-modules'], - ollama: ['ollama','ollamaconnect','ollamadisconnect','ollamamodels','ollamasetmodel','ollamasetproxy','models','model-info','model-pull','model-delete','model-run'], - skills: ['skill-list','skill-view','skill-create','skill-patch','skill-delete','skill-export','skill-import','skill-sync','skill-pack-core'], - config: ['config','config-set','config-list','config-delete','config-export','config-reset'], - webx: ['webxai','wx','webx','context','contexts','context-new','context-delete','smart-ask','prompt','prompt-save','prompt-list','prompt-delete','prompt-var','prompt-vars'], - data: ['my','my-set','my-get','my-list','my-export','my-import','my-clear','export-mods','import-mods','backup','restore','share-mod'], - ext: ['chat','chat-setapi','chat-setmodel','chat-ask','webdav-config','webdav-status','webdav-ls','webdav-push','webdav-pull','webdav-backup','webdav-restore','webdav-backup-list','webdav-explorer','webdav-browser'], - gui: ['gui','gui-button','gui-input','gui-text','gui-clear','gui-run'], - vault: ['secret-set','secret-get','secret-list','secret-del','secret-lock','secret-unlock','secret-setpin','secret-status'], - }; - const labels = { - files:'š Filesystem', ai:'š¤ AI', search:'š Search & Web', tools:'š§ Tools', - system:'āļø System', net:'š” Network', mods:'š§© Modules', ollama:'š¦ Ollama', - skills:'š Skills', config:'āļø Config', webx:'š WebX', data:'š¾ Data', - ext:'š§° Extras', gui:'š„ļø GUI', vault:'š Vault' + // Dynamically group commands by owning module + const cmdToModule = this.terminal.moduleManager.getAllCommands(); + const moduleGroups = {}; + for (const [cmd, modName] of Object.entries(cmdToModule)) { + if (!moduleGroups[modName]) moduleGroups[modName] = []; + moduleGroups[modName].push(cmd); + } + const modLabels = { + FileSystemModule: 'š Filesystem', + WebX11AIAssistantModule: 'š¤ AI', + WebXAIAliasModule: 'š WebX', + DuckDuckGoModule: 'š Search & Web', + SearXNGModule: 'š Search & Web', + WebFetcherModule: 'š Search & Web', + AliasModule: 'š§ Tools', + BusyBoxModule: 'š§ Tools', + CalcModule: 'š§ Tools', + CronModule: 'š§ Tools', + CryptoGzipModule: 'š§ Tools', + DiffModule: 'š§ Tools', + EditorModule: 'š§ Tools', + FileManagerModule: 'š§ Tools', + FinderModule: 'š§ Tools', + MindmapModule: 'š§ Tools', + ThemeModule: 'š§ Tools', + TutorialModule: 'š§ Tools', + VoiceModule: 'š§ Tools', + WpmModule: 'š§ Tools', + SystemModule: 'āļø System', + ShellModule: 'āļø System', + ServerMonitorModule: 'š” Network', + ModuleManagerModule: 'š§© Modules', + OllamaModule: 'š¦ Ollama', + NeuralVFSModule: 'š§ Neural VFS', + SkillPackCoreModule: 'š Skills', + ConfigManagerModule: 'āļø Config', + ModuleIOModule: 'š I/O', + SandboxModule: 'šļø Sandbox', + MyModule: 'š¾ Data', + WebDAVModule: 'š§° Extras', + ChatStudioModule: 'š§° Extras', + SimpleGUIModule: 'š„ļø GUI', + SecretVault: 'š Vault', + OrchestratorModule: 'š§ Orchestrator', + PredictorModule: 'š® Prediction', + SmartContextModule: 'š§ Context', + MemoryGraphModule: 'š Memory', + DynamicPromptsModule: 'š¬ Prompts', + WorldModelModule: 'š World', + LeaseModule: 'š Leases', + AgentRegistryModule: 'š¤ Agents', }; + // Merge modules with the same label + const grouped = {}; + const usedLabels = new Set(); + for (const [modName, cmds] of Object.entries(moduleGroups)) { + const label = modLabels[modName] || `š§© ${modName.replace(/Module$/, '')}`; + if (!grouped[label]) grouped[label] = []; + grouped[label].push(...cmds); + usedLabels.add(label); + } let result = 'āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā\nā š· WebX11 ' + (window.NEWOS4_VERSION || 'v4.0') + ' ā All Commands ā\nāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā\n\n'; const total = Object.keys(helpMap).length; result += `š ${total} commands loaded\n\n`; - for (const [key, cmds] of Object.entries(cats)) { - const present = cmds.filter(c => helpMap[c]); - if (present.length === 0) continue; - result += labels[key] + '\n'; - present.forEach(c => { + for (const [label, cmds] of Object.entries(grouped)) { + result += label + '\n'; + cmds.forEach(c => { const desc = (helpMap[c] || c).split(' ā ')[1] || ''; const short = desc.substring(0, 55); result += ` ${c.padEnd(16)}${short}\n`; |