ScuttleBot
perf: async setAgentModes in register handler Don't block the HTTP response waiting for ChanServ AMODE/SAMODE commands. Agent gets credentials immediately, modes are applied in the background. Reduces register latency from ~3.7s to ~700ms.
Commit
e0d99ffb703a67bd175488b01bd60b7cb76ba689aabb6cd5aff0a58c6870bff7
Parent
36a9c73773a059c…
1 file changed
+1
-1
+1
-1
| --- internal/api/agents.go | ||
| +++ internal/api/agents.go | ||
| @@ -66,11 +66,11 @@ | ||
| 66 | 66 | agent.Skills = req.Skills |
| 67 | 67 | _ = s.registry.Update(agent) |
| 68 | 68 | } |
| 69 | 69 | } |
| 70 | 70 | s.registry.Touch(req.Nick) |
| 71 | - s.setAgentModes(req.Nick, req.Type, cfg) | |
| 71 | + go s.setAgentModes(req.Nick, req.Type, cfg) // async — don't block response | |
| 72 | 72 | writeJSON(w, http.StatusCreated, registerResponse{ |
| 73 | 73 | Credentials: creds, |
| 74 | 74 | Payload: payload, |
| 75 | 75 | }) |
| 76 | 76 | } |
| 77 | 77 |
| --- internal/api/agents.go | |
| +++ internal/api/agents.go | |
| @@ -66,11 +66,11 @@ | |
| 66 | agent.Skills = req.Skills |
| 67 | _ = s.registry.Update(agent) |
| 68 | } |
| 69 | } |
| 70 | s.registry.Touch(req.Nick) |
| 71 | s.setAgentModes(req.Nick, req.Type, cfg) |
| 72 | writeJSON(w, http.StatusCreated, registerResponse{ |
| 73 | Credentials: creds, |
| 74 | Payload: payload, |
| 75 | }) |
| 76 | } |
| 77 |
| --- internal/api/agents.go | |
| +++ internal/api/agents.go | |
| @@ -66,11 +66,11 @@ | |
| 66 | agent.Skills = req.Skills |
| 67 | _ = s.registry.Update(agent) |
| 68 | } |
| 69 | } |
| 70 | s.registry.Touch(req.Nick) |
| 71 | go s.setAgentModes(req.Nick, req.Type, cfg) // async — don't block response |
| 72 | writeJSON(w, http.StatusCreated, registerResponse{ |
| 73 | Credentials: creds, |
| 74 | Payload: payload, |
| 75 | }) |
| 76 | } |
| 77 |