feat(swarm): another machine's conversation works like one of yours - #117
Merged
Merged
Conversation
Opening a conversation on another computer now makes a mirror: a local, hidden conversation drawn by the same code as yours, whose turns run on the machine they belong to. - Mirrors: the transcript, cards and working line come from that machine's stream; sending, steering and Esc go back to it. Opening one from the project panel puts the keyboard in its composer. - Parity: ^P and ^E read that machine's own model catalogue (AscpMessage::Catalogue), the footer shows its model, options, mode and context, and ^N, <C-w>T, rename and archive all act over there. Deleting is refused. - Questions and permission prompts are offered to whoever is watching; the first answer wins and the other panels withdraw (StreamEvent::Question/Permission/Settled, crate::relay). - Sidebar: one section per machine, short codes and a colour per machine, version drift shown as a block, no rail, and a fold fix. - Settings panel (`,`, /settings) that saves into config.toml as a document; agent.append_prompt; git.pull.auto; paste goes to the focused float. - scripts/bump.sh bumps only the npm packages that changed, and tag.yml verifies it.
Deploying neosh with
|
| Latest commit: |
b4ed5d0
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://af6d8bb3.neosh.pages.dev |
| Branch Preview URL: | https://feature-remote-machine-setti.neosh.pages.dev |
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.
What
Opening a conversation that lives on another paired computer now opens it as a conversation: the full transcript, cards and working line in the pane, and a composer that sends to that machine. Before this, you got a read-only float.
Mirrors
swarm.mirrorcreates a hidden localSessionwithmirror: Some(MirrorOf { node, session, machine }). That machine's stream is translated intoAgentEvents and handled by the sameon_agent_eventpath, so the transcript is drawn by one piece of code whichever machine the agent is on.↵on a remote row leaves the project panel, so the keyboard is in the composer.ToolStarted,ToolFinished,Asked) go only to peers withNodeCapabilities::rich_stream.Everything works like it does locally
^P/^E/ footer: answered from that machine's ownModelCatalogue(AscpMessage::Catalogue, gated byNodeCapabilities::catalogue). No plugin needed to learn what a mirror is. Options travel onSetModel.AgentSummarycarriesinstance,mode,optionsand context, so the footer's model, mode and meter describe the owner's conversation.⇧⇥(needsaccepts_approvals),^Non that machine,<C-w>Tas a shell over there, rename and archive all act on the owner. Deleting is refused.crate::relay,StreamEvent::Question/Permission/Settled,AgentCommand::Answer/SetMode, andApprovenaming the prompt it answers). The first answer from any machine wins, and the other panels withdraw vianeosh.prompt.withdrawn.Sidebar
One section per machine, a short code and a colour per machine (
Swarm.Host1–6), version drift shown as a machine block (≠ 4f3a1c2), no rail, and a fix for folded rows turning into bogus local projects.Also
,in the project panel,/settings) that saves intoconfig.tomlviatoml_edit(opt.save).agent.append_prompt,git.pull.auto, and paste routed to the focused float (neosh.paste).scripts/bump.shbumps only the npm packages that changed;tag.ymlverifies this.Wire compatibility
Every new message, event and command is behind a capability flag that decodes to
falsefrom an older node, so an older peer degrades rather than dropping the link. New fields are#[serde(default)]. Public enums and structs gained variants and fields, so this is a minor release (0.5.0).Tests
cargo test -p neosh --test builtin_plugins(241), plus the neosh-proto, neosh-swarm, neosh-agent andneoshunit suites andcheck.sh web, all pass locally. New tests cover: focus on open, answering a remote question and withdrawal, the remote shell, a refused stray answer, the remote model catalogue in the footer and^P, folding, per-machine sections and the settings panel.