[Issue]: Group chat behavior with subclassed RetrieveUserProxyAgent

Describe the issue
I subclassed RetrieveUserProxyAgent in order to create some custom RAG behavior using my own embeddings, embedding function, etc. When I run the group chat it doesn't behave as I expect it, I expect the main UserProxyAgent to pass the problem to the RetrieveUserProxyAgent who will then respond with relevant docs from the embedding db along with a response, and then rinse and repeat. However, that is not the case sometimes the RetrieveUserProxyAgent isn't event called. I am sure this is due to some oversight or misconfiguration from my end.
Steps to reproduce
There isn't really a bug or error occurring per se, I will just detail the main parts of the code I am working with, here is my RetrieveUserProxyAgent subclass:
class EmbeddingRetrieverAgent(RetrieveUserProxyAgent):
    def __init__(
        self,
        name="RetrieveChatAgent",  # default set to RetrieveChatAgent
        human_input_mode: Optional[str] = "ALWAYS",
        is_termination_msg: Optional[Callable[[Dict], bool]] = None,
        retrieve_config: Optional[Dict] = None,  # config for the retrieve agent
        **kwargs,
    ):
        # TODO: cname as param to __init__ (datastore_name?), ef as well?
        self.embedding_function = get_embedding_func()
        self.dbconn = get_db_connection(
            cname="init_vecdb", efunc=self.embedding_function
        )
        super().__init__(
            name=name,
            human_input_mode=human_input_mode,
            is_termination_msg=is_termination_msg,
            retrieve_config=retrieve_config,
            **kwargs,
        )
    def query_vector_db(
        self,
        query_texts: List[str],
        n_results: int = 10,
        search_string: str = None,
        **kwargs,
    ) -> Dict[str, List[List[str]]]:
        # ef = get_embedding_func()
        # embed_response = self.embedding_function.embed_query(query_texts)
        # print(embed_response)
        relevant_docs = self.dbconn.similarity_search_with_relevance_scores(
            query=query_texts,
            k=n_results,
        )

        # TODO: get actual id from langchain
        # They need the docs as a list of lists...
        sim_score = [relevant_docs[i][1] for i in range(len(relevant_docs))]
        return {
            "ids": [[i] for i in range(len(relevant_docs))],
            "documents": [[doc[0].page_content] for doc in relevant_docs],
            "metadatas": [
                {**doc[0].metadata, "similarity_score": score}
                for doc, score in zip(relevant_docs, sim_score)
            ],
        }

    def retrieve_docs(
        self, problem: str, n_results: int = 4, search_string: str = None, **kwargs
    ):
        """
        Args:
            problem (str): the problem to be solved.
            n_results (int): the number of results to be retrieved. Default is 20.
            search_string (str): only docs that contain an exact match of this string will be retrieved. Default is "".
        """
        results = self.query_vector_db(
            query_texts=problem,
            n_results=n_results,
            search_string=search_string,
            # embedding_function=get_embedding_func(),
            # embedding_model="text-embedding-ada-002",
            **kwargs,
        )
        # print(results)
        # # TODO: The northern winds blow strong...
        self._results = results  # Why?: It is a class property; state repr i guess?
        return results

I am slightly confused between the use of the query_texts and search_string params and am assuming the search_string param is not required. Other than that the retrieve_docs functionality works perfectly and gets the relevant docs as expected.
Screenshots and logs
Here is a basic example of my EmbeddingRetrieverAgent interacting with an AssistantAgent:
from autogen import AssistantAgent, UserProxyAgent
from agents.agents import EmbeddingRetrieverAgent
from agents.agent_conf import base_cfg

asst = AssistantAgent("asst", llm_config=base_cfg)
retriever = EmbeddingRetrieverAgent("infoman",llm_config=base_cfg)
PROBLEM = "I want to understand the agent tuning paper and come out with a minimal implementation of some of the core ideas in the paper the code must be executable."

Output from running the above code:
Adding doc_id 0 to context.
infoman (to asst):
You're a retrieve augmented chatbot. You answer user's questions based on your own knowledge and the
context provided by the user. You should follow the following steps to answer a question:
Step 1, you estimate the user's intent based on the question and context. The intent can be a code generation task or
a question answering task.
Step 2, you reply based on the intent.
If you can't answer the question with or without the current context, you should reply exactly UPDATE CONTEXT.
If user's intent is code generation, you must obey the following rules:
Rule 1. You MUST NOT install any packages because all the packages needed are already installed.
Rule 2. You must follow the formats below to write your code:
# your code

If user's intent is question answering, you must give as short an answer as possible.
User's question is: I want to understand the agent tuning paper and come out with a minimal implementation of some of the core ideas in the paper the code must be executable.
Context is: To fundamentally enable generalized agent abilities for LLMs, we introduce a simple and gen- eral approach AgentTuning as shown in Figure 2. AgentTuning consists of two components: a lightweight instruct-tuning dataset AgentInstruct and a hybrid instruction-tuning strategy that en- hances the agent’s capabilities while preserving its generalization ability. As shown in Table 1, AgentInstruct covers 1,866 verified interaction trajectories with high-quality Chain-of-Thought (CoT) rationale (Wei et al., 2022b) for each decision step from six diverse agent tasks. For each agent task, one interaction trajectory is collected through three phases: instruction construction, tra- jectory interaction by employing GPT-4 as the agent, and trajectory filtering depending on its reward score. To enhance LLMs’ agent capabilities while preserving their general abilities, we experiment with a hybrid instruction-tuning strategy. The idea is to mix AgentInstruct with high-quality and general data at a

asst (to infoman):
Step 1: The user's intent is a code generation task. They want to implement core ideas from a paper on agent tuning, specifically a minimal executable code based on the described AgentTuning approach.
Step 2: To provide a minimal implementation of the core ideas described in the paper, we would need to create a dataset similar to AgentInstruct and implement a hybrid instruction-tuning strategy. However, creating a dataset and a full implementation would be beyond the scope of this platform. Instead, I can provide a simplified example of how one might structure code to simulate the described approach.
The following Python code is a conceptual example that simulates the process of instruction construction, trajectory interaction, and trajectory filtering. It does not implement the actual machine learning or natural language processing algorithms described in the paper, as those would require a much more complex setup and are not feasible to implement here.
import random

# Simulated dataset of instructions and their associated rewards
agent_instruct = [
    ("instruction 1", 0.9),
    ("instruction 2", 0.85),
    ("instruction 3", 0.95),
    # ... more instructions with their rewards
]

# Simulated function to interact with an agent (e.g., GPT-4)
def interact_with_agent(instruction):
    # This function would actually interact with a model like GPT-4
    # For this example, we simulate it with a random response
    return random.choice(["response 1", "response 2", "response 3"])

# Simulated function to filter trajectories based on reward score
def filter_trajectories(trajectories, threshold=0.9):
    # Filter out trajectories with a reward score below the threshold
    return [t for t in trajectories if t[1] >= threshold]

# Main function to simulate AgentTuning
def agent_tuning_simulation():
    # Phase 1: Instruction construction (simulated here as selection from a dataset)
    selected_instructions = random.sample(agent_instruct, 3)

    # Phase 2: Trajectory interaction
    interactions = [(instr, interact_with_agent(instr)) for instr, _ in selected_instructions]

    # Phase 3: Trajectory filtering
    filtered_interactions = filter_trajectories(selected_instructions)

    return filtered_interactions

# Execute the simulation
filtered_interactions = agent_tuning_simulation()
print(filtered_interactions)

This code is a highly simplified representation and does not perform any real instruction tuning or interaction with a language model. It is meant to illustrate the concept of selecting instructions, interacting with an agent, and filtering based on rewards, as described in the context.

infoman (to asst):
Proceed with refining it

asst (to infoman):
UPDATE CONTEXT

infoman (to asst):
TERMINATE

In this case you can see from the context that the RetrieveUserProxyAgent successfully retrieved some information and added it to the context. However I want to iterate over the generated code and not get stuck in this UPDATE CONTEXT loop sometimes. There is much more infromation to be retrieved such as actual source code embeddings that the RetrieveUserProxyAgent is missing out on.

Here is another example run with the same code:
Adding doc_id 0 to context.
infoman (to asst):
You're a retrieve augmented chatbot. You answer user's questions based on your own knowledge and the
context provided by the user. You should follow the following steps to answer a question:
Step 1, you estimate the user's intent based on the question and context. The intent can be a code generation task or
a question answering task.
Step 2, you reply based on the intent.
If you can't answer the question with or without the current context, you should reply exactly UPDATE CONTEXT.
If user's intent is code generation, you must obey the following rules:
Rule 1. You MUST NOT install any packages because all the packages needed are already installed.
Rule 2. You must follow the formats below to write your code:
# your code

If user's intent is question answering, you must give as short an answer as possible.
User's question is: I want to understand the agent tuning paper and come out with a minimal implementation of some of the core ideas in the paper the code must be executable.
Context is: To fundamentally enable generalized agent abilities for LLMs, we introduce a simple and gen- eral approach AgentTuning as shown in Figure 2. AgentTuning consists of two components: a lightweight instruct-tuning dataset AgentInstruct and a hybrid instruction-tuning strategy that en- hances the agent’s capabilities while preserving its generalization ability. As shown in Table 1, AgentInstruct covers 1,866 verified interaction trajectories with high-quality Chain-of-Thought (CoT) rationale (Wei et al., 2022b) for each decision step from six diverse agent tasks. For each agent task, one interaction trajectory is collected through three phases: instruction construction, tra- jectory interaction by employing GPT-4 as the agent, and trajectory filtering depending on its reward score. To enhance LLMs’ agent capabilities while preserving their general abilities, we experiment with a hybrid instruction-tuning strategy. The idea is to mix AgentInstruct with high-quality and general data at a

asst (to infoman):
Step 1: The user's intent is to generate code for a minimal implementation of the core ideas from the "agent tuning" paper mentioned. This involves a code generation task that requires understanding the user's description of the paper's approach and translating it into executable code.
Step 2: To provide a minimal executable implementation based on the provided context, I would need to code a simple version of the AgentInstruct dataset creation and hybrid instruction-tuning strategy. Given that there's no specific information about the dataset structure or the tuning strategy's implementation details, I'll outline pseudo-code for the described process. However, for a functional code, more specific details from the paper would be required.
The first step is to create a dataset with interaction trajectories, which seems to involve some sort of instruction building, a GPT-4 agent interaction, and trajectory filtering based on rewards. Next, the paper mentions a hybrid tuning strategy, which likely involves mixing the specific AgentInstruct dataset with a more general dataset and then performing some form of training with this hybrid dataset.
Here is a high-level pseudo-code outline based on the context provided:
class AgentTuning:
    def __init__(self):
        # This would be where we initialize our agent
        pass

    def create_instruction(self):
        # This method would model instruction construction for the interaction trajectory.
        pass

    def interact_with_agent(self):
        # Here we would simulate interaction with GPT-4 as the agent using the instructions.
        pass

    def filter_trajectory(self, reward_score):
        # This method would filter the trajectory based on its reward score.
        pass

    def create_AgentInstruct_dataset(self):
        # This would create the AgentInstruct dataset with interaction trajectories
        for _ in range(6):  # Assuming 6 diverse tasks
            instruction = self.create_instruction()
            interaction = self.interact_with_agent()
            trajectory = self.filter_trajectory(interaction['reward_score'])
            yield trajectory

    def hybrid_instruction_tuning(self, general_data):
        # This would be the method to mix AgentInstruct with high-quality and general data and perform tuning.
        pass

# To execute the above, we would instantiate the AgentTuning class and call the methods as needed.

# Example usage:
agent_tuner = AgentTuning()
agent_instruct_dataset = list(agent_tuner.create_AgentInstruct_dataset())
agent_tuner.hybrid_instruction_tuning(general_data=[])  # Replace with actual general data.

Keep in mind that this pseudo-code is heavily based on the provided context and lacks specific implementation details, which would be needed to make it executable. If you can provide more details or access to the paper, I can give a more accurate implementation.

infoman (to asst):
This is a good start go ahead and retrieve further information, you have some code embeddings from the agent tuning repository, use them to refine the generated python code.

asst (to infoman):
UPDATE CONTEXT

infoman (to asst):
please proceed

asst (to infoman):
To proceed with refining the generated Python code, I need access to the code embeddings from the Agent Tuning repository as mentioned. However, as an AI developed by OpenAI, I don't have the ability to access external resources such as repositories or databases directly. My functionality is limited to providing information and generating code based on the details you provide.
To move forward, you would need to provide the code embeddings or any specific details from the repository that you want to include in the code. Without these details, I can't refine the code further. Please share the relevant information or code snippets that you want to be incorporated into the Python code.

NO HUMAN INPUT RECEIVED.

Perhaps part of the issue in the simplified example above is that I do not have a UserProxy agent to call the RetrieveUserProxyAgent as needed?

Moving on to the main issue I am facing, which is working in a RAG group chat. I hope I was able to detail the current state of my logic clearly and apologize for the somewhat lengthy issue. Here is the main code for initializing the RAG groupchat I am working with:
def create_research_team() -> List[ConversableAgent]:
    agent0 = UserProxyAgent(
        name="main_userproxy",
        human_input_mode="NEVER",
        code_execution_config=False,
        system_message="Your role is to coordinate the completion of tasks related to generating code based off of machine learning and AI research. You must be diligent and operate in a step by step manner to pinpoint potentially implementable parts of the research in accordance with the over all task at hand. With the goals of either simplifying the ideas in a paper for better understanding, merging ideas, improving upon or otherwise manipulating them where you see fit.",
    )

    retriever = EmbeddingRetrieverAgent(
        name="info_hoarder",
        human_input_mode="NEVER",
        system_message="You play a pivotal role in the progression of the task at hand as you have access to databases that store embeddings of research papers and their associated code if it exists. Your main job is to provide a detailed and step by step understanding of the relevant research paper(s) and pieces of code to the other agents. You should focus on the core ideas of the paper and the code base and how they relate to each other, with the end goal of helping in providing an implementation plan.",
        code_execution_config=False,
        llm_config=base_cfg,
        retrieve_config={
            "task": "qa",
        },
        # max_consecutive_auto_reply=4,
    )

    agent2 = AssistantAgent(
        name="code_designer",
        system_message="Your role is to design an interface of functions and/or classes that will be implemented based on the research paper(s) and code you are provided. You should focus on the implementation of the ideas in the research paper(s) and code base according to the task at hand, with the end goal of making it clear and simple for the coding agent to implement the interface. When you are done reply with 'TERMINATE'",
        llm_config=base_cfg,
        is_termination_msg=termination_msg,
        code_execution_config=False,
    )
    agent3 = AssistantAgent(
        name="coding_llm",
        system_message="Your role is to implement the interface designed by the code designer. You should focus on the implementation of the interface according to the task at hand, with the end goal of creating an executable, self contained python file.",
        # code_execution_config=[True],
        # function_map={
        #     "execute_and_save": execute_and_save,
        # },
        is_termination_msg=termination_msg,
        llm_config=base_cfg,
    )

    return [agent0, retriever, agent2, agent3]

# rc: https://microsoft.github.io/autogen/blog/2023/10/18/RetrieveChat/

def _reset_agents(agents: List[ConversableAgent]) -> None:
    [agent.reset() for agent in agents]

def init_rag_gc(problem) -> None:
    agent0, retriever, agent2, agent3 = create_research_team()
    _reset_agents([agent0, retriever, agent2, agent3])
    # del agents
    groupchat = GroupChat(
        agents=[agent0, retriever, agent2, agent3],
        messages=[],
        max_round=13,
    )
    # manager = GroupChatManager(groupchat=groupchat, llm_config=lmconf)
    # manager_conf = nested_conf.copy()
    # manager_conf.pop("functions")
    manager = GroupChatManager(groupchat=groupchat)
    retriever.initiate_chat(
        manager,
        problem=problem,
    )

Here is sample output from running the init_rag_gc function:

docs_path is not provided in retrieve_config. Will raise ValueError if the collection autogen-docs doesn't exist. Set docs_path to None to suppress this warning.
 You answer user's questions based on your own knowledge and the
context provided by the user.
If you can't answer the question with or without the current context, you should reply exactly UPDATE CONTEXT.
You must give as short an answer as possible.
User's question is: Summarize the agent tuning paper for me and reproduce a minimal example from the huggingfave mmlu evaluation file.
Context is: We present AgentTuning to achieve this goal, the first step of which is to build the AgentInstruct dataset that is used in the second step to instruction tune the LLMs. We carefully experiment and design these two steps such that the LLMs obtain good performance in (unseen) generalized agent task types while remaining good in general LLM tasks.
1The evaluation process of Mind2Web follows the teacher forcing method, decomposing the complete in-
teraction trajectory into multiple single-step. As a result, the real trajectory length is always 1.
3
Ratio
35.2% 23.6% 0.52% 13.0% 30.1% 16.6% 6.79%
5.29%
Preprint
2.1 CONSTRUCTING AGENTINSTRUCT

code_designer (to chat_manager):
AgentTuning uses AgentInstruct dataset for instruct tuning LLMs, improving task performance while maintaining LLM capability.
Minimal example from Hugging Face's MMLU evaluation not provided in context. UPDATE CONTEXT

main_userproxy (to chat_manager):

What am I missing if I want to have a continuous refinement loop over the code generated between the agents tasked with generating python code and RetrieveUserProxyAgent retrieving more relevant information as needed? As you can see the main_userproxy just abruptly ended the conversation flow.

Additional Information

Output of  python -c "import autogen; print(autogen.__version__)": 0.2.2
Operating System: <IP_ADDRESS>-microsoft-standard-WSL2+
Python Version: Python 3.11.5
Other information:

I will attach my agent_conf.py file here incase there is an issue or something I am missing there:

import os

# from autogen import config_list_from_models

config_list = [
    {
        "model": "gpt-4-1106-preview",
        "api_key": os.environ.get("OPENAI_APIKEY"),
    },
    {
        "model": "gpt-3.5-turbo",
        "api_key": os.environ.get("OPENAI_APIKEY"),
    },
    {
        "model": "gpt-3.5-turbo-16k",
        "api_key": os.environ.get("OPENAI_APIKEY"),
    },
]

base_cfg = {
    # "use_cache": False,
    # "seed": 22,
    "config_list": config_list,
    "temperature": 1.0,
}

exec_py_conf = {
    **base_cfg,
    "functions": [
        {
            "name": "exec_py",
            "description": "Execute generated python code",
            "parameters": {
                "type": "object",
                "properties": {
                    "code": {
                        "type": "string",
                        "description": "Python str to be executed.",
                    }
                },
                "required": ["code"],
            },
        }
    ],
}

write_file_config = {
    **base_cfg,
    "functions": [
        {
            "name": "write_file",
            "description": "Save accepted python code to file",
            "parameters": {
                "type": "object",
                "properties": {
                    "fname": {
                        "type": "string",
                        "description": "The name of the file to write",
                    },
                    "content": {
                        "type": "string",
                        "description": "The content of the file to write",
                    },
                },
                "required": ["fname", "content"],
            },
        }
    ],
}

Ok, there are a couple of recommendations I'd like to make:

Give all your agents descriptions -- it will make GroupChat less likely to fail. See here for more details: https://microsoft.github.io/autogen/blog/2023/12/29/AgentDescriptions

You should try the following in your groupchat config: `allow_repeat_speaker=False'

If your speakers are in a fixed order try also: speaker_selection_method="round_robin"
,

Thank you for your prompt responses, I'll implement the changes you've recommended, review my overall logic, and get back to you asap. Peace.

I've made some progress adopting your suggested changes and revisiting the Advanced Usage of RAG Agents tutorial, which had some slight updates since I first looked at it. Changes in terms of wrapping the RAG Agent in a function call vs calling it explicitly or adding it as part of the group chat. Which is something I'm not understanding. Namely, using the RAG agent, attaching an LLM to it and allowing it to be part of the groupchat vs allowing the groupchat agents to trigger the function call associated with the RAG agent? Regardless, I've solved the issue of the main_userproxy responding with nothing and that is because there was no associated llm_config passed to its initialization. I've also switched to using the experimental RetrieveAssistantAgent as one of my agents (without fully understanding the implications just going based off of how it was used in the beginning of the RAG tutorial). Here is my updated code:
def create_research_team() -> List[ConversableAgent]:
    agent0 = UserProxyAgent(
        name="main_userproxy",
        human_input_mode="NEVER",
        code_execution_config=False,
        description="Your role is to coordinate the completion of tasks related to generating code based off of machine learning and AI research. You must be diligent and operate in a step by step manner, make use of all the agents at your disposal.",
        llm_config=base_cfg,
    )

    retriever = EmbeddingRetrieverAgent(
        name="info_hoarder",
        human_input_mode="NEVER",
        description="A retrieval augmented agent whose role is to retrieve additional information when asked, you can access an embeddings database with information related to code and research papers.",
        code_execution_config=False,
        # llm_config=base_cfg,
        retrieve_config={
            "task": "qa",
        },
        # max_consecutive_auto_reply=4,
    )

    agent2 = RetrieveAssistantAgent(
        name="code_reviewer",
        description="Agent used to review code, given the information retrieved by the retrieval agent and other information related to the main problem at hand. Review the code generated by the coding_agent to make sure it is executable and logically follows the ideas from the research and source code.",
        llm_config=retrieve_conf,
        is_termination_msg=termination_msg,
        code_execution_config=False,
    )
    agent3 = AssistantAgent(
        name="coding_agent",
        description="A coding agent that is tasked with iteratively generating code based off of the information provided by the retrieval agent and the code designer agent.",
        code_execution_config={"work_dir": "./sandbox", "use_docker": False},
        # function_map={
        #     "execute_and_save": execute_and_save,
        # },
        is_termination_msg=termination_msg,
        llm_config=retrieve_conf,
    )

    return [agent0, retriever, agent2, agent3]

# rc: https://microsoft.github.io/autogen/blog/2023/10/18/RetrieveChat/

def _reset_agents(agents: List[ConversableAgent]) -> None:
    [agent.reset() for agent in agents]

def init_rag_gc(problem) -> None:
    agent0, retriever, agent2, agent3 = create_research_team()
    _reset_agents([agent0, retriever, agent2, agent3])
    # del agents
    groupchat = GroupChat(
        agents=[agent0, agent2, agent3],
        messages=[],
        max_round=44,
        allow_repeat_speaker=False,
        speaker_selection_method="auto",
    )

    def retrieve_content(
        message, n_results=7, retriever: EmbeddingRetrieverAgent = retriever
    ):
        retriever.n_results = n_results  # Set the number of results to be retrieved.
        # Check if we need to update the context.
        update_context_case1, update_context_case2 = retriever._check_update_context(
            message
        )
        if (update_context_case1 or update_context_case2) and retriever.update_context:
            retriever.problem = (
                message if not hasattr(retriever, "problem") else retriever.problem
            )
            _, ret_msg = retriever._generate_retrieve_user_reply(message)
        else:
            ret_msg = retriever.generate_init_message(message, n_results=n_results)
        return ret_msg if ret_msg else message

    for agent in [agent0, agent2, agent3]:
        # register functions for all agents.
        agent.register_function(
            function_map={
                "retrieve_content": retrieve_content,
            }
        )
    manager = GroupChatManager(groupchat=groupchat, llm_config=retrieve_conf)
    agent0.initiate_chat(
        manager,
        message=problem,
    )

Here is the retrieve_conf used:

retrieve_conf = {
    **base_cfg,
    "functions": [
        {
            "name": "retrieve_content",
            "description": "retrieve content for code generation and question answering.",
            "parameters": {
                "type": "object",
                "properties": {
                    "message": {
                        "type": "string",
                        "description": "Refined message which keeps the original meaning and can be used to retrieve content for code generation and question answering.",
                    }
                },
                "required": ["message"],
            },
        },
    ],
    "timeout": 60,
    "seed": 42,
}

Thank you for help, I appreciate it and it definitely allowed me to move forward. There are still somethings I am not quite getting like how passing around the instance of my subclassed RetrieveUserProxyAgent (the retriever variable in this case) should be done correctly, and how I can have more control over when and how often the RAG agent gets triggered. Also the retriever argument is not included as part of the parameters to the retrieve_conf but it still behaves normally.
As a side note, from the Advanced Usage of RAG Agents tutorial, the llm_config passed to the group chat manager has a function call in it which is not allowed, and I believe it is an error:
ValueError: GroupChatManager is not allowed to make function/tool calls. Please remove the 'functions' or 'tools' config in 'llm_config' you passed in

Finally, Here is a sample output from calling init_rag_gc() for your refrence:

main_userproxy (to chat_manager):

I want to understand the agent tuning paper and come out with a minimal implementation of some of the core ideas in the paper the code must be executable.

--------------------------------------------------------------------------------
coding_agent (to chat_manager):

***** Suggested function Call: retrieve_content *****
Arguments:
{"message":"agent tuning paper"}
*****************************************************

--------------------------------------------------------------------------------

>>>>>>>> EXECUTING FUNCTION retrieve_content...
 You answer user's questions based on your own knowledge and the
context provided by the user.
If you can't answer the question with or without the current context, you should reply exactly `UPDATE CONTEXT`.
You must give as short an answer as possible.

User's question is: agent tuning paper

Context is: To fundamentally enable generalized agent abilities for LLMs, we introduce a simple and gen- eral approach AgentTuning as shown in Figure 2. AgentTuning consists of two components: a lightweight instruct-tuning dataset AgentInstruct and a hybrid instruction-tuning strategy that en- hances the agent’s capabilities while preserving its generalization ability. As shown in Table 1, AgentInstruct covers 1,866 verified interaction trajectories with high-quality Chain-of-Thought (CoT) rationale (Wei et al., 2022b) for each decision step from six diverse agent tasks. For each agent task, one interaction trajectory is collected through three phases: instruction construction, tra- jectory interaction by employing GPT-4 as the agent, and trajectory filtering depending on its reward score. To enhance LLMs’ agent capabilities while preserving their general abilities, we experiment with a hybrid instruction-tuning strategy. The idea is to mix AgentInstruct with high-quality and general data at a

*************************************************************

--------------------------------------------------------------------------------
coding_agent (to chat_manager):

Based on the context about "Agent Tuning," we understand that it is a methodology designed to enhance the capabilities of Large Language Models (LLMs) like GPT-4 for agent tasks while maintaining their general abilities. The two main components of AgentTuning are:

1. AgentInstruct: A lightweight instruct-tuning dataset that includes 1,866 verified interaction trajectories with high-quality Chain-of-Thought rationales for each decision step across six diverse agent tasks.

2. Hybrid Instruction-Tuning Strategy: A method that combines AgentInstruct with high-quality, general data to improve LLMs' agent abilities without compromising their broad applicability.

To create a minimal implementation related to some of the core ideas presented in this paper, we can focus on:
- A task selection mechanism to choose among various agent tasks.
- Interaction with GPT-4 or a similar LLM using a set of instructions.
- An evaluation method to assess the interactions based on a reward mechanism.

As a first step, I will provide you with Python code that sets up a task selection and interacts with a text-based LLM. Are you ready to proceed?

--------------------------------------------------------------------------------
main_userproxy (to chat_manager):

Absolutely, let's proceed with a minimal example. However, please keep in mind that as an AI developed by OpenAI, I cannot execute code directly or access external APIs, including interacting directly with GPT-4 outside of OpenAI's user interface. Instead, I will provide you with an illustrative Python code snippet that you can execute in your local environment.

This Python code will simulate the core idea of task selection and generating an instruction given an interaction trajectory:

```python
import random

# Define a set of mock agent tasks
agent_tasks = {
    "translation": ["Translate the following sentence into French: 'Hello, how are you?'"],
    "summarization": ["Summarize this article: 'The history of AI is one...'"],
    "math": ["What is the sum of 17 and 43?"],
    "conversational": ["How would you comfort someone who is feeling sad?"],
}

# Define a simple reward function (just for illustration purposes)
def reward_function(interaction):
    # A mock reward function that randomly assigns a score
    return random.uniform(0, 1)

# Task selection mechanism
selected_task = random.choice(list(agent_tasks.keys()))
instruction = agent_tasks[selected_task][0]

# Interaction trajectory (mock interaction with AI since we can't call GPT-4)
agent_response = f"Mock response to: {instruction}"

# Evaluate interaction
reward = reward_function(agent_response)

print(f"Selected Task: {selected_task}")
print(f"Instruction: {instruction}")
print(f"Agent Response: {agent_response}")
print(f"Reward Score: {reward}")

In the snippet above, we have:

A dictionary of some mock agent tasks with corresponding instructions.
A simple reward_function which, in a real scenario, would be more complex and based on specific criteria related to the agent's performance.
A task selection mechanism that randomly chooses a task and the corresponding instruction.
A mocked agent response, which in an actual implementation would come from an LLM.
An output of the selection, instruction, agent response, and reward score.

Please note that to actually interface with GPT-4, you would need to use an API client like OpenAI's 'openai' Python package, and the agent_response would be obtained by querying the model with the instruction.
Lastly, for an actual implementation, task selection would likely consider more factors, including user input, past performance data, and relevance. Moreover, the reward function would be based on precise success metrics.
To execute this code, you will need a Python environment. Simply copy the code into a .py file and run it to see the random task selection and associated instructions in play.

code_reviewer (to chat_manager):
It seems there was confusion regarding my previous message. As an AI assistant, I cannot provide you with the actual output of the code, but I can provide the Python code that encapsulates the ideas you've described.
We can create a minimal example in Python that might look like this:

Define a lightweight instruction dataset similar to the AgentInstruct dataset, which will simply be a list of tasks with instructions and expected outcomes.

Create a function to randomly select an agent task from this dataset.

Create a mock interaction with an LLM, in this case, a function that pretends to query GPT-4 for a response based on the instruction.

Define a basic reward function that evaluates the agent response against the expected outcome.

Here's what the Python code could look like:
# filename: agent_tuning_example.py
import random

# Define a simple mock AgentInstruct dataset
agent_instruct = [
    {
        'task': 'translation',
        'instruction': 'Translate "Hello, how are you?" to French.',
        'expected_response': 'Bonjour, comment ça va?'
    },
    {
        'task': 'math',
        'instruction': 'Calculate the product of 9 and 7.',
        'expected_response': '63'
    },
    # ... More tasks with instructions and expected responses
]

def select_task(dataset):
    """Randomly select a task from the dataset."""
    return random.choice(dataset)

def mock_agent_interaction(instruction):
    """Mock function to simulate interaction with an LLM like GPT-4."""
    # This is where the actual API call to GPT-4 would happen.
    # The response is mocked for the purpose of this example.

    # In an actual implementation, you would use OpenAI's API here.
    return 'Mocked response based on instruction'

def reward_function(response, expected_response):
    """Evaluate the agent response and return a reward score."""
    # In an actual scenario, this would involve a sophisticated metric.
    # Here it is simplified to a binary reward for illustration.
    return 1 if response == expected_response else 0

# Agent Tuning process
selected_task = select_task(agent_instruct)
agent_response = mock_agent_interaction(selected_task['instruction'])
reward = reward_function(agent_response, selected_task['expected_response'])

print(f"Task: {selected_task['task']}")
print(f"Instruction: {selected_task['instruction']}")
print(f"Agent Response: {agent_response}")
print(f"Reward: {reward}")

Please copy this code into a file called agent_tuning_example.py and execute it in a Python environment.
Keep in mind that this example omits many details for brevity, such as detailed reward calculations, extensive datasets, and actual interaction with GPT-4 or other models. It's meant to illustrate the conceptual framework of agent tuning as described in the paper.
You can replace the mocked agent response with a call to the API of an appropriate model when you integrate it into a real-world application.
Please go ahead and execute the code, and let me know the result.

main_userproxy (to chat_manager):
As the AI developed by OpenAI, I cannot run or test the code you write, but I can definitely help you with a code review.
Your provided Python code outlines a simplified framework capturing the essence of the Agent Tuning paper. Here are several points of review and considerations:

Comments and Docstrings: Include more detailed docstrings and comments. Even though the code is simple, proper documentation is essential, especially if this were to be expanded or used as a reference.

Mock Functions: The mock_agent_interaction is an excellent placeholder for future API integration. Consider adding a note where the API call would go, along with any necessary placeholder input that would be required.

Reward Function: The reward_function is a binary evaluation metric, which is a good starting point. Depending on the complexity of tasks and the potential variation in the responses, you might want to implement a more nuanced metric eventually.

Error Handling: Consider adding error handling for various parts of your code that might fail in a real-world scenario, such as API call failures.

Testing: While the code cannot be executed in this environment, setting up some form of automated testing is always a good idea to ensure your code behaves as expected.

Expandability: Think about how you could scale this framework. In its current form, adding additional tasks and handling more complex instructions could become cumbersome. Look into making it more modular and scalable.

Real API integration: When you're ready to implement this with an actual LLM, you'll need to replace the mock_agent_interaction with real interactions. Make sure to handle API rate limits, timeouts, and other operational considerations.

Cleaning up the output: If this were to be run as part of a service or a larger application, you would likely want to capture the output in log files or a more user-friendly format rather than just printing to the console.

By addressing these points, your code will be much more robust and ready to be part of a real-world implementation of the Agent Tuning framework. Remember to test the code in your local environment to ensure its functionality.

code_reviewer (to chat_manager):
Thank you for your feedback. Since you are unable to execute the code, the next steps would be for you to execute the code in your own environment and provide me with any output or errors. However, I understand you are not able to do this.
At this point, if there are no further instructions or queries regarding the Agent Tuning paper's implementation or any other topic, we can conclude our interaction.
If you have any other questions or need further assistance with a different topic, feel free to let me know! Otherwise, if everything is clear, kindly let me know, and I will terminate the conversation.

main_userproxy (to chat_manager):
You're correct, I'm unable to execute code. Yet, I'm still here to help with any further questions or guidance you may need. If you're set with the current information and have no additional queries, you can proceed with the implementation in your environment. If anything arises during your development process, or if there's anything else I can help you with, just reach out.
Best of luck with your implementation of the Agent Tuning concepts! If we're done for now, then I'm ready to conclude our interaction. Have a great day!

code_reviewer (to chat_manager):
It seems we have reached the conclusion of our current interaction. If you ever need further assistance, whether it's about implementing AI concepts, understanding papers, or tackling coding challenges, feel free to reach out.
Good luck with your project, and thank you for using OpenAI. Have a wonderful day!
TERMINATE

main_userproxy (to chat_manager):
Thank you. Goodbye, and take care!
(Conversation terminated.)

code_reviewer (to chat_manager):
TERMINATE


Create a dropbox share link version for help pages

this is much more complicated then anticipated; I think it needs to wait.


HDDS-3021. Ozone S3 CLI path command not working on HA cluster.

What changes were proposed in this pull request?
ozone s3 path <>
ozone s3 path are not working on OM HA cluster
Fix these commands to work on OM HA cluster.
What is the link to the Apache JIRA
https://issues.apache.org/jira/browse/HDDS-3021
How was this patch tested?
Added UT and also tested on the docker-compose om-ha-s3 cluster.
bash-4.2$ ozone s3 path b12345 --om-service-id=id1
Volume name for S3Bucket is : s34124bc0a9335c27f086f24ba207a4912
Ozone FileSystem Uri is : o3fs://b12345.s34124bc0a9335c27f086f24ba207a4912

If conf has a service ID, but it is of the remote cluster. (I think this can happen when conf has remote HA cluster details and the local non-HA cluster) . So, in HA for all commands, we have mandated to pass the serviceID, instead of best effort.
And also one more scenario can be in the future, when we have federated OM, with multiple serviceIDs like HDFS, even in that case these commands can still work, as passing explicitly serviceID is mandatory.

Thanks @bharatviswa504 for the explanation.

So, in HA for all commands, we have mandated to pass the serviceID, instead of best effort.

But this also means the same command does not work in both non-HA and HA case.
My current concern is that smoke tests need to be aware of the environment they are run in.  Eg. I wanted to add a test to verify behavior of ozone s3 getsecret command, but it needs to distinguish between ozone and ozone-om-ha-s3 environments (as well as ozonesecure, but we already have an env. variable for that).

If conf has a service ID, but it is of the remote cluster. (I think this can happen when conf has remote HA cluster details and the local non-HA cluster) . So, in HA for all commands, we have mandated to pass the serviceID, instead of best effort.

Thanks to explain it. Just for the usability I propose to use the serviceID from the config file if it's set:
If serviceId is not specified but there is exactly one in the configuration: use that one.
I think it provides better usability (and it can also solve the testing problem of @adoroszlai )


Submit OpenCOR 2021-09-14

id: opencor
version: "2021-09-14"
specificationsUrl: https://raw.githubusercontent.com/biosimulators/Biosimulators_OpenCOR/d70d6149d278b3a451bf75ede7390a5262ec42e5/biosimulators.json
specificationsPatch:
version: "2021-09-14"
image:
url: ghcr.io/biosimulators/biosimulators_opencor/opencor:2021-09-14
validateImage: true
commitSimulator: true

Thank you @biosimulators-daemon for your submission to the BioSimulators simulator validation/submission system!
The BioSimulators validator bot is validating the specifications of your simulator, validating your Docker image, and committing your simulator to the BioSimulators registry.
We will discuss any concerns with your submission in this issue.
A complete log of your simulator submission job will be available for 90 days here. The results of the validation of your tool will also be saved as a JSON file. A link to this file will be available for 90 days from the "Artifacts" section at the bottom of this page.

The validation/submission of your simulator failed.
- The simulator specifications from `https://raw.githubusercontent.com/biosimulators/Biosimulators_OpenCOR/d70d6149d278b3a451bf75ede7390a5262ec42e5/biosimulators.json` are invalid. The specifications of simulation tools must adhere to BioSimulators' schema. BioSimulators' schema is available in both JSON Schema and Open API Specifications formats. Documentation is available at https://api.biosimulators.org/.
-
-   - Database ValidatorError (500): `/pythonApi/installationInstructions` is invalid
-
-       'installationInstructions' attribute must be defined

The complete log of your validation/submission job, including further information about the failure, is available for 90 days here.
If you chose to validate your Docker image, the results of the validation of your image will be available shortly as a JSON file. A link to this file will be available for 90 days from the "Artifacts" section at the bottom of this page.
Once you have fixed the problem, edit the first block of this issue to re-initiate this validation.
The BioSimulators Team is happy to help. Questions and feedback can be directed to the BioSimulators Team by posting comments to this issues that reference the GitHub team @biosimulators/biosimulators (without the backticks).

OpenCOR hasn't yet be updated for enhanced simulator specifications.
This will be fixed in the next submission.


HID descriptor problems when attached to some hardware KVM swtiches

Description
Spun off from https://github.com/mtlynch/tinypilot/issues/78#issuecomment-783755302
Some hardware KVM switches seems to "take issue" with the combined mouse and keyboard HID descriptors provided through TinyPilot's use of libcomposite gadget behaviors. One particular case is interesting, because at least one
What's the behavior that you expect?
Keyboard & Mouse are able to be activated through init-usb-gadget script, and successfully pass through the KVM switch hardware to the end device
What's happening instead?
Only one device descriptor can be activated at a time, or neither will pass through.
What are the steps to reproduce this behavior?

Attach TinyPilot to KVM swtich
Observe "missing" keyboard / mouse on end device
See errors in TinyPilot logs regarding writes of keypresses

Research
I've collected some notes in this Gist.

Kernel logs showing the difference in reports. Notice, the strings are missing when passing through the CKLau :thinking:
When both HID devices are activated, there is no kernel message. This seems to indicate an issue within the switch hardware/firmware, though due to a specific compatibility issue only yet observed here. Could be a HID definition compliance issue, or could be something more obscure like report_length misalignment. :shrug:
Included a full HID dump from a hardware combo device which "seemingly" has no issues when directly attached to the KVM switch.

Which port of the CKLau KVM are you inserting the TinyPilot's USB into? The USB 2.0 port or one of the keyboard/mouse ports?
If it's helpful, I wrote this quick 'n dirty script that makes it easy to paste HID dumps into the init-usb-gadet script:
https://mtlynch.github.io/hid-formatter/

I'd explicitly using only the keyboard input port. The USB 2.0 hub port on the front will not work for the remote triggering, which is exactly what I need. See location in basement rack:

That will come in handy. In the same spirit, a handy decoder! https://eleccelerator.com/usbdescreqparser/ This will take the output from usbhid-dump directly, and output the commented, readable form.

I haven't forgotten this @mtlynch, just been a busy month!

Coming back around to this today :wave:
Going to perform a full updated, then apply the configuration of the "known good" from my earlier Gist, and see what turns up.

python[1882]: [2021-05-29 19:55:21,983] ERROR in socket_api: Failed to forward mouse event: Failed to write to HID interface: /dev/hidg1. Is USB cable connected?

Bummers. I had to disable the mouse initialization, as with before. Now, though, I've got some other oddity, where key stroke repeat indefinitely. I'll have to hunt a bit to confirm if this is from these changes, or an updated version.

I'll have to hunt a bit to confirm if this is from these changes, or an updated version.

I reset the keyboard HID descriptor to the one that comes out of the box, and this "behavior" went away. When using mind, I probably need an adjustment for report length.

I've still made no further headway with the CKLau, when using the gadget driver.

We recently discovered that the HID report length for the mouse was incorrect:
https://github.com/mtlynch/ansible-role-tinypilot/pull/134
Is that potentially related?

:thinking: I was staring at things again, when I noticed a subtle difference:
Observations
dongle
# dongle, through CKLau
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=32 #Cfgs=  1
P:  Vendor=04ca ProdID=006d Rev=00.16
C:  #Ifs= 2 Cfg#= 1 Atr=a0 MxPwr=50mA
I:  If#=0x0 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=01 Prot=01 Driver=usbhid
I:  If#=0x1 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=01 Prot=02 Driver=usbhid

# dongle, direct
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=32 #Cfgs=  1
P:  Vendor=04ca ProdID=006d Rev=00.16
S:  Manufacturer=USB Device
S:  Product=USB Device
C:  #Ifs= 2 Cfg#= 1 Atr=a0 MxPwr=50mA
I:  If#=0x0 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=01 Prot=01 Driver=usbhid
I:  If#=0x1 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=01 Prot=02 Driver=usbhid

TinyPilot
# TinyPilot, through CKLau
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0104 Rev=01.00
C:  #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=250mA
I:  If#=0x0 Alt= 0 #EPs= 2 Cls=03(HID  ) Sub=01 Prot=01 Driver=usbhid

# TinyPilot, direct
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0104 Rev=01.00
S:  Manufacturer=tinypilot
S:  Product=Multifunction
S:  SerialNumber=6b65796d696d6570690
C:  #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=250mA
I:  If#=0x0 Alt= 0 #EPs= 2 Cls=03(HID  ) Sub=01 Prot=01 Driver=usbhid
I:  If#=0x1 Alt= 0 #EPs= 2 Cls=03(HID  ) Sub=00 Prot=00 Driver=usbhid

Differences
Note: The CKLau (apparently) always strips the Manufacturer/Product/Serial strings.

item
dongle
gadget

Atr
a0
80

MxPwer
50
250

Prot/Sub of Mouse
02,01
00,00

I tried adjusting Protocol/SubClass, but this had no effect while going through the CKLau.

Based on the differences above:

I was able to set/reduce the MaxPower configuration with no issue.
I was able to set the attributes with no issue.
I was able to update the Protocol/Subclass for the mouse without issue.

In looking into the Endpoints, this is not something that can be controlled by the consumer of libcomposite, as it is statically set within f_hid.c to 2.

@mtlynch My apologies that it took me so long to get back to you.
You're spot on. This is looking more like a firmware limitation of the CKLau switch itself, isolated down to the support endpoint count.

Out of curiosity, how would one disable the mouse completely?  I have a slightly unusual device that accepts a hardware keyboard but is not functional with TinyPilot, and I wanted to try "only emulating a single device" as a first step in debugging.

@pete-otaqui - As far as I know, this isn't possible with the Linux USB gadget driver (which is how TinyPilot emulates USB devices). It always presents itself to the target machine as a USB hub with one or more devices attached. You can emulate a USB hub + USB keyboard by deleting the lines in /opt/tinypilot-privileged/init-usb-gadget that relate to the mouse or /dev/hidg1.
You can see the file here:
https://github.com/tiny-pilot/ansible-role-tinypilot/blob/c565b6020c419db31d3fb94c86f5cf019c56908c/files/init-usb-gadget


easegress-server not report error and return with invalid yaml config file

Describe the bug
easegress-server not report error and return with invalid yaml config file.
To Reproduce
With invalid yaml config.yaml:
name: machine-1
cluster-name: cluster-test
cluster-role: primary
api-addr: localhost:2381
data-dir: ./data
wal-dir: ""
cpu-profile-file:
memory-profile-file:
log-dir: ./log
debug: false
cluster:
  listen-peer-urls:
   - http://<IP_ADDRESS>:2380
  listen-client-urls:
   - http://<IP_ADDRESS>:2379
  advertise-client-urls:
   - http://<IP_ADDRESS>:2379
  initial-advertise-peer-urls:
   - http://<IP_ADDRESS>:2380
  initial-cluster:
   - http://<IP_ADDRESS>:2380

run easegress-server --config-file config.yaml and easegress-server will not report any error and keep running.
right yaml should be:
name: machine-1
...
cluster:
  ...
  initial-cluster:
   - machine-1: http://<IP_ADDRESS>:2380

Expected behavior
With invalid yaml, easegress-server should report error and return. So that customers will not get confused.
Version
1.4.0

can add test options,use valid  yaml

@martinou Hi, in pr #432 we fix this problem, now if use invalid yaml with invalid type, easegress-server will report error and return. If you ok with this, we will close this issue. By the way, what do you mean add test options? do you mean add unit test to Option or something else?

@suchen-sci no,like nginx -t ./conf/nginx.conf test config file.not add testcase.

@martinou Hi, it sounds like dry-run in k8s. Thanks for your advice! Since this issue has been solved, we will close it.


Nmap can not find mac address (Docker)

Presence detection does not work, so I tried to find reason in home-assistant.log, but there is almost nothing. After a while I thought some useful info could be in the Docker log. And it was:
INFO:homeassistant.components.device_tracker.nmap_tracker:No MAC address found for <IP_ADDRESS>

"Hmm, and what?" I asked. In component documentation there is no info it rely on mac addresses, but it propably is. (Good to mention it there.)
After a while I investigated that it can not find MAC addresses because Home Assistant runs in Docker and container's network stack is in another subnet. Also good to mention in the docs.
Is there some other way how to find MAC address from inside of container? Like access host's ARP table if I make volume to /proc/net/arp?
(I have Apple Airport router, so other components propably will not work.)

Try running with net=host
On Sat, Jan 16, 2016, 17:16 Jan Pobořil<EMAIL_ADDRESS>wrote:

Presence detection does not work, so I tried to find reason in
home-assistantlog, but there is almost nothing After a while I thought some
useful info could be in the Docker log And it was:
INFO:homeassistantcomponentsdevice_trackernmap_tracker:No MAC address found for 10014
"Hmm, and what?" I asked In component documentation there is no info it
rely on mac addresses, but it propably is (Good to mention it there)
After a while I investigated that it can not find MAC addresses because
Home Assistant runs in Docker and container's network stack is in another
subnet Also good to mention in the docs
Is there some other way how to find MAC address from inside of container?
Like access host's ARP table if I make volume to some "file" in Linux?
(I have Apple Airport router, so other components propably will not work)
—
Reply to this email directly or view it on GitHub
https://github.com/balloob/home-assistant/issues/916.

Could please be more specific?
Jan Pobořil
2016-01-17 6:26 GMT+01:00 Paulus Schoutsen<EMAIL_ADDRESS>
Try running with net=host
On Sat, Jan 16, 2016, 17:16 Jan Pobořil<EMAIL_ADDRESS>wrote:

Presence detection does not work, so I tried to find reason in
home-assistantlog, but there is almost nothing After a while I thought
some
useful info could be in the Docker log And it was:
INFO:homeassistantcomponentsdevice_trackernmap_tracker:No MAC address
found for 10014
"Hmm, and what?" I asked In component documentation there is no info it
rely on mac addresses, but it propably is (Good to mention it there)
After a while I investigated that it can not find MAC addresses because
Home Assistant runs in Docker and container's network stack is in another
subnet Also good to mention in the docs
Is there some other way how to find MAC address from inside of container?
Like access host's ARP table if I make volume to some "file" in Linux?
(I have Apple Airport router, so other components propably will not work)
—
Reply to this email directly or view it on GitHub
https://github.com/balloob/home-assistant/issues/916.

—
Reply to this email directly or view it on GitHub
https://github.com/balloob/home-assistant/issues/916#issuecomment-172293245
.

Run your container with --net=host so it uses the host network stack. That way it will have access to the mac addresses.

Aha, thanks. I am using Synology UI and it don't support this option. Using terminal Docker client it is working.


ZkSnarks  Support

Is it possible to add support for ZkSnarks?. I am using ZoKrates to setup ZkSnark program. But it is not working in quorum network. The setup works in private ethereum network.
ZoKrates -->(https://github.com/JacobEberhardt/ZoKrates)

verifyTx always returns false in quorum. But in private ethereum network it returns true.

Are you referring to ZSL? Quorum was compatible when it was using geth 1.5 and 1.6 but not since

No i am not referring to ZSL. So ZSL is not supported in the current version of quorum?.

It would appear so. Would you like ZSL to be implemented in Quorum?

Yes.

@karthik137  Quorum was rebased to update the Geth from v2.2.0 onwards. You can try this with the latest version of Quorum Maker. We are also coordinating with other open source contributors to get zsl working with the latest version of Quorum. Will keep you updated via this thread.

Ok thanks. I will try the latest version.

@karthik137 Let me know how it goes. Also connect with Wyatt Barnes. He's the Quorum ambassador for San Antonio


ci: prevent patch releases to Microsoft Edge Webstore

Fix for #73 .

:tada: This PR is included in version 2.10.1 :tada:
The release is available on:

Chrome Web Store
v2.10.1
GitHub release

Your semantic-release bot :package::rocket:


Toggling obscureText leads to incorrect cursor position on web

Steps to Reproduce

Create a default web project with a textfield and a state variable that can be toggled in some way
Run the project in a browser
Enter text into the obscured textfield (wide letters like m or w work best)
Toggle the obscure variable

Expected results: Cursor position should be at the same position relative to the new character positions
Actual results: Cursor position is relative to the position on the screen

Logs

If necessary, I can provide these, but there are no issues or warnings what could possibly be relevant here.

Analyzing app...

   info • The declaration '_$[redacted]' isn't referenced • lib/src/core/models/models.g.dart:9:14 • unused_element
   info • The declaration '_$[redacted]' isn't referenced • lib/src/core/models/models.g.dart:159:17 • unused_element
   info • The declaration '_$[redacted]' isn't referenced • lib/src/core/models/models.g.dart:189:10 • unused_element
   info • The declaration '_$[redacted]' isn't referenced • lib/src/core/models/models.g.dart:231:14 • unused_element
   info • The declaration '_$[redacted]' isn't referenced • lib/src/core/models/models.g.dart:249:14 • unused_element
   info • The declaration '_$[redacted]' isn't referenced • lib/src/core/models/models.g.dart:266:22 • unused_element
   info • The declaration '_$[redacted]' isn't referenced • lib/src/core/models/models.g.dart:275:10 • unused_element

7 issues found. (ran in 6.5s)

[✓] Flutter (Channel unknown, 1.20.2, on macOS 11.0 20A5343i, locale de-DE)
    • Flutter version 1.20.2 at /Users/ciriousjoker/Development/flutter
    • Framework revision bbfbf1770c (4 weeks ago), 2020-08-13 08:33:09 -0700
    • Engine revision 9d5b21729f
    • Dart version 2.9.1

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
    • Android SDK at /Users/ciriousjoker/Library/Android/sdk
    • Platform android-30, build-tools 30.0.2
    • ANDROID_HOME = /Users/ciriousjoker/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)
    • All Android licenses accepted.

[!] Xcode - develop for iOS and macOS (Xcode 11.6)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 11.6, Build version 11E708
    ✗ CocoaPods not installed.
        CocoaPods is used to retrieve the iOS and macOS platform side's plugin code that responds to your plugin usage on the Dart side.
        Without CocoaPods, plugins will not work on iOS or macOS.
        For more info, see https://flutter.dev/platform-plugins
      To install:
        sudo gem install cocoapods

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 4.0)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 48.1.2
    • Dart plugin version 193.7361
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)

[✓] VS Code (version 1.48.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.14.1

[✓] Connected device (3 available)
    • Pixel 4 XL (mobile) • <IP_ADDRESS>:5555 • android-arm64  • Android 10 (API 29)
    • Web Server (web)    • web-server       • web-javascript • Flutter Tools
    • Chrome (web)        • chrome           • web-javascript • Google Chrome 85.0.4183.83

! Doctor found issues in 1 category.

I can provide a sample project if necessary

Hi @CiriousJoker
It looks like you are not using any Flutter channel, please make sure you flutter doctor -v prints a valid Flutter channel, and then provide the output here, and yes, provide a sample code that reproduces the issue.
Thank you

@pedromassangocode
I couldn't reproduce the error with dartpad on the latest 1.21.0.
It now sets the cursor at the end of the textfield which seems reasonable.


add contenttype id to list picker #894

Q
A

Bug fix?
[ ]

New feature?
[x ]

New sample?
[ ]

Related issues?
fixes #894

What's in this Pull Request?
added contentTypeId to listpicker

@russgove this build error is not specific to your code, but to a specific version of an npm module that is causing issues: I was able to reproduce this on my machine. Give me just a moment while I try to figure out the best way to address it as there is already a PR where this was addressed

@russgove if you now get the latest changes from dev, it should fix the npm install error as the package-lock.json file was updated. No need to make changes to the package-lock.json file within your PR

Thanks joel, i have other stuff im working on on my local machine. i did
not make a separate branch for it(ouch!). Is  ther a way i can do this from
the github portal?
On Thu, May 20, 2021 at 7:03 PM Joel Rodrigues @.***>
wrote:

@russgove https://github.com/russgove if you now get the latest changes
from dev, it should fix the npm install error as the package-lock.json file
was updated. No need to make changes to the package-lock.json file within
your PR
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/pnp/sp-dev-fx-controls-react/pull/904#issuecomment-845537194,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AASNDHFJ2UMQJPEVORC3T23TOWIK3ANCNFSM45CTO6MA
.

Hi @russgove sorry for the delay...a lot of work going on at my side at the moment.
I will try to have a look tomorrow, I'm sure we will find a simple way to resolve this.

hey , i just included the latest packkage lock and that resolved it.

added another commit to my PR to add a selectedSites property to the SItePicker.

@russgove sorry for the delay reviewing this, I was extremely busy at work over the last 2 weeks.
While checking the code, I noticed that there are a lot of formatting changes (spaces) and imports re-ordering that seem to have been done by VS code, possibly an extension. This makes the review more complex and in theory, PRs should not include formatting changes to previous code.
There is also the case of the site picker changes being mixed (I know it was an accident)
Any chance you could create two new separate PRs? One for the list picker and one for the site picker? If you don't have the chance to do this, I can try to help

Hi Joel,
How do i do that? i made a pr for one change, then did a git push from my local repo to my github and it automatically adds what i just pushed to my existing pr.
Sent from my iPad

On Jun 4, 2021, at 9:31 AM, Joel Rodrigues @.***> wrote:

@russgove sorry for the delay reviewing this, I was extremely busy at work over the last 2 weeks.
While checking the code, I noticed that there are a lot of formatting changes (spaces) and imports re-ordering that seem to have been done by VS code, possibly an extension. This makes the review more complex and in theory, PRs should not include formatting changes to previous code.
There is also the case of the site picker changes being mixed (I know it was an accident)
Any chance you could create two new separate PRs? One for the list picker and one for the site picker? If you don't have the chance to do this, I can try to help
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.

Hi @russgove ,
I think there are multiple ways to address this, but personally, I think that undoing the commits may be the easiest approach. Then stash them and create a new clean branch from that one that you can use for a new PR. You can then use the stashed changes on a new branch (from dev) and also create a new PR.
A different alternative, considering that there are only a few files changed, is to just create two new branches from dev and manually copy the changes from this PR into each branch as appropriate and submit 2 new PRs

@russgove not sure if I got your question, but only commits to the branch associated with the PR get merged as part of that PR. In this case, for instance, only commits to your dev branch.
Personally, I always use a new branch for each PR and I delete it after the PR is merged. And I keep my dev branch in sync with the dev branch of the main repository (in this case the PnP controls repo). By doing this, I can just switch to dev, click the VS code button to sync, and I get all the commits from everyone else that were merged.
Please let me know if you need help splitting the PRs. More than happy to help if needed

I could use some help splitting the PRs. My git knowledge is limited.
I’m in New york time zone, where are you?
Russell
Sent from my iPad

On Jun 8, 2021, at 4:25 AM, Joel Rodrigues @.***> wrote:

@russgove not sure if I got your question, but only commits to the branch associated with the PR get merged as part of that PR. In this case, for instance, only commits to your dev branch.
Personally, I always use a new branch for each PR and I delete it after the PR is merged. And I keep my dev branch in sync with the dev branch of the main repository (in this case the PnP controls repo). By doing this, I can just switch to dev, click the VS code button to sync, and I get all the commits from everyone else that were merged.
Please let me know if you need help splitting the PRs. More than happy to help if needed
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.

@russgove @joelfmrodrigues  - I've merged it manually


ios: after updating react-native version(0.72.4), Not able to debug the app

New Version
0.72.4
Old Version
0.71.11
Build Target(s)
9
Output of react-native info
System:
OS: macOS 12.6.6
CPU: (8) x64 Intel(R) Core(TM) i7-4870HQ CPU @ 2.50GHz
Memory: 144.41 MB / 16.00 GB
Shell:
version: 5.8.1
path: /bin/zsh
Binaries:
Node:
version: 20.3.0
path: /usr/local/bin/node
Yarn:
version: 1.22.19
path: /usr/local/bin/yarn
npm:
version: 9.6.7
path: /usr/local/bin/npm
Watchman:
version: 2<IP_ADDRESS>
path: /usr/local/bin/watchman
Managers:
CocoaPods:
version: 1.12.1
path: /Users/triptijain/.rvm/gems/ruby-2.7.6/bin/pod
SDKs:
iOS SDK:
Platforms:
- DriverKit 22.2
- iOS 16.2
- macOS 13.1
- tvOS 16.1
- watchOS 9.1
Android SDK:
API Levels:
- "28"
- "31"
- "32"
- "33"
Build Tools:
- 30.0.3
- 33.0.0
- 34.0.0
System Images:
- android-31 | Google APIs Intel x86_64 Atom
Android NDK: Not Found
IDEs:
Android Studio: 2022.3 AI-223.8836.35.2231.10406996
Xcode:
version: 14.2/14C18
path: /usr/bin/xcodebuild
Languages:
Java:
version: 11.0.19
path: /usr/bin/javac
Ruby:
version: 2.7.6
path: /Users/triptijain/.rvm/rubies/ruby-2.7.6/bin/ruby
npmPackages:
"@react-native-community/cli": Not Found
react:
installed: 18.2.0
wanted: 18.2.0
react-native:
installed: 0.72.4
wanted: 0.72.4
react-native-macos: Not Found
npmGlobalPackages:
"react-native": Not Found
Android:
hermesEnabled: true
newArchEnabled: false
iOS:
hermesEnabled: false
newArchEnabled: false
Issue and Reproduction Steps
Update the react native version to 0.72.4

Potentially a duplicate of #39080
Plus you're not describing the issue you're having so we can't really help here, sorry.


[BUG] oracle linux 8 installation

have some problems with installation on Oracle linux 8.
npm -v
6.14.11
npm install elasticdump -g
npm WARN deprecated<EMAIL_ADDRESS>request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated<EMAIL_ADDRESS>Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
npm WARN deprecated<EMAIL_ADDRESS>this library is no longer supported
npm WARN deprecated<EMAIL_ADDRESS>This module is no longer maintained. It is provided as is.
/usr/local/bin/elasticdump -> /usr/local/lib/node_modules/elasticdump/bin/elasticdump
/usr/local/bin/multielasticdump -> /usr/local/lib/node_modules/elasticdump/bin/multielasticdump

<EMAIL_ADDRESS>updated 1 package in 6.665s

npm install elasticdump
npm WARN read-shrinkwrap This version of npm is compatible with lockfileVersion@1, but package-lock.json was generated for lockfileVersion@2. I'll try to do my best with it!
npm WARN deprecated<EMAIL_ADDRESS>request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated<EMAIL_ADDRESS>Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
npm WARN deprecated<EMAIL_ADDRESS>this library is no longer supported
npm WARN deprecated<EMAIL_ADDRESS>This module is no longer maintained. It is provided as is.
npm WARN keywords No repository field.
npm WARN keywords No license field.
npm ERR! code EEXIST
npm ERR! path /var/scripts/keywords/node_modules/.bin/elasticdump
npm ERR! Refusing to delete /var/scripts/keywords/node_modules/.bin/elasticdump: is outside /var/scripts/keywords/node_modules/elasticdump and not a link
npm ERR! File exists: /var/scripts/keywords/node_modules/.bin/elasticdump
npm ERR! Remove the existing file and try again, or run npm
npm ERR! with --force to overwrite files recklessly.
npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2021-06-29T08_18_54_729Z-debug.log
2021-06-29T08_18_54_729Z-debug.log

Seems like it's trying to install over an existing. Have you tried uninstalling then reinstalling.

same on Centos 7
npm install elasticdump -g
npm WARN deprecated<EMAIL_ADDRESS>request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated<EMAIL_ADDRESS>The
npm WARN deprecated<EMAIL_ADDRESS>Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
npm WARN deprecated<EMAIL_ADDRESS>this library is no longer supported
npm WARN deprecated<EMAIL_ADDRESS>This module is no longer maintained. It is provided as is.
/usr/bin/elasticdump -> /usr/lib/node_modules/elasticdump/bin/elasticdump
/usr/bin/multielasticdump -> /usr/lib/node_modules/elasticdump/bin/multielasticdump

<EMAIL_ADDRESS>postinstall /usr/lib/node_modules/elasticdump/node_modules/aws-sdk
node scripts/check-node-version.js

The AWS SDK for JavaScript (v2) will no longer support Node.js v6.17.1
as of November 1, 2021. To continue receiving updates to AWS services
and bug fixes please upgrade to Node.js 10.x or later.
elasticdump
/usr/lib/node_modules/elasticdump/lib/processor.js:40
async _loop (limit, offset, totalWrites) {
^^^^^
SyntaxError: Unexpected identifier
at createScript (vm.js:56:10)
at Object.runInThisContext (vm.js:97:10)
at Module._compile (module.js:549:28)
at Object.Module._extensions..js (module.js:586:10)
at Module.load (module.js:494:32)
at tryModuleLoad (module.js:453:12)
at Function.Module._load (module.js:445:3)
at Module.require (module.js:504:17)
at require (internal/module.js:20:19)
at Object. (/usr/lib/node_modules/elasticdump/elasticdump.js:3:28)

The version of node required is v10 or higher


Error with Webpack

Getting error
`bundle.js:1 Warning: TabGroup(...): React component classes must extend React.Component.
Uncaught Invariant Violation: TabGroup.render(): A valid ReactComponent must be returned. You may have returned undefined, an array or some other invalid object.
I think that has something to do with Webpack...
see:
-https://github.com/tleunen/react-number-editor/issues/17

I was able to solve this by moving react from dependencies to devDependencies.

I'm getting the same error with Browserify. If I do this:
import {TabGroup, Tab} from 'material-tabs';
console.log(TabGroup);

I see "undefined", so something is wrong with the way things are being exported?

@j-s-n :
You are correct. The issue wasn't to do the way the files were being exported, but the way they were imported, i.e.
import materialTabs from 'material-tabs';

const { TabGroup, Tab } = materialTabs;

would have worked.
I have added TabGroup and Tab as named exports, as well as on the default export so you can use either syntax now and should be free from error.


bug: table with postgres-cdc connector does not get updated.

Describe the bug
`dev=> CREATE TABLE table_test (
handle character varying,
key_type text,
value_type text,
inserted_at timestamp without time zone,
PRIMARY KEY (handle)
) WITH (
connector = 'postgres-cdc',
hostname = '...',
port = '5432',
username = '**',
password = '',
database.name = 'postgres',
schema.name = 'public',
table.name = 'table_test'
);
CREATE_TABLE
dev=> select count() from table_test
dev-> ;
count
1293184
(1 row)
`
When new records appear in upstream database this table is not updated.  upstream database is configured following docs:
https://www.risingwave.dev/docs/current/ingest-from-postgres-cdc/
no errors in logs, am i missing something?.
Error message/log
https://gist.github.com/Povilaszva/d94fd75d7928a9d22af822a60c2b0aa6

To Reproduce
No response
Expected behavior
No response
How did you deploy RisingWave?
No response
The version of RisingWave
v0.19.2
No response
Additional context
No response

postgres=# select * from pg_publication;
        pubname         | pubowner | puballtables | pubinsert | pubupdate | pubdelete
------------------------+----------+--------------+-----------+-----------+-----------
 dbz_publication        |    16385 | f            | t         | t         | t
 mz_source              |       10 | f            | t         | t         | t
 mz_source_transactions |       10 | f            | t         | t         | t
(3 rows)

postgres=#
postgres=# select * from pg_publication_tables;
        pubname         | schemaname |    tablename
------------------------+------------+-----------------
 dbz_publication        | public     | transactions
 mz_source_transactions | public     | transactions
 mz_source              | public     | table_metadatas
(3 rows)

ran it on upstream postgres.  mz_* is created from other streaming db I've tested.

Thank you @Povilaszva. From the output, dbz_publication only subscribes to the transactions so you cannot receive events for the table_test table. That's should be a bug in our implementation.
To work around the issue right now, you can choose one option:

drop publication dbz_publication and create publication dbz_publication for table table_test
or
drop publication dbz_publication and create publication dbz_publication for all tables (require superuser role)

It looks like we are not able to select the pubname to use for a connection?
What I think is happening is that the first table we configure creates a new publication in our database automatically called dbz_publication and adds the relevant table to it.  After that, any tables we configure, since there already is a publication with that name, it doesn't get updated to include that table.  We get the initial table snapshot, but no subsequent data changes.
So the answer is to go back and manually add the tables to the dbz_publication, or to create a dbz_publication first?
This is confusing behavior even if it isn't a bug.

Ideally we should be able to select a publication name to use for a particular table.

In pg 15+ we can specify columns that are published rather than the whole table.
We may share a publication with multiple downstream sources,
We may want partial change captures (ie, no replication of deletes) for a particular table, whereas other tables we may want all the changes.

If we are required to use that one publication name, then the documentation should be clear that either:

You have to set it up in advance.
You have to go back and manually add any additional tables after the first one is set up.

Maybe we could have a "create publication on remote database if it doesn't exist" flag when we create the table.

I would also add a reminder that you should explicitly add the table to the publication before you create the table otherwise you risk missing changes between the initial snapshot and when you enable change capture.

Hi @rotten, thanks for your sincerely suggestion. I will initiate an enhancement for the part of publication and it would be shipped into our v1.0 release recently.

So the answer is to go back and manually add the tables to the dbz_publication, or to create a dbz_publication first?

This is just a temporary work around for the problem to unblock your evaluation progress, we will fix it soon.


Fix test suite compatibility with hypothesis4.

Simply remove average_size and max_iterations, as suggested by the
hypothesis docs.

Thanks!


adding details to notifications

Coverage decreased (-0.07%) to 14.838% when pulling eb002a326a8a940a770b130b48b0f68e454e3aac on notification-details into 373fd9fb7f0ab419ad26ce8ec68185959eb1747e on master.


Fix initializing with Size(0, 0). closes #350, closes #348, closes #347

@lizhuoyuan , Only in Production Mode, Flutter starts quicker and the native platform reports the actual resolution in a certain delai. This update only wait for the real resolution. Hope this closes #350 , closes #348 , closes #347 , closes #341

If this is a superior method of initialization, why only use it in release mode?

@BrunoJurkovic @lizhuoyuan Checkout the new optimized solution

Thanks, I will find time to debug and merge them

Hello friend, are you planning to publish updates in pub.dev next days ?

Thank you very much for your contribution, and I have noticed that you often answer questions, thank you very much.

But I must say that last two commits are terrible and very bad, they can reproduce this last bug (initializing with zeros).
There will be a fix by the end of next week of the last error (getting informations from buildcontext after a defunct which produces null cast error).


Correction for raw affiliation CIRAD Research Unit BioWooEB 34000, Montpellier France ---- BioWooEB, Univ. Montpellier, CIRAD Montpellier France

Correction needed for raw affiliation CIRAD Research Unit BioWooEB 34000, Montpellier France ---- BioWooEB, Univ. Montpellier, CIRAD Montpellier France
raw_affiliation_name: CIRAD Research Unit BioWooEB 34000, Montpellier France ---- BioWooEB, Univ. Montpellier, CIRAD Montpellier France
new_rors: 051escj72;05kpkpg04;054ktxw16
previous_rors: 051escj72;05kpkpg04
works_examples: W4392702785
contact: ac05a25deb5de4d89c54ed071b234169:963295ab616dc2eb1661b1f75897 @ cirad.fr

This issue was accepted and ingested by the OpenAlex team on 2024-12-19. The new affiliations should be visible within the next 7 days.


Command prepend

For my project, I need to generate some build files with cmake before the ninja build can be started.
This PR will add a command_prepend to the possible arguments. This is a command that is executed before the actual build is executed.

i'm not sure why this needs to be part of the coverity action.  you can have your arbitrary configure steps run as distinct steps before hand.  see how Google Breakpad does it:
https://github.com/google/breakpad/blob/main/.github/workflows/coverity.yml
if anything, it's preferable for it to be a sep step because the GH action UI is not great.  it wouldn't show the cmake or ninja steps separately when they're all inside this one action.

I'm porting the Coverity scanning from Travis CI to Github actions. The official Travis CI add-on for Coverity supports a build_command_prepend
An advantage is that the commands for the setup of the environment and building are next to eachother in the action configuration.
    - uses: jgeudens/coverity-scan-action@command_prepend
      with:
        project: jgeudens%2FModbusScope
        email: ${{ secrets.MAIL_ADDRESS }}
        token: ${{ secrets.COVERITY_SCAN_TOKEN }}
        command_prepend: cmake . -GNinja
        command: ninja

But you're correct the output is missing. You can close this MR if you wish.
Thank you for the information.

interesting.  i think in this case we can improve the docs.  how about after the Usage section, we add a Migrating section, and under that add a subsection for migrating from Travis coverity addon, and there we show how to adjust.  we can also add a FAQ to after Migrating with a bullet point like "How do I run a configure/pre-build step?".
feel like putting that together ?

Thank you for your feedback, but I don't really have the time to improve the documentation. To be honest, I followed your suggestion to initialize the project files before running the Coverity action. It was easy to do.
Again, thank for your work on the action.

don't sweat it.  i wrote up the docs today and pushed out a new release.  HTH.


Add API to change handleRadius on src/manipulators/drawHandles.js

Currently the handleRadius is expressed as const handleRadius thus I cannot set the radius size by myself.
I would like to have an API call (or other) to be able to change the radius of the handles

Per #732

By default, the handleRadius in store.state.handleRadius is used.
It can be overridden by providing handleRadius in a tool's configuration
Lastly, each handle can have a radius property that will supersede the other configuration options

So we can now specify handleRadius globally, per tool, or per handle


Can't get Bluetooth to work

I'm running a 2020 M1 MacBook Air, but am having trouble getting bluetooth.service to start with the latest kernel that was pushed here. I don't think Bluetooth is loading at all (/sys/class/bluetooth is missing), and I'm not quite sure why - I'd assume firmware isn't the issue as WiFi is working fine. I didn't spot any issues about Bluetooth, is this something that requires further work to support in NixOS, or have I just messed something up? Happy to provide logs if they're of any use.

Looks like the last time Bluetooth worked was nixos-m1 commit 8b54e3b. I'm not sure exactly what happened in later versions but I checked on my M1 Max MBP.
It's probable it's an upstream issue because not much changed on my end to break it. The Asahi project has not had an official non-dev kernel release in quite a while now which is why I haven't been releasing much either but if it fixes Bluetooth then that's a good reason to make one. I'll look into it but if you want Bluetooth now I suggest using an older nixos-m1 commit (or just the kernel) as described above.

Definitely not an urgent requirement for me, was more just confused as to why it wasn't working. Appreciate you looking into it though, and apologies for not thinking to bisect the module myself (didn't realise it was previously working).


added random endpoint

Hi, I added the random endpoint, please let me know if it needs some change/fix.

Looks good, merging!

Closes #26


Still not yet included in the default images in App Service?

.NET Core 2.2 does support the scenario, but is not yet included in the default images in App Service.
Is this still not on the default App Service images?

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 31b0d33c-f88e-d50c-2926-7933940f3b92
Version Independent ID: 4aaef906-f501-6947-5d23-1b704470f09d
Content: Secure SQL Database connection with managed identity - Azure App Service
Content Source: articles/app-service/app-service-web-tutorial-connect-msi.md
Service: app-service-web
GitHub Login: @cephalin
Microsoft Alias: cephalin

Thanks for the feedback! We are currently investigating and will update you shortly.

@fabich, We have been discussing on this internally, your feedback has been shared with the content owner (@cephalin) for further review and update the document as appropriate.

@fabich Thanks for pointing out an outdated note. I've published the steps for getting .NET Core 2.2 to work with MSI now. Thanks.
#please-close


CSL-1188 Fix build without web and wallet

@akegalj can you take a look at appveyor build?
In this PR I split Pos.Wallet.Web.Error into two modules and re-exported them from Pos.Wallet.Web.Error. Now appveyor fails with:
[00:34:04] ERROR in ./src/Daedalus/ClientApi.purs
[00:34:04] Module build failed: Error: purs-loader failed
[00:34:04]     at C:\w\daedalus\node_modules\purs-loader\lib\index.js:165:32
[00:34:04]     at Array.forEach (native)
[00:34:04]     at C:\w\daedalus\node_modules\purs-loader\lib\index.js:164:31
[00:34:04]     at tryCatcher (C:\w\daedalus\node_modules\bluebird\js\release\util.js:16:23)
[00:34:04]     at Promise._settlePromiseFromHandler (C:\w\daedalus\node_modules\bluebird\js\release\promise.js:512:31)
[00:34:04]     at Promise._settlePromise (C:\w\daedalus\node_modules\bluebird\js\release\promise.js:569:18)
[00:34:04]     at Promise._settlePromise0 (C:\w\daedalus\node_modules\bluebird\js\release\promise.js:614:10)
[00:34:04]     at Promise._settlePromises (C:\w\daedalus\node_modules\bluebird\js\release\promise.js:689:18)
[00:34:04]     at Async._drainQueue (C:\w\daedalus\node_modules\bluebird\js\release\async.js:133:16)
[00:34:04]     at Async._drainQueues (C:\w\daedalus\node_modules\bluebird\js\release\async.js:143:10)
[00:34:04]     at Immediate.Async.drainQueues (C:\w\daedalus\node_modules\bluebird\js\release\async.js:17:14)
[00:34:04]     at runCallback (timers.js:672:20)
[00:34:04]     at tryOnImmediate (timers.js:645:5)
[00:34:04]     at processImmediate [as _immediateCallback] (timers.js:617:5)
[00:34:04]  @ ./src/index.js 7:36-72
[00:34:04]  @ multi ./src/index.js
[00:34:04]
[00:34:04] ERROR in [1/1 ModuleNotFound]
[00:34:04]
[00:34:04]   Module Pos.Wallet.Web.Error was not found.
[00:34:04]   Make sure the source file exists, and that it has been provided as an input to psc.
[00:34:04]
[00:34:04]            Src   Lib   All
[00:34:04] Warnings   0     0     0
[00:34:04] Errors     0     0     1
[00:34:04]

How to fix it?

@akegalj ping https://github.com/input-output-hk/cardano-sl/pull/895#issuecomment-305914301

@akegalj ping again.

@gromakovsky I am very sorry - my mailbox is full and not maintained last week. I will take a look at this now


Updated Workday Binary Sensor to use Holidays 0.9.11 and added support for Aruba Holidays.

Breaking Change:

Description:
A very minor update to the Workday Binary Sensor to use Holidays 0.9.11 which added support for Aruba Holidays.
I only made 2 changes, I don't even know how to do any of the things in the checklist below... Maybe someone can help?
What I did was added support for the Aruba Holidays in the Holidays library, which is now updated to 0.9.11. So I just updated the manifests file to use Holidays 0.9.11 and added Aruba in the list of supported Countries.
Related issue (if applicable): fixes #
Pull request with documentation for home-assistant.io (if applicable): home-assistant/home-assistant.io#<home-assistant.io PR number goes here>
Example entry for configuration.yaml (if applicable):

Checklist:

[ ] The code change is tested and works locally.
[ ] Local tests pass with tox. Your PR cannot be merged unless tests pass
[ ] There is no commented out code in this PR.
[ ] I have followed the development checklist

If user exposed functionality or configuration variables are added/changed:

[ ] Documentation added/updated in home-assistant.io

If the code communicates with devices, web services, or third-party tools:

[ ] The manifest file has all fields filled out correctly. Update and include derived files by running python3 -m script.hassfest.
[ ] New or updated dependencies have been added to requirements_all.txt by running python3 -m script.gen_requirements_all.
[ ] Untested files have been added to .coveragerc.

If the code does not interact with devices:

[ ] Tests have been added to verify that the new code works.

Hi @orson1282,
It seems you haven't yet signed a CLA. Please do so here.
Once you do that we will be able to review and accept this pull request.
Thanks!


Nullable quote character

This pull request adds to spark-csv the functionality to provide a null for the quote character, in the event that no quoting is desired. This is necessary to interoperate with libraries such as Scalding which use unquoted formats by default.
Since the uniVocity parser uses a non-nullable char for the quoting character, a null byte is substituted in CsvRelation.scala if null was provided and uniVocity used, just as is already done for commentChar.
A test is also added using a comma-separated file with unbalanced double-quote characters.
Author: James Blau<EMAIL_ADDRESS>Closes #89 from tresata-opensource/feat-nullable-quotation-character.

Thanks for submitting this. Please address the binary compatibility error.

Current coverage is 86.54%

Merging #165 into master will decrease coverage by -0.33% as of 29d74f4

@@            master    #165   diff @@
======================================
  Files           10      10
  Stmts          442     446     +4
  Branches       131     137     +6
  Methods          0       0
======================================
+ Hit            384     386     +2
  Partial          0       0
- Missed          58      60     +2

Review entire Coverage Diff as of 29d74f4

Powered by Codecov. Updated on successful CI builds.