@team-agent/installer 0.3.30 → 0.3.31

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
@@ -566,7 +566,7 @@ dependencies = [
566
566
 
567
567
  [[package]]
568
568
  name = "team-agent"
569
- version = "0.3.30"
569
+ version = "0.3.31"
570
570
  dependencies = [
571
571
  "anyhow",
572
572
  "chrono",
package/Cargo.toml CHANGED
@@ -9,7 +9,7 @@ members = ["crates/team-agent"]
9
9
 
10
10
  [workspace.package]
11
11
  edition = "2021"
12
- version = "0.3.30"
12
+ version = "0.3.31"
13
13
  license = "AGPL-3.0"
14
14
  rust-version = "1.95"
15
15
 
@@ -141,7 +141,7 @@ pub(crate) fn non_provider_command(command: &str) -> Option<&str> {
141
141
 
142
142
  pub(crate) fn latest_prompt_signal(scrollback: &str) -> Option<AgentActivity> {
143
143
  // E47 ROOT-FIX#2 (0.3.24 P0, idle/busy 假阳): limit the scan to the
144
- // BOTTOM ACTIVE REGION (last 1-3 non-empty lines = composer / status
144
+ // BOTTOM ACTIVE REGION (last 1-5 non-empty lines = composer / status
145
145
  // line). The pre-fix `rfind` across the whole Tail(40) buffer let a
146
146
  // historical spinner/`Working` token out-position the live `❯`/`›`
147
147
  // composer (the rfind-recency family bug — same shape as the #320
@@ -155,7 +155,7 @@ pub(crate) fn latest_prompt_signal(scrollback: &str) -> Option<AgentActivity> {
155
155
  .lines()
156
156
  .rev()
157
157
  .filter(|line| !line.trim().is_empty())
158
- .take(3)
158
+ .take(5)
159
159
  .collect();
160
160
  if active_region.is_empty() {
161
161
  return None;
@@ -168,11 +168,13 @@ pub(crate) fn latest_prompt_signal(scrollback: &str) -> Option<AgentActivity> {
168
168
  has_idle_prompt = true;
169
169
  }
170
170
  // codex live spinner shapes (provider/adapter.rs:875-876 markers):
171
- // braille spinner, `• Working (`, `Thinking`; claude `✶`/`✢` per
172
- // adapter; we look for STRUCTURAL composer signals.
171
+ // braille spinner, `• Working (`, `Thinking`; claude `✶`/`✢`/`✻`
172
+ // and Claude Code tool-progress verbs. We look for STRUCTURAL
173
+ // composer/status signals in the active region only.
173
174
  if [
174
175
  "working (", "thinking", "⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦",
175
- "⠧", "⠇", "⠏", "✶", "✢",
176
+ "⠧", "⠇", "⠏", "✶", "✢", "✻", "analyzing", "reading", "writing",
177
+ "searching", "running", "editing",
176
178
  ]
177
179
  .iter()
178
180
  .any(|needle| lower.contains(needle))
@@ -622,6 +622,45 @@ fn e47_claude_live_working_in_bottom_active_region_classifies_working() {
622
622
  );
623
623
  }
624
624
 
625
+ #[test]
626
+ fn worker_state_claude_code_busy_signal_within_bottom_five_classifies_working() {
627
+ let scrollback = "older output\n\
628
+ ✻ Searching files\n\
629
+ Reading src/lib.rs\n\
630
+ tool progress\n\
631
+ status line\n\
632
+ › Continue?\n\
633
+ ❯ ";
634
+ let st = serde_json::json!({});
635
+ let a = classify_agent_activity(&st, scrollback, false, Some("claude"), None);
636
+ assert_eq!(
637
+ a.status,
638
+ ActivityStatus::Working,
639
+ "Claude Code busy signal inside the bottom five active lines must \
640
+ classify Working even when an idle prompt glyph is also visible. Got {a:?}"
641
+ );
642
+ }
643
+
644
+ #[test]
645
+ fn worker_state_historical_claude_code_busy_above_bottom_five_stays_idle() {
646
+ let scrollback = "✻ Searching old result\n\
647
+ historical tool output\n\
648
+ line 1\n\
649
+ line 2\n\
650
+ line 3\n\
651
+ line 4\n\
652
+ › Continue?\n\
653
+ ❯ ";
654
+ let st = serde_json::json!({});
655
+ let a = classify_agent_activity(&st, scrollback, false, Some("claude"), None);
656
+ assert_eq!(
657
+ a.status,
658
+ ActivityStatus::Idle,
659
+ "Claude Code busy signal above the bottom five active lines is \
660
+ scrollback history and must not override the live idle prompt. Got {a:?}"
661
+ );
662
+ }
663
+
625
664
  #[test]
626
665
  fn e47_iron_law_no_signal_in_bottom_region_stays_uncertain_not_idle() {
627
666
  // Defence: IRON LAW (activity.rs:3 / bug-071/077/085). When the bottom
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@team-agent/installer",
3
- "version": "0.3.30",
3
+ "version": "0.3.31",
4
4
  "description": "npx installer for Team Agent",
5
5
  "keywords": [
6
6
  "codex",
@@ -20,9 +20,9 @@
20
20
  "team-agent-installer": "npm/install.mjs"
21
21
  },
22
22
  "optionalDependencies": {
23
- "@team-agent/cli-darwin-arm64": "0.3.30",
24
- "@team-agent/cli-darwin-x64": "0.3.30",
25
- "@team-agent/cli-linux-x64": "0.3.30"
23
+ "@team-agent/cli-darwin-arm64": "0.3.31",
24
+ "@team-agent/cli-darwin-x64": "0.3.31",
25
+ "@team-agent/cli-linux-x64": "0.3.31"
26
26
  },
27
27
  "scripts": {
28
28
  "postinstall": "node npm/bincheck.mjs",