WARNING: proceeding, even though we could not create PATH aliases: Refusing to create helper binaries under temporary dir "/tmp" (codex_home: AbsolutePathBuf("/tmp/codex-home"))
Reading additional input from stdin...
{"type":"thread.started","thread_id":"01a0c67c-8dda-7653-98f8-d4675787cd68"}
{"type":"turn.started"}
2026-09-22T00:20:46.867039Z ERROR codex_api::endpoint::responses_websocket: failed to connect to websocket: HTTP error: 404 Not Found, url: wss://app-llmproxy.dataannotation.tech/api/llm_proxy/openai/v1/responses
2026-09-22T00:20:47.024296Z ERROR codex_api::endpoint::responses_websocket: failed to connect to websocket: HTTP error: 404 Not Found, url: wss://app-llmproxy.dataannotation.tech/api/llm_proxy/openai/v1/responses
2026-09-22T00:20:47.354188Z ERROR codex_api::endpoint::responses_websocket: failed to connect to websocket: HTTP error: 404 Not Found, url: wss://app-llmproxy.dataannotation.tech/api/llm_proxy/openai/v1/responses
{"type":"error","message":"Reconnecting... 2/5 (unexpected status 404 Not Found: d9\r\n{\"error\":{\"message\":\"LlmProxy::Error: Unknown request URL: GET /api/llm_proxy/openai/v1/responses.\",\"type\":\"invalid_request_error\",\"code\":\"unknown_url\",\"context\":{\"request_id\":\"08f386d0-cf3f-41f3-ba82-bfce8dc0dc60\"}}}, url: wss://app-llmproxy.dataannotation.tech/api/llm_proxy/openai/v1/responses, cf-ray: a3ed2548ee634ce6-BOS, request id: 08f386d0-cf3f-41f3-ba82-bfce8dc0dc60)"}
2026-09-22T00:20:47.967297Z ERROR codex_api::endpoint::responses_websocket: failed to connect to websocket: HTTP error: 404 Not Found, url: wss://app-llmproxy.dataannotation.tech/api/llm_proxy/openai/v1/responses
{"type":"error","message":"Reconnecting... 3/5 (unexpected status 404 Not Found: d9\r\n{\"error\":{\"message\":\"LlmProxy::Error: Unknown request URL: GET /api/llm_proxy/openai/v1/responses.\",\"type\":\"invalid_request_error\",\"code\":\"unknown_url\",\"context\":{\"request_id\":\"f43b59b9-558f-4c93-a22f-3278870ff4e0\"}}}, url: wss://app-llmproxy.dataannotation.tech/api/llm_proxy/openai/v1/responses, cf-ray: a3ed254cab2667b0-BOS, request id: f43b59b9-558f-4c93-a22f-3278870ff4e0)"}
2026-09-22T00:20:48.962163Z ERROR codex_api::endpoint::responses_websocket: failed to connect to websocket: HTTP error: 404 Not Found, url: wss://app-llmproxy.dataannotation.tech/api/llm_proxy/openai/v1/responses
{"type":"error","message":"Reconnecting... 4/5 (unexpected status 404 Not Found: d9\r\n{\"error\":{\"message\":\"LlmProxy::Error: Unknown request URL: GET /api/llm_proxy/openai/v1/responses.\",\"type\":\"invalid_request_error\",\"code\":\"unknown_url\",\"context\":{\"request_id\":\"86fcb8bf-4222-4244-a542-1e6205b2098d\"}}}, url: wss://app-llmproxy.dataannotation.tech/api/llm_proxy/openai/v1/responses, cf-ray: a3ed2552fc5cb22f-BOS, request id: 86fcb8bf-4222-4244-a542-1e6205b2098d)"}
2026-09-22T00:20:50.656070Z ERROR codex_api::endpoint::responses_websocket: failed to connect to websocket: HTTP error: 404 Not Found, url: wss://app-llmproxy.dataannotation.tech/api/llm_proxy/openai/v1/responses
{"type":"error","message":"Reconnecting... 5/5 (unexpected status 404 Not Found: d9\r\n{\"error\":{\"message\":\"LlmProxy::Error: Unknown request URL: GET /api/llm_proxy/openai/v1/responses.\",\"type\":\"invalid_request_error\",\"code\":\"unknown_url\",\"context\":{\"request_id\":\"75aa2519-fbf4-415e-8662-1eda90f02657\"}}}, url: wss://app-llmproxy.dataannotation.tech/api/llm_proxy/openai/v1/responses, cf-ray: a3ed255d6a0a2958-BOS, request id: 75aa2519-fbf4-415e-8662-1eda90f02657)"}
2026-09-22T00:20:54.274958Z ERROR codex_api::endpoint::responses_websocket: failed to connect to websocket: HTTP error: 404 Not Found, url: wss://app-llmproxy.dataannotation.tech/api/llm_proxy/openai/v1/responses
{"type":"item.completed","item":{"id":"item_0","type":"error","message":"Falling back from WebSockets to HTTPS transport. unexpected status 404 Not Found: d9\r\n{\"error\":{\"message\":\"LlmProxy::Error: Unknown request URL: GET /api/llm_proxy/openai/v1/responses.\",\"type\":\"invalid_request_error\",\"code\":\"unknown_url\",\"context\":{\"request_id\":\"c028311e-2fdc-4a3d-8112-05f7da68181d\"}}}, url: wss://app-llmproxy.dataannotation.tech/api/llm_proxy/openai/v1/responses, cf-ray: a3ed25742dc3901b-BOS, request id: c028311e-2fdc-4a3d-8112-05f7da68181d"}}
{"type":"item.completed","item":{"id":"item_1","type":"agent_message","text":"I’ll trace the `pro_v2` cloning request path from submission through job processing/state persistence, reproduce the failure with the existing tests or a focused case, then patch and verify it."}}
{"type":"item.started","item":{"id":"item_2","type":"command_execution","command":"/bin/bash -lc \"pwd && rg --files -g '\"'!node_modules'\"' -g '\"'!vendor'\"' | sed -n '1,240p'\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_2","type":"command_execution","command":"/bin/bash -lc \"pwd && rg --files -g '\"'!node_modules'\"' -g '\"'!vendor'\"' | sed -n '1,240p'\"","aggregated_output":"/workspace\nvoice-synthsizer-job-handler/salutation/salutation_service.js\nvoice-synthsizer-job-handler/salutation/salutation_model.js\nvoice-synthsizer-job-handler/salutation/index.js\nvoice-synthsizer-job-handler/pm2-development.yml\nvoice-synthsizer-job-handler/recording/recording_model.js\nvoice-synthsizer-job-handler/recording/index.js\nvoice-synthsizer-job-handler/index.js\nvoice-synthsizer-job-handler/package.json\nvoice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\nvoice-synthsizer-job-handler/recording_salutation/index.js\nvoice-synthsizer-job-handler/pm2-production.yml\nvoice-synthsizer-job-handler/job/job_service.js\nvoice-synthsizer-job-handler/job/index.js\nvoice-synthsizer-job-handler/job/job_model.js\nvoice-synthsizer-job-handler/user_audio_profile/index.js\nvoice-synthsizer-job-handler/user_audio_profile/user_audio_profile_model.js\nvoice-synthsizer-job-handler/user_audio_profile/user_audio_profile_service.js\nrequirements.dev.local.txt\napp/services/s3/index.js\napp/services/s3/s3_service.js\napp/services/utils/index.js\napp/services/utils/deleteFile.js\napp/services/utils/logService.js\napp/services/utils/bugsnag.js\nvoice-cloning-job-handler/pm2-development.yml\nvoice-cloning-job-handler/index.js\nvoice-cloning-job-handler/package.json\napp/services/voice_cloning/voice_cloning_model.js\napp/services/voice_cloning/index.js\napp/services/voice_cloning/voice_cloning_service.js\nvoice-cloning-job-handler/voice_cloning/voice_cloning_model.js\nvoice-cloning-job-handler/voice_cloning/index.js\nvoice-cloning-job-handler/voice_cloning/voice_cloning_service.js\nvoice-cloning-job-handler/pm2-production.yml\napp/services/sqs/index.js\napp/services/sqs/sqs_service.js\nrequirements.prod.cpu.txt\nrequirements.prod.gpu.txt\npackage.json\nvoice-cloning-job-handler/user_audio_profile/index.js\nvoice-cloning-job-handler/user_audio_profile/user_audio_profile_model.js\nvoice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\nrequirements.dev.txt\nrequirements.txt\nREADME.md\nvoice-cloning/train_config.py\nvoice-cloning/score_models.py\nvoice-cloning/minimize_cloned_voice_model.py\nvoice-cloning/synthesize_speech.py\nvoice-cloning/docs/potion-voice-cloning_Installation_Guide.md\nvoice-cloning/score_cloned_voice.py\nvoice-cloning/clone_voice.py\nvoice-cloning/prepare_datasets.py\nvoice-cloning/score_salutation.py\nvoice-cloning/utils/transcription_utils.py\nvoice-cloning/utils/matching_utils.py\nvoice-cloning/utils/synthesize_utils.py\nvoice-cloning/utils/scoring_utils.py\nvoice-cloning/train_multispeaker_baseline_model.py\nvoice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv\nvoice-cloning/assets/wgnd_2_0_sources.csv.gz\nvoice-cloning/assets/wgnd_2_0_unique_names_only.csv.gz\nvoice-cloning/assets/speaker_encoder_model/model_se.pth.tar\nvoice-cloning/assets/speaker_encoder_model/config_se.json\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_3","type":"command_execution","command":"/bin/bash -lc \"git status --short && rg -n \\\"pro_v2|tier|clone|state|null|voice.?clon\\\" app voice-cloning-job-handler voice-synthsizer-job-handler package.json README.md | sed -n '1,320p'\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_3","type":"command_execution","command":"/bin/bash -lc \"git status --short && rg -n \\\"pro_v2|tier|clone|state|null|voice.?clon\\\" app voice-cloning-job-handler voice-synthsizer-job-handler package.json README.md | sed -n '1,320p'\"","aggregated_output":"voice-cloning-job-handler/pm2-development.yml:11:      SQS_URL: 'https://sqs.us-west-2.amazonaws.com/[REDACTED_AWS_ACCOUNT_1961]/potion-voice-clone-ai-staging.fifo'\nvoice-cloning-job-handler/index.js:11:const voiceCloningService = require('./voice_cloning')\nvoice-cloning-job-handler/index.js:186:          const samplingCommand = `python3 ../voice-cloning/prepare_datasets.py --dataset_preset potion_voice_cloning --dataset_archive_path /tmp/${zipFileName} --output_path ${outputPath}`\nvoice-cloning-job-handler/index.js:203:          // clone the voice\nvoice-cloning-job-handler/index.js:204:          const VOICE_CLONING_LABEL = `Time Taken for voice cloning ${directoryName}`\nvoice-cloning-job-handler/index.js:206:          const trainingModelCommand = `python3 ../voice-cloning/clone_voice.py --baseline_model_path ../voice-cloning/pretrained-models/checkpoint_365000.pth --speaker_dataset_path ${outPath} --speaker_embeddings_path ${\nvoice-cloning-job-handler/index.js:220:            if (file.includes('vits_potion_clone'))\nvoice-cloning-job-handler/index.js:228:          const minimizeCloningModelCommand = `python3 ../voice-cloning/minimize_cloned_voice_model.py --voice_model_asset_path ${\nvoice-cloning-job-handler/index.js:282:              `Unable to train for voice cloning videos ` + JSON.stringify(job)\nvoice-cloning-job-handler/index.js:301:      console.error('Error while training voice clone', { error })\napp/services/voice_cloning/voice_cloning_model.js:23:      default: null,\napp/services/voice_cloning/voice_cloning_model.js:27:      default: null,\napp/services/voice_cloning/voice_cloning_model.js:31:      default: null,\napp/services/voice_cloning/index.js:1:const VoiceCloning = require('./voice_cloning_model')\napp/services/voice_cloning/index.js:2:const VoiceCloningService = require('./voice_cloning_service')\nvoice-cloning-job-handler/package.json:2:  \"name\": \"voice-cloning-job-handler\",\nvoice-cloning-job-handler/package.json:4:  \"description\": \"This will handle the voice cloning jobs\",\nvoice-cloning-job-handler/voice_cloning/voice_cloning_model.js:23:      default: null,\nvoice-cloning-job-handler/voice_cloning/voice_cloning_model.js:27:      default: null,\nvoice-cloning-job-handler/voice_cloning/voice_cloning_model.js:31:      default: null,\nvoice-cloning-job-handler/voice_cloning/index.js:1:const VoiceCloning = require('./voice_cloning_model')\nvoice-cloning-job-handler/voice_cloning/index.js:2:const VoiceCloningService = require('./voice_cloning_service')\nvoice-synthsizer-job-handler/salutation/salutation_model.js:17:      default: null\r\nvoice-synthsizer-job-handler/salutation/salutation_model.js:21:      default: null,\r\nvoice-synthsizer-job-handler/salutation/salutation_model.js:26:      default: null,\r\nvoice-synthsizer-job-handler/salutation/salutation_model.js:31:      default: null,\r\nvoice-cloning-job-handler/pm2-production.yml:11:      SQS_URL: 'https://sqs.us-west-2.amazonaws.com/[REDACTED_AWS_ACCOUNT_1961]/potion-voice-clone-ai-production.fifo'\nvoice-cloning-job-handler/user_audio_profile/user_audio_profile_model.js:23:      default: null,\nvoice-cloning-job-handler/user_audio_profile/user_audio_profile_model.js:27:      default: null,\nvoice-synthsizer-job-handler/recording/recording_model.js:214:      default: null,\nvoice-synthsizer-job-handler/recording/recording_model.js:224:      default: null,\nvoice-synthsizer-job-handler/recording/recording_model.js:239:            default: null,\nvoice-synthsizer-job-handler/recording/recording_model.js:243:            default: null,\nvoice-synthsizer-job-handler/recording/recording_model.js:274:            default: null,\nvoice-synthsizer-job-handler/recording/recording_model.js:284:      default: null,\nvoice-synthsizer-job-handler/recording/recording_model.js:292:      default: null,\nvoice-synthsizer-job-handler/recording/recording_model.js:296:      default: null,\nvoice-synthsizer-job-handler/recording/recording_model.js:302:          default: null,\nvoice-synthsizer-job-handler/recording/recording_model.js:306:          default: null,\nvoice-synthsizer-job-handler/recording/recording_model.js:312:      default: null,\nvoice-synthsizer-job-handler/recording/recording_model.js:321:      default: null,\nvoice-synthsizer-job-handler/recording/recording_model.js:326:      default: null,\nvoice-synthsizer-job-handler/recording/recording_model.js:331:      default: null,\nvoice-synthsizer-job-handler/recording/recording_model.js:335:      default: null,\nvoice-synthsizer-job-handler/recording/recording_model.js:340:      default: null,\nvoice-synthsizer-job-handler/recording/recording_model.js:345:      default: null,\nvoice-synthsizer-job-handler/recording/recording_model.js:350:      default: null,\nvoice-synthsizer-job-handler/recording/recording_model.js:355:      default: null,\nvoice-synthsizer-job-handler/recording/recording_model.js:364:      default: null,\nvoice-synthsizer-job-handler/recording/recording_model.js:369:      default: null,\nvoice-synthsizer-job-handler/recording/recording_model.js:382:      default: null,\nvoice-synthsizer-job-handler/recording/recording_model.js:387:      default: null,\nvoice-synthsizer-job-handler/recording/recording_model.js:399:      default: null,\npackage.json:4:  \"description\": \"This will handle the voice cloning jobs\",\nvoice-synthsizer-job-handler/index.js:113:            const AI_COMMAND = `python3 ../voice-cloning/synthesize_speech.py --voice_model_path ${voice_model_light_path} --voice_model_config_path ${voice_model_config_light_path} --speaker_embeddings_path ${voice_model_speakers_file_path} --txt \"${text}\" --output_path ${outputPath}`\nvoice-synthsizer-job-handler/job/job_model.js:41:      default: null\nvoice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js:28:      default: null\r\nvoice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js:32:      default: null\r\nvoice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js:63:      default: null\r\nvoice-synthsizer-job-handler/user_audio_profile/user_audio_profile_model.js:23:      default: null,\nvoice-synthsizer-job-handler/user_audio_profile/user_audio_profile_model.js:27:      default: null,\nREADME.md:2:Potion's Text-to-Speech Service (multi-speaker baseline model training, voice cloning and speech synthesising)\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_4","type":"command_execution","command":"/bin/bash -lc \"sed -n '1,380p' voice-cloning-job-handler/index.js && sed -n '1,220p' app/services/voice_cloning/voice_cloning_model.js && sed -n '1,260p' app/services/voice_cloning/voice_cloning_service.js && sed -n '1,220p' voice-cloning-job-handler/voice_cloning/voice_cloning_model.js && sed -n '1,260p' voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_4","type":"command_execution","command":"/bin/bash -lc \"sed -n '1,380p' voice-cloning-job-handler/index.js && sed -n '1,220p' app/services/voice_cloning/voice_cloning_model.js && sed -n '1,260p' app/services/voice_cloning/voice_cloning_service.js && sed -n '1,220p' voice-cloning-job-handler/voice_cloning/voice_cloning_model.js && sed -n '1,260p' voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\"","aggregated_output":"const fs = require('fs')\nconst https = require('https')\nconst exec = require('child_process').exec\nconst AWS = require('aws-sdk')\n\nconst Bugsnag = require('@bugsnag/js')\nconst mongoose = require('mongoose')\nconst version = require('./package.json').version\nconst sqs = require('../app/services/sqs')\nconst s3 = require('../app/services/s3')\nconst voiceCloningService = require('./voice_cloning')\nconst userAudioProfileService = require('./user_audio_profile')\n\nAWS.config.update({ region: 'us-west-2' })\nconst sqsQueueUrl = process.env.SQS_URL\nconst mongoUriDev = process.env.MONGODB_URI_DEV\nconst mongoUriStaging = process.env.MONGODB_URI_STAGING\nconst mongoUriProd = process.env.MONGODB_URI_PROD\nlet throttleMessageFetching = true\nconst APP_ENV = process.env.POTION_APP_ENV\n\nconst cloudFrontUrlProd = process.env.CLOUDFRONT_URL_PROD\nconst cloudFrontUrlDev = process.env.CLOUDFRONT_URL_DEV\nconst cloudFrontUrlStaging = process.env.CLOUDFRONT_URL_STAGING\n\nconst updateUrl = (str, cloudFrontUrl) => {\n  const host = new URL(str).host\n  return str.replace(`https://${host}`, cloudFrontUrl)\n}\n\nfunction connectDB(dbUri, retryCount = 0) {\n  return new Promise((resolve, reject) => {\n    console.log('Connection Attempt : ', retryCount)\n    mongoose.set('strictQuery', true)\n    mongoose\n      .connect(dbUri)\n      .then((msg) => {\n        console.log('Connected to Mongo DB !')\n        resolve()\n      })\n      .catch((err) => {\n        console.log('Failed to connect dns mongo: ', err)\n        if (retryCount < 6) {\n          retryCount++\n          connectDB(dbUri, retryCount)\n        }\n      })\n  })\n}\n\nfunction execShellCommand(cmd, logPath) {\n  // const exec = require(\"child_process\").exec;\n  return new Promise((resolve, reject) => {\n    exec(cmd, { maxBuffer: 1024 * 1000000 }, async (error, stdout, stderr) => {\n      if (error) {\n        console.log('Error while proccessing python command', error)\n        reject(error)\n      }\n      // console.log('Stdout --- ', stdout)\n      // console.log('Stderror --- ', stderr)\n      await fs.promises.writeFile(`${logPath}/error.log`, stderr)\n      await fs.promises.writeFile(`${logPath}/info.log`, stdout)\n\n      resolve()\n    })\n  })\n}\n\nasync function getFile(waveUrl, path) {\n  return new Promise((resolve) => {\n    https.get(waveUrl, (res) => {\n      const writeStream = fs.createWriteStream(path)\n\n      res.pipe(writeStream)\n\n      writeStream.on('finish', () => {\n        writeStream.close()\n        resolve()\n      })\n    })\n  })\n}\n\nfunction pad(s) {\n  while (s.length < 3) s = '0' + s // IN future we will need padding to 4\n  return s\n}\n\nconst processQueue = () => {\n  /* eslint-disable no-async-promise-executor */\n  return new Promise(async (resolve, reject) => {\n    try {\n      const response = await sqs.fetchMessageFromSQS(sqsQueueUrl)\n\n      if (\n        typeof response.Messages !== 'undefined' &&\n        response.Messages.length > 0\n      ) {\n        throttleMessageFetching = false\n        const job = JSON.parse(response.Messages[0].Body)\n        const receiptHandle = response.Messages[0].ReceiptHandle\n        console.log('job===', job)\n\n        const { metadata, input, _id, userAudioProfileId } = job._doc\n        console.log('userAudioProfileId', userAudioProfileId)\n        console.log('_id', _id)\n        const { env } = job\n        console.log('env', env)\n\n        console.log('metadata------', metadata)\n        console.log('input', input)\n        const DB_URI =\n          env === 'production'\n            ? mongoUriProd\n            : env === 'staging'\n            ? mongoUriStaging\n            : mongoUriDev\n\n        console.log('DB_URI ', DB_URI)\n        await connectDB(DB_URI)\n\n        const cloudFrontUrl =\n          env === 'production'\n            ? cloudFrontUrlProd\n            : env === 'staging'\n            ? cloudFrontUrlStaging\n            : cloudFrontUrlDev\n\n        try {\n          await sqs.deleteMessageFromSQS(sqsQueueUrl, receiptHandle)\n\n          const { directoryName } = metadata\n          console.log('directoryName', directoryName)\n          const logPath = `/mnt/efs/potion-voice/${env}/${directoryName}`\n          if (!fs.existsSync(logPath)) {\n            fs.mkdirSync(logPath, { recursive: true })\n          }\n          // update the db model to processing\n          await voiceCloningService.update({ _id, status: 'processing' })\n          await userAudioProfileService.update({\n            _id: userAudioProfileId,\n            status: 'processing',\n          })\n\n          // create directory for userid-useraudioprofileid if not exist\n          const rootPath = `/tmp/${directoryName}`\n          const wavePath = `${rootPath}/wav48/1`\n          if (!fs.existsSync(wavePath)) {\n            fs.mkdirSync(wavePath, { recursive: true })\n          }\n\n          const txtPath = `${rootPath}/txt/1`\n          if (!fs.existsSync(txtPath)) {\n            fs.mkdirSync(txtPath, { recursive: true })\n          }\n          // download the training data files and put it in respective directories\n          for (let index = 0; index < input.length; index++) {\n            const item = input[index]\n\n            const { waveUrl, originalText } = item\n            // download wave file\n            const waveFilePath = `${wavePath}/1_${pad('' + (index + 1))}.wav`\n\n            await getFile(updateUrl(waveUrl, cloudFrontUrl), waveFilePath)\n\n            const txtFilePath = `${txtPath}/1_${pad('' + (index + 1))}.txt`\n            await fs.promises.writeFile(txtFilePath, originalText)\n          }\n\n          const zipFileName = directoryName + '.tgz'\n\n          // /tmp/directoryName.tgz\n\n          await execShellCommand(\n            `cd /tmp && tar czvf ${zipFileName}  ${directoryName}`,\n            logPath\n          )\n          console.log('ZIP created ', zipFileName)\n\n          // re-sample audio\n          const SAMPLING_LABEL = `Time Taken for re-sampling ${directoryName}`\n          console.time(SAMPLING_LABEL)\n\n          const outputPath = `/mnt/efs/potion-voice/${env}/${directoryName}`\n\n          const samplingCommand = `python3 ../voice-cloning/prepare_datasets.py --dataset_preset potion_voice_cloning --dataset_archive_path /tmp/${zipFileName} --output_path ${outputPath}`\n          console.log('samplingCommand ', samplingCommand)\n          const samplingResponse = await execShellCommand(\n            samplingCommand,\n            logPath\n          )\n          console.timeEnd(SAMPLING_LABEL)\n\n          // /mnt/efs/potion-voice/${env}/speakrs.pth\n          // /mnt/efs/potion-voice/${env}/txt\n          // /mnt/efs/potion-voice/${env}/${directoryName}/wav\n\n          const outPath = `/mnt/efs/potion-voice/${env}/${directoryName}/sr22050/${directoryName}`\n\n          const resultsPath = outPath + '/results'\n\n          //update pth file for cloning\n          // clone the voice\n          const VOICE_CLONING_LABEL = `Time Taken for voice cloning ${directoryName}`\n          console.time(VOICE_CLONING_LABEL)\n          const trainingModelCommand = `python3 ../voice-cloning/clone_voice.py --baseline_model_path ../voice-cloning/pretrained-models/checkpoint_365000.pth --speaker_dataset_path ${outPath} --speaker_embeddings_path ${\n            outPath + '/speakers.pth'\n          } --output_path ${resultsPath}`\n\n          console.log('Training Model Command', trainingModelCommand)\n          const trainingResponse = await execShellCommand(\n            trainingModelCommand,\n            logPath\n          )\n\n          console.timeEnd(VOICE_CLONING_LABEL)\n\n          let generatedDirectoryName = ''\n          fs.readdirSync(`${resultsPath}/`).forEach((file) => {\n            if (file.includes('vits_potion_clone'))\n              // use output from above to get right path and directory name\n              generatedDirectoryName = file\n          })\n\n          // minimize cloning model\n          const VOICE_MINIMIZE_LABEL = `Time Taken for voice minimizing cloning ${directoryName}`\n          console.time(VOICE_MINIMIZE_LABEL)\n          const minimizeCloningModelCommand = `python3 ../voice-cloning/minimize_cloned_voice_model.py --voice_model_asset_path ${\n            resultsPath + '/' + generatedDirectoryName + '/'\n          } --voice_model_name checkpoint_365200.pth`\n\n          console.log(\n            'Minimize Cloning Model Command',\n            minimizeCloningModelCommand\n          )\n          const minimizeCloning = await execShellCommand(\n            minimizeCloningModelCommand,\n            logPath\n          )\n          console.timeEnd(VOICE_MINIMIZE_LABEL)\n\n          // Add the  code to update location of generated model and status into DB\n          await voiceCloningService.update({ _id, status: 'completed' })\n\n          const training_model_path = {\n            voice_model_path: `${resultsPath}/${generatedDirectoryName}/checkpoint_365200.pth`,\n            voice_model_config_path: `${resultsPath}/${generatedDirectoryName}/config.json`,\n            voice_model_speakers_file_path: `${outPath}/speakers.pth`, // TODO update the name to voice model speakers embeddings\n            voice_model_light_path: `${resultsPath}/${generatedDirectoryName}/checkpoint_365200_light.pth`,\n            voice_model_config_light_path: `${resultsPath}/${generatedDirectoryName}/config_light.json`,\n          }\n\n          await userAudioProfileService.update({\n            _id: userAudioProfileId,\n            status: 'completed',\n            training_model_path,\n          })\n\n          // add code to put that model into S3\n          let keys = Object.keys(training_model_path)\n\n          const training_model_s3_path = {}\n\n          for (let index = 0; index < keys.length; index++) {\n            const path = training_model_path[keys[index]]\n            const s3Path = await s3.upload({\n              filePath: path,\n              fileName: `${directoryName}/${path.split('/').pop()}`,\n              bucket: `potion-voice-users-training-model/${env}`,\n            })\n            training_model_s3_path[keys[index]] = s3Path\n          }\n          //  add S3 path to user audio profile model\n          await userAudioProfileService.update({\n            _id: userAudioProfileId,\n            training_model_s3_path,\n          })\n        } catch (error) {\n          console.log('error********************', error)\n          Bugsnag.notify(\n            new Error(\n              `Unable to train for voice cloning videos ` + JSON.stringify(job)\n            )\n          )\n          Bugsnag.notify(error)\n\n          // update the db to set status as error\n          await voiceCloningService.update({ _id, status: 'error' })\n          await userAudioProfileService.update({\n            _id: userAudioProfileId,\n            status: 'error',\n          })\n\n          resolve() // to continue working on new jobs\n        }\n      } else {\n        throttleMessageFetching = true\n      }\n      resolve()\n    } catch (error) {\n      console.error('Error while training voice clone', { error })\n      Bugsnag.notify(error)\n      resolve() // to continue working on new jobs\n    } finally {\n      mongoose.connection.close()\n    }\n  })\n}\n\nfunction sleep(ms) {\n  return new Promise((resolve) => {\n    setTimeout(resolve, ms)\n  })\n}\nconst init = async () => {\n  console.log('potion Voice Clone Process Started')\n  Bugsnag.start({\n    appVersion: APP_ENV + version,\n    apiKey: process.env.BUGSNAG_BACKEND_KEY,\n    releaseStage: process.env.NODE_ENV,\n  })\n\n  try {\n    while (true) {\n      await processQueue()\n      if (throttleMessageFetching) await sleep(2000)\n    }\n  } catch (error) {\n    Bugsnag.notify(error)\n  }\n}\ninit()\nconst mongoose = require('mongoose')\nconst Schema = mongoose.Schema\n\nconst VoiceCloningSchema = Schema(\n  {\n    userId: {\n      type: Schema.Types.ObjectId,\n      ref: 'User',\n      required: true,\n    },\n    userAudioProfileId: {\n      type: Schema.Types.ObjectId,\n      ref: 'UserAudioProfile',\n      required: true,\n    },\n    status: {\n      type: String,\n      required: false,\n      default: 'created',\n    },\n    input: {\n      type: Schema.Types.Mixed,\n      default: null,\n    },\n    training_model: {\n      type: Schema.Types.Mixed,\n      default: null,\n    },\n    metadata: {\n      type: Schema.Types.Mixed,\n      default: null,\n    },\n    deleted: {\n      type: Boolean,\n      required: true,\n      default: false,\n    },\n  },\n  {\n    timestamps: true,\n  }\n)\n\nmodule.exports = mongoose.model('VoiceCloning', VoiceCloningSchema)\nconst StringifyUtils = require('../utils/logService')\n\nconst create = (VoiceCloningModel) => async (data) => {\n  try {\n    const newModel = new VoiceCloningModel({ ...data })\n    const savedModel = await newModel.save()\n    return savedModel\n  } catch (error) {\n    const details = { data }\n    console.log(\n      'ERROR - VOICE CLONING SERVICE > create',\n      StringifyUtils.potionErrorObj(error, details)\n    )\n    throw error\n  }\n}\n\nconst insertMany = (VoiceCloningModel) => async (data) => {\n  try {\n    const inserted = await VoiceCloningModel.insertMany(data)\n    return inserted\n  } catch (error) {\n    const details = { data }\n    console.log(\n      'ERROR - VOICE CLONING SERVICE > insertMany',\n      StringifyUtils.potionErrorObj(error, details)\n    )\n    throw error\n  }\n}\n\nconst read = (VoiceCloningModel) => async (filter) => {\n  try {\n    const foundModel = await VoiceCloningModel.findOne({\n      ...filter,\n      deleted: false,\n    })\n    return foundModel\n  } catch (error) {\n    const details = { filter }\n    console.log(\n      'ERROR - VOICE CLONING SERVICE > read',\n      StringifyUtils.potionErrorObj(error, details)\n    )\n    throw error\n  }\n}\n\nconst find = (VoiceCloningModel) => async (filter) => {\n  try {\n    const foundModels = await VoiceCloningModel.find({\n      ...filter,\n      deleted: false,\n    })\n    return foundModels\n  } catch (error) {\n    const details = { filter }\n    console.log(\n      'ERROR - VOICE CLONING SERVICE > find',\n      StringifyUtils.potionErrorObj(error, details)\n    )\n    throw error\n  }\n}\n\nconst update = (VoiceCloningModel) => async (data) => {\n  try {\n    const updatedModel = await VoiceCloningModel.findOneAndUpdate(\n      { _id: data._id },\n      data,\n      {\n        new: true,\n      }\n    )\n    return updatedModel\n  } catch (error) {\n    const details = { data }\n    console.log(\n      'ERROR - VOICE CLONING SERVICE > update',\n      StringifyUtils.potionErrorObj(error, details)\n    )\n    throw error\n  }\n}\n\nconst remove = (VoiceCloningModel) => async (filter) => {\n  try {\n    const updatedModel = await VoiceCloningModel.findOneAndUpdate(\n      { ...filter },\n      {\n        $set: {\n          deleted: true,\n        },\n      },\n      { new: true }\n    )\n    return updatedModel\n  } catch (error) {\n    const details = { filter }\n    console.log(\n      'ERROR - VOICE CLONING SERVICE > remove',\n      StringifyUtils.potionErrorObj(error, details)\n    )\n    throw error\n  }\n}\n\nconst removeMany = (VoiceCloningModel) => async (filter) => {\n  try {\n    const updatedModel = await VoiceCloningModel.updateMany(\n      { ...filter },\n      {\n        $set: {\n          deleted: true,\n        },\n      },\n      { new: true }\n    )\n    return updatedModel\n  } catch (error) {\n    const details = { filter }\n    console.log(\n      'ERROR - VOICE CLONING SERVICE > removeMany',\n      StringifyUtils.potionErrorObj(error, details)\n    )\n    throw error\n  }\n}\n\nmodule.exports = (VoiceCloningModel) => {\n  return {\n    create: create(VoiceCloningModel),\n    insertMany: insertMany(VoiceCloningModel),\n    read: read(VoiceCloningModel),\n    remove: remove(VoiceCloningModel),\n    removeMany: removeMany(VoiceCloningModel),\n    update: update(VoiceCloningModel),\n    find: find(VoiceCloningModel),\n  }\n}\nconst mongoose = require('mongoose')\nconst Schema = mongoose.Schema\n\nconst VoiceCloningSchema = Schema(\n  {\n    userId: {\n      type: Schema.Types.ObjectId,\n      ref: 'User',\n      required: true,\n    },\n    userAudioProfileId: {\n      type: Schema.Types.ObjectId,\n      ref: 'UserAudioProfile',\n      required: true,\n    },\n    status: {\n      type: String,\n      required: false,\n      default: 'created',\n    },\n    input: {\n      type: Schema.Types.Mixed,\n      default: null,\n    },\n    training_model: {\n      type: Schema.Types.Mixed,\n      default: null,\n    },\n    metadata: {\n      type: Schema.Types.Mixed,\n      default: null,\n    },\n    deleted: {\n      type: Boolean,\n      required: true,\n      default: false,\n    },\n  },\n  {\n    timestamps: true,\n  }\n)\n\nmodule.exports = mongoose.model('VoiceCloning', VoiceCloningSchema)\nconst StringifyUtils = require('../../app/services/utils/logService')\n\nconst create = (VoiceCloningModel) => async (data) => {\n  try {\n    const newModel = new VoiceCloningModel({ ...data })\n    const savedModel = await newModel.save()\n    return savedModel\n  } catch (error) {\n    const details = { data }\n    console.log(\n      'ERROR - VOICE CLONING SERVICE > create',\n      StringifyUtils.potionErrorObj(error, details)\n    )\n    throw error\n  }\n}\n\nconst insertMany = (VoiceCloningModel) => async (data) => {\n  try {\n    const inserted = await VoiceCloningModel.insertMany(data)\n    return inserted\n  } catch (error) {\n    const details = { data }\n    console.log(\n      'ERROR - VOICE CLONING SERVICE > insertMany',\n      StringifyUtils.potionErrorObj(error, details)\n    )\n    throw error\n  }\n}\n\nconst read = (VoiceCloningModel) => async (filter) => {\n  try {\n    const foundModel = await VoiceCloningModel.findOne({\n      ...filter,\n      deleted: false,\n    })\n    return foundModel\n  } catch (error) {\n    const details = { filter }\n    console.log(\n      'ERROR - VOICE CLONING SERVICE > read',\n      StringifyUtils.potionErrorObj(error, details)\n    )\n    throw error\n  }\n}\n\nconst find = (VoiceCloningModel) => async (filter) => {\n  try {\n    const foundModels = await VoiceCloningModel.find({\n      ...filter,\n      deleted: false,\n    })\n    return foundModels\n  } catch (error) {\n    const details = { filter }\n    console.log(\n      'ERROR - VOICE CLONING SERVICE > find',\n      StringifyUtils.potionErrorObj(error, details)\n    )\n    throw error\n  }\n}\n\nconst update = (VoiceCloningModel) => async (data) => {\n  try {\n    const updatedModel = await VoiceCloningModel.findOneAndUpdate(\n      { _id: data._id },\n      data,\n      {\n        new: true,\n      }\n    )\n\n    return updatedModel\n  } catch (error) {\n    const details = { data }\n    console.log(\n      'ERROR - VOICE CLONING SERVICE > update',\n      StringifyUtils.potionErrorObj(error, details)\n    )\n    throw error\n  }\n}\n\nconst remove = (VoiceCloningModel) => async (filter) => {\n  try {\n    const updatedModel = await VoiceCloningModel.findOneAndUpdate(\n      { ...filter },\n      {\n        $set: {\n          deleted: true,\n        },\n      },\n      { new: true }\n    )\n    return updatedModel\n  } catch (error) {\n    const details = { filter }\n    console.log(\n      'ERROR - VOICE CLONING SERVICE > remove',\n      StringifyUtils.potionErrorObj(error, details)\n    )\n    throw error\n  }\n}\n\nconst removeMany = (VoiceCloningModel) => async (filter) => {\n  try {\n    const updatedModel = await VoiceCloningModel.updateMany(\n      { ...filter },\n      {\n        $set: {\n          deleted: true,\n        },\n      },\n      { new: true }\n    )\n    return updatedModel\n  } catch (error) {\n    const details = { filter }\n    console.log(\n      'ERROR - VOICE CLONING SERVICE > removeMany',\n      StringifyUtils.potionErrorObj(error, details)\n    )\n    throw error\n  }\n}\n\nmodule.exports = (VoiceCloningModel) => {\n  return {\n    create: create(VoiceCloningModel),\n    insertMany: insertMany(VoiceCloningModel),\n    read: read(VoiceCloningModel),\n    remove: remove(VoiceCloningModel),\n    removeMany: removeMany(VoiceCloningModel),\n    update: update(VoiceCloningModel),\n    find: find(VoiceCloningModel),\n  }\n}\n","exit_code":0,"status":"completed"}}
{"type":"item.completed","item":{"id":"item_5","type":"agent_message","text":"The worker currently assumes one legacy job envelope (`job._doc`) and has no tier handling at all. I’m checking the repository history and producer-side service shape next; that mismatch is a strong candidate for why a newer `pro_v2` payload yields undefined IDs/inputs and never reaches a valid state."}}
{"type":"item.started","item":{"id":"item_6","type":"command_execution","command":"/bin/bash -lc \"git log --oneline --decorate -20 && git branch -a && sed -n '1,260p' package.json && sed -n '1,220p' voice-cloning-job-handler/package.json && sed -n '1,220p' app/services/sqs/sqs_service.js && sed -n '1,120p' app/services/sqs/index.js && sed -n '1,220p' voice-cloning-job-handler/user_audio_profile/user_audio_profile_model.js && sed -n '1,260p' voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_6","type":"command_execution","command":"/bin/bash -lc \"git log --oneline --decorate -20 && git branch -a && sed -n '1,260p' package.json && sed -n '1,220p' voice-cloning-job-handler/package.json && sed -n '1,220p' app/services/sqs/sqs_service.js && sed -n '1,120p' app/services/sqs/index.js && sed -n '1,220p' voice-cloning-job-handler/user_audio_profile/user_audio_profile_model.js && sed -n '1,260p' voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\"","aggregated_output":"15b3565 (HEAD -> master) initial\n* master\n{\n  \"name\": \"potion-voice\",\n  \"version\": \"1.0.0\",\n  \"description\": \"This will handle the voice cloning jobs\",\n  \"main\": \"index.js\",\n  \"scripts\": {},\n  \"dependencies\": {\n    \"@bugsnag/js\": \"^7.3.5\",\n    \"aws-sdk\": \"^2.752.0\",\n    \"fs-extra\": \"^9.0.1\",\n    \"mongoose\": \"^6.8.0\",\n    \"pm2\": \"^5.2.0\",\n    \"rimraf\": \"^3.0.2\",\n    \"uuid\": \"^8.3.2\"\n  },\n  \"devDependencies\": {\n    \"aws-code-deploy\": \"^1.0.11\"\n  },\n  \"author\": \"potion Team\",\n  \"license\": \"ISC\"\n}\n{\n  \"name\": \"voice-cloning-job-handler\",\n  \"version\": \"1.0.0\",\n  \"description\": \"This will handle the voice cloning jobs\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"deploy-production\": \"npx dotenv-cli -e ./app-scripts/env-aws-code-deploy/.env.production.aws-code-deploy node ./app-scripts/deploy-scripts/deploy-production.js\",\n    \"deploy-staging\": \"npx dotenv-cli -e ./app-scripts/env-aws-code-deploy/.env.staging.aws-code-deploy node ./app-scripts/deploy-scripts/deploy-staging.js\"\n  },\n  \"dependencies\": {\n    \"@bugsnag/js\": \"^7.3.5\",\n    \"aws-sdk\": \"^2.752.0\",\n    \"fs-extra\": \"^9.0.1\",\n    \"mongoose\": \"^6.8.0\",\n    \"pm2\": \"^5.2.0\",\n    \"rimraf\": \"^3.0.2\",\n    \"uuid\": \"^8.3.2\"\n  },\n  \"devDependencies\": {\n    \"aws-code-deploy\": \"^1.0.11\"\n  },\n  \"author\": \"potion Team\",\n  \"license\": \"ISC\"\n}const AWS = require('aws-sdk')\n\nconst sqs = new AWS.SQS({ apiVersion: '2012-11-05' })\n\nconst StringifyUtils = require('../utils/logService')\n\nconst fetchMessageFromSQS = (sqsQueueUrl, waitTimeInSeconds = 0) => {\n  return new Promise((resolve, reject) => {\n    const params = {\n      WaitTimeSeconds: waitTimeInSeconds,\n      QueueUrl: sqsQueueUrl /* required */,\n    }\n    sqs.receiveMessage(params, function (err, data) {\n      if (err) {\n        reject(err)\n        console.log(\n          `ERROR in fetchJobFromSQS : `,\n          StringifyUtils.stringifyError(err)\n        )\n      } else {\n        resolve(data)\n      }\n    })\n  })\n}\n\nconst deleteMessageFromSQS = (sqsQueueUrl, receiptHandle) => {\n  return new Promise((resolve, reject) => {\n    const params = {\n      ReceiptHandle: receiptHandle,\n      QueueUrl: sqsQueueUrl /* required */,\n    }\n    sqs.deleteMessage(params, function (err, data) {\n      if (err) {\n        reject(err)\n        console.log(\n          `ERROR in sending delete request to AWS.SQS : `,\n          StringifyUtils.stringifyError(err)\n        )\n      } else {\n        console.log(\n          'Successfully sent delete request to AWS.SQS',\n          StringifyUtils.stringifyError(data)\n        )\n        resolve(data)\n      }\n    })\n  })\n}\n\nconst sendMessageToSQS = (sqsQueueUrl, message) => {\n  return new Promise((resolve, reject) => {\n    const params = {\n      MessageBody: message,\n      QueueUrl: sqsQueueUrl /* required */,\n      // MessageGroupId:\n      //   process.env.POTION_APP_ENV ||\n      //   '' + `_` + uuidV4() + '_' + new Date().toISOString(),\n      // MessageDeduplicationId: uuidV4() + `_` + new Date().toISOString()\n    }\n    sqs.sendMessage(params, function (err, data) {\n      if (err) {\n        reject(err)\n        console.log(\n          `ERROR in seding request to AWS.SQS : `,\n          StringifyUtils.stringifyError(err)\n        )\n      } else {\n        console.log(\n          'Successfully sent request to AWS.SQS',\n          StringifyUtils.stringifyError(data)\n        )\n        resolve(data.Location)\n      }\n    })\n  })\n}\n\nmodule.exports = {\n  fetchMessageFromSQS,\n  deleteMessageFromSQS,\n  sendMessageToSQS,\n}\nconst AWS = require('aws-sdk')\nAWS.config.update({ region: 'us-west-2' })\nconst sqsService = require('./sqs_service')\nconst sqs = new AWS.SQS({ apiVersion: '2012-11-05' })\n\nmodule.exports = sqsService\nconst mongoose = require('mongoose')\nconst Schema = mongoose.Schema\n\nconst UserAudioProfileSchema = Schema(\n  {\n    userId: {\n      type: Schema.Types.ObjectId,\n      ref: 'User',\n      required: true,\n    },\n    name: {\n      type: String,\n      required: true,\n      default: '',\n    },\n    status: {\n      type: String,\n      required: false,\n      default: 'created',\n    },\n    training_model_path: {\n      type: Schema.Types.Mixed,\n      default: null,\n    },\n    training_model_s3_path: {\n      type: Schema.Types.Mixed,\n      default: null,\n    },\n    deleted: {\n      type: Boolean,\n      required: true,\n      default: false,\n    },\n  },\n  {\n    timestamps: true,\n  }\n)\n\nmodule.exports = mongoose.model('UserAudioProfile', UserAudioProfileSchema)\nconst StringifyUtils = require('../../app/services/utils/logService')\n\nconst create = (UserAudioProfileModel) => async (data) => {\n  try {\n    const newModel = new UserAudioProfileModel({ ...data })\n    const savedModel = await newModel.save()\n    return savedModel\n  } catch (error) {\n    const details = { data }\n    console.log(\n      'ERROR - USER AUDIO PROFILE SERVICE > create',\n      StringifyUtils.potionErrorObj(error, details)\n    )\n    throw error\n  }\n}\n\nconst insertMany = (UserAudioProfileModel) => async (data) => {\n  try {\n    const inserted = await UserAudioProfileModel.insertMany(data)\n    return inserted\n  } catch (error) {\n    const details = { data }\n    console.log(\n      'ERROR - USER AUDIO PROFILE SERVICE > insertMany',\n      StringifyUtils.potionErrorObj(error, details)\n    )\n    throw error\n  }\n}\n\nconst read = (UserAudioProfileModel) => async (filter) => {\n  try {\n    const foundModel = await UserAudioProfileModel.findOne({\n      ...filter,\n      deleted: false,\n    })\n    return foundModel\n  } catch (error) {\n    const details = { filter }\n    console.log(\n      'ERROR - USER AUDIO PROFILE SERVICE > read',\n      StringifyUtils.potionErrorObj(error, details)\n    )\n    throw error\n  }\n}\n\nconst find = (UserAudioProfileModel) => async (filter) => {\n  try {\n    const foundModels = await UserAudioProfileModel.find({\n      ...filter,\n      deleted: false,\n    })\n    return foundModels\n  } catch (error) {\n    const details = { filter }\n    console.log(\n      'ERROR - USER AUDIO PROFILE SERVICE > find',\n      StringifyUtils.potionErrorObj(error, details)\n    )\n    throw error\n  }\n}\n\nconst update = (UserAudioProfileModel) => async (data) => {\n  try {\n    const updatedModel = await UserAudioProfileModel.findOneAndUpdate(\n      { _id: data._id },\n      data,\n      {\n        new: true,\n      }\n    )\n    return updatedModel\n  } catch (error) {\n    const details = { data }\n    console.log(\n      'ERROR - USER AUDIO PROFILE SERVICE > update',\n      StringifyUtils.potionErrorObj(error, details)\n    )\n    throw error\n  }\n}\n\nconst remove = (UserAudioProfileModel) => async (filter) => {\n  try {\n    const updatedModel = await UserAudioProfileModel.findOneAndUpdate(\n      { ...filter },\n      {\n        $set: {\n          deleted: true,\n        },\n      },\n      { new: true }\n    )\n    return updatedModel\n  } catch (error) {\n    const details = { filter }\n    console.log(\n      'ERROR - USER AUDIO PROFILE SERVICE > remove',\n      StringifyUtils.potionErrorObj(error, details)\n    )\n    throw error\n  }\n}\n\nconst removeMany = (UserAudioProfileModel) => async (filter) => {\n  try {\n    const updatedModel = await UserAudioProfileModel.updateMany(\n      { ...filter },\n      {\n        $set: {\n          deleted: true,\n        },\n      },\n      { new: true }\n    )\n    return updatedModel\n  } catch (error) {\n    const details = { filter }\n    console.log(\n      'ERROR - USER AUDIO PROFILE SERVICE > removeMany',\n      StringifyUtils.potionErrorObj(error, details)\n    )\n    throw error\n  }\n}\n\nmodule.exports = (UserAudioProfileModel) => {\n  return {\n    create: create(UserAudioProfileModel),\n    insertMany: insertMany(UserAudioProfileModel),\n    read: read(UserAudioProfileModel),\n    remove: remove(UserAudioProfileModel),\n    removeMany: removeMany(UserAudioProfileModel),\n    update: update(UserAudioProfileModel),\n    find: find(UserAudioProfileModel),\n  }\n}\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_7","type":"command_execution","command":"/bin/bash -lc \"find . -maxdepth 4 -type f -not -path './.git/*' -print | sort | sed -n '1,400p' && rg -n -i \\\"pro.?v2|tier|plan|premium|enterprise|basic|state|status\\\" . -g '\"'!*.pth*'\"' -g '\"'!*.gz'\"' -g '\"'!.git/**'\"'\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_7","type":"command_execution","command":"/bin/bash -lc \"find . -maxdepth 4 -type f -not -path './.git/*' -print | sort | sed -n '1,400p' && rg -n -i \\\"pro.?v2|tier|plan|premium|enterprise|basic|state|status\\\" . -g '\"'!*.pth*'\"' -g '\"'!*.gz'\"' -g '\"'!.git/**'\"'\"","aggregated_output":"./.claude/settings.json\n./.gitignore\n./.styx_prs/pr_1.json\n./.styx_prs/pr_10.json\n./.styx_prs/pr_11.json\n./.styx_prs/pr_12.json\n./.styx_prs/pr_13.json\n./.styx_prs/pr_14.json\n./.styx_prs/pr_15.json\n./.styx_prs/pr_16.json\n./.styx_prs/pr_17.json\n./.styx_prs/pr_18.json\n./.styx_prs/pr_19.json\n./.styx_prs/pr_2.json\n./.styx_prs/pr_20.json\n./.styx_prs/pr_21.json\n./.styx_prs/pr_22.json\n./.styx_prs/pr_23.json\n./.styx_prs/pr_24.json\n./.styx_prs/pr_25.json\n./.styx_prs/pr_26.json\n./.styx_prs/pr_27.json\n./.styx_prs/pr_28.json\n./.styx_prs/pr_3.json\n./.styx_prs/pr_4.json\n./.styx_prs/pr_5.json\n./.styx_prs/pr_6.json\n./.styx_prs/pr_7.json\n./.styx_prs/pr_8.json\n./.styx_prs/pr_9.json\n./README.md\n./app/services/s3/index.js\n./app/services/s3/s3_service.js\n./app/services/sqs/index.js\n./app/services/sqs/sqs_service.js\n./app/services/utils/bugsnag.js\n./app/services/utils/deleteFile.js\n./app/services/utils/index.js\n./app/services/utils/logService.js\n./app/services/voice_cloning/index.js\n./app/services/voice_cloning/voice_cloning_model.js\n./app/services/voice_cloning/voice_cloning_service.js\n./node_modules/@aws-sdk/core/LICENSE\n./node_modules/@aws-sdk/core/README.md\n./node_modules/@aws-sdk/core/account-id-endpoint.d.ts\n./node_modules/@aws-sdk/core/account-id-endpoint.js\n./node_modules/@aws-sdk/core/client.d.ts\n./node_modules/@aws-sdk/core/client.js\n./node_modules/@aws-sdk/core/httpAuthSchemes.d.ts\n./node_modules/@aws-sdk/core/httpAuthSchemes.js\n./node_modules/@aws-sdk/core/package.json\n./node_modules/@aws-sdk/core/protocols.d.ts\n./node_modules/@aws-sdk/core/protocols.js\n./node_modules/@aws-sdk/core/util.d.ts\n./node_modules/@aws-sdk/core/util.js\n./node_modules/@aws-sdk/credential-provider-cognito-identity/LICENSE\n./node_modules/@aws-sdk/credential-provider-cognito-identity/README.md\n./node_modules/@aws-sdk/credential-provider-cognito-identity/package.json\n./node_modules/@aws-sdk/credential-provider-env/LICENSE\n./node_modules/@aws-sdk/credential-provider-env/README.md\n./node_modules/@aws-sdk/credential-provider-env/package.json\n./node_modules/@aws-sdk/credential-provider-http/README.md\n./node_modules/@aws-sdk/credential-provider-http/package.json\n./node_modules/@aws-sdk/credential-provider-ini/LICENSE\n./node_modules/@aws-sdk/credential-provider-ini/README.md\n./node_modules/@aws-sdk/credential-provider-ini/package.json\n./node_modules/@aws-sdk/credential-provider-login/README.md\n./node_modules/@aws-sdk/credential-provider-login/package.json\n./node_modules/@aws-sdk/credential-provider-node/LICENSE\n./node_modules/@aws-sdk/credential-provider-node/README.md\n./node_modules/@aws-sdk/credential-provider-node/package.json\n./node_modules/@aws-sdk/credential-provider-process/LICENSE\n./node_modules/@aws-sdk/credential-provider-process/README.md\n./node_modules/@aws-sdk/credential-provider-process/package.json\n./node_modules/@aws-sdk/credential-provider-sso/LICENSE\n./node_modules/@aws-sdk/credential-provider-sso/README.md\n./node_modules/@aws-sdk/credential-provider-sso/package.json\n./node_modules/@aws-sdk/credential-provider-web-identity/LICENSE\n./node_modules/@aws-sdk/credential-provider-web-identity/README.md\n./node_modules/@aws-sdk/credential-provider-web-identity/package.json\n./node_modules/@aws-sdk/credential-providers/LICENSE\n./node_modules/@aws-sdk/credential-providers/README.md\n./node_modules/@aws-sdk/credential-providers/package.json\n./node_modules/@aws-sdk/nested-clients/README.md\n./node_modules/@aws-sdk/nested-clients/cognito-identity.d.ts\n./node_modules/@aws-sdk/nested-clients/cognito-identity.js\n./node_modules/@aws-sdk/nested-clients/package.json\n./node_modules/@aws-sdk/nested-clients/signin.d.ts\n./node_modules/@aws-sdk/nested-clients/signin.js\n./node_modules/@aws-sdk/nested-clients/sso-oidc.d.ts\n./node_modules/@aws-sdk/nested-clients/sso-oidc.js\n./node_modules/@aws-sdk/nested-clients/sso.d.ts\n./node_modules/@aws-sdk/nested-clients/sso.js\n./node_modules/@aws-sdk/nested-clients/sts.d.ts\n./node_modules/@aws-sdk/nested-clients/sts.js\n./node_modules/@aws-sdk/signature-v4-multi-region/LICENSE\n./node_modules/@aws-sdk/signature-v4-multi-region/README.md\n./node_modules/@aws-sdk/signature-v4-multi-region/package.json\n./node_modules/@aws-sdk/token-providers/LICENSE\n./node_modules/@aws-sdk/token-providers/README.md\n./node_modules/@aws-sdk/token-providers/package.json\n./node_modules/@aws-sdk/types/LICENSE\n./node_modules/@aws-sdk/types/README.md\n./node_modules/@aws-sdk/types/package.json\n./node_modules/@aws-sdk/xml-builder/LICENSE\n./node_modules/@aws-sdk/xml-builder/README.md\n./node_modules/@aws-sdk/xml-builder/package.json\n./node_modules/@aws/lambda-invoke-store/LICENSE\n./node_modules/@aws/lambda-invoke-store/README.md\n./node_modules/@aws/lambda-invoke-store/package.json\n./node_modules/@bugsnag/browser/LICENSE.txt\n./node_modules/@bugsnag/browser/README.md\n./node_modules/@bugsnag/browser/package.json\n./node_modules/@bugsnag/core/LICENSE.txt\n./node_modules/@bugsnag/core/README.md\n./node_modules/@bugsnag/core/breadcrumb.js\n./node_modules/@bugsnag/core/client.js\n./node_modules/@bugsnag/core/config.js\n./node_modules/@bugsnag/core/event.js\n./node_modules/@bugsnag/core/index.js\n./node_modules/@bugsnag/core/package.json\n./node_modules/@bugsnag/core/session.js\n./node_modules/@bugsnag/cuid/.eslintrc\n./node_modules/@bugsnag/cuid/.travis.yml\n./node_modules/@bugsnag/cuid/CONTRIBUTING.md\n./node_modules/@bugsnag/cuid/LICENSE\n./node_modules/@bugsnag/cuid/README.md\n./node_modules/@bugsnag/cuid/index.js\n./node_modules/@bugsnag/cuid/package.json\n./node_modules/@bugsnag/js/LICENSE.txt\n./node_modules/@bugsnag/js/README.md\n./node_modules/@bugsnag/js/package.json\n./node_modules/@bugsnag/js/types.d.ts\n./node_modules/@bugsnag/node/LICENSE.txt\n./node_modules/@bugsnag/node/README.md\n./node_modules/@bugsnag/node/package.json\n./node_modules/@bugsnag/safe-json-stringify/README.md\n./node_modules/@bugsnag/safe-json-stringify/index.js\n./node_modules/@bugsnag/safe-json-stringify/package.json\n./node_modules/@mongodb-js/saslprep/LICENSE\n./node_modules/@mongodb-js/saslprep/package.json\n./node_modules/@mongodb-js/saslprep/readme.md\n./node_modules/@opencensus/core/LICENSE\n./node_modules/@opencensus/core/README.md\n./node_modules/@opencensus/core/package.json\n./node_modules/@opencensus/propagation-b3/LICENSE\n./node_modules/@opencensus/propagation-b3/README.md\n./node_modules/@opencensus/propagation-b3/package.json\n./node_modules/@pm2/agent/.drone.jsonnet\n./node_modules/@pm2/agent/.mocharc.yml\n./node_modules/@pm2/agent/LICENSE\n./node_modules/@pm2/agent/README.md\n./node_modules/@pm2/agent/config.js\n./node_modules/@pm2/agent/constants.js\n./node_modules/@pm2/agent/index.js\n./node_modules/@pm2/agent/package.json\n./node_modules/@pm2/io/.drone.jsonnet\n./node_modules/@pm2/io/.mocharc.js\n./node_modules/@pm2/io/CHANGELOG.md\n./node_modules/@pm2/io/LICENSE.md\n./node_modules/@pm2/io/NOTES.md\n./node_modules/@pm2/io/README.md\n./node_modules/@pm2/io/docker-compose.yml\n./node_modules/@pm2/io/package.json\n./node_modules/@pm2/io/test.sh\n./node_modules/@pm2/js-api/.drone.jsonnet\n./node_modules/@pm2/js-api/LICENSE\n./node_modules/@pm2/js-api/README.md\n./node_modules/@pm2/js-api/constants.js\n./node_modules/@pm2/js-api/index.js\n./node_modules/@pm2/js-api/package.json\n./node_modules/@pm2/pm2-version-check/README.md\n./node_modules/@pm2/pm2-version-check/index.js\n./node_modules/@pm2/pm2-version-check/package.json\n./node_modules/@smithy/core/CHANGELOG.md\n./node_modules/@smithy/core/LICENSE\n./node_modules/@smithy/core/README.md\n./node_modules/@smithy/core/cbor.d.ts\n./node_modules/@smithy/core/cbor.js\n./node_modules/@smithy/core/checksum.d.ts\n./node_modules/@smithy/core/checksum.js\n./node_modules/@smithy/core/client.d.ts\n./node_modules/@smithy/core/client.js\n./node_modules/@smithy/core/config.d.ts\n./node_modules/@smithy/core/config.js\n./node_modules/@smithy/core/endpoints.d.ts\n./node_modules/@smithy/core/endpoints.js\n./node_modules/@smithy/core/errors.d.ts\n./node_modules/@smithy/core/errors.js\n./node_modules/@smithy/core/event-streams.d.ts\n./node_modules/@smithy/core/event-streams.js\n./node_modules/@smithy/core/package.json\n./node_modules/@smithy/core/protocols.d.ts\n./node_modules/@smithy/core/protocols.js\n./node_modules/@smithy/core/retry.d.ts\n./node_modules/@smithy/core/retry.js\n./node_modules/@smithy/core/schema.d.ts\n./node_modules/@smithy/core/schema.js\n./node_modules/@smithy/core/serde.d.ts\n./node_modules/@smithy/core/serde.js\n./node_modules/@smithy/core/transport.d.ts\n./node_modules/@smithy/core/transport.js\n./node_modules/@smithy/credential-provider-imds/CHANGELOG.md\n./node_modules/@smithy/credential-provider-imds/LICENSE\n./node_modules/@smithy/credential-provider-imds/README.md\n./node_modules/@smithy/credential-provider-imds/package.json\n./node_modules/@smithy/fetch-http-handler/CHANGELOG.md\n./node_modules/@smithy/fetch-http-handler/LICENSE\n./node_modules/@smithy/fetch-http-handler/README.md\n./node_modules/@smithy/fetch-http-handler/package.json\n./node_modules/@smithy/node-http-handler/CHANGELOG.md\n./node_modules/@smithy/node-http-handler/LICENSE\n./node_modules/@smithy/node-http-handler/README.md\n./node_modules/@smithy/node-http-handler/package.json\n./node_modules/@smithy/signature-v4/CHANGELOG.md\n./node_modules/@smithy/signature-v4/LICENSE\n./node_modules/@smithy/signature-v4/README.md\n./node_modules/@smithy/signature-v4/package.json\n./node_modules/@smithy/types/CHANGELOG.md\n./node_modules/@smithy/types/LICENSE\n./node_modules/@smithy/types/README.md\n./node_modules/@smithy/types/package.json\n./node_modules/@tootallnate/once/package.json\n./node_modules/@types/node/LICENSE\n./node_modules/@types/node/README.md\n./node_modules/@types/node/assert.d.ts\n./node_modules/@types/node/async_hooks.d.ts\n./node_modules/@types/node/buffer.buffer.d.ts\n./node_modules/@types/node/buffer.d.ts\n./node_modules/@types/node/child_process.d.ts\n./node_modules/@types/node/cluster.d.ts\n./node_modules/@types/node/console.d.ts\n./node_modules/@types/node/constants.d.ts\n./node_modules/@types/node/crypto.d.ts\n./node_modules/@types/node/dgram.d.ts\n./node_modules/@types/node/diagnostics_channel.d.ts\n./node_modules/@types/node/dns.d.ts\n./node_modules/@types/node/domain.d.ts\n./node_modules/@types/node/events.d.ts\n./node_modules/@types/node/ffi.d.ts\n./node_modules/@types/node/fs.d.ts\n./node_modules/@types/node/globals.d.ts\n./node_modules/@types/node/globals.typedarray.d.ts\n./node_modules/@types/node/http.d.ts\n./node_modules/@types/node/http2.d.ts\n./node_modules/@types/node/https.d.ts\n./node_modules/@types/node/index.d.ts\n./node_modules/@types/node/inspector.d.ts\n./node_modules/@types/node/inspector.generated.d.ts\n./node_modules/@types/node/module.d.ts\n./node_modules/@types/node/net.d.ts\n./node_modules/@types/node/os.d.ts\n./node_modules/@types/node/package.json\n./node_modules/@types/node/path.d.ts\n./node_modules/@types/node/perf_hooks.d.ts\n./node_modules/@types/node/process.d.ts\n./node_modules/@types/node/punycode.d.ts\n./node_modules/@types/node/querystring.d.ts\n./node_modules/@types/node/quic.d.ts\n./node_modules/@types/node/readline.d.ts\n./node_modules/@types/node/repl.d.ts\n./node_modules/@types/node/sea.d.ts\n./node_modules/@types/node/sqlite.d.ts\n./node_modules/@types/node/stream.d.ts\n./node_modules/@types/node/string_decoder.d.ts\n./node_modules/@types/node/test.d.ts\n./node_modules/@types/node/timers.d.ts\n./node_modules/@types/node/tls.d.ts\n./node_modules/@types/node/trace_events.d.ts\n./node_modules/@types/node/tty.d.ts\n./node_modules/@types/node/url.d.ts\n./node_modules/@types/node/util.d.ts\n./node_modules/@types/node/v8.d.ts\n./node_modules/@types/node/vfs.d.ts\n./node_modules/@types/node/vm.d.ts\n./node_modules/@types/node/wasi.d.ts\n./node_modules/@types/node/worker_threads.d.ts\n./node_modules/@types/node/zlib.d.ts\n./node_modules/@types/webidl-conversions/LICENSE\n./node_modules/@types/webidl-conversions/README.md\n./node_modules/@types/webidl-conversions/index.d.ts\n./node_modules/@types/webidl-conversions/package.json\n./node_modules/@types/whatwg-url/LICENSE\n./node_modules/@types/whatwg-url/README.md\n./node_modules/@types/whatwg-url/index.d.ts\n./node_modules/@types/whatwg-url/package.json\n./node_modules/@types/whatwg-url/webidl2js-wrapper.d.ts\n./node_modules/acorn-walk/CHANGELOG.md\n./node_modules/acorn-walk/LICENSE\n./node_modules/acorn-walk/README.md\n./node_modules/acorn-walk/dist/walk.d.ts\n./node_modules/acorn-walk/dist/walk.js\n./node_modules/acorn-walk/dist/walk.mjs\n./node_modules/acorn-walk/package.json\n./node_modules/acorn/CHANGELOG.md\n./node_modules/acorn/LICENSE\n./node_modules/acorn/README.md\n./node_modules/acorn/bin/acorn\n./node_modules/acorn/dist/acorn.d.ts\n./node_modules/acorn/dist/acorn.js\n./node_modules/acorn/dist/acorn.mjs\n./node_modules/acorn/dist/acorn.mjs.d.ts\n./node_modules/acorn/dist/bin.js\n./node_modules/acorn/package.json\n./node_modules/agent-base/README.md\n./node_modules/agent-base/package.json\n./node_modules/agent-base/src/index.ts\n./node_modules/agent-base/src/promisify.ts\n./node_modules/amp-message/Readme.md\n./node_modules/amp-message/index.js\n./node_modules/amp-message/package.json\n./node_modules/amp/Readme.md\n./node_modules/amp/index.js\n./node_modules/amp/lib/decode.js\n./node_modules/amp/lib/encode.js\n./node_modules/amp/lib/stream.js\n./node_modules/amp/package.json\n./node_modules/ansi-colors/LICENSE\n./node_modules/ansi-colors/README.md\n./node_modules/ansi-colors/index.js\n./node_modules/ansi-colors/package.json\n./node_modules/ansi-colors/symbols.js\n./node_modules/ansi-colors/types/index.d.ts\n./node_modules/ansi-styles/index.d.ts\n./node_modules/ansi-styles/index.js\n./node_modules/ansi-styles/license\n./node_modules/ansi-styles/package.json\n./node_modules/ansi-styles/readme.md\n./node_modules/anymatch/LICENSE\n./node_modules/anymatch/README.md\n./node_modules/anymatch/index.d.ts\n./node_modules/anymatch/index.js\n./node_modules/anymatch/package.json\n./node_modules/argparse/CHANGELOG.md\n./node_modules/argparse/LICENSE\n./node_modules/argparse/README.md\n./node_modules/argparse/index.js\n./node_modules/argparse/lib/action.js\n./node_modules/argparse/lib/action_container.js\n./node_modules/argparse/lib/argparse.js\n./node_modules/argparse/lib/argument_parser.js\n./node_modules/argparse/lib/const.js\n./node_modules/argparse/lib/namespace.js\n./node_modules/argparse/lib/utils.js\n./node_modules/argparse/package.json\n./node_modules/ast-types/.github/dependabot.yml\n./node_modules/ast-types/LICENSE\n./node_modules/ast-types/README.md\n./node_modules/ast-types/def/babel-core.d.ts\n./node_modules/ast-types/def/babel-core.js\n./node_modules/ast-types/def/babel.d.ts\n./node_modules/ast-types/def/babel.js\n./node_modules/ast-types/def/core.d.ts\n./node_modules/ast-types/def/core.js\n./node_modules/ast-types/def/es-proposals.d.ts\n./node_modules/ast-types/def/es-proposals.js\n./node_modules/ast-types/def/es2020.d.ts\n./node_modules/ast-types/def/es2020.js\n./node_modules/ast-types/def/es6.d.ts\n./node_modules/ast-types/def/es6.js\n./node_modules/ast-types/def/es7.d.ts\n./node_modules/ast-types/def/es7.js\n./node_modules/ast-types/def/esprima.d.ts\n./node_modules/ast-types/def/esprima.js\n./node_modules/ast-types/def/flow.d.ts\n./node_modules/ast-types/def/flow.js\n./node_modules/ast-types/def/jsx.d.ts\n./node_modules/ast-types/def/jsx.js\n./node_modules/ast-types/def/type-annotations.d.ts\n./node_modules/ast-types/def/type-annotations.js\n./node_modules/ast-types/def/typescript.d.ts\n./node_modules/ast-types/def/typescript.js\n./node_modules/ast-types/fork.d.ts\n./node_modules/ast-types/fork.js\n./node_modules/ast-types/gen/builders.d.ts\n./node_modules/ast-types/gen/builders.js\n./node_modules/ast-types/gen/kinds.d.ts\n./node_modules/ast-types/gen/kinds.js\n./node_modules/ast-types/gen/namedTypes.d.ts\n./node_modules/ast-types/gen/namedTypes.js\n./node_modules/ast-types/gen/visitor.d.ts\n./node_modules/ast-types/gen/visitor.js\n./node_modules/ast-types/lib/equiv.d.ts\n./node_modules/ast-types/lib/equiv.js\n./node_modules/ast-types/lib/node-path.d.ts\n./node_modules/ast-types/lib/node-path.js\n./node_modules/ast-types/lib/path-visitor.d.ts\n./node_modules/ast-types/lib/path-visitor.js\n./node_modules/ast-types/lib/path.d.ts\n./node_modules/ast-types/lib/path.js\n./node_modules/ast-types/lib/scope.d.ts\n./node_modules/ast-types/lib/scope.js\n./node_modules/ast-types/lib/shared.d.ts\n./node_modules/ast-types/lib/shared.js\n./node_modules/ast-types/lib/types.d.ts\n./node_modules/ast-types/lib/types.js\n./node_modules/ast-types/main.d.ts\n./node_modules/ast-types/main.js\n./node_modules/ast-types/package.json\n./node_modules/ast-types/tsconfig.json\n./voice-synthsizer-job-handler/recording/recording_model.js:203:    dynamicVideoTemplateGenerationStatus: {\n./voice-synthsizer-job-handler/recording/recording_model.js:272:          status: {\n./voice-synthsizer-job-handler/recording/recording_model.js:333:    backgroundChangeStatus: {\n./voice-synthsizer-job-handler/index.js:98:            status: 'completed',\n./voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js:61:    status: {\r\n./voice-synthsizer-job-handler/job/job_model.js:34:    status: {\n./voice-synthsizer-job-handler/user_audio_profile/user_audio_profile_model.js:16:    status: {\n./voice-cloning/minimize_cloned_voice_model.py:91:    model_state = model.state_dict()\n./voice-cloning/minimize_cloned_voice_model.py:92:    state = {\n./voice-cloning/minimize_cloned_voice_model.py:93:        \"model\": model_state\n./voice-cloning/minimize_cloned_voice_model.py:96:    torch.save(state, model_light_path)\n./voice-cloning/utils/transcription_utils.py:51:    # check if the status code is not an error code (i.e., 4xx or 5xx)\n./voice-cloning/utils/transcription_utils.py:74:                # check if the status code is not an error code (i.e., 4xx or 5xx)\n./voice-cloning/utils/transcription_utils.py:89:    #    print(\"ERROR: {} ({})\" . format(response.status_code, response.text))\n./app/services/voice_cloning/voice_cloning_model.js:16:    status: {\n./voice-cloning-job-handler/index.js:139:          await voiceCloningService.update({ _id, status: 'processing' })\n./voice-cloning-job-handler/index.js:142:            status: 'processing',\n./voice-cloning-job-handler/index.js:242:          // Add the  code to update location of generated model and status into DB\n./voice-cloning-job-handler/index.js:243:          await voiceCloningService.update({ _id, status: 'completed' })\n./voice-cloning-job-handler/index.js:255:            status: 'completed',\n./voice-cloning-job-handler/index.js:287:          // update the db to set status as error\n./voice-cloning-job-handler/index.js:288:          await voiceCloningService.update({ _id, status: 'error' })\n./voice-cloning-job-handler/index.js:291:            status: 'error',\n./voice-cloning-job-handler/voice_cloning/voice_cloning_model.js:16:    status: {\n./voice-cloning-job-handler/user_audio_profile/user_audio_profile_model.js:16:    status: {\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:89339:altiera\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:107126:amnammaplanti\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156707:aplan\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156708:aplanarasa\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156709:aplanarasama\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156710:aplanarasma\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156711:aplanarayana\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156712:aplanaresya\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156713:aplanarsa\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156714:aplanarsama\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156715:aplanarsamma\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156716:aplanarsammayalmanchal\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156717:aplanarsanna\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156718:aplanarsaya\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156719:aplanarshimha\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156720:aplanarsiha\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156721:aplanarsihlu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156722:aplanarsimha\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156723:aplanarsimhacharyalu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156724:aplanarsimharaju\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156725:aplanarsimhulu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156726:aplanarsimma\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156727:aplanaydbalibani\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156728:aplanaydu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156729:aplanaydugolavil\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156730:aplanayidu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156731:aplanayudu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156732:aplani\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156733:aplaniudu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156734:aplanna\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156735:aplanrassa\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156736:aplanrsamma\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156737:aplansamma\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156738:aplanuka\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156739:aplanydudunanna\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156740:aplanydukonchad\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:156741:aplanyu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162325:applanaidu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162326:applanaidyu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162327:applanaramma\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162328:applanarasa\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162329:applanarasam\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162330:applanarasama\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162331:applanarasamma\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162332:applanarasaya\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162333:applanarasayam\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162334:applanarasayya\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162335:applanarasimhulu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162336:applanarasimma\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162337:applanarasmma\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162338:applanarayamam\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162339:applanarayana\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162340:applanarayanamm\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162341:applanarsa\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162342:applanarsaiya\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162343:applanarsama\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162344:applanarsamma\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162345:applanarsayya\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162346:applanarsda\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162347:applanarshaya\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162348:applanarsi\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162349:applanarsiamma\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162350:applanarsipatnana\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162351:applanasa\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162352:applanasamma\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162353:applanaydu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162354:applanayudu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162355:applanidu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162356:applannareddy\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162357:applanrsa\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:162358:applanydu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:186134:ashakriplani\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:196196:astier\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:284723:baptieruguti\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:294753:basica\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:294754:basicala\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:294755:basicall\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:294756:basichowdappa\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:348816:bhikshptierra\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:359155:bhukyadeeplanaya\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:361509:bhuplan\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:406697:booplani\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:407569:boplani\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:436098:bukkechamplanay\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:436569:bukyaruplanayak\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:457593:carson copland\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:457594:carson-copland\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:457678:cartier\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:461548:cetiera\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:475507:champlanaik\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:475508:champlanayak\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:475509:champlanayaka\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:475510:champlanayk\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:489928:chaplan\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:489929:chaplanaik\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:489930:chaplanayak\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:489931:chaplanayaka\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:489932:chaplanjaneyulu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:489933:chaplanna\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:505430:chemplany\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:513532:chepplana\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:517513:chettier\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:519407:chhamplanayak\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:527704:chilmartierukala\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:528525:chiluplanusuja\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:530530:chinaapplanaidu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:534645:chinaplanaydu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:543703:chinnachamplanay\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:553613:chinnaplanydu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:554051:chinnapplanaidu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:554052:chinnapplanydu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:561987:chinplangnan\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:580093:chiyyetierriswami\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:583905:choplanayak\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:599492:coltier\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:601076:coplan\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:601077:copland\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:601609:cormac tiernan\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:601610:cormac-tiernan\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:620993:damyantierini\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:649832:deaplanaik\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:652897:deeplanaik\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:652898:deeplanayak\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:652899:deeplanayaka\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:685681:dharmasuriplanyd\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:705721:diplanamak\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:705722:diplanayak\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:705723:diplanayaka\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:726410:dplanayke\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:810318:esrooplanaik\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:882077:gantierriswami\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:891059:gaultier\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:891060:gaultiero\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:892085:gautier\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:903369:ggtieraajpathrudu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:938516:goplanayak\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:938517:goplani\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:938518:goplaniadu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:941240:gorkatierri\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:942723:gortierriswami\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:959832:gualtiero\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:963185:gudettierriswami\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:994147:gutier\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1009312:hamish floyd tierni\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1009313:hamish-floyd-tierni\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1038984:hemavtierupalli\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1041596:heritier\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1041597:héritier\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1085985:intierkala\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1085986:intieruku\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1088143:ippetierramma\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1096992:islavatruplanaya\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1137184:jamplanayaka\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1149044:japlanaydu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1151555:jarplanagraju\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1164812:jayplan\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1195783:jiyotieratnam\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1195784:jiyotieruva\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1212126:jplani\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1220234:juntier\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1236353:kadplanna\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1237121:kaduplanna\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1256916:kalplana\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1295176:kaplan\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1295177:kaplana\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1308597:kartier\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1324191:katiera\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1324196:katierose\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1324197:katierra\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1332906:kavetierrmal\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1332907:kavetierukala\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1378863:kirplani\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1382262:kitiera\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1382960:kizheplan\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1393595:kokkantierramma\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1418832:koplan\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1418833:koplang\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1423951:korrachamplanayaka\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1439157:koupland\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1444231:krheplanthu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1444909:kriplani\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1468485:kummatierramma\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1468945:kumplanayakdung\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1475030:kuntierrappagari\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1476558:kuplanayak\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1476559:kuplani\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1478129:kuranplankudi\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1530923:latiera\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1530924:latierra\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1605622:magiplana\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1738256:merdhnplanli\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1787900:montiera\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1808716:mudesamplanayak\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1861670:mytieraj\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1861671:mytierathnam\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:1970448:neerugantierramm\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2034792:ontieru\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2054438:padtiere\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2075648:pamplany\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2088979:paplanna\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2108798:pasplanagamma\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2115489:patierranna\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2130714:pedaplanydu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2134499:peddachamplanay\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2140335:peddapplanaidu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2144422:peddintierukunayudu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2187243:plan\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2187244:planagi\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2187245:planakala\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2187246:planallamma\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2187247:plananayak\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2187248:planati\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2187249:plancha\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2187250:plandey\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2187251:plandunjal\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2187252:plandunki\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2187253:planers\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2187254:plangtode\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2187255:plani\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2187256:planiandi\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2187257:planjery\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2187258:planklin\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2187259:planklinsukumar\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2187260:plankudy\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2187261:plant\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2187262:planti\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2187263:plantopa\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2259373:pushpawatierroju\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2259461:pushpland\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2263388:puttieramma\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2263389:puttierra\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2302692:rajagoaplan\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2302855:rajagoplan\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2320277:ramaapplanaidu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2333890:ramavatchamplan\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2366089:ratintierriswami\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2386848:regtierriswami\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2401753:riplanaya\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2412321:rooplanaik\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2412322:rooplanayq\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2427572:ruplanaayak\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2427573:ruplanaik\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2427574:ruplanayak\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2427575:ruplanayaka\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2430267:ruuplanayk\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2436015:sabavatdeeplanay\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2437432:sabhavatruplanay\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2476702:sambasica\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2482687:samplanayak\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2482688:samplanayaka\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2501804:sanplannapuarna\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2511881:sarasvatierramsetty\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2540710:satyavtierubandi\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2598855:shantierra\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2601977:sharatkriplani\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2608907:shatiera\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2608908:shatierra\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2628330:shettierriswami\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2695350:sitierramma\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2714491:somplanydu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2722332:sottierajja\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2749511:statemma\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2749512:staten\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2749513:statenisland\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2749514:statevva\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2749515:statey\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2767944:sugalichamplanay\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2767956:sugalideeplanayak\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2768075:sugaliruplanayak\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2768105:sugalitiplanayak\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2768106:sugalitiplanayaka\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2796536:surplanydu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2819372:sytiera\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2846443:taplanli\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904850:tier\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904851:tiera\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904852:tieragh\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904853:tierah\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904854:tierakala\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904856:tieran\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904857:tieranee\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904858:tieraney\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904859:tierani\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904860:tierany\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904861:tierdon\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904862:tiere\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904864:tieren\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904865:tiereney\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904866:tiereny\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904867:tiergan\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904868:tieri\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904869:tieria\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904870:tierica\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904871:tiericka\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904872:tierin\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904873:tierion\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904874:tierlagh\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904875:tierley\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904876:tierlyn\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904877:tierna\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904878:tiernach\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904879:tiernagh\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904880:tiernain\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904881:tierna lee\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904882:tierna-lee\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904883:tierna leigh\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904884:tierna-leigh\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904885:tiernan\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904886:tiernan lee\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904887:tiernan-lee\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904888:tierna rose\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904889:tierna-rose\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904890:tiernay\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904891:tiernen\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904892:tierney\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904893:tierney grace\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904894:tierney-grace\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904895:tierney shay\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904896:tierney-shay\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904897:tierni\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904898:tiernie\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904899:tiernin\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904900:tiernnan\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904901:tierno\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904902:tiernoc\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904903:tiernon\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904904:tierny\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904905:tieron\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904908:tierra\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904909:tierrah\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904910:tierra jade\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904911:tierra-jade\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904912:tierra lynn\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904913:tierra-lynn\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904914:tierrappa\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904915:tierre\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904916:tierri\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904917:tierria\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904918:tierry\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904919:tiersa\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904920:tiersha\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904923:tierumani\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904924:tierumatamma\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904927:tierupathi\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904928:tieruvidhula\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904929:tierym\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904930:tieryn\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904931:tieryne\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2904932:tierza\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2910640:tiplanayaka\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2921993:togtierriswami\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2934546:tri state\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2934547:tri-state\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2961814:ullikantierrinagamma\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2972439:uplana\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2972440:uplanarsaiah\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2972441:uplanch\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2972442:uplancha\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2972443:uplanchala\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2972444:uplanchavar\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2972445:uplanchawaar\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2972446:uplanchawar\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2972447:uplanchewar\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2972448:uplanchi\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2972449:uplanchivar\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2972450:uplanchiwar\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2972451:uplanchowar\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2972452:uplanchu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2972453:uplanchwar\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2974796:upplancha\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2974797:upplanchi\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2974798:upplanchy\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2975655:upputieri\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2984784:uttierriswami\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:2995366:vadtyideeplanayaka\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:3020099:vankudotchamplanayaka\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:3023218:vaplanaydu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:3075316:venkataapplanayu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:3080960:venkataplanarshimharaju\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:3080961:venkataplanarshimhulu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:3080962:venkataplanaydu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:3092805:venkatieramana\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:3098126:venkatplanydu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:3098296:venkatpthiplanay\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:3111120:venugoplanaidu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:3137111:viplana\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:3161643:vupplanchi\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:3161644:vupplanchu\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv:3205158:yarapatiapplanaid\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_8","type":"command_execution","command":"/bin/bash -lc \"rg -n -i \\\"pro_v2|pro.?v2|tier|clon|null state|state\\\" .styx_prs | sed -n '1,320p'\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_8","type":"command_execution","command":"/bin/bash -lc \"rg -n -i \\\"pro_v2|pro.?v2|tier|clon|null state|state\\\" .styx_prs | sed -n '1,320p'\"","aggregated_output":".styx_prs/pr_24.json:5:  \"state\": \"MERGED\",\n.styx_prs/pr_24.json:137:          \"message\": \"Merge pull request #18 from potion/develop\\n\\nRefined voice cloning settings\",\n.styx_prs/pr_24.json:169:          \"message\": \"Merge branch 'staging' into update-voice-clone-23-05\",\n.styx_prs/pr_24.json:217:          \"message\": \"Merge pull request #19 from potion/update-voice-clone-23-05\\n\\nUpdate voice clone 23 05\",\n.styx_prs/pr_24.json:273:        \"path\": \"voice-cloning-job-handler/index.js\",\n.styx_prs/pr_1.json:5:  \"state\": \"MERGED\",\n.styx_prs/pr_1.json:125:        \"path\": \"voice-cloning/clone_voice.py\",\n.styx_prs/pr_1.json:131:        \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide.md\",\n.styx_prs/pr_1.json:137:        \"path\": \"voice-cloning/synthesize_speech.py\",\n.styx_prs/pr_1.json:143:        \"path\": \"voice-cloning/train_multispeaker_baseline_model.py\",\n.styx_prs/pr_23.json:4:  \"body\": \"Support of 48k Hz sampling rate as default; GPU and CPU-based usage for all scripts but baseline training run.\\r\\n\\r\\nSee voice-cloning/docs/Voice\\\\ Cloning\\\\ @\\\\ 48k\\\\ Hz\\\\ Sampling\\\\ Rate\\\\ -\\\\ Step-by-Step.txt for example usage.\\r\\n\\r\\nModel assets can be found at s3://potion-ai-models/potion-voice-2023-08/\",\n.styx_prs/pr_23.json:5:  \"state\": \"MERGED\",\n.styx_prs/pr_23.json:153:          \"message\": \"Updated requirements: git clone --depth 1 --branch v0.16.0 https://github.com/coqui-ai/TTS onwards addresses the CPU-only processing issues.\",\n.styx_prs/pr_23.json:553:          \"message\": \"Added code for cloning script\",\n.styx_prs/pr_23.json:569:          \"message\": \"Merge pull request #25 from potion/develop-07-08-updates\\n\\nAdded code for cloning script\",\n.styx_prs/pr_23.json:665:          \"message\": \"Added naturalness score to find_best_cloned_model; improved comments.\",\n.styx_prs/pr_23.json:821:        \"path\": \"voice-cloning-job-handler/index.js\",\n.styx_prs/pr_23.json:827:        \"path\": \"voice-cloning/clone_voice.py\",\n.styx_prs/pr_23.json:833:        \"path\": \"voice-cloning/clone_voice_via_continue.py\",\n.styx_prs/pr_23.json:839:        \"path\": \"voice-cloning/docs/Voice Cloning @ 48k Hz Sampling Rate - Step-by-Step.txt\",\n.styx_prs/pr_23.json:845:        \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide.md\",\n.styx_prs/pr_23.json:851:        \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide_-_CPU_only.md\",\n.styx_prs/pr_23.json:857:        \"path\": \"voice-cloning/find_best_cloned_model.py\",\n.styx_prs/pr_23.json:863:        \"path\": \"voice-cloning/find_best_multispeaker_model.py\",\n.styx_prs/pr_23.json:869:        \"path\": \"voice-cloning/minimize_cloned_voice_model.py\",\n.styx_prs/pr_23.json:875:        \"path\": \"voice-cloning/prepare_datasets.py\",\n.styx_prs/pr_23.json:881:        \"path\": \"voice-cloning/score_cloned_voice.py\",\n.styx_prs/pr_23.json:887:        \"path\": \"voice-cloning/synthesize_speech.py\",\n.styx_prs/pr_23.json:893:        \"path\": \"voice-cloning/train_multispeaker_baseline_model.py\",\n.styx_prs/pr_23.json:899:        \"path\": \"voice-cloning/utils/NISQA/LICENSE\",\n.styx_prs/pr_23.json:905:        \"path\": \"voice-cloning/utils/NISQA/LICENSE_model_weights\",\n.styx_prs/pr_23.json:911:        \"path\": \"voice-cloning/utils/NISQA/NISQA_lib.py\",\n.styx_prs/pr_23.json:917:        \"path\": \"voice-cloning/utils/NISQA/NISQA_model.py\",\n.styx_prs/pr_23.json:923:        \"path\": \"voice-cloning/utils/NISQA/nisqa_tts.tar\",\n.styx_prs/pr_23.json:929:        \"path\": \"voice-cloning/utils/misc_utils.py\",\n.styx_prs/pr_23.json:935:        \"path\": \"voice-cloning/utils/scoring_utils.py\",\n.styx_prs/pr_23.json:941:        \"path\": \"voice-cloning/utils/synthesize_utils.py\",\n.styx_prs/pr_21.json:5:  \"state\": \"MERGED\",\n.styx_prs/pr_21.json:81:        \"path\": \"voice-cloning/find_best_cloned_model.py\",\n.styx_prs/pr_21.json:87:        \"path\": \"voice-cloning/find_best_multispeaker_model.py\",\n.styx_prs/pr_4.json:3:  \"title\": \"Feature 4023 voice clone handler\",\n.styx_prs/pr_4.json:5:  \"state\": \"MERGED\",\n.styx_prs/pr_4.json:15:  \"headRefName\": \"feature-4023-voice-clone-handler\",\n.styx_prs/pr_4.json:57:          \"message\": \"Added base code for voice cloning\",\n.styx_prs/pr_4.json:361:          \"message\": \"Merge branch 'main' into feature-4023-voice-clone-handler\",\n.styx_prs/pr_4.json:505:          \"message\": \"Merge branch 'main' into feature-4023-voice-clone-handler\",\n.styx_prs/pr_4.json:601:          \"message\": \"Merge branch 'feature-4023-voice-clone-handler' of https://github.com/potion/potion-voice into feature-4023-voice-clone-handler\",\n.styx_prs/pr_4.json:633:          \"message\": \"Update clone_voice.py\",\n.styx_prs/pr_4.json:743:        \"path\": \"app/services/voice_cloning/index.js\",\n.styx_prs/pr_4.json:749:        \"path\": \"app/services/voice_cloning/voice_cloning_model.js\",\n.styx_prs/pr_4.json:755:        \"path\": \"app/services/voice_cloning/voice_cloning_service.js\",\n.styx_prs/pr_4.json:773:        \"path\": \"voice-cloning-job-handler/index.js\",\n.styx_prs/pr_4.json:779:        \"path\": \"voice-cloning-job-handler/package-lock.json\",\n.styx_prs/pr_4.json:785:        \"path\": \"voice-cloning-job-handler/package.json\",\n.styx_prs/pr_4.json:791:        \"path\": \"voice-cloning-job-handler/pm2-development.yml\",\n.styx_prs/pr_4.json:797:        \"path\": \"voice-cloning-job-handler/user_audio_profile/index.js\",\n.styx_prs/pr_4.json:803:        \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_model.js\",\n.styx_prs/pr_4.json:809:        \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n.styx_prs/pr_4.json:815:        \"path\": \"voice-cloning-job-handler/voice_cloning/index.js\",\n.styx_prs/pr_4.json:821:        \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_model.js\",\n.styx_prs/pr_4.json:827:        \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n.styx_prs/pr_4.json:833:        \"path\": \"voice-cloning/clone_voice.py\",\n.styx_prs/pr_14.json:5:  \"state\": \"MERGED\",\n.styx_prs/pr_14.json:78:        \"state\": \"APPROVED\",\n.styx_prs/pr_14.json:94:        \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide.md\",\n.styx_prs/pr_14.json:100:        \"path\": \"voice-cloning/score_models.py\",\n.styx_prs/pr_15.json:5:  \"state\": \"MERGED\",\n.styx_prs/pr_15.json:48:          \"message\": \"Refined voice cloning to support new capabilities to determine best model; updated recently adde capability to determine best multi-speaker model.\",\n.styx_prs/pr_15.json:112:          \"message\": \"out.cloned_model_path now returns the full path, not just the path to the output folder.\",\n.styx_prs/pr_15.json:344:        \"path\": \"voice-cloning-job-handler/index.js\",\n.styx_prs/pr_15.json:350:        \"path\": \"voice-cloning-job-handler/pm2-development.yml\",\n.styx_prs/pr_15.json:356:        \"path\": \"voice-cloning-job-handler/pm2-production.yml\",\n.styx_prs/pr_15.json:362:        \"path\": \"voice-cloning/clone_voice.py\",\n.styx_prs/pr_15.json:368:        \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide.md\",\n.styx_prs/pr_15.json:374:        \"path\": \"voice-cloning/find_best_cloned_model.py\",\n.styx_prs/pr_15.json:380:        \"path\": \"voice-cloning/find_best_multispeaker_model.py\",\n.styx_prs/pr_15.json:386:        \"path\": \"voice-cloning/prepare_datasets.py\",\n.styx_prs/pr_15.json:392:        \"path\": \"voice-cloning/score_cloned_voice.py\",\n.styx_prs/pr_15.json:398:        \"path\": \"voice-cloning/train_config.py\",\n.styx_prs/pr_15.json:404:        \"path\": \"voice-cloning/train_multispeaker_baseline_model.py\",\n.styx_prs/pr_5.json:5:  \"state\": \"MERGED\",\n.styx_prs/pr_5.json:62:        \"state\": \"APPROVED\",\n.styx_prs/pr_5.json:78:        \"path\": \"voice-cloning-job-handler/index.js\",\n.styx_prs/pr_3.json:5:  \"state\": \"MERGED\",\n.styx_prs/pr_3.json:65:        \"path\": \"voice-cloning/clone_voice.py\",\n.styx_prs/pr_3.json:71:        \"path\": \"voice-cloning/train_multispeaker_baseline_model.py\",\n.styx_prs/pr_13.json:5:  \"state\": \"MERGED\",\n.styx_prs/pr_10.json:5:  \"state\": \"MERGED\",\n.styx_prs/pr_10.json:15:  \"headRefName\": \"update-voice-cloning-to-use-original-text\",\n.styx_prs/pr_10.json:78:        \"state\": \"APPROVED\",\n.styx_prs/pr_10.json:94:        \"path\": \"voice-cloning-job-handler/index.js\",\n.styx_prs/pr_11.json:5:  \"state\": \"MERGED\",\n.styx_prs/pr_11.json:494:        \"state\": \"APPROVED\",\n.styx_prs/pr_11.json:516:        \"path\": \".prettierrc\",\n.styx_prs/pr_11.json:522:        \"path\": \"voice-cloning-job-handler/index.js\",\n.styx_prs/pr_11.json:528:        \"path\": \"voice-cloning-job-handler/package-lock.json\",\n.styx_prs/pr_11.json:534:        \"path\": \"voice-cloning-job-handler/package.json\",\n.styx_prs/pr_11.json:540:        \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n.styx_prs/pr_11.json:546:        \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n.styx_prs/pr_11.json:552:        \"path\": \"voice-cloning-job-handler/yarn.lock\",\n.styx_prs/pr_18.json:3:  \"title\": \"Refined voice cloning settings\",\n.styx_prs/pr_18.json:4:  \"body\": \"Update settings for voice cloning.\",\n.styx_prs/pr_18.json:5:  \"state\": \"MERGED\",\n.styx_prs/pr_18.json:249:          \"message\": \"Added new voice conversion option (idea 1: convert from multi-speaker model; idea 2: clone voice, synthesize speech, convert into recorded template; ...).\",\n.styx_prs/pr_18.json:281:          \"message\": \"Added new voice cloning approach (using fine-tuning via continue_path).\",\n.styx_prs/pr_18.json:377:          \"message\": \"Added numpy import for assert statements.\",\n.styx_prs/pr_18.json:505:          \"message\": \"New cloning step and deployment guidance added; TTS requirements updated.\",\n.styx_prs/pr_18.json:600:        \"path\": \"voice-cloning/clone_voice.py\",\n.styx_prs/pr_18.json:606:        \"path\": \"voice-cloning/clone_voice_via_continue.py\",\n.styx_prs/pr_18.json:612:        \"path\": \"voice-cloning/convert_voice.py\",\n.styx_prs/pr_18.json:618:        \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide.md\",\n.styx_prs/pr_18.json:624:        \"path\": \"voice-cloning/prepare_datasets.py\",\n.styx_prs/pr_18.json:630:        \"path\": \"voice-cloning/save_multispeaker_baseline_embeddings_file.py\",\n.styx_prs/pr_18.json:636:        \"path\": \"voice-cloning/synthesize_speech.py\",\n.styx_prs/pr_18.json:642:        \"path\": \"voice-cloning/train_config.py\",\n.styx_prs/pr_18.json:648:        \"path\": \"voice-cloning/train_multispeaker_baseline_model.py\",\n.styx_prs/pr_18.json:654:        \"path\": \"voice-cloning/utils/synthesize_utils.py\",\n.styx_prs/pr_17.json:5:  \"state\": \"MERGED\",\n.styx_prs/pr_17.json:222:        \"state\": \"APPROVED\",\n.styx_prs/pr_17.json:238:        \"path\": \"voice-cloning-job-handler/index.js\",\n.styx_prs/pr_17.json:244:        \"path\": \"voice-cloning-job-handler/pm2-development.yml\",\n.styx_prs/pr_17.json:250:        \"path\": \"voice-cloning-job-handler/pm2-production.yml\",\n.styx_prs/pr_28.json:5:  \"state\": \"OPEN\",\n.styx_prs/pr_28.json:233:          \"message\": \"New cloning approach with termination condition based on speaker similarity and voice naturalness scores.\",\n.styx_prs/pr_28.json:297:          \"message\": \"48k Voice cloning documentation now based on clone_voice_via_continue_n_natqa.py; adjusted default cloning parameters.\",\n.styx_prs/pr_28.json:313:          \"message\": \"find_best_cloned_model.py now also checks for minimum quality nat & sim scores; returns None for best_model if they are not met.\",\n.styx_prs/pr_28.json:417:        \"path\": \"voice-cloning/clone_voice_via_continue.py\",\n.styx_prs/pr_28.json:423:        \"path\": \"voice-cloning/clone_voice_via_continue_n_natqa.py\",\n.styx_prs/pr_28.json:429:        \"path\": \"voice-cloning/docs/Voice Cloning @ 48k Hz Sampling Rate - Step-by-Step.txt\",\n.styx_prs/pr_28.json:435:        \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide.md\",\n.styx_prs/pr_28.json:441:        \"path\": \"voice-cloning/find_best_cloned_model.py\",\n.styx_prs/pr_28.json:447:        \"path\": \"voice-cloning/find_best_multispeaker_model.py\",\n.styx_prs/pr_28.json:453:        \"path\": \"voice-cloning/prepare_datasets.py\",\n.styx_prs/pr_28.json:459:        \"path\": \"voice-cloning/save_multispeaker_baseline_embeddings_file.py\",\n.styx_prs/pr_28.json:465:        \"path\": \"voice-cloning/synthesize_speech.py\",\n.styx_prs/pr_28.json:471:        \"path\": \"voice-cloning/train_config.py\",\n.styx_prs/pr_28.json:477:        \"path\": \"voice-cloning/train_multispeaker_baseline_model.py\",\n.styx_prs/pr_28.json:483:        \"path\": \"voice-cloning/train_speaker_encoder.py\",\n.styx_prs/pr_28.json:489:        \"path\": \"voice-cloning/utils/scoring_utils.py\",\n.styx_prs/pr_28.json:495:        \"path\": \"voice-cloning/utils/speaker_encoder_utils.py\",\n.styx_prs/pr_28.json:501:        \"path\": \"voice-cloning/utils/trainer_utils.py\",\n.styx_prs/pr_22.json:5:  \"state\": \"MERGED\",\n.styx_prs/pr_22.json:87:        \"path\": \"voice-cloning/clone_voice_via_continue.py\",\n.styx_prs/pr_22.json:93:        \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide_-_CPU_only.md\",\n.styx_prs/pr_22.json:99:        \"path\": \"voice-cloning/find_best_cloned_model.py\",\n.styx_prs/pr_22.json:105:        \"path\": \"voice-cloning/find_best_multispeaker_model.py\",\n.styx_prs/pr_22.json:111:        \"path\": \"voice-cloning/prepare_datasets.py\",\n.styx_prs/pr_22.json:117:        \"path\": \"voice-cloning/score_cloned_voice.py\",\n.styx_prs/pr_22.json:123:        \"path\": \"voice-cloning/synthesize_speech.py\",\n.styx_prs/pr_16.json:5:  \"state\": \"MERGED\",\n.styx_prs/pr_16.json:638:        \"state\": \"APPROVED\",\n.styx_prs/pr_16.json:660:        \"path\": \".prettierrc\",\n.styx_prs/pr_16.json:666:        \"path\": \"voice-cloning-job-handler/index.js\",\n.styx_prs/pr_16.json:672:        \"path\": \"voice-cloning-job-handler/package-lock.json\",\n.styx_prs/pr_16.json:678:        \"path\": \"voice-cloning-job-handler/package.json\",\n.styx_prs/pr_16.json:684:        \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n.styx_prs/pr_16.json:690:        \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n.styx_prs/pr_16.json:696:        \"path\": \"voice-cloning-job-handler/yarn.lock\",\n.styx_prs/pr_16.json:702:        \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide.md\",\n.styx_prs/pr_16.json:708:        \"path\": \"voice-cloning/score_models.py\",\n.styx_prs/pr_16.json:714:        \"path\": \"voice-cloning/synthesize_speech.py\",\n.styx_prs/pr_16.json:720:        \"path\": \"voice-cloning/utils/synthesize_utils.py\",\n.styx_prs/pr_26.json:5:  \"state\": \"MERGED\",\n.styx_prs/pr_26.json:65:        \"path\": \"voice-cloning-job-handler/index.js\",\n.styx_prs/pr_12.json:5:  \"state\": \"MERGED\",\n.styx_prs/pr_12.json:82:        \"state\": \"APPROVED\",\n.styx_prs/pr_12.json:94:        \"state\": \"APPROVED\",\n.styx_prs/pr_12.json:110:        \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide.md\",\n.styx_prs/pr_12.json:116:        \"path\": \"voice-cloning/synthesize_speech.py\",\n.styx_prs/pr_12.json:122:        \"path\": \"voice-cloning/utils/synthesize_utils.py\",\n.styx_prs/pr_27.json:5:  \"state\": \"MERGED\",\n.styx_prs/pr_27.json:69:        \"path\": \"voice-cloning-job-handler/index.js\",\n.styx_prs/pr_20.json:5:  \"state\": \"OPEN\",\n.styx_prs/pr_20.json:89:          \"message\": \"Refined voice cloning to support new capabilities to determine best model; updated recently adde capability to determine best multi-speaker model.\",\n.styx_prs/pr_20.json:153:          \"message\": \"out.cloned_model_path now returns the full path, not just the path to the output folder.\",\n.styx_prs/pr_20.json:553:          \"message\": \"Added new voice conversion option (idea 1: convert from multi-speaker model; idea 2: clone voice, synthesize speech, convert into recorded template; ...).\",\n.styx_prs/pr_20.json:585:          \"message\": \"Added new voice cloning approach (using fine-tuning via continue_path).\",\n.styx_prs/pr_20.json:681:          \"message\": \"Added numpy import for assert statements.\",\n.styx_prs/pr_20.json:809:          \"message\": \"New cloning step and deployment guidance added; TTS requirements updated.\",\n.styx_prs/pr_20.json:953:          \"message\": \"Merge pull request #18 from potion/develop\\n\\nRefined voice cloning settings\",\n.styx_prs/pr_20.json:985:          \"message\": \"Merge branch 'staging' into update-voice-clone-23-05\",\n.styx_prs/pr_20.json:1033:          \"message\": \"Merge pull request #19 from potion/update-voice-clone-23-05\\n\\nUpdate voice clone 23 05\",\n.styx_prs/pr_20.json:1161:          \"message\": \"Updated requirements: git clone --depth 1 --branch v0.16.0 https://github.com/coqui-ai/TTS onwards addresses the CPU-only processing issues.\",\n.styx_prs/pr_20.json:1561:          \"message\": \"Added code for cloning script\",\n.styx_prs/pr_20.json:1577:          \"message\": \"Merge pull request #25 from potion/develop-07-08-updates\\n\\nAdded code for cloning script\",\n.styx_prs/pr_20.json:1673:          \"message\": \"Added naturalness score to find_best_cloned_model; improved comments.\",\n.styx_prs/pr_20.json:1877:        \"path\": \"voice-cloning-job-handler/index.js\",\n.styx_prs/pr_20.json:1883:        \"path\": \"voice-cloning-job-handler/pm2-development.yml\",\n.styx_prs/pr_20.json:1889:        \"path\": \"voice-cloning-job-handler/pm2-production.yml\",\n.styx_prs/pr_20.json:1895:        \"path\": \"voice-cloning/clone_voice.py\",\n.styx_prs/pr_20.json:1901:        \"path\": \"voice-cloning/clone_voice_via_continue.py\",\n.styx_prs/pr_20.json:1907:        \"path\": \"voice-cloning/convert_voice.py\",\n.styx_prs/pr_20.json:1913:        \"path\": \"voice-cloning/docs/Voice Cloning @ 48k Hz Sampling Rate - Step-by-Step.txt\",\n.styx_prs/pr_20.json:1919:        \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide.md\",\n.styx_prs/pr_20.json:1925:        \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide_-_CPU_only.md\",\n.styx_prs/pr_20.json:1931:        \"path\": \"voice-cloning/find_best_cloned_model.py\",\n.styx_prs/pr_20.json:1937:        \"path\": \"voice-cloning/find_best_multispeaker_model.py\",\n.styx_prs/pr_20.json:1943:        \"path\": \"voice-cloning/minimize_cloned_voice_model.py\",\n.styx_prs/pr_20.json:1949:        \"path\": \"voice-cloning/prepare_datasets.py\",\n.styx_prs/pr_20.json:1955:        \"path\": \"voice-cloning/save_multispeaker_baseline_embeddings_file.py\",\n.styx_prs/pr_20.json:1961:        \"path\": \"voice-cloning/score_cloned_voice.py\",\n.styx_prs/pr_20.json:1967:        \"path\": \"voice-cloning/synthesize_speech.py\",\n.styx_prs/pr_20.json:1973:        \"path\": \"voice-cloning/train_config.py\",\n.styx_prs/pr_20.json:1979:        \"path\": \"voice-cloning/train_multispeaker_baseline_model.py\",\n.styx_prs/pr_20.json:1985:        \"path\": \"voice-cloning/utils/NISQA/LICENSE\",\n.styx_prs/pr_20.json:1991:        \"path\": \"voice-cloning/utils/NISQA/LICENSE_model_weights\",\n.styx_prs/pr_20.json:1997:        \"path\": \"voice-cloning/utils/NISQA/NISQA_lib.py\",\n.styx_prs/pr_20.json:2003:        \"path\": \"voice-cloning/utils/NISQA/NISQA_model.py\",\n.styx_prs/pr_20.json:2009:        \"path\": \"voice-cloning/utils/NISQA/nisqa_tts.tar\",\n.styx_prs/pr_20.json:2015:        \"path\": \"voice-cloning/utils/misc_utils.py\",\n.styx_prs/pr_20.json:2021:        \"path\": \"voice-cloning/utils/scoring_utils.py\",\n.styx_prs/pr_20.json:2027:        \"path\": \"voice-cloning/utils/synthesize_utils.py\",\n.styx_prs/pr_8.json:5:  \"state\": \"MERGED\",\n.styx_prs/pr_8.json:98:        \"state\": \"APPROVED\",\n.styx_prs/pr_8.json:114:        \"path\": \".prettierrc\",\n.styx_prs/pr_8.json:126:        \"path\": \"voice-cloning-job-handler/index.js\",\n.styx_prs/pr_8.json:132:        \"path\": \"voice-cloning-job-handler/package.json\",\n.styx_prs/pr_8.json:138:        \"path\": \"voice-cloning-job-handler/pm2-development.yml\",\n.styx_prs/pr_8.json:144:        \"path\": \"voice-cloning-job-handler/pm2-production.yml\",\n.styx_prs/pr_8.json:150:        \"path\": \"voice-cloning-job-handler/yarn.lock\",\n.styx_prs/pr_2.json:5:  \"state\": \"MERGED\",\n.styx_prs/pr_2.json:81:        \"path\": \"voice-cloning/clone_voice.py\",\n.styx_prs/pr_2.json:87:        \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide.md\",\n.styx_prs/pr_2.json:93:        \"path\": \"voice-cloning/train_multispeaker_baseline_model.py\",\n.styx_prs/pr_7.json:5:  \"state\": \"MERGED\",\n.styx_prs/pr_7.json:62:        \"state\": \"APPROVED\",\n.styx_prs/pr_7.json:78:        \"path\": \"voice-cloning-job-handler/pm2-development.yml\",\n.styx_prs/pr_7.json:84:        \"path\": \"voice-cloning-job-handler/pm2-production.yml\",\n.styx_prs/pr_9.json:5:  \"state\": \"MERGED\",\n.styx_prs/pr_9.json:78:        \"state\": \"APPROVED\",\n.styx_prs/pr_9.json:94:        \"path\": \"voice-cloning-job-handler/pm2-development.yml\",\n.styx_prs/pr_9.json:100:        \"path\": \"voice-cloning-job-handler/pm2-production.yml\",\n.styx_prs/pr_19.json:3:  \"title\": \"Update voice clone 23 05\",\n.styx_prs/pr_19.json:5:  \"state\": \"MERGED\",\n.styx_prs/pr_19.json:15:  \"headRefName\": \"update-voice-clone-23-05\",\n.styx_prs/pr_19.json:153:          \"message\": \"Merge branch 'staging' into update-voice-clone-23-05\",\n.styx_prs/pr_19.json:209:        \"path\": \"voice-cloning-job-handler/index.js\",\n.styx_prs/pr_25.json:3:  \"title\": \"Added code for cloning script\",\n.styx_prs/pr_25.json:5:  \"state\": \"MERGED\",\n.styx_prs/pr_25.json:41:          \"message\": \"Added code for cloning script\",\n.styx_prs/pr_25.json:65:        \"path\": \"voice-cloning-job-handler/index.js\",\n.styx_prs/pr_6.json:5:  \"state\": \"MERGED\",\n.styx_prs/pr_6.json:62:        \"state\": \"APPROVED\",\n.styx_prs/pr_6.json:78:        \"path\": \"voice-cloning-job-handler/index.js\",\n.styx_prs/pr_6.json:84:        \"path\": \"voice-cloning-job-handler/pm2-development.yml\",\n.styx_prs/pr_6.json:90:        \"path\": \"voice-cloning-job-handler/pm2-production.yml\",\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_9","type":"command_execution","command":"/bin/bash -lc \"sed -n '1,220p' .styx_prs/pr_27.json && sed -n '1,180p' .styx_prs/pr_26.json && sed -n '1,150p' .styx_prs/pr_25.json && git count-objects -v && git show-ref\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_9","type":"command_execution","command":"/bin/bash -lc \"sed -n '1,220p' .styx_prs/pr_27.json && sed -n '1,180p' .styx_prs/pr_26.json && sed -n '1,150p' .styx_prs/pr_25.json && git count-objects -v && git show-ref\"","aggregated_output":"{\n  \"number\": 27,\n  \"title\": \"updated model name\",\n  \"body\": \"\",\n  \"state\": \"MERGED\",\n  \"url\": \"https://github.com/potion/potion-voice/pull/27\",\n  \"createdAt\": \"2023-10-11T20:46:31Z\",\n  \"mergedAt\": \"2023-10-11T20:47:05Z\",\n  \"closedAt\": \"2023-10-11T20:47:05Z\",\n  \"additions\": 2,\n  \"deletions\": 2,\n  \"changedFiles\": 1,\n  \"isDraft\": false,\n  \"baseRefName\": \"staging\",\n  \"headRefName\": \"develop\",\n  \"author\": {\n    \"login\": \"author_7\"\n  },\n  \"mergedBy\": {\n    \"login\": \"author_7\"\n  },\n  \"mergeCommit\": {\n    \"oid\": \"7fdfc74c03cab06856eff2fac1ec470f40eb64ad\"\n  },\n  \"milestone\": null,\n  \"labels\": {\n    \"nodes\": []\n  },\n  \"assignees\": {\n    \"nodes\": []\n  },\n  \"requestedReviewers\": {\n    \"nodes\": [\n      {\n        \"login\": \"author_6\"\n      }\n    ]\n  },\n  \"commits\": {\n    \"totalCount\": 1,\n    \"nodes\": [\n      {\n        \"commit\": {\n          \"oid\": \"040f8565569ff7d324db918f17e5aabfb15ba4ca\",\n          \"message\": \"updated model name\",\n          \"author\": {\n            \"name\": \"author_unknown\",\n            \"email\": \"author_unknown\",\n            \"date\": \"2023-10-11T20:36:39Z\"\n          },\n          \"committer\": {\n            \"name\": \"author_unknown\",\n            \"email\": \"author_unknown\",\n            \"date\": \"2023-10-11T20:36:39Z\"\n          }\n        }\n      }\n    ]\n  },\n  \"reviews\": {\n    \"nodes\": []\n  },\n  \"comments\": {\n    \"nodes\": []\n  },\n  \"files\": {\n    \"nodes\": [\n      {\n        \"path\": \"voice-cloning-job-handler/index.js\",\n        \"additions\": 2,\n        \"deletions\": 2,\n        \"changeType\": \"MODIFIED\"\n      }\n    ]\n  }\n}{\n  \"number\": 26,\n  \"title\": \"Added changes for sr 48000\",\n  \"body\": \"\",\n  \"state\": \"MERGED\",\n  \"url\": \"https://github.com/potion/potion-voice/pull/26\",\n  \"createdAt\": \"2023-08-07T10:19:45Z\",\n  \"mergedAt\": \"2023-08-07T10:19:55Z\",\n  \"closedAt\": \"2023-08-07T10:19:55Z\",\n  \"additions\": 1,\n  \"deletions\": 1,\n  \"changedFiles\": 1,\n  \"isDraft\": false,\n  \"baseRefName\": \"develop\",\n  \"headRefName\": \"develop-07-08-updates\",\n  \"author\": {\n    \"login\": \"author_7\"\n  },\n  \"mergedBy\": {\n    \"login\": \"author_7\"\n  },\n  \"mergeCommit\": {\n    \"oid\": \"6defbb0bb874390f1b1b51b1e20355890c530493\"\n  },\n  \"milestone\": null,\n  \"labels\": {\n    \"nodes\": []\n  },\n  \"assignees\": {\n    \"nodes\": []\n  },\n  \"requestedReviewers\": {\n    \"nodes\": []\n  },\n  \"commits\": {\n    \"totalCount\": 1,\n    \"nodes\": [\n      {\n        \"commit\": {\n          \"oid\": \"ea4608475587cea4615a4980bc767708a186d57e\",\n          \"message\": \"Added changes for sr 48000\",\n          \"author\": {\n            \"name\": \"author_unknown\",\n            \"email\": \"author_unknown\",\n            \"date\": \"2023-08-07T10:17:46Z\"\n          },\n          \"committer\": {\n            \"name\": \"author_unknown\",\n            \"email\": \"author_unknown\",\n            \"date\": \"2023-08-07T10:17:58Z\"\n          }\n        }\n      }\n    ]\n  },\n  \"reviews\": {\n    \"nodes\": []\n  },\n  \"comments\": {\n    \"nodes\": []\n  },\n  \"files\": {\n    \"nodes\": [\n      {\n        \"path\": \"voice-cloning-job-handler/index.js\",\n        \"additions\": 1,\n        \"deletions\": 1,\n        \"changeType\": \"MODIFIED\"\n      }\n    ]\n  }\n}{\n  \"number\": 25,\n  \"title\": \"Added code for cloning script\",\n  \"body\": \"\",\n  \"state\": \"MERGED\",\n  \"url\": \"https://github.com/potion/potion-voice/pull/25\",\n  \"createdAt\": \"2023-08-07T08:21:11Z\",\n  \"mergedAt\": \"2023-08-07T08:21:18Z\",\n  \"closedAt\": \"2023-08-07T08:21:18Z\",\n  \"additions\": 2,\n  \"deletions\": 2,\n  \"changedFiles\": 1,\n  \"isDraft\": false,\n  \"baseRefName\": \"develop\",\n  \"headRefName\": \"develop-07-08-updates\",\n  \"author\": {\n    \"login\": \"author_7\"\n  },\n  \"mergedBy\": {\n    \"login\": \"author_7\"\n  },\n  \"mergeCommit\": {\n    \"oid\": \"1c59012333173eba76cec6325608024beb1a669a\"\n  },\n  \"milestone\": null,\n  \"labels\": {\n    \"nodes\": []\n  },\n  \"assignees\": {\n    \"nodes\": []\n  },\n  \"requestedReviewers\": {\n    \"nodes\": []\n  },\n  \"commits\": {\n    \"totalCount\": 1,\n    \"nodes\": [\n      {\n        \"commit\": {\n          \"oid\": \"a3afe89e0e4289c33044e3b9401a5d0bda2be401\",\n          \"message\": \"Added code for cloning script\",\n          \"author\": {\n            \"name\": \"author_unknown\",\n            \"email\": \"author_unknown\",\n            \"date\": \"2023-08-07T08:20:41Z\"\n          },\n          \"committer\": {\n            \"name\": \"author_unknown\",\n            \"email\": \"author_unknown\",\n            \"date\": \"2023-08-07T08:20:41Z\"\n          }\n        }\n      }\n    ]\n  },\n  \"reviews\": {\n    \"nodes\": []\n  },\n  \"comments\": {\n    \"nodes\": []\n  },\n  \"files\": {\n    \"nodes\": [\n      {\n        \"path\": \"voice-cloning-job-handler/index.js\",\n        \"additions\": 2,\n        \"deletions\": 2,\n        \"changeType\": \"MODIFIED\"\n      }\n    ]\n  }\n}count: 114\nsize: 85508\nin-pack: 0\npacks: 0\nsize-pack: 0\nprune-packable: 0\ngarbage: 0\nsize-garbage: 0\n15b35658fa4bc1d416aa14c44d8003cf101b93e9 refs/heads/master\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_10","type":"command_execution","command":"/bin/bash -lc \"git remote -v && git fsck --full --no-reflogs --unreachable 2>/dev/null | sed -n '1,160p' && sed -n '1,120p' .git/config && find . -maxdepth 3 -type f \\\\( -name '*test*' -o -name '*spec*' \\\\) -not -path './node_modules/*' -print\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_10","type":"command_execution","command":"/bin/bash -lc \"git remote -v && git fsck --full --no-reflogs --unreachable 2>/dev/null | sed -n '1,160p' && sed -n '1,120p' .git/config && find . -maxdepth 3 -type f \\\\( -name '*test*' -o -name '*spec*' \\\\) -not -path './node_modules/*' -print\"","aggregated_output":"[core]\n\trepositoryformatversion = 0\n\tfilemode = true\n\tbare = false\n\tlogallrefupdates = true\n[user]\n\temail = dev@agent\n\tname = Dev\n./voice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_11","type":"command_execution","command":"/bin/bash -lc \"git ls-remote https://github.com/potion/potion-voice.git | sed -n '1,120p'\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_11","type":"command_execution","command":"/bin/bash -lc \"git ls-remote https://github.com/potion/potion-voice.git | sed -n '1,120p'\"","aggregated_output":"fatal: could not read Username for 'https://github.com': No such device or address\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_12","type":"command_execution","command":"/bin/bash -lc \"sed -n '1,260p' README.md && sed -n '1,320p' voice-cloning/clone_voice.py && sed -n '1,280p' voice-cloning/train_config.py && sed -n '1,260p' voice-cloning/prepare_datasets.py\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_12","type":"command_execution","command":"/bin/bash -lc \"sed -n '1,260p' README.md && sed -n '1,320p' voice-cloning/clone_voice.py && sed -n '1,280p' voice-cloning/train_config.py && sed -n '1,260p' voice-cloning/prepare_datasets.py\"","aggregated_output":"# potion-voice\nPotion's Text-to-Speech Service (multi-speaker baseline model training, voice cloning and speech synthesising)\n#!/usr/bin/env python3\n# -*- coding: utf-8 -*-\n\nimport sys\nimport os\nimport argparse\n\nimport torch\n\n# load coqui-ai/trainer libraries\nfrom trainer import Trainer, TrainerArgs\n\n# load coqui-ai/TTS libraries\nfrom TTS.tts.configs.shared_configs import BaseDatasetConfig\nfrom TTS.tts.configs.vits_config import VitsConfig\nfrom TTS.tts.datasets import load_tts_samples\nfrom TTS.tts.models.vits import Vits, VitsArgs, VitsAudioConfig\n\n\n#\n# parse command line arguments\n#\ndef parse_cmdline_args():\n    parser = argparse.ArgumentParser(\n        description = \"Code to clone a voice from a given set of voice samples and a multi-speaker baseline model\")\n    parser.add_argument(\"--baseline_model_path\",        type = str, required = True,\n        help = \"Path to multi-speaker baseline model (VITS model)\")\n    parser.add_argument(\"--speaker_dataset_path\",       type = str, required = True,\n        help = \"Path to voice cloning dataset\")\n    parser.add_argument(\"--speaker_embeddings_path\",    type = str, required = True,\n        help = \"Path to speaker's embeddings file\")\n    parser.add_argument(\"--output_path\",                type = str, default = \"results/cloned-voices\",\n        help = \"Path to store trained / generated assets\")\n    parser.add_argument(\"--batch_size\",                 type = int, default = 96,   # 96 is suitable for AWS g5 instances\n        help = \"Batch size for training run\")\n    parser.add_argument(\"--max_epochs\",                 type = int, default = 200,   # 200 for batch_size 96 (with the 22.050 sampling rate multi-speaker model\n        help = \"Maximum number of epochs for training run\")                          # 2000 for batch_size 64 and 1500 for batch_size 96 (with the initial 16k sampling rate VCTK 0.80 model)\n    parser.add_argument(\"--use_cpu\",                    default = False, action = \"store_true\",   # untested!!!\n        help = \"Signal that CPU should be used even if a CUDA-device is available\")\n    parser.add_argument(\"--output_format\",              type = str, choices = [\"txt\", \"json\"], default = \"txt\",\n        help = \"Output format; available choices include 'txt' for human readible text and 'json' for JSON formatting\")\n\n    return parser.parse_args()\n\n\n#\n# main training method (voice cloning)\n#\ndef main(args):\n    if args.output_format == \"txt\":\n        print(\"Commencing training of a new multi-speaker potion-voice baseline model:\")\n        print(\"\")\n        print(\"  + Baseline multi-speaker model path: {}\" . format(args.baseline_model_path))\n        print(\"  + Voice training dataset path      : {}\" . format(args.speaker_dataset_path))\n        print(\"  + Speaker embeddings path          : {}\" . format(args.speaker_embeddings_path))\n        print(\"  + Output path                      : {}\" . format(args.output_path))\n        print(\"  + Batch size                       : {}\" . format(args.batch_size))\n        print(\"  + Training runs (max epochs)       : {}\" . format(args.max_epochs))\n        print(\"\")\n\n    # determine whether CUDA support is available and set device parameters accordingly\n    use_cuda = torch.cuda.is_available()\n    if args.output_format == \"txt\":\n        print(\"  + CUDA availability                : {}\" . format(use_cuda))\n\n    if args.use_cpu:\n        device = \"cpu\"\n        device_torch = False\n    elif use_cuda:\n        device = \"cuda\"\n        device_torch = torch.device(\"cuda\")\n    else:\n        device = \"cpu\"\n        device_torch = False\n    if args.output_format == \"txt\":\n        print(\"  + Compute device used              : {}\" . format(device))\n        print(\"\")\n\n    # define training data set\n    dataset_config = BaseDatasetConfig(formatter = \"vctk_old\", language = \"en-us\", path = args.speaker_dataset_path)\n\n    # set VITS training parameters\n    audio_config = VitsAudioConfig(\n        sample_rate         = 22050,\n        win_length          = 1024,\n        hop_length          = 256,\n        num_mels            = 80,\n        mel_fmin            = 0,\n        mel_fmax            = None,\n    )\n\n    vitsArgs = VitsArgs(\n        use_speaker_embedding   = False,\n        use_d_vector_file       = True,\n        d_vector_file           = [args.speaker_embeddings_path],\n        d_vector_dim            = 512,\n        num_layers_text_encoder = 10\n    )\n\n    config = VitsConfig(\n        model_args              = vitsArgs,\n        audio                   = audio_config,\n        run_name                = \"vits_potion_clone\",\n        use_speaker_embedding   = False,\n        use_d_vector_file       = True,\n        d_vector_file           = [args.speaker_embeddings_path],\n        d_vector_dim            = 512,\n        batch_size              = args.batch_size,\n        eval_batch_size         = 8,\n        batch_group_size        = 0,   # changing this to 5 (VITS training default) slows training down, but doesn't have any positive training effects\n        num_loader_workers      = 4,\n        num_eval_loader_workers = 4,\n        run_eval                = True,\n        eval_split_size         = 2,   # fix size of eval dataset (default 1% approach requires at least 100 voice samples!)\n        test_delay_epochs       = -1,\n        epochs                  = args.max_epochs,\n        text_cleaner            = \"english_cleaners\",\n        use_phonemes            = False,\n        phoneme_language        = \"en-us\",\n        phoneme_cache_path      = os.path.join(args.output_path, \"phoneme_cache\"),\n        compute_input_seq_cache = True,\n        print_step              = 50,\n        print_eval              = True,\n        mixed_precision         = True,\n        max_text_len            = 325,\n        output_path             = args.output_path,\n\n        save_checkpoints        = True,\n        save_step               = 200,\n\n        datasets                = [dataset_config],\n        cudnn_benchmark         = False,\n        #characters              = {\n        #    \"pad\": \"_\",\n        #    \"eos\": \"&\",\n        #    \"bos\": \"*\",\n        #    \"characters\": \"!¡'(),-.:;¿?abcdefghijklmnopqrstuvwxyz «°±µ»$%&‘’‚“`”„\",\n        #    \"punctuations\": \"!¡'(),-.:;¿? \",\n        #    \"phonemes\": None,\n        #    \"unique\": True\n        #},\n        test_sentences = [\n            [\"It took me quite a long time to develop a voice, and now that I have it I'm not going to be silent.\"],\n            [\"Be a voice, not an echo.\"],\n            [\"I'm sorry Dave. I'm afraid I can't do that.\"],\n            [\"This cake is great. It's so delicious and moist.\"],\n            [\"Prior to November 22, 1963.\"],\n            [\"Hey! Sandra.\"],\n            [\"Hey! Andrew.\"],\n            [\"Hey, Michelle.\"],\n            [\"Hey! George.\"],\n            [\"Hey there, Rachel.\"]\n        ]\n    )\n\n    # load training samples\n    train_samples, eval_samples = load_tts_samples(config.datasets, eval_split = True, eval_split_max_size = config.eval_split_max_size, eval_split_size = config.eval_split_size)\n\n    # init VITS model\n    model = Vits.init_from_config(config)\n\n    # init voice cloning\n    trainer = Trainer(\n        TrainerArgs(restore_path = args.baseline_model_path, use_ddp = False),\n        config,\n        args.output_path,\n        model = model,\n        train_samples = train_samples,\n        eval_samples = eval_samples\n    )\n\n    # trigger voice cloning (aka single speaker training)\n    try:\n        trainer.fit()\n    except (KeyboardInterrupt, SystemExit):\n        print(\"Training stopped manually (via keyboard interrupt)! Bye.\")\n        exit(0)\n\n    # determine required adjustment for speech synthesizing (i.e., the scaling factor for the duration predictor)\n    # take the duration of the test sentence and calculate the difference to corresponding reference samples\n    # set config.model_args[\"length_scale\"] accordingly and save the updated config asset\n\n    # exit gracefully\n    if args.output_format == \"txt\":\n        print(\"\")\n        print(\"Completed voice cloning. The resulting model(s) can be found at:\")\n        print(\"  --> {}\" . format(args.output_path))\n        print(\"\")\n        print(\"Done; bye.\")\n        print(\"\")\n\n\nif __name__ == \"__main__\":\n    # parse command line arguments\n    args = parse_cmdline_args()\n\n    # clear command line arguments to avoid triggering argparse features part of Trainer / coqpit imports\n    #    Traceback (most recent call last):\n    #      File \"train_multispeaker_baseline_model.py\", line 208, in <module>\n    #        main(args)\n    #      File \"train_multispeaker_baseline_model.py\", line 177, in main\n    #        trainer = Trainer(\n    #      File \"/home/ubuntu/dev/potion-voice_venv/lib/python3.8/site-packages/trainer/trainer.py\", line 360, in __init__\n    #        config, new_fields = self.init_training(args, coqpit_overrides, config)\n    #      File \"/home/ubuntu/dev/potion-voice_venv/lib/python3.8/site-packages/trainer/trainer.py\", line 594, in init_training\n    #        config.parse_known_args(coqpit_overrides, relaxed_parser=True)\n    #      File \"/home/ubuntu/dev/potion-voice_venv/lib/python3.8/site-packages/coqpit/coqpit.py\", line 843, in parse_known_args\n    #        parser = self.init_argparse(arg_prefix=arg_prefix, relaxed_parser=relaxed_parser)\n    #      File \"/home/ubuntu/dev/potion-voice_venv/lib/python3.8/site-packages/coqpit/coqpit.py\", line 881, in init_argparse\n    #        _init_argparse(\n    #      File \"/home/ubuntu/dev/potion-voice_venv/lib/python3.8/site-packages/coqpit/coqpit.py\", line 529, in _init_argparse\n    #        parser = _init_argparse(\n    #      File \"/home/ubuntu/dev/potion-voice_venv/lib/python3.8/site-packages/coqpit/coqpit.py\", line 550, in _init_argparse\n    #        return default.init_argparse(\n    #    AttributeError: 'str' object has no attribute 'init_argparse'\n    sys.argv = [sys.argv[0]]\n\n    # ensure the output path exists\n    os.makedirs(args.output_path, exist_ok = True)\n\n    main(args)\n\n\n    ### USAGE:\n    ### $ python3 TTS/TTS/bin/resample.py --input_dir voice_dataset_path/person_82/wav48/1 --output_sr 16000\n    ### $ python3 clone_voice.py [with argument]\n#!/usr/bin/env python3\n# -*- coding: utf-8 -*-\n\n####################################################################################\n###                                                                              ###\n### Configuration File for Multi-Speaker Baseline Model Training & Voice Cloning ###\n###                                                                              ###\n####################################################################################\n\nimport os\n\n# Data Sets\n\n## VCTK (v0.92), sampling rate: 48000\n\nVCTK_PRESET              = \"VCTK\"\nVCTK_DATASET_NAME        = \"VCTK\"\nVCTK_DATASET_FORMATTER   = \"vctk\"\nVCTK_DATASET_FILE_FORMAT = \"flac\"\nVCTK_DATASET_PATH        = \"results/datasets/sr22050/VCTK-Corpus-0.92\"\nVCTK_SPK_EMB_PATH        = os.path.join(VCTK_DATASET_PATH, \"speakers.pth\")\n\n## LibriTTS TC360, sampling rate: 24000\n\nLIBRITTS_TC360_PRESET              = \"LibriTTS_tc360\"\nLIBRITTS_TC360_DATASET_NAME        = \"LibtriTTS-tc360\"\nLIBRITTS_TC360_DATASET_FORMATTER   = \"libri_tts\"\nLIBRITTS_TC360_DATASET_FILE_FORMAT = \"wav\"\nLIBRITTS_TC360_DATASET_PATH        = \"results/datasets/sr22050/LibriTTS/train-clean-360\"\nLIBRITTS_TC360_SPK_EMB_PATH        = os.path.join(LIBRITTS_TC360_DATASET_PATH, \"speakers.pth\")\n\n## DAPS\n\n## Potion salutation recordings\n\nPOTION_SALUT_PRESET              = \"POTION_Salut\"\nPOTION_SALUT_DATASET_NAME        = \"potion-Salut\"\nPOTION_SALUT_DATASET_FORMATTER   = \"vctk_old\"\nPOTION_SALUT_DATASET_FILE_FORMAT = \"wav\"\nPOTION_SALUT_DATASET_PATH        = \"results/datasets/sr22050/potion-salut-corpus-4ac24ce8-8405-4b70-8b48-018d4492f6e9\"\nPOTION_SALUT_SPK_EMB_PATH        = os.path.join(POTION_SALUT_DATASET_PATH, \"speakers.pth\")\n\n## Potion voice cloning recordings\n\nPOTION_SALUT_PRESET              = \"potion_voice_cloning\"\nPOTION_SALUT_DATASET_NAME        = \"\"\nPOTION_SALUT_DATASET_FORMATTER   = \"vctk_old\"\nPOTION_SALUT_DATASET_FILE_FORMAT = \"wav\"\n#!/usr/bin/env python3\n# -*- coding: utf-8 -*-\n\nimport sys\nimport os\nimport argparse\n\n# load coqui-ai/TTS libraries\nfrom TTS.bin.resample import resample_files\nfrom TTS.bin.compute_embeddings import compute_embeddings\n\nimport train_config as tc\n\n\n#\n# parse command line arguments\n#\ndef parse_cmdline_args():\n    parser = argparse.ArgumentParser(\n        description = \"Code to prepare voice dataset for multi-speaker baseline model training (i.e., adjust sampling rate and compute speaker embeddings).\")\n    parser.add_argument(\"--dataset_preset\",           type = str, choices = (\"VCTK\", \"LibriTTS_tc360\", \"DAPS\", \"POTION_Salut\", \"potion_voice_cloning\"), required = True,\n        help = \"Path the voice dataset archive (.zip, .tar.gz, .tgz, .tar.bz2, and .tbz are supported)\")\n    parser.add_argument(\"--dataset_archive_path\",     type = str, required = True,\n        help = \"Path the voice dataset archive (.zip, .tar.gz, .tgz, .tar.bz2, and .tbz are supported)\")\n    parser.add_argument(\"--output_path\",              type = str, default = \"results/datasets\",\n        help = \"Path to store augmented dataset\")\n    parser.add_argument(\"--sampling_rate\",            type = int, default = 22050, choices = (16000, 22050, 32000, 48000),   # 32k & 48k are untested\n        help = \"Sampling rate for training run\")\n\n    return parser.parse_args()\n\n\n#\n# utility functuion to extract archives (zip, tar, tgz, ...)\n#   - returns first entry in archive (typically the main directory name contained in the archive)\n#\ndef extract_archive(archive_path, dest_path):\n\n    from zipfile import ZipFile\n    import tarfile\n\n    if archive_path.endswith('.zip'):\n        opener, getnames, mode = ZipFile, ZipFile.namelist, 'r'\n\n    elif (archive_path.endswith('.tar.gz')) or (archive_path.endswith('.tgz')):\n        opener, getnames, mode = tarfile.open, tarfile.TarFile.getnames, 'r:gz'\n\n    elif (archive_path.endswith('.tar.bz2')) or (archive_path.endswith('.tbz')):\n        opener, getnames, mode = tarfile.open, tarfile.TarFile.getnames, 'r:bz2'\n\n    else:\n        print(\"Extracting archive \" + archive_path + \" is not supported.\")\n        return\n\n    # extract archive\n    with opener(archive_path, mode) as archive:\n        archive_dir = archive.getnames()[0]\n        archive.extractall(path = dest_path)\n\n    return archive_dir\n\n\n#\n# main training method (VITS multi-speaker model)\n#\ndef main(args):\n    print(\"Commencing preparation of dataset for multi-speaker baseline model training:\")\n    print(\"\")\n    print(\"  + Dataset preset: {}\" . format(args.dataset_preset))\n    print(\"  + Dataset       : {}\" . format(args.dataset_archive_path))\n    print(\"  + Output path   : {}\" . format(args.output_path))\n    print(\"  + Sampling rate : {}\" . format(args.sampling_rate))\n    print(\"\")\n\n    # set parameters according to dataset preset\n    if args.dataset_preset  == \"VCTK\":\n        DATASET_NAME = tc.VCTK_DATASET_NAME\n        DATASET_FORMATTER = tc.VCTK_DATASET_FORMATTER\n        DATASET_FILE_FORMAT = tc.VCTK_DATASET_FILE_FORMAT\n        NO_EVAL = False\n    elif args.dataset_preset == \"LibriTTS_tc360\":\n        DATASET_NAME = tc.LIBRITTS_TC360_DATASET_NAME\n        DATASET_FORMATTER = tc.LIBRITTS_TC360_DATASET_FORMATTER\n        DATASET_FILE_FORMAT = tc.LIBRITTS_TC360_DATASET_FILE_FORMAT\n        NO_EVAL = False\n    elif args.dataset_preset == \"POTION_Salut\":\n        DATASET_NAME = tc.POTION_SALUT_DATASET_NAME\n        DATASET_FORMATTER = tc.POTION_SALUT_DATASET_FORMATTER\n        DATASET_FILE_FORMAT = tc.POTION_SALUT_DATASET_FILE_FORMAT\n        NO_EVAL = False\n    elif args.dataset_preset == \"potion_voice_cloning\":\n        DATASET_NAME = tc.POTION_SALUT_DATASET_NAME\n        DATASET_FORMATTER = tc.POTION_SALUT_DATASET_FORMATTER\n        DATASET_FILE_FORMAT = tc.POTION_SALUT_DATASET_FILE_FORMAT\n        NO_EVAL = True\n\n    # define sampling rate for computing speaker embeddings\n    SPK_EMB_SAMPLING_RATE = 16000\n\n    # define the number of threads used during audio resampling\n    NUM_RESAMPLE_THREADS = 10\n\n    # extract dataset archive\n    print(f\">>> Extracting archive ...\")\n    dataset_root = extract_archive(args.dataset_archive_path, os.path.join(args.output_path, \"sr\" + str(args.sampling_rate)))\n\n    # set dataset path (there should only be ONE directory in the extracted archive location)\n    dataset_path = os.path.join(args.output_path, \"sr\" + str(args.sampling_rate), dataset_root)\n\n    # ensure the dataset_path exists\n    os.makedirs(dataset_path, exist_ok = True)\n\n    # resample dataset for speaker embeddings computation\n    print(f\">>> Resampling audio files to 16000Hz ...\")\n    resample_files(dataset_path, 16000, file_ext = DATASET_FILE_FORMAT, n_jobs = NUM_RESAMPLE_THREADS)\n\n    # compute speaker embeddings\n    SPEAKER_ENCODER_CHECKPOINT_PATH = \"assets/speaker_encoder_model/model_se.pth.tar\"\n    SPEAKER_ENCODER_CONFIG_PATH = \"assets/speaker_encoder_model/config_se.json\"\n\n    # init list speaker embeddings/d-vectors to be used during the training\n    d_vector_files = []\n\n    # check if the speakers embeddings are already computated, if not compute them\n    embeddings_file = os.path.join(dataset_path, \"speakers.pth\")\n\n    if not os.path.isfile(embeddings_file):\n        print(f\">>> Computing speaker embeddings ...\")\n        compute_embeddings(\n            SPEAKER_ENCODER_CHECKPOINT_PATH,\n            SPEAKER_ENCODER_CONFIG_PATH,\n            embeddings_file,\n            old_spakers_file    = None,\n            config_dataset_path = None,\n            formatter_name      = DATASET_FORMATTER,\n            dataset_name        = DATASET_NAME,\n            dataset_path        = dataset_path,\n            meta_file_train     = \"\",\n            meta_file_val       = \"\",\n            disable_cuda        = False,\n            no_eval             = NO_EVAL\n        )\n\n    d_vector_files.append(embeddings_file)\n\n    # if targetted sampling rate is not the same as that used for computing speaker embeddings, replace and resample audio files\n    if not args.sampling_rate == SPK_EMB_SAMPLING_RATE:\n        print(f\">>> Extracting original archive again (overwritting previously resampled files)...\")\n        extract_archive(args.dataset_archive_path, os.path.join(args.output_path, \"sr\" + str(args.sampling_rate)))\n        print(f\">>> Resampling audio files to {args.sampling_rate}Hz ...\")\n        resample_files(dataset_path, args.sampling_rate, file_ext = DATASET_FILE_FORMAT, n_jobs = NUM_RESAMPLE_THREADS)\n\n    # exit gracefully\n    print(\"\")\n    print(\"Completed preparing voice dataset for multi-speaker baseline model training; generated asset locations are as follows:\")\n    print(\"  --> {}\" . format(dataset_path))\n    print(\"  --> {}\" . format(embeddings_file))\n    print(\"\")\n    print(\"Done; bye.\")\n    print(\"\")\n\n\nif __name__ == \"__main__\":\n    # parse command line arguments\n    args = parse_cmdline_args()\n\n    # clear command line arguments to avoid triggering argparse features part of Trainer / coqpit imports\n    #    Traceback (most recent call last):\n    #      File \"train_multispeaker_baseline_model.py\", line 208, in <module>\n    #        main(args)\n    #      File \"train_multispeaker_baseline_model.py\", line 177, in main\n    #        trainer = Trainer(\n    #      File \"/home/ubuntu/dev/potion-voice_venv/lib/python3.8/site-packages/trainer/trainer.py\", line 360, in __init__\n    #        config, new_fields = self.init_training(args, coqpit_overrides, config)\n    #      File \"/home/ubuntu/dev/potion-voice_venv/lib/python3.8/site-packages/trainer/trainer.py\", line 594, in init_training\n    #        config.parse_known_args(coqpit_overrides, relaxed_parser=True)\n    #      File \"/home/ubuntu/dev/potion-voice_venv/lib/python3.8/site-packages/coqpit/coqpit.py\", line 843, in parse_known_args\n    #        parser = self.init_argparse(arg_prefix=arg_prefix, relaxed_parser=relaxed_parser)\n    #      File \"/home/ubuntu/dev/potion-voice_venv/lib/python3.8/site-packages/coqpit/coqpit.py\", line 881, in init_argparse\n    #        _init_argparse(\n    #      File \"/home/ubuntu/dev/potion-voice_venv/lib/python3.8/site-packages/coqpit/coqpit.py\", line 529, in _init_argparse\n    #        parser = _init_argparse(\n    #      File \"/home/ubuntu/dev/potion-voice_venv/lib/python3.8/site-packages/coqpit/coqpit.py\", line 550, in _init_argparse\n    #        return default.init_argparse(\n    #    AttributeError: 'str' object has no attribute 'init_argparse'\n    sys.argv = [sys.argv[0]]\n\n    # ensure the output path exists\n    os.makedirs(args.output_path, exist_ok = True)\n\n    main(args)\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_13","type":"command_execution","command":"/bin/bash -lc \"git show --stat --oneline --decorate HEAD && git ls-tree -r --name-only HEAD | sed -n '1,260p' && git log -1 --format=fuller\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_13","type":"command_execution","command":"/bin/bash -lc \"git show --stat --oneline --decorate HEAD && git ls-tree -r --name-only HEAD | sed -n '1,260p' && git log -1 --format=fuller\"","aggregated_output":"15b3565 (HEAD -> master) initial\n .claude/settings.json                              |       1 +\n .gitignore                                         |     165 +\n .styx_prs/pr_1.json                                |     150 +\n .styx_prs/pr_10.json                               |     101 +\n .styx_prs/pr_11.json                               |     583 +\n .styx_prs/pr_12.json                               |     129 +\n .styx_prs/pr_13.json                               |      76 +\n .styx_prs/pr_14.json                               |     107 +\n .styx_prs/pr_15.json                               |     417 +\n .styx_prs/pr_16.json                               |     751 +\n .styx_prs/pr_17.json                               |     263 +\n .styx_prs/pr_18.json                               |     661 +\n .styx_prs/pr_19.json                               |     234 +\n .styx_prs/pr_2.json                                |     100 +\n .styx_prs/pr_20.json                               |    2052 +\n .styx_prs/pr_21.json                               |      94 +\n .styx_prs/pr_22.json                               |     130 +\n .styx_prs/pr_23.json                               |     948 +\n .styx_prs/pr_24.json                               |     298 +\n .styx_prs/pr_25.json                               |      72 +\n .styx_prs/pr_26.json                               |      72 +\n .styx_prs/pr_27.json                               |      76 +\n .styx_prs/pr_28.json                               |     508 +\n .styx_prs/pr_3.json                                |      78 +\n .styx_prs/pr_4.json                                |     930 +\n .styx_prs/pr_5.json                                |      85 +\n .styx_prs/pr_6.json                                |      97 +\n .styx_prs/pr_7.json                                |      91 +\n .styx_prs/pr_8.json                                |     193 +\n .styx_prs/pr_9.json                                |     119 +\n README.md                                          |       2 +\n app/services/s3/index.js                           |      61 +\n app/services/s3/s3_service.js                      |       0\n app/services/sqs/index.js                          |       6 +\n app/services/sqs/sqs_service.js                    |      83 +\n app/services/utils/bugsnag.js                      |      18 +\n app/services/utils/deleteFile.js                   |       9 +\n app/services/utils/index.js                        |      19 +\n app/services/utils/logService.js                   |      14 +\n app/services/voice_cloning/index.js                |       4 +\n app/services/voice_cloning/voice_cloning_model.js  |      44 +\n .../voice_cloning/voice_cloning_service.js         |     140 +\n package.json                                       |      21 +\n requirements.dev.local.txt                         |      12 +\n requirements.dev.txt                               |      12 +\n requirements.prod.cpu.txt                          |      10 +\n requirements.prod.gpu.txt                          |      10 +\n requirements.txt                                   |      11 +\n voice-cloning-job-handler/index.js                 |     332 +\n voice-cloning-job-handler/package.json             |      24 +\n voice-cloning-job-handler/pm2-development.yml      |      18 +\n voice-cloning-job-handler/pm2-production.yml       |      18 +\n .../user_audio_profile/index.js                    |       4 +\n .../user_audio_profile/user_audio_profile_model.js |      40 +\n .../user_audio_profile_service.js                  |     140 +\n voice-cloning-job-handler/voice_cloning/index.js   |       4 +\n .../voice_cloning/voice_cloning_model.js           |      44 +\n .../voice_cloning/voice_cloning_service.js         |     141 +\n .../assets/speaker_encoder_model/config_se.json    |     121 +\n .../assets/speaker_encoder_model/model_se.pth.tar  |     Bin 0 -> 44610930 bytes\n voice-cloning/assets/wgnd_2_0_sources.csv.gz       |     Bin 0 -> 21825148 bytes\n .../assets/wgnd_2_0_unique_names_only.csv.gz       |     Bin 0 -> 11967143 bytes\n ...2_0_unique_names_only_limited_special_chars.csv | 3270538 +++++++++++++++++\n voice-cloning/clone_voice.py                       |     226 +\n .../potion-voice-cloning_Installation_Guide.md     |     764 +\n voice-cloning/minimize_cloned_voice_model.py       |     120 +\n voice-cloning/prepare_datasets.py                  |     191 +\n voice-cloning/score_cloned_voice.py                |     179 +\n voice-cloning/score_models.py                      |     219 +\n voice-cloning/score_salutation.py                  |     161 +\n voice-cloning/synthesize_speech.py                 |     144 +\n voice-cloning/train_config.py                      |      48 +\n voice-cloning/train_multispeaker_baseline_model.py |     238 +\n voice-cloning/utils/matching_utils.py              |      22 +\n voice-cloning/utils/scoring_utils.py               |      37 +\n voice-cloning/utils/synthesize_utils.py            |      77 +\n voice-cloning/utils/transcription_utils.py         |      94 +\n voice-synthsizer-job-handler/index.js              |     267 +\n voice-synthsizer-job-handler/job/index.js          |       4 +\n voice-synthsizer-job-handler/job/job_model.js      |      54 +\n voice-synthsizer-job-handler/job/job_service.js    |     136 +\n voice-synthsizer-job-handler/package.json          |      23 +\n voice-synthsizer-job-handler/pm2-development.yml   |      13 +\n voice-synthsizer-job-handler/pm2-production.yml    |      14 +\n voice-synthsizer-job-handler/recording/index.js    |       4 +\n .../recording/recording_model.js                   |     406 +\n .../recording_salutation/index.js                  |       3 +\n .../recording_salutation_model.js                  |      76 +\n voice-synthsizer-job-handler/salutation/index.js   |       4 +\n .../salutation/salutation_model.js                 |      44 +\n .../salutation/salutation_service.js               |      87 +\n .../user_audio_profile/index.js                    |       4 +\n .../user_audio_profile/user_audio_profile_model.js |      40 +\n .../user_audio_profile_service.js                  |     142 +\n 94 files changed, 3285322 insertions(+)\n.claude/settings.json\n.gitignore\n.styx_prs/pr_1.json\n.styx_prs/pr_10.json\n.styx_prs/pr_11.json\n.styx_prs/pr_12.json\n.styx_prs/pr_13.json\n.styx_prs/pr_14.json\n.styx_prs/pr_15.json\n.styx_prs/pr_16.json\n.styx_prs/pr_17.json\n.styx_prs/pr_18.json\n.styx_prs/pr_19.json\n.styx_prs/pr_2.json\n.styx_prs/pr_20.json\n.styx_prs/pr_21.json\n.styx_prs/pr_22.json\n.styx_prs/pr_23.json\n.styx_prs/pr_24.json\n.styx_prs/pr_25.json\n.styx_prs/pr_26.json\n.styx_prs/pr_27.json\n.styx_prs/pr_28.json\n.styx_prs/pr_3.json\n.styx_prs/pr_4.json\n.styx_prs/pr_5.json\n.styx_prs/pr_6.json\n.styx_prs/pr_7.json\n.styx_prs/pr_8.json\n.styx_prs/pr_9.json\nREADME.md\napp/services/s3/index.js\napp/services/s3/s3_service.js\napp/services/sqs/index.js\napp/services/sqs/sqs_service.js\napp/services/utils/bugsnag.js\napp/services/utils/deleteFile.js\napp/services/utils/index.js\napp/services/utils/logService.js\napp/services/voice_cloning/index.js\napp/services/voice_cloning/voice_cloning_model.js\napp/services/voice_cloning/voice_cloning_service.js\npackage.json\nrequirements.dev.local.txt\nrequirements.dev.txt\nrequirements.prod.cpu.txt\nrequirements.prod.gpu.txt\nrequirements.txt\nvoice-cloning-job-handler/index.js\nvoice-cloning-job-handler/package.json\nvoice-cloning-job-handler/pm2-development.yml\nvoice-cloning-job-handler/pm2-production.yml\nvoice-cloning-job-handler/user_audio_profile/index.js\nvoice-cloning-job-handler/user_audio_profile/user_audio_profile_model.js\nvoice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\nvoice-cloning-job-handler/voice_cloning/index.js\nvoice-cloning-job-handler/voice_cloning/voice_cloning_model.js\nvoice-cloning-job-handler/voice_cloning/voice_cloning_service.js\nvoice-cloning/assets/speaker_encoder_model/config_se.json\nvoice-cloning/assets/speaker_encoder_model/model_se.pth.tar\nvoice-cloning/assets/wgnd_2_0_sources.csv.gz\nvoice-cloning/assets/wgnd_2_0_unique_names_only.csv.gz\nvoice-cloning/assets/wgnd_2_0_unique_names_only_limited_special_chars.csv\nvoice-cloning/clone_voice.py\nvoice-cloning/docs/potion-voice-cloning_Installation_Guide.md\nvoice-cloning/minimize_cloned_voice_model.py\nvoice-cloning/prepare_datasets.py\nvoice-cloning/score_cloned_voice.py\nvoice-cloning/score_models.py\nvoice-cloning/score_salutation.py\nvoice-cloning/synthesize_speech.py\nvoice-cloning/train_config.py\nvoice-cloning/train_multispeaker_baseline_model.py\nvoice-cloning/utils/matching_utils.py\nvoice-cloning/utils/scoring_utils.py\nvoice-cloning/utils/synthesize_utils.py\nvoice-cloning/utils/transcription_utils.py\nvoice-synthsizer-job-handler/index.js\nvoice-synthsizer-job-handler/job/index.js\nvoice-synthsizer-job-handler/job/job_model.js\nvoice-synthsizer-job-handler/job/job_service.js\nvoice-synthsizer-job-handler/package.json\nvoice-synthsizer-job-handler/pm2-development.yml\nvoice-synthsizer-job-handler/pm2-production.yml\nvoice-synthsizer-job-handler/recording/index.js\nvoice-synthsizer-job-handler/recording/recording_model.js\nvoice-synthsizer-job-handler/recording_salutation/index.js\nvoice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\nvoice-synthsizer-job-handler/salutation/index.js\nvoice-synthsizer-job-handler/salutation/salutation_model.js\nvoice-synthsizer-job-handler/salutation/salutation_service.js\nvoice-synthsizer-job-handler/user_audio_profile/index.js\nvoice-synthsizer-job-handler/user_audio_profile/user_audio_profile_model.js\nvoice-synthsizer-job-handler/user_audio_profile/user_audio_profile_service.js\ncommit 15b35658fa4bc1d416aa14c44d8003cf101b93e9\nAuthor:     Dev <dev@agent>\nAuthorDate: Tue Sep 22 00:20:03 2026 +0000\nCommit:     Dev <dev@agent>\nCommitDate: Tue Sep 22 00:20:03 2026 +0000\n\n    initial\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_14","type":"command_execution","command":"/bin/bash -lc \"sed -n '1,220p' .gitignore && sed -n '1,120p' .claude/settings.json && for f in .styx_prs/pr_*.json; do jq -r '[.number,.createdAt,.title] | @tsv' \\\"\"'$f\"; done | sort -k2'","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_14","type":"command_execution","command":"/bin/bash -lc \"sed -n '1,220p' .gitignore && sed -n '1,120p' .claude/settings.json && for f in .styx_prs/pr_*.json; do jq -r '[.number,.createdAt,.title] | @tsv' \\\"\"'$f\"; done | sort -k2'","aggregated_output":"1\t2022-04-21T13:53:32Z\tInitial commit\n2\t2022-04-21T14:49:50Z\tInitial commit\n3\t2022-04-21T14:56:26Z\tFurther coquai/TTS v0.6.2 compatibiliuty changes\n4\t2022-06-06T15:36:08Z\tFeature 4023 voice clone handler\n5\t2022-07-25T08:52:45Z\tAdded the filename fix\n6\t2022-11-29T13:22:59Z\tUpdated the cloud front access and code\n7\t2022-11-29T14:51:46Z\tAdded change in yml file\n8\t2022-12-16T15:03:54Z\tupdated mongoose version 6.x\n9\t2022-12-19T11:00:51Z\tupdate DB uri\n10\t2023-01-10T09:39:58Z\tupdated code for using original text\n11\t2023-02-01T09:10:44Z\tVoice ai v2 changes\n12\t2023-02-01T17:09:41Z\tAi 490 adv synth\n13\t2023-02-02T05:50:19Z\tAdded sr48000 for wave\n14\t2023-02-03T04:11:03Z\tNew feature score model\n15\t2023-02-07T15:46:36Z\tNew feature score model\n16\t2023-02-13T04:47:47Z\tStaging > Main\n17\t2023-03-03T05:14:09Z\tNew feature updates\n18\t2023-04-21T05:10:41Z\tRefined voice cloning settings\n19\t2023-06-21T10:59:07Z\tUpdate voice clone 23 05\n20\t2023-06-27T05:14:57Z\tStaging > Main\n21\t2023-07-21T05:14:32Z\tDev find best fixup\n22\t2023-07-25T09:44:12Z\tDev cpu only\n23\t2023-08-07T06:58:31Z\tDevelop\n24\t2023-08-07T08:05:54Z\tDevelop 07 08 code updates\n25\t2023-08-07T08:21:11Z\tAdded code for cloning script\n26\t2023-08-07T10:19:45Z\tAdded changes for sr 48000\n27\t2023-10-11T20:46:31Z\tupdated model name\n28\t2023-11-29T07:42:08Z\tGCP support, upgraded TTS, new model with cleaner data\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_15","type":"command_execution","command":"/bin/bash -lc \"jq '{number,title,body,baseRefName,headRefName,commits:.commits.nodes[].commit|{oid,message},files:.files.nodes}' .styx_prs/pr_11.json && jq '{number,title,body,baseRefName,headRefName,commits:.commits.nodes[].commit|{oid,message},files:.files.nodes}' .styx_prs/pr_16.json\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_15","type":"command_execution","command":"/bin/bash -lc \"jq '{number,title,body,baseRefName,headRefName,commits:.commits.nodes[].commit|{oid,message},files:.files.nodes}' .styx_prs/pr_11.json && jq '{number,title,body,baseRefName,headRefName,commits:.commits.nodes[].commit|{oid,message},files:.files.nodes}' .styx_prs/pr_16.json\"","aggregated_output":"{\n  \"number\": 11,\n  \"title\": \"Voice ai v2 changes\",\n  \"body\": \"\",\n  \"baseRefName\": \"staging\",\n  \"headRefName\": \"voice-ai-v2-changes\",\n  \"commits\": {\n    \"oid\": \"09895be273030cf75781b88a43581db15e2b537f\",\n    \"message\": \"Some cleanup\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 53,\n      \"deletions\": 56,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 11,\n  \"title\": \"Voice ai v2 changes\",\n  \"body\": \"\",\n  \"baseRefName\": \"staging\",\n  \"headRefName\": \"voice-ai-v2-changes\",\n  \"commits\": {\n    \"oid\": \"477c39922d6f1f8bf474d6aa215dbf7f745629af\",\n    \"message\": \"Some cleanup\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 53,\n      \"deletions\": 56,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 11,\n  \"title\": \"Voice ai v2 changes\",\n  \"body\": \"\",\n  \"baseRefName\": \"staging\",\n  \"headRefName\": \"voice-ai-v2-changes\",\n  \"commits\": {\n    \"oid\": \"81a3e340d28c15313cf363697ea35e401bd48c30\",\n    \"message\": \"Some cleanup\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 53,\n      \"deletions\": 56,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 11,\n  \"title\": \"Voice ai v2 changes\",\n  \"body\": \"\",\n  \"baseRefName\": \"staging\",\n  \"headRefName\": \"voice-ai-v2-changes\",\n  \"commits\": {\n    \"oid\": \"920ab8ac6ba9b428d30b655a12533e7491c17ad2\",\n    \"message\": \"Added todos\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 53,\n      \"deletions\": 56,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 11,\n  \"title\": \"Voice ai v2 changes\",\n  \"body\": \"\",\n  \"baseRefName\": \"staging\",\n  \"headRefName\": \"voice-ai-v2-changes\",\n  \"commits\": {\n    \"oid\": \"18e04e2e4e9ae7eef5d77d86cb83bf1efea7fbd4\",\n    \"message\": \"Added code for v2 changes\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 53,\n      \"deletions\": 56,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 11,\n  \"title\": \"Voice ai v2 changes\",\n  \"body\": \"\",\n  \"baseRefName\": \"staging\",\n  \"headRefName\": \"voice-ai-v2-changes\",\n  \"commits\": {\n    \"oid\": \"31996261302205e07e9135750c71ba6c227e81ee\",\n    \"message\": \"update the python command\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 53,\n      \"deletions\": 56,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 11,\n  \"title\": \"Voice ai v2 changes\",\n  \"body\": \"\",\n  \"baseRefName\": \"staging\",\n  \"headRefName\": \"voice-ai-v2-changes\",\n  \"commits\": {\n    \"oid\": \"d6a4ca9809bd3e61bce09d81534c85582a6648c4\",\n    \"message\": \"Added code for v2 changes\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 53,\n      \"deletions\": 56,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 11,\n  \"title\": \"Voice ai v2 changes\",\n  \"body\": \"\",\n  \"baseRefName\": \"staging\",\n  \"headRefName\": \"voice-ai-v2-changes\",\n  \"commits\": {\n    \"oid\": \"5dbe54bf0674a0323fb237d2549b3bccab8b1bae\",\n    \"message\": \"Added code for v2 changes\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 53,\n      \"deletions\": 56,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 11,\n  \"title\": \"Voice ai v2 changes\",\n  \"body\": \"\",\n  \"baseRefName\": \"staging\",\n  \"headRefName\": \"voice-ai-v2-changes\",\n  \"commits\": {\n    \"oid\": \"103d47f263421ab090097825883fe33f9cbd1830\",\n    \"message\": \"Added code for v2 changes\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 53,\n      \"deletions\": 56,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 11,\n  \"title\": \"Voice ai v2 changes\",\n  \"body\": \"\",\n  \"baseRefName\": \"staging\",\n  \"headRefName\": \"voice-ai-v2-changes\",\n  \"commits\": {\n    \"oid\": \"de9256d575777382caee28192d6e7321d4f6cf37\",\n    \"message\": \"Merge branch 'main' into voice-ai-v2-changes\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 53,\n      \"deletions\": 56,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 11,\n  \"title\": \"Voice ai v2 changes\",\n  \"body\": \"\",\n  \"baseRefName\": \"staging\",\n  \"headRefName\": \"voice-ai-v2-changes\",\n  \"commits\": {\n    \"oid\": \"4054eaeabf53f7a1477134496e26d1b323a89211\",\n    \"message\": \"Removed unwanted package\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 53,\n      \"deletions\": 56,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 11,\n  \"title\": \"Voice ai v2 changes\",\n  \"body\": \"\",\n  \"baseRefName\": \"staging\",\n  \"headRefName\": \"voice-ai-v2-changes\",\n  \"commits\": {\n    \"oid\": \"676ae4419c2c00340a6e0ddbc2ebedaf547b984b\",\n    \"message\": \"updated zip command\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 53,\n      \"deletions\": 56,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 11,\n  \"title\": \"Voice ai v2 changes\",\n  \"body\": \"\",\n  \"baseRefName\": \"staging\",\n  \"headRefName\": \"voice-ai-v2-changes\",\n  \"commits\": {\n    \"oid\": \"a1d7a29e837f4c508245ed6158c07accfe1ab550\",\n    \"message\": \"Updated path\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 53,\n      \"deletions\": 56,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 11,\n  \"title\": \"Voice ai v2 changes\",\n  \"body\": \"\",\n  \"baseRefName\": \"staging\",\n  \"headRefName\": \"voice-ai-v2-changes\",\n  \"commits\": {\n    \"oid\": \"9eac7f855681a903b6372d74a0252ffa3f4f6ceb\",\n    \"message\": \"Updated zippath\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 53,\n      \"deletions\": 56,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 11,\n  \"title\": \"Voice ai v2 changes\",\n  \"body\": \"\",\n  \"baseRefName\": \"staging\",\n  \"headRefName\": \"voice-ai-v2-changes\",\n  \"commits\": {\n    \"oid\": \"6f33b7b4c8d3b14e323a5e87852216e35da8806d\",\n    \"message\": \"Updated zippath\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 53,\n      \"deletions\": 56,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 11,\n  \"title\": \"Voice ai v2 changes\",\n  \"body\": \"\",\n  \"baseRefName\": \"staging\",\n  \"headRefName\": \"voice-ai-v2-changes\",\n  \"commits\": {\n    \"oid\": \"a4a22adba17913568643f56a7803b743055dde97\",\n    \"message\": \"Updated zippath\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 53,\n      \"deletions\": 56,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 11,\n  \"title\": \"Voice ai v2 changes\",\n  \"body\": \"\",\n  \"baseRefName\": \"staging\",\n  \"headRefName\": \"voice-ai-v2-changes\",\n  \"commits\": {\n    \"oid\": \"b1222eea17760fbf5c9cf6007637a6f01e7deab7\",\n    \"message\": \"Updated path for result\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 53,\n      \"deletions\": 56,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 11,\n  \"title\": \"Voice ai v2 changes\",\n  \"body\": \"\",\n  \"baseRefName\": \"staging\",\n  \"headRefName\": \"voice-ai-v2-changes\",\n  \"commits\": {\n    \"oid\": \"60193204e3783f20e156000ef48a2b9386002d88\",\n    \"message\": \"updated command\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 53,\n      \"deletions\": 56,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 11,\n  \"title\": \"Voice ai v2 changes\",\n  \"body\": \"\",\n  \"baseRefName\": \"staging\",\n  \"headRefName\": \"voice-ai-v2-changes\",\n  \"commits\": {\n    \"oid\": \"7960ed5dfa9afce6281350870977aa48f4f903d2\",\n    \"message\": \"updated command\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 53,\n      \"deletions\": 56,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 11,\n  \"title\": \"Voice ai v2 changes\",\n  \"body\": \"\",\n  \"baseRefName\": \"staging\",\n  \"headRefName\": \"voice-ai-v2-changes\",\n  \"commits\": {\n    \"oid\": \"633ecbafcda44c57d24ab4280aec53e9453c93ba\",\n    \"message\": \"Added changes for the synthesize command\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 53,\n      \"deletions\": 56,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 11,\n  \"title\": \"Voice ai v2 changes\",\n  \"body\": \"\",\n  \"baseRefName\": \"staging\",\n  \"headRefName\": \"voice-ai-v2-changes\",\n  \"commits\": {\n    \"oid\": \"6a0fdc17bb6c19d20338c1a6cae2bbea8f87dcb4\",\n    \"message\": \"updated voice-ai-changes\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 53,\n      \"deletions\": 56,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 11,\n  \"title\": \"Voice ai v2 changes\",\n  \"body\": \"\",\n  \"baseRefName\": \"staging\",\n  \"headRefName\": \"voice-ai-v2-changes\",\n  \"commits\": {\n    \"oid\": \"fd70943a1ca541e00852e7384f91c7b09c42d9d3\",\n    \"message\": \"Updated speaker path\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 53,\n      \"deletions\": 56,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 11,\n  \"title\": \"Voice ai v2 changes\",\n  \"body\": \"\",\n  \"baseRefName\": \"staging\",\n  \"headRefName\": \"voice-ai-v2-changes\",\n  \"commits\": {\n    \"oid\": \"0617f15153fdffd52f009bb0429d6878743649dc\",\n    \"message\": \"Updated speaker path\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 53,\n      \"deletions\": 56,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 11,\n  \"title\": \"Voice ai v2 changes\",\n  \"body\": \"\",\n  \"baseRefName\": \"staging\",\n  \"headRefName\": \"voice-ai-v2-changes\",\n  \"commits\": {\n    \"oid\": \"0e83ea6cd962df73dccf012582fcd31277e9398e\",\n    \"message\": \"Updated code for synthesis\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 53,\n      \"deletions\": 56,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 11,\n  \"title\": \"Voice ai v2 changes\",\n  \"body\": \"\",\n  \"baseRefName\": \"staging\",\n  \"headRefName\": \"voice-ai-v2-changes\",\n  \"commits\": {\n    \"oid\": \"f996adf6c1277fd78253badeb77d487c5ad1d328\",\n    \"message\": \"Updated code for synthesis\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 53,\n      \"deletions\": 56,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 11,\n  \"title\": \"Voice ai v2 changes\",\n  \"body\": \"\",\n  \"baseRefName\": \"staging\",\n  \"headRefName\": \"voice-ai-v2-changes\",\n  \"commits\": {\n    \"oid\": \"2aea05da7bfa3c057f3a31ed16639e461a395f53\",\n    \"message\": \"Updated job code\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 53,\n      \"deletions\": 56,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 11,\n  \"title\": \"Voice ai v2 changes\",\n  \"body\": \"\",\n  \"baseRefName\": \"staging\",\n  \"headRefName\": \"voice-ai-v2-changes\",\n  \"commits\": {\n    \"oid\": \"6a234309474cbc1e420fd092fefed97ec2c75aae\",\n    \"message\": \"Updated job code\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 53,\n      \"deletions\": 56,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 11,\n  \"title\": \"Voice ai v2 changes\",\n  \"body\": \"\",\n  \"baseRefName\": \"staging\",\n  \"headRefName\": \"voice-ai-v2-changes\",\n  \"commits\": {\n    \"oid\": \"a616fd33178b70105d5cb40694e74e2c1df124da\",\n    \"message\": \"Added condition for delete check\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 53,\n      \"deletions\": 56,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 16,\n  \"title\": \"Staging > Main\",\n  \"body\": \"\",\n  \"baseRefName\": \"main\",\n  \"headRefName\": \"staging\",\n  \"commits\": {\n    \"oid\": \"09895be273030cf75781b88a43581db15e2b537f\",\n    \"message\": \"Some cleanup\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide.md\",\n      \"additions\": 11,\n      \"deletions\": 4,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/score_models.py\",\n      \"additions\": 219,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-cloning/synthesize_speech.py\",\n      \"additions\": 23,\n      \"deletions\": 8,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/utils/synthesize_utils.py\",\n      \"additions\": 9,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 54,\n      \"deletions\": 57,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 16,\n  \"title\": \"Staging > Main\",\n  \"body\": \"\",\n  \"baseRefName\": \"main\",\n  \"headRefName\": \"staging\",\n  \"commits\": {\n    \"oid\": \"477c39922d6f1f8bf474d6aa215dbf7f745629af\",\n    \"message\": \"Some cleanup\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide.md\",\n      \"additions\": 11,\n      \"deletions\": 4,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/score_models.py\",\n      \"additions\": 219,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-cloning/synthesize_speech.py\",\n      \"additions\": 23,\n      \"deletions\": 8,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/utils/synthesize_utils.py\",\n      \"additions\": 9,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 54,\n      \"deletions\": 57,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 16,\n  \"title\": \"Staging > Main\",\n  \"body\": \"\",\n  \"baseRefName\": \"main\",\n  \"headRefName\": \"staging\",\n  \"commits\": {\n    \"oid\": \"81a3e340d28c15313cf363697ea35e401bd48c30\",\n    \"message\": \"Some cleanup\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide.md\",\n      \"additions\": 11,\n      \"deletions\": 4,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/score_models.py\",\n      \"additions\": 219,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-cloning/synthesize_speech.py\",\n      \"additions\": 23,\n      \"deletions\": 8,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/utils/synthesize_utils.py\",\n      \"additions\": 9,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 54,\n      \"deletions\": 57,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 16,\n  \"title\": \"Staging > Main\",\n  \"body\": \"\",\n  \"baseRefName\": \"main\",\n  \"headRefName\": \"staging\",\n  \"commits\": {\n    \"oid\": \"920ab8ac6ba9b428d30b655a12533e7491c17ad2\",\n    \"message\": \"Added todos\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide.md\",\n      \"additions\": 11,\n      \"deletions\": 4,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/score_models.py\",\n      \"additions\": 219,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-cloning/synthesize_speech.py\",\n      \"additions\": 23,\n      \"deletions\": 8,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/utils/synthesize_utils.py\",\n      \"additions\": 9,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 54,\n      \"deletions\": 57,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 16,\n  \"title\": \"Staging > Main\",\n  \"body\": \"\",\n  \"baseRefName\": \"main\",\n  \"headRefName\": \"staging\",\n  \"commits\": {\n    \"oid\": \"18e04e2e4e9ae7eef5d77d86cb83bf1efea7fbd4\",\n    \"message\": \"Added code for v2 changes\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide.md\",\n      \"additions\": 11,\n      \"deletions\": 4,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/score_models.py\",\n      \"additions\": 219,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-cloning/synthesize_speech.py\",\n      \"additions\": 23,\n      \"deletions\": 8,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/utils/synthesize_utils.py\",\n      \"additions\": 9,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 54,\n      \"deletions\": 57,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 16,\n  \"title\": \"Staging > Main\",\n  \"body\": \"\",\n  \"baseRefName\": \"main\",\n  \"headRefName\": \"staging\",\n  \"commits\": {\n    \"oid\": \"31996261302205e07e9135750c71ba6c227e81ee\",\n    \"message\": \"update the python command\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide.md\",\n      \"additions\": 11,\n      \"deletions\": 4,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/score_models.py\",\n      \"additions\": 219,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-cloning/synthesize_speech.py\",\n      \"additions\": 23,\n      \"deletions\": 8,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/utils/synthesize_utils.py\",\n      \"additions\": 9,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 54,\n      \"deletions\": 57,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 16,\n  \"title\": \"Staging > Main\",\n  \"body\": \"\",\n  \"baseRefName\": \"main\",\n  \"headRefName\": \"staging\",\n  \"commits\": {\n    \"oid\": \"d6a4ca9809bd3e61bce09d81534c85582a6648c4\",\n    \"message\": \"Added code for v2 changes\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide.md\",\n      \"additions\": 11,\n      \"deletions\": 4,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/score_models.py\",\n      \"additions\": 219,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-cloning/synthesize_speech.py\",\n      \"additions\": 23,\n      \"deletions\": 8,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/utils/synthesize_utils.py\",\n      \"additions\": 9,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 54,\n      \"deletions\": 57,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 16,\n  \"title\": \"Staging > Main\",\n  \"body\": \"\",\n  \"baseRefName\": \"main\",\n  \"headRefName\": \"staging\",\n  \"commits\": {\n    \"oid\": \"5dbe54bf0674a0323fb237d2549b3bccab8b1bae\",\n    \"message\": \"Added code for v2 changes\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide.md\",\n      \"additions\": 11,\n      \"deletions\": 4,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/score_models.py\",\n      \"additions\": 219,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-cloning/synthesize_speech.py\",\n      \"additions\": 23,\n      \"deletions\": 8,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/utils/synthesize_utils.py\",\n      \"additions\": 9,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 54,\n      \"deletions\": 57,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 16,\n  \"title\": \"Staging > Main\",\n  \"body\": \"\",\n  \"baseRefName\": \"main\",\n  \"headRefName\": \"staging\",\n  \"commits\": {\n    \"oid\": \"103d47f263421ab090097825883fe33f9cbd1830\",\n    \"message\": \"Added code for v2 changes\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide.md\",\n      \"additions\": 11,\n      \"deletions\": 4,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/score_models.py\",\n      \"additions\": 219,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-cloning/synthesize_speech.py\",\n      \"additions\": 23,\n      \"deletions\": 8,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/utils/synthesize_utils.py\",\n      \"additions\": 9,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 54,\n      \"deletions\": 57,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 16,\n  \"title\": \"Staging > Main\",\n  \"body\": \"\",\n  \"baseRefName\": \"main\",\n  \"headRefName\": \"staging\",\n  \"commits\": {\n    \"oid\": \"de9256d575777382caee28192d6e7321d4f6cf37\",\n    \"message\": \"Merge branch 'main' into voice-ai-v2-changes\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide.md\",\n      \"additions\": 11,\n      \"deletions\": 4,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/score_models.py\",\n      \"additions\": 219,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-cloning/synthesize_speech.py\",\n      \"additions\": 23,\n      \"deletions\": 8,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/utils/synthesize_utils.py\",\n      \"additions\": 9,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 54,\n      \"deletions\": 57,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 16,\n  \"title\": \"Staging > Main\",\n  \"body\": \"\",\n  \"baseRefName\": \"main\",\n  \"headRefName\": \"staging\",\n  \"commits\": {\n    \"oid\": \"4054eaeabf53f7a1477134496e26d1b323a89211\",\n    \"message\": \"Removed unwanted package\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide.md\",\n      \"additions\": 11,\n      \"deletions\": 4,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/score_models.py\",\n      \"additions\": 219,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-cloning/synthesize_speech.py\",\n      \"additions\": 23,\n      \"deletions\": 8,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/utils/synthesize_utils.py\",\n      \"additions\": 9,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 54,\n      \"deletions\": 57,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 16,\n  \"title\": \"Staging > Main\",\n  \"body\": \"\",\n  \"baseRefName\": \"main\",\n  \"headRefName\": \"staging\",\n  \"commits\": {\n    \"oid\": \"676ae4419c2c00340a6e0ddbc2ebedaf547b984b\",\n    \"message\": \"updated zip command\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide.md\",\n      \"additions\": 11,\n      \"deletions\": 4,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/score_models.py\",\n      \"additions\": 219,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-cloning/synthesize_speech.py\",\n      \"additions\": 23,\n      \"deletions\": 8,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/utils/synthesize_utils.py\",\n      \"additions\": 9,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 54,\n      \"deletions\": 57,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 16,\n  \"title\": \"Staging > Main\",\n  \"body\": \"\",\n  \"baseRefName\": \"main\",\n  \"headRefName\": \"staging\",\n  \"commits\": {\n    \"oid\": \"a1d7a29e837f4c508245ed6158c07accfe1ab550\",\n    \"message\": \"Updated path\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide.md\",\n      \"additions\": 11,\n      \"deletions\": 4,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/score_models.py\",\n      \"additions\": 219,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-cloning/synthesize_speech.py\",\n      \"additions\": 23,\n      \"deletions\": 8,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/utils/synthesize_utils.py\",\n      \"additions\": 9,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 54,\n      \"deletions\": 57,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 16,\n  \"title\": \"Staging > Main\",\n  \"body\": \"\",\n  \"baseRefName\": \"main\",\n  \"headRefName\": \"staging\",\n  \"commits\": {\n    \"oid\": \"9eac7f855681a903b6372d74a0252ffa3f4f6ceb\",\n    \"message\": \"Updated zippath\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide.md\",\n      \"additions\": 11,\n      \"deletions\": 4,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/score_models.py\",\n      \"additions\": 219,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-cloning/synthesize_speech.py\",\n      \"additions\": 23,\n      \"deletions\": 8,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/utils/synthesize_utils.py\",\n      \"additions\": 9,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 54,\n      \"deletions\": 57,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 16,\n  \"title\": \"Staging > Main\",\n  \"body\": \"\",\n  \"baseRefName\": \"main\",\n  \"headRefName\": \"staging\",\n  \"commits\": {\n    \"oid\": \"6f33b7b4c8d3b14e323a5e87852216e35da8806d\",\n    \"message\": \"Updated zippath\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide.md\",\n      \"additions\": 11,\n      \"deletions\": 4,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/score_models.py\",\n      \"additions\": 219,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-cloning/synthesize_speech.py\",\n      \"additions\": 23,\n      \"deletions\": 8,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/utils/synthesize_utils.py\",\n      \"additions\": 9,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 54,\n      \"deletions\": 57,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 16,\n  \"title\": \"Staging > Main\",\n  \"body\": \"\",\n  \"baseRefName\": \"main\",\n  \"headRefName\": \"staging\",\n  \"commits\": {\n    \"oid\": \"a4a22adba17913568643f56a7803b743055dde97\",\n    \"message\": \"Updated zippath\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide.md\",\n      \"additions\": 11,\n      \"deletions\": 4,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/score_models.py\",\n      \"additions\": 219,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-cloning/synthesize_speech.py\",\n      \"additions\": 23,\n      \"deletions\": 8,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/utils/synthesize_utils.py\",\n      \"additions\": 9,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 54,\n      \"deletions\": 57,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 16,\n  \"title\": \"Staging > Main\",\n  \"body\": \"\",\n  \"baseRefName\": \"main\",\n  \"headRefName\": \"staging\",\n  \"commits\": {\n    \"oid\": \"b1222eea17760fbf5c9cf6007637a6f01e7deab7\",\n    \"message\": \"Updated path for result\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide.md\",\n      \"additions\": 11,\n      \"deletions\": 4,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/score_models.py\",\n      \"additions\": 219,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-cloning/synthesize_speech.py\",\n      \"additions\": 23,\n      \"deletions\": 8,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/utils/synthesize_utils.py\",\n      \"additions\": 9,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 54,\n      \"deletions\": 57,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 16,\n  \"title\": \"Staging > Main\",\n  \"body\": \"\",\n  \"baseRefName\": \"main\",\n  \"headRefName\": \"staging\",\n  \"commits\": {\n    \"oid\": \"60193204e3783f20e156000ef48a2b9386002d88\",\n    \"message\": \"updated command\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide.md\",\n      \"additions\": 11,\n      \"deletions\": 4,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/score_models.py\",\n      \"additions\": 219,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-cloning/synthesize_speech.py\",\n      \"additions\": 23,\n      \"deletions\": 8,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/utils/synthesize_utils.py\",\n      \"additions\": 9,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 54,\n      \"deletions\": 57,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 16,\n  \"title\": \"Staging > Main\",\n  \"body\": \"\",\n  \"baseRefName\": \"main\",\n  \"headRefName\": \"staging\",\n  \"commits\": {\n    \"oid\": \"7960ed5dfa9afce6281350870977aa48f4f903d2\",\n    \"message\": \"updated command\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide.md\",\n      \"additions\": 11,\n      \"deletions\": 4,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/score_models.py\",\n      \"additions\": 219,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-cloning/synthesize_speech.py\",\n      \"additions\": 23,\n      \"deletions\": 8,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/utils/synthesize_utils.py\",\n      \"additions\": 9,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 54,\n      \"deletions\": 57,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 16,\n  \"title\": \"Staging > Main\",\n  \"body\": \"\",\n  \"baseRefName\": \"main\",\n  \"headRefName\": \"staging\",\n  \"commits\": {\n    \"oid\": \"633ecbafcda44c57d24ab4280aec53e9453c93ba\",\n    \"message\": \"Added changes for the synthesize command\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide.md\",\n      \"additions\": 11,\n      \"deletions\": 4,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/score_models.py\",\n      \"additions\": 219,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-cloning/synthesize_speech.py\",\n      \"additions\": 23,\n      \"deletions\": 8,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/utils/synthesize_utils.py\",\n      \"additions\": 9,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 54,\n      \"deletions\": 57,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 16,\n  \"title\": \"Staging > Main\",\n  \"body\": \"\",\n  \"baseRefName\": \"main\",\n  \"headRefName\": \"staging\",\n  \"commits\": {\n    \"oid\": \"6a0fdc17bb6c19d20338c1a6cae2bbea8f87dcb4\",\n    \"message\": \"updated voice-ai-changes\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide.md\",\n      \"additions\": 11,\n      \"deletions\": 4,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/score_models.py\",\n      \"additions\": 219,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-cloning/synthesize_speech.py\",\n      \"additions\": 23,\n      \"deletions\": 8,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/utils/synthesize_utils.py\",\n      \"additions\": 9,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 54,\n      \"deletions\": 57,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 16,\n  \"title\": \"Staging > Main\",\n  \"body\": \"\",\n  \"baseRefName\": \"main\",\n  \"headRefName\": \"staging\",\n  \"commits\": {\n    \"oid\": \"fd70943a1ca541e00852e7384f91c7b09c42d9d3\",\n    \"message\": \"Updated speaker path\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide.md\",\n      \"additions\": 11,\n      \"deletions\": 4,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/score_models.py\",\n      \"additions\": 219,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-cloning/synthesize_speech.py\",\n      \"additions\": 23,\n      \"deletions\": 8,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/utils/synthesize_utils.py\",\n      \"additions\": 9,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 54,\n      \"deletions\": 57,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 16,\n  \"title\": \"Staging > Main\",\n  \"body\": \"\",\n  \"baseRefName\": \"main\",\n  \"headRefName\": \"staging\",\n  \"commits\": {\n    \"oid\": \"0617f15153fdffd52f009bb0429d6878743649dc\",\n    \"message\": \"Updated speaker path\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide.md\",\n      \"additions\": 11,\n      \"deletions\": 4,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/score_models.py\",\n      \"additions\": 219,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-cloning/synthesize_speech.py\",\n      \"additions\": 23,\n      \"deletions\": 8,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/utils/synthesize_utils.py\",\n      \"additions\": 9,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 54,\n      \"deletions\": 57,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 16,\n  \"title\": \"Staging > Main\",\n  \"body\": \"\",\n  \"baseRefName\": \"main\",\n  \"headRefName\": \"staging\",\n  \"commits\": {\n    \"oid\": \"0e83ea6cd962df73dccf012582fcd31277e9398e\",\n    \"message\": \"Updated code for synthesis\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide.md\",\n      \"additions\": 11,\n      \"deletions\": 4,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/score_models.py\",\n      \"additions\": 219,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-cloning/synthesize_speech.py\",\n      \"additions\": 23,\n      \"deletions\": 8,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/utils/synthesize_utils.py\",\n      \"additions\": 9,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 54,\n      \"deletions\": 57,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 16,\n  \"title\": \"Staging > Main\",\n  \"body\": \"\",\n  \"baseRefName\": \"main\",\n  \"headRefName\": \"staging\",\n  \"commits\": {\n    \"oid\": \"f996adf6c1277fd78253badeb77d487c5ad1d328\",\n    \"message\": \"Updated code for synthesis\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide.md\",\n      \"additions\": 11,\n      \"deletions\": 4,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/score_models.py\",\n      \"additions\": 219,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-cloning/synthesize_speech.py\",\n      \"additions\": 23,\n      \"deletions\": 8,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/utils/synthesize_utils.py\",\n      \"additions\": 9,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 54,\n      \"deletions\": 57,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 16,\n  \"title\": \"Staging > Main\",\n  \"body\": \"\",\n  \"baseRefName\": \"main\",\n  \"headRefName\": \"staging\",\n  \"commits\": {\n    \"oid\": \"2aea05da7bfa3c057f3a31ed16639e461a395f53\",\n    \"message\": \"Updated job code\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide.md\",\n      \"additions\": 11,\n      \"deletions\": 4,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/score_models.py\",\n      \"additions\": 219,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-cloning/synthesize_speech.py\",\n      \"additions\": 23,\n      \"deletions\": 8,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/utils/synthesize_utils.py\",\n      \"additions\": 9,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 54,\n      \"deletions\": 57,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 16,\n  \"title\": \"Staging > Main\",\n  \"body\": \"\",\n  \"baseRefName\": \"main\",\n  \"headRefName\": \"staging\",\n  \"commits\": {\n    \"oid\": \"6a234309474cbc1e420fd092fefed97ec2c75aae\",\n    \"message\": \"Updated job code\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide.md\",\n      \"additions\": 11,\n      \"deletions\": 4,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/score_models.py\",\n      \"additions\": 219,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-cloning/synthesize_speech.py\",\n      \"additions\": 23,\n      \"deletions\": 8,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/utils/synthesize_utils.py\",\n      \"additions\": 9,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 54,\n      \"deletions\": 57,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 16,\n  \"title\": \"Staging > Main\",\n  \"body\": \"\",\n  \"baseRefName\": \"main\",\n  \"headRefName\": \"staging\",\n  \"commits\": {\n    \"oid\": \"6645341cf0150d9c2f3766c885fe8891660e2ac5\",\n    \"message\": \"Synthesising audio with optional speech samples for style transfer; upsampling output to target sampling rate (48kHz as default).\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide.md\",\n      \"additions\": 11,\n      \"deletions\": 4,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/score_models.py\",\n      \"additions\": 219,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-cloning/synthesize_speech.py\",\n      \"additions\": 23,\n      \"deletions\": 8,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/utils/synthesize_utils.py\",\n      \"additions\": 9,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 54,\n      \"deletions\": 57,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 16,\n  \"title\": \"Staging > Main\",\n  \"body\": \"\",\n  \"baseRefName\": \"main\",\n  \"headRefName\": \"staging\",\n  \"commits\": {\n    \"oid\": \"b2d1cd59e7bd8a0a1d8a1606664230882e988d15\",\n    \"message\": \"Cleaned up and documented extended synthesising approach.\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide.md\",\n      \"additions\": 11,\n      \"deletions\": 4,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/score_models.py\",\n      \"additions\": 219,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-cloning/synthesize_speech.py\",\n      \"additions\": 23,\n      \"deletions\": 8,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/utils/synthesize_utils.py\",\n      \"additions\": 9,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 54,\n      \"deletions\": 57,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 16,\n  \"title\": \"Staging > Main\",\n  \"body\": \"\",\n  \"baseRefName\": \"main\",\n  \"headRefName\": \"staging\",\n  \"commits\": {\n    \"oid\": \"a616fd33178b70105d5cb40694e74e2c1df124da\",\n    \"message\": \"Added condition for delete check\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide.md\",\n      \"additions\": 11,\n      \"deletions\": 4,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/score_models.py\",\n      \"additions\": 219,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-cloning/synthesize_speech.py\",\n      \"additions\": 23,\n      \"deletions\": 8,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/utils/synthesize_utils.py\",\n      \"additions\": 9,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 54,\n      \"deletions\": 57,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 16,\n  \"title\": \"Staging > Main\",\n  \"body\": \"\",\n  \"baseRefName\": \"main\",\n  \"headRefName\": \"staging\",\n  \"commits\": {\n    \"oid\": \"14c3c3630a14ab220a13d4b0ce2ac7a2b9c2ab2d\",\n    \"message\": \"Merge pull request #11 from potion/voice-ai-v2-changes\\n\\nVoice ai v2 changes\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide.md\",\n      \"additions\": 11,\n      \"deletions\": 4,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/score_models.py\",\n      \"additions\": 219,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-cloning/synthesize_speech.py\",\n      \"additions\": 23,\n      \"deletions\": 8,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/utils/synthesize_utils.py\",\n      \"additions\": 9,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 54,\n      \"deletions\": 57,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 16,\n  \"title\": \"Staging > Main\",\n  \"body\": \"\",\n  \"baseRefName\": \"main\",\n  \"headRefName\": \"staging\",\n  \"commits\": {\n    \"oid\": \"6facd07321ab07dd4bdf2b4decbdd652c24cb442\",\n    \"message\": \"Added sr48000 for wave\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide.md\",\n      \"additions\": 11,\n      \"deletions\": 4,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/score_models.py\",\n      \"additions\": 219,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-cloning/synthesize_speech.py\",\n      \"additions\": 23,\n      \"deletions\": 8,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/utils/synthesize_utils.py\",\n      \"additions\": 9,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 54,\n      \"deletions\": 57,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 16,\n  \"title\": \"Staging > Main\",\n  \"body\": \"\",\n  \"baseRefName\": \"main\",\n  \"headRefName\": \"staging\",\n  \"commits\": {\n    \"oid\": \"9de3769f0cfe8a81dbccf331702452f2c0112987\",\n    \"message\": \"Merge pull request #12 from potion/ai-490-adv-synth\\n\\nAi 490 adv synth\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide.md\",\n      \"additions\": 11,\n      \"deletions\": 4,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/score_models.py\",\n      \"additions\": 219,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-cloning/synthesize_speech.py\",\n      \"additions\": 23,\n      \"deletions\": 8,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/utils/synthesize_utils.py\",\n      \"additions\": 9,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 54,\n      \"deletions\": 57,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 16,\n  \"title\": \"Staging > Main\",\n  \"body\": \"\",\n  \"baseRefName\": \"main\",\n  \"headRefName\": \"staging\",\n  \"commits\": {\n    \"oid\": \"e54a3b5cec759c2269cfb3e02c26f9674699a26b\",\n    \"message\": \"Merge pull request #13 from potion/fix-output-for-wav\\n\\nAdded sr48000 for wave\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide.md\",\n      \"additions\": 11,\n      \"deletions\": 4,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/score_models.py\",\n      \"additions\": 219,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-cloning/synthesize_speech.py\",\n      \"additions\": 23,\n      \"deletions\": 8,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/utils/synthesize_utils.py\",\n      \"additions\": 9,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 54,\n      \"deletions\": 57,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 16,\n  \"title\": \"Staging > Main\",\n  \"body\": \"\",\n  \"baseRefName\": \"main\",\n  \"headRefName\": \"staging\",\n  \"commits\": {\n    \"oid\": \"25c21387320b085eec8c3a223fcb4ca44d952247\",\n    \"message\": \"Add ffmpeg to system-wide install requirements (synthesize_speech requires this now, but it's missing from the documentation).\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide.md\",\n      \"additions\": 11,\n      \"deletions\": 4,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/score_models.py\",\n      \"additions\": 219,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-cloning/synthesize_speech.py\",\n      \"additions\": 23,\n      \"deletions\": 8,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/utils/synthesize_utils.py\",\n      \"additions\": 9,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 54,\n      \"deletions\": 57,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 16,\n  \"title\": \"Staging > Main\",\n  \"body\": \"\",\n  \"baseRefName\": \"main\",\n  \"headRefName\": \"staging\",\n  \"commits\": {\n    \"oid\": \"18f64f968a0b75f2b26a11e337dd596413055f5f\",\n    \"message\": \"Added new capability to test and rank a set of multi-speaker models (using Resemblyzer-based voice similarity).\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide.md\",\n      \"additions\": 11,\n      \"deletions\": 4,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/score_models.py\",\n      \"additions\": 219,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-cloning/synthesize_speech.py\",\n      \"additions\": 23,\n      \"deletions\": 8,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/utils/synthesize_utils.py\",\n      \"additions\": 9,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 54,\n      \"deletions\": 57,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n{\n  \"number\": 16,\n  \"title\": \"Staging > Main\",\n  \"body\": \"\",\n  \"baseRefName\": \"main\",\n  \"headRefName\": \"staging\",\n  \"commits\": {\n    \"oid\": \"4d32b78bf90cd62384f5a788c1d5e19f61e27007\",\n    \"message\": \"Merge pull request #14 from potion/new-feature-score-model\\n\\nNew feature score model\"\n  },\n  \"files\": [\n    {\n      \"path\": \".gitignore\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \".prettierrc\",\n      \"additions\": 0,\n      \"deletions\": 7,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/index.js\",\n      \"additions\": 56,\n      \"deletions\": 11,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package-lock.json\",\n      \"additions\": 0,\n      \"deletions\": 1782,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/package.json\",\n      \"additions\": 1,\n      \"deletions\": 1,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n      \"additions\": 8,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n      \"additions\": 0,\n      \"deletions\": 2,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning-job-handler/yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    },\n    {\n      \"path\": \"voice-cloning/docs/potion-voice-cloning_Installation_Guide.md\",\n      \"additions\": 11,\n      \"deletions\": 4,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/score_models.py\",\n      \"additions\": 219,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-cloning/synthesize_speech.py\",\n      \"additions\": 23,\n      \"deletions\": 8,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-cloning/utils/synthesize_utils.py\",\n      \"additions\": 9,\n      \"deletions\": 10,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/index.js\",\n      \"additions\": 54,\n      \"deletions\": 57,\n      \"changeType\": \"MODIFIED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n      \"additions\": 3,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n      \"additions\": 76,\n      \"deletions\": 0,\n      \"changeType\": \"ADDED\"\n    },\n    {\n      \"path\": \"yarn.lock\",\n      \"additions\": 0,\n      \"deletions\": 2475,\n      \"changeType\": \"REMOVED\"\n    }\n  ]\n}\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_16","type":"command_execution","command":"/bin/bash -lc \"curl -L --silent --show-error --max-time 15 -o /tmp/potion_commit.patch -w '%{http_code} %{size_download}\\\\n' https://github.com/potion/potion-voice/commit/18e04e2e4e9ae7eef5d77d86cb83bf1efea7fbd4.patch && sed -n '1,80p' /tmp/potion_commit.patch\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_16","type":"command_execution","command":"/bin/bash -lc \"curl -L --silent --show-error --max-time 15 -o /tmp/potion_commit.patch -w '%{http_code} %{size_download}\\\\n' https://github.com/potion/potion-voice/commit/18e04e2e4e9ae7eef5d77d86cb83bf1efea7fbd4.patch && sed -n '1,80p' /tmp/potion_commit.patch\"","aggregated_output":"404 9\nNot Found","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_17","type":"command_execution","command":"/bin/bash -lc \"rg -n -i 'null|undefined|status|tier|pro|job|queue|process|clone' .styx_prs --glob '*.json' | sed -n '1,360p'\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_17","type":"command_execution","command":"/bin/bash -lc \"rg -n -i 'null|undefined|status|tier|pro|job|queue|process|clone' .styx_prs --glob '*.json' | sed -n '1,360p'\"","aggregated_output":".styx_prs/pr_24.json:25:  \"milestone\": null,\n.styx_prs/pr_24.json:169:          \"message\": \"Merge branch 'staging' into update-voice-clone-23-05\",\n.styx_prs/pr_24.json:217:          \"message\": \"Merge pull request #19 from potion/update-voice-clone-23-05\\n\\nUpdate voice clone 23 05\",\n.styx_prs/pr_24.json:273:        \"path\": \"voice-cloning-job-handler/index.js\",\n.styx_prs/pr_24.json:279:        \"path\": \"voice-synthsizer-job-handler/index.js\",\n.styx_prs/pr_24.json:285:        \"path\": \"voice-synthsizer-job-handler/pm2-development.yml\",\n.styx_prs/pr_24.json:291:        \"path\": \"voice-synthsizer-job-handler/pm2-production.yml\",\n.styx_prs/pr_16.json:25:  \"milestone\": null,\n.styx_prs/pr_16.json:441:          \"message\": \"Updated job code\",\n.styx_prs/pr_16.json:457:          \"message\": \"Updated job code\",\n.styx_prs/pr_16.json:489:          \"message\": \"Cleaned up and documented extended synthesising approach.\",\n.styx_prs/pr_16.json:638:        \"state\": \"APPROVED\",\n.styx_prs/pr_16.json:660:        \"path\": \".prettierrc\",\n.styx_prs/pr_16.json:666:        \"path\": \"voice-cloning-job-handler/index.js\",\n.styx_prs/pr_16.json:672:        \"path\": \"voice-cloning-job-handler/package-lock.json\",\n.styx_prs/pr_16.json:678:        \"path\": \"voice-cloning-job-handler/package.json\",\n.styx_prs/pr_16.json:684:        \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n.styx_prs/pr_16.json:690:        \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n.styx_prs/pr_16.json:696:        \"path\": \"voice-cloning-job-handler/yarn.lock\",\n.styx_prs/pr_16.json:726:        \"path\": \"voice-synthsizer-job-handler/index.js\",\n.styx_prs/pr_16.json:732:        \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n.styx_prs/pr_16.json:738:        \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n.styx_prs/pr_26.json:25:  \"milestone\": null,\n.styx_prs/pr_26.json:65:        \"path\": \"voice-cloning-job-handler/index.js\",\n.styx_prs/pr_1.json:25:  \"milestone\": null,\n.styx_prs/pr_1.json:125:        \"path\": \"voice-cloning/clone_voice.py\",\n.styx_prs/pr_23.json:25:  \"milestone\": null,\n.styx_prs/pr_23.json:57:          \"message\": \"Add progress tracker and suppress default TTS command-line outputs.\",\n.styx_prs/pr_23.json:73:          \"message\": \"Add progress tracker and suppress default TTS command-line outputs (part 2).\",\n.styx_prs/pr_23.json:105:          \"message\": \"Minor improvements to support CPU-only processing.\",\n.styx_prs/pr_23.json:153:          \"message\": \"Updated requirements: git clone --depth 1 --branch v0.16.0 https://github.com/coqui-ai/TTS onwards addresses the CPU-only processing issues.\",\n.styx_prs/pr_23.json:169:          \"message\": \"Efficiency improvements: Rearranged loop order and removed re-init of speaker mgr and vocoder.\",\n.styx_prs/pr_23.json:201:          \"message\": \"Efficiency improvement: Removed re-init of vocoder.\",\n.styx_prs/pr_23.json:249:          \"message\": \"Efficiency improvements: re-use config and speaker embeddings when multiple models are evaluated.\",\n.styx_prs/pr_23.json:281:          \"message\": \"No more need to suppress cmd output; fix remove silence bug; code readability improvements; better error handling.\",\n.styx_prs/pr_23.json:329:          \"message\": \"Typing improvements; trim_silence improvements.\",\n.styx_prs/pr_23.json:361:          \"message\": \"Improved speaker similarity scoring approach.\",\n.styx_prs/pr_23.json:409:          \"message\": \"Add unload model (clean-up) routine; code readibility improvements.\",\n.styx_prs/pr_23.json:617:          \"message\": \"Extended similarity scoring approach to also includde naturalness assessment.\",\n.styx_prs/pr_23.json:665:          \"message\": \"Added naturalness score to find_best_cloned_model; improved comments.\",\n.styx_prs/pr_23.json:713:          \"message\": \"Readying updated scoring approach for staging.\",\n.styx_prs/pr_23.json:745:          \"message\": \"Init fixup; improved comments.\",\n.styx_prs/pr_23.json:761:          \"message\": \"Improved wording for console-based output.\",\n.styx_prs/pr_23.json:803:        \"path\": \"requirements.prod.cpu.txt\",\n.styx_prs/pr_23.json:809:        \"path\": \"requirements.prod.gpu.txt\",\n.styx_prs/pr_23.json:821:        \"path\": \"voice-cloning-job-handler/index.js\",\n.styx_prs/pr_23.json:827:        \"path\": \"voice-cloning/clone_voice.py\",\n.styx_prs/pr_23.json:833:        \"path\": \"voice-cloning/clone_voice_via_continue.py\",\n.styx_prs/pr_23.json:857:        \"path\": \"voice-cloning/find_best_cloned_model.py\",\n.styx_prs/pr_23.json:869:        \"path\": \"voice-cloning/minimize_cloned_voice_model.py\",\n.styx_prs/pr_23.json:881:        \"path\": \"voice-cloning/score_cloned_voice.py\",\n.styx_prs/pr_21.json:4:  \"body\": \"find_best_* improvements (suppress TTS-based command line output; track progress instead)\",\n.styx_prs/pr_21.json:25:  \"milestone\": null,\n.styx_prs/pr_21.json:41:          \"message\": \"Add progress tracker and suppress default TTS command-line outputs.\",\n.styx_prs/pr_21.json:57:          \"message\": \"Add progress tracker and suppress default TTS command-line outputs (part 2).\",\n.styx_prs/pr_21.json:81:        \"path\": \"voice-cloning/find_best_cloned_model.py\",\n.styx_prs/pr_20.json:8:  \"mergedAt\": null,\n.styx_prs/pr_20.json:9:  \"closedAt\": null,\n.styx_prs/pr_20.json:25:  \"milestone\": null,\n.styx_prs/pr_20.json:121:          \"message\": \"Added syntax & usage examples for new find_best_* scripts; improved code readability\",\n.styx_prs/pr_20.json:153:          \"message\": \"out.cloned_model_path now returns the full path, not just the path to the output folder.\",\n.styx_prs/pr_20.json:537:          \"message\": \"Removed unnecessary import; improved comments.\",\n.styx_prs/pr_20.json:553:          \"message\": \"Added new voice conversion option (idea 1: convert from multi-speaker model; idea 2: clone voice, synthesize speech, convert into recorded template; ...).\",\n.styx_prs/pr_20.json:585:          \"message\": \"Added new voice cloning approach (using fine-tuning via continue_path).\",\n.styx_prs/pr_20.json:601:          \"message\": \"Spelling and formatting improvements.\",\n.styx_prs/pr_20.json:665:          \"message\": \"Remove scaling factors for now; improved conversion settings.\",\n.styx_prs/pr_20.json:985:          \"message\": \"Merge branch 'staging' into update-voice-clone-23-05\",\n.styx_prs/pr_20.json:1033:          \"message\": \"Merge pull request #19 from potion/update-voice-clone-23-05\\n\\nUpdate voice clone 23 05\",\n.styx_prs/pr_20.json:1065:          \"message\": \"Add progress tracker and suppress default TTS command-line outputs.\",\n.styx_prs/pr_20.json:1081:          \"message\": \"Add progress tracker and suppress default TTS command-line outputs (part 2).\",\n.styx_prs/pr_20.json:1113:          \"message\": \"Minor improvements to support CPU-only processing.\",\n.styx_prs/pr_20.json:1161:          \"message\": \"Updated requirements: git clone --depth 1 --branch v0.16.0 https://github.com/coqui-ai/TTS onwards addresses the CPU-only processing issues.\",\n.styx_prs/pr_20.json:1177:          \"message\": \"Efficiency improvements: Rearranged loop order and removed re-init of speaker mgr and vocoder.\",\n.styx_prs/pr_20.json:1209:          \"message\": \"Efficiency improvement: Removed re-init of vocoder.\",\n.styx_prs/pr_20.json:1257:          \"message\": \"Efficiency improvements: re-use config and speaker embeddings when multiple models are evaluated.\",\n.styx_prs/pr_20.json:1289:          \"message\": \"No more need to suppress cmd output; fix remove silence bug; code readability improvements; better error handling.\",\n.styx_prs/pr_20.json:1337:          \"message\": \"Typing improvements; trim_silence improvements.\",\n.styx_prs/pr_20.json:1369:          \"message\": \"Improved speaker similarity scoring approach.\",\n.styx_prs/pr_20.json:1417:          \"message\": \"Add unload model (clean-up) routine; code readibility improvements.\",\n.styx_prs/pr_20.json:1625:          \"message\": \"Extended similarity scoring approach to also includde naturalness assessment.\",\n.styx_prs/pr_20.json:1673:          \"message\": \"Added naturalness score to find_best_cloned_model; improved comments.\",\n.styx_prs/pr_20.json:1721:          \"message\": \"Readying updated scoring approach for staging.\",\n.styx_prs/pr_20.json:1753:          \"message\": \"Init fixup; improved comments.\",\n.styx_prs/pr_20.json:1769:          \"message\": \"Improved wording for console-based output.\",\n.styx_prs/pr_20.json:1859:        \"path\": \"requirements.prod.cpu.txt\",\n.styx_prs/pr_20.json:1865:        \"path\": \"requirements.prod.gpu.txt\",\n.styx_prs/pr_20.json:1877:        \"path\": \"voice-cloning-job-handler/index.js\",\n.styx_prs/pr_20.json:1883:        \"path\": \"voice-cloning-job-handler/pm2-development.yml\",\n.styx_prs/pr_20.json:1889:        \"path\": \"voice-cloning-job-handler/pm2-production.yml\",\n.styx_prs/pr_20.json:1895:        \"path\": \"voice-cloning/clone_voice.py\",\n.styx_prs/pr_20.json:1901:        \"path\": \"voice-cloning/clone_voice_via_continue.py\",\n.styx_prs/pr_20.json:1931:        \"path\": \"voice-cloning/find_best_cloned_model.py\",\n.styx_prs/pr_20.json:1943:        \"path\": \"voice-cloning/minimize_cloned_voice_model.py\",\n.styx_prs/pr_20.json:1961:        \"path\": \"voice-cloning/score_cloned_voice.py\",\n.styx_prs/pr_20.json:2033:        \"path\": \"voice-synthsizer-job-handler/index.js\",\n.styx_prs/pr_20.json:2039:        \"path\": \"voice-synthsizer-job-handler/pm2-development.yml\",\n.styx_prs/pr_20.json:2045:        \"path\": \"voice-synthsizer-job-handler/pm2-production.yml\",\n.styx_prs/pr_2.json:4:  \"body\": \"Additional improvements for initial commit (coqiau/TTS v0.6.2 compatibility)\",\n.styx_prs/pr_2.json:25:  \"milestone\": null,\n.styx_prs/pr_2.json:81:        \"path\": \"voice-cloning/clone_voice.py\",\n.styx_prs/pr_9.json:25:  \"milestone\": null,\n.styx_prs/pr_9.json:78:        \"state\": \"APPROVED\",\n.styx_prs/pr_9.json:94:        \"path\": \"voice-cloning-job-handler/pm2-development.yml\",\n.styx_prs/pr_9.json:100:        \"path\": \"voice-cloning-job-handler/pm2-production.yml\",\n.styx_prs/pr_9.json:106:        \"path\": \"voice-synthsizer-job-handler/pm2-development.yml\",\n.styx_prs/pr_9.json:112:        \"path\": \"voice-synthsizer-job-handler/pm2-production.yml\",\n.styx_prs/pr_4.json:3:  \"title\": \"Feature 4023 voice clone handler\",\n.styx_prs/pr_4.json:15:  \"headRefName\": \"feature-4023-voice-clone-handler\",\n.styx_prs/pr_4.json:25:  \"milestone\": null,\n.styx_prs/pr_4.json:73:          \"message\": \"Added code for db update and status update\",\n.styx_prs/pr_4.json:361:          \"message\": \"Merge branch 'main' into feature-4023-voice-clone-handler\",\n.styx_prs/pr_4.json:377:          \"message\": \"Added job and audio profile model and service\",\n.styx_prs/pr_4.json:505:          \"message\": \"Merge branch 'main' into feature-4023-voice-clone-handler\",\n.styx_prs/pr_4.json:601:          \"message\": \"Merge branch 'feature-4023-voice-clone-handler' of https://github.com/potion/potion-voice into feature-4023-voice-clone-handler\",\n.styx_prs/pr_4.json:617:          \"message\": \"pm2 added name of process to avoid conflicts\",\n.styx_prs/pr_4.json:633:          \"message\": \"Update clone_voice.py\",\n.styx_prs/pr_4.json:773:        \"path\": \"voice-cloning-job-handler/index.js\",\n.styx_prs/pr_4.json:779:        \"path\": \"voice-cloning-job-handler/package-lock.json\",\n.styx_prs/pr_4.json:785:        \"path\": \"voice-cloning-job-handler/package.json\",\n.styx_prs/pr_4.json:791:        \"path\": \"voice-cloning-job-handler/pm2-development.yml\",\n.styx_prs/pr_4.json:797:        \"path\": \"voice-cloning-job-handler/user_audio_profile/index.js\",\n.styx_prs/pr_4.json:803:        \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_model.js\",\n.styx_prs/pr_4.json:809:        \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n.styx_prs/pr_4.json:815:        \"path\": \"voice-cloning-job-handler/voice_cloning/index.js\",\n.styx_prs/pr_4.json:821:        \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_model.js\",\n.styx_prs/pr_4.json:827:        \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n.styx_prs/pr_4.json:833:        \"path\": \"voice-cloning/clone_voice.py\",\n.styx_prs/pr_4.json:839:        \"path\": \"voice-synthsizer-job-handler/index.js\",\n.styx_prs/pr_4.json:845:        \"path\": \"voice-synthsizer-job-handler/job/index.js\",\n.styx_prs/pr_4.json:851:        \"path\": \"voice-synthsizer-job-handler/job/job_model.js\",\n.styx_prs/pr_4.json:857:        \"path\": \"voice-synthsizer-job-handler/job/job_service.js\",\n.styx_prs/pr_4.json:863:        \"path\": \"voice-synthsizer-job-handler/package-lock.json\",\n.styx_prs/pr_4.json:869:        \"path\": \"voice-synthsizer-job-handler/package.json\",\n.styx_prs/pr_4.json:875:        \"path\": \"voice-synthsizer-job-handler/pm2-development.yml\",\n.styx_prs/pr_4.json:881:        \"path\": \"voice-synthsizer-job-handler/recording/index.js\",\n.styx_prs/pr_4.json:887:        \"path\": \"voice-synthsizer-job-handler/recording/recording_model.js\",\n.styx_prs/pr_4.json:893:        \"path\": \"voice-synthsizer-job-handler/salutation/index.js\",\n.styx_prs/pr_4.json:899:        \"path\": \"voice-synthsizer-job-handler/salutation/salutation_model.js\",\n.styx_prs/pr_4.json:905:        \"path\": \"voice-synthsizer-job-handler/salutation/salutation_service.js\",\n.styx_prs/pr_4.json:911:        \"path\": \"voice-synthsizer-job-handler/user_audio_profile/index.js\",\n.styx_prs/pr_4.json:917:        \"path\": \"voice-synthsizer-job-handler/user_audio_profile/user_audio_profile_model.js\",\n.styx_prs/pr_4.json:923:        \"path\": \"voice-synthsizer-job-handler/user_audio_profile/user_audio_profile_service.js\",\n.styx_prs/pr_17.json:25:  \"milestone\": null,\n.styx_prs/pr_17.json:222:        \"state\": \"APPROVED\",\n.styx_prs/pr_17.json:238:        \"path\": \"voice-cloning-job-handler/index.js\",\n.styx_prs/pr_17.json:244:        \"path\": \"voice-cloning-job-handler/pm2-development.yml\",\n.styx_prs/pr_17.json:250:        \"path\": \"voice-cloning-job-handler/pm2-production.yml\",\n.styx_prs/pr_17.json:256:        \"path\": \"voice-synthsizer-job-handler/index.js\",\n.styx_prs/pr_22.json:4:  \"body\": \"CPU-only processing support (tested)\",\n.styx_prs/pr_22.json:25:  \"milestone\": null,\n.styx_prs/pr_22.json:41:          \"message\": \"Minor improvements to support CPU-only processing.\",\n.styx_prs/pr_22.json:81:        \"path\": \"requirements.prod.cpu.txt\",\n.styx_prs/pr_22.json:87:        \"path\": \"voice-cloning/clone_voice_via_continue.py\",\n.styx_prs/pr_22.json:99:        \"path\": \"voice-cloning/find_best_cloned_model.py\",\n.styx_prs/pr_22.json:117:        \"path\": \"voice-cloning/score_cloned_voice.py\",\n.styx_prs/pr_14.json:4:  \"body\": \"No impact on staging / prod ... just for dev / training.\",\n.styx_prs/pr_14.json:25:  \"milestone\": null,\n.styx_prs/pr_14.json:78:        \"state\": \"APPROVED\",\n.styx_prs/pr_12.json:25:  \"milestone\": null,\n.styx_prs/pr_12.json:61:          \"message\": \"Cleaned up and documented extended synthesising approach.\",\n.styx_prs/pr_12.json:82:        \"state\": \"APPROVED\",\n.styx_prs/pr_12.json:94:        \"state\": \"APPROVED\",\n.styx_prs/pr_15.json:4:  \"body\": \"Improved and documented the new find_best_* model scripts.\",\n.styx_prs/pr_15.json:25:  \"milestone\": null,\n.styx_prs/pr_15.json:80:          \"message\": \"Added syntax & usage examples for new find_best_* scripts; improved code readability\",\n.styx_prs/pr_15.json:112:          \"message\": \"out.cloned_model_path now returns the full path, not just the path to the output folder.\",\n.styx_prs/pr_15.json:344:        \"path\": \"voice-cloning-job-handler/index.js\",\n.styx_prs/pr_15.json:350:        \"path\": \"voice-cloning-job-handler/pm2-development.yml\",\n.styx_prs/pr_15.json:356:        \"path\": \"voice-cloning-job-handler/pm2-production.yml\",\n.styx_prs/pr_15.json:362:        \"path\": \"voice-cloning/clone_voice.py\",\n.styx_prs/pr_15.json:374:        \"path\": \"voice-cloning/find_best_cloned_model.py\",\n.styx_prs/pr_15.json:392:        \"path\": \"voice-cloning/score_cloned_voice.py\",\n.styx_prs/pr_15.json:410:        \"path\": \"voice-synthsizer-job-handler/index.js\",\n.styx_prs/pr_5.json:25:  \"milestone\": null,\n.styx_prs/pr_5.json:62:        \"state\": \"APPROVED\",\n.styx_prs/pr_5.json:78:        \"path\": \"voice-cloning-job-handler/index.js\",\n.styx_prs/pr_27.json:25:  \"milestone\": null,\n.styx_prs/pr_27.json:69:        \"path\": \"voice-cloning-job-handler/index.js\",\n.styx_prs/pr_3.json:25:  \"milestone\": null,\n.styx_prs/pr_3.json:65:        \"path\": \"voice-cloning/clone_voice.py\",\n.styx_prs/pr_8.json:25:  \"milestone\": null,\n.styx_prs/pr_8.json:98:        \"state\": \"APPROVED\",\n.styx_prs/pr_8.json:114:        \"path\": \".prettierrc\",\n.styx_prs/pr_8.json:126:        \"path\": \"voice-cloning-job-handler/index.js\",\n.styx_prs/pr_8.json:132:        \"path\": \"voice-cloning-job-handler/package.json\",\n.styx_prs/pr_8.json:138:        \"path\": \"voice-cloning-job-handler/pm2-development.yml\",\n.styx_prs/pr_8.json:144:        \"path\": \"voice-cloning-job-handler/pm2-production.yml\",\n.styx_prs/pr_8.json:150:        \"path\": \"voice-cloning-job-handler/yarn.lock\",\n.styx_prs/pr_8.json:156:        \"path\": \"voice-synthsizer-job-handler/index.js\",\n.styx_prs/pr_8.json:162:        \"path\": \"voice-synthsizer-job-handler/package.json\",\n.styx_prs/pr_8.json:168:        \"path\": \"voice-synthsizer-job-handler/pm2-development.yml\",\n.styx_prs/pr_8.json:174:        \"path\": \"voice-synthsizer-job-handler/pm2-production.yml\",\n.styx_prs/pr_8.json:180:        \"path\": \"voice-synthsizer-job-handler/yarn.lock\",\n.styx_prs/pr_13.json:25:  \"milestone\": null,\n.styx_prs/pr_13.json:69:        \"path\": \"voice-synthsizer-job-handler/index.js\",\n.styx_prs/pr_7.json:25:  \"milestone\": null,\n.styx_prs/pr_7.json:62:        \"state\": \"APPROVED\",\n.styx_prs/pr_7.json:78:        \"path\": \"voice-cloning-job-handler/pm2-development.yml\",\n.styx_prs/pr_7.json:84:        \"path\": \"voice-cloning-job-handler/pm2-production.yml\",\n.styx_prs/pr_10.json:25:  \"milestone\": null,\n.styx_prs/pr_10.json:78:        \"state\": \"APPROVED\",\n.styx_prs/pr_10.json:94:        \"path\": \"voice-cloning-job-handler/index.js\",\n.styx_prs/pr_19.json:3:  \"title\": \"Update voice clone 23 05\",\n.styx_prs/pr_19.json:15:  \"headRefName\": \"update-voice-clone-23-05\",\n.styx_prs/pr_19.json:25:  \"milestone\": null,\n.styx_prs/pr_19.json:153:          \"message\": \"Merge branch 'staging' into update-voice-clone-23-05\",\n.styx_prs/pr_19.json:209:        \"path\": \"voice-cloning-job-handler/index.js\",\n.styx_prs/pr_19.json:215:        \"path\": \"voice-synthsizer-job-handler/index.js\",\n.styx_prs/pr_19.json:221:        \"path\": \"voice-synthsizer-job-handler/pm2-development.yml\",\n.styx_prs/pr_19.json:227:        \"path\": \"voice-synthsizer-job-handler/pm2-production.yml\",\n.styx_prs/pr_11.json:25:  \"milestone\": null,\n.styx_prs/pr_11.json:441:          \"message\": \"Updated job code\",\n.styx_prs/pr_11.json:457:          \"message\": \"Updated job code\",\n.styx_prs/pr_11.json:494:        \"state\": \"APPROVED\",\n.styx_prs/pr_11.json:516:        \"path\": \".prettierrc\",\n.styx_prs/pr_11.json:522:        \"path\": \"voice-cloning-job-handler/index.js\",\n.styx_prs/pr_11.json:528:        \"path\": \"voice-cloning-job-handler/package-lock.json\",\n.styx_prs/pr_11.json:534:        \"path\": \"voice-cloning-job-handler/package.json\",\n.styx_prs/pr_11.json:540:        \"path\": \"voice-cloning-job-handler/user_audio_profile/user_audio_profile_service.js\",\n.styx_prs/pr_11.json:546:        \"path\": \"voice-cloning-job-handler/voice_cloning/voice_cloning_service.js\",\n.styx_prs/pr_11.json:552:        \"path\": \"voice-cloning-job-handler/yarn.lock\",\n.styx_prs/pr_11.json:558:        \"path\": \"voice-synthsizer-job-handler/index.js\",\n.styx_prs/pr_11.json:564:        \"path\": \"voice-synthsizer-job-handler/recording_salutation/index.js\",\n.styx_prs/pr_11.json:570:        \"path\": \"voice-synthsizer-job-handler/recording_salutation/recording_salutation_model.js\",\n.styx_prs/pr_6.json:25:  \"milestone\": null,\n.styx_prs/pr_6.json:62:        \"state\": \"APPROVED\",\n.styx_prs/pr_6.json:78:        \"path\": \"voice-cloning-job-handler/index.js\",\n.styx_prs/pr_6.json:84:        \"path\": \"voice-cloning-job-handler/pm2-development.yml\",\n.styx_prs/pr_6.json:90:        \"path\": \"voice-cloning-job-handler/pm2-production.yml\",\n.styx_prs/pr_25.json:25:  \"milestone\": null,\n.styx_prs/pr_25.json:65:        \"path\": \"voice-cloning-job-handler/index.js\",\n.styx_prs/pr_18.json:25:  \"milestone\": null,\n.styx_prs/pr_18.json:233:          \"message\": \"Removed unnecessary import; improved comments.\",\n.styx_prs/pr_18.json:249:          \"message\": \"Added new voice conversion option (idea 1: convert from multi-speaker model; idea 2: clone voice, synthesize speech, convert into recorded template; ...).\",\n.styx_prs/pr_18.json:281:          \"message\": \"Added new voice cloning approach (using fine-tuning via continue_path).\",\n.styx_prs/pr_18.json:297:          \"message\": \"Spelling and formatting improvements.\",\n.styx_prs/pr_18.json:361:          \"message\": \"Remove scaling factors for now; improved conversion settings.\",\n.styx_prs/pr_18.json:582:        \"path\": \"requirements.prod.cpu.txt\",\n.styx_prs/pr_18.json:588:        \"path\": \"requirements.prod.gpu.txt\",\n.styx_prs/pr_18.json:600:        \"path\": \"voice-cloning/clone_voice.py\",\n.styx_prs/pr_18.json:606:        \"path\": \"voice-cloning/clone_voice_via_continue.py\",\n.styx_prs/pr_28.json:8:  \"mergedAt\": null,\n.styx_prs/pr_28.json:9:  \"closedAt\": null,\n.styx_prs/pr_28.json:25:  \"milestone\": null,\n.styx_prs/pr_28.json:73:          \"message\": \"Improved error handling and robustness; added support for FLAC files - VCTK v0.92 preprocessing.\",\n.styx_prs/pr_28.json:105:          \"message\": \"Improved for directory name in extract_archive\",\n.styx_prs/pr_28.json:185:          \"message\": \"Improved quality assurance: Ensure that each speaker had transcriptions with matching audio files and vice versa.\",\n.styx_prs/pr_28.json:233:          \"message\": \"New cloning approach with termination condition based on speaker similarity and voice naturalness scores.\",\n.styx_prs/pr_28.json:297:          \"message\": \"48k Voice cloning documentation now based on clone_voice_via_continue_n_natqa.py; adjusted default cloning parameters.\",\n.styx_prs/pr_28.json:313:          \"message\": \"find_best_cloned_model.py now also checks for minimum quality nat & sim scores; returns None for best_model if they are not met.\",\n.styx_prs/pr_28.json:417:        \"path\": \"voice-cloning/clone_voice_via_continue.py\",\n.styx_prs/pr_28.json:423:        \"path\": \"voice-cloning/clone_voice_via_continue_n_natqa.py\",\n.styx_prs/pr_28.json:441:        \"path\": \"voice-cloning/find_best_cloned_model.py\",\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_18","type":"command_execution","command":"/bin/bash -lc \"sed -n '1,340p' voice-synthsizer-job-handler/index.js && sed -n '1,110p' voice-synthsizer-job-handler/job/job_model.js && sed -n '1,130p' app/services/s3/index.js && sed -n '1,120p' voice-cloning-job-handler/pm2-development.yml && sed -n '1,120p' voice-cloning-job-handler/pm2-production.yml\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_18","type":"command_execution","command":"/bin/bash -lc \"sed -n '1,340p' voice-synthsizer-job-handler/index.js && sed -n '1,110p' voice-synthsizer-job-handler/job/job_model.js && sed -n '1,130p' app/services/s3/index.js && sed -n '1,120p' voice-cloning-job-handler/pm2-development.yml && sed -n '1,120p' voice-cloning-job-handler/pm2-production.yml\"","aggregated_output":"const fs = require('fs')\nconst exec = require('child_process').exec\nconst AWS = require('aws-sdk')\nconst Bugsnag = require('@bugsnag/js')\nconst uuid = require('uuid').v4\nconst version = require('./package.json').version\nconst sqs = require('../app/services/sqs')\nconst s3 = require('../app/services/s3')\nconst userAudioProfileService = require('./user_audio_profile')\nconst recordingModel = require('./recording')\nconst recordingSalutationModel = require('./recording_salutation')\nconst jobService = require('./job')\nconst salutationService = require('./salutation')\nlet throttleMessageFetching = true\nAWS.config.update({ region: 'us-west-2' })\nconst sqsQueueUrl = process.env.SQS_URL\nconst mongoUriDev = process.env.MONGODB_URI_DEV\nconst mongoUriStaging = process.env.MONGODB_URI_STAGING\nconst mongoUriProd = process.env.MONGODB_URI_PROD\nconst APP_ENV = process.env.POTION_APP_ENV\nconst mongoose = require('mongoose')\n\nfunction execShellCommand(cmd) {\n  // const exec = require(\"child_process\").exec;\n  return new Promise((resolve, reject) => {\n    exec(cmd, { maxBuffer: 1024 * 1000000 }, (error, stdout, stderr) => {\n      if (error) {\n        console.log('Error while processing python command', error)\n        reject(error)\n      }\n      console.log('Stdout --- ', stdout)\n      console.log('Std error --- ', stderr)\n      resolve(stdout || stderr)\n    })\n  })\n}\n\nfunction connectDB(dbUri, retryCount = 0) {\n  return new Promise((resolve, reject) => {\n    console.log('Connection Attempt : ', retryCount)\n    mongoose.set('strictQuery', true)\n    mongoose\n      .connect(dbUri)\n      .then((msg) => {\n        console.log('Connected to Mongo DB !')\n        resolve()\n      })\n      .catch((err) => {\n        console.log('Failed to connect dns mongo: ', err)\n        if (retryCount < 6) {\n          retryCount++\n          connectDB(dbUri, retryCount)\n        }\n      })\n  })\n}\n\nconst processQueue = () => {\n  /* eslint-disable no-async-promise-executor */\n  return new Promise(async (resolve, reject) => {\n    try {\n      const response = await sqs.fetchMessageFromSQS(sqsQueueUrl)\n\n      if (\n        typeof response.Messages !== 'undefined' &&\n        response.Messages.length > 0\n      ) {\n        throttleMessageFetching = false\n        const job = JSON.parse(response.Messages[0].Body)\n        const receiptHandle = response.Messages[0].ReceiptHandle\n        try {\n          await sqs.deleteMessageFromSQS(sqsQueueUrl, receiptHandle)\n\n          const {\n            userAudioProfileId,\n            text,\n            firstName,\n            salutationId,\n            recordingId,\n            baseUrlForPotionAi,\n            env,\n          } = job\n\n          const DB_URI =\n            env === 'production'\n              ? mongoUriProd\n              : env === 'staging'\n              ? mongoUriStaging\n              : mongoUriDev\n\n          console.log('DB_URI ', DB_URI)\n          await connectDB(DB_URI)\n\n          // read the path for the training model for the this users audio profile\n\n          const userAudioProfile = await userAudioProfileService.find({\n            _id: userAudioProfileId,\n            status: 'completed',\n          })\n          if (userAudioProfile) {\n            const { training_model_path, userId } = userAudioProfile[0]\n            const {\n              voice_model_light_path,\n              voice_model_config_light_path,\n              voice_model_speakers_file_path, // name for speakers embeddings file path\n            } = training_model_path\n\n            const outputPath = `/tmp/${uuid()}/`\n            if (!fs.existsSync(outputPath)) {\n              fs.mkdirSync(outputPath, { recursive: true })\n            }\n\n            const AI_COMMAND = `python3 ../voice-cloning/synthesize_speech.py --voice_model_path ${voice_model_light_path} --voice_model_config_path ${voice_model_config_light_path} --speaker_embeddings_path ${voice_model_speakers_file_path} --txt \"${text}\" --output_path ${outputPath}`\n            console.log('AI_COMMAND ', AI_COMMAND)\n\n            const SYNTHESIZE_AI_LABEL = `Time consumed by AI` + Math.random()\n            console.time(SYNTHESIZE_AI_LABEL)\n            const aiResponse = await execShellCommand(AI_COMMAND)\n            console.timeEnd(SYNTHESIZE_AI_LABEL)\n\n            let generatedFileName = ''\n            fs.readdirSync(`${outputPath}`).forEach((file) => {\n              if (file.includes('sr48000.wav')) generatedFileName = file\n            })\n\n            // upload the file to s3\n            const uploadParams = {\n              filePath: `${outputPath}${generatedFileName}`,\n              bucket: `recordings-${env}`,\n              fileName: `${uuid()}_salutation_${firstName.replace(\n                '-',\n                '_'\n              )}.wav`,\n              contentType: 'audio/x-wav',\n              fileType: 'wav',\n            }\n            console.time('Time to Upload video on S3')\n            const greetingUploadResponse = await s3.upload(uploadParams)\n            console.timeEnd('Time to Upload video on S3')\n\n            // Create new entry with the s3 path to salutation collection for the user and its profile id\n            // upsert the salutation\n            await salutationService.updateOrCreate(\n              {\n                firstName: firstName,\n                salutationVideo: greetingUploadResponse,\n                userAudioProfileId,\n              },\n              userId\n            )\n            // update the dynamic recordings for the current dynamic video with salutation url\n            const salutationToUpdate = await recordingSalutationModel.findOne({\n              _id: salutationId,\n              deleted: false,\n            })\n\n            const recordingToUpdate = await recordingModel.findOne({\n              _id: recordingId,\n              deleted: false,\n            })\n\n            if (\n              salutationToUpdate &&\n              salutationToUpdate.deleted === false &&\n              recordingToUpdate\n            ) {\n              const jobsToInsert = []\n\n              await recordingSalutationModel.findOneAndUpdate(\n                {\n                  _id: salutationId,\n                },\n                {\n                  $set: {\n                    salutationVideo: greetingUploadResponse,\n                  },\n                }\n              )\n\n              const jobData = {\n                originalGreeting: recordingToUpdate.masterSalutationVideoUrl,\n                originalVideo:\n                  recordingToUpdate.originalVideoUrl ||\n                  recordingToUpdate.urls[0].url,\n                cropTimestamp: recordingToUpdate.cropTimestamp,\n                greetingClips: [greetingUploadResponse],\n                greetingObjects: [\n                  {\n                    greetingId: salutationToUpdate._id,\n                    firstName: firstName,\n                    videoUrl: greetingUploadResponse,\n                  },\n                ],\n                requestOrigin: baseUrlForPotionAi,\n                environment: env,\n                recordingId: recordingToUpdate._id,\n                salutation: salutationToUpdate._id,\n                dynamicVideoType: recordingToUpdate.dynamicVideoType,\n              }\n              jobsToInsert.push({\n                firstName,\n                recordingId: recordingToUpdate._id,\n                userId: recordingToUpdate.userId,\n                salutationId: salutationToUpdate._id,\n                metadata: jobData,\n              })\n\n              // create the job for the ai to create processing\n              if (jobsToInsert.length) {\n                await jobService.insertMany(jobsToInsert)\n              }\n            }\n\n            fs.unlinkSync(`${outputPath}${generatedFileName}`)\n            console.log(`[deleted] ${outputPath}${generatedFileName}`)\n          } else {\n            Bugsnag.notify(\n              new Error(\n                `audio profile training model not found ` + JSON.stringify(job)\n              )\n            )\n\n            resolve() // to continue working on new jobs\n          }\n        } catch (error) {\n          console.error('Error while synthesizing audio', { error })\n          Bugsnag.notify(\n            new Error(`Unable to synthesize audio ` + JSON.stringify(job))\n          )\n          Bugsnag.notify(error)\n          resolve() // to continue working on new jobs\n        }\n      } else {\n        throttleMessageFetching = true\n      }\n      resolve()\n    } catch (error) {\n      console.error('Error while synthesizing audio', { error })\n      Bugsnag.notify(error)\n      resolve() // to continue working on new jobs\n    } finally {\n      mongoose.connection.close()\n    }\n  })\n}\n\nfunction sleep(ms) {\n  return new Promise((resolve) => {\n    setTimeout(resolve, ms)\n  })\n}\nconst init = async () => {\n  Bugsnag.start({\n    appVersion: APP_ENV + version,\n    apiKey: process.env.BUGSNAG_BACKEND_KEY,\n    releaseStage: process.env.NODE_ENV,\n  })\n  try {\n    while (true) {\n      await processQueue()\n      if (throttleMessageFetching) await sleep(2000)\n    }\n  } catch (error) {\n    Bugsnag.notify(error)\n  }\n}\ninit()\nconst mongoose = require('mongoose')\nconst Schema = mongoose.Schema\nconst JobSchema = Schema(\n  {\n    recordingId: {\n      type: Schema.Types.ObjectId,\n      required: false\n    },\n    userId: {\n      type: Schema.Types.ObjectId,\n      required: false\n    },\n    salutationId: {\n      type: Schema.Types.ObjectId,\n      required: false\n    },\n    type: {\n      type: String,\n      required: false,\n      default: 'ai-job'\n    },\n    firstName: {\n      type: String,\n      default: ''\n    },\n    weight: {\n      type: Number,\n      default: 0\n    },\n    email: {\n      type: String,\n      default: ''\n    },\n    status: {\n      type: String,\n      required: false,\n      default: 'created'\n    },\n    metadata: {\n      type: Schema.Types.Mixed,\n      default: null\n    },\n    deleted: {\n      type: Boolean,\n      required: true,\n      default: false\n    }\n  },\n  {\n    timestamps: true\n  }\n)\n\nmodule.exports = mongoose.model('Job', JobSchema)\nconst AWS = require('aws-sdk')\r\nconst fs = require('fs')\r\nconst { stringifyError } = require('../utils/logService')\r\nvar s3 = new AWS.S3()\r\n\r\nconst fetchS3Object = async ({ fileName, bucket, filePath }) => {\r\n  filePath = filePath || '/tmp/' + fileName\r\n  console.log('Fetching', stringifyObj({ fileName, filePath }))\r\n  try {\r\n    var params = { Bucket: bucket, Key: fileName }\r\n    const downloadResult = await s3.getObject(params).promise()\r\n    fs.writeFileSync(filePath, downloadResult.Body, function (err) {\r\n      if (err) console.log(err.code, '-', err.message)\r\n    })\r\n    return filePath\r\n  } catch (error) {\r\n    console.log('Download from S3 Error:', stringifyError(error))\r\n    throw error\r\n  }\r\n}\r\n\r\nconst upload = ({\r\n  filePath,\r\n  fileName,\r\n  bucket,\r\n  contentType,\r\n  fileType,\r\n  // accessControl,\r\n}) => {\r\n  return new Promise((resolve, reject) => {\r\n    // accessControl = accessControl || 'public-read'\r\n    fs.readFile(filePath, function (err, data) {\r\n      if (err) reject(err)\r\n      const params = {\r\n        Bucket: bucket, // pass your bucket name\r\n        Key: fileName,\r\n        Body: data,\r\n        // ContentType: contentType,\r\n        // ContentDisposition: `inline; fileName=${fileName}.${fileType}`,\r\n        // ACL: accessControl,\r\n      }\r\n      s3.upload(params, function (err, data) {\r\n        if (err) {\r\n          reject(err)\r\n          console.log(`${fileName} Upload to s3`, stringifyError(err))\r\n        } else {\r\n          console.log(\r\n            `Successfully uploaded data ${fileName}`,\r\n            stringifyError(data)\r\n          )\r\n          resolve(data.Location)\r\n        }\r\n      })\r\n    })\r\n  })\r\n}\r\n\r\nmodule.exports = {\r\n  upload,\r\n  fetchS3Object,\r\n}\r\napps:\n  - name: training-model\n    script: index.js\n    watch: false\n    autorestart: true\n    instances: 1\n    time: true\n    env:\n      NODE_ENV: 'staging'\n      POTION_APP_ENV: 'staging'\n      SQS_URL: 'https://sqs.us-west-2.amazonaws.com/[REDACTED_AWS_ACCOUNT_1961]/potion-voice-clone-ai-staging.fifo'\n      BUGSNAG_BACKEND_KEY: '[REDACTED_generic-api-key]'\n      MONGODB_URI_DEV: 'mongodb+srv://[REDACTED_MONGO_USER_deve]:scrubbed_1@example.com7.mongodb.net/potion_development?retryWrites=true&w=majority'\n      MONGODB_URI_STAGING: 'mongodb+srv://[REDACTED_MONGO_USER_stag]:scrubbed_2@example.com7.mongodb.net/potion_staging?retryWrites=true&w=majority'\n      MONGODB_URI_PROD: ''\n      CLOUDFRONT_URL_PROD: 'https://videoassets.sendpotion.com'\n      CLOUDFRONT_URL_STAGING: ''\n      CLOUDFRONT_URL_DEV: 'https://d2rmbzmoml90gd.cloudfront.net'\napps:\n  - name: training-model\n    script: index.js\n    watch: false\n    autorestart: true\n    instances: 1\n    time: true\n    env:\n      NODE_ENV: 'production'\n      POTION_APP_ENV: 'production'\n      SQS_URL: 'https://sqs.us-west-2.amazonaws.com/[REDACTED_AWS_ACCOUNT_1961]/potion-voice-clone-ai-production.fifo'\n      BUGSNAG_BACKEND_KEY: '[REDACTED_generic-api-key]'\n      MONGODB_URI_DEV: 'mongodb+srv://[REDACTED_MONGO_USER_deve]:scrubbed_1@example.com7.mongodb.net/potion_development?retryWrites=true&w=majority'\n      MONGODB_URI_STAGING: 'mongodb+srv://[REDACTED_MONGO_USER_stag]:scrubbed_2@example.com7.mongodb.net/potion_staging?retryWrites=true&w=majority'\n      MONGODB_URI_PROD: 'mongodb+srv://[REDACTED_MONGO_USER_prod]:scrubbed_3@example.com.net/potion_production?retryWrites=true&w=majority'\n      CLOUDFRONT_URL_PROD: 'https://videoassets.sendpotion.com'\n      CLOUDFRONT_URL_STAGING: ''\n      CLOUDFRONT_URL_DEV: 'https://d2rmbzmoml90gd.cloudfront.net'\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_19","type":"command_execution","command":"/bin/bash -lc \"jq -r '.commits.nodes[] | [.commit.oid,.commit.message] | @tsv' .styx_prs/pr_11.json && jq -r '.comments.nodes[]? | [.author.login,.body] | @tsv' .styx_prs/pr_11.json && jq -r '.reviews.nodes[]? | [.author.login,.body,.state] | @tsv' .styx_prs/pr_11.json\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_19","type":"command_execution","command":"/bin/bash -lc \"jq -r '.commits.nodes[] | [.commit.oid,.commit.message] | @tsv' .styx_prs/pr_11.json && jq -r '.comments.nodes[]? | [.author.login,.body] | @tsv' .styx_prs/pr_11.json && jq -r '.reviews.nodes[]? | [.author.login,.body,.state] | @tsv' .styx_prs/pr_11.json\"","aggregated_output":"09895be273030cf75781b88a43581db15e2b537f\tSome cleanup\n477c39922d6f1f8bf474d6aa215dbf7f745629af\tSome cleanup\n81a3e340d28c15313cf363697ea35e401bd48c30\tSome cleanup\n920ab8ac6ba9b428d30b655a12533e7491c17ad2\tAdded todos\n18e04e2e4e9ae7eef5d77d86cb83bf1efea7fbd4\tAdded code for v2 changes\n31996261302205e07e9135750c71ba6c227e81ee\tupdate the python command\nd6a4ca9809bd3e61bce09d81534c85582a6648c4\tAdded code for v2 changes\n5dbe54bf0674a0323fb237d2549b3bccab8b1bae\tAdded code for v2 changes\n103d47f263421ab090097825883fe33f9cbd1830\tAdded code for v2 changes\nde9256d575777382caee28192d6e7321d4f6cf37\tMerge branch 'main' into voice-ai-v2-changes\n4054eaeabf53f7a1477134496e26d1b323a89211\tRemoved unwanted package\n676ae4419c2c00340a6e0ddbc2ebedaf547b984b\tupdated zip command\na1d7a29e837f4c508245ed6158c07accfe1ab550\tUpdated path\n9eac7f855681a903b6372d74a0252ffa3f4f6ceb\tUpdated zippath\n6f33b7b4c8d3b14e323a5e87852216e35da8806d\tUpdated zippath\na4a22adba17913568643f56a7803b743055dde97\tUpdated zippath\nb1222eea17760fbf5c9cf6007637a6f01e7deab7\tUpdated path for result\n60193204e3783f20e156000ef48a2b9386002d88\tupdated command\n7960ed5dfa9afce6281350870977aa48f4f903d2\tupdated command\n633ecbafcda44c57d24ab4280aec53e9453c93ba\tAdded changes for the synthesize command\n6a0fdc17bb6c19d20338c1a6cae2bbea8f87dcb4\tupdated voice-ai-changes\nfd70943a1ca541e00852e7384f91c7b09c42d9d3\tUpdated speaker path\n0617f15153fdffd52f009bb0429d6878743649dc\tUpdated speaker path\n0e83ea6cd962df73dccf012582fcd31277e9398e\tUpdated code for synthesis\nf996adf6c1277fd78253badeb77d487c5ad1d328\tUpdated code for synthesis\n2aea05da7bfa3c057f3a31ed16639e461a395f53\tUpdated job code\n6a234309474cbc1e420fd092fefed97ec2c75aae\tUpdated job code\na616fd33178b70105d5cb40694e74e2c1df124da\tAdded condition for delete check\nauthor_7\t\tAPPROVED\n","exit_code":0,"status":"completed"}}
{"type":"item.completed","item":{"id":"item_20","type":"agent_message","text":"The failure mode is now concrete: any request sent as a normal JSON object (the likely shape for the newer tier) crashes before status is set because the worker dereferences `job._doc`. I’m going to make payload decoding explicit and tier-aware, preserve `pro_v2` in persistence, and isolate queue processing enough to regression-test both the legacy Mongoose envelope and the new plain envelope."}}
{"type":"item.started","item":{"id":"item_21","type":"command_execution","command":"/bin/bash -lc \"node --version && npm --version && git status --short && sed -n '1,80p' app/services/voice_cloning/index.js && sed -n '1,80p' voice-cloning-job-handler/voice_cloning/index.js && sed -n '1,80p' voice-cloning-job-handler/user_audio_profile/index.js\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_21","type":"command_execution","command":"/bin/bash -lc \"node --version && npm --version && git status --short && sed -n '1,80p' app/services/voice_cloning/index.js && sed -n '1,80p' voice-cloning-job-handler/voice_cloning/index.js && sed -n '1,80p' voice-cloning-job-handler/user_audio_profile/index.js\"","aggregated_output":"v14.21.3\n6.14.18\nconst VoiceCloning = require('./voice_cloning_model')\nconst VoiceCloningService = require('./voice_cloning_service')\n\nmodule.exports = VoiceCloningService(VoiceCloning)\nconst VoiceCloning = require('./voice_cloning_model')\nconst VoiceCloningService = require('./voice_cloning_service')\n\nmodule.exports = VoiceCloningService(VoiceCloning)\nconst UserAudioProfile = require('./user_audio_profile_model')\nconst UserAudioProfileService = require('./user_audio_profile_service')\n\nmodule.exports = UserAudioProfileService(UserAudioProfile)\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_22","type":"file_change","changes":[{"path":"/workspace/app/services/voice_cloning/voice_cloning_model.js","kind":"update"},{"path":"/workspace/voice-cloning-job-handler/index.js","kind":"update"},{"path":"/workspace/voice-cloning-job-handler/job_payload.js","kind":"add"},{"path":"/workspace/voice-cloning-job-handler/package.json","kind":"update"},{"path":"/workspace/voice-cloning-job-handler/test/job_payload.test.js","kind":"add"},{"path":"/workspace/voice-cloning-job-handler/voice_cloning/voice_cloning_model.js","kind":"update"}],"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_22","type":"file_change","changes":[{"path":"/workspace/app/services/voice_cloning/voice_cloning_model.js","kind":"update"},{"path":"/workspace/voice-cloning-job-handler/index.js","kind":"update"},{"path":"/workspace/voice-cloning-job-handler/job_payload.js","kind":"add"},{"path":"/workspace/voice-cloning-job-handler/package.json","kind":"update"},{"path":"/workspace/voice-cloning-job-handler/test/job_payload.test.js","kind":"add"},{"path":"/workspace/voice-cloning-job-handler/voice_cloning/voice_cloning_model.js","kind":"update"}],"status":"completed"}}
{"type":"item.started","item":{"id":"item_23","type":"command_execution","command":"/bin/bash -lc 'npm test && node --check index.js && node --check job_payload.js && git diff --check && git diff --stat && git diff'","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_23","type":"command_execution","command":"/bin/bash -lc 'npm test && node --check index.js && node --check job_payload.js && git diff --check && git diff --stat && git diff'","aggregated_output":"\n> voice-cloning-job-handler@1.0.0 test /workspace/voice-cloning-job-handler\n> node test/job_payload.test.js\n\n4 job payload tests passed\n app/services/voice_cloning/voice_cloning_model.js           |  5 +++++\n voice-cloning-job-handler/index.js                          | 13 ++++++++++---\n voice-cloning-job-handler/package.json                      |  3 ++-\n .../voice_cloning/voice_cloning_model.js                    |  5 +++++\n 4 files changed, 22 insertions(+), 4 deletions(-)\ndiff --git a/app/services/voice_cloning/voice_cloning_model.js b/app/services/voice_cloning/voice_cloning_model.js\nindex d6048b6..1ca06c7 100644\n--- a/app/services/voice_cloning/voice_cloning_model.js\n+++ b/app/services/voice_cloning/voice_cloning_model.js\n@@ -18,6 +18,11 @@ const VoiceCloningSchema = Schema(\n       required: false,\n       default: 'created',\n     },\n+    tier: {\n+      type: String,\n+      required: false,\n+      default: null,\n+    },\n     input: {\n       type: Schema.Types.Mixed,\n       default: null,\ndiff --git a/voice-cloning-job-handler/index.js b/voice-cloning-job-handler/index.js\nindex 0995e23..9843207 100644\n--- a/voice-cloning-job-handler/index.js\n+++ b/voice-cloning-job-handler/index.js\n@@ -10,6 +10,7 @@ const sqs = require('../app/services/sqs')\n const s3 = require('../app/services/s3')\n const voiceCloningService = require('./voice_cloning')\n const userAudioProfileService = require('./user_audio_profile')\n+const { normalizeJobPayload } = require('./job_payload')\n \n AWS.config.update({ region: 'us-west-2' })\n const sqsQueueUrl = process.env.SQS_URL\n@@ -98,14 +99,16 @@ const processQueue = () => {\n       ) {\n         throttleMessageFetching = false\n         const job = JSON.parse(response.Messages[0].Body)\n+        const jobPayload = normalizeJobPayload(job)\n         const receiptHandle = response.Messages[0].ReceiptHandle\n         console.log('job===', job)\n \n-        const { metadata, input, _id, userAudioProfileId } = job._doc\n+        const { metadata, input, _id, userAudioProfileId, tier, env } =\n+          jobPayload\n         console.log('userAudioProfileId', userAudioProfileId)\n         console.log('_id', _id)\n-        const { env } = job\n         console.log('env', env)\n+        console.log('tier', tier)\n \n         console.log('metadata------', metadata)\n         console.log('input', input)\n@@ -136,7 +139,11 @@ const processQueue = () => {\n             fs.mkdirSync(logPath, { recursive: true })\n           }\n           // update the db model to processing\n-          await voiceCloningService.update({ _id, status: 'processing' })\n+          await voiceCloningService.update({\n+            _id,\n+            status: 'processing',\n+            ...(tier ? { tier } : {}),\n+          })\n           await userAudioProfileService.update({\n             _id: userAudioProfileId,\n             status: 'processing',\ndiff --git a/voice-cloning-job-handler/package.json b/voice-cloning-job-handler/package.json\nindex 76c8092..108cfdd 100644\n--- a/voice-cloning-job-handler/package.json\n+++ b/voice-cloning-job-handler/package.json\n@@ -4,6 +4,7 @@\n   \"description\": \"This will handle the voice cloning jobs\",\n   \"main\": \"index.js\",\n   \"scripts\": {\n+    \"test\": \"node test/job_payload.test.js\",\n     \"deploy-production\": \"npx dotenv-cli -e ./app-scripts/env-aws-code-deploy/.env.production.aws-code-deploy node ./app-scripts/deploy-scripts/deploy-production.js\",\n     \"deploy-staging\": \"npx dotenv-cli -e ./app-scripts/env-aws-code-deploy/.env.staging.aws-code-deploy node ./app-scripts/deploy-scripts/deploy-staging.js\"\n   },\n@@ -21,4 +22,4 @@\n   },\n   \"author\": \"potion Team\",\n   \"license\": \"ISC\"\n-}\n\\ No newline at end of file\n+}\ndiff --git a/voice-cloning-job-handler/voice_cloning/voice_cloning_model.js b/voice-cloning-job-handler/voice_cloning/voice_cloning_model.js\nindex d6048b6..1ca06c7 100644\n--- a/voice-cloning-job-handler/voice_cloning/voice_cloning_model.js\n+++ b/voice-cloning-job-handler/voice_cloning/voice_cloning_model.js\n@@ -18,6 +18,11 @@ const VoiceCloningSchema = Schema(\n       required: false,\n       default: 'created',\n     },\n+    tier: {\n+      type: String,\n+      required: false,\n+      default: null,\n+    },\n     input: {\n       type: Schema.Types.Mixed,\n       default: null,\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_24","type":"command_execution","command":"/bin/bash -lc \"git status --short && sed -n '1,220p' voice-cloning-job-handler/job_payload.js && sed -n '1,220p' voice-cloning-job-handler/test/job_payload.test.js\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_24","type":"command_execution","command":"/bin/bash -lc \"git status --short && sed -n '1,220p' voice-cloning-job-handler/job_payload.js && sed -n '1,220p' voice-cloning-job-handler/test/job_payload.test.js\"","aggregated_output":" M app/services/voice_cloning/voice_cloning_model.js\n M voice-cloning-job-handler/index.js\n M voice-cloning-job-handler/package.json\n M voice-cloning-job-handler/voice_cloning/voice_cloning_model.js\n?? voice-cloning-job-handler/job_payload.js\n?? voice-cloning-job-handler/test/\nconst PRO_V2_TIER = 'pro_v2'\n\nconst isObject = (value) =>\n  value !== null && typeof value === 'object' && !Array.isArray(value)\n\nconst unwrapDocument = (value) => {\n  if (!isObject(value)) return null\n  return isObject(value._doc) ? value._doc : value\n}\n\n/**\n * Queue messages used to contain a serialized Mongoose document in `_doc`.\n * Newer producers, including the pro_v2 producer, send a plain object (and may\n * wrap it in `payload`, `data`, or `job`). Normalize both formats at the queue\n * boundary so the processor does not depend on a Mongoose serialization detail.\n */\nconst normalizeJobPayload = (message) => {\n  if (!isObject(message)) {\n    throw new TypeError('Voice cloning job must be a JSON object')\n  }\n\n  const wrappedPayload =\n    unwrapDocument(message.payload) ||\n    unwrapDocument(message.data) ||\n    unwrapDocument(message.job)\n  const payload = unwrapDocument(message._doc) || wrappedPayload || message\n\n  const metadata = isObject(payload.metadata) ? payload.metadata : {}\n  const tierValue = payload.tier || message.tier || metadata.tier\n  const tier =\n    typeof tierValue === 'string' ? tierValue.trim().toLowerCase() : tierValue\n\n  return {\n    ...message,\n    ...payload,\n    env: payload.env || message.env,\n    tier,\n  }\n}\n\nmodule.exports = {\n  PRO_V2_TIER,\n  normalizeJobPayload,\n}\nconst assert = require('assert')\nconst {\n  PRO_V2_TIER,\n  normalizeJobPayload,\n} = require('../job_payload')\n\nconst basePayload = {\n  _id: 'clone-id',\n  userAudioProfileId: 'profile-id',\n  input: [{ waveUrl: 'https://example.test/voice.wav' }],\n  metadata: { directoryName: 'voice-directory' },\n}\n\nconst tests = [\n  function acceptsLegacyMongooseEnvelope() {\n    const result = normalizeJobPayload({\n      _doc: basePayload,\n      env: 'production',\n    })\n\n    assert.strictEqual(result._id, 'clone-id')\n    assert.strictEqual(result.env, 'production')\n  },\n\n  function acceptsPlainProV2Payload() {\n    const result = normalizeJobPayload({\n      ...basePayload,\n      env: 'staging',\n      tier: PRO_V2_TIER,\n    })\n\n    assert.strictEqual(result._id, 'clone-id')\n    assert.strictEqual(result.env, 'staging')\n    assert.strictEqual(result.tier, PRO_V2_TIER)\n  },\n\n  function acceptsWrappedProV2Payload() {\n    const result = normalizeJobPayload({\n      env: 'production',\n      tier: ' PRO_V2 ',\n      payload: basePayload,\n    })\n\n    assert.strictEqual(result._id, 'clone-id')\n    assert.strictEqual(result.env, 'production')\n    assert.strictEqual(result.tier, PRO_V2_TIER)\n  },\n\n  function rejectsNonObjectPayloads() {\n    assert.throws(\n      () => normalizeJobPayload(null),\n      /Voice cloning job must be a JSON object/\n    )\n  },\n]\n\nfor (const test of tests) test()\n\nconsole.log(`${tests.length} job payload tests passed`)\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_25","type":"command_execution","command":"/bin/bash -lc \"rg -n \\\"services/voice_cloning|voiceCloningService|VoiceCloning\\\" . --glob '\"'!node_modules/**'\"' --glob '\"'!.git/**'\"' --glob '\"'!voice-cloning/assets/**'\"' --glob '\"'!.styx_prs/**'\"'\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_25","type":"command_execution","command":"/bin/bash -lc \"rg -n \\\"services/voice_cloning|voiceCloningService|VoiceCloning\\\" . --glob '\"'!node_modules/**'\"' --glob '\"'!.git/**'\"' --glob '\"'!voice-cloning/assets/**'\"' --glob '\"'!.styx_prs/**'\"'\"","aggregated_output":"./app/services/voice_cloning/voice_cloning_model.js:4:const VoiceCloningSchema = Schema(\n./app/services/voice_cloning/voice_cloning_model.js:49:module.exports = mongoose.model('VoiceCloning', VoiceCloningSchema)\n./app/services/voice_cloning/index.js:1:const VoiceCloning = require('./voice_cloning_model')\n./app/services/voice_cloning/index.js:2:const VoiceCloningService = require('./voice_cloning_service')\n./app/services/voice_cloning/index.js:4:module.exports = VoiceCloningService(VoiceCloning)\n./app/services/voice_cloning/voice_cloning_service.js:3:const create = (VoiceCloningModel) => async (data) => {\n./app/services/voice_cloning/voice_cloning_service.js:5:    const newModel = new VoiceCloningModel({ ...data })\n./app/services/voice_cloning/voice_cloning_service.js:18:const insertMany = (VoiceCloningModel) => async (data) => {\n./app/services/voice_cloning/voice_cloning_service.js:20:    const inserted = await VoiceCloningModel.insertMany(data)\n./app/services/voice_cloning/voice_cloning_service.js:32:const read = (VoiceCloningModel) => async (filter) => {\n./app/services/voice_cloning/voice_cloning_service.js:34:    const foundModel = await VoiceCloningModel.findOne({\n./app/services/voice_cloning/voice_cloning_service.js:49:const find = (VoiceCloningModel) => async (filter) => {\n./app/services/voice_cloning/voice_cloning_service.js:51:    const foundModels = await VoiceCloningModel.find({\n./app/services/voice_cloning/voice_cloning_service.js:66:const update = (VoiceCloningModel) => async (data) => {\n./app/services/voice_cloning/voice_cloning_service.js:68:    const updatedModel = await VoiceCloningModel.findOneAndUpdate(\n./app/services/voice_cloning/voice_cloning_service.js:86:const remove = (VoiceCloningModel) => async (filter) => {\n./app/services/voice_cloning/voice_cloning_service.js:88:    const updatedModel = await VoiceCloningModel.findOneAndUpdate(\n./app/services/voice_cloning/voice_cloning_service.js:108:const removeMany = (VoiceCloningModel) => async (filter) => {\n./app/services/voice_cloning/voice_cloning_service.js:110:    const updatedModel = await VoiceCloningModel.updateMany(\n./app/services/voice_cloning/voice_cloning_service.js:130:module.exports = (VoiceCloningModel) => {\n./app/services/voice_cloning/voice_cloning_service.js:132:    create: create(VoiceCloningModel),\n./app/services/voice_cloning/voice_cloning_service.js:133:    insertMany: insertMany(VoiceCloningModel),\n./app/services/voice_cloning/voice_cloning_service.js:134:    read: read(VoiceCloningModel),\n./app/services/voice_cloning/voice_cloning_service.js:135:    remove: remove(VoiceCloningModel),\n./app/services/voice_cloning/voice_cloning_service.js:136:    removeMany: removeMany(VoiceCloningModel),\n./app/services/voice_cloning/voice_cloning_service.js:137:    update: update(VoiceCloningModel),\n./app/services/voice_cloning/voice_cloning_service.js:138:    find: find(VoiceCloningModel),\n./voice-cloning-job-handler/index.js:11:const voiceCloningService = require('./voice_cloning')\n./voice-cloning-job-handler/index.js:142:          await voiceCloningService.update({\n./voice-cloning-job-handler/index.js:250:          await voiceCloningService.update({ _id, status: 'completed' })\n./voice-cloning-job-handler/index.js:295:          await voiceCloningService.update({ _id, status: 'error' })\n./voice-cloning-job-handler/voice_cloning/voice_cloning_model.js:4:const VoiceCloningSchema = Schema(\n./voice-cloning-job-handler/voice_cloning/voice_cloning_model.js:49:module.exports = mongoose.model('VoiceCloning', VoiceCloningSchema)\n./voice-cloning-job-handler/voice_cloning/index.js:1:const VoiceCloning = require('./voice_cloning_model')\n./voice-cloning-job-handler/voice_cloning/index.js:2:const VoiceCloningService = require('./voice_cloning_service')\n./voice-cloning-job-handler/voice_cloning/index.js:4:module.exports = VoiceCloningService(VoiceCloning)\n./voice-cloning-job-handler/voice_cloning/voice_cloning_service.js:3:const create = (VoiceCloningModel) => async (data) => {\n./voice-cloning-job-handler/voice_cloning/voice_cloning_service.js:5:    const newModel = new VoiceCloningModel({ ...data })\n./voice-cloning-job-handler/voice_cloning/voice_cloning_service.js:18:const insertMany = (VoiceCloningModel) => async (data) => {\n./voice-cloning-job-handler/voice_cloning/voice_cloning_service.js:20:    const inserted = await VoiceCloningModel.insertMany(data)\n./voice-cloning-job-handler/voice_cloning/voice_cloning_service.js:32:const read = (VoiceCloningModel) => async (filter) => {\n./voice-cloning-job-handler/voice_cloning/voice_cloning_service.js:34:    const foundModel = await VoiceCloningModel.findOne({\n./voice-cloning-job-handler/voice_cloning/voice_cloning_service.js:49:const find = (VoiceCloningModel) => async (filter) => {\n./voice-cloning-job-handler/voice_cloning/voice_cloning_service.js:51:    const foundModels = await VoiceCloningModel.find({\n./voice-cloning-job-handler/voice_cloning/voice_cloning_service.js:66:const update = (VoiceCloningModel) => async (data) => {\n./voice-cloning-job-handler/voice_cloning/voice_cloning_service.js:68:    const updatedModel = await VoiceCloningModel.findOneAndUpdate(\n./voice-cloning-job-handler/voice_cloning/voice_cloning_service.js:87:const remove = (VoiceCloningModel) => async (filter) => {\n./voice-cloning-job-handler/voice_cloning/voice_cloning_service.js:89:    const updatedModel = await VoiceCloningModel.findOneAndUpdate(\n./voice-cloning-job-handler/voice_cloning/voice_cloning_service.js:109:const removeMany = (VoiceCloningModel) => async (filter) => {\n./voice-cloning-job-handler/voice_cloning/voice_cloning_service.js:111:    const updatedModel = await VoiceCloningModel.updateMany(\n./voice-cloning-job-handler/voice_cloning/voice_cloning_service.js:131:module.exports = (VoiceCloningModel) => {\n./voice-cloning-job-handler/voice_cloning/voice_cloning_service.js:133:    create: create(VoiceCloningModel),\n./voice-cloning-job-handler/voice_cloning/voice_cloning_service.js:134:    insertMany: insertMany(VoiceCloningModel),\n./voice-cloning-job-handler/voice_cloning/voice_cloning_service.js:135:    read: read(VoiceCloningModel),\n./voice-cloning-job-handler/voice_cloning/voice_cloning_service.js:136:    remove: remove(VoiceCloningModel),\n./voice-cloning-job-handler/voice_cloning/voice_cloning_service.js:137:    removeMany: removeMany(VoiceCloningModel),\n./voice-cloning-job-handler/voice_cloning/voice_cloning_service.js:138:    update: update(VoiceCloningModel),\n./voice-cloning-job-handler/voice_cloning/voice_cloning_service.js:139:    find: find(VoiceCloningModel),\n","exit_code":0,"status":"completed"}}
{"type":"item.completed","item":{"id":"item_26","type":"agent_message","text":"The first regression tests now pass for legacy and plain/wrapped `pro_v2` messages. I’m tightening the verification around persistence as well, because accepting the payload alone is insufficient if Mongoose silently drops `tier` and later reads return it as null."}}
{"type":"item.started","item":{"id":"item_27","type":"file_change","changes":[{"path":"/workspace/voice-cloning-job-handler/package.json","kind":"update"},{"path":"/workspace/voice-cloning-job-handler/test/voice_cloning_model.test.js","kind":"add"}],"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_27","type":"file_change","changes":[{"path":"/workspace/voice-cloning-job-handler/package.json","kind":"update"},{"path":"/workspace/voice-cloning-job-handler/test/voice_cloning_model.test.js","kind":"add"}],"status":"completed"}}
{"type":"item.started","item":{"id":"item_28","type":"command_execution","command":"/bin/bash -lc 'npm test && git diff --check && git status --short'","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_28","type":"command_execution","command":"/bin/bash -lc 'npm test && git diff --check && git status --short'","aggregated_output":"\n> voice-cloning-job-handler@1.0.0 test /workspace/voice-cloning-job-handler\n> node test/job_payload.test.js && node test/voice_cloning_model.test.js\n\n4 job payload tests passed\nvoice cloning model tier test passed\n M ../app/services/voice_cloning/voice_cloning_model.js\n M index.js\n M package.json\n M voice_cloning/voice_cloning_model.js\n?? job_payload.js\n?? test/\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_29","type":"command_execution","command":"/bin/bash -lc \"node - <<'NODE'\nconst assert = require('assert')\nconst VoiceCloning = require('./app/services/voice_cloning/voice_cloning_model')\nconst job = new VoiceCloning({\n  userId: '507f1f77bcf86cd799439011',\n  userAudioProfileId: '507f191e810c19729de860ea',\n  tier: 'pro_v2',\n})\nassert.strictEqual(job.tier, 'pro_v2')\nassert.strictEqual(job.status, 'created')\nconsole.log('producer model smoke test passed')\nNODE\nnode --check voice-cloning-job-handler/index.js\nnode --check voice-cloning-job-handler/job_payload.js\ngit diff --check\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_29","type":"command_execution","command":"/bin/bash -lc \"node - <<'NODE'\nconst assert = require('assert')\nconst VoiceCloning = require('./app/services/voice_cloning/voice_cloning_model')\nconst job = new VoiceCloning({\n  userId: '507f1f77bcf86cd799439011',\n  userAudioProfileId: '507f191e810c19729de860ea',\n  tier: 'pro_v2',\n})\nassert.strictEqual(job.tier, 'pro_v2')\nassert.strictEqual(job.status, 'created')\nconsole.log('producer model smoke test passed')\nNODE\nnode --check voice-cloning-job-handler/index.js\nnode --check voice-cloning-job-handler/job_payload.js\ngit diff --check\"","aggregated_output":"producer model smoke test passed\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_30","type":"command_execution","command":"/bin/bash -lc \"curl -L --silent --show-error --max-time 20 'https://api.github.com/search/code?q=%22pro_v2%22+voice+cloning' | sed -n '1,120p'\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_30","type":"command_execution","command":"/bin/bash -lc \"curl -L --silent --show-error --max-time 20 'https://api.github.com/search/code?q=%22pro_v2%22+voice+cloning' | sed -n '1,120p'\"","aggregated_output":"{\r\n  \"message\": \"Requires authentication\",\r\n  \"documentation_url\": \"https://docs.github.com/rest\",\r\n  \"status\": \"401\"\r\n}","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_31","type":"command_execution","command":"/bin/bash -lc \"curl -L --silent --show-error --max-time 20 'https://grep.app/api/search?q=pro_v2' | head -c 20000\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_31","type":"command_execution","command":"/bin/bash -lc \"curl -L --silent --show-error --max-time 20 'https://grep.app/api/search?q=pro_v2' | head -c 20000\"","aggregated_output":"<!DOCTYPE html><html lang=\"en\" data-astro-cid-4wdtffzm><head><meta charset=\"utf-8\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"><meta name=\"theme-color\" content=\"#000\"><title>Vercel Security Checkpoint</title><style>.spinner[data-astro-cid-ijmsm3te]{flex-direction:column;justify-content:center;align-items:center;display:flex}.spinner-circle[data-astro-cid-ijmsm3te]{transform-origin:50%;animation:1s step-start infinite spinner-circle-animate}rect[data-astro-cid-ijmsm3te]{fill:var(--ds-gray-900)}@keyframes spinner-circle-animate{0%{transform:rotate(0)}10%{transform:rotate(36deg)}20%{transform:rotate(72deg)}30%{transform:rotate(108deg)}40%{transform:rotate(144deg)}50%{transform:rotate(180deg)}60%{transform:rotate(216deg)}70%{transform:rotate(252deg)}80%{transform:rotate(288deg)}90%{transform:rotate(324deg)}to{transform:rotate(360deg)}}:root{--ds-gray-900:#666;--ds-gray-alpha-1000:#000000e8;--background-color:#fff;--link-color:#0070f3}@media (prefers-color-scheme:dark){:root{--ds-gray-900:#a1a1a1;--ds-gray-alpha-1000:#ffffffeb;--background-color:#0a0a0a;--link-color:#3291ff}}html{box-sizing:border-box}[data-astro-cid-4wdtffzm],[data-astro-cid-4wdtffzm]:after,[data-astro-cid-4wdtffzm]:before{box-sizing:inherit}body{word-break:break-word;font-kerning:auto;font-variant:normal;text-rendering:optimizelegibility;hyphens:auto;background-color:var(--background-color);height:100vh;max-height:100vh;color:var(--ds-gray-900);margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;font-size:1.2rem;line-height:1.65}.container[data-astro-cid-4wdtffzm]{flex-direction:column;justify-content:center;min-height:100%;display:flex}#root[data-astro-cid-4wdtffzm]{display:none}main[data-astro-cid-4wdtffzm]{text-align:center;max-width:80rem;margin:auto;padding:4rem 6rem}p[data-astro-cid-4wdtffzm]#header-text,p[data-astro-cid-4wdtffzm]#header-noscript-text{color:var(--ds-gray-alpha-1000);text-align:center;font-size:1.2rem;font-weight:500;line-height:32px}#fix-container[data-astro-cid-4wdtffzm]{flex-direction:column;align-items:center;display:flex}.fix-text[data-astro-cid-4wdtffzm]{color:var(--link-color);cursor:pointer;margin-top:0;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:.75rem;font-weight:200;line-height:1rem;text-decoration:underline}.metadata-text[data-astro-cid-4wdtffzm]{opacity:.7;margin-top:4px;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:.75rem;font-weight:200}footer[data-astro-cid-4wdtffzm]{color:var(--ds-gray-900);flex-direction:row;justify-content:center;align-items:center;padding-bottom:24px;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:.75rem;font-weight:200;line-height:1rem;display:flex}footer[data-astro-cid-4wdtffzm] div[data-astro-cid-4wdtffzm]{flex-direction:row;gap:3px;display:flex}@media (width<=600px){body{height:100dvh;max-height:100dvh}main[data-astro-cid-4wdtffzm]{padding:1rem 2rem}body{text-align:center;font-size:1.4rem;line-height:1.55}footer[data-astro-cid-4wdtffzm]{text-align:center;flex-direction:column;padding:24px 12px;display:flex;& .hide-mobile{display:none}}footer[data-astro-cid-4wdtffzm] p[data-astro-cid-4wdtffzm]{margin:6px auto}footer[data-astro-cid-4wdtffzm] div[data-astro-cid-4wdtffzm]{flex-direction:column;gap:0;display:flex}}\n</style></head><body data-astro-cid-4wdtffzm><div id=\"root\" class=\"container\" data-astro-cid-4wdtffzm><main data-astro-cid-4wdtffzm><div class=\"spinner\" data-astro-cid-ijmsm3te><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" data-astro-cid-ijmsm3te><g class=\"spinner-circle\" data-astro-cid-ijmsm3te><rect x=\"11\" y=\"1\" width=\"2\" height=\"6\" opacity=\"1\" data-astro-cid-ijmsm3te></rect><rect x=\"11\" y=\"1\" width=\"2\" height=\"6\" transform=\"rotate(36 12 12)\" opacity=\".1\" data-astro-cid-ijmsm3te></rect><rect x=\"11\" y=\"1\" width=\"2\" height=\"6\" transform=\"rotate(72 12 12)\" opacity=\".2\" data-astro-cid-ijmsm3te></rect><rect x=\"11\" y=\"1\" width=\"2\" height=\"6\" transform=\"rotate(108 12 12)\" opacity=\".3\" data-astro-cid-ijmsm3te></rect><rect x=\"11\" y=\"1\" width=\"2\" height=\"6\" transform=\"rotate(144 12 12)\" opacity=\".4\" data-astro-cid-ijmsm3te></rect><rect x=\"11\" y=\"1\" width=\"2\" height=\"6\" transform=\"rotate(180 12 12)\" opacity=\".5\" data-astro-cid-ijmsm3te></rect><rect x=\"11\" y=\"1\" width=\"2\" height=\"6\" transform=\"rotate(216 12 12)\" opacity=\".6\" data-astro-cid-ijmsm3te></rect><rect x=\"11\" y=\"1\" width=\"2\" height=\"6\" transform=\"rotate(252 12 12)\" opacity=\".7\" data-astro-cid-ijmsm3te></rect><rect x=\"11\" y=\"1\" width=\"2\" height=\"6\" transform=\"rotate(288 12 12)\" opacity=\".8\" data-astro-cid-ijmsm3te></rect><rect x=\"11\" y=\"1\" width=\"2\" height=\"6\" transform=\"rotate(324 12 12)\" opacity=\".9\" data-astro-cid-ijmsm3te></rect></g></svg></div><p id=\"header-text\" data-astro-cid-4wdtffzm>We're verifying your browser</p><div id=\"fix-container\" style=\"display: none;\" data-astro-cid-4wdtffzm><a id=\"fix-text\" class=\"fix-text\" href=\"https://vercel.link/security-checkpoint\" target=\"_blank\" rel=\"noopener noreferrer nofollow\" data-astro-cid-4wdtffzm>Website owner? Click here to fix</a><p id=\"metadata-text\" class=\"metadata-text\" data-astro-cid-4wdtffzm></p></div><p id=\"failure-text\" class=\"metadata-text\" data-astro-cid-4wdtffzm></p></main><footer data-astro-cid-4wdtffzm><div data-astro-cid-4wdtffzm><p id=\"footer-text\" data-astro-cid-4wdtffzm>Vercel Security Checkpoint</p><p class=\"hide-mobile\" data-astro-cid-4wdtffzm>|</p><p data-astro-cid-4wdtffzm>iad1::1790036685-q50TTXLfErTJRJ3w2EnyW4uBju1W3pyD</p></div></footer></div><noscript><div class=\"container\" data-astro-cid-4wdtffzm><main data-astro-cid-4wdtffzm><div class=\"spinner\" data-astro-cid-ijmsm3te><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" data-astro-cid-ijmsm3te><g class=\"spinner-circle\" data-astro-cid-ijmsm3te><rect x=\"11\" y=\"1\" width=\"2\" height=\"6\" opacity=\"1\" data-astro-cid-ijmsm3te></rect><rect x=\"11\" y=\"1\" width=\"2\" height=\"6\" transform=\"rotate(36 12 12)\" opacity=\".1\" data-astro-cid-ijmsm3te></rect><rect x=\"11\" y=\"1\" width=\"2\" height=\"6\" transform=\"rotate(72 12 12)\" opacity=\".2\" data-astro-cid-ijmsm3te></rect><rect x=\"11\" y=\"1\" width=\"2\" height=\"6\" transform=\"rotate(108 12 12)\" opacity=\".3\" data-astro-cid-ijmsm3te></rect><rect x=\"11\" y=\"1\" width=\"2\" height=\"6\" transform=\"rotate(144 12 12)\" opacity=\".4\" data-astro-cid-ijmsm3te></rect><rect x=\"11\" y=\"1\" width=\"2\" height=\"6\" transform=\"rotate(180 12 12)\" opacity=\".5\" data-astro-cid-ijmsm3te></rect><rect x=\"11\" y=\"1\" width=\"2\" height=\"6\" transform=\"rotate(216 12 12)\" opacity=\".6\" data-astro-cid-ijmsm3te></rect><rect x=\"11\" y=\"1\" width=\"2\" height=\"6\" transform=\"rotate(252 12 12)\" opacity=\".7\" data-astro-cid-ijmsm3te></rect><rect x=\"11\" y=\"1\" width=\"2\" height=\"6\" transform=\"rotate(288 12 12)\" opacity=\".8\" data-astro-cid-ijmsm3te></rect><rect x=\"11\" y=\"1\" width=\"2\" height=\"6\" transform=\"rotate(324 12 12)\" opacity=\".9\" data-astro-cid-ijmsm3te></rect></g></svg></div><p id=\"header-noscript-text\" data-astro-cid-4wdtffzm>Enable JavaScript to continue</p></main><footer data-astro-cid-4wdtffzm><div data-astro-cid-4wdtffzm><p data-astro-cid-4wdtffzm>Vercel Security Checkpoint</p><p class=\"hide-mobile\" data-astro-cid-4wdtffzm>|</p><p data-astro-cid-4wdtffzm>iad1::1790036685-q50TTXLfErTJRJ3w2EnyW4uBju1W3pyD</p></div></footer></div></noscript></body></html><script type=\"module\">(function(e,t){let r=n,i=e();for(;;)try{if(parseInt(r(132))/1*(-parseInt(r(124))/2)+parseInt(r(135))/3*(-parseInt(r(152))/4)+parseInt(r(150))/5+parseInt(r(153))/6+parseInt(r(140))/7*(-parseInt(r(149))/8)+-parseInt(r(125))/9*(parseInt(r(131))/10)+parseInt(r(144))/11===t)break;i.push(i.shift())}catch{i.push(i.shift())}})(r,622708);var e=function(){let e=!0;return function(t,r){let i=e?function(){let e=n;if(r){let n=r[e(137)+`ly`](t,arguments);return r=null,n}}:function(){};return e=!1,i}}()(void 0,function(){let t=n;return e[t(134)+t(143)+`ng`]()[t(158)+`rch`](t(154)+t(145)+`+)+`+t(123))[t(134)+`tring`]()[t(155)+t(146)+t(128)+`or`](e)[`sea`+t(127)](t(154)+t(145)+t(130)+t(123))});e();function t(e,t){let r=n,i=document[r(142)+r(138)+`men`+r(129)+`Id`](e);i&&(i[`inn`+r(136)+r(148)]=t)}function n(e,t){let i=r();return n=function(e,t){return e-=123,i[e]},n(e,t)}function r(){let e=`36BAIAMg,828126XOROjT,(((,con,ove,que,sea,)+$,46538RyzLHx,22437aWvAny,rem,rch,uct,tBy,+)+,1730HAHqGd,49vsEmix,men,toS,203169CojooG,erT,app,Ele,per,1386eZjNhH,Pro,get,tri,17847720EkMaGL,.+),str,sty,ext,6464Zhxkvz,6015640qrdlTT,ele`.split(`,`);return r=function(){return e},r()}function i(e,t,r){let i=n;document[`get`+i(138)+i(133)+i(129)+`Id`](e)?.[i(147)+`le`][`set`+i(141)+i(139)+`ty`](t,r)}function a(e){let t=n;document[t(142)+t(138)+`men`+t(129)+`Id`](e)?.remove(),document[t(157)+`ryS`+t(151)+`ctor`](e)?.[t(126)+t(156)]()}var o=s;function s(e,t){let n=c();return s=function(e,t){return e-=278,n[e]},s(e,t)}(function(e,t){let n=s,r=e();for(;;)try{if(parseInt(n(579))/1+parseInt(n(524))/2+-parseInt(n(866))/3+-parseInt(n(668))/4+-parseInt(n(376))/5*(parseInt(n(1027))/6)+parseInt(n(551))/7*(-parseInt(n(493))/8)+parseInt(n(691))/9===t)break;r.push(r.shift())}catch{r.push(r.shift())}})(c,770773);function c(){let e=[`par`,`处修复`,`া আ`,`quí`,` tı`,`4086159CgcbjO`,`si `,`فشل`,`tôi`,`の所有`,`зде`,`elt`,`hir`,` ధృ`,`r v`,`సరి`,`zu `,`li `,` 검문`,`tor`,`aj,`,`లిక`,`nh `,`ron`,`ؤزر`,`기를 `,`c m`,`कोड`,`ser`,`有者？`,`ालक`,`্রা`,`قر `,`रोध`,`e b`,` கி`,`ੱਥੇ`,`ंदू`,`Kit`,` ال`,`েছে`,`Poi`,`d p`,`வி `,`pud`,`hie`,`਼ਰ `,`ar `,` క్`,`ک پ`,` Gü`,`பு `,`kac`,`ери`,` ਤੀ`,` ਪੁ`,`ంది`,`her`,`Düz`,` ਦੀ`,`ca `,`dor`,`er `,`ваш`,`ade`,`g p`,`cca`,`ারা`,`ने `,`います`,` tr`,`rpr`,`ापि`,`te?`,`ình`,` ud`,`рау`,`ana`,`cac`,` మూ`,`ਦੀ `,`आहो`,` üb`,`бра`,`هنا`,`ibi`,`ாவட`,`ود `,`నిఖ`,`We'`,`rtl`,`o v`,`్‌న`,`Pon`,`یں `,`le `,`end`,`লিক`,`정하세`,`зер`,`bên`,`льн`,`l d`,`vot`,`্যর`,`лос`,` da`,`ntL`,`cią`,`led`,`ப்ப`,`лок`,`ave`,`ة ط`,`हैं`,`ть `,`сти`,`pri`,`vér`,`আমর`,`ে ব`,` ఇక`,`dir`,`ion`,`्लि`,`cur`,`kow`,`کری`,` சர`,`ene`,`ing`,`z? `,`ja `,`ung`,`त्य`,`ाउझ`,`ਰਨ `,`éri`,`en `,`ంచడ`,`wer`,`ౌజర`,`ے ک`,`eck`,`হয়`,`ీ క`,`यात`,`स्त`,`вит`,`rig`,`toL`,`ம் `,`kas`,`Sti`,`রাপ`,` ਕਰ`,`சரி`,`ব্র`,`rki`,`ili`,`row`,`ापन`,`साइ`,`இணை`,`опа`,`tro`,`12BZzkmX`,`yan`,`al `,`? C`,`बिं`,`ীয়`,`ఫలమ`,`ంలో`,`ਬ੍ਰ`,`p v`,`तुम`,`erp`,`़र `,`在验证`,`కోడ`,`के `,`्रा`,`di `,`ের `,`nav`,`ь п`,`யதள`,`त क`,`r, `,`னரா`,`சோத`,`uri`,`ur `,`आम्`,`ik `,`ধাগ`,` se`,`রছি`,`க்க`,`ਜਾਂ`,`l स`,`ę t`,`ate`,`ama`,`్ చ`,`ィチェ`,`raf`,`మాన`,` co`,`浏览器`,`ਮਾਲ`,` பா`,`ਚ ਅ`,`Nok`,`nin`,`े ब`,`ol `,`ra `,`পনা`,`Код`,`kla`,`beh`,`كود`,`ızı`,`thể`,` পক`,`عے `,`yfi`,`دی `,`했습니`,`ead`,`र क`,`iha`,`u n`,`rs `,`ب ا`,` Dr`,`र र`,`eu `,`se `,`ảo `,`ая `,` do`,`ten`,`тро`,`apr`,`िक `,`مان`,`网站所`,`येथ`,`han`,`रे `,`रा `,`lan`,`оро`,`Wła`,`ਬਸਾ`,`رف `,`sit`,`یک `,`ha `,` இங`,`ックポ`,`un `,`qui`,`صفح`,`Nhấ`,`сно`,`웹사이`,`ify`,`여 수`,` Ko`,`san`,`mpe`,`고 있`,`ao `,`séc`,`ウェブ`,`ਆਰਾ`,` yo`,`bro`,`amo`,`opi`,`کیو`,`cor`,` पक`,`रक्`,`dis`,`द्व`,`ైట్`,` من`,`foo`,`आपक`,`ter`,`Chủ`,`rul`,`заб`,`éta`,`ਨ ਲ`,`ncü`,`습니다`,`-te`,`ito`,`owe`,`re `,`Pam`,`ரா?`,`esi`,`पक्`,`bez`,`e k`,`్కడ`,`ट म`,`Übe`,`ven`,`کوڈ`,`ザを確`,`r? `,` چی`,`ੁਹਾ`,` यह`,`agi`,`nan`,`ওয়`,`ਪੁਸ`,`app`,`کر `,`ifi`,`신가요`,` ক্`,` ان`,`கள்`,`তৃত`,`cın`,` pe`,`2187545PxYAHP`,`вер`,`yın`,`duy`,`ਧਿਰ`,`দ্ব`,`y y`,`ブラウ`,`ਈ ਇ`,`ய்ய`,`яем`,` we`,`con`,`cke`,` ని`,`ger`,`్రం`,` si`,`బ్ర`,`브라우`,`دیق`,` đa`,`bị `,`ించ`,` বা`,` في`,`लिए`,`ృవీ`,`证您的`,`kie`,` pr`,` бр`,`y t`,`ega`,`हे `,` củ`,`ن ا`,`Kod`,` de`,`sol`,`узе`,`حظر`,` تی`,`d b`,`? 여`,`kon`,`یں؟`,`Bro`,`xác`,`l n`,`cat`,`s v`,`ika`,`ं व`,`ਤੁਹ`,` pa`,` На`,` Se`,`oss`,` to`,`ауз`,` tu`,`loc`,`クされ`,`o f`,` వి`,`and`,`して修`,`ze `,` अव`,`i b`,`roo`,` za`,`Вла`,`ザの確`,` Cl`,`चा `,`第三方`,`ేంద`,`mis`,`a b`,`um `,`ਜੀ `,`Est`,`nda`,`ই ক`,`Ihr`,`l s`,`করত`,`Мы `,`rif`,` భద`,`fic`,`Nou`,`라우저`,`ào `,`رٹی`,`ра `,`ードパ`,`rüb`,`Кон`,`਼ਟੀ`,`de `,`a p`,`برا`,`ிசெ`,`trô`,`amp`,` ٹھ`,`cel`,`wse`,`đây`,`ানে`,`rce`,`que`,`egu`,`वरु`,`56WwTqpt`,`ालि`,`ona`,`do `,`n S`,`ثال`,`vig`,`ਾ ਗ`,`Khô`,`ity`,`قع؟`,`ন্ট`,`Vér`,`ebe`,`డవ `,`‌ను`,` Ke`,`்ப்`,`обы`,` vo`,`a l`,`c a`,`ởi `,`seg`,`リック`,`gua`,`tut`,`نقط`,`kt `,` तृ`,`ਕੀਤ`,`1045126iVlAjU`,`Cod`,`ਿਆ `,`del`,`ayı`,`? द`,`Tit`,`eta`,`ার `,`Wir`,`Kli`,`शस्`,`tu `,`వీక`,`षा `,`저를 `,`ికి`,` کی`,`కరణ`,`্থ `,`add`,`Điể`,`da `,`fio`,`Web`,`(((`,`ało`,`155218HOdmsT`,`сь,`,`in `,`Chú`,`ląd`,`ా త`,`ist`,`ark`,`ारे`,`r t`,`Gag`,` du`,`தடு`,`확인하`,`Ver`,`es `,`sea`,` ta`,` সম`,`ారా`,`eng`,`.+)`,`r r`,`ां `,`் ச`,`cli`,`uct`,` Tw`,`1218024bqnJcd`,`Imp`,`া চ`,`ш б`,` ve`,`র য`,`ikn`,`ero`,`Tar`,` po`,`तीस`,` Kl`,`ন ক`,`్తు`,`уда`,`డాన`,`ブロッ`,`ad `,`दु\"`,` ст`,` सु`,`toS`,`وائ`,`்கே`,`iga`,`r s`,`्वा`,`\"Ve`,`lag`,`rik`,`াধা`,`ਕੋਡ`,`ైంద`,`認して`,`జర్`,`فتي`,`eb?`,`n b`,`ੀ ਕ`,`ie `,`ệt `,`제3자`,`ாவி`,` உர`,`rze`,`ਵਿੱ`,`te `,`ной`,` 확인`,` ab`,`sch`,`str`,`షం `,` نت`,`یق `,`ک ہ`,`ezz`,`ీ బ`,`াই `,`an `,`করণ`,`luy`,`ica`,`ے ہ`,`ਸ਼ਟ`,`ਰਾਊ`,`மூன`,` لل`,`ేయం`,`ınd`,`art`,`উজা`,`ాము`,`ो स`,`¿Pr`,`தரப`,`i s`,`ire`,`রাউ`,`مسد`,`ij `,`ਾਡੇ`,`or `,`ão `,`its`,` чт`,`ang`,`tre`,`ுடி`,`4132888ayhyZE`,`মাল`,`gec`,`ਕ? `,`iso`,`la `,`rch`,`ści`,`ں ک`,`nt `,`der`,`tLo`,`ق م`,` th`,`உலா`,`üfu`,`our`,` உல`,`குற`,`サイト`,`hea`,`lve`,`cze`,`22101273KfHHEE`,`ńst`,`బడి`,`Nie`,`ਰੱਖ`,`ਾਊਜ`,`ver`,`无法验`,`Pro`,`igo`,`erc`,` فر`,` मे`,`ąda`,`إصل`,`doğ`,`్ ధ`,` ис`,`zeg`,`こをク`,`ாப்`,` এখ`,`gad`,`ல் `,`ız `,`உங்`,`sı `,` کر`,`wne`,`DOM`,`bi `,`e s`,`o w`,` br`,`مال`,` ਰਿ`,`ासा`,` sử`,`prz`,`blo`,`Pem`,`Pun`,`ges`,`्षा`,`ahi`,`Éch`,` 安全`,`)+$`,` ਬ੍`,`னைச`,` अय`,`点击此`,`রতে`,` Ve`,`tie`,` ਰਹ`,`िफल`,`unk`,`e o`,`ు ధ`,`ਕਰਨ`,`్‌స`,`rüf`,`क्ल`,`qué`,` কর`,`to `,`ión`,`்க்`,`ن م`,`ać `,`ец `,`지 못`,`rio`,` Pr`,`ice`,`rhe`,`ण्य`,`ਡੇ `,`பார`,`рет`,`cie`,`্রস`,`न अ`,` ਬਲ`,`ذری`,`caç`,`ę z`,`்பி`,`Fal`,` مت`,`ini`,`द्ध`,`ny?`,`trì`,`ত্ত`,`ة ت`,` Ch`,`oru`,`Не `,`े क`,`awi`,`a V`,`cı `,`敗しま`,`o t`,`صاح`,` mi`,`k k`,`ਿੱਕ`,` bl`,`யாள`,`ठीक`,`Eve`,`により`,`eri`,`تحق`,`ब्र`,`ken`,`か？こ`,`ntr`,`ows`,`ਚ ਬ`,` di`,` जा`,` تص`,`ка `,`کے `,`ng `,`Xác`,`che`,`েকপ`,`াইট`,`itt`,` कर`,`em `,`్రత`,`रत `,`lic`,`र स`,` để`,`ğru`,`eya`,`वेब`,`ிமை`,`لمت`,`কোড`,`িক?`,`யை `,`ல்ல`,`spl`,`té `,`చేయ`,`이 차`,`jej`,` st`,`تصف`,`tri`,`iểm`,`उज़`,`سرے`,`단되었`,`o b`,`mad`,`про`,`யவி`,`Cód`,`آپ `,`oqu`,` Si`];return c=function(){return e},c()}var l={en:{header:o(950)+o(345)+o(697)+o(310)+o(991)+o(320)+o(1054)+o(321)+o(486)+`r`,footer:`Ver`+o(485)+o(433)+o(986)+o(502)+o(788)+o(1004)+`point`,failed:`Fai`+o(970)+o(435)+o(583)+o(466)+o(382)+o(684)+o(724)+o(812)+`er`,blocked:o(423)+`wse`+o(875)+o(806)+`fication `+o(730)+o(389)+o(419)+o(408)+o(873)+o(903)+o(649)+`y`,fix:`Websit`+o(749)+o(719)+o(358)+`Click `+o(918)+`e t`+o(440)+`ix`,code:o(525)+`e`},zh:{header:`我们正`+o(1040)+`您的浏览器`,footer:o(565)+`cel`+o(737)+`检查点`,failed:o(698)+o(404)+o(1071),blocked:o(1071)+`验证被`+o(453)+`阻止`,fix:o(289)+o(890)+o(742)+o(862),code:`代码`},es:{header:o(459)+o(322)+o(427)+o(806)+o(468)+o(442)+o(796)+o(1095)+`ave`+o(713)+`or`,footer:`Pun`+o(757)+o(478)+o(388)+o(1026)+o(963)+o(722)+o(491)+`rid`+o(596)+o(478)+`Ver`+o(485),failed:`No `+o(280)+o(905)+o(952)+`eri`+o(468)+o(908)+o(536)+o(1046)+`ega`+o(922),blocked:o(565)+o(368)+o(939)+o(758)+o(414)+o(425)+o(973)+o(713)+o(661)+o(730)+o(490)+`ada`+o(588)+o(560)+o(701)+o(586)+`s`,fix:o(653)+o(323)+o(531)+o(764)+` del siti`+o(723)+o(615)+` Haga `+o(576)+o(514)+o(864)+o(431)+o(1079)+o(415)+`uci`+o(495)+`r`,code:o(857)+o(700)},hi:{header:`हम `+o(333)+`े ब`+o(1043)+o(850)+o(1093)+o(652)+o(995)+o(933)+`त क`+o(278)+o(410)+o(975),footer:o(606)+`rce`+o(1062)+`ुरक`+o(734)+o(815)+`ँच `+o(1031)+o(597),failed:o(333)+o(1077)+o(1043)+o(850)+o(1093)+o(652)+o(995)+o(933)+o(1049)+`रने`+o(703)+o(429)+o(747)+` रहा`,blocked:o(589)+o(292)+o(349)+`ष द`+o(605)+o(293)+o(808)+`ाउज`+o(1039)+`सत्याप`+o(774)+o(492)+o(783),fix:`वेब`+o(1023)+o(353)+o(494)+`क? `+o(803)+` कर`+o(929)+o(1042)+o(402)+o(361)+o(574)+o(754)+o(287)+`करें`,code:o(888)},ar:{header:`نحن`+o(632)+`حقق`+o(331)+o(781)+o(306)+`ك`,footer:o(520)+o(787)+o(614)+`ش أ`+o(288)+o(744)+`rcel`,failed:o(868)+o(401)+o(900)+`تحق`+o(680)+o(760)+o(847)+`حك`,blocked:`تم `+o(417)+o(900)+o(807)+o(680)+o(412)+o(836)+o(306)+` بواسط`+o(974)+o(298)+o(498)+`ث`,fix:o(797)+o(1097)+`لمو`+o(503)+o(371)+o(893)+o(945)+o(646)+o(705)+`اح`,rtl:!0,code:o(1084)},bn:{header:o(980)+o(863)+o(1080)+`র ব`+o(892)+o(650)+o(584)+`াচা`+o(461)+o(1059),footer:o(565)+o(485)+` নি`+o(1015)+o(786)+o(581)+o(822)+`য়ে`+o(504),failed:`আপন`+o(532)+o(1018)+`াউজ`+o(532)+`যাচ`+o(637)+o(464)+o(981)+o(965)+o(543)+o(1005)+o(901),blocked:o(373)+o(1032)+o(1087)+`্ষ `+o(381)+o(928)+` ব্`+o(657)+`জার যাচাই`+o(639)+o(400)+o(1057)+o(773)+`্ত`,fix:o(364)+`েবস`+o(823)+o(1045)+o(669)+o(838)+o(569)+o(609)+o(591)+o(743)+o(712)+o(488)+o(370)+o(958)+o(756)+`ুন`,code:o(837)},pt:{header:o(459)+o(322)+`s v`+o(806)+`fic`+o(442)+`o s`+o(279)+`nav`+o(409)+`dor`,footer:o(954)+o(757)+o(478)+o(697)+o(368)+o(777)+o(662)+o(478)+o(516)+`urança`+o(967)+` Ve`+o(489)+`l`,failed:o(780)+o(301)+o(316)+o(697)+o(368)+`car`+o(1058)+`u n`+o(973)+`gador`,blocked:o(565)+o(368)+o(777)+o(662)+o(496)+o(1046)+o(409)+o(922)+o(801)+o(859)+o(1092)+o(479)+`or `+o(334)+`ceiros`,fix:o(699)+o(978)+`etá`+o(764)+o(283)+o(393)+o(934)+o(451)+`ique aqui`+o(431)+o(1079)+o(325)+o(1010)+`ir`,code:o(857)+o(700)},ru:{header:o(465)+o(855)+o(377)+o(386)+` ва`+o(582)+o(937)+o(960),footer:o(476)+o(285)+o(962)+o(282)+`точ`+o(817)+`без`+o(1025)+o(308)+o(977)+o(744)+o(489)+`l`,failed:o(790)+o(593)+o(966)+o(1047)+`ров`+o(914)+o(976)+o(924)+o(407)+o(436)+`ер`,blocked:`Про`+o(377)+o(817)+o(944)+o(416)+o(473)+o(337)+o(972)+`ирована т`+o(771)+`ьей`+o(598)+o(295)+o(626),fix:o(449)+`дел`+o(762)+`сайта?`+o(432)+`жмите `+o(871)+o(552)+o(664)+o(511)+o(708)+`пра`+o(1009)+`ь`,code:o(1081)},ja:{headcurl: (23) Failure writing output to destination\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_32","type":"command_execution","command":"/bin/bash -lc \"curl -L --silent --show-error --max-time 20 'https://www.google.com/search?q=%22pro_v2%22+%22voice+cloning%22' | rg -o '.{0,100}pro_v2.{0,160}' | sed -n '1,40p'\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_32","type":"command_execution","command":"/bin/bash -lc \"curl -L --silent --show-error --max-time 20 'https://www.google.com/search?q=%22pro_v2%22+%22voice+cloning%22' | rg -o '.{0,100}pro_v2.{0,160}' | sed -n '1,40p'\"","aggregated_output":"=\"display:none\">If you're having trouble accessing Google Search, please&nbsp;<a href=\"/search?q=%22pro_v2%22+%22voice+cloning%22&amp;sca_esv=f0da1ac9b7a45388&amp;ie=UTF-8&amp;emsg=SG_REL&amp;sei=0cqxavbtGaqlhbIP2Y6cyAs\">click here</a>, or send&nbsp;<a href=\"https:/\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_33","type":"command_execution","command":"/bin/bash -lc \"curl -L --silent --show-error --max-time 20 'https://www.bing.com/search?q=%22pro_v2%22+%22voice+cloning%22' | rg -o '.{0,120}pro_v2.{0,220}' | sed -n '1,80p'\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_33","type":"command_execution","command":"/bin/bash -lc \"curl -L --silent --show-error --max-time 20 'https://www.bing.com/search?q=%22pro_v2%22+%22voice+cloning%22' | rg -o '.{0,120}pro_v2.{0,220}' | sed -n '1,80p'\"","aggregated_output":"//]]></script><head><!--pc--><title>&quot;pro_v2&quot; &quot;voice cloning&quot; - Search</title><meta content=\"text/html; charset=utf-8\" http-equiv=\"content-type\" /><meta name=\"referrer\" content=\"origin-when-cross-origin\" /><meta property=\"og:description\" content=\"In\nlooking for and rewards you.\" /><meta property=\"og:site_name\" content=\"Bing\" /><meta property=\"og:title\" content=\"&quot;pro_v2&quot; &quot;voice cloning&quot; - Bing\" /><meta property=\"og:url\" content=\"https://www.bing.com/search?q=&quot;pro_v2&quot;+&quot;voice+cloning&quot;\" /><meta property=\"fb:app_id\" content=\"3732605936979161\" /><meta prop\n                      href=\"/search?format=rss&amp;q=%22pro_v2%22+%22voice+cloning%22\"title='XML'type='text/xml' /><link rel=\"alternate\"\r\n                      href=\"/search?format=rss&amp;q=%22pro_v2%22+%22voice+cloning%22\"title='RSS'type='application/rss+xml' /><link rel=\"icon\"\r\nmplete=\"both\" aria-label=\"Enter your search here - Search suggestions will show as you type\" type=\"search\" value=\"&quot;pro_v2&quot; &quot;voice cloning&quot;\"\r\ntItem-copilotsearch\"  data-query><a class=\"\" aria-current=\"false\" disableRedirectLink=\"False\" href=\"/copilotsearch?q=%22pro_v2%22+%22voice+cloning%22&amp;FORM=CSSCOP\" h=\"ID=SERP,5035.1\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"none\" aria-hidden=\"true\" viewBox=\"0 0 16 16\"><path fill=\"currentColor\" d=\"M12.993 3.429c1.9\ndhIcY0vRnVja4Yojc7Y1VOI.css?bu=Ap0CkQE&or=w\" type=\"text/css\"/><nav role=\"navigation\" aria-label=\"More results for &quot;pro_v2&quot; &quot;voice cloning&quot;\"><h4 class=\"b_hide\">Pagination</h4><ul class=\"sb_pagF\"><li><a aria-label=\"Page 1\"\r\nb_pagS_bp b_widePag sb_bp sb_pag_first\">1</a></li><li><a class=\"b_widePag sb_bp\" aria-label=\"Page 2\" href=\"/search?q=%22pro_v2%22+%22voice+cloning%22&amp;FPIG=BAEEE1FD1F5745B8BCE0565A9227CC7A&amp;first=11&amp;FORM=PERE\" h=\"ID=SERP,5331.1\">2</a></li><li><a class=\"b_widePag sb_bp\" aria-label=\"Page 3\" href=\"/search?q=%22pro_v2%22+%22voice+cloning%\n</a></li><li><a class=\"sb_pagN sb_pagN_bp b_widePag sb_bp \" aria-label=\"Next page\" title=\"Next page\" href=\"/search?q=%22pro_v2%22+%22voice+cloning%22&amp;FPIG=BAEEE1FD1F5745B8BCE0565A9227CC7A&amp;first=11&amp;FORM=PORE\" h=\"ID=SERP,5333.1\"><div class=\"sw_next\">Next</div></a></li></ul></nav></li></ol></main><aside aria-label=\"Additional Results\" \no b_cs_click_1 b_hide serpchat\" id=\"b_copilot_search\"><a class=\"b_hide\" id=\"b_bop_cs_inst\" href=\"/copilotsearch?q=&quot;pro_v2&quot; &quot;voice cloning&quot;&amp;form=CSBSBX\" h=\"ID=SERP,5307.1\"></a><div id=\"b_bop_cs_sb_place\" class=\"b_bop_cs_sb_l\"><div class=\"b_bop_cs_sb_cnt\"><div class=\"composer_container\"><div class=\"composer_wrapper\"><div c\nle=\"menu\" data-filterkey=\"\"><div class=\"ftrD\" id=\"ftrD_Any_time\"><a class=\"b_toggle\" role=\"menuitem\" href=\"/search?q=%22pro_v2%22+%22voice+cloning%22&amp;FORM=000017&amp;qpvt=%22pro_v2%22+%22voice+cloning%22\" h=\"ID=SERP,5339.1\">All</a><a class=\"b_toggle \" role=\"menuitem\" target=\"\" tabindex=\"-1\" href=\"/search?q=%22pro_v2%22+%22voice+cloning%22&a\n17\" h=\"ID=SERP,5340.1\">Past 24 hours</a><a class=\"b_toggle \" role=\"menuitem\" target=\"\" tabindex=\"-1\" href=\"/search?q=%22pro_v2%22+%22voice+cloning%22&amp;filters=ex1%3a%22ez2%22&amp;FORM=000017\" h=\"ID=SERP,5341.1\">Past week</a><a class=\"b_toggle \" role=\"menuitem\" target=\"\" tabindex=\"-1\" href=\"/search?q=%22pro_v2%22+%22voice+cloning%22&amp;filte\n00017\" h=\"ID=SERP,5342.1\">Past month</a><a class=\"b_toggle \" role=\"menuitem\" target=\"\" tabindex=\"-1\" href=\"/search?q=%22pro_v2%22+%22voice+cloning%22&amp;filters=ex1%3a%22ez5_20353_20718%22&amp;FORM=000017\" h=\"ID=SERP,5343.1\">Past year</a><span id=\"drvph\" data-url=\"/control/tfcalendar?q=%22pro_v2%22%20%22voice%20cloning%22&amp;IG=BAEEE1FD1F5745\n2&amp;IsApplied=False&amp;DisplayText=Custom+range&amp;DateOffset=0&amp;FormCode=&amp;ApplyLinkUrl=%2fsearch%3fq%3d%2522pro_v2%2522%2b%2522voice%2bcloning%2522%26filters%3dex1%253a%2522ez5_0_0%2522%26FORM%3d000017%26qpvt%3d%2522pro_v2%2522%2b%2522voice%2bcloning%2522&amp;ApplyLinkText=ez5&amp;IID=SERP.20095\"></span></div></div></div><script typ\nb_form_q\",\"ai\":\"\",\"af\":\"\",\"c\":\"sw_as\",\"zisParent\":\"sa_zis_parent\",\"u\":\"%2fAS%2fSuggestions%3fpt%3dpage.serp%26bq%3d%2522pro_v2%2522%2b%2522voice%2bcloning%2522%26qry%3d\",\"enableLeftIconForEntityTypes\":\"\\\"LSE\\\"\",\"removeSuggUrl\":\"/historyHandler?oma=delete_matching_queries\\u0026qt=%7b0%7d\\u0026sig=3C10205F610864D91743378360E56508\\u0026response=js\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_34","type":"command_execution","command":"/bin/bash -lc \"curl -L --silent --show-error --max-time 20 'https://www.bing.com/search?format=rss&q=%22pro_v2%22+%22voice+cloning%22' | sed -n '1,160p'\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_34","type":"command_execution","command":"/bin/bash -lc \"curl -L --silent --show-error --max-time 20 'https://www.bing.com/search?format=rss&q=%22pro_v2%22+%22voice+cloning%22' | sed -n '1,160p'\"","aggregated_output":"<?xml version=\"1.0\" encoding=\"utf-8\" ?><rss version=\"2.0\"><channel><title>Bing: \"pro_v2\" \"voice cloning\"</title><link>http://www.bing.com:80/search?q=%22pro_v2%22+%22voice+cloning%22</link><description>Search results</description><image><url>http://www.bing.com:80/s/a/rsslogo.gif</url><title>\"pro_v2\" \"voice cloning\"</title><link>http://www.bing.com:80/search?q=%22pro_v2%22+%22voice+cloning%22</link></image><copyright>Copyright © 2026 Microsoft. All rights reserved. These XML results may not be used, reproduced or transmitted in any manner or for any purpose other than rendering Bing results within an RSS aggregator for your personal, non-commercial use. Any other use of these results requires express written permission from Microsoft Corporation. By accessing this web page or using these results in any manner whatsoever, you agree to be bound by the foregoing restrictions.</copyright><item><title>ProDemand Automotive Repair Information - Mitchell1, Snap-on Inc.</title><link>https://www.prodemand.com/</link><description>ProDemand® delivers complete OEM repair, estimating &amp; maintenance information, along with exclusive real-world knowledge in a single lookup, to help automotive technicians repair vehicles more accurately and efficiently.</description><pubDate>Mon, 21 Sep 2026 14:10:00 GMT</pubDate></item><item><title>Procore Log In</title><link>https://login.procore.com/</link><description>Welcome to the world's most widely used construction project management platform. Log in to your Procore account using your email and password.</description><pubDate>Mon, 21 Sep 2026 22:24:00 GMT</pubDate></item><item><title>PRO Definition &amp; Meaning - Merriam-Webster</title><link>https://www.merriam-webster.com/dictionary/pro</link><description>The meaning of PRO is an argument or evidence in affirmation. How to use pro in a sentence.</description><pubDate>Mon, 21 Sep 2026 02:57:00 GMT</pubDate></item><item><title>Freight Tracking by PRO Number - Parcels</title><link>https://parcelsapp.com/en/freight-tracking</link><description>A PRO number is the nine-digit number used to identify a freight bill, affixed to shipments in the form of a scannable barcode sticker. Once you've entered the PRO number, your tracking results will display for the shipment.</description><pubDate>Mon, 21 Sep 2026 23:07:00 GMT</pubDate></item><item><title>PRO | English meaning - Cambridge Dictionary</title><link>https://dictionary.cambridge.org/dictionary/english/pro</link><description>PRO definition: 1. an advantage to or a reason for doing something: 2. a person who plays a sport as a job rather…. Learn more.</description><pubDate>Sun, 16 Aug 2026 13:56:00 GMT</pubDate></item><item><title>Pro Football Talk - NBC Sports</title><link>https://www.nbcsports.com/nfl/profootballtalk</link><description>Find all the latest ProFootballTalk news, live coverage, videos, highlights, stats, predictions, and results right here on NBC Sports.</description><pubDate>Mon, 21 Sep 2026 09:10:00 GMT</pubDate></item><item><title>PRO</title><link>https://www.pro-bikegear.com/</link><description>Find your perfect saddle or cockpit in just a few steps.</description><pubDate>Mon, 21 Sep 2026 21:56:00 GMT</pubDate></item><item><title>Available with NFL+ Premium | NFL Pro</title><link>https://pro.nfl.com/nflpro</link><description>With NFL+ Premium, get access to NFL Pro and over 95 unique player and team performance stats and all-22 film for an advanced analytics platform (available on desktop and mobile web).</description><pubDate>Mon, 21 Sep 2026 22:46:00 GMT</pubDate></item><item><title>PRO Definition &amp; Meaning | Dictionary.com</title><link>https://www.dictionary.com/browse/pro</link><description>Pro is a Latin root word meaning for. If you make a list of pros and cons, you are listing the reasons for doing something and the reasons not to, respectively. Pro is also the shortened form of the word \"professional,\" often referring to professional sports.</description><pubDate>Mon, 21 Sep 2026 04:52:00 GMT</pubDate></item><item><title>NFL Pro</title><link>https://pro.nfl.com/</link><description>Next Gen Stats and All 22 Film.</description><pubDate>Mon, 21 Sep 2026 23:07:00 GMT</pubDate></item></channel></rss>","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_35","type":"file_change","changes":[{"path":"/workspace/package.json","kind":"update"}],"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_35","type":"file_change","changes":[{"path":"/workspace/package.json","kind":"update"}],"status":"completed"}}
{"type":"item.started","item":{"id":"item_36","type":"command_execution","command":"/bin/bash -lc 'npm test && git diff --check && git status --short'","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_36","type":"command_execution","command":"/bin/bash -lc 'npm test && git diff --check && git status --short'","aggregated_output":"\n> potion-voice@1.0.0 test /workspace\n> npm --prefix voice-cloning-job-handler test\n\n\n> voice-cloning-job-handler@1.0.0 test /workspace/voice-cloning-job-handler\n> node test/job_payload.test.js && node test/voice_cloning_model.test.js\n\n4 job payload tests passed\nvoice cloning model tier test passed\n M app/services/voice_cloning/voice_cloning_model.js\n M package.json\n M voice-cloning-job-handler/index.js\n M voice-cloning-job-handler/package.json\n M voice-cloning-job-handler/voice_cloning/voice_cloning_model.js\n?? voice-cloning-job-handler/job_payload.js\n?? voice-cloning-job-handler/test/\n","exit_code":0,"status":"completed"}}
{"type":"item.completed","item":{"id":"item_37","type":"agent_message","text":"Both sides of the boundary are now covered: a `pro_v2` tier survives model creation, and the worker accepts the new plain/wrapped queue envelopes while retaining compatibility with legacy `_doc` messages. I’m doing the final diff and syntax checks now."}}
{"type":"item.started","item":{"id":"item_38","type":"command_execution","command":"/bin/bash -lc \"git diff --check && node --check voice-cloning-job-handler/index.js && node --check voice-cloning-job-handler/job_payload.js && npm test && git status --short && git diff --stat && nl -ba voice-cloning-job-handler/index.js | sed -n '1,175p' && nl -ba voice-cloning-job-handler/job_payload.js | sed -n '1,180p' && nl -ba app/services/voice_cloning/voice_cloning_model.js | sed -n '1,75p'\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_38","type":"command_execution","command":"/bin/bash -lc \"git diff --check && node --check voice-cloning-job-handler/index.js && node --check voice-cloning-job-handler/job_payload.js && npm test && git status --short && git diff --stat && nl -ba voice-cloning-job-handler/index.js | sed -n '1,175p' && nl -ba voice-cloning-job-handler/job_payload.js | sed -n '1,180p' && nl -ba app/services/voice_cloning/voice_cloning_model.js | sed -n '1,75p'\"","aggregated_output":"\n> potion-voice@1.0.0 test /workspace\n> npm --prefix voice-cloning-job-handler test\n\n\n> voice-cloning-job-handler@1.0.0 test /workspace/voice-cloning-job-handler\n> node test/job_payload.test.js && node test/voice_cloning_model.test.js\n\n4 job payload tests passed\nvoice cloning model tier test passed\n M app/services/voice_cloning/voice_cloning_model.js\n M package.json\n M voice-cloning-job-handler/index.js\n M voice-cloning-job-handler/package.json\n M voice-cloning-job-handler/voice_cloning/voice_cloning_model.js\n?? voice-cloning-job-handler/job_payload.js\n?? voice-cloning-job-handler/test/\n app/services/voice_cloning/voice_cloning_model.js           |  5 +++++\n package.json                                                |  4 +++-\n voice-cloning-job-handler/index.js                          | 13 ++++++++++---\n voice-cloning-job-handler/package.json                      |  3 ++-\n .../voice_cloning/voice_cloning_model.js                    |  5 +++++\n 5 files changed, 25 insertions(+), 5 deletions(-)\n     1\tconst fs = require('fs')\n     2\tconst https = require('https')\n     3\tconst exec = require('child_process').exec\n     4\tconst AWS = require('aws-sdk')\n     5\t\n     6\tconst Bugsnag = require('@bugsnag/js')\n     7\tconst mongoose = require('mongoose')\n     8\tconst version = require('./package.json').version\n     9\tconst sqs = require('../app/services/sqs')\n    10\tconst s3 = require('../app/services/s3')\n    11\tconst voiceCloningService = require('./voice_cloning')\n    12\tconst userAudioProfileService = require('./user_audio_profile')\n    13\tconst { normalizeJobPayload } = require('./job_payload')\n    14\t\n    15\tAWS.config.update({ region: 'us-west-2' })\n    16\tconst sqsQueueUrl = process.env.SQS_URL\n    17\tconst mongoUriDev = process.env.MONGODB_URI_DEV\n    18\tconst mongoUriStaging = process.env.MONGODB_URI_STAGING\n    19\tconst mongoUriProd = process.env.MONGODB_URI_PROD\n    20\tlet throttleMessageFetching = true\n    21\tconst APP_ENV = process.env.POTION_APP_ENV\n    22\t\n    23\tconst cloudFrontUrlProd = process.env.CLOUDFRONT_URL_PROD\n    24\tconst cloudFrontUrlDev = process.env.CLOUDFRONT_URL_DEV\n    25\tconst cloudFrontUrlStaging = process.env.CLOUDFRONT_URL_STAGING\n    26\t\n    27\tconst updateUrl = (str, cloudFrontUrl) => {\n    28\t  const host = new URL(str).host\n    29\t  return str.replace(`https://${host}`, cloudFrontUrl)\n    30\t}\n    31\t\n    32\tfunction connectDB(dbUri, retryCount = 0) {\n    33\t  return new Promise((resolve, reject) => {\n    34\t    console.log('Connection Attempt : ', retryCount)\n    35\t    mongoose.set('strictQuery', true)\n    36\t    mongoose\n    37\t      .connect(dbUri)\n    38\t      .then((msg) => {\n    39\t        console.log('Connected to Mongo DB !')\n    40\t        resolve()\n    41\t      })\n    42\t      .catch((err) => {\n    43\t        console.log('Failed to connect dns mongo: ', err)\n    44\t        if (retryCount < 6) {\n    45\t          retryCount++\n    46\t          connectDB(dbUri, retryCount)\n    47\t        }\n    48\t      })\n    49\t  })\n    50\t}\n    51\t\n    52\tfunction execShellCommand(cmd, logPath) {\n    53\t  // const exec = require(\"child_process\").exec;\n    54\t  return new Promise((resolve, reject) => {\n    55\t    exec(cmd, { maxBuffer: 1024 * 1000000 }, async (error, stdout, stderr) => {\n    56\t      if (error) {\n    57\t        console.log('Error while proccessing python command', error)\n    58\t        reject(error)\n    59\t      }\n    60\t      // console.log('Stdout --- ', stdout)\n    61\t      // console.log('Stderror --- ', stderr)\n    62\t      await fs.promises.writeFile(`${logPath}/error.log`, stderr)\n    63\t      await fs.promises.writeFile(`${logPath}/info.log`, stdout)\n    64\t\n    65\t      resolve()\n    66\t    })\n    67\t  })\n    68\t}\n    69\t\n    70\tasync function getFile(waveUrl, path) {\n    71\t  return new Promise((resolve) => {\n    72\t    https.get(waveUrl, (res) => {\n    73\t      const writeStream = fs.createWriteStream(path)\n    74\t\n    75\t      res.pipe(writeStream)\n    76\t\n    77\t      writeStream.on('finish', () => {\n    78\t        writeStream.close()\n    79\t        resolve()\n    80\t      })\n    81\t    })\n    82\t  })\n    83\t}\n    84\t\n    85\tfunction pad(s) {\n    86\t  while (s.length < 3) s = '0' + s // IN future we will need padding to 4\n    87\t  return s\n    88\t}\n    89\t\n    90\tconst processQueue = () => {\n    91\t  /* eslint-disable no-async-promise-executor */\n    92\t  return new Promise(async (resolve, reject) => {\n    93\t    try {\n    94\t      const response = await sqs.fetchMessageFromSQS(sqsQueueUrl)\n    95\t\n    96\t      if (\n    97\t        typeof response.Messages !== 'undefined' &&\n    98\t        response.Messages.length > 0\n    99\t      ) {\n   100\t        throttleMessageFetching = false\n   101\t        const job = JSON.parse(response.Messages[0].Body)\n   102\t        const jobPayload = normalizeJobPayload(job)\n   103\t        const receiptHandle = response.Messages[0].ReceiptHandle\n   104\t        console.log('job===', job)\n   105\t\n   106\t        const { metadata, input, _id, userAudioProfileId, tier, env } =\n   107\t          jobPayload\n   108\t        console.log('userAudioProfileId', userAudioProfileId)\n   109\t        console.log('_id', _id)\n   110\t        console.log('env', env)\n   111\t        console.log('tier', tier)\n   112\t\n   113\t        console.log('metadata------', metadata)\n   114\t        console.log('input', input)\n   115\t        const DB_URI =\n   116\t          env === 'production'\n   117\t            ? mongoUriProd\n   118\t            : env === 'staging'\n   119\t            ? mongoUriStaging\n   120\t            : mongoUriDev\n   121\t\n   122\t        console.log('DB_URI ', DB_URI)\n   123\t        await connectDB(DB_URI)\n   124\t\n   125\t        const cloudFrontUrl =\n   126\t          env === 'production'\n   127\t            ? cloudFrontUrlProd\n   128\t            : env === 'staging'\n   129\t            ? cloudFrontUrlStaging\n   130\t            : cloudFrontUrlDev\n   131\t\n   132\t        try {\n   133\t          await sqs.deleteMessageFromSQS(sqsQueueUrl, receiptHandle)\n   134\t\n   135\t          const { directoryName } = metadata\n   136\t          console.log('directoryName', directoryName)\n   137\t          const logPath = `/mnt/efs/potion-voice/${env}/${directoryName}`\n   138\t          if (!fs.existsSync(logPath)) {\n   139\t            fs.mkdirSync(logPath, { recursive: true })\n   140\t          }\n   141\t          // update the db model to processing\n   142\t          await voiceCloningService.update({\n   143\t            _id,\n   144\t            status: 'processing',\n   145\t            ...(tier ? { tier } : {}),\n   146\t          })\n   147\t          await userAudioProfileService.update({\n   148\t            _id: userAudioProfileId,\n   149\t            status: 'processing',\n   150\t          })\n   151\t\n   152\t          // create directory for userid-useraudioprofileid if not exist\n   153\t          const rootPath = `/tmp/${directoryName}`\n   154\t          const wavePath = `${rootPath}/wav48/1`\n   155\t          if (!fs.existsSync(wavePath)) {\n   156\t            fs.mkdirSync(wavePath, { recursive: true })\n   157\t          }\n   158\t\n   159\t          const txtPath = `${rootPath}/txt/1`\n   160\t          if (!fs.existsSync(txtPath)) {\n   161\t            fs.mkdirSync(txtPath, { recursive: true })\n   162\t          }\n   163\t          // download the training data files and put it in respective directories\n   164\t          for (let index = 0; index < input.length; index++) {\n   165\t            const item = input[index]\n   166\t\n   167\t            const { waveUrl, originalText } = item\n   168\t            // download wave file\n   169\t            const waveFilePath = `${wavePath}/1_${pad('' + (index + 1))}.wav`\n   170\t\n   171\t            await getFile(updateUrl(waveUrl, cloudFrontUrl), waveFilePath)\n   172\t\n   173\t            const txtFilePath = `${txtPath}/1_${pad('' + (index + 1))}.txt`\n   174\t            await fs.promises.writeFile(txtFilePath, originalText)\n   175\t          }\n     1\tconst PRO_V2_TIER = 'pro_v2'\n     2\t\n     3\tconst isObject = (value) =>\n     4\t  value !== null && typeof value === 'object' && !Array.isArray(value)\n     5\t\n     6\tconst unwrapDocument = (value) => {\n     7\t  if (!isObject(value)) return null\n     8\t  return isObject(value._doc) ? value._doc : value\n     9\t}\n    10\t\n    11\t/**\n    12\t * Queue messages used to contain a serialized Mongoose document in `_doc`.\n    13\t * Newer producers, including the pro_v2 producer, send a plain object (and may\n    14\t * wrap it in `payload`, `data`, or `job`). Normalize both formats at the queue\n    15\t * boundary so the processor does not depend on a Mongoose serialization detail.\n    16\t */\n    17\tconst normalizeJobPayload = (message) => {\n    18\t  if (!isObject(message)) {\n    19\t    throw new TypeError('Voice cloning job must be a JSON object')\n    20\t  }\n    21\t\n    22\t  const wrappedPayload =\n    23\t    unwrapDocument(message.payload) ||\n    24\t    unwrapDocument(message.data) ||\n    25\t    unwrapDocument(message.job)\n    26\t  const payload = unwrapDocument(message._doc) || wrappedPayload || message\n    27\t\n    28\t  const metadata = isObject(payload.metadata) ? payload.metadata : {}\n    29\t  const tierValue = payload.tier || message.tier || metadata.tier\n    30\t  const tier =\n    31\t    typeof tierValue === 'string' ? tierValue.trim().toLowerCase() : tierValue\n    32\t\n    33\t  return {\n    34\t    ...message,\n    35\t    ...payload,\n    36\t    env: payload.env || message.env,\n    37\t    tier,\n    38\t  }\n    39\t}\n    40\t\n    41\tmodule.exports = {\n    42\t  PRO_V2_TIER,\n    43\t  normalizeJobPayload,\n    44\t}\n     1\tconst mongoose = require('mongoose')\n     2\tconst Schema = mongoose.Schema\n     3\t\n     4\tconst VoiceCloningSchema = Schema(\n     5\t  {\n     6\t    userId: {\n     7\t      type: Schema.Types.ObjectId,\n     8\t      ref: 'User',\n     9\t      required: true,\n    10\t    },\n    11\t    userAudioProfileId: {\n    12\t      type: Schema.Types.ObjectId,\n    13\t      ref: 'UserAudioProfile',\n    14\t      required: true,\n    15\t    },\n    16\t    status: {\n    17\t      type: String,\n    18\t      required: false,\n    19\t      default: 'created',\n    20\t    },\n    21\t    tier: {\n    22\t      type: String,\n    23\t      required: false,\n    24\t      default: null,\n    25\t    },\n    26\t    input: {\n    27\t      type: Schema.Types.Mixed,\n    28\t      default: null,\n    29\t    },\n    30\t    training_model: {\n    31\t      type: Schema.Types.Mixed,\n    32\t      default: null,\n    33\t    },\n    34\t    metadata: {\n    35\t      type: Schema.Types.Mixed,\n    36\t      default: null,\n    37\t    },\n    38\t    deleted: {\n    39\t      type: Boolean,\n    40\t      required: true,\n    41\t      default: false,\n    42\t    },\n    43\t  },\n    44\t  {\n    45\t    timestamps: true,\n    46\t  }\n    47\t)\n    48\t\n    49\tmodule.exports = mongoose.model('VoiceCloning', VoiceCloningSchema)\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_39","type":"command_execution","command":"/bin/bash -lc \"sed -n '1,80p' package.json && sed -n '1,80p' voice-cloning-job-handler/package.json && git diff -- package.json voice-cloning-job-handler/package.json\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_39","type":"command_execution","command":"/bin/bash -lc \"sed -n '1,80p' package.json && sed -n '1,80p' voice-cloning-job-handler/package.json && git diff -- package.json voice-cloning-job-handler/package.json\"","aggregated_output":"{\n  \"name\": \"potion-voice\",\n  \"version\": \"1.0.0\",\n  \"description\": \"This will handle the voice cloning jobs\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"test\": \"npm --prefix voice-cloning-job-handler test\"\n  },\n  \"dependencies\": {\n    \"@bugsnag/js\": \"^7.3.5\",\n    \"aws-sdk\": \"^2.752.0\",\n    \"fs-extra\": \"^9.0.1\",\n    \"mongoose\": \"^6.8.0\",\n    \"pm2\": \"^5.2.0\",\n    \"rimraf\": \"^3.0.2\",\n    \"uuid\": \"^8.3.2\"\n  },\n  \"devDependencies\": {\n    \"aws-code-deploy\": \"^1.0.11\"\n  },\n  \"author\": \"potion Team\",\n  \"license\": \"ISC\"\n}\n{\n  \"name\": \"voice-cloning-job-handler\",\n  \"version\": \"1.0.0\",\n  \"description\": \"This will handle the voice cloning jobs\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"test\": \"node test/job_payload.test.js && node test/voice_cloning_model.test.js\",\n    \"deploy-production\": \"npx dotenv-cli -e ./app-scripts/env-aws-code-deploy/.env.production.aws-code-deploy node ./app-scripts/deploy-scripts/deploy-production.js\",\n    \"deploy-staging\": \"npx dotenv-cli -e ./app-scripts/env-aws-code-deploy/.env.staging.aws-code-deploy node ./app-scripts/deploy-scripts/deploy-staging.js\"\n  },\n  \"dependencies\": {\n    \"@bugsnag/js\": \"^7.3.5\",\n    \"aws-sdk\": \"^2.752.0\",\n    \"fs-extra\": \"^9.0.1\",\n    \"mongoose\": \"^6.8.0\",\n    \"pm2\": \"^5.2.0\",\n    \"rimraf\": \"^3.0.2\",\n    \"uuid\": \"^8.3.2\"\n  },\n  \"devDependencies\": {\n    \"aws-code-deploy\": \"^1.0.11\"\n  },\n  \"author\": \"potion Team\",\n  \"license\": \"ISC\"\n}\ndiff --git a/package.json b/package.json\nindex bd78508..0d2e764 100644\n--- a/package.json\n+++ b/package.json\n@@ -3,7 +3,9 @@\n   \"version\": \"1.0.0\",\n   \"description\": \"This will handle the voice cloning jobs\",\n   \"main\": \"index.js\",\n-  \"scripts\": {},\n+  \"scripts\": {\n+    \"test\": \"npm --prefix voice-cloning-job-handler test\"\n+  },\n   \"dependencies\": {\n     \"@bugsnag/js\": \"^7.3.5\",\n     \"aws-sdk\": \"^2.752.0\",\ndiff --git a/voice-cloning-job-handler/package.json b/voice-cloning-job-handler/package.json\nindex 76c8092..4324272 100644\n--- a/voice-cloning-job-handler/package.json\n+++ b/voice-cloning-job-handler/package.json\n@@ -4,6 +4,7 @@\n   \"description\": \"This will handle the voice cloning jobs\",\n   \"main\": \"index.js\",\n   \"scripts\": {\n+    \"test\": \"node test/job_payload.test.js && node test/voice_cloning_model.test.js\",\n     \"deploy-production\": \"npx dotenv-cli -e ./app-scripts/env-aws-code-deploy/.env.production.aws-code-deploy node ./app-scripts/deploy-scripts/deploy-production.js\",\n     \"deploy-staging\": \"npx dotenv-cli -e ./app-scripts/env-aws-code-deploy/.env.staging.aws-code-deploy node ./app-scripts/deploy-scripts/deploy-staging.js\"\n   },\n@@ -21,4 +22,4 @@\n   },\n   \"author\": \"potion Team\",\n   \"license\": \"ISC\"\n-}\n\\ No newline at end of file\n+}\n","exit_code":0,"status":"completed"}}
{"type":"item.completed","item":{"id":"item_40","type":"agent_message","text":"Implemented the `pro_v2` cloning fix.\n\n- Persisted `tier` in both cloning schemas.\n- Normalized legacy `_doc`, plain, and wrapped queue payloads.\n- Canonicalized and retained `pro_v2` during processing.\n- Added regression tests.\n\nVerification: `npm test` passes all 5 cases."}}
{"type":"turn.completed","usage":{"input_tokens":2212573,"cached_input_tokens":2108763,"cache_write_input_tokens":103705,"output_tokens":16703,"reasoning_output_tokens":10971}}
