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.
- package/dist/api/chat.api.service.d.ts +1 -1
- package/dist/api/chat.api.service.d.ts.map +1 -1
- package/dist/api/chat.api.service.js +9 -1
- package/dist/api/chat.api.service.js.map +1 -1
- package/dist/api/webhook.api.service.d.ts +10 -1
- package/dist/api/webhook.api.service.d.ts.map +1 -1
- package/dist/api/webhook.api.service.js +5 -0
- package/dist/api/webhook.api.service.js.map +1 -1
- package/dist/cli/command-definitions.d.ts.map +1 -1
- package/dist/cli/command-definitions.js +31 -12
- package/dist/cli/command-definitions.js.map +1 -1
- package/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +75 -5
- package/dist/commands/chat.js.map +1 -1
- package/dist/commands/deploy.d.ts +7 -9
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +380 -123
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/jobs.js +28 -23
- package/dist/commands/jobs.js.map +1 -1
- package/dist/commands/postprocessors.js +2 -2
- package/dist/commands/postprocessors.js.map +1 -1
- package/dist/commands/preprocessors.js +2 -2
- package/dist/commands/preprocessors.js.map +1 -1
- package/dist/commands/webhooks.d.ts.map +1 -1
- package/dist/commands/webhooks.js +128 -6
- package/dist/commands/webhooks.js.map +1 -1
- package/dist/compiler/plugins/agent.plugin.d.ts +5 -0
- package/dist/compiler/plugins/agent.plugin.d.ts.map +1 -1
- package/dist/compiler/plugins/agent.plugin.js +21 -1
- package/dist/compiler/plugins/agent.plugin.js.map +1 -1
- package/dist/compiler/types.d.ts +12 -0
- package/dist/compiler/types.d.ts.map +1 -1
- package/dist/compiler/types.js.map +1 -1
- package/dist/interfaces/agent.d.ts +4 -1
- package/dist/interfaces/agent.d.ts.map +1 -1
- package/dist/interfaces/webhooks.d.ts +6 -0
- package/dist/interfaces/webhooks.d.ts.map +1 -1
- package/dist/primitives/agent.handler.d.ts +5 -0
- package/dist/primitives/agent.handler.d.ts.map +1 -1
- package/dist/primitives/agent.handler.js +28 -0
- package/dist/primitives/agent.handler.js.map +1 -1
- package/dist/types/skill.d.ts +31 -0
- package/dist/types/skill.d.ts.map +1 -1
- package/dist/types/skill.js +5 -0
- package/dist/types/skill.js.map +1 -1
- package/dist/utils/files.d.ts +1 -5
- package/dist/utils/files.d.ts.map +1 -1
- package/dist/utils/files.js +3 -12
- package/dist/utils/files.js.map +1 -1
- package/node_modules/@lua/shared-types/dist/index.d.mts +31 -1
- package/node_modules/@lua/shared-types/dist/index.d.ts +31 -1
- package/node_modules/@lua/shared-types/dist/index.js +114 -0
- package/node_modules/@lua/shared-types/dist/index.mjs +109 -0
- package/package.json +1 -1
package/dist/commands/deploy.js
CHANGED
|
@@ -1,163 +1,420 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Deploy Command
|
|
3
|
-
*
|
|
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,
|
|
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
|
-
*
|
|
20
|
+
* Normalize a server version object to the VersionInfo shape expected by
|
|
21
|
+
* sortVersionsByDate / promptVersionSelection / formatVersionChoice.
|
|
16
22
|
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
|
|
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
|
-
*
|
|
22
|
-
*
|
|
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
|
-
|
|
28
|
-
|
|
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
|
-
//
|
|
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
|
-
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
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
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
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
|
-
|
|
77
|
-
version_selected_by_flag: !!options.
|
|
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
|
-
|
|
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
|
-
*
|
|
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
|
|
98
|
-
const
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
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
|
-
*
|
|
276
|
+
* Deploy a persona version. Persona uses integer version IDs (not semver).
|
|
119
277
|
*/
|
|
120
|
-
async function
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
if (
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
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
|
-
*
|
|
338
|
+
* Deploy latest version of every primitive — mirrors `lua push all --force --auto-deploy`.
|
|
140
339
|
*/
|
|
141
|
-
async function
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
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
|
-
|
|
161
|
-
|
|
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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"}
|