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
@@ -14,18 +14,48 @@ import DeveloperApi from "../api/developer.api.service.js";
14
14
  import { loadSandboxEnvVariables } from "../utils/env-loader.utils.js";
15
15
  import inquirer from "inquirer";
16
16
  import { compareVersions } from "../utils/semver.js";
17
+ // Valid creator actions
18
+ const CREATOR_ACTIONS = ['list', 'publish', 'update', 'unlist', 'unpublish', 'view'];
19
+ // Valid installer actions
20
+ const INSTALLER_ACTIONS = ['search', 'view', 'install', 'update', 'uninstall', 'installed'];
17
21
  /**
18
- * Main marketplace command - interactive menu.
22
+ * Shows marketplace usage help
23
+ */
24
+ function showMarketplaceUsage() {
25
+ console.log('\nUsage:');
26
+ console.log(' lua marketplace Interactive mode');
27
+ console.log(' lua marketplace create [action] [options] Creator actions');
28
+ console.log(' lua marketplace install [action] [options] Installer actions');
29
+ console.log('\nCreator Actions:');
30
+ console.log(' list --skill-name <name> --display-name <name>');
31
+ console.log(' publish --marketplace-id <id> --version-id <id> [--changelog <text>]');
32
+ console.log(' update --marketplace-id <id> --display-name <name>');
33
+ console.log(' unlist --marketplace-id <id> [--force]');
34
+ console.log(' unpublish --marketplace-id <id> --version-id <id> [--force]');
35
+ console.log(' view');
36
+ console.log('\nInstaller Actions:');
37
+ console.log(' search [--query <text>] [--page <n>] [--limit <n>] [--json]');
38
+ console.log(' view --marketplace-id <id> [--json]');
39
+ console.log(' install --marketplace-id <id> --version-id <id> [--env-vars <k=v,...>] [--force]');
40
+ console.log(' update --skill-name <name> [--version-id <id>] [--env-vars <k=v,...>]');
41
+ console.log(' uninstall --skill-name <name> [--force]');
42
+ console.log(' installed [--json]');
43
+ }
44
+ /**
45
+ * Main marketplace command - interactive menu with non-interactive support.
19
46
  *
20
47
  * Features:
21
48
  * - Role selection (Creator or Installer)
22
49
  * - Creator: List, publish, update, unlist skills, manage versions
23
50
  * - Installer: Browse, search, install, and manage marketplace skills
51
+ * - Non-interactive mode via action + flags
24
52
  *
25
53
  * @param role - Optional role argument ('create', 'creator', 'install', or 'installer')
54
+ * @param action - Optional action for non-interactive mode
55
+ * @param options - Options for non-interactive mode
26
56
  * @returns Promise that resolves when command completes.
27
57
  */
28
- export async function marketplaceCommand(role) {
58
+ export async function marketplaceCommand(role, action, options) {
29
59
  return withErrorHandling(async () => {
30
60
  // Step 1: Load and validate configuration
31
61
  const config = readSkillConfig();
@@ -59,14 +89,32 @@ export async function marketplaceCommand(role) {
59
89
  }
60
90
  else {
61
91
  console.error(`āŒ Invalid role: "${role}". Must be "create" or "install".`);
62
- console.log("\nUsage:");
63
- console.log(" lua marketplace - Interactive selection");
64
- console.log(" lua marketplace create - Creator actions (publish & manage)");
65
- console.log(" lua marketplace install - Installer actions (browse & install)");
92
+ showMarketplaceUsage();
66
93
  process.exit(1);
67
94
  }
68
95
  }
69
- // If role was provided as argument, go directly to that flow
96
+ // Step 4: If action is provided, run non-interactive mode
97
+ if (selectedRole && action) {
98
+ const normalizedAction = action.toLowerCase();
99
+ if (selectedRole === "creator") {
100
+ if (!CREATOR_ACTIONS.includes(normalizedAction)) {
101
+ console.error(`āŒ Invalid creator action: "${action}"`);
102
+ console.log(`\nValid actions: ${CREATOR_ACTIONS.join(', ')}`);
103
+ process.exit(1);
104
+ }
105
+ await executeCreatorActionNonInteractive(marketplaceApi, config, apiKey, normalizedAction, options || {});
106
+ }
107
+ else {
108
+ if (!INSTALLER_ACTIONS.includes(normalizedAction)) {
109
+ console.error(`āŒ Invalid installer action: "${action}"`);
110
+ console.log(`\nValid actions: ${INSTALLER_ACTIONS.join(', ')}`);
111
+ process.exit(1);
112
+ }
113
+ await executeInstallerActionNonInteractive(marketplaceApi, config, apiKey, normalizedAction, options || {});
114
+ }
115
+ return;
116
+ }
117
+ // If role was provided as argument (but no action), go directly to that flow
70
118
  if (selectedRole) {
71
119
  if (selectedRole === "creator") {
72
120
  await handleCreatorActions(marketplaceApi, config, apiKey);
@@ -111,6 +159,481 @@ export async function marketplaceCommand(role) {
111
159
  }
112
160
  }, "marketplace");
113
161
  }
162
+ /**
163
+ * Execute creator action in non-interactive mode
164
+ */
165
+ async function executeCreatorActionNonInteractive(marketplaceApi, config, apiKey, action, options) {
166
+ switch (action) {
167
+ case 'list':
168
+ await listSkillNonInteractive(marketplaceApi, config, apiKey, options);
169
+ break;
170
+ case 'publish':
171
+ await publishVersionNonInteractive(marketplaceApi, config, apiKey, options);
172
+ break;
173
+ case 'update':
174
+ await updateMetadataNonInteractive(marketplaceApi, options);
175
+ break;
176
+ case 'unlist':
177
+ await unlistSkillNonInteractive(marketplaceApi, options);
178
+ break;
179
+ case 'unpublish':
180
+ await unpublishVersionNonInteractive(marketplaceApi, options);
181
+ break;
182
+ case 'view':
183
+ await viewMyListedSkillsNonInteractive(marketplaceApi, options);
184
+ break;
185
+ }
186
+ }
187
+ /**
188
+ * Execute installer action in non-interactive mode
189
+ */
190
+ async function executeInstallerActionNonInteractive(marketplaceApi, config, apiKey, action, options) {
191
+ switch (action) {
192
+ case 'search':
193
+ await searchSkillsNonInteractive(marketplaceApi, options);
194
+ break;
195
+ case 'view':
196
+ await viewSkillNonInteractive(marketplaceApi, options);
197
+ break;
198
+ case 'install':
199
+ await installSkillNonInteractive(marketplaceApi, config, options);
200
+ break;
201
+ case 'update':
202
+ await updateInstalledSkillNonInteractive(marketplaceApi, config, apiKey, options);
203
+ break;
204
+ case 'uninstall':
205
+ await uninstallSkillNonInteractive(marketplaceApi, config, options);
206
+ break;
207
+ case 'installed':
208
+ await listInstalledSkillsNonInteractive(marketplaceApi, config, options);
209
+ break;
210
+ }
211
+ }
212
+ // ============================================================================
213
+ // NON-INTERACTIVE CREATOR ACTIONS
214
+ // ============================================================================
215
+ /**
216
+ * Non-interactive: List a skill on the marketplace
217
+ */
218
+ async function listSkillNonInteractive(marketplaceApi, config, apiKey, options) {
219
+ const { skillName, displayName } = options;
220
+ if (!skillName || !displayName) {
221
+ console.error('āŒ Missing required options');
222
+ console.log('\nUsage: lua marketplace create list --skill-name <name> --display-name <name>');
223
+ process.exit(1);
224
+ }
225
+ const agentId = config.agent?.agentId;
226
+ if (!agentId) {
227
+ console.error('āŒ Agent ID not found in configuration.');
228
+ process.exit(1);
229
+ }
230
+ // Verify skill exists
231
+ const skillApi = new SkillApi(BASE_URLS.API, apiKey, agentId);
232
+ writeProgress('šŸ”„ Verifying skill...');
233
+ const agentSkillsResponse = await skillApi.getSkills();
234
+ if (!agentSkillsResponse.success || !agentSkillsResponse.data) {
235
+ console.error(`āŒ Failed to fetch agent skills: ${agentSkillsResponse.message}`);
236
+ process.exit(1);
237
+ }
238
+ const skill = agentSkillsResponse.data.skills?.find(s => s.name === skillName);
239
+ if (!skill) {
240
+ console.error(`āŒ Skill not found: ${skillName}`);
241
+ writeInfo('\nAvailable skills:');
242
+ agentSkillsResponse.data.skills?.forEach(s => {
243
+ writeInfo(` - ${s.name}`);
244
+ });
245
+ process.exit(1);
246
+ }
247
+ // Check if already listed
248
+ const creatorSkills = await marketplaceApi.getCreatorSkills();
249
+ const existingSkill = creatorSkills?.find(s => s.sourceSkillId === skill.id);
250
+ if (existingSkill?.listed) {
251
+ console.error(`āŒ Skill "${skill.name}" is already listed as "${existingSkill.displayName}".`);
252
+ process.exit(1);
253
+ }
254
+ // List the skill
255
+ writeProgress('šŸ”„ Listing skill on marketplace...');
256
+ const marketplaceSkill = await marketplaceApi.listSkill({
257
+ skillId: skill.id,
258
+ displayName: displayName,
259
+ });
260
+ writeSuccess(`āœ… Skill "${marketplaceSkill.displayName}" listed successfully!`);
261
+ writeInfo(`Marketplace Skill ID: ${marketplaceSkill.id}`);
262
+ writeInfo('šŸ’” You can now publish a version to make it installable.');
263
+ }
264
+ /**
265
+ * Non-interactive: Publish a version to the marketplace
266
+ */
267
+ async function publishVersionNonInteractive(marketplaceApi, config, apiKey, options) {
268
+ const { marketplaceId, versionId, changelog, envVarsJson } = options;
269
+ if (!marketplaceId || !versionId) {
270
+ console.error('āŒ Missing required options');
271
+ console.log('\nUsage: lua marketplace create publish --marketplace-id <id> --version-id <id> [--changelog <text>]');
272
+ process.exit(1);
273
+ }
274
+ // Parse env vars if provided
275
+ let envVars;
276
+ if (envVarsJson) {
277
+ try {
278
+ envVars = JSON.parse(envVarsJson);
279
+ }
280
+ catch (e) {
281
+ console.error('āŒ Invalid --env-vars-json: must be valid JSON');
282
+ process.exit(1);
283
+ }
284
+ }
285
+ writeProgress('šŸ”„ Publishing version...');
286
+ const payload = {
287
+ versionId,
288
+ changelog: changelog || undefined,
289
+ envVars: envVars && Object.keys(envVars).length > 0 ? envVars : undefined,
290
+ };
291
+ const publishedVersion = await marketplaceApi.publishVersion(marketplaceId, payload);
292
+ writeSuccess(`āœ… Version ${publishedVersion.version} published successfully!`);
293
+ writeInfo('šŸ’” You will be notified once the review is complete.');
294
+ }
295
+ /**
296
+ * Non-interactive: Update skill metadata
297
+ */
298
+ async function updateMetadataNonInteractive(marketplaceApi, options) {
299
+ const { marketplaceId, displayName } = options;
300
+ if (!marketplaceId) {
301
+ console.error('āŒ Missing required option: --marketplace-id');
302
+ console.log('\nUsage: lua marketplace create update --marketplace-id <id> --display-name <name>');
303
+ process.exit(1);
304
+ }
305
+ if (!displayName) {
306
+ console.error('āŒ No update specified. Provide --display-name to update.');
307
+ process.exit(1);
308
+ }
309
+ writeProgress('šŸ”„ Updating skill metadata...');
310
+ await marketplaceApi.updateSkill(marketplaceId, { displayName });
311
+ writeSuccess(`āœ… Display name updated to "${displayName}"!`);
312
+ }
313
+ /**
314
+ * Non-interactive: Unlist a skill from the marketplace
315
+ */
316
+ async function unlistSkillNonInteractive(marketplaceApi, options) {
317
+ const { marketplaceId, force } = options;
318
+ if (!marketplaceId) {
319
+ console.error('āŒ Missing required option: --marketplace-id');
320
+ console.log('\nUsage: lua marketplace create unlist --marketplace-id <id> [--force]');
321
+ process.exit(1);
322
+ }
323
+ if (!force) {
324
+ console.error('āŒ This action requires --force to confirm');
325
+ console.log('\nUsage: lua marketplace create unlist --marketplace-id <id> --force');
326
+ process.exit(1);
327
+ }
328
+ writeProgress('šŸ”„ Unlisting skill...');
329
+ await marketplaceApi.unlistSkill(marketplaceId);
330
+ writeSuccess('āœ… Skill unlisted from marketplace.');
331
+ writeInfo('šŸ’” You can re-list it anytime using the list action.');
332
+ }
333
+ /**
334
+ * Non-interactive: Unpublish a version
335
+ */
336
+ async function unpublishVersionNonInteractive(marketplaceApi, options) {
337
+ const { marketplaceId, versionId, force } = options;
338
+ if (!marketplaceId || !versionId) {
339
+ console.error('āŒ Missing required options');
340
+ console.log('\nUsage: lua marketplace create unpublish --marketplace-id <id> --version-id <id> [--force]');
341
+ process.exit(1);
342
+ }
343
+ if (!force) {
344
+ console.error('āŒ This action requires --force to confirm');
345
+ process.exit(1);
346
+ }
347
+ writeProgress('šŸ”„ Unpublishing version...');
348
+ await marketplaceApi.unpublishVersion(marketplaceId, versionId);
349
+ writeSuccess('āœ… Version unpublished successfully.');
350
+ writeInfo('šŸ’” Users can no longer install this version.');
351
+ }
352
+ /**
353
+ * Non-interactive: View my listed skills
354
+ */
355
+ async function viewMyListedSkillsNonInteractive(marketplaceApi, options) {
356
+ writeProgress('šŸ”„ Loading your marketplace skills...');
357
+ const skills = await marketplaceApi.getCreatorSkills();
358
+ if (!skills || skills.length === 0) {
359
+ writeInfo('šŸ“¦ You haven\'t listed any skills on the marketplace yet.');
360
+ return;
361
+ }
362
+ if (options.json) {
363
+ console.log(JSON.stringify(skills, null, 2));
364
+ return;
365
+ }
366
+ console.log(`\nšŸ“Š You have ${skills.length} skill(s) on the marketplace:\n`);
367
+ for (const skill of skills) {
368
+ const statusIcon = skill.listed ? 'āœ…' : 'āŒ';
369
+ const statusText = skill.listed ? 'Listed' : 'Unlisted';
370
+ console.log(`${statusIcon} ${skill.displayName} (${skill.name})`);
371
+ console.log(` ID: ${skill.id}`);
372
+ console.log(` Status: ${statusText}`);
373
+ if (skill.versions && skill.versions.length > 0) {
374
+ const publishedVersions = skill.versions.filter(v => v.published);
375
+ console.log(` Versions: ${publishedVersions.length} published / ${skill.versions.length} total`);
376
+ }
377
+ console.log('');
378
+ }
379
+ }
380
+ // ============================================================================
381
+ // NON-INTERACTIVE INSTALLER ACTIONS
382
+ // ============================================================================
383
+ /**
384
+ * Non-interactive: Search marketplace skills
385
+ */
386
+ async function searchSkillsNonInteractive(marketplaceApi, options) {
387
+ const page = options.page ? parseInt(options.page, 10) : 1;
388
+ const limit = options.limit ? parseInt(options.limit, 10) : 10;
389
+ writeProgress(options.query ? `šŸ” Searching for "${options.query}"...` : 'šŸ” Loading marketplace skills...');
390
+ const filters = { page, limit };
391
+ if (options.query)
392
+ filters.search = options.query;
393
+ const results = await marketplaceApi.searchSkills(filters);
394
+ const skills = results?.data || [];
395
+ const pagination = results?.pagination;
396
+ if (options.json) {
397
+ console.log(JSON.stringify(results, null, 2));
398
+ return;
399
+ }
400
+ if (skills.length === 0) {
401
+ writeInfo(options.query
402
+ ? `šŸ“¦ No skills found matching "${options.query}".`
403
+ : 'šŸ“¦ No skills available on the marketplace.');
404
+ return;
405
+ }
406
+ const totalCount = pagination?.totalCount || skills.length;
407
+ const totalPages = pagination?.totalPages || 1;
408
+ console.log(`\nšŸ“Š Found ${totalCount} skill(s) (Page ${page}/${totalPages}):\n`);
409
+ for (const skill of skills) {
410
+ console.log(`šŸ“¦ ${skill.displayName}`);
411
+ console.log(` ID: ${skill.id}`);
412
+ console.log(` Name: ${skill.name}`);
413
+ if (skill.description)
414
+ console.log(` Description: ${skill.description}`);
415
+ if (typeof skill.installCount !== 'undefined')
416
+ console.log(` Installs: ${skill.installCount}`);
417
+ console.log('');
418
+ }
419
+ }
420
+ /**
421
+ * Non-interactive: View skill details
422
+ */
423
+ async function viewSkillNonInteractive(marketplaceApi, options) {
424
+ const { marketplaceId } = options;
425
+ if (!marketplaceId) {
426
+ console.error('āŒ Missing required option: --marketplace-id');
427
+ console.log('\nUsage: lua marketplace install view --marketplace-id <id>');
428
+ process.exit(1);
429
+ }
430
+ writeProgress('šŸ”„ Loading skill details...');
431
+ const skill = await marketplaceApi.getSkillById(marketplaceId);
432
+ if (options.json) {
433
+ console.log(JSON.stringify(skill, null, 2));
434
+ return;
435
+ }
436
+ console.log(`\n${'='.repeat(60)}`);
437
+ console.log(`šŸ“¦ ${skill.displayName}`);
438
+ console.log(`${'='.repeat(60)}\n`);
439
+ console.log(`ID: ${skill.id}`);
440
+ console.log(`Name: ${skill.name}`);
441
+ console.log(`Created: ${new Date(skill.createdAt).toLocaleDateString()}`);
442
+ if (skill.description)
443
+ console.log(`\nDescription: ${skill.description}`);
444
+ if (skill.longDescription)
445
+ console.log(`\nDetails:\n${skill.longDescription}`);
446
+ if (skill.category)
447
+ console.log(`\nCategory: ${skill.category}`);
448
+ if (skill.tags?.length)
449
+ console.log(`Tags: ${skill.tags.join(', ')}`);
450
+ if (typeof skill.installCount !== 'undefined')
451
+ console.log(`Installs: ${skill.installCount}`);
452
+ if (skill.versions?.length) {
453
+ const publishedVersions = skill.versions.filter(v => v.published);
454
+ console.log(`\nVersions: ${publishedVersions.length} published / ${skill.versions.length} total`);
455
+ if (publishedVersions.length > 0) {
456
+ const latest = publishedVersions.sort((a, b) => compareVersions(b.version, a.version))[0];
457
+ console.log(`Latest: v${latest.version} (ID: ${latest.id})`);
458
+ }
459
+ }
460
+ console.log(`\n${'='.repeat(60)}\n`);
461
+ }
462
+ /**
463
+ * Non-interactive: Install a skill
464
+ */
465
+ async function installSkillNonInteractive(marketplaceApi, config, options) {
466
+ const { marketplaceId, versionId, envVars, force } = options;
467
+ if (!marketplaceId || !versionId) {
468
+ console.error('āŒ Missing required options');
469
+ console.log('\nUsage: lua marketplace install install --marketplace-id <id> --version-id <id> [--env-vars <k=v,...>]');
470
+ process.exit(1);
471
+ }
472
+ const agentId = config.agent?.agentId;
473
+ if (!agentId) {
474
+ console.error('āŒ Agent ID not found in configuration.');
475
+ process.exit(1);
476
+ }
477
+ // Parse env vars
478
+ const envVarsConfig = {};
479
+ if (envVars) {
480
+ const pairs = envVars.split(',');
481
+ for (const pair of pairs) {
482
+ const [key, ...valueParts] = pair.split('=');
483
+ if (key && valueParts.length > 0) {
484
+ envVarsConfig[key.trim()] = valueParts.join('=').trim();
485
+ }
486
+ }
487
+ }
488
+ if (!force) {
489
+ writeInfo(`\nšŸ“‹ Installation Summary:`);
490
+ writeInfo(` Marketplace ID: ${marketplaceId}`);
491
+ writeInfo(` Version ID: ${versionId}`);
492
+ writeInfo(` Agent: ${agentId}`);
493
+ if (Object.keys(envVarsConfig).length > 0) {
494
+ writeInfo(` Env vars: ${Object.keys(envVarsConfig).length} configured`);
495
+ }
496
+ console.error('\nāŒ Use --force to confirm installation');
497
+ process.exit(1);
498
+ }
499
+ writeProgress('šŸ”„ Installing skill...');
500
+ await marketplaceApi.installSkill(marketplaceId, agentId, {
501
+ versionId,
502
+ envVars: Object.keys(envVarsConfig).length > 0 ? envVarsConfig : undefined,
503
+ });
504
+ writeSuccess('āœ… Skill installed successfully!');
505
+ writeInfo(`šŸ’” The skill is now available on agent ${agentId}.`);
506
+ }
507
+ /**
508
+ * Non-interactive: Update an installed skill
509
+ */
510
+ async function updateInstalledSkillNonInteractive(marketplaceApi, config, apiKey, options) {
511
+ const { skillName, versionId, envVars } = options;
512
+ if (!skillName) {
513
+ console.error('āŒ Missing required option: --skill-name');
514
+ console.log('\nUsage: lua marketplace install update --skill-name <name> [--version-id <id>] [--env-vars <k=v,...>]');
515
+ process.exit(1);
516
+ }
517
+ const agentId = config.agent?.agentId;
518
+ if (!agentId) {
519
+ console.error('āŒ Agent ID not found in configuration.');
520
+ process.exit(1);
521
+ }
522
+ // Find the installed skill
523
+ writeProgress('šŸ”„ Loading installed skills...');
524
+ const installedSkills = await marketplaceApi.getInstalledSkills(agentId);
525
+ const installedSkill = installedSkills?.find(s => s.name === skillName ||
526
+ s.title === skillName);
527
+ if (!installedSkill) {
528
+ console.error(`āŒ Installed skill not found: ${skillName}`);
529
+ if (installedSkills?.length) {
530
+ writeInfo('\nInstalled skills:');
531
+ installedSkills.forEach(s => {
532
+ writeInfo(` - ${s.title || s.name}`);
533
+ });
534
+ }
535
+ process.exit(1);
536
+ }
537
+ if (!installedSkill.marketplaceSkillId) {
538
+ console.error('āŒ Skill is missing marketplace skill ID.');
539
+ process.exit(1);
540
+ }
541
+ // Parse env vars
542
+ let newEnvVars;
543
+ if (envVars) {
544
+ newEnvVars = {};
545
+ const pairs = envVars.split(',');
546
+ for (const pair of pairs) {
547
+ const [key, ...valueParts] = pair.split('=');
548
+ if (key && valueParts.length > 0) {
549
+ newEnvVars[key.trim()] = valueParts.join('=').trim();
550
+ }
551
+ }
552
+ }
553
+ const updatePayload = {};
554
+ if (versionId)
555
+ updatePayload.versionId = versionId;
556
+ if (newEnvVars)
557
+ updatePayload.envVars = newEnvVars;
558
+ if (!updatePayload.versionId && !updatePayload.envVars) {
559
+ console.error('āŒ No update specified. Provide --version-id or --env-vars.');
560
+ process.exit(1);
561
+ }
562
+ writeProgress('šŸ”„ Updating installed skill...');
563
+ await marketplaceApi.updateInstallation(installedSkill.marketplaceSkillId, agentId, updatePayload);
564
+ writeSuccess(`āœ… "${installedSkill.title || installedSkill.name}" updated successfully!`);
565
+ }
566
+ /**
567
+ * Non-interactive: Uninstall a skill
568
+ */
569
+ async function uninstallSkillNonInteractive(marketplaceApi, config, options) {
570
+ const { skillName, force } = options;
571
+ if (!skillName) {
572
+ console.error('āŒ Missing required option: --skill-name');
573
+ console.log('\nUsage: lua marketplace install uninstall --skill-name <name> [--force]');
574
+ process.exit(1);
575
+ }
576
+ const agentId = config.agent?.agentId;
577
+ if (!agentId) {
578
+ console.error('āŒ Agent ID not found in configuration.');
579
+ process.exit(1);
580
+ }
581
+ // Find the installed skill
582
+ writeProgress('šŸ”„ Loading installed skills...');
583
+ const installedSkills = await marketplaceApi.getInstalledSkills(agentId);
584
+ const installedSkill = installedSkills?.find(s => s.name === skillName ||
585
+ s.title === skillName);
586
+ if (!installedSkill) {
587
+ console.error(`āŒ Installed skill not found: ${skillName}`);
588
+ process.exit(1);
589
+ }
590
+ if (!installedSkill.marketplaceSkillId) {
591
+ console.error('āŒ Skill is missing marketplace skill ID.');
592
+ process.exit(1);
593
+ }
594
+ if (!force) {
595
+ console.error(`āŒ Use --force to confirm uninstalling "${installedSkill.title || installedSkill.name}"`);
596
+ process.exit(1);
597
+ }
598
+ writeProgress('šŸ”„ Uninstalling skill...');
599
+ await marketplaceApi.uninstallSkill(installedSkill.marketplaceSkillId, agentId);
600
+ writeSuccess(`āœ… "${installedSkill.title || installedSkill.name}" uninstalled successfully!`);
601
+ }
602
+ /**
603
+ * Non-interactive: List installed skills
604
+ */
605
+ async function listInstalledSkillsNonInteractive(marketplaceApi, config, options) {
606
+ const agentId = config.agent?.agentId;
607
+ if (!agentId) {
608
+ console.error('āŒ Agent ID not found in configuration.');
609
+ process.exit(1);
610
+ }
611
+ writeProgress('šŸ”„ Loading installed marketplace skills...');
612
+ const skills = await marketplaceApi.getInstalledSkills(agentId);
613
+ if (!skills || skills.length === 0) {
614
+ writeInfo('šŸ“¦ No marketplace skills installed on this agent.');
615
+ return;
616
+ }
617
+ if (options.json) {
618
+ console.log(JSON.stringify(skills, null, 2));
619
+ return;
620
+ }
621
+ console.log(`\nšŸ“Š You have ${skills.length} marketplace skill(s) installed:\n`);
622
+ for (const skill of skills) {
623
+ console.log(`šŸ“¦ ${skill.title || skill.name}`);
624
+ console.log(` ID: ${skill.id}`);
625
+ if (skill.marketplaceSkillId) {
626
+ console.log(` Marketplace ID: ${skill.marketplaceSkillId}`);
627
+ }
628
+ if (skill.activeVersionId) {
629
+ console.log(` Version: v${skill.activeVersionId}`);
630
+ }
631
+ if (skill.description) {
632
+ console.log(` Description: ${skill.description}`);
633
+ }
634
+ console.log('');
635
+ }
636
+ }
114
637
  async function handleCreatorActions(marketplaceApi, config, apiKey) {
115
638
  let back = false;
116
639
  while (!back) {
@@ -1636,3 +2159,4 @@ async function listInstalledSkills(marketplaceApi, config) {
1636
2159
  console.error(`\nāŒ Error loading installed skills: ${error.message}\n`);
1637
2160
  }
1638
2161
  }
2162
+ //# sourceMappingURL=marketplace.js.map