Commit Graph

14 Commits

Author SHA1 Message Date
Steve Biedermann de69059fa3 feat!: add actor repair and filtered log subscriptions
Add guarded state and mailbox editing, immediate severity-filtered actor logs, and per-client history/follow subscriptions. Expose repair and log-level controls in the CLI, REPL, and VS Code.

BREAKING CHANGE: protocol v5 requires actor log thresholds in snapshots and introduces editing and log subscription operations. Rebuild the server, CLI, and extension together.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-11-03 18:26:21 +01:00
Steve Biedermann 7e3af6e501 feat: add a dedicated Runa sidebar
Move the image source tree and actor view into a Runa Activity Bar container with sources first. Verify both views and image editing in an empty VS Code window without workspace folders.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-11-03 17:49:04 +01:00
Steve Biedermann f1a2aab789 fix: remove image workspace folder mounting
Remove the obsolete source-folder command and all workspace mutation code. Keep automatic Explorer browsing backed by the image filesystem provider and verify the command is no longer registered.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-11-03 17:42:13 +01:00
Steve Biedermann 7332aef585 feat: show image sources automatically in VS Code
Browse the image's writable virtual source filesystem in an Explorer tree without changing workspace folders. Wire source context actions and ensure Spawn with State prompts for JSON when VS Code passes menu selection arguments.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-11-03 17:37:31 +01:00
Steve Biedermann 89794b08dd fix: gracefully close extension WebSocket connections
Use a code-1000 close handshake for intentional disconnects, wait for pending closes during deactivation, and bound shutdown to five seconds. Preserve immediate termination for failed connections and guard reconnects against stale sessions.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-11-03 17:24:09 +01:00
Steve Biedermann d0850fe6d4 fix: close the REPL connection on Ctrl+C
Exit the readline loop on interruption so normal WebSocket shutdown completes. Verify Ctrl+C in a Linux pseudo-terminal against the real image server and confirm it remains available after disconnect.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-11-03 17:21:41 +01:00
Steve Biedermann 750b709d35 feat!: add CLI subcommands and an explicit REPL entry point
Expose image operations through Clap subcommands, rename actors to ps, remove REPL cancellation, and rename the mise cli task to repl. Preserve session bindings in the REPL and proper close handshakes for one-shot commands.

BREAKING CHANGE: runa-cli now requires a subcommand; use runa-cli repl or mise run repl for interactive use. The actors REPL command is now ps, and cancel is no longer available in the REPL.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-11-03 17:13:15 +01:00
Steve Biedermann fcec43d44b fix: complete the CLI WebSocket close handshake
Close the client explicitly on REPL exit and wait for the peer with a bounded deadline. Cover quit, exit, EOF, pending notifications, and incomplete handshakes without suppressing genuine protocol failures.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-11-03 17:05:29 +01:00
Steve Biedermann efef8a93b9 feat!: add image source files and system messages
Separate editable image sources from generated commit revisions and loaded actor implementations. Add the source filesystem and context actions in VS Code, path-based REPL commands, sender-aware actor contexts, and privileged lifecycle controls.

BREAKING CHANGE: protocol v4 replaces published behavior commands with image source paths and commit operations. Actor handlers now use handle(ctx, state, sender, message) and return only state; outgoing messages use ctx.send or ctx.send_from.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-11-03 17:01:24 +01:00
Steve Biedermann 39b7443c79 feat: add VS Code behavior and source browsing
Show published behaviors and revision history, retrieve exact Rune source through the shared protocol, and cache read-only source documents by connection session and revision. Refresh behavior listings on image notifications and cover browsing against the real server and VS Code host.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-11-03 15:57:43 +01:00
Steve Biedermann e8c9fcad65 feat: add VS Code actor controls
Add explicit-behavior spawning, structured message input, lifecycle actions, and explicit scheduler ticks. Preserve lossless integers and enforce the complete request size limit. Verify controls and live snapshot updates against the real image and VS Code host.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-11-03 15:54:07 +01:00
Steve Biedermann b63666bcc2 feat!: rename server and CLI and adopt Clap arguments
Rename the server crate and executable to runa and the REPL to runa-cli. Parse executable arguments with Clap derive/env, default the server to loopback port 3737, and support RUNA_LISTEN and RUNA_CONNECT with explicit flag precedence.

Remove the stdio transport and child-process client. Make mise start launch the server and mise cli launch the REPL, updating extension integration runners and documentation.

BREAKING CHANGE: runa now starts the WebSocket image server rather than the REPL; use runa-cli for the REPL. The runa-server package, stdio transport, LocalClient, ProtocolClient, and serve/serve-network mise tasks are removed.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-11-03 15:49:35 +01:00
Steve Biedermann 72a37b178c feat!: use runa-debug WebSockets with live image notifications
Replace plain TCP JSON-lines connections with bounded loopback WebSockets using the required runa-debug subprotocol. Keep single-threaded image dispatch and stdio framing unchanged.

Broadcast coalesced, non-destructive image_changed invalidations after successful mutations. Update the REPL client and automatically refresh VS Code actor trees and open inspectors, preserving request correlation and connection-session isolation.

Validate negotiation, message limits and fragmentation, multi-client notifications, real REPL interoperability, and automatic mailbox/lifecycle/failure inspection in a VS Code extension host.

BREAKING CHANGE: the network endpoint now accepts only runa-debug WebSockets at the root path, not plain TCP JSON Lines. Rust network integrations must use WebSocketClient and serve_websocket. Request/response DTOs remain protocol v3; stdio is unchanged.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-11-03 15:36:21 +01:00
Steve Biedermann 8ce6ca9a2a feat: add a localhost VS Code actor inspector
Add explicit connection management, an actor explorer, and session-isolated read-only snapshots over protocol v3. Preserve 64-bit values and validate bounded framing, correlation, and snapshot contracts without draining events or advancing the image.

Wire TypeScript formatting and checks into mise, add real Rust-server interoperability tests, and verify inspection and reconnect behavior in a VS Code extension host.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-11-03 14:52:28 +01:00