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
@@ -8,17 +8,17 @@ import { withErrorHandling, writeProgress, writeSuccess } from '../utils/cli.js'
8
8
  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
+ // ─────────────────────────────────────────────────────────────────────────────
12
+ // Main Command Entry
13
+ // ─────────────────────────────────────────────────────────────────────────────
11
14
  /**
12
- * Main production command - overview of production environment
15
+ * Main production command - overview of production environment.
13
16
  *
14
- * Features:
15
- * - View current persona and versions
16
- * - View deployed skills and versions
17
- * - Manage environment variables
18
- *
19
- * @returns Promise that resolves when command completes
17
+ * Supports both interactive and non-interactive modes:
18
+ * - Interactive: menu-driven management
19
+ * - Non-interactive: use action argument to display specific section
20
20
  */
21
- export async function productionCommand() {
21
+ export async function productionCommand(action) {
22
22
  return withErrorHandling(async () => {
23
23
  // Step 1: Load configuration
24
24
  const config = readSkillConfig();
@@ -37,57 +37,22 @@ export async function productionCommand() {
37
37
  agentId,
38
38
  apiKey,
39
39
  };
40
- // Step 3: Start management loop
41
- await manageProduction(context, config);
42
- }, "production");
43
- }
44
- /**
45
- * Main production management loop
46
- */
47
- async function manageProduction(context, config) {
48
- let continueManaging = true;
49
- while (continueManaging) {
50
- console.log("\n" + "=".repeat(60));
51
- console.log("šŸŒ™ Production Environment");
52
- console.log("=".repeat(60) + "\n");
53
- const actionAnswer = await safePrompt([
54
- {
55
- type: 'list',
56
- name: 'action',
57
- message: 'What would you like to view?',
58
- choices: [
59
- { name: 'šŸ¤– Persona - View current persona and versions', value: 'persona' },
60
- { name: 'āš™ļø Skills - View deployed skills and versions', value: 'skills' },
61
- { name: 'šŸ” Environment Variables - Manage production env', value: 'env' },
62
- { name: 'āŒ Exit', value: 'exit' }
63
- ]
64
- }
65
- ]);
66
- if (!actionAnswer)
67
- return;
68
- const { action } = actionAnswer;
69
- switch (action) {
70
- case 'persona':
71
- await viewProductionPersona(context);
72
- break;
73
- case 'skills':
74
- await viewProductionSkills(context, config);
75
- break;
76
- case 'env':
77
- await manageProductionEnv(context);
78
- break;
79
- case 'exit':
80
- continueManaging = false;
81
- console.log("\nšŸ‘‹ Goodbye!\n");
82
- break;
40
+ // Determine mode
41
+ if (action) {
42
+ await executeNonInteractive(context, config, action);
83
43
  }
84
- }
44
+ else {
45
+ await manageProductionInteractive(context, config);
46
+ }
47
+ }, "production");
85
48
  }
49
+ // ─────────────────────────────────────────────────────────────────────────────
50
+ // Shared Core Functions
51
+ // ─────────────────────────────────────────────────────────────────────────────
86
52
  /**
87
- * View production persona and versions
53
+ * Fetches persona versions from the API.
88
54
  */
89
- async function viewProductionPersona(context) {
90
- writeProgress("šŸ”„ Loading persona information...");
55
+ async function fetchPersonaVersionsCore(context) {
91
56
  try {
92
57
  const response = await fetch(`${BASE_URLS.API}/developer/agents/${context.agentId}/persona/versions`, {
93
58
  method: 'GET',
@@ -98,8 +63,8 @@ async function viewProductionPersona(context) {
98
63
  });
99
64
  if (!response.ok) {
100
65
  const errorText = await response.text();
101
- console.error(`\nāŒ API Error: ${response.status} - ${errorText}\n`);
102
- throw new Error(`HTTP error! status: ${response.status}`);
66
+ console.error(`āŒ API Error: ${response.status} - ${errorText}`);
67
+ return null;
103
68
  }
104
69
  const data = await response.json();
105
70
  let versions = [];
@@ -112,146 +77,322 @@ async function viewProductionPersona(context) {
112
77
  else if (data.versions && Array.isArray(data.versions)) {
113
78
  versions = data.versions;
114
79
  }
115
- if (versions.length === 0) {
116
- console.log("\nā„¹ļø No persona versions found.");
117
- console.log("šŸ’” Create a persona version first using: lua persona\n");
118
- await safePrompt([
119
- {
120
- type: 'input',
121
- name: 'continue',
122
- message: 'Press Enter to continue...'
123
- }
124
- ]);
125
- return;
80
+ return versions;
81
+ }
82
+ catch (error) {
83
+ console.error('āŒ Error loading persona information:', error);
84
+ return null;
85
+ }
86
+ }
87
+ /**
88
+ * Displays current persona information.
89
+ */
90
+ function displayPersonaCore(versions) {
91
+ const currentVersion = versions.find(v => v.isCurrent);
92
+ console.log("\n" + "=".repeat(60));
93
+ console.log("šŸ¤– Current Production Persona");
94
+ console.log("=".repeat(60) + "\n");
95
+ if (currentVersion) {
96
+ const date = new Date(currentVersion.createdDate);
97
+ console.log(`Version: ${currentVersion.version} ⭐`);
98
+ console.log(`Deployed: ${date.toLocaleString()}`);
99
+ if (currentVersion.createdBy) {
100
+ console.log(`Created by: ${currentVersion.createdBy}`);
126
101
  }
127
- // Find current deployed version
128
- const currentVersion = versions.find(v => v.isCurrent);
102
+ console.log("\n" + "-".repeat(60) + "\n");
103
+ console.log(currentVersion.persona);
129
104
  console.log("\n" + "=".repeat(60));
130
- console.log("šŸ¤– Current Production Persona");
131
- console.log("=".repeat(60) + "\n");
132
- if (currentVersion) {
133
- const date = new Date(currentVersion.createdDate);
134
- console.log(`Version: ${currentVersion.version} ⭐`);
135
- console.log(`Deployed: ${date.toLocaleString()}`);
136
- if (currentVersion.createdBy) {
137
- console.log(`Created by: ${currentVersion.createdBy}`);
138
- }
139
- console.log("\n" + "-".repeat(60) + "\n");
140
- console.log(currentVersion.persona);
141
- console.log("\n" + "=".repeat(60) + "\n");
142
- }
143
- else {
144
- console.log("āš ļø No persona currently deployed.");
145
- console.log("šŸ’” Deploy a version using: lua persona → Production → Deploy\n");
105
+ }
106
+ else {
107
+ console.log("āš ļø No persona currently deployed.");
108
+ console.log("šŸ’” Deploy a version using: lua persona production deploy -v <version>\n");
109
+ if (versions.length > 0) {
146
110
  console.log("Available versions:\n");
147
111
  versions.forEach((v, i) => {
148
112
  const date = new Date(v.createdDate);
149
113
  console.log(` ${i + 1}. Version ${v.version} - ${date.toLocaleDateString()}`);
150
114
  });
151
- console.log();
152
115
  }
153
- // Show available versions
154
- console.log(`Total versions available: ${versions.length}\n`);
155
- await safePrompt([
156
- {
157
- type: 'input',
158
- name: 'continue',
159
- message: 'Press Enter to continue...'
160
- }
161
- ]);
162
- }
163
- catch (error) {
164
- console.error('āŒ Error loading persona information:', error);
165
- if (error instanceof Error) {
166
- console.error(` ${error.message}\n`);
167
- }
168
- await safePrompt([
169
- {
170
- type: 'input',
171
- name: 'continue',
172
- message: 'Press Enter to continue...'
173
- }
174
- ]);
116
+ console.log("\n" + "=".repeat(60));
175
117
  }
118
+ console.log(`\nTotal versions available: ${versions.length}`);
176
119
  }
177
120
  /**
178
- * View production skills and their versions
121
+ * Displays deployed skills information.
179
122
  */
180
- async function viewProductionSkills(context, config) {
181
- writeProgress("šŸ”„ Loading skill information...");
182
- try {
183
- const skills = config.skills || [];
184
- if (skills.length === 0) {
185
- console.log("\nā„¹ļø No skills found in configuration.\n");
186
- return;
187
- }
188
- console.log("\n" + "=".repeat(60));
189
- console.log("āš™ļø Production Skills");
190
- console.log("=".repeat(60) + "\n");
191
- // Fetch version info for each skill
192
- for (const skill of skills) {
193
- try {
194
- const response = await fetch(`${BASE_URLS.API}/developer/skills/${context.agentId}/${skill.skillId}/versions`, {
195
- method: 'GET',
196
- headers: {
197
- 'Authorization': `Bearer ${context.apiKey}`,
198
- 'Content-Type': 'application/json'
199
- }
200
- });
201
- if (response.ok) {
202
- const data = await response.json();
203
- const versions = data.data?.versions || data.versions || [];
204
- const activeVersionId = data.data?.activeVersionId || data.activeVersionId;
205
- // Find active version
206
- const activeVersion = versions.find((v) => v.skillId === activeVersionId);
207
- console.log(`šŸ“¦ ${skill.name}`);
208
- console.log(` Skill ID: ${skill.skillId}`);
209
- if (activeVersion) {
210
- console.log(` Deployed Version: ${activeVersion.version} ⭐`);
211
- const date = new Date(activeVersion.createdAt);
212
- console.log(` Deployed: ${date.toLocaleString()}`);
213
- }
214
- else {
215
- console.log(` Deployed Version: Not deployed`);
216
- }
217
- console.log(` Total Versions: ${versions.length}`);
218
- console.log();
123
+ async function displaySkillsCore(context, config) {
124
+ const skills = config.skills || [];
125
+ console.log("\n" + "=".repeat(60));
126
+ console.log("āš™ļø Production Skills");
127
+ console.log("=".repeat(60) + "\n");
128
+ if (skills.length === 0) {
129
+ console.log("ā„¹ļø No skills found in configuration.\n");
130
+ console.log("=".repeat(60));
131
+ return;
132
+ }
133
+ for (const skill of skills) {
134
+ try {
135
+ const response = await fetch(`${BASE_URLS.API}/developer/skills/${context.agentId}/${skill.skillId}/versions`, {
136
+ method: 'GET',
137
+ headers: {
138
+ 'Authorization': `Bearer ${context.apiKey}`,
139
+ 'Content-Type': 'application/json'
140
+ }
141
+ });
142
+ if (response.ok) {
143
+ const data = await response.json();
144
+ const versions = data.data?.versions || data.versions || [];
145
+ const activeVersionId = data.data?.activeVersionId || data.activeVersionId;
146
+ const activeVersion = versions.find((v) => v.skillId === activeVersionId);
147
+ console.log(`šŸ“¦ ${skill.name}`);
148
+ console.log(` Skill ID: ${skill.skillId}`);
149
+ if (activeVersion) {
150
+ console.log(` Deployed Version: ${activeVersion.version} ⭐`);
151
+ const date = new Date(activeVersion.createdAt);
152
+ console.log(` Deployed: ${date.toLocaleString()}`);
219
153
  }
220
154
  else {
221
- console.log(`šŸ“¦ ${skill.name}`);
222
- console.log(` Skill ID: ${skill.skillId}`);
223
- console.log(` Status: Unable to fetch version info`);
224
- console.log();
155
+ console.log(` Deployed Version: Not deployed`);
225
156
  }
157
+ console.log(` Total Versions: ${versions.length}`);
158
+ console.log();
226
159
  }
227
- catch (error) {
160
+ else {
228
161
  console.log(`šŸ“¦ ${skill.name}`);
229
162
  console.log(` Skill ID: ${skill.skillId}`);
230
- console.log(` Status: Error loading versions`);
163
+ console.log(` Status: Unable to fetch version info`);
231
164
  console.log();
232
165
  }
233
166
  }
167
+ catch {
168
+ console.log(`šŸ“¦ ${skill.name}`);
169
+ console.log(` Skill ID: ${skill.skillId}`);
170
+ console.log(` Status: Error loading versions`);
171
+ console.log();
172
+ }
173
+ }
174
+ console.log("=".repeat(60));
175
+ }
176
+ /**
177
+ * Fetches environment variables from the API.
178
+ */
179
+ async function fetchEnvVariablesCore(context) {
180
+ try {
181
+ const response = await fetch(`${BASE_URLS.API}/developer/agents/${context.agentId}/env`, {
182
+ method: 'GET',
183
+ headers: {
184
+ 'accept': 'application/json',
185
+ 'Authorization': `Bearer ${context.apiKey}`
186
+ }
187
+ });
188
+ if (!response.ok) {
189
+ return [];
190
+ }
191
+ const data = await response.json();
192
+ if (data.data && typeof data.data === 'object') {
193
+ return Object.entries(data.data).map(([key, value]) => ({
194
+ key,
195
+ value: String(value)
196
+ }));
197
+ }
198
+ return [];
199
+ }
200
+ catch {
201
+ console.error('āš ļø Error loading environment variables');
202
+ return [];
203
+ }
204
+ }
205
+ /**
206
+ * Displays environment variables (masked).
207
+ */
208
+ function displayEnvVariablesCore(variables) {
209
+ console.log("\n" + "=".repeat(60));
210
+ console.log("šŸ” Production Environment Variables");
211
+ console.log("=".repeat(60) + "\n");
212
+ if (variables.length === 0) {
213
+ console.log("ā„¹ļø No environment variables configured.\n");
214
+ console.log("=".repeat(60));
215
+ return;
216
+ }
217
+ variables.forEach((v, index) => {
218
+ const maskedValue = v.value.length > 4
219
+ ? v.value.substring(0, 4) + '*'.repeat(Math.min(v.value.length - 4, 20))
220
+ : '*'.repeat(v.value.length);
221
+ console.log(`${index + 1}. ${v.key} = ${maskedValue}`);
222
+ });
223
+ console.log("\n" + "=".repeat(60));
224
+ console.log(`Total: ${variables.length} variable(s)`);
225
+ }
226
+ /**
227
+ * Displays production overview (summary of all sections).
228
+ */
229
+ async function displayOverviewCore(context, config) {
230
+ console.log("\n" + "=".repeat(60));
231
+ console.log("šŸŒ™ Production Environment Overview");
232
+ console.log("=".repeat(60) + "\n");
233
+ // Persona summary
234
+ writeProgress("Loading persona...");
235
+ const versions = await fetchPersonaVersionsCore(context);
236
+ const currentPersona = versions?.find(v => v.isCurrent);
237
+ console.log("šŸ¤– Persona:");
238
+ if (currentPersona) {
239
+ const preview = currentPersona.persona.length > 80
240
+ ? currentPersona.persona.substring(0, 80) + '...'
241
+ : currentPersona.persona;
242
+ console.log(` Version ${currentPersona.version} ⭐ deployed`);
243
+ console.log(` Preview: ${preview}`);
244
+ }
245
+ else if (versions && versions.length > 0) {
246
+ console.log(` āš ļø Not deployed (${versions.length} version(s) available)`);
247
+ }
248
+ else {
249
+ console.log(` ā„¹ļø No versions found`);
250
+ }
251
+ console.log();
252
+ // Skills summary
253
+ writeProgress("Loading skills...");
254
+ const skills = config.skills || [];
255
+ console.log("āš™ļø Skills:");
256
+ if (skills.length === 0) {
257
+ console.log(" ā„¹ļø No skills configured");
258
+ }
259
+ else {
260
+ console.log(` ${skills.length} skill(s) configured`);
261
+ for (const skill of skills.slice(0, 3)) {
262
+ console.log(` - ${skill.name}`);
263
+ }
264
+ if (skills.length > 3) {
265
+ console.log(` ... and ${skills.length - 3} more`);
266
+ }
267
+ }
268
+ console.log();
269
+ // Env variables summary
270
+ writeProgress("Loading environment variables...");
271
+ const envVars = await fetchEnvVariablesCore(context);
272
+ console.log("šŸ” Environment Variables:");
273
+ if (envVars.length === 0) {
274
+ console.log(" ā„¹ļø No variables configured");
275
+ }
276
+ else {
277
+ console.log(` ${envVars.length} variable(s) configured`);
278
+ envVars.slice(0, 3).forEach(v => {
279
+ console.log(` - ${v.key}`);
280
+ });
281
+ if (envVars.length > 3) {
282
+ console.log(` ... and ${envVars.length - 3} more`);
283
+ }
284
+ }
285
+ console.log("\n" + "=".repeat(60));
286
+ }
287
+ // ─────────────────────────────────────────────────────────────────────────────
288
+ // Non-Interactive Mode
289
+ // ─────────────────────────────────────────────────────────────────────────────
290
+ async function executeNonInteractive(context, config, action) {
291
+ const validActions = ['overview', 'persona', 'skills', 'env'];
292
+ const normalizedAction = action.toLowerCase();
293
+ if (!validActions.includes(normalizedAction)) {
294
+ console.error(`āŒ Invalid action: "${action}"`);
295
+ console.log('\nValid actions: overview, persona, skills, env');
296
+ console.log('\nExamples:');
297
+ console.log(' lua production overview Show production summary');
298
+ console.log(' lua production persona View current persona');
299
+ console.log(' lua production skills View deployed skills');
300
+ console.log(' lua production env List environment variables');
301
+ process.exit(1);
302
+ }
303
+ switch (normalizedAction) {
304
+ case 'overview':
305
+ await displayOverviewCore(context, config);
306
+ break;
307
+ case 'persona': {
308
+ writeProgress("šŸ”„ Loading persona information...");
309
+ const versions = await fetchPersonaVersionsCore(context);
310
+ if (!versions)
311
+ process.exit(1);
312
+ displayPersonaCore(versions);
313
+ break;
314
+ }
315
+ case 'skills':
316
+ writeProgress("šŸ”„ Loading skill information...");
317
+ await displaySkillsCore(context, config);
318
+ break;
319
+ case 'env': {
320
+ writeProgress("šŸ”„ Loading environment variables...");
321
+ const envVars = await fetchEnvVariablesCore(context);
322
+ displayEnvVariablesCore(envVars);
323
+ break;
324
+ }
325
+ }
326
+ }
327
+ // ─────────────────────────────────────────────────────────────────────────────
328
+ // Interactive Mode
329
+ // ─────────────────────────────────────────────────────────────────────────────
330
+ async function manageProductionInteractive(context, config) {
331
+ let continueManaging = true;
332
+ while (continueManaging) {
333
+ console.log("\n" + "=".repeat(60));
334
+ console.log("šŸŒ™ Production Environment");
234
335
  console.log("=".repeat(60) + "\n");
235
- await safePrompt([
336
+ const actionAnswer = await safePrompt([
236
337
  {
237
- type: 'input',
238
- name: 'continue',
239
- message: 'Press Enter to continue...'
338
+ type: 'list',
339
+ name: 'action',
340
+ message: 'What would you like to view?',
341
+ choices: [
342
+ { name: 'šŸ¤– Persona - View current persona and versions', value: 'persona' },
343
+ { name: 'āš™ļø Skills - View deployed skills and versions', value: 'skills' },
344
+ { name: 'šŸ” Environment Variables - Manage production env', value: 'env' },
345
+ { name: 'āŒ Exit', value: 'exit' }
346
+ ]
240
347
  }
241
348
  ]);
349
+ if (!actionAnswer)
350
+ return;
351
+ const { action } = actionAnswer;
352
+ switch (action) {
353
+ case 'persona':
354
+ await viewProductionPersonaInteractive(context);
355
+ break;
356
+ case 'skills':
357
+ await viewProductionSkillsInteractive(context, config);
358
+ break;
359
+ case 'env':
360
+ await manageProductionEnvInteractive(context);
361
+ break;
362
+ case 'exit':
363
+ continueManaging = false;
364
+ console.log("\nšŸ‘‹ Goodbye!\n");
365
+ break;
366
+ }
242
367
  }
243
- catch (error) {
244
- console.error('āŒ Error loading skill information:', error);
368
+ }
369
+ async function viewProductionPersonaInteractive(context) {
370
+ writeProgress("šŸ”„ Loading persona information...");
371
+ const versions = await fetchPersonaVersionsCore(context);
372
+ if (!versions) {
373
+ await safePrompt([{ type: 'input', name: 'continue', message: 'Press Enter to continue...' }]);
374
+ return;
375
+ }
376
+ if (versions.length === 0) {
377
+ console.log("\nā„¹ļø No persona versions found.");
378
+ console.log("šŸ’” Create a persona version first using: lua persona\n");
379
+ await safePrompt([{ type: 'input', name: 'continue', message: 'Press Enter to continue...' }]);
380
+ return;
245
381
  }
382
+ displayPersonaCore(versions);
383
+ console.log();
384
+ await safePrompt([{ type: 'input', name: 'continue', message: 'Press Enter to continue...' }]);
246
385
  }
247
- /**
248
- * Manage production environment variables
249
- */
250
- async function manageProductionEnv(context) {
386
+ async function viewProductionSkillsInteractive(context, config) {
387
+ writeProgress("šŸ”„ Loading skill information...");
388
+ await displaySkillsCore(context, config);
389
+ console.log();
390
+ await safePrompt([{ type: 'input', name: 'continue', message: 'Press Enter to continue...' }]);
391
+ }
392
+ async function manageProductionEnvInteractive(context) {
251
393
  let continueManaging = true;
252
394
  while (continueManaging) {
253
- // Load current variables
254
- const variables = await loadProductionEnvVariables(context);
395
+ const variables = await fetchEnvVariablesCore(context);
255
396
  console.log("\n" + "=".repeat(60));
256
397
  console.log("šŸ” Production Environment Variables");
257
398
  console.log("=".repeat(60) + "\n");
@@ -260,7 +401,6 @@ async function manageProductionEnv(context) {
260
401
  }
261
402
  else {
262
403
  variables.forEach((v, index) => {
263
- // Mask values partially for security
264
404
  const maskedValue = v.value.length > 4
265
405
  ? v.value.substring(0, 4) + '*'.repeat(Math.min(v.value.length - 4, 20))
266
406
  : '*'.repeat(v.value.length);
@@ -288,19 +428,18 @@ async function manageProductionEnv(context) {
288
428
  const { action } = actionAnswer;
289
429
  switch (action) {
290
430
  case 'add':
291
- await addProductionVariable(context, variables);
431
+ await addProductionVariableInteractive(context, variables);
292
432
  break;
293
433
  case 'update':
294
- await updateProductionVariable(context, variables);
434
+ await updateProductionVariableInteractive(context, variables);
295
435
  break;
296
436
  case 'delete':
297
- await deleteProductionVariable(context, variables);
437
+ await deleteProductionVariableInteractive(context, variables);
298
438
  break;
299
439
  case 'view':
300
- await viewProductionVariable(variables);
440
+ await viewProductionVariableInteractive(variables);
301
441
  break;
302
442
  case 'refresh':
303
- // Just loop again
304
443
  break;
305
444
  case 'back':
306
445
  continueManaging = false;
@@ -308,38 +447,6 @@ async function manageProductionEnv(context) {
308
447
  }
309
448
  }
310
449
  }
311
- /**
312
- * Load production environment variables
313
- */
314
- async function loadProductionEnvVariables(context) {
315
- try {
316
- const response = await fetch(`${BASE_URLS.API}/developer/agents/${context.agentId}/env`, {
317
- method: 'GET',
318
- headers: {
319
- 'accept': 'application/json',
320
- 'Authorization': `Bearer ${context.apiKey}`
321
- }
322
- });
323
- if (!response.ok) {
324
- return [];
325
- }
326
- const data = await response.json();
327
- if (data.data && typeof data.data === 'object') {
328
- return Object.entries(data.data).map(([key, value]) => ({
329
- key,
330
- value: String(value)
331
- }));
332
- }
333
- return [];
334
- }
335
- catch (error) {
336
- console.error('āš ļø Error loading environment variables');
337
- return [];
338
- }
339
- }
340
- /**
341
- * Save production environment variables
342
- */
343
450
  async function saveProductionEnvVariables(context, variables) {
344
451
  try {
345
452
  const envData = {};
@@ -367,10 +474,7 @@ async function saveProductionEnvVariables(context, variables) {
367
474
  return false;
368
475
  }
369
476
  }
370
- /**
371
- * Add a new production environment variable
372
- */
373
- async function addProductionVariable(context, currentVariables) {
477
+ async function addProductionVariableInteractive(context, currentVariables) {
374
478
  const answers = await safePrompt([
375
479
  {
376
480
  type: 'input',
@@ -410,10 +514,7 @@ async function addProductionVariable(context, currentVariables) {
410
514
  console.error("āŒ Failed to save variable");
411
515
  }
412
516
  }
413
- /**
414
- * Update an existing production environment variable
415
- */
416
- async function updateProductionVariable(context, currentVariables) {
517
+ async function updateProductionVariableInteractive(context, currentVariables) {
417
518
  if (currentVariables.length === 0) {
418
519
  console.log("\nā„¹ļø No variables to update.\n");
419
520
  return;
@@ -452,10 +553,7 @@ async function updateProductionVariable(context, currentVariables) {
452
553
  console.error("āŒ Failed to update variable");
453
554
  }
454
555
  }
455
- /**
456
- * Delete a production environment variable
457
- */
458
- async function deleteProductionVariable(context, currentVariables) {
556
+ async function deleteProductionVariableInteractive(context, currentVariables) {
459
557
  if (currentVariables.length === 0) {
460
558
  console.log("\nā„¹ļø No variables to delete.\n");
461
559
  return;
@@ -495,10 +593,7 @@ async function deleteProductionVariable(context, currentVariables) {
495
593
  console.error("āŒ Failed to delete variable");
496
594
  }
497
595
  }
498
- /**
499
- * View a variable's full value (unmasked)
500
- */
501
- async function viewProductionVariable(currentVariables) {
596
+ async function viewProductionVariableInteractive(currentVariables) {
502
597
  if (currentVariables.length === 0) {
503
598
  console.log("\nā„¹ļø No variables to view.\n");
504
599
  return;
@@ -522,11 +617,6 @@ async function viewProductionVariable(currentVariables) {
522
617
  console.log("=".repeat(60));
523
618
  console.log(variable.value);
524
619
  console.log("=".repeat(60) + "\n");
525
- await safePrompt([
526
- {
527
- type: 'input',
528
- name: 'continue',
529
- message: 'Press Enter to continue...'
530
- }
531
- ]);
620
+ await safePrompt([{ type: 'input', name: 'continue', message: 'Press Enter to continue...' }]);
532
621
  }
622
+ //# sourceMappingURL=production.js.map