(async () => { router.setNextAction("Next"); // Did the Model Respond? if (recognizedObject.answers.length) { // Yes router.log("Model Responded"); router.log({ answers: recognizedObject.answers }); const activeAgent = router.getActiveAgent(); if (activeAgent) { router.log("Model Responded -> Agent Active"); router.log(activeAgent); router.setNextAction("ReturnAnswers"); } else { router.log("Model Responded -> No Agent Active"); if (router.hasNext()) { router.log("Model Responded -> No Agent Active -> Router Has next"); // Run Next Agent router.setNextAction("RunNextAgent"); } else { router.log("Model Responded -> No Agent Active -> Router Empty"); // Return Answers // Run Next Agent router.setNextAction("ReturnAnswers"); } } } else { router.log("Model Did Not Respond"); // No const activeAgent = router.getActiveAgent(); if (activeAgent) { router.log("Model Did Not Respond -> Agent Active"); router.log("Deactivate Agent because it didn't respond"); // Deactivate Agent because it didn't respond activeAgent.state = "Deactivated Agent because it didn't respond"; } if (router.hasNext()) { router.log("Model Did Not Respond -> Router Has next"); // Assign Agents // Run Next Agent router.setNextAction("RunNextAgent"); } else { router.log("Model Did Not Respond -> Router Empty"); router.log("Assign Agents"); await router.assignAgents(); if (router.hasNext()) { router.log( "Model Did Not Respond -> Router was Empty -> Router has next" ); router.setNextAction("RunNextAgent"); } else { router.log( "Model Did Not Respond -> Router was Empty -> Router still Empty" ); // Return Answers router.setNextAction("Next"); } } } })() .catch((e) => { router.log(e); }) .finally(() => { router.log("Router Next Action: " + router.getNextAction()); next(); });