@team-agent/installer 0.5.0 → 0.5.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
@@ -566,7 +566,7 @@ dependencies = [
566
566
 
567
567
  [[package]]
568
568
  name = "team-agent"
569
- version = "0.5.0"
569
+ version = "0.5.1"
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.5.0"
12
+ version = "0.5.1"
13
13
  license = "AGPL-3.0"
14
14
  rust-version = "1.95"
15
15
 
@@ -225,7 +225,7 @@ fn command_help(command: Option<&str>) -> String {
225
225
  Some("quick-start") => "usage: team-agent quick-start [TEAMDIR] [--workspace WORKSPACE] [--name NAME] [--team-id TEAM|--team TEAM] [--yes] [--no-display] [--json]\n\ndefaults: display_backend=adaptive; set display_backend: none in TEAM.md or pass --no-display to use one worker window per agent.".to_string(),
226
226
  Some("start") => "usage: team-agent start [TEAMDIR] [--yes] [--fresh] [--json]".to_string(),
227
227
  Some("compile") => "usage: team-agent compile --team TEAM [--out FILE] [--json]".to_string(),
228
- Some("send") => "usage: team-agent send TARGET MESSAGE... [--workspace WORKSPACE] [--team TEAM] [--targets AGENTS] [--task TASK] [--sender SENDER] [--watch-result] [--requires-ack|--no-ack] [--no-wait] [--timeout SECONDS] [--confirm-human] [--message-id ID] [--json]".to_string(),
228
+ Some("send") => "usage: team-agent send TARGET MESSAGE... [--workspace WORKSPACE] [--team TEAM] [--targets AGENTS] [--to-name NAME] [--pane PANE] [--task TASK] [--sender SENDER] [--watch-result] [--requires-ack|--no-ack] [--no-wait] [--timeout SECONDS] [--confirm-human] [--message-id ID] [--json]\n\nMVP: name-based cross-workspace addressing assumes trusted local caller; no auth gate.".to_string(),
229
229
  Some("fallback-send-leader") => "usage: team-agent fallback-send-leader --workspace WORKSPACE --team TEAM --sender AGENT --message-id ID --content TEXT --primary-error ERROR [--task TASK] [--json]\n\nEmergency one-shot fallback only after a leader-bound MCP send transport failure; restart-agent after use.".to_string(),
230
230
  Some("fallback-report-result") => "usage: team-agent fallback-report-result --workspace WORKSPACE --team TEAM --agent-id AGENT --task-id TASK --result-json JSON --primary-error ERROR [--json]\n\nEmergency one-shot fallback only after a report_result MCP transport failure; persists the result DB row, then restart-agent after use.".to_string(),
231
231
  Some("allow-peer-talk") => "usage: team-agent allow-peer-talk A B [--workspace WORKSPACE] [--json]".to_string(),
@@ -668,6 +668,7 @@ struct ParsedArgs {
668
668
  out: Option<PathBuf>,
669
669
  auth_mode: Option<String>,
670
670
  pane: Option<String>,
671
+ to_name: Option<String>,
671
672
  provider: Option<String>,
672
673
  message_id: Option<String>,
673
674
  content: Option<String>,
@@ -750,6 +751,7 @@ fn parse_args(args: &[String]) -> ParsedArgs {
750
751
  "--out" => parsed.out = next_arg(args, &mut i).map(PathBuf::from),
751
752
  "--auth-mode" => parsed.auth_mode = next_arg(args, &mut i),
752
753
  "--pane" => parsed.pane = next_arg(args, &mut i),
754
+ "--to-name" => parsed.to_name = next_arg(args, &mut i),
753
755
  "--provider" => parsed.provider = next_arg(args, &mut i),
754
756
  "--message-id" => parsed.message_id = next_arg(args, &mut i),
755
757
  "--content" => parsed.content = next_arg(args, &mut i),
@@ -762,6 +764,9 @@ fn parse_args(args: &[String]) -> ParsedArgs {
762
764
  other if other.starts_with("--pane=") => {
763
765
  parsed.pane = Some(other.trim_start_matches("--pane=").to_string());
764
766
  }
767
+ other if other.starts_with("--to-name=") => {
768
+ parsed.to_name = Some(other.trim_start_matches("--to-name=").to_string());
769
+ }
765
770
  other if other.starts_with("--provider=") => {
766
771
  parsed.provider = Some(other.trim_start_matches("--provider=").to_string());
767
772
  }
@@ -875,7 +880,7 @@ fn resolve_cli_path(cwd: &Path, path: &Path) -> PathBuf {
875
880
 
876
881
  fn send_args(args: &[String], cwd: &Path) -> Result<SendArgs, CliError> {
877
882
  let parsed = parse_args(args);
878
- let target = if parsed.targets.is_some() || parsed.pane.is_some() {
883
+ let target = if parsed.targets.is_some() || parsed.pane.is_some() || parsed.to_name.is_some() {
879
884
  None
880
885
  } else {
881
886
  parsed.positionals.first().cloned()
@@ -903,6 +908,7 @@ fn send_args(args: &[String], cwd: &Path) -> Result<SendArgs, CliError> {
903
908
  json: parsed.json,
904
909
  message_id: parsed.message_id,
905
910
  pane: parsed.pane.clone(),
911
+ to_name: parsed.to_name.clone(),
906
912
  })
907
913
  }
908
914
 
@@ -1602,6 +1608,8 @@ mod tests {
1602
1608
  "--workspace",
1603
1609
  "--team",
1604
1610
  "--targets",
1611
+ "--to-name",
1612
+ "--pane",
1605
1613
  "--watch-result",
1606
1614
  "--timeout",
1607
1615
  "--json",
@@ -1781,6 +1789,33 @@ mod tests {
1781
1789
  let _ = std::fs::remove_dir_all(&cwd);
1782
1790
  }
1783
1791
 
1792
+ #[test]
1793
+ fn send_to_name_positionals_are_message_not_target() {
1794
+ let cwd = tmp_workspace();
1795
+ let args = send_args(&cli_argv(&["--to-name", "team-a/qa", "hello"]), &cwd).unwrap();
1796
+ assert_eq!(args.to_name.as_deref(), Some("team-a/qa"));
1797
+ assert_eq!(args.target, None);
1798
+ assert_eq!(args.targets, None);
1799
+ assert_eq!(args.message, vec!["hello".to_string()]);
1800
+
1801
+ let args = send_args(
1802
+ &cli_argv(&["--to-name=team-a/qa", "multi", "word", "message"]),
1803
+ &cwd,
1804
+ )
1805
+ .unwrap();
1806
+ assert_eq!(args.target, None);
1807
+ assert_eq!(
1808
+ args.message,
1809
+ vec![
1810
+ "multi".to_string(),
1811
+ "word".to_string(),
1812
+ "message".to_string()
1813
+ ]
1814
+ );
1815
+
1816
+ let _ = std::fs::remove_dir_all(&cwd);
1817
+ }
1818
+
1784
1819
  #[test]
1785
1820
  fn send_pane_still_rejects_to_and_empty_message() {
1786
1821
  let cwd = tmp_workspace();
@@ -57,6 +57,7 @@ pub mod diagnose;
57
57
  pub mod emit;
58
58
  pub mod helpers;
59
59
  pub mod leader;
60
+ pub mod named_address;
60
61
  pub mod profile;
61
62
  pub mod send;
62
63
  pub mod status;
@@ -66,6 +67,7 @@ pub use adapters::*;
66
67
  pub use diagnose::*;
67
68
  pub use emit::*;
68
69
  pub use leader::*;
70
+ pub use named_address::*;
69
71
  pub use profile::*;
70
72
  pub use send::*;
71
73
  pub use status::*;