Build 2 panels

Build both panels for the frontend: ES5 and latest.
Related PRs:

https://github.com/home-assistant/home-assistant/pull/10589
https://github.com/home-assistant/home-assistant-polymer/pull/630
https://github.com/home-assistant/hassio/pull/249

This PR needs to be updated as the ES5 artifacts are now published under build-temp-es5. Also, the default name of the artifact is now always hassio-main.html

build-temp/hassio-main.html should be renamed to ../../hassio/panel/hassio-main-latest.html
build-temp-es5/hassio-main.html should be renamed to ../../hassio/panel/hassio-main-es5.html
Run gzip -f -k -9 ../../hassio/panel/*.html

Alright I've updated the PR


Fix ordering functions for IFP

Type of change

Bug fix

Changes
The IFP gt and lt functions were incorrectly implemented, this pr fixes the implementation and adds tests to ensure functionality
Notes

Bug was discovered here https://bugs.immunefi.com/dashboard/submission/32276

Checklist

[ ] I have linked to any relevant issues.
[ ] I have commented my code, particularly in hard-to-understand areas.
[ ] I have updated the documentation where relevant (API docs, the reference, and the Sway book).

[ ] If my change requires substantial documentation changes, I have requested support from the DevRel team

[x] I have added tests that prove my fix is effective or that my feature works.
[x] I have added (or requested a maintainer to add) the necessary Breaking* or New Feature labels where relevant.
[x] I have done my best to ensure that my PR adheres to the Fuel Labs Code Review Standards.
[x] I have requested a review from the relevant team or maintainers.
[x] I have updated the changelog to reflect the changes on this PR.

Dependent on https://github.com/FuelLabs/docs-hub/pull/340

Closing to re-open in order to try triggering stuck checks


clone() implementation in op.js

I was reviewing your reference implementation as I'm porting the rich-text ottype to Python and wanted to check-in on something.
The implementation of clone() in op.js is the following:
clone: function (op) {
    var newOp = this.attributes.clone(op);
    if (typeof newOp.attributes === 'object') {
      newOp.attributes = this.attributes.clone(newOp.attributes, true);
    }
    return newOp;
  },

I think your intention is to effectively perform a deep copy of the op. It seems to accomplish this by doing a shallow copy and then special-casing attributes since it knows it is an object and does a separate shallow-copy on it's contents.
While this mostly works, seems like you could run into issues when copying an op that represents a new Quill 1.0-style insert embed operation. Since in this case the value of the insert key is itself an object, like the attributes case, you currently would end up just copying the reference but not deep-copying the individual object keys. Am I correct?

Attributes has to be cloned because rich-text might modify it whereas I believe embeds are only compared for equality. There might potentially be issues as I do not recall explicitly making the shallow copy decision but thinking about it more now it's not obvious if that is right or wrong.
var myEmbed = {
  video: {
    src: 'youtube.com/abcd',
    width: 400,
    height: 400
  }
};

var deltaA = new Delta().insert(myEmbed);
// some change to myEmbed
var deltaB = new Delta().insert(myEmbed);

deltaB.diff(deltaA);

In this example it's not obvious what diff should report here, which is determined by a shallow or deep copy. To me if width was changed, diff should report no change; if src was changed, it should. But rich-text needs to not care about what its fields mean so it's behavior cannot depend on this. One could argue that width and height should be attributes as attributes are meant for more malleable descriptors so I'm leaning towards accepting a deep copy as correct but I'll have to think about it more and circle back. If you have more clarifying examples feel free to post.

I use a forked version of rich-text that supports deep comparison of attributes, because I have several formats that use nested attribute keys, e.g.
{
  insert: 1,
  attributes: {
    image: {
      id: 1234,
      src: 'http://i.imgur.com/XLnYgMy.jpg',
      caption: 'what a time to be alive'
    }
  }
}

Deep comparison is necessary, because otherwise quill does not detect changes correctly (i.e. a shallow comparison of attributes may detect that attributes.image has changed value, where a deep comparison would detect no difference).
For this reason, I think it's clearest if deep clones / comparisons are used everywhere.

FYI I also changed rich-text to deep compare attributes like how @thomsbg has it. It still only does one level for compose, transform, etc when there is a change however.

Excellent! That fits with my usage, where changes to nested attribute keys are handled as a change to the entire attribute, e.g. concurrent changes to src and caption in my example above would not be intelligently merged.

Great! Just updated my python port as well to match these deep copy semantics: https://github.com/sachinrekhi/richtextpy/commit/b06297863b053a23d5bc97aa82fbbcbacd538b0f


Bug filter condition for analytic info for two phase read…

… opt
two phase read optimization should not be enabled when query has analytic info
Proposed changes
Issue Number: close #xxx
Problem summary
Describe your changes.
Checklist(Required)

Does it affect the original behavior:

[ ] Yes
[ ] No
[ ] I don't know

Has unit tests been added:

[ ] Yes
[ ] No
[ ] No Need

Has document been added or modified:

[ ] Yes
[ ] No
[ ] No Need

Does it need to update dependencies:

[ ] Yes
[ ] No

Are there any changes that cannot be rolled back:

[ ] Yes (If Yes, please explain WHY)
[ ] No

Further comments
If this is a relatively large or complex change, kick off the discussion at<EMAIL_ADDRESS>by explaining why you chose the solution you did and what alternatives you considered, etc...

TeamCity pipeline, clickbench performance test result:
the sum of best hot time: 35.68 seconds
load time: 494 seconds
storage size:<PHONE_NUMBER>3 Bytes
https://doris-community-test-1308700295.cos.ap-hongkong.myqcloud.com/tmp/20230128162516_clickbench_pr_85791.html


bug fixed for mysql url jdbc:mysql:replicate

 You should sign our Contributor License Agreement in order to get your pull request merged.高铁 seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account ([for further information, click here] (https://help.github.com/articles/why-are-my-commits-linked-to-the-wrong-user/#commits-are-not-linked-to-any-user)).

https://github.com/alibaba/druid/issues/1155


The space-filling cylinder mesh model.

Hi! I am reading your paper of OptCuts and conducting research on surface parameterization. In your paper (Fig. 19), you experimented with a Hilbert-curve-shaped developable surface on the cylinder. Could you share with me this mesh model? I want to have a test on this interesting test case. Thank you very much!

I guess you are talking about some other paper:)

I guess you are talking about some other paper:)

Yes, it should be the SLIM paper. Sorry for this.


Avoid having to manually disable gorm callbacks

Instead every test must opt-in (by calling s.RestoreGormCallbacks()) in order to have created_at and updated_at columns automatically set to the current time.

@kwk snapshot fabric8-wit image is available for testing.  docker pull docker.io/fabric8/fabric8-wit:SNAPSHOT-PR-1761-2

Hmm, did that just replace it with 017/11/09 10:46:20 [warning] duplicated callback gorm:update_time_stamp from /tmp/go/src/github.com/fabric8-services/fabric8-wit/gormtestsupport/db_test_suite.go:120 ? :)

Hmm, did that just replace it with 017/11/09 10:46:20 [warning] duplicated callback gorm:update_time_stamp from /tmp/go/src/github.com/fabric8-services/fabric8-wit/gormtestsupport/db_test_suite.go:120 ? :)

Don't know.


Use CronJob batch/v1 resource version if available

The batch/v2alpha1 CronJob type definitions and clients are deprecated and removed in Kubernetes v1.21. This patch fix deprecation warnings related to version change.
Kubernetes v1.20.7 output:
$ kubectl version | grep Server
Server Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.7", GitCommit:"132a687512d7fb058d0f5890f07d4121b3f0a2e2", GitTreeState:"clean", BuildDate:"2021-05-27T23:27:49Z", GoVersion:"go1.15.12", Compiler:"gc", Platform:"linux/amd64"}

$ helm install foo deploy/helm/kubernetes --dry-run | grep -B1 CronJob
apiVersion: batch/v1beta1
kind: CronJob

Kubernetes v1.21.1 output:
$ kubectl version | grep Server
Server Version: version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.1", GitCommit:"5e58841cce77d4bc13713ad2b91fa0d961e69192", GitTreeState:"clean", BuildDate:"2021-05-21T23:01:33Z", GoVersion:"go1.16.4", Compiler:"gc", Platform:"linux/amd64"}

$ helm install foo deploy/helm/kubernetes --dry-run | grep -B1 CronJob
apiVersion: batch/v1
kind: CronJob

Hi thank you for contribution and sorry for the late reply,
In order to keep this chart as compatible as possible with the other management and templating tools, eg argocd and jsonnet. I'd like to avoid using lookup and capabilities feature.
This would allow you to render simple yaml without accessing end cluster, and just apply it when it will be needed.
Thus, let's just update the apiVersion and bump required Kubernetes version in README.md file

Thus, let's just update the apiVersion and bump required Kubernetes version in README.md file

Done!


Introduces 'focusable' in FocusNode and FocusScopeNode, deprecating 'canRequestFocus' for focus handling

This PR adds the focusable parameter to deprecate/replace the canRequestFocus mapped in https://github.com/flutter/flutter/issues/24722 and described in https://github.com/flutter/flutter/issues/154148
Pre-launch Checklist

[x] I read the Contributor Guide and followed the process outlined there for submitting PRs.
[x] I read the Tree Hygiene wiki page, which explains my responsibilities.
[x] I read and followed the Flutter Style Guide, including Features we expect every widget to implement.
[x] I signed the CLA.
[x] I listed at least one issue that this PR fixes in the description above.
[x] I updated/added relevant documentation (doc comments with ///).
[x] I added new tests to check the change I am making, or this PR is test-exempt.
[x] I followed the breaking change policy and added Data Driven Fixes where supported.
[x] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel on Discord.

This PR adds the focusable parameter to replace the canRequestFocus mapped in https://github.com/flutter/flutter/issues/24722

@Mairramer thanks for the PR! That issue is specifically tracking changes we won't make because it would be too breaking. I am not sure if we would want to make this change for that reason.

This PR adds the focusable parameter to replace the canRequestFocus mapped in https://github.com/flutter/flutter/issues/24722

That issue is specifically tracking changes we won't make because it would be too breaking.

@Mairramer I do not think we will be merging this change based on the above feedback. Do you have any reason why we must break the API in this way?

Hey @Mairramer for the reasons previously stated, I am going to close this PR. It os not worth breaking the existing API, and we consistently use canRequestFocus throughout the framework.


ARTEMIS-1230 Added artemis-bom

Added artemis-bom and removed ${project.version}
tags for most org.apache.activemq:artemis* and
org.apache.activemq.rest:artemis* (jar, war, test-jar) dependencies.
org.apache.activemq.examples.: and org.apache.activemq.tests.:
dependencies were not addressed as it might be best
to handle them separately

Was there a particular reason other than make it more organized?
I mean: was there a particular error that you faced that lead you to do this?

@clebertsuconic
Boms minimize (or eliminate altogether) the risk of having mismatched versions of a project's artifacts.
They also allow the sharing of versions without relying on the Maven pom hierarchy.
We are using Artemis embedded with Spring Boot. Spring Boot declares 10 Artemis dependencies in its bom, we require two additional dependencies.  If we wish to vary our version of Artemis from the Spring Boot version (which we do ) we then have to duplicate all the Spring declared dependencies or else we risk having inconsistent versions of Artemis libraries in our classpath.
Further we have non-Spring Boot libraries that use Artemis so again we have to explicitly declare each dependency we reference.
It should be noted that Spring Boot's bom contains 408 non-spring-framework dependencies and Activemq (both projects) make up over 9% of the total entries.
For the record though I am not a fan of how Spring Boot handles their dependencies and would not recommend it for Artemis.  Spring Boot mixes Spring and non-Spring dependencies together.  In my experience boms for large projects should be decomposed in the following manner:

External Project Bom:  The members of the project that will be published externally.  This is the artemis-bom  created in this pull request
External Third Party Bom:  The third party dependencies that are used by the items declared in the External Project Bom
Composite External Bom:  The composite of the other External Boms
Internal Project Bom (Optional):  The members of the project that will not be published externally. This would contain the org.apache.activemq.tests modules
Internal Third Party Bom (Optional):  The third party dependencies that are used by the items declared in the Internal Project Bom. This would contain any third party dependencies reference by org.apache.activemq.tests modules.
Composite Internal Bom  (Optional):  The composite of all the other bom projects. This is really only needed when projects cannot share a parent. If modules share the same parent then the boms can be added to the parent's dependencyManagement section.

Finally providing a bom (or boms) has become pretty standard for larger projects (spring, jackson, netty, jetty, log4j2, junit, infinispan, jersey, wildfly, etc)

Was there a particular reason other than make it more organized?
I mean: was there a particular error that you faced that lead you to do this?

@jmax01 on that note then in doing this instead of declaring a large list of the same third parties submodules why doesnt this just add their boms instead as further clean up.

@michaelandrepearce Can you clarify the this  to which you are referring?
But if you mean why I didn't I clean up artemis's third party dependencies, it was because that would fall outside of the scope of the originally submitted issue.

@jmax01 on that note then in doing this instead of declaring a large list of the same third parties submodules why doesnt this just add their boms instead as further clean up. As you give example with netty is a clear case.
Also i dont see why we would make some modules special. either we do it one way or another. Not two diff approaches.

This = the pr/change your proposing.
Either everything follows the bom way or everything follows the existing. Its not good to have two approaches that change depending. It makes things actually worse.
I quite like the bom approach. But i think it needs to be more complete if we were to change artemis where it would be done for all.
I dont want a half way house personally. Its all in or all out.

I agree, but when submitting PR's I attempt to keep the focus as narrow as possible as that is what most projects prefer.
If it is agreed among the maintainers that they want to go all in I am more than will to submit another PR with those changes.
I think we would need another issue as the scope is a bit different than the original.

This = the pr/change your proposing.
Either everything follows the bom way or everything follows the existing. Its not good to have two approaches that change depending. It makes things actually worse.
I quite like the bom approach. But i think it needs to be more complete if we were to change artemis where it would be done for all.
I dont want a half way house personally. Its all in or all out.

So i think maybe it should be discussed on dev list to get the lay of the land. Im for it, but it needs to be discussed and have concensus as it is changing the way people are used to with the project quite a bit.
Just to be clear i am against having a half and half approach.

I will create another pr with the entire solution

@jmax01 I'm all for it...
however.. when submitting big changes.. it's nice to have a [DISCUSS] thread on the dev-list.
if you could also create the thread on the dev-list.. PR discussions are not sent to the dev-list any longer, and having a discussion there would probably be a good idea.

Has a [DISCUSS] thread been sent? I haven't seen one....

@michaelandrepearce not yet.. I was waiting if @jmax01 wanted to start it first

@clebertsuconic sorry, yes the question was meant for @jmax01

@michaelandrepearce not yet.. I was waiting if @jmax01 wanted to start it first

Haven't had a chance yet.  Spent the weekend looking at the scope of what might be changed.  Wrote a couple of utilities generate some data:

Identified versions explicitly declared (not property driven) in <dependency> or <dependencyManagement> sections  (around 63)
Identified version inconsistencies
Identified version property convention mismatches (1.7.21</slf4j-version, vs<slf4j.version>1.7.21</slf4j.version>)
Identified projects that do not have explicit referenced dependencies declared (mvn dependency:analyze -Dverbose=true -DoutputXML=true)
Found that org.apache.activemq.examples.broker:netty-openssl project version  is 2.7.0-SNAPSHOT and not 2.8.0-SNAPSHOT

Once a have the issue set determined I will start the thread.

@jmax01 I would start with the DISCUSS now... that gives people time to suggest changes ahead... make suggestions.. or simply accept the changes you are making.
You don't need to have the whole solution ready for the start of the thread.

@clebertsuconic  will do.

Team, sorry for the delay.
The encrypted drive on my primary machine decided to no longer decrypt and I have been busy getting my environment restored.
I will try to get the [DISCUSS] thread created as soon as I am able.

@jmax01, it's been awhile since you last commented. I don't recall seeing a [DISCUSS] thread. Did you ever start one? If not, will you?

I would like to see such an artemis-bom. Helps to always resolve the correct transitive dependencies when using embedded Artemis in Maven project.

I'm closing this, the issues haven't been resolved, nor discussion thread. Please re-open once issues are resolved and a discussion thread with positive outcome has occurred.

I was looking at reviving this idea with an updated PR based essentially on the work already done by @jmax01. However, I don't understand your objection, @michaelandrepearce. Can you elaborate on the all-in vs. all-out issue you raised? Isn't this BOM just giving folks who want it the option of using and everyone else can continue doing business as normal?


Allow package binaries to be "globally" installed

Once we have "pub run" in place, it will let the user run command-line apps defined in packages when the cwd is within a package. The next step is being able to run apps when outside of the context of any package.
To do this, we'll need to determine which version of the app to run, and expose some interface to let the user see and control it.

This issue has been moved to dart-lang/pub#969.


[Broken] Generation with Sequential Model

Take up a config and set "pipe-parallel-size": 1
Run python deepy.py generate.py configs/70M-deduped.yml -i input_prompt.txt -o prompt_out.txt
This will bring sequential model in action.
Error: 'SequentialWrapper' object has no attribute 'clear_cache' in line

I don't have the bandwidth to handle this for now. Would appreciate if someone can take a look.

Will take a look!

is this error solved now? I encountered the same problem when I train and inference a 125M GPT2 model according to the guidelines.

If you encountered the same problem, it’s safe to say that it’s not solved.

The same problem here. Could you please help to check it?

Same here. Would the temporary comment the line out affect anything?

Sorry all. This happened due to a line that snuck into the neox 2.0 release. To clarify for all, there are three pipeline parallelism cases in gpt-neox:
(pipe_parallel_size == 0): In this case, the model is wrapped in a standard nn.Sequential module
https://github.com/EleutherAI/gpt-neox/blob/c64bacccf3a68a27e1f79fa176db4ecd2206a5e9/megatron/training.py#L416
This is done to reduce memory overhead and latency. This case is rarely used, and is where the issue you're seeing above lies.
(pipe_parallel_size == 1): This is the most common case. The model is wrapped in a single GPT2ModelPipe module, which makes it easier for both DeepSpeed and us to handle. This should be the default case, which we just resolved in https://github.com/EleutherAI/gpt-neox/pull/866.
(pipe_parallel_size > 1): This is for large models that require multiple pipeline module stages to distribute the model. This case remains unchanged.
What should you do: If you trained a model and need those weights to stay in a sequential module, we're working on a fix and will share it shortly. If you don't need those weights and instead simply need to run inference on a public model, apply the patch in https://github.com/EleutherAI/gpt-neox/pull/866 and run again.

@satpalsr @FourWinds021 @DaoD @yizhilll have your issues been resolved by the recent patches?

yes


Monorepo

The major changes are

Simple setup - only npm install needed
Package per font - Only install the fonts you need for smaller binary sizes
Typescript support
All fonts updated
Font package generator - easily ship new fonts
codemod for easy migration

Check out the migration guide in MIGRATION.md
Help Needed! Can someone help make installation for OSX and Windows projects fully automated as well?
More details on all of the changes are below.
Simple setup
Significant effort has gone into automating the entire setup experience. For
a new user adding a font should be as simple as follows:
npm install @react-native-vector-icons/common @react-native-vector-icons/fontisto
cd ios && pod update
npm android
npm ios

import Fontisto from '@react-native-vector-icons/fontisto'

const App = () => <Fontisto name="comments" />

Package per font
Each font has its own npm package, which means you only get the fonts you want in your final build. For example, @react-native-vector-icons/evil-icons. The version numbers for the individual packages will track the upstream versions. This should provide more stability for your projects regarding knowing which glyphs will be supported in the font.
Significant improvements should be made in binary sizes. For example, if you only need the evil icons font, instead of including 2.8MB of fonts, you would only include 14kB.
New npm scope
The npm modules are now hosted under @react-native-vector-icons.
Native typescript support and auto-completion
All packages are now written in typescript and export types.
LSP-based autocompletion should now be significantly improved, with the completion of icon names, including support for multi-style icons like FontAwesome 5 and 6.
Font updates
All fonts have been updated to the very latest versions. In the future, we intend to have automation via GitHub actions to track upstream fonts and release new versions automatically.
Font template generator
We have created a Yeoman generator, @react-native-vector-icons/generator-react-native-vector-icons, that you can use to create packages for your fonts. We use this to generate all the internal font packages. See the documentation for more details. We will also welcome pull requests for new fonts. In the future, we'll write some GitHub actions to auto-update and publish based on upstream changes.
Other changes
Backwards computability with react-vector-icons has been removed.
Icon.Button has been removed.
The following methods have been removed

getFontFamily
getRawGlyphMap
hasIcon
getStyledIconSet

Fontawesome 5 & 6 now take an iconStyle prop to switch between icon styles like solid, sharp, etc.
Migration
A migration guide can be found in MIGRATION.md. We have created a codemod to
help with the heavy lifting, and documented all the steps.

hello, perhaps this should've been squashed.? I know it's public now but 250 not-too-descriptive commits on the main branch will not make life easier for anybody imho. cc @oblador @johnf


Remove unused fromSerializationWrapper

This method was used in the Java transport-client, but since we've
removed the client, the fromSerializationWrapper method is no longer
necessary.

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@c6cdb24). Click here to learn what that means.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master    #5912   +/-   ##
=========================================
  Coverage          ?   82.99%
  Complexity        ?    12150
=========================================
  Files             ?     1428
  Lines             ?    46465
  Branches          ?     5732
=========================================
  Hits              ?    38565
  Misses            ?     5227
  Partials          ?     2673

Impacted Files
Coverage Δ
Complexity Δ

...n/java/io/crate/action/sql/SQLActionException.java
80% <ø> (ø)
7 <0> (?)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update c6cdb24...3266b9c. Read the comment docs.


Possible Regression - select_speaker failed to resolve the next speaker's name -

could be connected to #663. I am using the latest released version (0.2)
I am getting error such as:

WARNING:autogen.agentchat.groupchat:GroupChat select_speaker failed to resolve the next speaker's name. This is because the speaker selection OAI call returned:

Role: Senior\_Python\_Engineer
while the role is: Senior_Python_Engineer
Note sure at which stage the space character gets converted to _.

@afourney FYI

any update on this?  I try running agentchat_groupchat.ipynb, and encounters the same issue:

GroupChat select_speaker failed to resolve the next speaker's name. This is because the speaker selection OAI call returned:

same

Pretty much the same thing happens when I want to use Groupchat. In the beginning, something like the following is sometimes generated "←[33mContentCreator←[0m (to chat_manager):". A friend saw the following on his screen : "\033[34m" and "\033[0m". These look like colour codes? And then it goes all wrong, because the Groupchat manager cannot find the next speaker, and then further generates "GroupChat select_speaker failed to resolve the next speaker's name. This is because the speaker selection OAI call returned:" without a speaker, while there is still some output from a speaker, but from which speaker is not clear. Until this bug (and related issues) gets fixed, Autogen is pretty much worthless.

same issue, cleaning up the cache at every run does not resolve the issue.

same issue I am not sure what to report here to help solve the issue. I am running four agents, and  using LM studio as the server. It looks like the agents chat either break off, requestion a prompt or it loops around getting similar responses.   I don't know if this helps - say this is the model:
{
"name": "mistralai_mistral-7b-instruct-v0.2",
"arch": "llama",
"quant": "Q4_K_S",
"context_length": 32768,
"embedding_length": 4096,
"num_layers": 32,
"rope": {
"freq_base": 1000000,
"dimension_count": 128
},
"head_count": 32,
"head_count_kv": 8,
"parameters": "7B"
}
and this is a snip of the chat:
2023-12-23 00:08:47.054] [INFO] [LM STUDIO SERVER] Context Overflow Policy is: Stop at limit
[2023-12-23 00:08:47.054] [INFO] Provided inference configuration: {
"n_threads": 4,
"n_predict": -1,
"top_k": 40,
"top_p": 0.95,
"temp": 0.8,
"repeat_penalty": 1.1,
"input_prefix": "[INST]",
"input_suffix": "[/INST]",
"antiprompt": [
"[INST]"
],
"pre_prompt": "You are in a role play game. The following roles are available:\nDirector: You are the director of our team. The goal of the team is to build a project specific prompt ..\n\nRead the following conversation.\nThen select the next role from ['Director', 'Assistant', 'Critic', 'AgentBuilder'] to play. Only return the role.",
"pre_prompt_suffix": "",
"pre_prompt_prefix": "",
"seed": 1111,
"tfs_z": 1,
"typical_p": 1,
"repeat_last_n": 64,
"frequency_penalty": 0,
"presence_penalty": 0,
"n_keep": 0,
"logit_bias": {},
"mirostat": 0,
"mirostat_tau": 5,
"mirostat_eta": 0.1,
"memory_f16": true,
"multiline_input": false,
"penalize_nl": true
}
It looks like the UserproxyAgent gets a somewhat "confusing" pre_promp: "You are in a role play game. The following roles are available:\nDirector:" ....  and then the Director is prompted to select:  "Then select the next role from ['Director', 'Assistant', 'Critic', 'AgentBuilder'] to play. Only return the role."
I wonder if a change to the prepompt texst would help?  [](https://discord.com/channels/1110598183144399058/1177683199514660934/1187889597800251422| Link to LM Studio Discord regarding the code used)

@AssetDK Link to discord channel is not correct I think (resulting in no text channels).

I'm hitting this problem also.
What can be done to resolve it?

Hi everyone. I'm looking into this this now.  Notably, I would expect GroupChat to work poorly on everything but GPT-4. It looks like at least on example is using Mistral. I'm not sure what models everyone else is using -- please include this information.
@AssetDK as for the confusing "pre-prompt" -- I 100% agree. I tried to have that fixed a while back, but made the mistake of including it in another PR, then removing it so that review would go more smoothly: https://github.com/microsoft/autogen/pull/736#issuecomment-1844797374  I'll follow-through and submit the prompt fix as a standalone PR.
I am also a little confused by this pre-prompt?
"pre_prompt": "You are in a role play game. The following roles are available:\nDirector: You are the director of our team. The goal of the team is to build a project specific prompt ..\n\nRead the following conversation.\nThen select the next role from ['Director', 'Assistant', 'Critic', 'AgentBuilder'] to play. Only return the role.",
There should be at least 4 agents listed, not just the Director. Can you provide an example of how you initialize your agents and your GroupChat?

Hi everyone. I'm looking into this this now. Notably, I would expect GroupChat to work poorly on everything but GPT-4. It looks like at least on example is using Mistral. I'm not sure what models everyone else is using -- please include this information.

Really appreciate this! Im running LM studio version with TheBloke/Mistral-7B-Instruct-v0.2-GGUF/mistral-7b-instruct-v0.2.Q4_K_S.gguf
Below you find is my entire code - I tried to add an extra agent "Builder" a meta-agent that I hope can suggest new agent definitions. These tree/four agents should illustrate how I could use the agents to explore what the LLM knows about some EU legislation. I have some ideas for MUCH more interesting teams, but that will have to wait... :-)
I wonder, as I am not toooo familiar with Python syntax, if the "extra" commas in the parameter lists could mess things up ['Director', 'Assistant', 'Critic', 'AgentBuilder']  but it did Little difference with or without!  (Also I wonder how the code is reset, it looks like some answers are preserved between sessions. )
`from autogen import AssistantAgent, UserProxyAgent, GroupChat, GroupChatManager
config = {
"config_list": [
{
# "base_url": "http://localhost:5001/v1",
"base_url": "http://localhost:1234/v1",
"api_key": "NULL"
}
],
"seed": 1111
}
director = UserProxyAgent(
"Director",
code_execution_config=False,
human_input_mode="NEVER",
system_message="You are the director of our team. The goal of the team is actually to describe the roles of a new autogen Agent expert team! This team will be working with the implementation if EU's CAP legislation, locally in denmark. Based on the Critic and your skills you will deside when the task is done and when to request more input." ## "When your ready, or once in a while,  you must ask AgentBuilder to make the code for new autogen AssistantAgent descriptions for our new autogen Agent expert team!",
default_auto_reply="Very fine lets revisit our plans!", max_consecutive_auto_reply=5
)
assistant = AssistantAgent(
"Assistant",
system_message="Assistant to the Director. You will build a full orderede list of possibel experts and a tasklist for the skills and tools these experts may need, that is our new autogen Agent expert team regarding EU's CAP legislation.",
llm_config=config,
)
critic = AssistantAgent(
name="Critic",
system_message="You will inspect the liste of experts plans made for gatering expert knowlege regarding EU's CAP legislation. You will point out gaps and even suggest new taks to improve quality!",
llm_config=config,
)
builder  = AssistantAgent(
name="AgentBuilder",
system_message="You are an expert in openai and autogen. Your task is to build new autogen AssistantAgent descriptions for the agents that will be needed for our project.",
llm_config=config,
)
groupchat = GroupChat(
agents=[
director,
assistant,
critic,
##builder,
],
messages=[],
max_round=15,
speaker_selection_method="auto",
allow_repeat_speaker=True,
##speaker_selection_method="manual"
)
manager = GroupChatManager(
name="Chat",
groupchat=groupchat,
llm_config=config
)
director.initiate_chat(
manager,
message="Please workout a plan for AgentBuilder so he can can describe a new team of autogen AssistantAgent agents that are experts on EU's CAP legislation. Starting from what we know about EU's CAP, what are the tasks and skills we need and how can we best describe such a team of autogen AssistantAgent agents?"
)`

@AssetDK Link to discord channel is not correct I think (resulting in no text channels).
Perhaps this works better - will edit the original message!
https://discord.com/channels/1110598183144399058/1177683199514660934/1187733442977337365

Hi Per Feldvoss Olsen @AssetDK https://github.com/AssetDK
The link is still resulting in “NO TEXT CHANNELS”.
Van: Per Feldvoss Olsen @.>
Verzonden: jeudi 28 décembre 2023 15:04
Aan: microsoft/autogen @.>
CC: Maxime-Charmasson @.>; Comment @.>
Onderwerp: Re: [microsoft/autogen] Possible Regression - select_speaker failed to resolve the next speaker's name - (Issue #842)
@AssetDK https://github.com/AssetDK  Link to discord channel is not correct I think (resulting in no text channels).
Perhaps this works better - will edit the original message!
https://discord.com/channels/1110598183144399058/1177683199514660934/1187733442977337365
—
Reply to this email directly, view it on GitHub https://github.com/microsoft/autogen/issues/842#issuecomment-1871205721 , or unsubscribe https://github.com/notifications/unsubscribe-auth/AVBNRQTZ3TOHM52FGOXQNCLYLV34DAVCNFSM6AAAAABAEBLW5KVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQNZRGIYDKNZSGE .
You are receiving this because you commented.  https://github.com/notifications/beacon/AVBNRQTWSX7VEDVQANOCCR3YLV34DA5CNFSM6AAAAABAEBLW5KWGG33NNVSW45C7OR4XAZNMJFZXG5LFINXW23LFNZ2KUY3PNVWWK3TUL5UWJTTPRBKVS.gif Message ID: @.*** @.***> >

@afourney  - When I disregard the original problem it looks like things are working "somewhat"... until I get this Trackback message, I guess that the code could be fragile if it depends on the reply syntax and try to convert in to messages.
Traceback (most recent call last):
  File "d:\MYPhyton\Autogen1\autogentest\autogen_EU_CAP_1.py", line 61, in <module>
    director.initiate_chat(
  File "C:\Users\asset\anaconda3\Lib\site-packages\autogen\agentchat\conversable_agent.py", line 550, in initiate_chat
    self.send(self.generate_init_message(**context), recipient, silent=silent)
  File "C:\Users\asset\anaconda3\Lib\site-packages\autogen\agentchat\conversable_agent.py", line 348, in send
    recipient.receive(message, self, request_reply, silent)
  File "C:\Users\asset\anaconda3\Lib\site-packages\autogen\agentchat\conversable_agent.py", line 481, in receive
    reply = self.generate_reply(messages=self.chat_messages[sender], sender=sender)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\asset\anaconda3\Lib\site-packages\autogen\agentchat\conversable_agent.py", line 906, in generate_reply
    final, reply = reply_func(self, messages=messages, sender=sender, config=reply_func_tuple["config"])
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\asset\anaconda3\Lib\site-packages\autogen\agentchat\groupchat.py", line 269, in run_chat
    speaker = groupchat.select_speaker(speaker, self)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\asset\anaconda3\Lib\site-packages\autogen\agentchat\groupchat.py", line 158, in select_speaker
    final, name = selector.generate_oai_reply(
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\asset\anaconda3\Lib\site-packages\autogen\agentchat\conversable_agent.py", line 625, in generate_oai_reply
    response = client.create(
               ^^^^^^^^^^^^^^
  File "C:\Users\asset\anaconda3\Lib\site-packages\autogen\oai\client.py", line 247, in create
    response = self._completions_create(client, params)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\asset\anaconda3\Lib\site-packages\autogen\oai\client.py", line 327, in _completions_create
    response = completions.create(**params)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\asset\anaconda3\Lib\site-packages\openai\_utils\_utils.py", line 301, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\asset\anaconda3\Lib\site-packages\openai\resources\chat\completions.py", line 598, in create
    return self._post(
           ^^^^^^^^^^^
  File "C:\Users\asset\anaconda3\Lib\site-packages\openai\_base_client.py", line 1096, in post
    return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\asset\anaconda3\Lib\site-packages\openai\_base_client.py", line 856, in request
    return self._request(
           ^^^^^^^^^^^^^^
  File "C:\Users\asset\anaconda3\Lib\site-packages\openai\_base_client.py", line 908, in _request
    raise self._make_status_error_from_response(err.response) from None
openai.BadRequestError: Error code: 400 - {'error': "'messages' array must only contain objects with a 'content' field that is not empty."}

@Maxime-Charmasson well it works for me, you can find this under Discord for LM studio feature request / support open ai 1.0 API

Thanks for the additional information.
GroupChat is already doing a somewhat fuzzy match by counting how many times each agent is named in response, regardless of formatting: https://github.com/microsoft/autogen/blob/30daa1eac52f8d19f84df5c67cccbab0f9386463/autogen/agentchat/groupchat.py#L267C4-L288C24
It's possible there is a bug here, but I'd love to see the inputs and output to replicate.
As for the cache, the cache key should already consider the llm_config settings, so I'm not sure what's going on there. Again, it is possible that there is a bug with that, but it would impact things more broadly... not just group chat: https://github.com/microsoft/autogen/blob/30daa1eac52f8d19f84df5c67cccbab0f9386463/autogen/oai/openai_utils.py#L52-L71C46
I'll keep digging, but the biggest concern I'm seeing is that the speaker selection pre-prompt is missing several agent descriptions in the trace above. However, the system_prompts/descriptions don't match the configuration that was later provided, so something doesn't quite line up.
Ideally, what I would like to see is the configuration + the selection pre-prompts of the same run. We can then determine if there is a bug there.
The pre-prompt descriptions are generated here:
https://github.com/microsoft/autogen/blob/30daa1eac52f8d19f84df5c67cccbab0f9386463/autogen/agentchat/groupchat.py#L253-L265

For starters I think i found the reason this does not work, but I may also have some other basic problem.
We often get this GroupChat select_speaker failed to resolve the next speaker's name. This is because the speaker selection OAI call returned:
This is how the code should actually run, but in some cases the director did not yield such a message.

I dont know it this is the root cause but i did not set the names correct:

The other thing is that I would think that searching the agents names/roles may be corrupted or "mixed up" when the name is actually a role - that is you should perhaps call the Director agent "joe" - and we should not use the common terms "Director", "Assistant", "Programmer" etc. - even "DirectorA" will be better... NLP is not easy to process programmatically.
This is debug from groupchat.py

Sorry for the unfinnised message got to run

@AssetDK thanks again for working through this. I really do believe that a good chunk of the problem here is that the core prompting is tuned to GPT-4, and that's breaking speaker selection. The LLM is clearly not following even the basic formatting instructions for speaker selection (but we should be robust to simple formatting issues).
One thing that may help is adding a description field to each of your agents. Keep the descriptions short, sweet, and 3rd person. More on descriptions here: https://microsoft.github.io/autogen/blog/2023/12/29/AgentDescriptions

Thanks a lot Adam I have to read all those blog posts!
I clearly did not look to much into the documentation of UserProxAgent and AssistantAgent.
Use case
I will use this for some specific ideas for making the agent produce higher quality output in different ways. I don't know yet if  that can be implemented as finetuning or in some way of training. For prof of concept it will have to be done via memory, description or may be even via the prompt.
As an example I might need to "make" an expert in a specific branch of philosophy, but I would find it hard to keep that short and sweet... especially if I wanted to have to describe several such experts in distinct ways... that could evolve to long and complicated descriptions.
Setup and Teachable agent
Also I need much more knowledge about setting up the environment, I have no idea about what versions I'm running on for any of the software  - line numbers are deferent between our code, so we may not be running on the same versions.
I just now found this tutorial that is explaining the general setup for VS code (and teachable agents! ... something I will
probably need for my project. https://www.youtube.com/watch?v=KDpGN7QDEVk (Autogen 0.2.0 where as your talking about version 0.2.2 )
Seed vs memory
Finally, it looks like the version I am running on uses a seed (see below) to preserve some kind of memory I got no idea how that works and how to reset?  (teachable agents sounds better, so i will probably need to test that out!)
I wonder if Teachable agent is supplementing or replacing memgpt?  - and all of this should probably be in the diskussions..
config = {
    "config_list": [
        {
            ....,
            ....
        }
    ],
    "seed": 1114
}

I wonder if Teachable agent is supplementing or replacing memgpt?

Autogen's teachable agents are related to MemGPT in using a vector db for memory that gets constantly updated. But their details and capabilities are quite different.

@afourney - When I disregard the original problem it looks like things are working "somewhat"... until I get this Trackback message, I guess that the code could be fragile if it depends on the reply syntax and try to convert in to messages.

The description parameter works fine, however I needed to fill out the system_message parameter for my "Director" and looks like all of the agents are running under a 'user' role even my "Director" - I was under the impression that UserProxyAgent would be the mannager of what agent was next.
... and I still get the GroupChat select_speaker failed to resolve the next speaker's name. This is because the speaker selection OAI call returned: message...  and that seems to keep the "team" in a kind of loop! (I will try to debug that.
Also I will make a new discussion regarding how the team set-up is working. Agent Descriptions (version 0.2.2 onwards) and team setup. #1109
Examples of the message format:
Last message: { role: 'user', content: ' I have provided a detailed response addressing your questions regarding creating a team of `autogen AssistantAgent` agents for EU's Common Agricultural Policy (CAP). With these guidelines, you should be able to develop a capable and efficient team of assistant agents that can assist users with any queries they may have about CAP legislation.

If you have any further questions or need additional clarification, don't hesitate to ask!

TERMINATE' }

Example of text and code reply:
Step 3: Develop the AssistantAgent agents
Now that we have defined the tasks and skills for our AssistantAgent team, we can start developing them. We will write Python code that uses natural language processing (NLP) techniques to understand user queries and provide accurate answers based on their knowledge of EU's CAP legislation. We will also implement a system for updating our agents with any changes in the CAP regulations as they occur.
Plan: Develop the AssistantAgent team using Python, integrating NLP libraries such as spaCy or NLTK and databases to store and access CAP information.
# filename: assistant_agents.py
python -m venv cap_assistant_venv
source cap_assistant_venv/bin/activate
pip install spacy nltk sqlite3
git clone https://github.com/explosion/spaCy.git
cd spaCy && python setup.py install --user
deactivate

First of all, Happy New Year to everyone, and adding my 2 cents in here as well.  I would like to the authors at Microsoft and Seehiong for posting workable examples.  I too received the same thing but everything else works fine as for the  group chat conversation from what I can see so far and I cannot get the user_proxy to execute code in WSL2 Ubuntu 22.04 but I don't think that is related to this issue at all. I agree with @afourney that it's the dependency built into the OpenAI GPT LLMs but why should we have to to also teach the agents who the agents are when in my code, it clearly lists the names of the agents, which like @AssetDK says, is also the roles as well?  If that is the case, then how to do we implement teachability to the group chat manager immediately after builder builds all the agents, because based on the code below, they start talking as soon as the function "start_task" completes.  This is 100% reproducible from my code below. Thank you, Seehiong, for the great tutorial. Here's my setup and code below:
windows 11
LM Studio version: 2.10 for windows
WSL2 Ubuntu 22.04
Python 3.10
pyautogen  0.2.2
Code base:
import autogen

from autogen.agentchat.contrib.agent_builder import AgentBuilder

# https://seehiong.github.io/2023/unveiling-agent-autobuild-in-autogen/

config_path = 'OAI_CONFIG_LIST'

default_llm_config = {
    "temperature": 0,
    'timeout': 600
}

builder = AgentBuilder(config_path=config_path, builder_model='gpt-4', agent_model='gpt-4')

custom_task = """
I'm enthusiastic about launching an innovative project – a software academy tailored for children aged 7 to 16 with no prior coding experience.
The focus is on AI and introductory Python programming to impart essential technical skills crucial for their future.
To bring this vision to life, I'd like the language model's assistance in detailing the course agenda, developing a comprehensive curriculum, and establishing a step-by-step approach towards our goal.
Together, we aim to create a compelling plan that not only educates but also inspires the next generation of tech enthusiasts.
Let's embark on this exciting journey by shaping the foundation of our software academy.
"""

agent_list, agent_configs = builder.build(custom_task + '\nOnly identify the agent name and separate them with comma.', default_llm_config)

def start_task(execution_task: str, agent_list: list, llm_config: dict):
    config_list = autogen.config_list_from_json(config_path, filter_dict={"model": ["gpt-4"]})

    group_chat = autogen.GroupChat(agents=agent_list, messages=[], max_round=12)
    manager = autogen.GroupChatManager(
        groupchat=group_chat, llm_config={"config_list": config_list, **llm_config}
    )
    agent_list[0].initiate_chat(manager, message=execution_task)

start_task(
    execution_task=custom_task,
    agent_list=agent_list,
    llm_config=default_llm_config
)

First of all, Happy New Year to everyone, and adding my 2 cents in here as well.  I would like to the authors at Microsoft and Seehiong for posting workable examples.  I too received the same thing but everything else works fine as for the  group chat conversation from what I can see so far and I cannot get the user_proxy to execute code in WSL2 Ubuntu 22.04 but I don't think that is related to this issue at all. I agree with @afourney that it's the dependency built into the OpenAI GPT LLMs but why should we have to to also teach the agents who the agents are when in my code, it clearly lists the names of the agents, which like @AssetDK says, is also the roles as well?  If that is the case, then how to do we implement teachability to the group chat manager immediately after builder builds all the agents, because based on the code below, they start talking as soon as the function "start_task" completes.  This is 100% reproducible from my code below. Thank you, Seehiong, for the great tutorial. Here's my setup and code below:
windows 11
LM Studio version: 2.10 for windows
WSL2 Ubuntu 22.04
Python 3.10
pyautogen  0.2.2
Code base:
import autogen

from autogen.agentchat.contrib.agent_builder import AgentBuilder

# https://seehiong.github.io/2023/unveiling-agent-autobuild-in-autogen/

config_path = 'OAI_CONFIG_LIST'

default_llm_config = {
    "temperature": 0,
    'timeout': 600
}

builder = AgentBuilder(config_path=config_path, builder_model='gpt-4', agent_model='gpt-4')

custom_task = """
I'm enthusiastic about launching an innovative project – a software academy tailored for children aged 7 to 16 with no prior coding experience.
The focus is on AI and introductory Python programming to impart essential technical skills crucial for their future.
To bring this vision to life, I'd like the language model's assistance in detailing the course agenda, developing a comprehensive curriculum, and establishing a step-by-step approach towards our goal.
Together, we aim to create a compelling plan that not only educates but also inspires the next generation of tech enthusiasts.
Let's embark on this exciting journey by shaping the foundation of our software academy.
"""

agent_list, agent_configs = builder.build(custom_task + '\nOnly identify the agent name and separate them with comma.', default_llm_config)

def start_task(execution_task: str, agent_list: list, llm_config: dict):
    config_list = autogen.config_list_from_json(config_path, filter_dict={"model": ["gpt-4"]})

    group_chat = autogen.GroupChat(agents=agent_list, messages=[], max_round=12)
    manager = autogen.GroupChatManager(
        groupchat=group_chat, llm_config={"config_list": config_list, **llm_config}
    )
    agent_list[0].initiate_chat(manager, message=execution_task)

start_task(
    execution_task=custom_task,
    agent_list=agent_list,
    llm_config=default_llm_config
)

im not sure if this is the correct way to solve the problem but i use the following and have no problems
    manager = autogen.GroupChatManager(groupchat=groupchat, llm_config=llm_config)```

    only thing i did was adding the ```speaker_selection_method="round_robin```

Round robin will definitely solve it, but then the order is fixed -- it just goes round and round in the order you specified. Is that what you want for your scenario?

Providing an update, I was able to get it to work using "speaker_selection_method", the only one that did not work was for "auto".
group_chat = autogen.GroupChat(agents=agent_list, messages=[], max_round=12,speaker_selection_method="manual")
for the code:
speaker_selection_method: the method for selecting the next speaker. Default is "auto". Could be any of the following (case insensitive), will raise ValueError if not recognized:
"auto": the next speaker is selected automatically by LLM.
"manual": the next speaker is selected manually by user input.
"random": the next speaker is selected randomly.
"round_robin": the next speaker is selected in a round robin fashion, i.e., iterating in the same order as provided in agents.

I think this may be a different issue, but I get the same error as @AssetDK replicating the code generation tutorial.

Error code: 400 - {'error': "'messages' array must only contain objects with a 'content' field that is not empty."}

Running the following with llama2 13B:
import autogen

config_list = [
    {
        "base_url": "http://localhost:1234/v1",
        "api_key": "NULL"
    }
]

llm_config = {
    "timeout": 600,
    "seed": 40,
    "config_list": config_list,
    "temperature": 0
}

# create an AssistantAgent named "assistant"
assistant = autogen.AssistantAgent(
    name="assistant",
    llm_config={
        "cache_seed": 55,  # seed for caching and reproducibility
        "config_list": config_list,  # a list of OpenAI API configurations
        "temperature": 0,  # temperature for sampling
    },  # configuration for autogen's enhanced inference API which is compatible with OpenAI API
)
# create a UserProxyAgent instance named "user_proxy"
user_proxy = autogen.UserProxyAgent(
    name="user_proxy",
    human_input_mode="NEVER",
    max_consecutive_auto_reply=10,
    is_termination_msg=lambda x: x.get("content", "").rstrip().endswith("TERMINATE"),
    code_execution_config={
        "work_dir": "coding",
        "use_docker": False,  # set to True or image name like "python:3" to use docker
    },
)
# the assistant receives a message from the user_proxy, which contains the task description
user_proxy.initiate_chat(
    assistant,
    message="""What date is today? Compare the year-to-date gain for META and TESLA.""",
)

Can open separate issue for this if hasn't been addressed here.

@matsuobasho I've seen this error mentioned a few times. E.g., https://github.com/microsoft/autogen/issues/279#issuecomment-1773528968
If you share a trace we can debug further.

@afourney , sure here is the traceback:
BadRequestError                           Traceback (most recent call last)
Cell In[3], line 22
     11 user_proxy = autogen.UserProxyAgent(
     12     name="user_proxy",
     13     human_input_mode="NEVER",
   (...)
     19     },
     20 )
     21 # the assistant receives a message from the user_proxy, which contains the task description
---> 22 user_proxy.initiate_chat(
     23     assistant,
     24     message="""What date is today? Compare the year-to-date gain for META and TESLA.""",
     25 )

File c:\Users\Bob\.virtualenvs\autogen\Lib\site-packages\autogen\agentchat\conversable_agent.py:556, in ConversableAgent.initiate_chat(self, recipient, clear_history, silent, **context)
    542 """Initiate a chat with the recipient agent.
    543
    544 Reset the consecutive auto reply counter.
   (...)
    553         "message" needs to be provided if the `generate_init_message` method is not overridden.
    554 """
    555 self._prepare_chat(recipient, clear_history)
--> 556 self.send(self.generate_init_message(**context), recipient, silent=silent)

File c:\Users\Bob\.virtualenvs\autogen\Lib\site-packages\autogen\agentchat\conversable_agent.py:354, in ConversableAgent.send(self, message, recipient, request_reply, silent)
    352 valid = self._append_oai_message(message, "assistant", recipient)
    353 if valid:
--> 354     recipient.receive(message, self, request_reply, silent)
    355 else:
    356     raise ValueError(
    357         "Message can't be converted into a valid ChatCompletion message. Either content or function_call must be provided."
    358     )

File c:\Users\Bob\.virtualenvs\autogen\Lib\site-packages\autogen\agentchat\conversable_agent.py:489, in ConversableAgent.receive(self, message, sender, request_reply, silent)
    487 reply = self.generate_reply(messages=self.chat_messages[sender], sender=sender)
    488 if reply is not None:
--> 489     self.send(reply, sender, silent=silent)

File c:\Users\Bob\.virtualenvs\autogen\Lib\site-packages\autogen\agentchat\conversable_agent.py:354, in ConversableAgent.send(self, message, recipient, request_reply, silent)
    352 valid = self._append_oai_message(message, "assistant", recipient)
    353 if valid:
--> 354     recipient.receive(message, self, request_reply, silent)
    355 else:
    356     raise ValueError(
    357         "Message can't be converted into a valid ChatCompletion message. Either content or function_call must be provided."
    358     )

File c:\Users\Bob\.virtualenvs\autogen\Lib\site-packages\autogen\agentchat\conversable_agent.py:489, in ConversableAgent.receive(self, message, sender, request_reply, silent)
    487 reply = self.generate_reply(messages=self.chat_messages[sender], sender=sender)
    488 if reply is not None:
--> 489     self.send(reply, sender, silent=silent)

File c:\Users\Bob\.virtualenvs\autogen\Lib\site-packages\autogen\agentchat\conversable_agent.py:354, in ConversableAgent.send(self, message, recipient, request_reply, silent)
    352 valid = self._append_oai_message(message, "assistant", recipient)
    353 if valid:
--> 354     recipient.receive(message, self, request_reply, silent)
    355 else:
    356     raise ValueError(
    357         "Message can't be converted into a valid ChatCompletion message. Either content or function_call must be provided."
    358     )

File c:\Users\Bob\.virtualenvs\autogen\Lib\site-packages\autogen\agentchat\conversable_agent.py:487, in ConversableAgent.receive(self, message, sender, request_reply, silent)
    485 if request_reply is False or request_reply is None and self.reply_at_receive[sender] is False:
    486     return
--> 487 reply = self.generate_reply(messages=self.chat_messages[sender], sender=sender)
    488 if reply is not None:
    489     self.send(reply, sender, silent=silent)

File c:\Users\Bob\.virtualenvs\autogen\Lib\site-packages\autogen\agentchat\conversable_agent.py:962, in ConversableAgent.generate_reply(self, messages, sender, exclude)
    960     continue
    961 if self._match_trigger(reply_func_tuple["trigger"], sender):
--> 962     final, reply = reply_func(self, messages=messages, sender=sender, config=reply_func_tuple["config"])
    963     if final:
    964         return reply

File c:\Users\Bob\.virtualenvs\autogen\Lib\site-packages\autogen\agentchat\conversable_agent.py:631, in ConversableAgent.generate_oai_reply(self, messages, sender, config)
    628     messages = self._oai_messages[sender]
    630 # TODO: #1143 handle token limit exceeded error
--> 631 response = client.create(
    632     context=messages[-1].pop("context", None), messages=self._oai_system_message + messages
    633 )
    635 # TODO: line 301, line 271 is converting messages to dict. Can be removed after ChatCompletionMessage_to_dict is merged.
    636 extracted_response = client.extract_text_or_completion_object(response)[0]

File c:\Users\Bob\.virtualenvs\autogen\Lib\site-packages\autogen\oai\client.py:260, in OpenAIWrapper.create(self, **config)
    258             continue  # filter is not passed; try the next config
    259 try:
--> 260     response = self._completions_create(client, params)
    261 except APIError as err:
    262     error_code = getattr(err, "code", None)

File c:\Users\Bob\.virtualenvs\autogen\Lib\site-packages\autogen\oai\client.py:346, in OpenAIWrapper._completions_create(self, client, params)
    344     params = params.copy()
    345     params["stream"] = False
--> 346     response = completions.create(**params)
    347 return response

File c:\Users\Bob\.virtualenvs\autogen\Lib\site-packages\openai\_utils\_utils.py:272, in required_args.<locals>.inner.<locals>.wrapper(*args, **kwargs)
    270             msg = f"Missing required argument: {quote(missing[0])}"
    271     raise TypeError(msg)
--> 272 return func(*args, **kwargs)

File c:\Users\Bob\.virtualenvs\autogen\Lib\site-packages\openai\resources\chat\completions.py:645, in Completions.create(self, messages, model, frequency_penalty, function_call, functions, logit_bias, logprobs, max_tokens, n, presence_penalty, response_format, seed, stop, stream, temperature, tool_choice, tools, top_logprobs, top_p, user, extra_headers, extra_query, extra_body, timeout)
    596 @required_args(["messages", "model"], ["messages", "model", "stream"])
    597 def create(
    598     self,
   (...)
    643     timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
    644 ) -> ChatCompletion | Stream[ChatCompletionChunk]:
--> 645     return self._post(
    646         "/chat/completions",
    647         body=maybe_transform(
    648             {
    649                 "messages": messages,
    650                 "model": model,
    651                 "frequency_penalty": frequency_penalty,
    652                 "function_call": function_call,
    653                 "functions": functions,
    654                 "logit_bias": logit_bias,
    655                 "logprobs": logprobs,
    656                 "max_tokens": max_tokens,
    657                 "n": n,
    658                 "presence_penalty": presence_penalty,
    659                 "response_format": response_format,
    660                 "seed": seed,
    661                 "stop": stop,
    662                 "stream": stream,
    663                 "temperature": temperature,
    664                 "tool_choice": tool_choice,
    665                 "tools": tools,
    666                 "top_logprobs": top_logprobs,
    667                 "top_p": top_p,
    668                 "user": user,
    669             },
    670             completion_create_params.CompletionCreateParams,
    671         ),
    672         options=make_request_options(
    673             extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
    674         ),
    675         cast_to=ChatCompletion,
    676         stream=stream or False,
    677         stream_cls=Stream[ChatCompletionChunk],
    678     )

File c:\Users\Bob\.virtualenvs\autogen\Lib\site-packages\openai\_base_client.py:1088, in SyncAPIClient.post(self, path, cast_to, body, options, files, stream, stream_cls)
   1074 def post(
   1075     self,
   1076     path: str,
   (...)
   1083     stream_cls: type[_StreamT] | None = None,
   1084 ) -> ResponseT | _StreamT:
   1085     opts = FinalRequestOptions.construct(
   1086         method="post", url=path, json_data=body, files=to_httpx_files(files), **options
   1087     )
-> 1088     return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls))

File c:\Users\Bob\.virtualenvs\autogen\Lib\site-packages\openai\_base_client.py:853, in SyncAPIClient.request(self, cast_to, options, remaining_retries, stream, stream_cls)
    844 def request(
    845     self,
    846     cast_to: Type[ResponseT],
   (...)
    851     stream_cls: type[_StreamT] | None = None,
    852 ) -> ResponseT | _StreamT:
--> 853     return self._request(
    854         cast_to=cast_to,
    855         options=options,
    856         stream=stream,
    857         stream_cls=stream_cls,
    858         remaining_retries=remaining_retries,
    859     )

File c:\Users\Bob\.virtualenvs\autogen\Lib\site-packages\openai\_base_client.py:930, in SyncAPIClient._request(self, cast_to, options, remaining_retries, stream, stream_cls)
    927     if not err.response.is_closed:
    928         err.response.read()
--> 930     raise self._make_status_error_from_response(err.response) from None
    932 return self._process_response(
    933     cast_to=cast_to,
    934     options=options,
   (...)
    937     stream_cls=stream_cls,
    938 )

BadRequestError: Error code: 400 - {'error': "'messages' array must only contain objects with a 'content' field that is not empty."}

@afourney
Version 0.2.3 og pyautogen
I finally got a bit of time and found that this is what is happening when the empty "contents" message occurs.

To me it looks like the message = messages[-1] - statement produces an empty message... where it is supposed to return the last message. I am not 100% sure about how Python should handle this... but it looks like the two elements in the list have the values in different sequences.  I do not know if that is causing the problem and where t fix it?
A simple temporary solution would be to simply do this for groupchat.py line 342:
if message["content"] != "":     groupchat.append(message)
An empty message will be sent to the other agents - so for that I made the same exception:

This does not solve the original problem where we do not get the next speaker... but the chat now runs and runs!

I resolved this issue by extending the GroupChat class and overriding the select_speaker method to make a call to my custom LLM with all the necessary data (last message, last speaker, previous  speaker etc..). Then i pass the name to the self.agent_by_name method which returns the next agent. The good thing with this approach is that you can control how your LLM get the next speaker. I guess this can work while we are waiting for the fix from autogen.

has anyone figured out what the problem or solution is here? it's definitely speaker selection, but it's not clear to me why it's happening.

project was abandoned. they did some hype to get some funding after that ... fixing styling and typing errors :)) no one gives a shit about bugs

@j4ys0n @AndreiD
If the issue is regarding to selecting speaker due to the LLM adding "" to "_", this should have been fixed by: https://github.com/microsoft/autogen/pull/2267.
If it is a different issue, please create a new one with a clear description of what the issue is.

Closing this as https://github.com/microsoft/autogen/pull/2267 has fixed the issue described in the issue description.

{
    "building_task": "..."
    "agent_configs": [
        {
            "name": "Fiction_Knowledge_Collector",
            "model": "gpt-4",
            "system_message": "You are now in a group chat. You need to complete a task with other participants. As a Fiction_Knowledge_Collector, your duty is to:\n\n- Collect and analyze information related to novelists, screenwriters, and film critics.\n- Provide all the necessary information to write a complete novel.\n- Ensure the constructed worldview, values, and marital values are realistic and logically coherent.\n- Provide comprehensive and complete evaluations, including plot construction, characterization, scene description, emotional rendering, and knowledge.\n\nTo complete the task, follow these steps:\n\n1. Collect information about novelists, screenwriters, and film critics. Use the following Python code to browse the web and search for relevant information:\n\n        # filename: browse_web.py\n        import webbrowser\n        url = 'https://www.google.com/search?q=novelists+screenwriters+film+critics'\n        webbrowser.open(url)\n\n2. Analyze the collected information to identify the necessary elements for writing a novel.\n\n3. Provide the collected information and analysis to the other participants in the group chat.\n\n4. Answer any questions that the other participants may have.\n\n5. Continue to collect and analyze information as needed until the task is complete.\n\nPlease let me know when you are finished with the task by replying \"TERMINATE\" in the group chat.",
            "description": "Fiction_Knowledge_Collector is a knowledgeable person who understands the ins and outs of most works of fiction. They have the ability to accurately recall and organize information from a variety of fictional sources, including books, movies, TV shows, and video games. Fiction_Knowledge_Collectors should be able to use their knowledge to answer questions about the plot, characters, or settings of these works."
        },
        {
            "name": "Script_Knowledge_Collector",
            "model": "gpt-4",
            "system_message": "You are now in a group chat. You need to complete a task with other participants. As a Script_Knowledge_Collector, you need to modify the following position requirement, making it more suitable for the above task and position:\n\n```\nYou are a helpful AI assistant.\nSolve tasks using your coding and language skills.\nIn the following cases, suggest python code (in a python coding block) or shell script (in a sh coding block) for the user to execute.\n    1. When you need to collect info, use the code to output the info you need, for example, browse or search the web, download/read a file, print the content of a webpage or a file, get the current date/time, check the operating system. After sufficient info is printed and the task is ready to be solved based on your language skill, you can solve the task by yourself.\n    2. When you need to perform some task with code, use the code to perform the task and output the result. Finish the task smartly.\nSolve the task step by step if you need to. If a plan is not provided, explain your plan first. Be clear which step uses code, and which step uses your language skill.\nWhen using code, you must indicate the script type in the code block. The user cannot provide any other feedback or perform any other action beyond executing the code you suggest. The user can't modify your code. So do not suggest incomplete code which requires users to modify. Don't use a code block if it's not intended to be executed by the user.\nIf you want the user to save the code in a file before executing it, put # filename: <filename> inside the code block as the first line. Don't include multiple code blocks in one response. Do not ask users to copy and paste the result. Instead, use 'print' function for the output when relevant. Check the execution result returned by the user.\nIf the result indicates there is an error, fix the error and output the code again. Suggest the full code instead of partial code or code changes. If the error can't be fixed or if the task is not solved even after the code is executed successfully, analyze the problem, revisit your assumption, collect additional info you need, and think of a different approach to try.\nWhen you find an answer, verify the answer carefully. Include verifiable evidence in your response if possible.\nReply \"TERMINATE\" in the end when everything is done.\n```\n\nHint:\n\n# Your answer should be natural, starting from \"You are now in a group chat. You need to complete a task with other participants. As a ...\".\n# [IMPORTANT] You should let them reply \"TERMINATE\" when they think the task is completed (the user's need has actually been satisfied).\n# The modified requirement should not contain the code interpreter skill.\n# You should remove the related skill description when the position is not a programmer or developer.\n# Coding skill is limited to Python.\n# Your answer should omit the word \"REQUIREMENT\".\n# People with the above position can doubt previous messages or code in the group chat (for example, if there is no\noutput after executing the code) and provide a corrected answer or code.\n# People in the above position should ask for help from the group chat manager when confused and let the manager select another participant.",
            "description": "Script Knowledge Collector is a position for people who are familiar with scripts or natural languages. They can identify the errors in the scripts or natural languages and provide corrected answers or code. They should have good analytical skills and be able to think critically."
        },
        {
            "name": "Film_Review_Collector",
            "model": "gpt-4",
            "system_message": "You are now in a group chat. You need to complete a task with other participants. As a Film_Review_Collector, you need to focus on the following aspects:\n\n1. **Novel writing:** You should provide important information and evidence for the construction of a worldview and provide a reasonable and logical closed loop for values and views on marriage and love.\n\n2. **Film review:** You need to provide a comprehensive and complete evaluation of the film, including but not limited to plot construction, character shaping, scene description, and emotional rendering.\n\nPlease note that you should not provide code or shell scripts for the user to execute. Your responses should be natural language only. When the task is completed, please reply \"TERMINATE\" in the chat.",
            "description": "Film_Review_Collector is a senior member who is experienced in film or TV series reviewing and writing. This person can provide high-quality film/series reviews for films/series they watched."
        },
        {
            "name": "Fiction_Analysis_Expert",
            "model": "gpt-4",
            "system_message": "You are now in a group chat. You need to complete a task with other participants. As a Fiction_Analysis_Expert, you are responsible for generating all necessary information to help write a complete novel, including collecting and analyzing specific areas relevant to fiction writers, screenwriters, and film critics. This information will serve as a solid foundation for constructing a coherent and realistic worldview, value system, and view on marriage and love in your novel. It will also provide comprehensive and thorough guidance on all aspects of novel writing, including plot construction, character development, scene description, emotional rendering, knowledge supplementation, and expansion. Your work should be of high quality and include appropriate evaluation and optimization based on film reviews. You can ask for assistance from the chat manager if you have any questions. Let us know when you are done by replying \"TERMINATE.\"",
            "description": "Fiction_Analysis_Expert is a position reserved for individuals who have studied fiction, literature, and other works of prose. They have an encyclopedic knowledge of these works, including authors, themes, styles, and character analyses. Individuals with this position should have experience in writing, editing, and presenting their findings on literary topics."
        },
        {
            "name": "Fiction_Quality_Optimizer",
            "model": "gpt-4",
            "system_message": "You are now in a group chat. You need to complete a task with other participants. As a Fiction Quality Optimizer, you are responsible for ensuring the quality of fiction writing. This includes collecting and analyzing relevant information, providing feedback on writing, and helping writers improve their craft.\n\nBased on the current task and your position, the following requirement is more suitable:\n\nYou are a helpful AI assistant.\nSolve tasks using your research, analytical, and communication skills on the following aspects:\n\n1. Information gathering and analysis: collect and analyze information on topics related to fiction writing, such as character development, plot structure, worldbuilding, and literary techniques.\n2. Feedback and optimization: provide feedback on fiction writing, including plot structure, character development, worldbuilding, and literary techniques. Suggest improvements and optimizations to enhance the quality of the writing.\n3. Knowledge expansion: supplement and expand the writer's knowledge on fiction writing techniques and best practices through the provision of relevant resources and insights.\n\nIn the following cases, provide guidance on research, analysis, and communication strategies for the user to execute:\n\n1. When you need to collect info, guide the user on how to conduct research on the relevant topic, using search engines, online databases, or other resources.\n2. When you need to provide feedback and optimization, guide the user on how to analyze the writing and identify areas for improvement, using specific examples and explanations.\n3. When you need to expand the writer's knowledge, guide the user on how to access and utilize resources such as articles, books, workshops, or online courses.\n\nSolve the task step by step if you need to. If a plan is not provided, explain your plan first. Be clear which step uses research and analysis, and which step uses communication skills.\n\nWhen using code, you must indicate the script type in the code block. The user cannot provide any other feedback or perform any other action beyond executing the code you suggest. The user can't modify your code. So do not suggest incomplete code which requires users to modify. Don't use a code block if it's not intended to be executed by the user.\n\nIf you want the user to save the code in a file before executing it, put # filename: <filename> inside the code block as the first line. Don't include multiple code blocks in one response. Do not ask users to copy and paste the result. Instead, use 'print' function for the output when relevant. Check the execution result returned by the user.\n\nIf the result indicates there is an error, fix the error and output the code again. Suggest the full code instead of partial code or code changes. If the error can't be fixed or if the task is not solved even after the code is executed successfully, analyze the problem, revisit your assumption, collect additional info you need, and think of a different approach to try.\n\nWhen you find an answer, verify the answer carefully. Include verifiable evidence in your response if possible.\n\nReply \"TERMINATE\" in the end when everything is done.",
            "description": "Fiction_Quality_Optimizer is a role that requires intellectual curiosity, meticulous proofreading, an eye for detail, and a keen grasp of storytelling principles. Their responsibilities include identifying inconsistencies or inaccuracies in content, assessing narrative structure and character development, and ensuring that the overall quality of the fiction meets the highest standards."
        }
    ],
    "coding": false,
    "default_llm_config": {
        "temperature": 0,
        "timeout": 300
    },
    "code_execution_config": {
        "last_n_messages": 2,
        "work_dir": "groupchat",
        "use_docker": false,
        "timeout": 60
    }
}

The above is the Agent configuration generated by buderagent, including the description, but the process is not satisfactory, and it still fails to match when executing tasks, and I do not know how to work properly. In addition, it seems that there are only five agents at most when Builder creates agents. No matter how much description is given to it, it still generates 5 agents so far, and here is a look at the task and the execution error:
start_task(
    execution_task="Began to write a novel, the theme is to cultivate the immortal, the protagonist is called Jiang Xin",
    agent_list=agent_list
)

Output:
Fiction_Knowledge_Collector (to chat_manager):

Began to write a novel, the theme is to cultivate the immortal, the protagonist is called Jiang Xin

--------------------------------------------------------------------------------
WARNING:autogen.agentchat.groupchat:GroupChat select_speaker failed to resolve the next speaker's name.
Please write a novel about Jiang Xin's cultivation into a fairy. The novel should be lively and interesting. The novel should include Jiang Xin's growth, the challenges he encountered, and the process of eventually becoming an immortal.
Please reply once each section is completed for review.
At the end of each response, please add a short summary of Jiang Xin's current stage.
Please do not reply "Finished" until the novel is finished.
In your final reply, please END with "end" to indicate that the novel is complete.

--------------------------------------------------------------------------------
WARNING:autogen.agentchat.groupchat:GroupChat select_speaker failed to resolve the next speaker's name. This is because the speaker selection OAI call returned:

---------------------------------------------------------------------------
BadRequestError                           Traceback (most recent call last)
[<ipython-input-15-80357df72228>](https://localhost:8080/#) in <cell line: 1>()
----> 1 start_task(
      2     execution_task="Began to write a novel, the theme is to cultivate the immortal, the protagonist is called Jiang Xin",
      3     agent_list=agent_list
      4 )

15 frames
[/usr/local/lib/python3.10/dist-packages/openai/_base_client.py](https://localhost:8080/#) in _request(self, cast_to, options, remaining_retries, stream, stream_cls)
   1011
   1012             log.debug("Re-raising status error")
-> 1013             raise self._make_status_error_from_response(err.response) from None
   1014
   1015         return self._process_response(

BadRequestError: Error code: 400 - {'error': {'message': 'Please ensure that multiturn requests ends with a user role or a function response. (request id:<PHONE_NUMBER>473221988766718854451)', 'type': '', 'param': '', 'code': 400}}

@fengzeyuchen, are you able to create a new issue as it's not specifically for this issue, and also provide your full code?


Fix the bug where different laser powers for the first 4 volume causes an error

If the first four volume have different laser powers it causes an error only under specific conditions (float vs int laser power values)
As @seyedolmohadesin for more details on this.

The string returned by the update_status function and it's conversion from dictionary to string adds more than one space between some elements, used `re.sub(" +", " ", string)" to remove extra spaces


Check for not so good passwords

A thought: Wouldn't it be a good thing if we tell people that their password is not safe?
We could use the hashed from
https://haveibeenpwned.com/Passwords
to check against. If a password is not secure we'd ask the user to enter an other one.
I don't know how to implement this UX workflow wise. It is just a thought.

Second thought: As much as I don't want people to use bad passwords I don't want to be their parent either. Who am I to judge?! So maybe a good compromise would be to tell users in the first email that their used password is not secure because it has be used by x number of other people (which we can check with the data from https://haveibeenpwned.com/Passwords) and add a link to https://haveibeenpwned.com and a link to the place where they can change their password within vutuv.

I maintain a password checker that we could use on the backend when checking the new user details. Using this, the feedback should be fairly quick, but in the future, we could also consider using a frontend solution if we want something more user-friendly.
I think it's important to check password strength because if there is a data breach, no password hashing function can protect weak passwords - they will very quickly be cracked.

Fixed in #647


Problem with SA1600

I've added StyleCop.Analyzers 1.1.0-beta006 to my project. Currently not all XML-headers are documented, thus I'm expecting SA1600 warning/error. On my developer environment I see the errors/warnings according to my settings. But when I deploy the project to TFS in that build step there are neither warnings nor erros for that rule. Some other rules work as expected but not SA1600.
Additionally, when I have a look into the settings of my rules, SA1600 has "Unknkown"(it is shown in german "Unbekannt") in it's description. all others are in english.
Why is the behaviour on TFS and local different?
How to fix the errror displaying correct description in the ruleset?

Can you verify the following:

Rule SA0001 has not been disabled
Rule SA0001 is not getting reported

Yes, I can confirm both.
This is a screendump from VS 2017, where the missing documentation (1600) is reported as an error, SA0001 is not reported and SA0001 is not disabled.

The SA1600 is also only shown as error in the errors window, the compile output states no errors, it compiles. I'd expected to get a compiler error. SA1600 is set to "Error".
On TFS, neither SA0001 nor SA1600 is reported.

SA0001 is not disabled.

In your image, it is disabled. Can you set it back to warning and see if things change?

I have a similar issue. When I build with VS2019 (dotnet cli 3.0) locally I get no error, but when on a Linux in CI I get SA1600 error.  I am using 1.1.0-beta009.


Bigint literal type -0n exists, and is not handled consistently

🔎 Search Terms
bigint negative zero template
🕗 Version & Regression Information

This is the behavior in every version I tried, and I reviewed the FAQ for entries about bigint

⏯ Playground Link
https://www.typescriptlang.org/play/?target=99&ts=5.6.3#code/C4TwDgpgBACg9gZwFoQE5ygXigBgHYDcAUKJFAHIQDmK6WUAtPgVK2+x5wPRdQD8AQiI82APT5EAxnDwJgUMAC8AXLES0M2JoSky5UPCorUN9ZkRLhoAZWCpKNNJqgADACQBvbQF8Xnf1AigsK8rOKWZLaoAEIAllQAknjy2O4eeACuALYARmi+urLyAB6qUXGJyfQAREzVLAEcQUIR0DAAhqgIEBVJwAA8ACpQEMXAEHgAJgiunjnxscm+AHz0w6PjUzNpiwBmaFB9I2MT01DzVIvAvvyHVap4EABuaK1qCLHAsS8A8o-0HS6PXifX6AHIAIxg5YhMQSUjQBztL6-f7YQHdXrJcEMKEwkRheFWd6fb4QUzozqYkHYsE4aGwwlvJEo8lOAFU4GVAZgpjQtjNRlQcRAA
💻 Code
type PosZero = 0n;
type NegZero = -0n;                     // ?!
//   ^? - type NegZero = 0n
const pz: PosZero = -0n;
const nz: NegZero = 0n;

type StrNegZero = `${-0n}`              // ?!
//   ^? - type StrNegZero = "0"
type StrBigInt = `${number}`
const x: StrBigInt = "-0";              // ?!

type ParseBigInt<T extends `${bigint}`> = T extends `${infer Int extends bigint}` ? Int : never
type PositiveOne = ParseBigInt<'1'>
//   ^? - type PositiveOne = 1n
type NegativeOne = ParseBigInt<'-1'>
//   ^? - type NegativeOne = -1n
type PositiveZero = ParseBigInt<'0'>
//   ^? - type PositiveZero = 0n
type NegativeZero = ParseBigInt<'-0'>   // ?!
//   ^? - type NegativeZero = bigint

🙁 Actual behavior
-0n is a valid and evalutates to 0n, and "-0" matches `${bigint}`, but `${-0n}` evalutates to "0", and "-0" is not successfully inferred as 0n
🙂 Expected behavior
-0n should either not exist, or it should be handled consistently with other bigint literals.
Either:

-0n should fail, and "-0" should not match `${bigint}`, because -0n is not a valid bigint value, and thus no such bigint stringifies to -0.
"-0" should be inferred to contain 0n/-0n, because -0n is valid syntax that evalutates to 0n.

Additional information about the issue
Credit to mkantor and sinclair in the TypeScript Community for extra examples.

Is this really specific to bigint? I think the same thing happens with number.
Is this really specific to -0? I think the same thing happens with any numeric literal where you are writing it in a form that differs from how that number gets serialized as a string (think 1.0 instead of 1, or 1e2 instead of 100).
The difference between 0 and -0 as numbers can almost always be completely ignored in JavaScript and therefore in TypeScript (it's hard to test for it; maybe you can divide by it and see which flavor of Infinity you get?). And there is no difference at all between 0n and -0n; the latter is just another way to write the former, like 0xFn is another way to write 15n.
I'm not seeing a bug here. The behavior where TS can only infer numbers from "round-trippable" strings is documented in the release notes and #48094, so one should expect ParseBigInt<-0> to be bigint.

Is this really specific to bigint? I think the same thing happens with number.

-0 is an actual existant value for number, though true that it's stringified as 0 as well.
Also just checked and TS does serialize -0 as 0, which I was not expecting

Is this really specific to -0? I think the same thing happens with any numeric literal where you are writing it in a form that differs from how that number gets serialized as a string (think 1.0 instead of 1, or 1e2 instead of 100).
I'm not seeing a bug here. The behavior where TS can only infer numbers from "round-trippable" strings is documented in the release notes and #48094, so one should expect ParseBigInt<-0> to be bigint.

I was not aware of these for the template types, thanks for the links.
But so far, I still think that -0n should not be a valid bigint literal type, since it's not an existant value, unlike -0. Is there a reason for that to specifically exist as a literal type?

The type -0n is the same type as 0n, it’s just another way to write it.  I don’t see why TS should error if you write -0n, unless it should also error if you write 0xFn.

I don't understand what the bug is supposed to be here either. -0n === 0n and the examples reflect that, right? I'm also unsold on what banning -0n would accomplish except to specifically address people who have gone looking for this trouble and successfully found it.


LDAP configuration without users

Describe the bug
When using externalConfig for ldap without mapping users bank-vaults prints error and stops configuring vault
To Reproduce
Create an externalConfig block with LDAP with only config and group blocks.
On bringup of vault the vault-configurer is printing:
time="2018-09-13T06:23:54Z" level=info msg="vault is not sealed, configuring..."
time="2018-09-13T06:23:54Z" level=error msg="error configuring vault: error finding users block for ldap: unable to cast <nil> of type <nil> to map[string]interface{}"

Expected behavior
Possible to have LDAP configuration without explicit need to give separate users access.

@salkin, thanks for the report, you are totally right, currently, these options were enforced, I have pushed a fix for it, and will release it soon. I will let you know.

0.2.22 is released now, from both bank-vault and the vault-operator.


Imagemagic 7 support?

is Imagemagic 7 supported?

It looks like no. I got:
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/wand/api.py", line 180, in <module>
    libraries = load_library()
  File "/usr/local/lib/python3.6/site-packages/wand/api.py", line 135, in load_library
    raise IOError('cannot find library; tried paths: ' + repr(tried_paths))
OSError: cannot find library; tried paths: []

I don't think that IM7 is supported because it fails to load the MagickWand dylib. After peering into what's going on, it's looking for the file libMagickWand-6Q16.dylib (or Q32 or whatever quantum you installed IM with). I downgraded my ImageMagick with
$ brew tap homebrew/versions
$ brew install imagemagick@6
and now my project that I'm using Wand for is failing somewhere else at least!

In addtion:
brew install ghostscript

Closing as support for IM has been merged into master branch


Escape benchmark comment title before matching

Escape the title before matching with the previous comment posts, so the _ in the title won't cause the matching failed.

Looks like that worked?

Yes, thanks for the suggestions : )


Define deprecation process for Helm chart fields removal and custom resources

Please describe the Improvement and/or Feature Request

When an existing Helm chart field is removed, it should go thru a deprecation process where the field is marked as [deprecated] for couple of releases before it is completely removed. This helps reduce impact for users to give them time to make the necessary changes in their ops workflow.
Scope (please mark with X where applicable)

New Functionality          [ ]
Install                    [ ]
SMI Traffic Access Policy  [ ]
SMI Traffic Specs Policy   [ ]
SMI Traffic Split Policy   [ ]
Permissive Traffic Policy  [ ]
Ingress                    [ ]
Egress                     [ ]
Envoy Control Plane        [ ]
CLI Tool                   [ ]
Metrics                    [ ]
Certificate Management     [ ]
Sidecar Injection          [ ]
Logging                    [ ]
Debugging                  [ ]
Tests                      [ ]
CI System                  [ ]
Demo                       [ ]
Project Release            [ ]

Possible use cases

Depends on #4330

Resolved by https://github.com/openservicemesh/osm-docs/commit/363eba59809ce0a51c6679c544d05f2875dd0d35.


Need more instructions to setup

Hello,
I'm trying to use this driver, but am not sure how to
a) Define my credentials and bucket.
b) Use it in Minikube.
c) Add custom parameters so I can use it with other S3-compliant storage services besides AWS, e.g. by adding the --endpoint parameter.
Could you elaborate on those three topics? I would highly appreciate that. I can already successfully mount my volume with goofys itself, so I only need to achieve the same with your driver inside Minikube.
Thank you in advance.
Best wishes,
k0105

I'm glad you think this will be useful to you! This driver is currently very specific to our setup, but I'm keen to make it more generic. So these answers may not be helpful right now.
a) We are running this on AWS and the credentials are picked up from the instance role. I would be keen to add config options to specify keys. Not sure what you mean by define bucket?
b) I would need to know more about what operating system minikube runs within the VM. Currently this driver assumes you are using kops to build a debian jesse cluster.
c) These are currently unsupported, but I would be keen to merge PRs to which adds all the config options.

Thank you very much for your answer.
About (a): A bucket is the AWS S3 folder you want to mount. There could be multiple ones and you always need to specify it as first argument in the s3fs or goofys mount command. Thus, without specifying a bucket name we cannot mount anything.
About (b): Minikube uses a generated embedded Linux based on Buildroot, cmp. https://buildroot.org/ Here are some basic properties:
Linux version 4.9.64 (jenkins@jenkins) (gcc version 7.2.0 (Buildroot 2017.11) ) #1 SMP Tue Jan 23 23:15:00 UTC 2018
$ cat /etc/issue
Welcome to minikube
$ cat /etc/os-release
NAME=Buildroot
VERSION=2017.11
ID=buildroot
VERSION_ID=2017.11
PRETTY_NAME="Buildroot 2017.11"
$ uname -r
4.9.64

About (c): If you could just expose the endpoint parameter, i.e. some way to specify --endpoint=<some_url> in the mount command (that should look like this: goofys --endpoint=<some_url> <bucket_name> <mount_target_directory>) that would immediately allow you to use a lot of other S3 providers besides AWS which would be great both for you and other users. You should be able to do it with close to no additional effort when exposing the bucket_name parameter and credentials and then have a very generic driver that protects you against any vendor lock-in.

a) In pysssix the bucket is irrelevant, you can access any bucket that your credentials have permission to access. In goofys you must specify the bucket as a configuration option. See the usage examples for more information.
b) That could potentially prove problematic. We need to be able to detect the OS and then install fuse, pysssix and goofys on that OS.
c) Yes I agree this would be a good option to add.


fix: make memory limit configurable

I think 16 MiB is a sane default for most tests, but the symbolic project in #1310 in Solidity broke it.
We could raise the default memory limit, but I think a saner choice is just to make it configurable. Raising the default could slow down fuzz tests in e.g. Solmate that "accidentally"/randomly do mload/mstore in high memory regions
Closes #1310

I think we can increase it a little bit, 2u64.pow(25) works for the symbolic project :smile:


Look up topic/partition leaders, then read Kafka offsets from the appropriate leader

See discussion at https://groups.google.com/a/cloudera.org/d/msg/oryx-user/6dE4w0ZTUzY/iVe4DeBOAQAJ :
We've been running Oryx 2.4.0 successfully as a proof-of-concept for a new recommendation system using the default topic settings from the "kafka-setup" task.  However, when running against a multi-node Kafka cluster with the input topic created with a replication factor greater than 1 the batch layer throws the following exception on startup:
Exception in thread "main" java.lang.IllegalStateException: Error reading offset for OryxInput / 0: kafka.common.NotLeaderForPartitionException
    at com.cloudera.oryx.kafka.util.KafkaUtils.getOffset(KafkaUtils.java:277)
    at com.cloudera.oryx.kafka.util.KafkaUtils.lambda$fillInLatestOffsets$3(KafkaUtils.java:231)
    at java.util.HashMap$KeySet.forEach(HashMap.java:932)
    at com.cloudera.oryx.kafka.util.KafkaUtils.fillInLatestOffsets(KafkaUtils.java:230)
    at com.cloudera.oryx.lambda.AbstractSparkLayer.buildInputDStream(AbstractSparkLayer.java:210)
    at com.cloudera.oryx.lambda.batch.BatchLayer.start(BatchLayer.java:105)
    at com.cloudera.oryx.batch.Main.main(Main.java:33)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:738)
    at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:187)
    at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:212)
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:126)
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

This is running against a Kafka <IP_ADDRESS> cluster (from Confluent Platform 3.2.0).
Has anyone else run into this issue using replicated topics?

Codecov Report

Merging #331 into master will increase coverage by 0.1%.
The diff coverage is 94.36%.

@@             Coverage Diff             @@
##             master     #331     +/-   ##
===========================================
+ Coverage     82.62%   82.73%   +0.1%
- Complexity     1444     1449      +5
===========================================
  Files           157      157
  Lines          4938     4969     +31
  Branches        691      694      +3
===========================================
+ Hits           4080     4111     +31
  Misses          444      444
  Partials        414      414

Impacted Files
Coverage Δ
Complexity Δ

.../java/com/cloudera/oryx/kafka/util/KafkaUtils.java
84.61% <94.36%> (+3.81%)
23 <7> (+5)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update f0d2fcb...6d34f5a. Read the comment docs.

I pulled and deployed this change locally and it does resolve the startup error, so it looks promising.  I'll continue testing today and update if I notice any problems.

Looks like it did the trick.  We're running against a three node Kafka cluster with replication factor 3 and no longer get errors during startup or during layer processing.

Done @craigwblake it's merged to master/2.4.x. Thank you for testing. I will put out a 2.4.1 soonish after collecting a few more minor fixes.