Runic Toolkit
Named application concepts cross one validated boundary.
The Application Bridge is the official frontend boundary for Runic
Toolkit. It replaces generic ViewModel projection with explicit commands,
receipts, snapshots, events, and public errors.
Contract pipeline
Effect Schema is the authority
Effect Schema
encoded wire values→JSON Schema + manifest
committed and fingerprinted→C# generator
reflection-free dispatch
Contract generation is deterministic and CI rejects stale artifacts. C#
compilation reads only committed artifacts; it never starts Node or
infers the public contract from ViewModels or CLR reflection.
Frontend runtime
One Effect owner
One ManagedRuntime owns the Application Bridge service, transport,
scope, and event stream. UI components call a controller instead of scattering
Effect execution through the render tree.
Layers
Same application interface
CsWebUiApplicationBridgeLive, MockApplicationBridge, and fault-injection Layers expose
the same semantics. Renderer code remains independent of the active
transport.
Host runtime
NativeAOT by construction
Generated DTOs, strict codecs, exhaustive dispatch, and typed event
publishers avoid reflection. Sessions own bounded admission, revisions,
sequence numbers, duplicate rejection, operations, and deterministic
teardown.
Security
Privileged choices remain native
The frontend can request destination selection but cannot send a
privileged path. The host returns an opaque selection ID plus
display-safe metadata and validates that handle when work begins.
Official frontend path
Svelte 5, SvelteKit, Vite 8, and Vite DevTools
@runic-artifex/svelte projects one Application Bridge
controller into Svelte 5 runes and context. @runic-artifex/sveltekit owns the static SPA adapter and native-host page options. @runic-artifex/vite-plugin-runic-toolkit owns Toolkit development metadata, bounded inspection, and HMR resources.
The official @vitejs/devtools plugin remains the DevTools host and is excluded
from production output.
These integrations intentionally support Svelte 5 only. Framework
adapters do not duplicate transport, reconnect, or protocol state.
Wire vocabulary
Describe the application, not its implementation
InitializeApplicationSelectDestinationNavigateStartInstallationOperationProgressOperationCompletedOperationFailedCancelOperation
There is no generic setProperty, numeric member identifier,
or ViewModel execute operation. Long-running work returns an operation ID
promptly; progress and terminal outcomes arrive through the validated Effect
Stream.
Install
Wait for the refreshed public candidates
Publication pending Toolkit, Svelte, and Vite candidates are being rebuilt from their
final source commits. Exact install commands will return here after
the matching NuGet and npm artifacts pass clean downstream consumption
and trusted-publisher setup.
Reference proof
The package-only Setup applications close the loop
The neutral and SvelteKit reference applications cover initialization,
backend-authoritative navigation, opaque destination selection,
installation receipts, progress, completion, failure, cancellation,
recovery, development DevTools, deterministic production frontend
output, NativeAOT, and real native-browser roundtrips.