musonda 1.0.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.
Files changed (196) hide show
  1. package/IMPLEMENTATION.md +432 -0
  2. package/README.md +119 -0
  3. package/dist/agent/harness.d.ts +25 -0
  4. package/dist/agent/harness.js +215 -0
  5. package/dist/agent/harness.js.map +1 -0
  6. package/dist/agent/openaiResponsesClient.d.ts +35 -0
  7. package/dist/agent/openaiResponsesClient.js +250 -0
  8. package/dist/agent/openaiResponsesClient.js.map +1 -0
  9. package/dist/agent/systemPrompt.d.ts +9 -0
  10. package/dist/agent/systemPrompt.js +100 -0
  11. package/dist/agent/systemPrompt.js.map +1 -0
  12. package/dist/agent/types.d.ts +53 -0
  13. package/dist/agent/types.js +2 -0
  14. package/dist/agent/types.js.map +1 -0
  15. package/dist/cli/commands/chat.d.ts +6 -0
  16. package/dist/cli/commands/chat.js +8 -0
  17. package/dist/cli/commands/chat.js.map +1 -0
  18. package/dist/cli/commands/doctor.d.ts +4 -0
  19. package/dist/cli/commands/doctor.js +336 -0
  20. package/dist/cli/commands/doctor.js.map +1 -0
  21. package/dist/cli/commands/gateway.d.ts +20 -0
  22. package/dist/cli/commands/gateway.js +135 -0
  23. package/dist/cli/commands/gateway.js.map +1 -0
  24. package/dist/cli/commands/help.d.ts +4 -0
  25. package/dist/cli/commands/help.js +159 -0
  26. package/dist/cli/commands/help.js.map +1 -0
  27. package/dist/cli/commands/plugins.d.ts +18 -0
  28. package/dist/cli/commands/plugins.js +250 -0
  29. package/dist/cli/commands/plugins.js.map +1 -0
  30. package/dist/cli/commands/service.d.ts +16 -0
  31. package/dist/cli/commands/service.js +136 -0
  32. package/dist/cli/commands/service.js.map +1 -0
  33. package/dist/cli/commands/setup.d.ts +4 -0
  34. package/dist/cli/commands/setup.js +8 -0
  35. package/dist/cli/commands/setup.js.map +1 -0
  36. package/dist/cli/commands/status.d.ts +4 -0
  37. package/dist/cli/commands/status.js +73 -0
  38. package/dist/cli/commands/status.js.map +1 -0
  39. package/dist/cli/commands/update.d.ts +22 -0
  40. package/dist/cli/commands/update.js +226 -0
  41. package/dist/cli/commands/update.js.map +1 -0
  42. package/dist/cli/daemon.d.ts +33 -0
  43. package/dist/cli/daemon.js +208 -0
  44. package/dist/cli/daemon.js.map +1 -0
  45. package/dist/cli/interactiveMenu.d.ts +5 -0
  46. package/dist/cli/interactiveMenu.js +225 -0
  47. package/dist/cli/interactiveMenu.js.map +1 -0
  48. package/dist/cli/musondaCli.d.ts +30 -0
  49. package/dist/cli/musondaCli.js +269 -0
  50. package/dist/cli/musondaCli.js.map +1 -0
  51. package/dist/cli/ui.d.ts +49 -0
  52. package/dist/cli/ui.js +90 -0
  53. package/dist/cli/ui.js.map +1 -0
  54. package/dist/cli.d.ts +9 -0
  55. package/dist/cli.js +315 -0
  56. package/dist/cli.js.map +1 -0
  57. package/dist/config/loader.d.ts +12 -0
  58. package/dist/config/loader.js +217 -0
  59. package/dist/config/loader.js.map +1 -0
  60. package/dist/config/paths.d.ts +11 -0
  61. package/dist/config/paths.js +18 -0
  62. package/dist/config/paths.js.map +1 -0
  63. package/dist/config/types.d.ts +246 -0
  64. package/dist/config/types.js +155 -0
  65. package/dist/config/types.js.map +1 -0
  66. package/dist/gateway/channels/cli.d.ts +37 -0
  67. package/dist/gateway/channels/cli.js +298 -0
  68. package/dist/gateway/channels/cli.js.map +1 -0
  69. package/dist/gateway/channels/discord.d.ts +18 -0
  70. package/dist/gateway/channels/discord.js +419 -0
  71. package/dist/gateway/channels/discord.js.map +1 -0
  72. package/dist/gateway/channels/slack.d.ts +26 -0
  73. package/dist/gateway/channels/slack.js +470 -0
  74. package/dist/gateway/channels/slack.js.map +1 -0
  75. package/dist/gateway/channels/webhook.d.ts +18 -0
  76. package/dist/gateway/channels/webhook.js +49 -0
  77. package/dist/gateway/channels/webhook.js.map +1 -0
  78. package/dist/gateway/http.d.ts +33 -0
  79. package/dist/gateway/http.js +605 -0
  80. package/dist/gateway/http.js.map +1 -0
  81. package/dist/gateway/server.d.ts +38 -0
  82. package/dist/gateway/server.js +233 -0
  83. package/dist/gateway/server.js.map +1 -0
  84. package/dist/gateway/types.d.ts +28 -0
  85. package/dist/gateway/types.js +2 -0
  86. package/dist/gateway/types.js.map +1 -0
  87. package/dist/index.d.ts +17 -0
  88. package/dist/index.js +32 -0
  89. package/dist/index.js.map +1 -0
  90. package/dist/memory/memoryManager.d.ts +22 -0
  91. package/dist/memory/memoryManager.js +200 -0
  92. package/dist/memory/memoryManager.js.map +1 -0
  93. package/dist/memory/storage.d.ts +24 -0
  94. package/dist/memory/storage.js +187 -0
  95. package/dist/memory/storage.js.map +1 -0
  96. package/dist/memory/types.d.ts +43 -0
  97. package/dist/memory/types.js +2 -0
  98. package/dist/memory/types.js.map +1 -0
  99. package/dist/plugins/manifest.d.ts +23 -0
  100. package/dist/plugins/manifest.js +185 -0
  101. package/dist/plugins/manifest.js.map +1 -0
  102. package/dist/plugins/mcp/mcpBridge.d.ts +31 -0
  103. package/dist/plugins/mcp/mcpBridge.js +115 -0
  104. package/dist/plugins/mcp/mcpBridge.js.map +1 -0
  105. package/dist/plugins/mcp/mcpClient.d.ts +43 -0
  106. package/dist/plugins/mcp/mcpClient.js +309 -0
  107. package/dist/plugins/mcp/mcpClient.js.map +1 -0
  108. package/dist/plugins/mcp/mcpConfig.d.ts +34 -0
  109. package/dist/plugins/mcp/mcpConfig.js +326 -0
  110. package/dist/plugins/mcp/mcpConfig.js.map +1 -0
  111. package/dist/plugins/mcp/types.d.ts +48 -0
  112. package/dist/plugins/mcp/types.js +2 -0
  113. package/dist/plugins/mcp/types.js.map +1 -0
  114. package/dist/plugins/pluginManager.d.ts +164 -0
  115. package/dist/plugins/pluginManager.js +1016 -0
  116. package/dist/plugins/pluginManager.js.map +1 -0
  117. package/dist/plugins/skills/frontmatterParser.d.ts +28 -0
  118. package/dist/plugins/skills/frontmatterParser.js +189 -0
  119. package/dist/plugins/skills/frontmatterParser.js.map +1 -0
  120. package/dist/plugins/skills/skillDiscovery.d.ts +15 -0
  121. package/dist/plugins/skills/skillDiscovery.js +148 -0
  122. package/dist/plugins/skills/skillDiscovery.js.map +1 -0
  123. package/dist/plugins/skills/skillTools.d.ts +8 -0
  124. package/dist/plugins/skills/skillTools.js +195 -0
  125. package/dist/plugins/skills/skillTools.js.map +1 -0
  126. package/dist/plugins/skills/types.d.ts +25 -0
  127. package/dist/plugins/skills/types.js +2 -0
  128. package/dist/plugins/skills/types.js.map +1 -0
  129. package/dist/plugins/types.d.ts +30 -0
  130. package/dist/plugins/types.js +2 -0
  131. package/dist/plugins/types.js.map +1 -0
  132. package/dist/scheduler/scheduler.d.ts +25 -0
  133. package/dist/scheduler/scheduler.js +239 -0
  134. package/dist/scheduler/scheduler.js.map +1 -0
  135. package/dist/scheduler/types.d.ts +39 -0
  136. package/dist/scheduler/types.js +2 -0
  137. package/dist/scheduler/types.js.map +1 -0
  138. package/dist/security/childProcessEnv.d.ts +5 -0
  139. package/dist/security/childProcessEnv.js +42 -0
  140. package/dist/security/childProcessEnv.js.map +1 -0
  141. package/dist/security/fileSandbox.d.ts +153 -0
  142. package/dist/security/fileSandbox.js +779 -0
  143. package/dist/security/fileSandbox.js.map +1 -0
  144. package/dist/service/index.d.ts +30 -0
  145. package/dist/service/index.js +41 -0
  146. package/dist/service/index.js.map +1 -0
  147. package/dist/service/systemd.d.ts +36 -0
  148. package/dist/service/systemd.js +409 -0
  149. package/dist/service/systemd.js.map +1 -0
  150. package/dist/service/types.d.ts +118 -0
  151. package/dist/service/types.js +6 -0
  152. package/dist/service/types.js.map +1 -0
  153. package/dist/tools/builtin/calcTools.d.ts +2 -0
  154. package/dist/tools/builtin/calcTools.js +51 -0
  155. package/dist/tools/builtin/calcTools.js.map +1 -0
  156. package/dist/tools/builtin/fileTools.d.ts +11 -0
  157. package/dist/tools/builtin/fileTools.js +352 -0
  158. package/dist/tools/builtin/fileTools.js.map +1 -0
  159. package/dist/tools/builtin/memoryTools.d.ts +4 -0
  160. package/dist/tools/builtin/memoryTools.js +123 -0
  161. package/dist/tools/builtin/memoryTools.js.map +1 -0
  162. package/dist/tools/builtin/noteTools.d.ts +4 -0
  163. package/dist/tools/builtin/noteTools.js +91 -0
  164. package/dist/tools/builtin/noteTools.js.map +1 -0
  165. package/dist/tools/builtin/pluginTools.d.ts +29 -0
  166. package/dist/tools/builtin/pluginTools.js +406 -0
  167. package/dist/tools/builtin/pluginTools.js.map +1 -0
  168. package/dist/tools/builtin/scheduleTools.d.ts +4 -0
  169. package/dist/tools/builtin/scheduleTools.js +156 -0
  170. package/dist/tools/builtin/scheduleTools.js.map +1 -0
  171. package/dist/tools/builtin/timeTools.d.ts +2 -0
  172. package/dist/tools/builtin/timeTools.js +41 -0
  173. package/dist/tools/builtin/timeTools.js.map +1 -0
  174. package/dist/tools/builtin/webTools.d.ts +12 -0
  175. package/dist/tools/builtin/webTools.js +325 -0
  176. package/dist/tools/builtin/webTools.js.map +1 -0
  177. package/dist/tools/registry.d.ts +15 -0
  178. package/dist/tools/registry.js +111 -0
  179. package/dist/tools/registry.js.map +1 -0
  180. package/dist/tools/types.d.ts +41 -0
  181. package/dist/tools/types.js +2 -0
  182. package/dist/tools/types.js.map +1 -0
  183. package/dist/utils/logger.d.ts +29 -0
  184. package/dist/utils/logger.js +124 -0
  185. package/dist/utils/logger.js.map +1 -0
  186. package/dist/wizard/onboarding.d.ts +3 -0
  187. package/dist/wizard/onboarding.js +408 -0
  188. package/dist/wizard/onboarding.js.map +1 -0
  189. package/package.json +69 -0
  190. package/plugins/example-calc/mcp.json +11 -0
  191. package/plugins/example-calc/plugin.json +12 -0
  192. package/plugins/example-calc/server.mjs +92 -0
  193. package/plugins/example-calc/skills/math-assistant/SKILL.md +15 -0
  194. package/plugins/plugin-builder/plugin.json +12 -0
  195. package/plugins/plugin-builder/skills/create-plugin/SKILL.md +149 -0
  196. package/plugins/plugin-builder/skills/manage-plugins/SKILL.md +157 -0
@@ -0,0 +1,225 @@
1
+ /**
2
+ * Musonda Interactive CLI Terminal Dashboard & Interactive Command Shell
3
+ */
4
+ import readline from 'node:readline/promises';
5
+ import { stdin as input, stdout as output } from 'node:process';
6
+ import { c, symbols, CLI_BANNER } from './ui.js';
7
+ import { configLoader } from '../config/loader.js';
8
+ import { checkGatewayHealth } from './daemon.js';
9
+ import { handleStartGateway, handleStopGateway } from './commands/gateway.js';
10
+ import { handleChatCommand } from './commands/chat.js';
11
+ import { handleAddPlugin, handleRemovePlugin, handleListPlugins, handleFindPlugins, } from './commands/plugins.js';
12
+ import { handleUpdateCommand } from './commands/update.js';
13
+ import { handleStatusCommand } from './commands/status.js';
14
+ import { handleDoctorCommand } from './commands/doctor.js';
15
+ import { handleSetupCommand } from './commands/setup.js';
16
+ import { handleHelpCommand } from './commands/help.js';
17
+ import { handleServiceCommand } from './commands/service.js';
18
+ export async function runInteractiveMenu() {
19
+ let running = true;
20
+ const rl = readline.createInterface({ input, output });
21
+ try {
22
+ while (running) {
23
+ const config = configLoader.load();
24
+ const host = config.gateway?.host || '127.0.0.1';
25
+ const port = config.gateway?.port || 4141;
26
+ const isOnline = await checkGatewayHealth(host, port);
27
+ const assistantName = config.assistant?.customName || config.assistant?.name || 'Musonda';
28
+ const modelName = config.model?.model || 'gpt-5.6-luna';
29
+ console.log(CLI_BANNER);
30
+ console.log(` ${c.dim}───────────────────────────────────────────────────────────────────${c.reset}`);
31
+ console.log(` ${c.bold}Assistant:${c.reset} ${c.magenta}${assistantName}${c.reset} | ${c.bold}Model:${c.reset} ${c.green}${modelName}${c.reset} | ${c.bold}Gateway:${c.reset} ${isOnline ? c.green + '● Online' : c.red + '○ Offline'}${c.reset} (http://${host}:${port})`);
32
+ console.log(` ${c.dim}───────────────────────────────────────────────────────────────────${c.reset}\n`);
33
+ console.log(` ${c.bold}${c.cyan}[1]${c.reset} ${symbols.chat} ${c.bold}Start Chat CLI${c.reset} (Talk directly to ${assistantName})`);
34
+ console.log(` ${c.bold}${c.cyan}[2]${c.reset} ${symbols.rocket} ${c.bold}Start Gateway Daemon${c.reset} (Run server in background)`);
35
+ console.log(` ${c.bold}${c.cyan}[3]${c.reset} ${symbols.error} ${c.bold}Stop Gateway Daemon${c.reset}`);
36
+ console.log(` ${c.bold}${c.cyan}[4]${c.reset} ${symbols.plugin} ${c.bold}Manage Plugins${c.reset} (Add, list, search, remove Agent Plugins)`);
37
+ console.log(` ${c.bold}${c.cyan}[5]${c.reset} ${symbols.refresh} ${c.bold}Update Musonda & Plugins${c.reset} (Check & apply updates)`);
38
+ console.log(` ${c.bold}${c.cyan}[6]${c.reset} ${symbols.chart} ${c.bold}System Status & Health${c.reset}`);
39
+ console.log(` ${c.bold}${c.cyan}[7]${c.reset} ${symbols.doctor} ${c.bold}Run Musonda Doctor${c.reset} (Environment diagnostics)`);
40
+ console.log(` ${c.bold}${c.cyan}[8]${c.reset} ${symbols.gear} ${c.bold}Setup & Onboarding Wizard${c.reset}`);
41
+ console.log(` ${c.bold}${c.cyan}[9]${c.reset} ${symbols.gear} ${c.bold}Manage Background Service${c.reset} (Install, check, export .service file)`);
42
+ console.log(` ${c.bold}${c.cyan}[10]${c.reset} ${symbols.terminal} ${c.bold}Interactive Command Shell${c.reset} (${c.dim}musonda>${c.reset})`);
43
+ console.log(` ${c.bold}${c.cyan}[11]${c.reset} ${symbols.book} ${c.bold}Help & Command Reference${c.reset}`);
44
+ console.log(` ${c.bold}${c.cyan}[0]${c.reset} ${symbols.exit} ${c.bold}Exit${c.reset}\n`);
45
+ const choice = (await rl.question(`${c.bold}${c.yellow}Choose an option [0-11]:${c.reset} `)).trim();
46
+ switch (choice) {
47
+ case '1':
48
+ case 'chat':
49
+ case 'cli': {
50
+ rl.pause();
51
+ await handleChatCommand({ standalone: false });
52
+ rl.resume();
53
+ break;
54
+ }
55
+ case '2':
56
+ case 'start': {
57
+ const bgAnswer = await rl.question(`Start in background daemon mode? [Y/n]: `);
58
+ const isDaemon = bgAnswer.trim().toLowerCase() !== 'n';
59
+ await handleStartGateway({ daemon: isDaemon });
60
+ await new Promise((r) => setTimeout(r, 1000));
61
+ break;
62
+ }
63
+ case '3':
64
+ case 'stop': {
65
+ await handleStopGateway({});
66
+ break;
67
+ }
68
+ case '4':
69
+ case 'plugin':
70
+ case 'plugins': {
71
+ console.log(`\n ${c.bold}Plugin Management:${c.reset}`);
72
+ console.log(` [1] Add / Install Plugin (e.g. example-calc, github:org/repo)`);
73
+ console.log(` [2] List Installed Plugins`);
74
+ console.log(` [3] Search Ecosystem`);
75
+ console.log(` [4] Remove Plugin`);
76
+ console.log(` [0] Back to Main Menu\n`);
77
+ const pChoice = (await rl.question(`Select action [0-4]: `)).trim();
78
+ if (pChoice === '1') {
79
+ const pSource = await rl.question(`Enter plugin name, local path, or Git URL: `);
80
+ if (pSource.trim()) {
81
+ await handleAddPlugin(pSource.trim());
82
+ }
83
+ }
84
+ else if (pChoice === '2') {
85
+ await handleListPlugins();
86
+ }
87
+ else if (pChoice === '3') {
88
+ const q = await rl.question(`Search query (optional, press Enter for all): `);
89
+ await handleFindPlugins(q.trim());
90
+ }
91
+ else if (pChoice === '4') {
92
+ const pName = await rl.question(`Enter plugin name to remove: `);
93
+ if (pName.trim()) {
94
+ await handleRemovePlugin(pName.trim());
95
+ }
96
+ }
97
+ break;
98
+ }
99
+ case '5':
100
+ case 'update': {
101
+ console.log(`\n ${c.bold}Update Options:${c.reset}`);
102
+ console.log(` [1] Update Musonda Agent & All Plugins`);
103
+ console.log(` [2] Update Musonda Agent Only`);
104
+ console.log(` [3] Update Plugins Only`);
105
+ console.log(` [0] Cancel\n`);
106
+ const uChoice = (await rl.question(`Select option [0-3]: `)).trim();
107
+ if (uChoice === '1') {
108
+ await handleUpdateCommand();
109
+ }
110
+ else if (uChoice === '2') {
111
+ await handleUpdateCommand('agent');
112
+ }
113
+ else if (uChoice === '3') {
114
+ await handleUpdateCommand('plugins');
115
+ }
116
+ break;
117
+ }
118
+ case '6':
119
+ case 'status': {
120
+ await handleStatusCommand();
121
+ break;
122
+ }
123
+ case '7':
124
+ case 'doctor': {
125
+ await handleDoctorCommand();
126
+ break;
127
+ }
128
+ case '8':
129
+ case 'setup':
130
+ case 'onboard': {
131
+ rl.pause();
132
+ await handleSetupCommand();
133
+ rl.resume();
134
+ break;
135
+ }
136
+ case '9':
137
+ case 'service':
138
+ case 'daemon': {
139
+ console.log(`\n ${c.bold}Background Service Options (.service):${c.reset}`);
140
+ console.log(` [1] Check Service Status`);
141
+ console.log(` [2] Install Systemd Service`);
142
+ console.log(` [3] Export .service File`);
143
+ console.log(` [4] Uninstall Service`);
144
+ console.log(` [0] Back to Main Menu\n`);
145
+ const sChoice = (await rl.question(`Select action [0-4]: `)).trim();
146
+ if (sChoice === '1') {
147
+ await handleServiceCommand('status');
148
+ }
149
+ else if (sChoice === '2') {
150
+ await handleServiceCommand('install');
151
+ }
152
+ else if (sChoice === '3') {
153
+ const outPath = await rl.question(`Output path [default: ./musonda.service]: `);
154
+ await handleServiceCommand('generate', [outPath.trim() || './musonda.service']);
155
+ }
156
+ else if (sChoice === '4') {
157
+ await handleServiceCommand('uninstall');
158
+ }
159
+ break;
160
+ }
161
+ case '10':
162
+ case 'shell': {
163
+ rl.pause();
164
+ await runInteractiveShell();
165
+ rl.resume();
166
+ break;
167
+ }
168
+ case '11':
169
+ case 'help': {
170
+ handleHelpCommand();
171
+ break;
172
+ }
173
+ case '0':
174
+ case 'exit':
175
+ case 'quit': {
176
+ console.log(`\n${c.yellow}Goodbye from Musonda!${c.reset}\n`);
177
+ running = false;
178
+ break;
179
+ }
180
+ default: {
181
+ if (choice) {
182
+ console.log(`\n${c.yellow}Unknown option "${choice}". Enter 0-11 or "help".${c.reset}`);
183
+ }
184
+ break;
185
+ }
186
+ }
187
+ if (running && choice !== '1' && choice !== '10') {
188
+ await rl.question(`\n${c.dim}Press Enter to return to menu...${c.reset}`);
189
+ }
190
+ }
191
+ }
192
+ finally {
193
+ rl.close();
194
+ }
195
+ }
196
+ export async function runInteractiveShell() {
197
+ console.log(`\n${c.bold}${c.cyan}=== Musonda Interactive Command Shell ===${c.reset}`);
198
+ console.log(`${c.dim}Type commands like "start gateway", "add plugin <name>", "status", "update", "cli", or "exit".${c.reset}\n`);
199
+ const { dispatchCliArgs } = await import('./musondaCli.js');
200
+ const rl = readline.createInterface({ input, output });
201
+ try {
202
+ let inShell = true;
203
+ while (inShell) {
204
+ const line = await rl.question(`${c.bold}${c.cyan}musonda>${c.reset} `);
205
+ const trimmed = line.trim();
206
+ if (!trimmed)
207
+ continue;
208
+ if (trimmed === 'exit' || trimmed === 'quit' || trimmed === 'back') {
209
+ inShell = false;
210
+ break;
211
+ }
212
+ const args = trimmed.split(/\s+/);
213
+ try {
214
+ await dispatchCliArgs(args, { inShell: true });
215
+ }
216
+ catch (err) {
217
+ console.error(`${symbols.error} ${c.red}Command failed: ${err.message}${c.reset}`);
218
+ }
219
+ }
220
+ }
221
+ finally {
222
+ rl.close();
223
+ }
224
+ }
225
+ //# sourceMappingURL=interactiveMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactiveMenu.js","sourceRoot":"","sources":["../../src/cli/interactiveMenu.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Musonda Unified CLI Controller & Subcommand Router
3
+ */
4
+ export interface CliFlags {
5
+ daemon?: boolean;
6
+ port?: number;
7
+ host?: string;
8
+ verbose?: boolean;
9
+ yes?: boolean;
10
+ checkOnly?: boolean;
11
+ noDeps?: boolean;
12
+ purgeData?: boolean;
13
+ help?: boolean;
14
+ version?: boolean;
15
+ foreground?: boolean;
16
+ user?: boolean;
17
+ system?: boolean;
18
+ file?: boolean;
19
+ name?: string;
20
+ path?: string;
21
+ enable?: boolean;
22
+ }
23
+ export declare function parseCliTokens(rawArgs: string[]): {
24
+ commands: string[];
25
+ flags: CliFlags;
26
+ };
27
+ export declare function dispatchCliArgs(rawArgs: string[], context?: {
28
+ inShell?: boolean;
29
+ }): Promise<void>;
30
+ export declare function runMusondaCli(argv: string[]): Promise<void>;
@@ -0,0 +1,269 @@
1
+ /**
2
+ * Musonda Unified CLI Controller & Subcommand Router
3
+ */
4
+ import { c, symbols } from './ui.js';
5
+ import { handleStartGateway, handleStopGateway, handleRestartGateway } from './commands/gateway.js';
6
+ import { handleChatCommand } from './commands/chat.js';
7
+ import { handleAddPlugin, handleRemovePlugin, handleListPlugins, handleFindPlugins, } from './commands/plugins.js';
8
+ import { handleUpdateCommand, getLocalPackageVersion } from './commands/update.js';
9
+ import { handleStatusCommand } from './commands/status.js';
10
+ import { handleDoctorCommand } from './commands/doctor.js';
11
+ import { handleSetupCommand } from './commands/setup.js';
12
+ import { handleHelpCommand } from './commands/help.js';
13
+ import { handleServiceCommand } from './commands/service.js';
14
+ import { runInteractiveMenu } from './interactiveMenu.js';
15
+ export function parseCliTokens(rawArgs) {
16
+ const commands = [];
17
+ const flags = {};
18
+ for (let i = 0; i < rawArgs.length; i++) {
19
+ const arg = rawArgs[i];
20
+ if (arg === '-d' || arg === '--daemon') {
21
+ flags.daemon = true;
22
+ }
23
+ else if (arg === '--foreground') {
24
+ flags.foreground = true;
25
+ }
26
+ else if (arg === '-v' || arg === '--verbose') {
27
+ flags.verbose = true;
28
+ }
29
+ else if (arg === '-y' || arg === '--yes') {
30
+ flags.yes = true;
31
+ }
32
+ else if (arg === '--check-only') {
33
+ flags.checkOnly = true;
34
+ }
35
+ else if (arg === '--no-deps') {
36
+ flags.noDeps = true;
37
+ }
38
+ else if (arg === '--purge-data') {
39
+ flags.purgeData = true;
40
+ }
41
+ else if (arg === '-h' || arg === '--help') {
42
+ flags.help = true;
43
+ }
44
+ else if (arg === '--version') {
45
+ flags.version = true;
46
+ }
47
+ else if (arg === '--user') {
48
+ flags.user = true;
49
+ }
50
+ else if (arg === '--system') {
51
+ flags.system = true;
52
+ }
53
+ else if (arg === '--file') {
54
+ flags.file = true;
55
+ }
56
+ else if (arg === '--enable') {
57
+ flags.enable = true;
58
+ }
59
+ else if (arg === '--name') {
60
+ const next = rawArgs[++i];
61
+ if (next)
62
+ flags.name = next;
63
+ }
64
+ else if (arg.startsWith('--name=')) {
65
+ flags.name = arg.split('=')[1];
66
+ }
67
+ else if (arg === '--path') {
68
+ const next = rawArgs[++i];
69
+ if (next)
70
+ flags.path = next;
71
+ }
72
+ else if (arg.startsWith('--path=')) {
73
+ flags.path = arg.split('=')[1];
74
+ }
75
+ else if (arg === '-p' || arg === '--port') {
76
+ const next = rawArgs[++i];
77
+ if (next && !isNaN(Number(next))) {
78
+ flags.port = Number(next);
79
+ }
80
+ }
81
+ else if (arg === '--host') {
82
+ const next = rawArgs[++i];
83
+ if (next) {
84
+ flags.host = next;
85
+ }
86
+ }
87
+ else if (arg.startsWith('--port=')) {
88
+ flags.port = Number(arg.split('=')[1]);
89
+ }
90
+ else if (arg.startsWith('--host=')) {
91
+ flags.host = arg.split('=')[1];
92
+ }
93
+ else {
94
+ commands.push(arg);
95
+ }
96
+ }
97
+ return { commands, flags };
98
+ }
99
+ export async function dispatchCliArgs(rawArgs, context = {}) {
100
+ const { commands, flags } = parseCliTokens(rawArgs);
101
+ if (flags.version || commands[0] === 'version') {
102
+ const ver = getLocalPackageVersion();
103
+ console.log(`Musonda v${ver} (Node.js ${process.version} on ${process.platform} ${process.arch})`);
104
+ return;
105
+ }
106
+ if (flags.help && commands.length === 0) {
107
+ handleHelpCommand();
108
+ return;
109
+ }
110
+ const primary = commands[0]?.toLowerCase() || '';
111
+ const secondary = commands[1]?.toLowerCase() || '';
112
+ const tertiary = commands[2]?.toLowerCase() || '';
113
+ // 1. Interactive mode explicit commands
114
+ if (primary === 'interactive' || primary === 'menu') {
115
+ await runInteractiveMenu();
116
+ return;
117
+ }
118
+ // 2. Help command
119
+ if (primary === 'help') {
120
+ handleHelpCommand(secondary || tertiary);
121
+ return;
122
+ }
123
+ // 3. Start Gateway command:
124
+ // e.g. "musonda start gateway", "musonda gateway start", "musonda start", "musonda gateway"
125
+ if ((primary === 'start' && (secondary === 'gateway' || secondary === 'server' || !secondary)) ||
126
+ (primary === 'gateway' && (secondary === 'start' || !secondary))) {
127
+ await handleStartGateway({
128
+ daemon: flags.daemon,
129
+ port: flags.port,
130
+ host: flags.host,
131
+ verbose: flags.verbose,
132
+ foreground: flags.foreground,
133
+ });
134
+ return;
135
+ }
136
+ // 4. Stop Gateway command:
137
+ // e.g. "musonda stop gateway", "musonda stop", "musonda gateway stop"
138
+ if ((primary === 'stop' && (secondary === 'gateway' || secondary === 'server' || !secondary)) ||
139
+ (primary === 'gateway' && secondary === 'stop')) {
140
+ await handleStopGateway({
141
+ port: flags.port,
142
+ host: flags.host,
143
+ });
144
+ return;
145
+ }
146
+ // 5. Restart Gateway command:
147
+ // e.g. "musonda restart gateway", "musonda restart"
148
+ if ((primary === 'restart' && (secondary === 'gateway' || !secondary)) ||
149
+ (primary === 'gateway' && secondary === 'restart')) {
150
+ await handleRestartGateway({
151
+ daemon: flags.daemon,
152
+ port: flags.port,
153
+ host: flags.host,
154
+ verbose: flags.verbose,
155
+ });
156
+ return;
157
+ }
158
+ // 6. CLI / Chat command:
159
+ // e.g. "musonda cli", "musonda chat", "musonda agent"
160
+ if (primary === 'cli' || primary === 'chat' || primary === 'agent') {
161
+ await handleChatCommand({ standalone: !context.inShell });
162
+ return;
163
+ }
164
+ // 7. Add Plugin command:
165
+ // e.g. "musonda add plugin <name>", "musonda plugin add <name>", "musonda plugins add <name>", "musonda plugins install <name>"
166
+ if ((primary === 'add' && (secondary === 'plugin' || secondary === 'plugins')) ||
167
+ ((primary === 'plugin' || primary === 'plugins') && (secondary === 'add' || secondary === 'install')) ||
168
+ (primary === 'install' && (secondary === 'plugin' || secondary === 'plugins'))) {
169
+ const pluginSource = commands[2] || (secondary !== 'plugin' && secondary !== 'plugins' ? commands[1] : commands[2]);
170
+ if (!pluginSource) {
171
+ console.log(`\n${symbols.error} ${c.red}Please specify a plugin name, local directory, or Git URL.${c.reset}`);
172
+ console.log(` Usage: ${c.bold}musonda add plugin <name>${c.reset}\n`);
173
+ return;
174
+ }
175
+ await handleAddPlugin(pluginSource, { noDeps: flags.noDeps });
176
+ return;
177
+ }
178
+ // Direct "musonda add <source>" shorthand if source looks like a plugin or path
179
+ if (primary === 'add' && secondary && secondary !== 'gateway') {
180
+ await handleAddPlugin(commands[1], { noDeps: flags.noDeps });
181
+ return;
182
+ }
183
+ // 8. Remove Plugin command:
184
+ // e.g. "musonda remove plugin <name>", "musonda plugin remove <name>", "musonda plugins remove <name>", "musonda plugin uninstall <name>"
185
+ if ((primary === 'remove' && (secondary === 'plugin' || secondary === 'plugins')) ||
186
+ ((primary === 'plugin' || primary === 'plugins') && (secondary === 'remove' || secondary === 'uninstall' || secondary === 'delete')) ||
187
+ (primary === 'uninstall' && (secondary === 'plugin' || secondary === 'plugins'))) {
188
+ const pluginName = commands[2] || (secondary !== 'plugin' && secondary !== 'plugins' ? commands[1] : commands[2]);
189
+ if (!pluginName) {
190
+ console.log(`\n${symbols.error} ${c.red}Please specify a plugin name to remove.${c.reset}`);
191
+ console.log(` Usage: ${c.bold}musonda remove plugin <name>${c.reset}\n`);
192
+ return;
193
+ }
194
+ await handleRemovePlugin(pluginName, { purgeData: flags.purgeData });
195
+ return;
196
+ }
197
+ // 9. List Plugins command:
198
+ // e.g. "musonda list plugins", "musonda plugin list", "musonda plugins list", "musonda plugins"
199
+ if ((primary === 'list' && (secondary === 'plugins' || secondary === 'plugin' || !secondary)) ||
200
+ ((primary === 'plugin' || primary === 'plugins') && (secondary === 'list' || !secondary))) {
201
+ await handleListPlugins({ verbose: flags.verbose });
202
+ return;
203
+ }
204
+ // 10. Find / Search Plugins command:
205
+ // e.g. "musonda find plugins [query]", "musonda plugin search [query]", "musonda search plugins [query]"
206
+ if ((primary === 'find' && (secondary === 'plugins' || secondary === 'plugin')) ||
207
+ (primary === 'search' && (secondary === 'plugins' || secondary === 'plugin')) ||
208
+ ((primary === 'plugin' || primary === 'plugins') && (secondary === 'find' || secondary === 'search'))) {
209
+ const query = commands[2] || '';
210
+ await handleFindPlugins(query);
211
+ return;
212
+ }
213
+ if ((primary === 'find' || primary === 'search') && secondary) {
214
+ await handleFindPlugins(commands[1]);
215
+ return;
216
+ }
217
+ // 11. Update command:
218
+ // e.g. "musonda update", "musonda update agent", "musonda update plugins", "musonda update plugin <name>"
219
+ if (primary === 'update' || primary === 'upgrade') {
220
+ let target = secondary;
221
+ if (secondary === 'plugin' && commands[2]) {
222
+ target = commands[2];
223
+ }
224
+ await handleUpdateCommand(target, { yes: flags.yes, checkOnly: flags.checkOnly });
225
+ return;
226
+ }
227
+ // 12. Status command:
228
+ // e.g. "musonda status", "musonda info"
229
+ if (primary === 'status' || primary === 'info') {
230
+ await handleStatusCommand();
231
+ return;
232
+ }
233
+ // 13. Doctor command:
234
+ // e.g. "musonda doctor", "musonda check"
235
+ if (primary === 'doctor' || primary === 'check') {
236
+ await handleDoctorCommand();
237
+ return;
238
+ }
239
+ // 14. Setup / Onboarding command:
240
+ // e.g. "musonda setup", "musonda onboard", "musonda init"
241
+ if (primary === 'setup' || primary === 'onboard' || primary === 'init') {
242
+ await handleSetupCommand();
243
+ return;
244
+ }
245
+ // 15. Service / Systemd daemon management:
246
+ // e.g. "musonda service", "musonda service status", "musonda service install", "musonda service generate", "musonda service uninstall"
247
+ if (primary === 'service') {
248
+ await handleServiceCommand(secondary, commands.slice(1), flags);
249
+ return;
250
+ }
251
+ // Unknown command
252
+ console.log(`\n${symbols.error} ${c.red}Unknown command: "${rawArgs.join(' ')}"${c.reset}`);
253
+ console.log(` Run ${c.bold}musonda help${c.reset} to see all available commands, or simply ${c.bold}musonda${c.reset} for the interactive dashboard.\n`);
254
+ }
255
+ export async function runMusondaCli(argv) {
256
+ // If no arguments provided
257
+ if (argv.length === 0) {
258
+ if (process.stdin.isTTY) {
259
+ await runInteractiveMenu();
260
+ }
261
+ else {
262
+ // Non-interactive environment without arguments (e.g. Docker container or npm start)
263
+ await handleStartGateway({ foreground: true });
264
+ }
265
+ return;
266
+ }
267
+ await dispatchCliArgs(argv);
268
+ }
269
+ //# sourceMappingURL=musondaCli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"musondaCli.js","sourceRoot":"","sources":["../../src/cli/musondaCli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Musonda CLI UI & Terminal Styling Helpers
3
+ */
4
+ export declare const c: {
5
+ reset: string;
6
+ bold: string;
7
+ dim: string;
8
+ italic: string;
9
+ underline: string;
10
+ red: string;
11
+ green: string;
12
+ yellow: string;
13
+ blue: string;
14
+ magenta: string;
15
+ cyan: string;
16
+ white: string;
17
+ gray: string;
18
+ brightRed: string;
19
+ brightGreen: string;
20
+ brightYellow: string;
21
+ brightBlue: string;
22
+ brightMagenta: string;
23
+ brightCyan: string;
24
+ brightWhite: string;
25
+ };
26
+ export declare const symbols: {
27
+ success: string;
28
+ error: string;
29
+ warning: string;
30
+ info: string;
31
+ bullet: string;
32
+ pointer: string;
33
+ sparkle: string;
34
+ rocket: string;
35
+ chat: string;
36
+ plugin: string;
37
+ refresh: string;
38
+ chart: string;
39
+ doctor: string;
40
+ gear: string;
41
+ exit: string;
42
+ terminal: string;
43
+ book: string;
44
+ };
45
+ export declare const CLI_BANNER: string;
46
+ export declare function printBanner(): void;
47
+ export declare function printSectionHeader(title: string, subtitle?: string): void;
48
+ export declare function formatTable(headers: string[], rows: string[][]): string;
49
+ export declare function stripAnsi(str: string): string;