fix(gossamer): wire groove server + llm_coding command surface#19
Merged
hyperpolymath merged 1 commit intomainfrom Apr 27, 2026
Merged
Conversation
Closes #17 — groove discovery server is launched once at startup via groove::spawn() before the webview opens. spawn() also starts the mesh-monitor thread internally, so peers in the mesh (Burble, Vext, Hypatia, VeriSimDB) can probe `/.well-known/groove` on 127.0.0.1:8000 for the entire app lifetime. The previous commented-out groove_discover/groove_status command shims were architecturally wrong: groove is an *external* discovery surface, not something the local webview needs to call into itself. Replaced with a comment explaining where groove actually lives. Closes #18 — llm_coding gets nine real app.command registrations matching the actual `llm_coding_*` API in src-gossamer/src/llm_coding/ commands.rs: llm_coding_init / llm_coding_spawn / llm_coding_freeze / llm_coding_thaw / llm_coding_terminate / llm_coding_list_sessions / llm_coding_session_status / llm_coding_append_message / llm_coding_get_messages The pre-Tauri→gossamer-rs commented-out block called start_session, stop_session, session_status, list_sessions — none of which exist. llm_coding_spawn deserialises a SpawnRequest struct via serde_json::from_value so payloads keep their typed shape. Adds result_str_to_json helper next to result_to_json to avoid double-encoding: the llm_coding_* functions return Result<String, String> where the String is itself JSON, so the helper parses it before wrapping in `{"ok": true, "result": <object>}`. cargo check + cargo test --no-run clean. The 15 unused-function warnings in settings.rs are pre-existing and out of scope. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Codex usage limits have been reached for code reviews. Please check with the admins of this repo to increase the limits by adding credits. |
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Summary
Closes #17 and closes #18 — both p1 issues asking to finish wiring the modules into the gossamer-rs
main.rs. Both modules already had substantial implementations (~509 LOCgroove.rs, ~518 LOCllm_coding/); what was missing was the wiring, and the pre-existing commented-out blocks were stale (from before the Tauri→gossamer-rs migration).What changed
src-gossamer/src/main.rs:Groove (#17) — launched once at startup in
main()viagroove::spawn(), which also starts the mesh-monitor thread. Groove is an external discovery surface (peers probeGET /.well-known/grooveon127.0.0.1:8000), not something the local webview should expose as Tauri-style commands. The misnamedgroove_discover/groove_statusshims were architecturally wrong and have been removed; replaced with a comment explaining where groove actually lives.LLM coding (#18) — nine fresh
app.command(...)registrations matching the realllm_coding_*API insrc-gossamer/src/llm_coding/commands.rs:llm_coding_initllm_coding_init()llm_coding_spawnllm_coding_spawn(SpawnRequest)llm_coding_freezellm_coding_freeze(session_id)llm_coding_thawllm_coding_thaw(session_id)llm_coding_terminatellm_coding_terminate(session_id)llm_coding_list_sessionsllm_coding_list_sessions()llm_coding_session_statusllm_coding_session_status(session_id)llm_coding_append_messagellm_coding_append_message(session_id, content)llm_coding_get_messagesllm_coding_get_messages(session_id)llm_coding_spawndeserialises aSpawnRequeststruct viaserde_json::from_valueso typed payloads keep their shape.New helper —
result_str_to_jsonnext toresult_to_json. Thellm_coding_*functions returnResult<String, String>where theStringis itself JSON; the helper parses the inner JSON before wrapping in{"ok": true, "result": <object>}so clients don't have to double-parse.Test plan
cargo checkclean (15 pre-existing unused-function warnings insettings.rs, out of scope)cargo test --no-runcleancargo test— 0 tests in this binary (no test suite formain.rs); the modules' own tests are unaffected