lua-cli 3.2.0-alpha.2 → 3.3.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 (328) hide show
  1. package/dist/api/agent.api.service.js +1 -0
  2. package/dist/api/agent.api.service.js.map +1 -0
  3. package/dist/api/auth.api.service.js +1 -0
  4. package/dist/api/auth.api.service.js.map +1 -0
  5. package/dist/api/basket.api.service.js +1 -0
  6. package/dist/api/basket.api.service.js.map +1 -0
  7. package/dist/api/cdn.api.service.js +1 -0
  8. package/dist/api/cdn.api.service.js.map +1 -0
  9. package/dist/api/chat.api.service.js +1 -0
  10. package/dist/api/chat.api.service.js.map +1 -0
  11. package/dist/api/credentials.js +1 -0
  12. package/dist/api/credentials.js.map +1 -0
  13. package/dist/api/custom.data.api.service.js +1 -0
  14. package/dist/api/custom.data.api.service.js.map +1 -0
  15. package/dist/api/developer.api.service.js +1 -0
  16. package/dist/api/developer.api.service.js.map +1 -0
  17. package/dist/api/job.api.service.js +1 -0
  18. package/dist/api/job.api.service.js.map +1 -0
  19. package/dist/api/lazy-instances.js +1 -0
  20. package/dist/api/lazy-instances.js.map +1 -0
  21. package/dist/api/logs.api.service.d.ts +1 -1
  22. package/dist/api/logs.api.service.js +1 -0
  23. package/dist/api/logs.api.service.js.map +1 -0
  24. package/dist/api/marketplace.api.service.js +1 -0
  25. package/dist/api/marketplace.api.service.js.map +1 -0
  26. package/dist/api/order.api.service.js +1 -0
  27. package/dist/api/order.api.service.js.map +1 -0
  28. package/dist/api/persona.api.service.js +1 -0
  29. package/dist/api/persona.api.service.js.map +1 -0
  30. package/dist/api/postprocessor.api.service.js +1 -0
  31. package/dist/api/postprocessor.api.service.js.map +1 -0
  32. package/dist/api/preprocessor.api.service.js +1 -0
  33. package/dist/api/preprocessor.api.service.js.map +1 -0
  34. package/dist/api/products.api.service.d.ts +17 -5
  35. package/dist/api/products.api.service.js +22 -9
  36. package/dist/api/products.api.service.js.map +1 -0
  37. package/dist/api/skills.api.service.js +1 -0
  38. package/dist/api/skills.api.service.js.map +1 -0
  39. package/dist/api/tool.api.service.js +1 -0
  40. package/dist/api/tool.api.service.js.map +1 -0
  41. package/dist/api/user.data.api.service.js +1 -0
  42. package/dist/api/user.data.api.service.js.map +1 -0
  43. package/dist/api/webhook.api.service.js +1 -0
  44. package/dist/api/webhook.api.service.js.map +1 -0
  45. package/dist/api/whatsapp-templates.api.service.js +1 -0
  46. package/dist/api/whatsapp-templates.api.service.js.map +1 -0
  47. package/dist/api-exports.d.ts +23 -6
  48. package/dist/api-exports.js +27 -5
  49. package/dist/api-exports.js.map +1 -0
  50. package/dist/cli/command-definitions.js +321 -88
  51. package/dist/cli/command-definitions.js.map +1 -0
  52. package/dist/commands/admin.js +1 -0
  53. package/dist/commands/admin.js.map +1 -0
  54. package/dist/commands/agents.js +1 -0
  55. package/dist/commands/agents.js.map +1 -0
  56. package/dist/commands/apiKey.d.ts +5 -2
  57. package/dist/commands/apiKey.js +9 -2
  58. package/dist/commands/apiKey.js.map +1 -0
  59. package/dist/commands/channels.d.ts +4 -9
  60. package/dist/commands/channels.js +141 -84
  61. package/dist/commands/channels.js.map +1 -0
  62. package/dist/commands/chat.d.ts +4 -2
  63. package/dist/commands/chat.js +127 -32
  64. package/dist/commands/chat.js.map +1 -0
  65. package/dist/commands/chatClear.d.ts +3 -2
  66. package/dist/commands/chatClear.js +17 -15
  67. package/dist/commands/chatClear.js.map +1 -0
  68. package/dist/commands/compile.js +68 -4
  69. package/dist/commands/compile.js.map +1 -0
  70. package/dist/commands/completion.js +1 -0
  71. package/dist/commands/completion.js.map +1 -0
  72. package/dist/commands/configure.js +1 -0
  73. package/dist/commands/configure.js.map +1 -0
  74. package/dist/commands/deploy.d.ts +5 -24
  75. package/dist/commands/deploy.js +76 -48
  76. package/dist/commands/deploy.js.map +1 -0
  77. package/dist/commands/destroy.d.ts +5 -2
  78. package/dist/commands/destroy.js +15 -2
  79. package/dist/commands/destroy.js.map +1 -0
  80. package/dist/commands/dev.js +1 -0
  81. package/dist/commands/dev.js.map +1 -0
  82. package/dist/commands/docs.js +1 -0
  83. package/dist/commands/docs.js.map +1 -0
  84. package/dist/commands/env.d.ts +3 -1
  85. package/dist/commands/env.js +323 -122
  86. package/dist/commands/env.js.map +1 -0
  87. package/dist/commands/evals.js +1 -0
  88. package/dist/commands/evals.js.map +1 -0
  89. package/dist/commands/features.d.ts +5 -9
  90. package/dist/commands/features.js +250 -129
  91. package/dist/commands/features.js.map +1 -0
  92. package/dist/commands/index.js +1 -0
  93. package/dist/commands/index.js.map +1 -0
  94. package/dist/commands/init.d.ts +7 -1
  95. package/dist/commands/init.js +252 -65
  96. package/dist/commands/init.js.map +1 -0
  97. package/dist/commands/jobs.d.ts +5 -13
  98. package/dist/commands/jobs.js +450 -364
  99. package/dist/commands/jobs.js.map +1 -0
  100. package/dist/commands/logs.d.ts +5 -10
  101. package/dist/commands/logs.js +260 -103
  102. package/dist/commands/logs.js.map +1 -0
  103. package/dist/commands/marketplace.d.ts +23 -2
  104. package/dist/commands/marketplace.js +531 -7
  105. package/dist/commands/marketplace.js.map +1 -0
  106. package/dist/commands/mcp.d.ts +5 -11
  107. package/dist/commands/mcp.js +304 -288
  108. package/dist/commands/mcp.js.map +1 -0
  109. package/dist/commands/persona.d.ts +5 -9
  110. package/dist/commands/persona.js +350 -232
  111. package/dist/commands/persona.js.map +1 -0
  112. package/dist/commands/postprocessors.d.ts +6 -2
  113. package/dist/commands/postprocessors.js +388 -280
  114. package/dist/commands/postprocessors.js.map +1 -0
  115. package/dist/commands/preprocessors.d.ts +6 -2
  116. package/dist/commands/preprocessors.js +388 -280
  117. package/dist/commands/preprocessors.js.map +1 -0
  118. package/dist/commands/production.d.ts +5 -8
  119. package/dist/commands/production.js +318 -228
  120. package/dist/commands/production.js.map +1 -0
  121. package/dist/commands/push.js +386 -427
  122. package/dist/commands/push.js.map +1 -0
  123. package/dist/commands/resources.d.ts +5 -10
  124. package/dist/commands/resources.js +220 -154
  125. package/dist/commands/resources.js.map +1 -0
  126. package/dist/commands/skills.d.ts +5 -9
  127. package/dist/commands/skills.js +355 -278
  128. package/dist/commands/skills.js.map +1 -0
  129. package/dist/commands/sync.d.ts +10 -8
  130. package/dist/commands/sync.js +111 -19
  131. package/dist/commands/sync.js.map +1 -0
  132. package/dist/commands/test.d.ts +1 -11
  133. package/dist/commands/test.js +396 -438
  134. package/dist/commands/test.js.map +1 -0
  135. package/dist/commands/webhooks.d.ts +5 -11
  136. package/dist/commands/webhooks.js +357 -290
  137. package/dist/commands/webhooks.js.map +1 -0
  138. package/dist/common/basket.instance.js +1 -0
  139. package/dist/common/basket.instance.js.map +1 -0
  140. package/dist/common/data.entry.instance.js +1 -0
  141. package/dist/common/data.entry.instance.js.map +1 -0
  142. package/dist/common/http.client.js +1 -0
  143. package/dist/common/http.client.js.map +1 -0
  144. package/dist/common/job.instance.js +1 -0
  145. package/dist/common/job.instance.js.map +1 -0
  146. package/dist/common/order.instance.js +1 -0
  147. package/dist/common/order.instance.js.map +1 -0
  148. package/dist/common/product.instance.js +1 -0
  149. package/dist/common/product.instance.js.map +1 -0
  150. package/dist/common/product.pagination.instance.js +1 -0
  151. package/dist/common/product.pagination.instance.js.map +1 -0
  152. package/dist/common/product.search.instance.js +1 -0
  153. package/dist/common/product.search.instance.js.map +1 -0
  154. package/dist/common/user.instance.js +1 -0
  155. package/dist/common/user.instance.js.map +1 -0
  156. package/dist/config/auth.constants.js +1 -0
  157. package/dist/config/auth.constants.js.map +1 -0
  158. package/dist/config/compile.constants.js +1 -0
  159. package/dist/config/compile.constants.js.map +1 -0
  160. package/dist/config/constants.js +1 -0
  161. package/dist/config/constants.js.map +1 -0
  162. package/dist/config/dev.constants.js +1 -0
  163. package/dist/config/dev.constants.js.map +1 -0
  164. package/dist/config/init.constants.d.ts +0 -8
  165. package/dist/config/init.constants.js +1 -24
  166. package/dist/config/init.constants.js.map +1 -0
  167. package/dist/errors/auth.error.js +1 -0
  168. package/dist/errors/auth.error.js.map +1 -0
  169. package/dist/errors/index.js +1 -0
  170. package/dist/errors/index.js.map +1 -0
  171. package/dist/index.js +1 -0
  172. package/dist/index.js.map +1 -0
  173. package/dist/interfaces/admin.js +1 -0
  174. package/dist/interfaces/admin.js.map +1 -0
  175. package/dist/interfaces/agent.d.ts +2 -27
  176. package/dist/interfaces/agent.js +1 -0
  177. package/dist/interfaces/agent.js.map +1 -0
  178. package/dist/interfaces/baskets.js +1 -0
  179. package/dist/interfaces/baskets.js.map +1 -0
  180. package/dist/interfaces/cdn.js +1 -0
  181. package/dist/interfaces/cdn.js.map +1 -0
  182. package/dist/interfaces/chat.js +1 -0
  183. package/dist/interfaces/chat.js.map +1 -0
  184. package/dist/interfaces/common.js +1 -0
  185. package/dist/interfaces/common.js.map +1 -0
  186. package/dist/interfaces/compile.js +1 -0
  187. package/dist/interfaces/compile.js.map +1 -0
  188. package/dist/interfaces/custom.data.js +1 -0
  189. package/dist/interfaces/custom.data.js.map +1 -0
  190. package/dist/interfaces/deploy.js +1 -0
  191. package/dist/interfaces/deploy.js.map +1 -0
  192. package/dist/interfaces/dev.js +1 -0
  193. package/dist/interfaces/dev.js.map +1 -0
  194. package/dist/interfaces/index.js +1 -0
  195. package/dist/interfaces/index.js.map +1 -0
  196. package/dist/interfaces/init.d.ts +0 -19
  197. package/dist/interfaces/init.js +1 -0
  198. package/dist/interfaces/init.js.map +1 -0
  199. package/dist/interfaces/jobs.js +1 -0
  200. package/dist/interfaces/jobs.js.map +1 -0
  201. package/dist/interfaces/logs.js +1 -0
  202. package/dist/interfaces/logs.js.map +1 -0
  203. package/dist/interfaces/lua.d.ts +11 -1
  204. package/dist/interfaces/lua.js +1 -0
  205. package/dist/interfaces/lua.js.map +1 -0
  206. package/dist/interfaces/marketplace.js +1 -0
  207. package/dist/interfaces/marketplace.js.map +1 -0
  208. package/dist/interfaces/mcp.d.ts +28 -1
  209. package/dist/interfaces/mcp.js +1 -0
  210. package/dist/interfaces/mcp.js.map +1 -0
  211. package/dist/interfaces/message.js +1 -0
  212. package/dist/interfaces/message.js.map +1 -0
  213. package/dist/interfaces/orders.js +1 -0
  214. package/dist/interfaces/orders.js.map +1 -0
  215. package/dist/interfaces/persona.js +1 -0
  216. package/dist/interfaces/persona.js.map +1 -0
  217. package/dist/interfaces/postprocessors.js +1 -0
  218. package/dist/interfaces/postprocessors.js.map +1 -0
  219. package/dist/interfaces/preprocessors.js +1 -0
  220. package/dist/interfaces/preprocessors.js.map +1 -0
  221. package/dist/interfaces/product.d.ts +26 -0
  222. package/dist/interfaces/product.js +1 -0
  223. package/dist/interfaces/product.js.map +1 -0
  224. package/dist/interfaces/push.js +1 -0
  225. package/dist/interfaces/push.js.map +1 -0
  226. package/dist/interfaces/skills.js +1 -0
  227. package/dist/interfaces/skills.js.map +1 -0
  228. package/dist/interfaces/test.js +1 -0
  229. package/dist/interfaces/test.js.map +1 -0
  230. package/dist/interfaces/user.js +1 -0
  231. package/dist/interfaces/user.js.map +1 -0
  232. package/dist/interfaces/webhooks.js +1 -0
  233. package/dist/interfaces/webhooks.js.map +1 -0
  234. package/dist/interfaces/whatsapp-templates.js +1 -0
  235. package/dist/interfaces/whatsapp-templates.js.map +1 -0
  236. package/dist/services/auth.js +1 -0
  237. package/dist/services/auth.js.map +1 -0
  238. package/dist/types/api-contracts.d.ts +8 -4
  239. package/dist/types/api-contracts.js +1 -0
  240. package/dist/types/api-contracts.js.map +1 -0
  241. package/dist/types/compile.types.js +1 -0
  242. package/dist/types/compile.types.js.map +1 -0
  243. package/dist/types/index.d.ts +3 -3
  244. package/dist/types/index.js +1 -0
  245. package/dist/types/index.js.map +1 -0
  246. package/dist/types/skill.d.ts +92 -17
  247. package/dist/types/skill.js +16 -11
  248. package/dist/types/skill.js.map +1 -0
  249. package/dist/types/tool-validation.js +1 -0
  250. package/dist/types/tool-validation.js.map +1 -0
  251. package/dist/utils/agent-code-utils.d.ts +2 -1
  252. package/dist/utils/agent-code-utils.js +14 -3
  253. package/dist/utils/agent-code-utils.js.map +1 -0
  254. package/dist/utils/auth-flows.js +1 -0
  255. package/dist/utils/auth-flows.js.map +1 -0
  256. package/dist/utils/bundling.d.ts +17 -0
  257. package/dist/utils/bundling.js +146 -12
  258. package/dist/utils/bundling.js.map +1 -0
  259. package/dist/utils/cli.js +1 -0
  260. package/dist/utils/cli.js.map +1 -0
  261. package/dist/utils/compile.d.ts +5 -0
  262. package/dist/utils/compile.js +154 -15
  263. package/dist/utils/compile.js.map +1 -0
  264. package/dist/utils/deploy-api.js +1 -0
  265. package/dist/utils/deploy-api.js.map +1 -0
  266. package/dist/utils/deploy-helpers.js +1 -0
  267. package/dist/utils/deploy-helpers.js.map +1 -0
  268. package/dist/utils/deployment.js +1 -0
  269. package/dist/utils/deployment.js.map +1 -0
  270. package/dist/utils/dev-api.js +1 -0
  271. package/dist/utils/dev-api.js.map +1 -0
  272. package/dist/utils/dev-helpers.d.ts +3 -2
  273. package/dist/utils/dev-helpers.js +4 -5
  274. package/dist/utils/dev-helpers.js.map +1 -0
  275. package/dist/utils/dev-server.js +1 -0
  276. package/dist/utils/dev-server.js.map +1 -0
  277. package/dist/utils/dev-watcher.js +1 -0
  278. package/dist/utils/dev-watcher.js.map +1 -0
  279. package/dist/utils/env-loader.utils.js +1 -0
  280. package/dist/utils/env-loader.utils.js.map +1 -0
  281. package/dist/utils/files.js +1 -0
  282. package/dist/utils/files.js.map +1 -0
  283. package/dist/utils/init-agent.d.ts +4 -4
  284. package/dist/utils/init-agent.js +12 -14
  285. package/dist/utils/init-agent.js.map +1 -0
  286. package/dist/utils/init-helpers.js +1 -0
  287. package/dist/utils/init-helpers.js.map +1 -0
  288. package/dist/utils/init-prompts.d.ts +10 -6
  289. package/dist/utils/init-prompts.js +41 -75
  290. package/dist/utils/init-prompts.js.map +1 -0
  291. package/dist/utils/job-management.js +1 -0
  292. package/dist/utils/job-management.js.map +1 -0
  293. package/dist/utils/mcp-server-management.d.ts +1 -1
  294. package/dist/utils/mcp-server-management.js +14 -14
  295. package/dist/utils/mcp-server-management.js.map +1 -0
  296. package/dist/utils/postprocessor-management.js +1 -0
  297. package/dist/utils/postprocessor-management.js.map +1 -0
  298. package/dist/utils/pre-bundle-jobs.js +1 -0
  299. package/dist/utils/pre-bundle-jobs.js.map +1 -0
  300. package/dist/utils/preprocessor-management.js +1 -0
  301. package/dist/utils/preprocessor-management.js.map +1 -0
  302. package/dist/utils/prompt-handler.js +1 -0
  303. package/dist/utils/prompt-handler.js.map +1 -0
  304. package/dist/utils/push-api.js +1 -0
  305. package/dist/utils/push-api.js.map +1 -0
  306. package/dist/utils/push-helpers.js +1 -0
  307. package/dist/utils/push-helpers.js.map +1 -0
  308. package/dist/utils/sandbox-storage.js +1 -0
  309. package/dist/utils/sandbox-storage.js.map +1 -0
  310. package/dist/utils/sandbox.d.ts +1 -0
  311. package/dist/utils/sandbox.js +2 -0
  312. package/dist/utils/sandbox.js.map +1 -0
  313. package/dist/utils/semver.js +1 -0
  314. package/dist/utils/semver.js.map +1 -0
  315. package/dist/utils/skill-management.js +1 -0
  316. package/dist/utils/skill-management.js.map +1 -0
  317. package/dist/utils/sync-helpers.js +23 -4
  318. package/dist/utils/sync-helpers.js.map +1 -0
  319. package/dist/utils/test-helpers.js +1 -0
  320. package/dist/utils/test-helpers.js.map +1 -0
  321. package/dist/utils/test-prompts.js +1 -0
  322. package/dist/utils/test-prompts.js.map +1 -0
  323. package/dist/utils/tool-detection.js +1 -0
  324. package/dist/utils/tool-detection.js.map +1 -0
  325. package/dist/utils/webhook-management.js +1 -0
  326. package/dist/utils/webhook-management.js.map +1 -0
  327. package/package.json +2 -1
  328. package/template/package.json +1 -1
@@ -9,21 +9,21 @@ import { BASE_URLS } from '../config/constants.js';
9
9
  import { safePrompt } from '../utils/prompt-handler.js';
10
10
  import { validateConfig, validateAgentConfig, } from '../utils/dev-helpers.js';
11
11
  import DeveloperApi from '../api/developer.api.service.js';
12
+ // ─────────────────────────────────────────────────────────────────────────────
13
+ // Main Command Entry
14
+ // ─────────────────────────────────────────────────────────────────────────────
12
15
  /**
13
- * Main MCP command - manages MCP servers
16
+ * Main MCP command - manages MCP servers.
14
17
  *
15
- * Subcommands:
16
- * - lua mcp list - List all MCP servers
17
- * - lua mcp activate - Activate an MCP server
18
- * - lua mcp deactivate - Deactivate an MCP server
19
- * - lua mcp delete - Delete an MCP server
20
- *
21
- * @param action - Optional action ('list', 'activate', 'deactivate', 'delete')
22
- * @param serverName - Optional server name for actions
23
- * @returns Promise that resolves when command completes
18
+ * Supports both interactive and non-interactive modes:
19
+ * - Interactive: menu-driven server management
20
+ * - Non-interactive: action + -i flag or positional server name
24
21
  */
25
- export async function mcpCommand(action, serverName) {
22
+ export async function mcpCommand(action, serverNamePositional, cmdObj) {
26
23
  return withErrorHandling(async () => {
24
+ const options = {
25
+ serverName: cmdObj?.serverName || serverNamePositional || null,
26
+ };
27
27
  // Step 1: Load configuration
28
28
  const config = readSkillConfig();
29
29
  validateConfig(config);
@@ -43,145 +43,63 @@ export async function mcpCommand(action, serverName) {
43
43
  apiKey,
44
44
  developerApi,
45
45
  };
46
- // Step 3: Handle action or show interactive menu
46
+ // Determine mode
47
47
  if (action) {
48
- const normalizedAction = action.toLowerCase();
49
- switch (normalizedAction) {
50
- case 'list':
51
- case 'ls':
52
- await listMCPServers(context);
53
- break;
54
- case 'activate':
55
- case 'enable':
56
- await activateMCPServer(context, serverName);
57
- break;
58
- case 'deactivate':
59
- case 'disable':
60
- await deactivateMCPServer(context, serverName);
61
- break;
62
- case 'delete':
63
- case 'rm':
64
- await deleteMCPServer(context, serverName);
65
- break;
66
- default:
67
- console.error(`❌ Unknown action: "${action}"`);
68
- showUsage();
69
- process.exit(1);
70
- }
48
+ await executeNonInteractive(context, action, options);
71
49
  }
72
50
  else {
73
- // Interactive mode
74
51
  await interactiveMCPManagement(context);
75
52
  }
76
53
  }, "mcp");
77
54
  }
55
+ // ─────────────────────────────────────────────────────────────────────────────
56
+ // Shared Core Functions
57
+ // ─────────────────────────────────────────────────────────────────────────────
78
58
  /**
79
- * Show usage information
80
- */
81
- function showUsage() {
82
- console.log('\nUsage:');
83
- console.log(' lua mcp - Interactive MCP server management');
84
- console.log(' lua mcp list - List all MCP servers');
85
- console.log(' lua mcp activate [name] - Activate an MCP server');
86
- console.log(' lua mcp deactivate [name] - Deactivate an MCP server');
87
- console.log(' lua mcp delete [name] - Delete an MCP server');
88
- console.log('\nAliases:');
89
- console.log(' list → ls');
90
- console.log(' activate → enable');
91
- console.log(' deactivate → disable');
92
- console.log(' delete → rm');
93
- }
94
- /**
95
- * Interactive MCP management
96
- */
97
- async function interactiveMCPManagement(context) {
98
- let continueManaging = true;
99
- while (continueManaging) {
100
- console.log("\n" + "=".repeat(60));
101
- console.log("🔌 MCP Server Management");
102
- console.log("=".repeat(60) + "\n");
103
- const actionAnswer = await safePrompt([
104
- {
105
- type: 'list',
106
- name: 'action',
107
- message: 'What would you like to do?',
108
- choices: [
109
- { name: '📋 List MCP servers', value: 'list' },
110
- { name: '✅ Activate a server', value: 'activate' },
111
- { name: '⏸️ Deactivate a server', value: 'deactivate' },
112
- { name: '🗑️ Delete a server', value: 'delete' },
113
- { name: '❌ Exit', value: 'exit' }
114
- ]
115
- }
116
- ]);
117
- if (!actionAnswer)
118
- return;
119
- const { action } = actionAnswer;
120
- switch (action) {
121
- case 'list':
122
- await listMCPServers(context);
123
- break;
124
- case 'activate':
125
- await activateMCPServer(context);
126
- break;
127
- case 'deactivate':
128
- await deactivateMCPServer(context);
129
- break;
130
- case 'delete':
131
- await deleteMCPServer(context);
132
- break;
133
- case 'exit':
134
- continueManaging = false;
135
- console.log("\n👋 Goodbye!\n");
136
- break;
137
- }
138
- }
139
- }
140
- /**
141
- * List all MCP servers
59
+ * Fetches all MCP servers from the API.
142
60
  */
143
- async function listMCPServers(context) {
144
- writeProgress("🔄 Loading MCP servers...");
61
+ async function fetchServersCore(context) {
145
62
  try {
146
63
  const result = await context.developerApi.getMCPServers();
147
64
  if (!result.success) {
148
- console.error(`\n❌ Failed to load MCP servers: ${result.error?.message}\n`);
149
- return;
65
+ console.error(`❌ Failed to load MCP servers: ${result.error?.message}`);
66
+ return null;
150
67
  }
151
- const servers = result.data || [];
152
- console.log("\n" + "=".repeat(60));
153
- console.log("🔌 MCP Servers");
154
- console.log("=".repeat(60) + "\n");
155
- if (servers.length === 0) {
156
- console.log("ℹ️ No MCP servers found.");
157
- console.log("💡 Define MCP servers in your LuaAgent configuration and run 'lua push all'.\n");
158
- return;
159
- }
160
- // Separate active and inactive servers
161
- const activeServers = servers.filter((s) => s.active);
162
- const inactiveServers = servers.filter((s) => !s.active);
163
- if (activeServers.length > 0) {
164
- console.log("✅ Active Servers:\n");
165
- activeServers.forEach((server) => {
166
- printServerInfo(server);
167
- });
168
- }
169
- if (inactiveServers.length > 0) {
170
- if (activeServers.length > 0)
171
- console.log("─".repeat(40) + "\n");
172
- console.log("⏸️ Inactive Servers:\n");
173
- inactiveServers.forEach((server) => {
174
- printServerInfo(server);
175
- });
176
- }
177
- console.log("=".repeat(60) + "\n");
68
+ return result.data || [];
178
69
  }
179
70
  catch (error) {
180
- console.error('\n❌ Error loading MCP servers:', error.message);
71
+ console.error('❌ Error loading MCP servers:', error.message);
72
+ return null;
181
73
  }
182
74
  }
183
75
  /**
184
- * Print server information
76
+ * Displays all MCP servers with status.
77
+ */
78
+ function displayServersCore(servers) {
79
+ console.log("\n" + "=".repeat(60));
80
+ console.log("🔌 MCP Servers");
81
+ console.log("=".repeat(60) + "\n");
82
+ if (servers.length === 0) {
83
+ console.log("ℹ️ No MCP servers found.");
84
+ console.log("💡 Define MCP servers in your LuaAgent configuration and run 'lua push all'.\n");
85
+ return;
86
+ }
87
+ const activeServers = servers.filter((s) => s.active);
88
+ const inactiveServers = servers.filter((s) => !s.active);
89
+ if (activeServers.length > 0) {
90
+ console.log("✅ Active Servers:\n");
91
+ activeServers.forEach((server) => printServerInfo(server));
92
+ }
93
+ if (inactiveServers.length > 0) {
94
+ if (activeServers.length > 0)
95
+ console.log("─".repeat(40) + "\n");
96
+ console.log("⏸️ Inactive Servers:\n");
97
+ inactiveServers.forEach((server) => printServerInfo(server));
98
+ }
99
+ console.log("=".repeat(60));
100
+ }
101
+ /**
102
+ * Print server information.
185
103
  */
186
104
  function printServerInfo(server) {
187
105
  const statusIcon = server.active ? '🟢' : '⚪';
@@ -197,197 +115,295 @@ function printServerInfo(server) {
197
115
  console.log();
198
116
  }
199
117
  /**
200
- * Activate an MCP server
118
+ * Activates an MCP server.
201
119
  */
202
- async function activateMCPServer(context, serverName) {
120
+ async function activateServerCore(context, server) {
121
+ if (server.active) {
122
+ console.log(`ℹ️ Server "${server.name}" is already active.`);
123
+ return true;
124
+ }
125
+ writeProgress(`🔄 Activating ${server.name}...`);
203
126
  try {
204
- // Get all servers
205
- const result = await context.developerApi.getMCPServers();
206
- if (!result.success) {
207
- console.error(`\n❌ Failed to load MCP servers: ${result.error?.message}\n`);
208
- return;
209
- }
210
- const servers = result.data || [];
211
- const inactiveServers = servers.filter((s) => !s.active);
212
- if (inactiveServers.length === 0) {
213
- console.log("\nℹ️ All MCP servers are already active.\n");
214
- return;
215
- }
216
- let serverToActivate;
217
- if (serverName) {
218
- // Find by name
219
- const server = inactiveServers.find((s) => s.name.toLowerCase() === serverName.toLowerCase());
220
- if (!server) {
221
- console.error(`\n❌ Inactive MCP server "${serverName}" not found.\n`);
222
- console.log("Available inactive servers:");
223
- inactiveServers.forEach((s) => console.log(` - ${s.name}`));
224
- return;
225
- }
226
- serverToActivate = server;
227
- }
228
- else {
229
- // Prompt for selection
230
- const answer = await safePrompt([
231
- {
232
- type: 'list',
233
- name: 'server',
234
- message: 'Select an MCP server to activate:',
235
- choices: inactiveServers.map((s) => ({
236
- name: `${s.name} (${s.transport})`,
237
- value: s
238
- }))
239
- }
240
- ]);
241
- if (!answer)
242
- return;
243
- serverToActivate = answer.server;
244
- }
245
- writeProgress(`🔄 Activating ${serverToActivate.name}...`);
246
- const activateResult = await context.developerApi.activateMCPServer(serverToActivate.id);
247
- if (activateResult.success) {
248
- writeSuccess(`\n✅ MCP server "${serverToActivate.name}" activated successfully!\n`);
127
+ const result = await context.developerApi.activateMCPServer(server.id);
128
+ if (result.success) {
129
+ writeSuccess(`✅ MCP server "${server.name}" activated successfully!`);
249
130
  writeInfo("💡 The server's tools are now available to your agent.");
131
+ return true;
250
132
  }
251
133
  else {
252
- console.error(`\n❌ Failed to activate: ${activateResult.error?.message}\n`);
134
+ console.error(`❌ Failed to activate: ${result.error?.message}`);
135
+ return false;
253
136
  }
254
137
  }
255
138
  catch (error) {
256
- console.error('\n❌ Error activating MCP server:', error.message);
139
+ console.error('❌ Error activating MCP server:', error.message);
140
+ return false;
257
141
  }
258
142
  }
259
143
  /**
260
- * Deactivate an MCP server
144
+ * Deactivates an MCP server.
261
145
  */
262
- async function deactivateMCPServer(context, serverName) {
146
+ async function deactivateServerCore(context, server) {
147
+ if (!server.active) {
148
+ console.log(`ℹ️ Server "${server.name}" is already inactive.`);
149
+ return true;
150
+ }
151
+ writeProgress(`🔄 Deactivating ${server.name}...`);
263
152
  try {
264
- // Get all servers
265
- const result = await context.developerApi.getMCPServers();
266
- if (!result.success) {
267
- console.error(`\n❌ Failed to load MCP servers: ${result.error?.message}\n`);
268
- return;
269
- }
270
- const servers = result.data || [];
271
- const activeServers = servers.filter((s) => s.active);
272
- if (activeServers.length === 0) {
273
- console.log("\nℹ️ No active MCP servers to deactivate.\n");
274
- return;
275
- }
276
- let serverToDeactivate;
277
- if (serverName) {
278
- // Find by name
279
- const server = activeServers.find((s) => s.name.toLowerCase() === serverName.toLowerCase());
280
- if (!server) {
281
- console.error(`\n❌ Active MCP server "${serverName}" not found.\n`);
282
- console.log("Available active servers:");
283
- activeServers.forEach((s) => console.log(` - ${s.name}`));
284
- return;
285
- }
286
- serverToDeactivate = server;
153
+ const result = await context.developerApi.deactivateMCPServer(server.id);
154
+ if (result.success) {
155
+ writeSuccess(`✅ MCP server "${server.name}" deactivated successfully!`);
156
+ writeInfo("💡 The server's tools are no longer available to your agent.");
157
+ return true;
287
158
  }
288
159
  else {
289
- // Prompt for selection
290
- const answer = await safePrompt([
291
- {
292
- type: 'list',
293
- name: 'server',
294
- message: 'Select an MCP server to deactivate:',
295
- choices: activeServers.map((s) => ({
296
- name: `${s.name} (${s.transport})`,
297
- value: s
298
- }))
299
- }
300
- ]);
301
- if (!answer)
302
- return;
303
- serverToDeactivate = answer.server;
160
+ console.error(`❌ Failed to deactivate: ${result.error?.message}`);
161
+ return false;
304
162
  }
305
- writeProgress(`🔄 Deactivating ${serverToDeactivate.name}...`);
306
- const deactivateResult = await context.developerApi.deactivateMCPServer(serverToDeactivate.id);
307
- if (deactivateResult.success) {
308
- writeSuccess(`\n✅ MCP server "${serverToDeactivate.name}" deactivated successfully!\n`);
309
- writeInfo("💡 The server's tools are no longer available to your agent.");
163
+ }
164
+ catch (error) {
165
+ console.error('❌ Error deactivating MCP server:', error.message);
166
+ return false;
167
+ }
168
+ }
169
+ /**
170
+ * Deletes an MCP server.
171
+ */
172
+ async function deleteServerCore(context, server) {
173
+ writeProgress(`🔄 Deleting ${server.name}...`);
174
+ try {
175
+ const result = await context.developerApi.deleteMCPServer(server.id);
176
+ if (result.success) {
177
+ writeSuccess(`✅ MCP server "${server.name}" deleted successfully!`);
178
+ return true;
310
179
  }
311
180
  else {
312
- console.error(`\n❌ Failed to deactivate: ${deactivateResult.error?.message}\n`);
181
+ console.error(`❌ Failed to delete: ${result.error?.message}`);
182
+ return false;
313
183
  }
314
184
  }
315
185
  catch (error) {
316
- console.error('\n❌ Error deactivating MCP server:', error.message);
186
+ console.error('❌ Error deleting MCP server:', error.message);
187
+ return false;
317
188
  }
318
189
  }
319
190
  /**
320
- * Delete an MCP server
191
+ * Finds a server by name (case-insensitive).
321
192
  */
322
- async function deleteMCPServer(context, serverName) {
323
- try {
324
- // Get all servers
325
- const result = await context.developerApi.getMCPServers();
326
- if (!result.success) {
327
- console.error(`\n❌ Failed to load MCP servers: ${result.error?.message}\n`);
328
- return;
193
+ function findServer(servers, serverName) {
194
+ const normalizedName = serverName.toLowerCase();
195
+ return servers.find(s => s.name.toLowerCase() === normalizedName) || null;
196
+ }
197
+ /**
198
+ * Prompts user to select a server from a list.
199
+ */
200
+ async function promptServerSelection(servers, message) {
201
+ const answer = await safePrompt([
202
+ {
203
+ type: 'list',
204
+ name: 'server',
205
+ message,
206
+ choices: servers.map((s) => ({
207
+ name: `${s.name} (${s.transport}) ${s.active ? '🟢' : '⚪'}`,
208
+ value: s
209
+ }))
329
210
  }
330
- const servers = result.data || [];
331
- if (servers.length === 0) {
332
- console.log("\nℹ️ No MCP servers to delete.\n");
333
- return;
211
+ ]);
212
+ return answer?.server || null;
213
+ }
214
+ /**
215
+ * Show usage information.
216
+ */
217
+ function showUsage() {
218
+ console.log('\nUsage:');
219
+ console.log(' lua mcp Interactive MCP server management');
220
+ console.log(' lua mcp list List all MCP servers');
221
+ console.log(' lua mcp activate -i <name> Activate an MCP server');
222
+ console.log(' lua mcp deactivate -i <name> Deactivate an MCP server');
223
+ console.log(' lua mcp delete -i <name> Delete an MCP server');
224
+ console.log('\nNote: Positional server name is also supported (e.g., lua mcp activate myServer)');
225
+ }
226
+ // ─────────────────────────────────────────────────────────────────────────────
227
+ // Non-Interactive Mode
228
+ // ─────────────────────────────────────────────────────────────────────────────
229
+ async function executeNonInteractive(context, action, options) {
230
+ const normalizedAction = action.toLowerCase();
231
+ // Support aliases
232
+ const actionMap = {
233
+ 'list': 'list',
234
+ 'ls': 'list',
235
+ 'activate': 'activate',
236
+ 'enable': 'activate',
237
+ 'deactivate': 'deactivate',
238
+ 'disable': 'deactivate',
239
+ 'delete': 'delete',
240
+ 'rm': 'delete',
241
+ };
242
+ const resolvedAction = actionMap[normalizedAction];
243
+ if (!resolvedAction) {
244
+ console.error(`❌ Invalid action: "${action}"`);
245
+ showUsage();
246
+ process.exit(1);
247
+ }
248
+ writeProgress("🔄 Loading MCP servers...");
249
+ const servers = await fetchServersCore(context);
250
+ if (!servers)
251
+ process.exit(1);
252
+ // List action doesn't require server selection
253
+ if (resolvedAction === 'list') {
254
+ displayServersCore(servers);
255
+ return;
256
+ }
257
+ // All other actions require server selection
258
+ if (!options.serverName) {
259
+ console.error(`❌ --server-name is required for action "${resolvedAction}"`);
260
+ console.log(`\nUsage: lua mcp ${resolvedAction} --server-name <name>`);
261
+ if (servers.length > 0) {
262
+ console.log('\nAvailable servers:');
263
+ servers.forEach(s => console.log(` - ${s.name} ${s.active ? '(active)' : '(inactive)'}`));
334
264
  }
335
- let serverToDelete;
336
- if (serverName) {
337
- // Find by name
338
- const server = servers.find((s) => s.name.toLowerCase() === serverName.toLowerCase());
339
- if (!server) {
340
- console.error(`\n❌ MCP server "${serverName}" not found.\n`);
341
- console.log("Available servers:");
342
- servers.forEach((s) => console.log(` - ${s.name}`));
343
- return;
344
- }
345
- serverToDelete = server;
265
+ process.exit(1);
266
+ }
267
+ const selectedServer = findServer(servers, options.serverName);
268
+ if (!selectedServer) {
269
+ console.error(`❌ MCP server "${options.serverName}" not found`);
270
+ if (servers.length > 0) {
271
+ console.log('\nAvailable servers:');
272
+ servers.forEach(s => console.log(` - ${s.name}`));
346
273
  }
347
- else {
348
- // Prompt for selection
349
- const answer = await safePrompt([
350
- {
351
- type: 'list',
352
- name: 'server',
353
- message: 'Select an MCP server to delete:',
354
- choices: servers.map((s) => ({
355
- name: `${s.name} (${s.transport}) ${s.active ? '🟢' : '⚪'}`,
356
- value: s
357
- }))
358
- }
359
- ]);
360
- if (!answer)
361
- return;
362
- serverToDelete = answer.server;
274
+ process.exit(1);
275
+ }
276
+ switch (resolvedAction) {
277
+ case 'activate': {
278
+ const success = await activateServerCore(context, selectedServer);
279
+ if (!success)
280
+ process.exit(1);
281
+ break;
363
282
  }
364
- // Confirm deletion
365
- console.log(`\n⚠️ You are about to delete MCP server: ${serverToDelete.name}`);
366
- if (serverToDelete.active) {
367
- console.log("⚠️ WARNING: This server is currently ACTIVE!");
283
+ case 'deactivate': {
284
+ const success = await deactivateServerCore(context, selectedServer);
285
+ if (!success)
286
+ process.exit(1);
287
+ break;
368
288
  }
369
- const confirmAnswer = await safePrompt([
289
+ case 'delete': {
290
+ // In non-interactive mode, delete directly without confirmation
291
+ const success = await deleteServerCore(context, selectedServer);
292
+ if (!success)
293
+ process.exit(1);
294
+ break;
295
+ }
296
+ }
297
+ }
298
+ // ─────────────────────────────────────────────────────────────────────────────
299
+ // Interactive Mode
300
+ // ─────────────────────────────────────────────────────────────────────────────
301
+ async function interactiveMCPManagement(context) {
302
+ let continueManaging = true;
303
+ while (continueManaging) {
304
+ console.log("\n" + "=".repeat(60));
305
+ console.log("🔌 MCP Server Management");
306
+ console.log("=".repeat(60) + "\n");
307
+ const actionAnswer = await safePrompt([
370
308
  {
371
- type: 'confirm',
372
- name: 'confirm',
373
- message: 'Are you sure you want to delete this MCP server?',
374
- default: false
309
+ type: 'list',
310
+ name: 'action',
311
+ message: 'What would you like to do?',
312
+ choices: [
313
+ { name: '📋 List MCP servers', value: 'list' },
314
+ { name: '✅ Activate a server', value: 'activate' },
315
+ { name: '⏸️ Deactivate a server', value: 'deactivate' },
316
+ { name: '🗑️ Delete a server', value: 'delete' },
317
+ { name: '❌ Exit', value: 'exit' }
318
+ ]
375
319
  }
376
320
  ]);
377
- if (!confirmAnswer || !confirmAnswer.confirm) {
378
- console.log("\n❌ Deletion cancelled.\n");
321
+ if (!actionAnswer)
379
322
  return;
380
- }
381
- writeProgress(`🔄 Deleting ${serverToDelete.name}...`);
382
- const deleteResult = await context.developerApi.deleteMCPServer(serverToDelete.id);
383
- if (deleteResult.success) {
384
- writeSuccess(`\n✅ MCP server "${serverToDelete.name}" deleted successfully!\n`);
385
- }
386
- else {
387
- console.error(`\n❌ Failed to delete: ${deleteResult.error?.message}\n`);
323
+ const { action } = actionAnswer;
324
+ switch (action) {
325
+ case 'list':
326
+ await listServersInteractive(context);
327
+ break;
328
+ case 'activate':
329
+ await activateServerInteractive(context);
330
+ break;
331
+ case 'deactivate':
332
+ await deactivateServerInteractive(context);
333
+ break;
334
+ case 'delete':
335
+ await deleteServerInteractive(context);
336
+ break;
337
+ case 'exit':
338
+ continueManaging = false;
339
+ console.log("\n👋 Goodbye!\n");
340
+ break;
388
341
  }
389
342
  }
390
- catch (error) {
391
- console.error('\n❌ Error deleting MCP server:', error.message);
343
+ }
344
+ async function listServersInteractive(context) {
345
+ writeProgress("🔄 Loading MCP servers...");
346
+ const servers = await fetchServersCore(context);
347
+ if (servers) {
348
+ displayServersCore(servers);
349
+ }
350
+ }
351
+ async function activateServerInteractive(context) {
352
+ const servers = await fetchServersCore(context);
353
+ if (!servers)
354
+ return;
355
+ const inactiveServers = servers.filter((s) => !s.active);
356
+ if (inactiveServers.length === 0) {
357
+ console.log("\nℹ️ All MCP servers are already active.\n");
358
+ return;
359
+ }
360
+ const server = await promptServerSelection(inactiveServers, 'Select an MCP server to activate:');
361
+ if (!server)
362
+ return;
363
+ await activateServerCore(context, server);
364
+ }
365
+ async function deactivateServerInteractive(context) {
366
+ const servers = await fetchServersCore(context);
367
+ if (!servers)
368
+ return;
369
+ const activeServers = servers.filter((s) => s.active);
370
+ if (activeServers.length === 0) {
371
+ console.log("\nℹ️ No active MCP servers to deactivate.\n");
372
+ return;
373
+ }
374
+ const server = await promptServerSelection(activeServers, 'Select an MCP server to deactivate:');
375
+ if (!server)
376
+ return;
377
+ await deactivateServerCore(context, server);
378
+ }
379
+ async function deleteServerInteractive(context) {
380
+ const servers = await fetchServersCore(context);
381
+ if (!servers)
382
+ return;
383
+ if (servers.length === 0) {
384
+ console.log("\nℹ️ No MCP servers to delete.\n");
385
+ return;
386
+ }
387
+ const server = await promptServerSelection(servers, 'Select an MCP server to delete:');
388
+ if (!server)
389
+ return;
390
+ // Confirm deletion in interactive mode
391
+ console.log(`\n⚠️ You are about to delete MCP server: ${server.name}`);
392
+ if (server.active) {
393
+ console.log("⚠️ WARNING: This server is currently ACTIVE!");
394
+ }
395
+ const confirmAnswer = await safePrompt([
396
+ {
397
+ type: 'confirm',
398
+ name: 'confirm',
399
+ message: 'Are you sure you want to delete this MCP server?',
400
+ default: false
401
+ }
402
+ ]);
403
+ if (!confirmAnswer || !confirmAnswer.confirm) {
404
+ console.log("\n❌ Deletion cancelled.\n");
405
+ return;
392
406
  }
407
+ await deleteServerCore(context, server);
393
408
  }
409
+ //# sourceMappingURL=mcp.js.map