lua-cli 3.7.4 → 3.8.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 (55) hide show
  1. package/dist/api/chat.api.service.d.ts +1 -1
  2. package/dist/api/chat.api.service.d.ts.map +1 -1
  3. package/dist/api/chat.api.service.js +9 -1
  4. package/dist/api/chat.api.service.js.map +1 -1
  5. package/dist/api/webhook.api.service.d.ts +10 -1
  6. package/dist/api/webhook.api.service.d.ts.map +1 -1
  7. package/dist/api/webhook.api.service.js +5 -0
  8. package/dist/api/webhook.api.service.js.map +1 -1
  9. package/dist/cli/command-definitions.d.ts.map +1 -1
  10. package/dist/cli/command-definitions.js +31 -12
  11. package/dist/cli/command-definitions.js.map +1 -1
  12. package/dist/commands/chat.d.ts.map +1 -1
  13. package/dist/commands/chat.js +75 -5
  14. package/dist/commands/chat.js.map +1 -1
  15. package/dist/commands/deploy.d.ts +7 -9
  16. package/dist/commands/deploy.d.ts.map +1 -1
  17. package/dist/commands/deploy.js +380 -123
  18. package/dist/commands/deploy.js.map +1 -1
  19. package/dist/commands/jobs.js +28 -23
  20. package/dist/commands/jobs.js.map +1 -1
  21. package/dist/commands/postprocessors.js +2 -2
  22. package/dist/commands/postprocessors.js.map +1 -1
  23. package/dist/commands/preprocessors.js +2 -2
  24. package/dist/commands/preprocessors.js.map +1 -1
  25. package/dist/commands/webhooks.d.ts.map +1 -1
  26. package/dist/commands/webhooks.js +128 -6
  27. package/dist/commands/webhooks.js.map +1 -1
  28. package/dist/compiler/plugins/agent.plugin.d.ts +5 -0
  29. package/dist/compiler/plugins/agent.plugin.d.ts.map +1 -1
  30. package/dist/compiler/plugins/agent.plugin.js +21 -1
  31. package/dist/compiler/plugins/agent.plugin.js.map +1 -1
  32. package/dist/compiler/types.d.ts +12 -0
  33. package/dist/compiler/types.d.ts.map +1 -1
  34. package/dist/compiler/types.js.map +1 -1
  35. package/dist/interfaces/agent.d.ts +4 -1
  36. package/dist/interfaces/agent.d.ts.map +1 -1
  37. package/dist/interfaces/webhooks.d.ts +6 -0
  38. package/dist/interfaces/webhooks.d.ts.map +1 -1
  39. package/dist/primitives/agent.handler.d.ts +5 -0
  40. package/dist/primitives/agent.handler.d.ts.map +1 -1
  41. package/dist/primitives/agent.handler.js +28 -0
  42. package/dist/primitives/agent.handler.js.map +1 -1
  43. package/dist/types/skill.d.ts +31 -0
  44. package/dist/types/skill.d.ts.map +1 -1
  45. package/dist/types/skill.js +5 -0
  46. package/dist/types/skill.js.map +1 -1
  47. package/dist/utils/files.d.ts +1 -5
  48. package/dist/utils/files.d.ts.map +1 -1
  49. package/dist/utils/files.js +3 -12
  50. package/dist/utils/files.js.map +1 -1
  51. package/node_modules/@lua/shared-types/dist/index.d.mts +31 -1
  52. package/node_modules/@lua/shared-types/dist/index.d.ts +31 -1
  53. package/node_modules/@lua/shared-types/dist/index.js +114 -0
  54. package/node_modules/@lua/shared-types/dist/index.mjs +109 -0
  55. package/package.json +1 -1
@@ -1,163 +1,420 @@
1
1
  /**
2
2
  * Deploy Command
3
- * Orchestrates deployment of skill versions to production
3
+ * Generic deployment for all primitive types — mirrors `lua push [type]`
4
4
  */
5
5
  import { readYamlConfig, validateSkillConfig } from '../utils/files.js';
6
- import { skillHandler } from '../primitives/index.js';
6
+ import { skillHandler, webhookHandler, jobHandler, preprocessorHandler, postprocessorHandler, } from '../primitives/index.js';
7
7
  import { withErrorHandling, writeProgress, writeSuccess, writeInfo, clearPromptLines } from '../utils/cli.js';
8
8
  import { requireAuthOrExit } from '../utils/command-utils.js';
9
9
  import { safePrompt } from '../utils/prompt-handler.js';
10
- import { sortVersionsByDate, promptVersionSelection, confirmDeployment, validateVersionsAvailable, } from '../utils/deploy-helpers.js';
10
+ import { sortVersionsByDate, promptVersionSelection, confirmDeployment, } from '../utils/deploy-helpers.js';
11
11
  import { BASE_URLS } from '../config/constants.js';
12
12
  import SkillApi from '../api/skills.api.service.js';
13
+ import WebhookApi from '../api/webhook.api.service.js';
14
+ import JobApi from '../api/job.api.service.js';
15
+ import PreProcessorApi from '../api/preprocessor.api.service.js';
16
+ import PostProcessorApi from '../api/postprocessor.api.service.js';
17
+ import PersonaApi from '../api/persona.api.service.js';
13
18
  import { trackEvent } from '../services/analytics.js';
14
19
  /**
15
- * Main deploy command - deploys a skill version to production.
20
+ * Normalize a server version object to the VersionInfo shape expected by
21
+ * sortVersionsByDate / promptVersionSelection / formatVersionChoice.
16
22
  *
17
- * Supports both interactive and non-interactive modes:
18
- * - Interactive: prompts for skill, version, and confirmation
19
- * - Non-interactive: use --skill-name, --skill-version, --force flags
23
+ * Non-skill primitives use { createdAt, isActive/active } while VersionInfo
24
+ * expects { createdDate, isCurrent }.
25
+ */
26
+ function normalizeVersion(v) {
27
+ return {
28
+ version: v.version,
29
+ createdDate: v.createdDate ?? v.createdAt ?? '',
30
+ createdBy: v.createdBy ?? '',
31
+ isCurrent: v.isCurrent ?? v.isActive ?? v.active ?? false,
32
+ createdByEmail: v.createdByEmail ?? '',
33
+ createdByFullName: v.createdByFullName ?? '',
34
+ };
35
+ }
36
+ const VERSIONED_DEPLOY_TYPES = [
37
+ {
38
+ type: 'skill',
39
+ handler: skillHandler,
40
+ label: 'Skill',
41
+ emoji: '🛠️',
42
+ idField: 'skillId',
43
+ getVersions: async (apiKey, agentId, entityId) => {
44
+ const api = new SkillApi(BASE_URLS.API, apiKey, agentId);
45
+ const result = await api.getSkillVersions(entityId);
46
+ return (result.data?.versions || []).map(normalizeVersion);
47
+ },
48
+ },
49
+ {
50
+ type: 'webhook',
51
+ handler: webhookHandler,
52
+ label: 'Webhook',
53
+ emoji: '🪝',
54
+ idField: 'webhookId',
55
+ getVersions: async (apiKey, agentId, entityId) => {
56
+ const api = new WebhookApi(BASE_URLS.API, apiKey, agentId);
57
+ const result = await api.getWebhookVersions(entityId);
58
+ return (result.data?.versions || []).map(normalizeVersion);
59
+ },
60
+ },
61
+ {
62
+ type: 'job',
63
+ handler: jobHandler,
64
+ label: 'Job',
65
+ emoji: '⏰',
66
+ idField: 'jobId',
67
+ getVersions: async (apiKey, agentId, entityId) => {
68
+ const api = new JobApi(BASE_URLS.API, apiKey, agentId);
69
+ const result = await api.getJobVersions(entityId);
70
+ // Job API returns the array directly (not wrapped in { versions: [...] })
71
+ return (Array.isArray(result.data) ? result.data : []).map(normalizeVersion);
72
+ },
73
+ },
74
+ {
75
+ type: 'preprocessor',
76
+ handler: preprocessorHandler,
77
+ label: 'PreProcessor',
78
+ emoji: '📥',
79
+ idField: 'preprocessorId',
80
+ getVersions: async (apiKey, agentId, entityId) => {
81
+ const api = new PreProcessorApi(BASE_URLS.API, apiKey, agentId);
82
+ const result = await api.getPreProcessorVersions(entityId);
83
+ return (result.data?.versions || []).map(normalizeVersion);
84
+ },
85
+ },
86
+ {
87
+ type: 'postprocessor',
88
+ handler: postprocessorHandler,
89
+ label: 'PostProcessor',
90
+ emoji: '📤',
91
+ idField: 'postprocessorId',
92
+ getVersions: async (apiKey, agentId, entityId) => {
93
+ const api = new PostProcessorApi(BASE_URLS.API, apiKey, agentId);
94
+ const result = await api.getPostProcessorVersions(entityId);
95
+ return (result.data?.versions || []).map(normalizeVersion);
96
+ },
97
+ },
98
+ ];
99
+ /**
100
+ * Main deploy command — deploys a primitive version to production.
20
101
  *
21
- * @param cmdObj - Commander command object with options
22
- * @returns Promise that resolves when deployment completes
102
+ * Mirrors `lua push [type]`:
103
+ * - No type: interactive menu
104
+ * - With type: deploy that primitive directly
105
+ * - 'all': deploy latest version of every primitive
23
106
  */
24
- export async function deployCommand(cmdObj) {
107
+ export async function deployCommand(type, cmdObj) {
25
108
  return withErrorHandling(async () => {
26
109
  const options = {
27
- skillName: cmdObj?.skillName || null,
28
- skillVersion: cmdObj?.skillVersion || null,
110
+ // Support both new generic flags and deprecated skill-specific flags
111
+ name: cmdObj?.name || cmdObj?.skillName || null,
112
+ version: cmdObj?.setVersion || cmdObj?.skillVersion || null,
29
113
  force: cmdObj?.force || false,
30
114
  };
31
- // Step 1: Validate configuration
115
+ // Backward compat: if deprecated skill-specific flags used without a type arg, infer 'skill'
116
+ if (!type && (cmdObj?.skillName || cmdObj?.skillVersion)) {
117
+ type = 'skill';
118
+ }
119
+ // Handle 'all' (requires --force, like `lua push all`)
120
+ if (type === 'all') {
121
+ if (!options.force) {
122
+ console.log('\nUsage:');
123
+ console.log(' lua deploy all --force Deploy latest version of all primitives');
124
+ throw new Error('The "all" type requires the --force flag');
125
+ }
126
+ return await deployAllCommand(options);
127
+ }
32
128
  const config = readYamlConfig();
33
129
  validateSkillConfig(config);
34
- // Step 2: Get available skills
35
- const availableSkills = skillHandler.getFromYaml(config);
36
- if (availableSkills.length === 0) {
37
- console.error("❌ No skills found in configuration. Please compile your skill first using 'lua compile'.");
38
- throw new Error("No skills found in configuration. Please compile your skill first using");
39
- }
40
- // Step 3: Select skill (non-interactive or interactive)
41
- const selectedSkill = await selectSkill(availableSkills, options.skillName);
42
- writeInfo(`📦 Deploying skill: ${selectedSkill.name}`);
43
- // Step 4: Authenticate
44
- const apiKey = await requireAuthOrExit();
45
- // Step 5: Fetch available versions for the selected skill
46
- writeProgress("🔄 Fetching available versions...");
47
- const skillApi = new SkillApi(BASE_URLS.API, apiKey, config.agent.agentId);
48
- const versionsResult = await skillApi.getSkillVersions(selectedSkill.skillId);
49
- if (!versionsResult.success) {
50
- throw new Error(`Failed to fetch versions: ${versionsResult.error?.message || 'Unknown error'}`);
51
- }
52
- const versionsResponse = versionsResult.data;
53
- validateVersionsAvailable(versionsResponse?.versions);
54
- const sortedVersions = sortVersionsByDate(versionsResponse?.versions || []);
55
- // Step 6: Select version (non-interactive or interactive)
56
- const selectedVersion = await selectVersion(sortedVersions, options.skillVersion);
57
- writeInfo(`📦 Selected version: ${selectedVersion}`);
58
- // Step 7: Confirm deployment (skip if --force)
59
- if (!options.force) {
60
- const confirmed = await confirmDeployment();
61
- if (!confirmed) {
62
- console.log("❌ Deployment cancelled.");
63
- process.exit(0);
130
+ const agentId = config.agent.agentId;
131
+ const validTypes = ['skill', 'webhook', 'job', 'preprocessor', 'postprocessor', 'persona'];
132
+ let selectedType;
133
+ if (type) {
134
+ if (!validTypes.includes(type)) {
135
+ console.log('\nUsage:');
136
+ console.log(' lua deploy Interactive selection');
137
+ console.log(' lua deploy skill Deploy a skill version');
138
+ console.log(' lua deploy webhook Deploy a webhook version');
139
+ console.log(' lua deploy job Deploy a job version');
140
+ console.log(' lua deploy preprocessor Deploy a preprocessor version');
141
+ console.log(' lua deploy postprocessor Deploy a postprocessor version');
142
+ console.log(' lua deploy persona Deploy a persona version');
143
+ console.log(' lua deploy all --force Deploy latest version of all');
144
+ throw new Error(`Invalid type: "${type}". Must be one of: ${validTypes.join(', ')}, or "all".`);
64
145
  }
146
+ selectedType = type;
65
147
  }
66
- // Step 8: Publish the selected version
67
- writeProgress("🔄 Publishing version...");
68
- const publishResult = await skillApi.publishSkillVersion(selectedSkill.skillId, selectedVersion);
69
- if (!publishResult.success) {
70
- throw new Error(`Failed to publish version: ${publishResult.error?.message || 'Unknown error'}`);
148
+ else {
149
+ const answer = await safePrompt([{
150
+ type: 'list',
151
+ name: 'type',
152
+ message: 'What would you like to deploy?',
153
+ choices: [
154
+ { name: '🛠️ Skill', value: 'skill' },
155
+ { name: '🪝 Webhook', value: 'webhook' },
156
+ { name: '⏰ Job', value: 'job' },
157
+ { name: '📥 PreProcessor', value: 'preprocessor' },
158
+ { name: '📤 PostProcessor', value: 'postprocessor' },
159
+ { name: '🤖 Persona', value: 'persona' },
160
+ ],
161
+ }]);
162
+ if (!answer) {
163
+ console.log('Deployment cancelled.');
164
+ return;
165
+ }
166
+ selectedType = answer.type;
167
+ }
168
+ const apiKey = await requireAuthOrExit();
169
+ if (selectedType === 'persona') {
170
+ await deployPersonaVersion(apiKey, agentId, options);
171
+ }
172
+ else {
173
+ const deployConfig = VERSIONED_DEPLOY_TYPES.find(dt => dt.type === selectedType);
174
+ await deployVersionedPrimitive(deployConfig, config, apiKey, agentId, options);
71
175
  }
72
- const deployedVersion = publishResult.data?.activeVersionId;
73
- writeSuccess(`✅ Version ${deployedVersion} of "${selectedSkill.name}" deployed successfully`);
74
176
  trackEvent('cli_deploy_completed', {
177
+ primitive_type: selectedType,
75
178
  force_mode: options.force || false,
76
- skill_selected_by_name: !!options.skillName,
77
- version_selected_by_flag: !!options.skillVersion,
78
- version_deployed: deployedVersion,
79
- version_was_latest: selectedVersion === sortedVersions[0]?.version,
80
- versions_available: sortedVersions.length,
81
- skills_available_count: availableSkills.length,
82
- auto_selected_skill: availableSkills.length === 1,
179
+ entity_selected_by_name: !!options.name,
180
+ version_selected_by_flag: !!options.version,
83
181
  });
84
- // Step 9: Update YAML with the deployed version
85
- if (deployedVersion !== selectedSkill.version) {
86
- writeInfo(`📝 Updating YAML with deployed version: ${deployedVersion}`);
87
- skillHandler.updateVersionInYaml(selectedSkill.name, deployedVersion || '');
88
- }
89
- }, "deployment");
182
+ }, 'deployment');
90
183
  }
91
184
  /**
92
- * Prompts user to select a skill from available skills.
93
- *
94
- * @param skills - Array of available skills
95
- * @returns Selected skill
185
+ * Generic deploy flow for versioned primitives (skill, webhook, job, preprocessor, postprocessor).
96
186
  */
97
- async function promptSkillSelection(skills) {
98
- const skillChoices = skills.map((skill) => ({
99
- name: `${skill.name} (v${skill.version})`,
100
- value: skill
101
- }));
102
- const answer = await safePrompt([
103
- {
104
- type: "list",
105
- name: "selectedSkill",
106
- message: "Select a skill to deploy:",
107
- choices: skillChoices
108
- }
109
- ]);
110
- if (!answer) {
111
- console.log("Deployment cancelled.");
112
- process.exit(0);
113
- }
114
- clearPromptLines(2);
115
- return answer.selectedSkill;
187
+ async function deployVersionedPrimitive(deployConfig, config, apiKey, agentId, options) {
188
+ const entities = deployConfig.handler.getFromYaml(config);
189
+ if (entities.length === 0) {
190
+ writeInfo(`ℹ️ No ${deployConfig.label}s found in configuration. Nothing to deploy.`);
191
+ return;
192
+ }
193
+ // Select entity
194
+ let selectedEntity;
195
+ if (options.name) {
196
+ selectedEntity = entities.find((e) => e.name === options.name);
197
+ if (!selectedEntity) {
198
+ console.log(`\nAvailable ${deployConfig.label}s:`);
199
+ entities.forEach((e) => console.log(` - ${e.name}`));
200
+ throw new Error(`${deployConfig.label} "${options.name}" not found in configuration.`);
201
+ }
202
+ }
203
+ else if (entities.length === 1) {
204
+ selectedEntity = entities[0];
205
+ }
206
+ else {
207
+ const answer = await safePrompt([{
208
+ type: 'list',
209
+ name: 'entity',
210
+ message: `Select a ${deployConfig.label} to deploy:`,
211
+ choices: entities.map((e) => ({ name: `${e.name} (v${e.version})`, value: e })),
212
+ }]);
213
+ if (!answer) {
214
+ console.log('Deployment cancelled.');
215
+ return;
216
+ }
217
+ clearPromptLines(2);
218
+ selectedEntity = answer.entity;
219
+ }
220
+ const entityId = selectedEntity[deployConfig.idField];
221
+ if (!entityId) {
222
+ throw new Error(`${deployConfig.label} "${selectedEntity.name}" is missing its ID. Please push it first using: lua push ${deployConfig.type}`);
223
+ }
224
+ writeInfo(`📦 Deploying ${deployConfig.label}: ${selectedEntity.name}`);
225
+ // Fetch available versions
226
+ writeProgress('🔄 Fetching available versions...');
227
+ const versions = await deployConfig.getVersions(apiKey, agentId, entityId);
228
+ if (!versions || versions.length === 0) {
229
+ throw new Error(`No versions found for ${deployConfig.label} "${selectedEntity.name}". Push it first using: lua push ${deployConfig.type}`);
230
+ }
231
+ const sortedVersions = sortVersionsByDate(versions);
232
+ // Select version
233
+ let selectedVersion;
234
+ if (options.version) {
235
+ if (options.version.toLowerCase() === 'latest') {
236
+ selectedVersion = sortedVersions[0].version;
237
+ }
238
+ else {
239
+ const exists = sortedVersions.some(v => v.version === options.version);
240
+ if (!exists) {
241
+ console.log('\nAvailable versions:');
242
+ sortedVersions.slice(0, 5).forEach(v => console.log(` - ${v.version}`));
243
+ if (sortedVersions.length > 5)
244
+ console.log(` ... and ${sortedVersions.length - 5} more`);
245
+ throw new Error(`Version "${options.version}" not found.`);
246
+ }
247
+ selectedVersion = options.version;
248
+ }
249
+ }
250
+ else {
251
+ selectedVersion = await promptVersionSelection(sortedVersions);
252
+ }
253
+ writeInfo(`📦 Selected version: ${selectedVersion}`);
254
+ // Confirm
255
+ if (!options.force) {
256
+ const confirmed = await confirmDeployment();
257
+ if (!confirmed) {
258
+ console.log('❌ Deployment cancelled.');
259
+ process.exit(0);
260
+ }
261
+ }
262
+ // Publish
263
+ writeProgress('🔄 Publishing version...');
264
+ const result = await deployConfig.handler.publishVersion(apiKey, agentId, entityId, selectedVersion);
265
+ if (!result.success) {
266
+ throw new Error(`Failed to deploy: ${result.error || 'Unknown error'}`);
267
+ }
268
+ writeSuccess(`✅ ${deployConfig.label} "${selectedEntity.name}" v${selectedVersion} deployed successfully`);
269
+ // Update YAML with the deployed version
270
+ if (selectedVersion !== selectedEntity.version) {
271
+ writeInfo(`📝 Updating YAML with deployed version: ${selectedVersion}`);
272
+ deployConfig.handler.updateVersionInYaml(selectedEntity.name, selectedVersion);
273
+ }
116
274
  }
117
275
  /**
118
- * Selects a skill by name (non-interactive) or prompts user (interactive).
276
+ * Deploy a persona version. Persona uses integer version IDs (not semver).
119
277
  */
120
- async function selectSkill(availableSkills, skillName) {
121
- if (skillName) {
122
- // Non-interactive: find by ID or name
123
- const skill = availableSkills.find(s => s.skillId === skillName || s.name === skillName);
124
- if (!skill) {
125
- console.error(`❌ Skill "${skillName}" not found`);
126
- console.log('\nAvailable skills:');
127
- availableSkills.forEach(s => console.log(` - ${s.name} (${s.skillId})`));
128
- throw new Error("Skill");
129
- }
130
- return skill;
131
- }
132
- if (availableSkills.length === 1) {
133
- return availableSkills[0];
134
- }
135
- // Interactive: prompt for selection
136
- return promptSkillSelection(availableSkills);
278
+ async function deployPersonaVersion(apiKey, agentId, options) {
279
+ const personaApi = new PersonaApi(BASE_URLS.API, apiKey, agentId);
280
+ writeProgress('🔄 Fetching persona versions...');
281
+ const result = await personaApi.getVersions('all');
282
+ const versions = result.data?.versions || [];
283
+ if (versions.length === 0) {
284
+ throw new Error('No persona versions found. Push a persona first using: lua push agent');
285
+ }
286
+ // Sort by createdDate descending (persona versions use numeric timestamps)
287
+ const sortedVersions = versions.sort((a, b) => b.createdDate - a.createdDate);
288
+ // Select version
289
+ let selectedVersion;
290
+ if (options.version) {
291
+ if (options.version.toLowerCase() === 'latest') {
292
+ selectedVersion = sortedVersions[0].version;
293
+ }
294
+ else {
295
+ const v = parseInt(options.version, 10);
296
+ if (isNaN(v)) {
297
+ throw new Error(`Invalid persona version: "${options.version}". Must be a number or 'latest'.`);
298
+ }
299
+ if (!sortedVersions.some(pv => pv.version === v)) {
300
+ throw new Error(`Persona version ${v} not found.`);
301
+ }
302
+ selectedVersion = v;
303
+ }
304
+ }
305
+ else {
306
+ const answer = await safePrompt([{
307
+ type: 'list',
308
+ name: 'version',
309
+ message: 'Select a persona version to deploy:',
310
+ choices: sortedVersions.map(v => ({
311
+ name: `v${v.version}${v.isCurrent ? ' (CURRENT)' : ''} — ${new Date(v.createdDate).toLocaleDateString()}`,
312
+ value: v.version,
313
+ })),
314
+ }]);
315
+ if (!answer) {
316
+ console.log('Deployment cancelled.');
317
+ return;
318
+ }
319
+ clearPromptLines(2);
320
+ selectedVersion = answer.version;
321
+ }
322
+ writeInfo(`📦 Selected persona version: ${selectedVersion}`);
323
+ if (!options.force) {
324
+ const confirmed = await confirmDeployment();
325
+ if (!confirmed) {
326
+ console.log('❌ Deployment cancelled.');
327
+ process.exit(0);
328
+ }
329
+ }
330
+ writeProgress('🔄 Deploying persona...');
331
+ const deployResult = await personaApi.deployVersion(selectedVersion);
332
+ if (!deployResult.success) {
333
+ throw new Error(`Failed to deploy persona: ${deployResult.error?.message || 'Unknown error'}`);
334
+ }
335
+ writeSuccess(`✅ Persona v${selectedVersion} deployed successfully`);
137
336
  }
138
337
  /**
139
- * Selects a version (non-interactive with "latest" support) or prompts user (interactive).
338
+ * Deploy latest version of every primitive mirrors `lua push all --force --auto-deploy`.
140
339
  */
141
- async function selectVersion(sortedVersions, skillVersion) {
142
- if (skillVersion) {
143
- // Handle "latest" special case
144
- if (skillVersion.toLowerCase() === 'latest') {
145
- return sortedVersions[0].version;
146
- }
147
- // Validate version exists
148
- const versionExists = sortedVersions.some(v => v.version === skillVersion);
149
- if (!versionExists) {
150
- console.error(`❌ Version "${skillVersion}" not found`);
151
- console.log('\nAvailable versions:');
152
- sortedVersions.slice(0, 5).forEach(v => console.log(` - ${v.version}`));
153
- if (sortedVersions.length > 5) {
154
- console.log(` ... and ${sortedVersions.length - 5} more`);
340
+ async function deployAllCommand(_options) {
341
+ const config = readYamlConfig();
342
+ validateSkillConfig(config);
343
+ const apiKey = await requireAuthOrExit();
344
+ const agentId = config.agent.agentId;
345
+ let deployedCount = 0;
346
+ let failedCount = 0;
347
+ console.log('\n🚀 Deploying latest versions of all primitives...\n');
348
+ // Deploy all versioned primitives
349
+ for (const deployConfig of VERSIONED_DEPLOY_TYPES) {
350
+ const entities = deployConfig.handler.getFromYaml(config);
351
+ for (const entity of entities) {
352
+ const entityId = entity[deployConfig.idField];
353
+ if (!entityId) {
354
+ console.warn(` ⚠️ ${deployConfig.label} "${entity.name}" missing ID, skipping`);
355
+ continue;
356
+ }
357
+ try {
358
+ const versions = await deployConfig.getVersions(apiKey, agentId, entityId);
359
+ if (!versions || versions.length === 0) {
360
+ writeInfo(` ℹ️ No versions for ${deployConfig.label} "${entity.name}", skipping`);
361
+ continue;
362
+ }
363
+ const latestVersion = sortVersionsByDate(versions)[0].version;
364
+ const result = await deployConfig.handler.publishVersion(apiKey, agentId, entityId, latestVersion);
365
+ if (result.success) {
366
+ writeSuccess(` ✅ ${deployConfig.label} "${entity.name}" v${latestVersion} deployed`);
367
+ if (latestVersion !== entity.version) {
368
+ deployConfig.handler.updateVersionInYaml(entity.name, latestVersion);
369
+ }
370
+ deployedCount++;
371
+ }
372
+ else {
373
+ console.warn(` ⚠️ Failed to deploy ${deployConfig.label} "${entity.name}": ${result.error}`);
374
+ failedCount++;
375
+ }
376
+ }
377
+ catch (e) {
378
+ console.warn(` ⚠️ Error deploying ${deployConfig.label} "${entity.name}": ${e.message}`);
379
+ failedCount++;
380
+ }
381
+ }
382
+ }
383
+ // Deploy persona (latest version)
384
+ try {
385
+ const personaApi = new PersonaApi(BASE_URLS.API, apiKey, agentId);
386
+ const latestPersona = await personaApi.getLatestVersion();
387
+ if (latestPersona) {
388
+ const deployResult = await personaApi.deployVersion(latestPersona.version);
389
+ if (deployResult.success) {
390
+ writeSuccess(` ✅ Persona v${latestPersona.version} deployed`);
391
+ deployedCount++;
392
+ }
393
+ else {
394
+ console.warn(' ⚠️ Failed to deploy persona');
395
+ failedCount++;
155
396
  }
156
- throw new Error("Operation failed");
157
397
  }
158
- return skillVersion;
159
398
  }
160
- // Interactive: prompt for selection
161
- return promptVersionSelection(sortedVersions);
399
+ catch (e) {
400
+ console.warn(` ⚠️ Error deploying persona: ${e.message}`);
401
+ failedCount++;
402
+ }
403
+ console.log();
404
+ if (deployedCount > 0) {
405
+ writeSuccess(`✅ Deployed ${deployedCount} primitive${deployedCount !== 1 ? 's' : ''} successfully`);
406
+ }
407
+ if (failedCount > 0) {
408
+ console.warn(`⚠️ ${failedCount} deployment${failedCount !== 1 ? 's' : ''} failed`);
409
+ }
410
+ if (deployedCount === 0 && failedCount === 0) {
411
+ writeInfo('ℹ️ No primitives found to deploy.');
412
+ }
413
+ trackEvent('cli_deploy_completed', {
414
+ primitive_type: 'all',
415
+ force_mode: true,
416
+ deployed_count: deployedCount,
417
+ failed_count: failedCount,
418
+ });
162
419
  }
163
420
  //# sourceMappingURL=deploy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"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"}