From a24ed00dce201f493ccf75e6f8ec5b46d49d5685 Mon Sep 17 00:00:00 2001 From: mrlong0129 <148730491+mrlong0129@users.noreply.github.com> Date: Tue, 15 Sep 2026 17:21:07 +0800 Subject: [PATCH] fix(desktop): refresh managed agent presence guidance Signed-off-by: mrlong0129 <148730491+mrlong0129@users.noreply.github.com> --- crates/buzz-cli/TESTING.md | 2 +- desktop/src-tauri/src/managed_agents/nest.rs | 2 +- .../src/managed_agents/nest/tests.rs | 27 +++++++++++++++++++ .../src/managed_agents/nest_skill.md | 2 +- 4 files changed, 30 insertions(+), 3 deletions(-) diff --git a/crates/buzz-cli/TESTING.md b/crates/buzz-cli/TESTING.md index b7fa06d2031..530448646c0 100644 --- a/crates/buzz-cli/TESTING.md +++ b/crates/buzz-cli/TESTING.md @@ -333,7 +333,7 @@ buzz users presence --pubkeys "$MY_PUBKEY" | jq . buzz users set-presence --status online | jq . buzz users set-presence --status away | jq . buzz users set-presence --status offline | jq . -# Note: set-presence may fail — kind:20001 is ephemeral and rejected by the HTTP bridge +# set-presence publishes kind:20001 over WebSocket because ephemeral events are rejected by the HTTP bridge # users set-status — NIP-38 kind:30315 on the d:general coordinate buzz users set-status --text "reviewing PRs" --emoji "🔍" | jq . diff --git a/desktop/src-tauri/src/managed_agents/nest.rs b/desktop/src-tauri/src/managed_agents/nest.rs index 46f36212cea..345ecd0a44f 100644 --- a/desktop/src-tauri/src/managed_agents/nest.rs +++ b/desktop/src-tauri/src/managed_agents/nest.rs @@ -52,7 +52,7 @@ const NEST_AGENTS_VERSION: u32 = 5; /// Template content version for SKILL.md. /// Bump this when changing `nest_skill.md` to trigger refresh on existing installs. -const NEST_SKILL_VERSION: u32 = 5; +const NEST_SKILL_VERSION: u32 = 6; const BEGIN_MARKER: &str = ""; diff --git a/desktop/src-tauri/src/managed_agents/nest/tests.rs b/desktop/src-tauri/src/managed_agents/nest/tests.rs index 7d54c5a7b07..e20b3c12519 100644 --- a/desktop/src-tauri/src/managed_agents/nest/tests.rs +++ b/desktop/src-tauri/src/managed_agents/nest/tests.rs @@ -544,6 +544,33 @@ fn refresh_skips_when_version_current() { ); } +#[test] +fn refresh_skill_updates_presence_guidance_from_version_five() { + let tmp = tempfile::tempdir().unwrap(); + let root = tmp.path().join(".buzz"); + ensure_nest_at(&root).unwrap(); + + let skill_dir = root.join(".agents/skills/buzz-cli"); + fs::write( + skill_dir.join("SKILL.md"), + "# Buzz CLI Skill\n\n**`users set-presence` is broken** — will fail until WebSocket support is added.\n", + ) + .unwrap(); + fs::write(skill_dir.join(".skill-version"), "5\n").unwrap(); + + ensure_nest_at(&root).unwrap(); + + let content = fs::read_to_string(skill_dir.join("SKILL.md")).unwrap(); + assert_eq!(content, BUZZ_CLI_SKILL_MD); + assert!(!content.contains("**`users set-presence` is broken**")); + assert_eq!( + fs::read_to_string(skill_dir.join(".skill-version")) + .unwrap() + .trim(), + NEST_SKILL_VERSION.to_string() + ); +} + #[test] fn refresh_skill_overwrites_on_version_bump() { let tmp = tempfile::tempdir().unwrap(); diff --git a/desktop/src-tauri/src/managed_agents/nest_skill.md b/desktop/src-tauri/src/managed_agents/nest_skill.md index 01f76229158..01f12aaed30 100644 --- a/desktop/src-tauri/src/managed_agents/nest_skill.md +++ b/desktop/src-tauri/src/managed_agents/nest_skill.md @@ -122,7 +122,7 @@ buzz messages send --channel \ ## Gotchas 1. **`feed get` sorts newest-first** — every other list command sorts oldest-first. Don't assume consistent sort order. -2. **`users set-presence` is broken** — sends ephemeral kind:20001 via HTTP POST; relay rejects ephemeral kinds over HTTP. Will fail until WebSocket support is added. +2. **`users set-presence` uses WebSocket** — it publishes ephemeral kind:20001 over the authenticated WebSocket connection because the relay rejects ephemeral kinds over HTTP. 3. **`workflow runs` always returns `[]`** — run history lives in the relay's database, not as Nostr events. 4. **`dms open` returns `dm_id`** — use this value as `--channel` for subsequent `messages send/get` commands on that DM. 5. **Content max 65,536 bytes** (exit 1 if exceeded). Diffs auto-truncate at 61,440 bytes at a hunk boundary.