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