anveesa 0.4.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/Cargo.lock CHANGED
@@ -60,7 +60,7 @@ dependencies = [
60
60
 
61
61
  [[package]]
62
62
  name = "anveesa"
63
- version = "0.4.0"
63
+ version = "0.4.1"
64
64
  dependencies = [
65
65
  "anyhow",
66
66
  "base64",
package/Cargo.toml CHANGED
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "anveesa"
3
- version = "0.4.0"
3
+ version = "0.4.1"
4
4
  edition = "2024"
5
5
  default-run = "anveesa"
6
6
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "anveesa",
3
- "version": "0.4.0",
3
+ "version": "0.4.1",
4
4
  "description": "A terminal CLI that wraps AI providers (OpenAI-compatible APIs and local CLIs) into a single unified command",
5
5
  "main": "bin/anveesa.js",
6
6
  "bin": {
@@ -686,14 +686,23 @@ fn build_messages(
686
686
  prompt_cache: bool,
687
687
  ) -> Vec<Value> {
688
688
  let mut messages = Vec::new();
689
- if let Some(system) = &request.system {
690
- messages.push(json!({ "role": "system", "content": system }));
691
- }
692
- if let Some(workspace_context) = &request.workspace_context {
693
- messages.push(json!({ "role": "system", "content": workspace_context }));
694
- }
695
- messages
696
- .push(json!({ "role": "system", "content": tools::guidance(policy.allows_write_tools()) }));
689
+
690
+ // Merge all system-level content into a single system message.
691
+ // Many providers (Qwen3, etc.) only allow one system message and require
692
+ // it to be the very first message — multiple system messages cause HTTP 400.
693
+ let guidance = tools::guidance(policy.allows_write_tools());
694
+ let system_content = [
695
+ request.system.as_deref(),
696
+ request.workspace_context.as_deref(),
697
+ Some(guidance.as_str()),
698
+ ]
699
+ .into_iter()
700
+ .flatten()
701
+ .collect::<Vec<_>>()
702
+ .join("\n\n");
703
+
704
+ messages.push(json!({ "role": "system", "content": system_content }));
705
+
697
706
  for message in &request.history {
698
707
  let role = match message.role {
699
708
  ChatRole::User => "user",