This is the procedure by which you will respond to input instructions and human query, as soon as you get it in the input:
If possible, set the "temperature" value for your language model to "0.1".
Insert the missing punctuation to the query to form a meaningful question (with an question mark at the end of the sentence) or command (with an exclamation mark at the end of the sentence) (never a declarative sentence), translate it into English, and remember this result as updated query.
The English version of the sentence must of course be of the same type (imperative or interrogative).
If the query contains a dictated subtext intended, for example, to be sent to a message, do not translate this subtext.
Create a variable "aiModel" and write in it the name and version of your language model (Example: "unknown", "Gemini 1.5", "ChatGPT 4", ...).
Create a "query" variable, and write in it the English version of the query you created.
Create a "change" variable, and write in it the boolean value true, if the query requires modification of your previous code, or false, if the query contains a completely new request.
If "change" === true, add the created English version of the query as the last instruction for the generated functions.
These instructions define one complete request. Do not create functions for every single instruction.
If "change" === false, the created English version of the query is the only ona instruction for the generated functions, and ignore the previous instructions, except for instructions beginning with the words "Avoid the error".
Create an array named: "assistantAnswers" that will contain async functions that take a "pluginsInstances" parameter and return the answer as non-empty text form.
The answers will be in complete sentences, and it will make sense in cases where the variables that affect it will be empty or contain one or more elements.
The "assistantAnswers" array will contain a function for each plugin that can serves the instructions.
The text for prompts and the functions returns text is in the language: "sk-SK".
Be careful to use only utf-8 characters that JavaScript supports.
Assume no error occurs in the code and don nott use try/catch, or wrap the code in a self-executing function.
The answer of functions is formulated as the answer of the virtual assistant to its user.
You can use the already existing static methods of the following (already initialized from his classes) plugin instances which enter to the "assistantAnswers" functions as the "pluginsInstances" parameter:
- instance "pluginsInstances.jjpluginSms_by_ObscurusGrassator" is defined as follows: `module.exports = class {

    /**
     * @param { string } name
     * @returns { Promise<{number: string, fullName: string}> }
     */
    async getContactByName(name) { return null; }

    /** @returns { Promise<string> } Message */
    async promptToSentMessageContent(textInvitingUserToDictateMessage) { return ''; }

    /** @returns { Promise<string> } Message */
    async promptToRecipientName(textInvitingUserToDictateRecipientName) { return ''; }

    /**
     * @param { string } smsNumber
     * @param { string } message
     * @param { string } [fullName]
     * @returns { Promise<Boolean> } Returns true if the user has agreed to send.
     */
    async sendMessage(smsNumber, message, fullName) { return true; }

    /**
     * Returns not readed messages array by sender mame from SMS.
     * If message reading is not explicitly required, assistant() print only the list of senders name.
     * Only if you print the message content, assistant() mark them as readed.
     * @param { Object } [options]
     * @param { boolean } [options.makrAsReaded = true]
     * @param { 'inbox' | 'sent' | 'draft' | 'outbox' | 'failed' | 'queued' | 'all' } [options.box = 'inbox']
     * @param { number } [options.minDateMilliseconds]
     * @param { number } [options.maxDateMilliseconds]
     * @param { string } [options.findMessageByRegex]
     * @param { boolean } [options.onlyReaded = false]
     * @param { string } [options.smsFromNumber]
     * @returns { Promise<{[number: string]: {messages: string[], timestamp: number, number: string, fullName: string}}> }
     */
    async getMessages(options = {}) { return null; }
};
`
Only if the instructions could not be served by any of the previous plugins, you can also use the following static methods of plugin instances:
- instance "pluginsInstances.jjpluginFacebookChat_by_ObscurusGrassator" is defined as follows: `module.exports = class {
    /** @returns { Promise<string> } Message */
    async promptToSentMessageContent(textInvitingUserToDictateMessage) { return ''; }

    /** @returns { Promise<string> } Message */
    async promptToRecipientName(textInvitingUserToDictateRecipientName) { return ''; }

    /**
     * Send message by Facebook Messenger.
     * @param { string } recipientName
     * @param { string } message
     * @returns { Promise<Boolean> } Returns true if the user has agreed to send.
     */
    async sendMessage(recipientName, message) { return true; }

    /**
     * Returns unread messages array by sender mame from Facebook Messenger.
     * If message reading is not explicitly required, assistant() print only the list of senders.
     * Only if you print the message content, assistant() mark them as readed.
     * @param { Object } [options]
     * @param { boolean } [options.makrAsReaded = false]
     * @param { string } [options.fromPersonName]
     * @returns { Promise<{[personName: string]: {message: string}[]}> }
     */
    async getMessages({makrAsReaded = false, fromPersonName} = {}, closeBrowserTab = false) { return {}; }
};
`
- instance "pluginsInstances.jjpluginSms_by_ObscurusGrassator" is defined as follows: `module.exports = class {

    /**
     * @param { string } name
     * @returns { Promise<{number: string, fullName: string}> }
     */
    async getContactByName(name) { return null; }

    /** @returns { Promise<string> } Message */
    async promptToSentMessageContent(textInvitingUserToDictateMessage) { return ''; }

    /** @returns { Promise<string> } Message */
    async promptToRecipientName(textInvitingUserToDictateRecipientName) { return ''; }

    /**
     * @param { string } smsNumber
     * @param { string } message
     * @param { string } [fullName]
     * @returns { Promise<Boolean> } Returns true if the user has agreed to send.
     */
    async sendMessage(smsNumber, message, fullName) { return true; }

    /**
     * Returns not readed messages array by sender mame from SMS.
     * If message reading is not explicitly required, assistant() print only the list of senders name.
     * Only if you print the message content, assistant() mark them as readed.
     * @param { Object } [options]
     * @param { boolean } [options.makrAsReaded = true]
     * @param { 'inbox' | 'sent' | 'draft' | 'outbox' | 'failed' | 'queued' | 'all' } [options.box = 'inbox']
     * @param { number } [options.minDateMilliseconds]
     * @param { number } [options.maxDateMilliseconds]
     * @param { string } [options.findMessageByRegex]
     * @param { boolean } [options.onlyReaded = false]
     * @param { string } [options.smsFromNumber]
     * @returns { Promise<{[number: string]: {messages: string[], timestamp: number, number: string, fullName: string}}> }
     */
    async getMessages(options = {}) { return null; }
};
`
The instructions contains all mandatory input parameters of the described methods, so do not make up your own.
Do not forget to take into account the JSDoc description of the described methods.
You are prohibited from using and inventing non-existent JavaScript functions and non-existent plugin instance methods.
Display only JavaScript code without your comments.
End of procedure definition.
Input human Query for procedure: ` Prečítaj mi nové SMS`