@team-agent/installer 0.5.55 → 0.5.56

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
@@ -575,7 +575,7 @@ dependencies = [
575
575
 
576
576
  [[package]]
577
577
  name = "team-agent"
578
- version = "0.5.55"
578
+ version = "0.5.56"
579
579
  dependencies = [
580
580
  "anyhow",
581
581
  "chrono",
package/Cargo.toml CHANGED
@@ -9,7 +9,7 @@ members = ["crates/team-agent", "crates/win-conpty-phase0", "crates/conpty-trans
9
9
 
10
10
  [workspace.package]
11
11
  edition = "2021"
12
- version = "0.5.55"
12
+ version = "0.5.56"
13
13
  license = "AGPL-3.0"
14
14
  rust-version = "1.95"
15
15
 
@@ -771,7 +771,7 @@ fn requeue_after_claim_leader_skips_already_notified() {
771
771
  // watchers, one already notified (notified_message_id set), one un-notified.
772
772
  // requeue must return ONLY the un-notified watcher; the notified one is NOT
773
773
  // requeued and its notified_message_id SURVIVES (clearing it would cause a
774
- // second injection). Probed golden: requeued == [w_un] (result_id null,
774
+ // second injection). Probed golden: requeued == [w_un] (result_id present,
775
775
  // prior_state "pending"); notified watcher keeps notified_message_id.
776
776
  let ws = tmp_ws("requeue");
777
777
  let store = store_for(&ws);
@@ -786,7 +786,7 @@ fn requeue_after_claim_leader_skips_already_notified() {
786
786
  "t1",
787
787
  "alice",
788
788
  "pending",
789
- None,
789
+ Some("res_retryable"),
790
790
  None,
791
791
  );
792
792
  let w_notified = seed_watcher(
@@ -3209,7 +3209,7 @@ fn gate054_rebind_replay_requeues_failed_leader_message_on_attach() {
3209
3209
  }
3210
3210
 
3211
3211
  #[test]
3212
- fn claim_requeues_pending_acceptance_for_leader_only() {
3212
+ fn claim_preserves_pending_acceptance_for_all_recipients() {
3213
3213
  let ws = tmp_ws("claim-pending-acceptance");
3214
3214
  let store = store_for(&ws);
3215
3215
  let log = EventLog::new(&ws);
@@ -3263,7 +3263,14 @@ fn claim_requeues_pending_acceptance_for_leader_only() {
3263
3263
  )
3264
3264
  .unwrap()
3265
3265
  };
3266
- assert_eq!(row(&leader_message), ("accepted".to_string(), None, None));
3266
+ assert_eq!(
3267
+ row(&leader_message),
3268
+ (
3269
+ "submitted_pending_acceptance".to_string(),
3270
+ None,
3271
+ None
3272
+ )
3273
+ );
3267
3274
  assert_eq!(
3268
3275
  row(&worker_message),
3269
3276
  (
@@ -415,7 +415,7 @@ pub fn requeue_after_claim_leader(
415
415
  let conn = crate::db::schema::open_db(store.db_path())?;
416
416
  let mut stmt = conn.prepare(
417
417
  "select watcher_id, result_id, status, coalesce(completed_at, created_at) from result_watchers
418
- where owner_team_id = ?1 and notified_message_id is null
418
+ where owner_team_id = ?1 and result_id is not null and notified_message_id is null
419
419
  order by created_at, watcher_id",
420
420
  )?;
421
421
  let rows = stmt.query_map(params![owner_team_id.as_str()], |row| {
@@ -474,9 +474,8 @@ pub fn requeue_after_claim_leader(
474
474
  /// to `accepted` so `deliver_pending_messages` replays it through the SAME
475
475
  /// pipeline. The `leader_notification_log` PK prevents a second notification
476
476
  /// row for watcher-backed messages. A `submitted_pending_acceptance` row has
477
- /// already crossed the transport boundary, so its recovery is intentionally
478
- /// at-least-once: the stable message id/receipt token is preserved, but a replay
479
- /// can repeat the physical submit if a same-pane claim races the receipt window.
477
+ /// already crossed the transport boundary and is claim-immutable. Any future
478
+ /// retry belongs to a separate typed recovery arm, not attach/claim convergence.
480
479
  pub(crate) fn requeue_blocked_leader_messages(
481
480
  conn: &rusqlite::Connection,
482
481
  event_log: &EventLog,
@@ -490,10 +489,9 @@ pub(crate) fn requeue_blocked_leader_messages(
490
489
  // `deliver_pending_messages` picks them up as `accepted` and injects
491
490
  // exactly once. status `queued_until_leader_attach` is deliberately NOT
492
491
  // in the `claim_for_delivery` eligible set (see message_store.rs) so it
493
- // could not have churned while the leader was unattached. In contrast,
494
- // `submitted_pending_acceptance` is an explicit at-least-once recovery arm:
495
- // claim convergence favors an eventual receipt over preserving an
496
- // unobservable in-flight submit.
492
+ // could not have churned while the leader was unattached.
493
+ // `submitted_pending_acceptance` remains parked and claim-immutable; a
494
+ // future typed recovery arm must own any deliberate retry.
497
495
  let requeued = conn.execute(
498
496
  "update messages
499
497
  set status = 'accepted',
@@ -504,7 +502,6 @@ pub(crate) fn requeue_blocked_leader_messages(
504
502
  and (
505
503
  (status = 'failed' and error = 'leader_not_attached')
506
504
  or status = 'queued_until_leader_attach'
507
- or status = 'submitted_pending_acceptance'
508
505
  )",
509
506
  params![owner_team_id.as_str(), chrono::Utc::now().to_rfc3339()],
510
507
  )?;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@team-agent/installer",
3
- "version": "0.5.55",
3
+ "version": "0.5.56",
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.5.55",
24
- "@team-agent/cli-darwin-x64": "0.5.55",
25
- "@team-agent/cli-linux-x64": "0.5.55"
23
+ "@team-agent/cli-darwin-arm64": "0.5.56",
24
+ "@team-agent/cli-darwin-x64": "0.5.56",
25
+ "@team-agent/cli-linux-x64": "0.5.56"
26
26
  },
27
27
  "scripts": {
28
28
  "postinstall": "node npm/bincheck.mjs",