UNPKG

polyv-live-cli

Version:

CLI tool for managing PolyV live streaming services.

134 lines 6.02 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AIDigitalHumanHandler = void 0; const base_handler_1 = require("./base.handler"); const errors_1 = require("../utils/errors"); const ai_digital_human_service_1 = require("../services/ai-digital-human-service"); class AIDigitalHumanHandler extends base_handler_1.BaseHandler { constructor(authConfig, serviceConfig) { super(); this.aiDigitalHumanService = new ai_digital_human_service_1.AIDigitalHumanServiceSdk(authConfig, serviceConfig); } async listDigitalHumans(options) { const format = options.output || 'table'; const page = options.page || 1; const size = options.size || 10; const response = await this.aiDigitalHumanService.listDigitalHumans(page, size); if (format === 'json') { this.displayData(response, 'json'); } else { this.displayDigitalHumansTable(response); } } async listOrganizations(options) { const format = options.output || 'table'; this.validateIds(options.ids); const associations = await this.aiDigitalHumanService.listOrganizations(options.ids); if (format === 'json') { this.displayData(associations, 'json'); } else { this.displayOrganizationsTable(associations); } } async setOrganizations(options) { const format = options.output || 'table'; let params; if (options.configJson) { try { params = JSON.parse(options.configJson); } catch { throw new errors_1.PolyVValidationError('Invalid JSON config format', 'configJson', options.configJson, 'invalid'); } if (!Array.isArray(params) || params.length === 0) { throw new errors_1.PolyVValidationError('config-json must be a non-empty array', 'configJson', options.configJson, 'invalid'); } } else { if (!options.aiDigitalHumanId || options.aiDigitalHumanId.trim() === '') { throw new errors_1.PolyVValidationError('aiDigitalHumanId is required when config-json is not provided', 'aiDigitalHumanId', options.aiDigitalHumanId, 'required'); } if (!options.organizationIds || options.organizationIds.trim() === '') { throw new errors_1.PolyVValidationError('organizationIds is required when config-json is not provided', 'organizationIds', options.organizationIds, 'required'); } const orgIds = options.organizationIds .split(',') .map(id => parseInt(id.trim(), 10)) .filter(id => !isNaN(id)); params = [{ aiDigitalHumanId: parseInt(options.aiDigitalHumanId, 10), organizationIds: orgIds, includeChildren: options.includeChildren ?? true, }]; } const result = await this.aiDigitalHumanService.setOrganizations(params); if (format === 'json') { this.displayData({ success: result, count: params.length }, 'json'); } else { this.displaySetSuccessTable(params.length); } } validateIds(ids) { if (!ids || ids.trim() === '') { throw new errors_1.PolyVValidationError('ids is required', 'ids', ids, 'required'); } const idsArray = ids.split(',').map(id => id.trim()).filter(id => id.length > 0); if (idsArray.length === 0) { throw new errors_1.PolyVValidationError('ids must contain at least one valid ID', 'ids', ids, 'invalid'); } for (const id of idsArray) { if (!/^\d+$/.test(id)) { throw new errors_1.PolyVValidationError(`Invalid ID format: ${id}. IDs must be numeric`, 'ids', ids, 'invalid'); } } if (idsArray.length > 100) { throw new errors_1.PolyVValidationError(`ids count (${idsArray.length}) exceeds maximum of 100`, 'ids', ids, 'exceed_maximum'); } } displayDigitalHumansTable(response) { if (response.contents.length === 0) { console.log('No AI Digital Humans found (未找到AI数字人)'); return; } const tableData = response.contents.map((dh) => { return { 'ID': dh.id, '名称': dh.name, '角色代码': dh.thirdRoleCode, '服装': dh.clothesDesc, '默认语音ID': dh.defaultTtsVoiceId, '创建时间': this.formatTimestamp(dh.createTime), }; }); this.displayAsTable(tableData); console.log(`\nPage ${response.pageNumber}/${response.totalPages} | Total: ${response.totalItems} items (第 ${response.pageNumber}/${response.totalPages} 页 | 共 ${response.totalItems} 条)`); } displayOrganizationsTable(associations) { if (associations.length === 0) { console.log('No organization associations found (未找到组织关联)'); return; } const tableData = associations.map((assoc) => { return { '数字人ID': assoc.aiDigitalHumanId, '关联组织ID': (assoc.organizationIds || []).join(', '), '包含子组织': assoc.includeChildren ? 'Yes' : 'No', }; }); this.displayAsTable(tableData); } displaySetSuccessTable(count) { console.log(`✅ Successfully set organizations for ${count} AI Digital Human(s) (成功设置 ${count} 个AI数字人的组织关联)`); } formatTimestamp(timestamp) { if (!timestamp) return '-'; const date = new Date(timestamp); return date.toISOString().split('T')[0] || '-'; } } exports.AIDigitalHumanHandler = AIDigitalHumanHandler; //# sourceMappingURL=ai-digital-human.handler.js.map