lepusa

    MoonBit-native desktop application framework research and implementation.

    desktop
    webview
    framework
    native
    Download zip
    Author
    Version
    0.1.2
    License
    Apache-2.0
    Last updated
    3 months ago
    Downloads
    473

    #Lepusa

    Lepusa is a standalone MoonBit desktop application framework.

    The core decision is to build a MoonBit-owned, Tauri-shaped framework on top of system WebViews, with an app-authoring style close to Rabbita. Tauri and Lepus are references to learn from, not runtime layers that app authors must carry.

    Start with:

    #Intended Shape

    MoonBit app code -> Rabbita-style Lepusa app syntax -> typed command + event IPC -> capability-scoped platform plugins -> system WebView runtime -> platform bundles for macOS, Windows, and Linux

    The first implementation slice already owns the public MoonBit foundation:

    • Rabbita-style cell_with_emit and new(cell) app construction
    • @lepusa/ui HTML helpers plus UiProgram model/update/view state flow for compact MoonBit-authored desktop views
    • WindowConfig, Source, Plugin, Capability, Cmd, Event, and typed IPC request/response contracts
    • ProjectManifest validation plus LaunchPlan, RuntimePlan, and BundlePlan generation as the boundaries native runtime and platform bundler code will consume next
    • @lepusa/project parsing for standalone lepusa.json app manifests, including official plugin expansion and capability-scoped command routing
    • @lepusa/bundle native bundle materialization from BundlePlan without coupling build tools to CLI internals
    • @lepusa/scaffold app and plugin skeleton generation for ecosystem tooling without shelling through lepusa init
    • @lepusa/desktop app-facing official plugin kit that keeps plugin declarations, capability grants, and runtime command handlers in sync
    • @lepusa/runtime host/session snapshots that native WebView backends can consume without reinterpreting app configuration
    • @lepusa/runtime.NativeRuntime as the single native-loop facade over backend bootstrap, asset protocol responses, IPC dispatch, and lifecycle steps
    • @lepusa/runtime.NativeOperationExecutor as the shared execution boundary for startup, lifecycle, and bridge-drain operations that platform loops must map to WebView evaluation, navigation, effects, and service work

    The common authoring path is intentionally small:

    ///|
    fn main {
    let (emit, cell) = @lepusa.cell_with_emit(model=init_model(), update~, view=(
    emit,
    model,
    ) => render_app(emit, model))
    let app = @lepusa.new(cell)
    .with_startup(load_initial_state(emit))
    .on_shutdown(persist_state(emit))
    .window(title="Hello Lepusa", width=1000, height=720)
    match app.launch_plan() {
    Ok(plan) => boot_native_runtime(plan)
    Err(problems) => fail_fast(problems)
    }
    }

    The optional @lepusa/ui package supplies concise view helpers while still returning root @lepusa.Html values:

    ///|
    fn render_app(emit, model) {
    @ui.main_([
    @ui.h1([@ui.text("Counter")]),
    @ui.p([@ui.text("Count: \{model.count}")], attrs=[@ui.class_name("metric")]),
    @ui.p([@ui.text("Starting")], attrs=[@ui.id("status")]),
    @ui.button("Increment", attrs=[@ui.on_click("counter.increment")]),
    @ui.text_listener("ready", "#status"),
    ])
    }

    For backend and packaging work, the app model can be lowered without pulling in product-specific code:

    ///|
    let runtime = app.runtime_plan(config=@lepusa.RuntimeConfig::system_webview())

    ///|
    let bundle = @lepusa.BundleConfig::new(
    @lepusa.AppMetadata::new(
    identifier="dev.example.app",
    product_name="Example App",
    version="0.1.0",
    ),
    )

    For official desktop APIs, @lepusa/desktop.DesktopProject wires the framework parts together:

    ///|
    let project = @desktop.DesktopProject::new(metadata, root)
    .window(title="Desk", source=@lepusa.Source::html("<main></main>"))
    .with_sync_plugins()

    ///|
    let host = project.runtime_host().unwrap()

    ///|
    let bundle = project.bundle_plan(target=@lepusa.MacOS).unwrap()

    For programmatic project configuration, use ProjectManifest:

    ///|
    let manifest = @lepusa.ProjectManifest::new(metadata)
    .with_window(
    @lepusa.WindowConfig::new(source=@lepusa.Source::packaged("dist")),
    )
    .with_plugin(@lepusa.Plugin::new("core").command_sync("invoke"))
    .with_capability(
    @lepusa.Capability::new("main").window("main").command("core.invoke"),
    )

    ///|
    let runtime = manifest.runtime_plan(root)

    ///|
    let bundle = manifest.bundle_plan(root, target=@lepusa.MacOS)

    For file-backed apps, @lepusa/project owns reusable lepusa.json loading and parsing:

    ///|
    match @project.ProjectConfig::load("lepusa.json") {
    Ok(project) =>
    project.manifest().runtime_plan(project.root())
    Err(problems) =>
    fail_fast(problems)
    }

    #CLI

    The native CLI is intentionally small while the runtime backend is being built:

    moon run cmd/main --target native -- doctor linux moon run cmd/main --target native -- plan moon run cmd/main --target native -- manifest moon run cmd/main --target native -- native-plan macos moon run cmd/main --target native -- launch-session linux moon run cmd/main --target native -- launch-session linux --async-bridge moon run cmd/main --target native -- run linux --project examples/gateway/lepusa.json moon run cmd/main --target native -- run linux --json --project examples/gateway/lepusa.json moon run cmd/main --target native -- verify linux --project examples/static/lepusa.json moon run cmd/main --target native -- verify linux --strict --project _build/lepusa-app/lepusa.json moon run cmd/main --target native -- run macos --launch --project examples/static/lepusa.json moon run cmd/main --target native -- bridge moon run cmd/main --target native -- dev moon run cmd/main --target native -- init _build/lepusa-app moon run cmd/main --target native -- init _build/lepusa-app --workspace /Users/kq/Workspace/lepusa moon run cmd/main --target native -- plan --project _build/lepusa-app/lepusa.json moon run cmd/main --target native -- manifest --project _build/lepusa-app/lepusa.json moon run cmd/main --target native -- native-plan linux --project _build/lepusa-app/lepusa.json moon run cmd/main --target native -- launch-session linux --project _build/lepusa-app/lepusa.json moon run cmd/main --target native -- dev --project _build/lepusa-app/lepusa.json moon run cmd/main --target native -- asset lepusa://rabbita/main/index.html --project _build/lepusa-app/lepusa.json moon run cmd/main --target native -- lifecycle app-will-exit --project _build/lepusa-app/lepusa.json moon run cmd/main --target native -- bridge-task main log.write '{"message":"ready"}' --project _build/lepusa-app/lepusa.json moon run cmd/main --target native -- bridge-handoff main log.write '{"message":"ready"}' --project _build/lepusa-app/lepusa.json moon run cmd/main --target native -- bridge-complete main fs.readText '{"scope":"data","path":"note.txt"}' --project _build/lepusa-app/lepusa.json moon run cmd/main --target native -- bridge-dispatch main log.write '{"message":"ready"}' --project _build/lepusa-app/lepusa.json moon run cmd/main --target native -- bridge-loop main fs.readText '{"scope":"data","path":"note.txt"}' --project _build/lepusa-app/lepusa.json moon run cmd/main --target native -- bridge-drain main fs.readText '{"scope":"data","path":"note.txt"}' --project _build/lepusa-app/lepusa.json moon run cmd/main --target native -- plugin new file-dialog _build/lepusa-plugin-file-dialog moon run cmd/main --target native -- plugin new file-dialog _build/lepusa-plugin-file-dialog --workspace /Users/kq/Workspace/lepusa moon run cmd/main --target native -- bundle-plan macos moon run cmd/main --target native -- bundle-plan macos --json moon run cmd/main --target native -- bundle-write linux _build/lepusa-bundle --project _build/lepusa-app/lepusa.json moon run cmd/main --target native -- bundle-inspect _build/lepusa-bundle/lepusa-app/lepusa/distribution.json moon run cmd/main --target native -- bundle-release-plan _build/lepusa-bundle/lepusa-app/lepusa/distribution.json --json moon run cmd/main --target native -- bundle-release-write _build/lepusa-bundle/lepusa-app/lepusa/distribution.json _build/lepusa-release moon run cmd/main --target native -- bundle-package-plan _build/lepusa-bundle/lepusa-app/lepusa/distribution.json --json moon run cmd/main --target native -- bundle-package-write _build/lepusa-bundle/lepusa-app/lepusa/distribution.json _build/lepusa-package moon run cmd/main --target native -- bundle-install-smoke-plan _build/lepusa-bundle/lepusa-app/lepusa/distribution.json /Applications moon run cmd/main --target native -- bundle-install-smoke-write _build/lepusa-bundle/lepusa-app/lepusa/distribution.json _build/lepusa-install-smoke /Applications moon run cmd/main --target native -- publish-plan linux --project examples/static/lepusa.json moon run cmd/main --target native -- publish-plan linux --project examples/static/lepusa.json --json moon run cmd/runtime --target native -- --manifest _build/lepusa-bundle/lepusa-app/lepusa/runtime.json moon run cmd/runtime --target native -- run --manifest _build/lepusa-bundle/lepusa-app/lepusa/runtime.json moon run cmd/runtime --target native -- launch --manifest _build/lepusa-bundle/lepusa-app/lepusa/runtime.json moon run cmd/runtime --target native -- bootstrap --manifest _build/lepusa-bundle/lepusa-app/lepusa/runtime.json moon run cmd/runtime --target native -- launch-session --async-bridge --manifest _build/lepusa-bundle/lepusa-app/lepusa/runtime.json moon run cmd/runtime --target native -- asset lepusa://packaged/main/index.html --manifest _build/lepusa-bundle/lepusa-app/lepusa/runtime.json moon run cmd/runtime --target native -- lifecycle app-started --manifest _build/lepusa-bundle/lepusa-app/lepusa/runtime.json moon run cmd/runtime --target native -- bridge-task main log.write '{"message":"ready"}' --manifest _build/lepusa-bundle/lepusa-app/lepusa/runtime.json moon run cmd/runtime --target native -- bridge-handoff main log.write '{"message":"ready"}' --manifest _build/lepusa-bundle/lepusa-app/lepusa/runtime.json moon run cmd/runtime --target native -- bridge-complete main fs.readText '{"scope":"data","path":"note.txt"}' --manifest _build/lepusa-bundle/lepusa-app/lepusa/runtime.json moon run cmd/runtime --target native -- bridge-dispatch main log.write '{"message":"ready"}' --manifest _build/lepusa-bundle/lepusa-app/lepusa/runtime.json moon run cmd/runtime --target native -- bridge-loop main fs.readText '{"scope":"data","path":"note.txt"}' --manifest _build/lepusa-bundle/lepusa-app/lepusa/runtime.json moon run cmd/runtime --target native -- bridge-drain main fs.readText '{"scope":"data","path":"note.txt"}' --manifest _build/lepusa-bundle/lepusa-app/lepusa/runtime.json moon run cmd/runtime --target native -- invoke main log.write '{"message":"ready"}' --manifest _build/lepusa-bundle/lepusa-app/lepusa/runtime.json moon run cmd/main --target native -- build macos _build/lepusa-build --project _build/lepusa-app/lepusa.json moon run cmd/main --target native -- bundle windows _build/lepusa-bundle-win

    macOS disk-image packaging stages the application with an Applications shortcut, giving users the familiar drag-to-Applications installation flow.

    These commands exercise the public planning contracts and give the native runtime and bundler work concrete outputs to consume.

    lepusa doctor [macos|windows|linux] checks the portable runtime and bundle plans, reports the selected target's native launch gate and signing prerequisites, and reports host WebView availability for the platform backend descriptors: WKWebView on macOS, WebView2 on Windows, and WebKitGTK on Linux. It also runs the materialization-independent bundle contract checks over the generated runtime and distribution manifests, including packaged bridge dispatch smoke for safe built-in sync routes. It also prints typed backend preflight lines that separate host dependency availability, WebView creation loops, sync bridge response evaluation, and async bridge drain support. The underlying NativeBackendPreflight JSON classifies the active blocker as dependency, webview-creation, or none, and carries separate dependency, WebView creation, sync bridge evaluation, and async bridge drain problem fields for tooling. Passing --json emits one machine-readable health report with runtime, manifest, handler coverage, bundle, bundle contract, native launch, signing, and platform preflight sections. Passing --strict turns the aggregate health report into a CI gate: missing handlers, release-readiness issues, or selected-target native launch blockers make doctor exit with failure.

    lepusa plan includes resolved WebView load URLs, so backend work can consume RuntimePlan::windows() directly.

    lepusa launch-session and lepusa-runtime launch-session emit a target-aware native-loop readiness envelope. Its session field carries the WebViews, protocol assets, lifecycle actions, service supervision, bridge scheduling, the async bridge executor descriptor, and the bridgeLoop adapter, delivery, and drain contract. The envelope also records requestedBridgeMode, effectiveBridgeMode, and bridgeModeGranted, then reports backend capability through launchCapability, backendPreflight, targetCanLaunch, and targetLaunchBlocker. Passing --async-bridge records an async-capable request; platforms with packetized drain support keep that effective mode, report bridgeModeGranted: true, and expose a drainStrategy of event-loop. The target launch blocker includes the backend's concrete asyncBridgeDrainMessage, so dependency or creation-loop failures stay separate from bridge scheduler readiness. Async-capable sessions advertise a packetized event-loop drain: the native message handler may queue deferred work synchronously, then the host loop asks MoonBit for a lepusa-ops-v3 drain packet and evaluates completion scripts after leaving the WebView callback. Platform runners now lower the first WebView from that session through NativeWebViewLaunchContext, which keeps the native byte packet together with the scheduler, async executor, and bridgeLoop contract the backend must honor. Launch capability also carries the backend's maximum live WebView count. Current macOS, Linux, and Windows native loops advertise no hard cap and consume open-window packets through the same labeled WebView creation boundary used for static multi-window startup and later dynamic windows.

    Generated bridges only expose command routes granted to the current window by capabilities. RuntimePlan::command_routes() still reports all declared plugin routes for metadata and bundling. Capability grants can also name origins and platforms; platform-scoped commands are authorized against RuntimeConfig.platform and appear in runtime manifests for native diagnostics.

    Lifecycle hooks lower to the same backend action model as startup commands, so platform backends can handle shutdown and window-close events without reading application construction state.

    When a window omits source, App lowers the root Cell into a generated Rabbita-style HTML document served from the runtime manifest as a virtual file.

    @lepusa/scaffold.write_app writes a standalone MoonBit project skeleton with a versioned vectie/lepusa module dependency. It is intentionally small: moon.mod, lepusa.json, src/moon.pkg, src/main.mbt, and README.mbt.md. The generated src/main.mbt starts with the current @lepusa/ui.UiProgram model/update/view flow and wraps it in @lepusa/desktop.DesktopProject, so custom UI handlers, official desktop plugins, capabilities, runtime hosts, and bundle plans are derived from one project boundary. It uses the @lepusa/desktop sync-safe official plugin profile by default, so the generated MoonBit app stays launchable on native loops that do not yet support deferred async bridge scheduling. write_app_with_workspace also writes a moon.work file pointing at a local Lepusa checkout, which lets new apps compile against this repository before the framework is published to the MoonBit registry. lepusa init is the CLI wrapper over that package:

    moon run cmd/main --target native -- init _build/lepusa-app --workspace /Users/kq/Workspace/lepusa

    lepusa.json is the app-neutral project boundary. It describes metadata, runtime backend, windows, plugin command routes, command permission requirements, capability grants, bundle icon resources, and bundle signing prerequisites. Native CLI commands consume the nearest lepusa.json from the current directory, or a file passed with --project. The reusable parser lives in @lepusa/project, so tools can consume the same project contract without depending on the CLI binary. File paths in lepusa.json, including icons, packaged asset roots, local asset roots, and filesystem scopes, are resolved relative to the config file. Official plugins can be declared by name, for example { "name": "autoLaunch" }, { "name": "clipboard" }, { "name": "deepLink" }, { "name": "dialog" }, { "name": "fileDialog" }, { "name": "localhost" }, { "name": "notification" }, { "name": "log" }, { "name": "opener" }, { "name": "process" }, { "name": "serviceDiscovery" }, { "name": "shell" }, { "name": "singleInstance" }, { "name": "store" }, { "name": "tray" }, { "name": "updater" }, { "name": "window" }, { "name": "windowState" }, or { "name": "fs" }; Lepusa expands those declarations to the package's official command contract. Custom plugins can still provide an explicit commands array. Projects can also declare filesystemScopes, named roots that are carried into runtime sessions and native launch manifests for backend enforcement. It also describes runtime behavior through startup and lifecycle commands: effect, emit, navigate, and batch map directly to the portable RuntimeAction model consumed by native backends. When a project declares official log, store, fs, opener, process, localhost, serviceDiscovery, or windowState plugins, the CLI binds their MoonBit-native handlers into the project RuntimeHost without adding moon-suite-specific behavior. fs handlers run through the async command registry and are constrained by named filesystemScopes. process.info, process.cwd, process.env, and process.setEnv are portable handlers; process.exit remains a declared route for backend-owned termination policy.

    The examples/ directory contains checked project manifests for the three foundation app shapes: Rabbita-style MoonBit UI, packaged static assets, and a localhost gateway with sidecar/readiness metadata.

    @lepusa/scaffold.write_plugin writes a standalone plugin skeleton with plugin metadata, native command registration, and a scoped capability helper. write_plugin_with_workspace mirrors the same local moon.work support for plugin authors. lepusa plugin new is the CLI wrapper over that package:

    moon run cmd/main --target native -- plugin new file-dialog _build/lepusa-plugin-file-dialog --workspace /Users/kq/Workspace/lepusa

    BundlePlan::runtime_dependencies() and BundlePlan::signing_prerequisites() expose target-specific distribution requirements for macOS, Windows, and Linux. Windows plans explicitly carry both the Microsoft Edge WebView2 Runtime requirement and the WebView2Loader.dll placement expected beside lepusa-runtime.exe, so future installer generation can consume one bundle contract without a wrapper layer.

    BundlePlan::resources() exposes planned bundle resource mappings such as the application icon. The generated bundle runtime file includes these mappings under resources, and @lepusa/bundle.write_plan copies them as file data next to generated bundle files without re-reading project configuration. lepusa bundle-write is a thin CLI wrapper over that package.

    Projects can also declare portable runtime assets and sidecar executables in lepusa.json. Non-executable entries are placed in the target's shared resource directory; executable entries are placed beside lepusa-runtime, retain executable permissions, and are available to local-service commands on PATH:

    { "bundleResources": [ { "source": "public", "path": "public" }, { "source": "_build/native/release/build/cmd/server/server.exe", "path": "local-server", "executable": true } ] }

    Generated launchers expose LEPUSA_APP_DIR, LEPUSA_RESOURCE_DIR, and LEPUSA_APP_DATA_DIR, prepend the bundled executable directory to PATH, and launch from the shared resource directory. This keeps application resources read-only while giving sidecars a stable per-user data location.

    Projects can also declare portable runtime assets and sidecar executables in lepusa.json. Non-executable entries are placed in the target's shared resource directory; executable entries are placed beside lepusa-runtime, retain executable permissions, and are available to local-service commands on PATH:

    { "bundleResources": [ { "source": "public", "path": "public" }, { "source": "_build/native/release/build/cmd/server/server.exe", "path": "local-server", "executable": true } ] }

    Generated launchers expose LEPUSA_APP_DIR, LEPUSA_RESOURCE_DIR, and LEPUSA_APP_DATA_DIR, prepend the bundled executable directory to PATH, and launch from the shared resource directory. This keeps application resources read-only while giving sidecars a stable per-user data location.

    @lepusa/plugins/log is the first official plugin package. It declares log.write, provides scoped capability helpers, and can register a command handler backed by an in-memory LogBuffer:

    ///|
    let buffer = @log.LogBuffer::new()

    ///|
    let registry = @log.registry(buffer~)

    ///|
    let app = @lepusa.new(root)
    .with_plugin(@log.plugin())
    .with_capability(@log.capability_for_window("main"))

    @lepusa/plugins/store follows the same shape for scoped key-value state. It declares store.get, store.set, store.delete, store.clear, and store.keys, backed by a MoonBit Store.

    @lepusa/plugins/fs defines the official filesystem command contract and scoped path policy. It declares async routes such as fs.readText, fs.writeText, fs.list, and fs.metadata, plus split read/write capability helpers. The package validates named scopes and relative paths and provides MoonBit handlers for scoped text, bytes, list, metadata, delete, exists, and directory creation operations. Core FileSystemScope values carry named roots through ProjectManifest, RuntimePlan, RuntimeSession, and RuntimeLaunchManifest.

    @lepusa/plugins/file_dialog defines file picker routes such as fileDialog.openFile and fileDialog.saveFile, plus scoped default-directory policy that points dialogs at declared filesystem scopes without widening core filesystem access. Its portable registry validates picker payloads and returns delegated open/save contracts, while native_registry opens host pickers through macOS osascript, Linux zenity, or Windows PowerShell/WinForms with the same MoonBit-side validation and scope resolution.

    @lepusa/plugins/localhost defines local service lifecycle routes such as localhost.status, localhost.start, localhost.stop, and localhost.waitUntilReady, plus service metadata policy. LocalService and LocalServiceSupervisorPlan provide the shared start, readiness, and shutdown handoff. Its portable registry reports configured services and delegated lifecycle actions; native backends own process execution and HTTP probing.

    @lepusa/plugins/deep_link defines app URL scheme routes such as deepLink.getInitialUrls, deepLink.onOpenUrl, and deepLink.openUrl, plus scheme/host policy metadata. Its portable sync registry reports initial URLs, records delegated registration/open requests, and validates scheme/host policy; native backends own OS registration and dispatch.

    @lepusa/plugins/single_instance defines app lock and launch handoff routes such as singleInstance.acquire, singleInstance.focus, and singleInstance.onSecondLaunch, plus instance-key policy metadata. Its portable sync registry tracks primary/secondary launch state and focus requests; native backends own cross-process locking and platform window activation.

    @lepusa/plugins/tray defines system tray routes such as tray.setIcon, tray.setMenu, tray.setVisible, and tray.onMenuItemClick, plus menu item policy metadata. Its portable registry validates and tracks icon, tooltip, menu, visibility, and destroy state through sync handlers, then delegates status icon creation and OS menu behavior to native backends.

    @lepusa/plugins/window defines window routes such as window.open, window.close, window.focus, window.minimize, window.maximize, window.setTitle, window.setSize, and window.setFullscreen. Its portable registry validates dynamic open payloads and records sync control operations for the target window; native backends own the actual WebView/window-manager calls.

    @lepusa/plugins/auto_launch defines launch-at-login routes such as autoLaunch.status, autoLaunch.enable, autoLaunch.disable, and autoLaunch.setEnabled, plus startup registration policy metadata. Its portable sync registry validates startup metadata and tracks desired enablement state. Its native registry writes macOS LaunchAgents, Linux autostart desktop entries, or Windows HKCU Run values when the runtime supplies an executable path.

    @lepusa/plugins/window_state defines window persistence routes such as windowState.save, windowState.restore, and windowState.clear, plus window-label policy metadata. The portable registry stores state in the current runtime process for windowState.save/set, windowState.restore/get, and windowState.clear; WindowStateFileStore gives native runtimes a durable file-backed registry once platform loops capture geometry and visibility.

    @lepusa/plugins/updater defines update lifecycle routes such as updater.check, updater.download, updater.install, and updater.downloadAndInstall, plus feed/channel policy metadata. Its portable registry validates update policy and tracks delegated check, download, install, and restart lifecycle state; native backends own feed retrieval, signature verification, installation, and restart.

    @lepusa/plugins/service_discovery defines service lookup and status routes such as serviceDiscovery.list, serviceDiscovery.resolve, serviceDiscovery.status, and serviceDiscovery.onServiceChanged, plus endpoint policy metadata. Its portable registry lists, resolves, and reports configured endpoints, including endpoints derived from local services; native backends own resolver integration, health checks, and change watching.

    @lepusa/plugins/dialog defines platform-neutral dialog routes: dialog.message, dialog.confirm, and dialog.prompt. Its portable registry validates payloads and returns deterministic runtime-owned responses; native backends own the actual OS dialog implementation.

    @lepusa/plugins/clipboard provides sync text clipboard handlers backed by native system clipboard stubs for desktop runtimes, plus an in-process ClipboardStore for deterministic tests. @lepusa/plugins/notification provides sync permission and show handlers backed by macOS/Linux native delivery when available, plus an in-process NotificationCenter for deterministic tests and fallback hosts.

    @lepusa/plugins/opener declares platform-neutral URL and path opener routes: opener.openUrl, opener.openPath, and opener.revealPath. Its portable registry validates payloads and calls the platform opener through native stubs (open, xdg-open, or ShellExecute/explorer), returning launch status without holding product-specific state.

    @lepusa/plugins/shell declares explicit shell execution and process lifecycle routes. Its portable registry validates commands against an optional allow-list and tracks delegated spawned process state, stdin writes, and kill requests; native backends own actual OS execution and platform-specific restrictions.

    @lepusa/plugins/process declares process metadata, environment, and control routes behind split process.info, process.environment, and process.control permissions. The portable sync registry implements process metadata, current-directory, and environment handlers; native backends own process termination policy.

    @lepusa/plugins/catalog centralizes official plugin lookup for framework tooling. Project parsing uses it to expand name-only official plugin declarations and bind MoonBit handlers where they exist, including scoped async filesystem handlers and portable sync process, localhost, service-discovery, deep-link, single-instance, tray, auto-launch, window, and window-state handlers.

    lepusa manifest emits the portable native-runner JSON from RuntimeHost::launch_manifest(): WebView boot data, bridge hook names, document-start scripts, protocol mappings, inline virtual files with MIME types, declared command routes, and registered native routes.

    lepusa native-plan [macos|windows|linux] emits the selected backend's NativeRunnerPlan::bootstrap_json(), including the portable runtime manifest, per-window WebView specs, startup operations, and prelowered lifecycle operations that a platform runner needs. The bootstrap also includes bridgeScheduler, the shared sync-only/async-capable launch policy derived from registered bridge routes.

    lepusa launch-session [macos|windows|linux] prepares the selected backend and emits a readiness envelope around the same canonical NativeLaunchSession shape used by packaged runtime manifests: concrete WebView launch plans, executable operations, bridge scheduler policy, async bridge executor metadata, service supervisor plan, requested versus effective bridge mode, and target launch capability.

    lepusa run [macos|windows|linux] --project lepusa.json lowers the same NativeRunnerPlan and prints a compact runner smoke summary: selected backend, WebView engine, first URL, bridge URL, local services, startup operations, and lifecycle steps. The summary also includes target-can-launch and a blocker message when the selected target is known to be missing a native WebView launch loop. Passing --json emits the same canonical RunReport used by packaged runtime reports. It is intentionally a no-window command unless --launch is passed.

    lepusa verify [macos|windows|linux] --project lepusa.json runs the no-write foundation proof for an app: runtime plan, dev plan, launch manifest, bridge asset, nonblank initial WebView content for resolvable assets, handler coverage, native launch session, bundle runtime contract, and release-readiness metadata plus package-readiness blockers. Add --strict when the command should act as a release gate: missing concrete handlers, known target launch blockers, bundle release-readiness issues, and package-readiness blockers become failures instead of warnings. This keeps framework-development proofs useful while still giving CI a direct answer for "can this target ship?" Passing --json emits the selected target, strict mode, final pass/fail, and the canonical verifier lines plus structured release-readiness data as a machine-readable report, including the generated package plan readiness. The native-session line reports scheduler readiness separately from selected target launch readiness, so Windows and async-bridge blockers are visible even outside strict mode. lepusa doctor prints the same target launch-gate blocker as a warning so local diagnostics stay non-fatal while still showing whether the selected target can launch natively today. lepusa publish-plan [macos|windows|linux] --project lepusa.json is the third-party project release spine. It derives the strict verification command, bundle output root, distribution manifest path, release handoff root, package handoff root, package script command, and release/package readiness from the same lepusa.json and bundle distribution contract. Passing --json emits the same command list and readiness fields for CI jobs or external release tools.

    @lepusa/runtime turns a RuntimePlan into a RuntimeSession: resolved window frames, protocol mappings, virtual files, generated bridge source, and command dispatch through the declared capabilities. NativeRunnerPlan keeps full per-window RuntimeWebViewSpec records alongside the portable launch manifest so backend implementations can create windows without re-deriving bridge hooks or initialization scripts. It also exposes lifecycleOperations from the current RuntimeSession; each step carries the operations and resulting session snapshot so native backends can resolve assets after shutdown or window-event navigation without retaining app construction state.

    RuntimeSession::resolve_window_asset(window_label, url) is the pure custom-protocol boundary for native WebViews. It resolves lepusa://runtime/bridge.js, inline/Rabbita virtual files, safe local asset paths, and packaged app assets without doing platform file IO, while denying cross-window asset requests. RuntimeSession::resolve_asset_json(url) and RuntimeHost::resolve_asset_json(url) expose the same boundary as a stable JSON envelope for native protocol handlers: virtual content, local file paths, packaged file paths, or a structured error. Use their resolve_window_asset_json variants from platform handlers; the unscoped forms are for CLI and manifest inspection. lepusa asset <url> --project lepusa.json prints that envelope directly, so desktop projects can smoke-test the custom protocol without starting a WebView.

    RuntimeHost::dispatch_json(input) is the native hook boundary for WebView IPC. It decodes the bridge request object, verifies the route is declared by the runtime plan, checks capabilities through the command registry, and returns the JSON response shape expected by window.lepusa. RuntimeHost::dispatch_json_async(input) is the native loop path for async plugin handlers; sync handlers still run through the same permission checks. RuntimeHost::bridge_dispatch_task(message) and NativeRuntime::bridge_dispatch_task(message) wrap the same bridge request as a target-window response task with route metadata and a sync/async mode, so native loops can immediately answer sync commands or schedule async commands and later evaluate the generated response script. The task JSON includes the original bridge message and requiresAsyncDispatch flag so native handlers do not need to re-derive scheduling metadata. Bundled manifests expose the same contract through BundledRuntime::bridge_dispatch_task(message). RuntimeHost::bridge_handoff(message) and NativeRuntime::bridge_handoff(message) combine that task with an immediate dispatch result for sync routes, or a deferred handoff for async routes. This is the narrow callback shape native event loops use before they schedule async work. NativeBridgeHandoff::complete_deferred(runtime) turns that deferred task into a NativeBridgeCompletion, preserving the original task metadata together with the response JSON and JavaScript callback script the platform loop should evaluate. Immediate handoffs intentionally reject deferred completion so backend code cannot accidentally run a sync command twice. NativeBridgeWorkQueue is the shared FIFO queue for platform loops: handoff_callback(runtime) returns immediate scripts for sync routes, enqueues deferred async routes, and lets the loop drain completions later before evaluating each callback script in the target WebView. Packaged runtimes expose the same shape as BundledBridgeWorkQueue. handoff_packet_callback is the native C/WebView ABI for that handoff: it returns status\n<window>\n<body-byte-length>\n<body>\n<operation-packet> where the final section is the versioned lepusa-ops-v3 length-prefixed native operation packet. Immediate packets carry the callback script plus executable operations, deferred packets carry the queued task count, and error packets carry a diagnostic body. The v3 operation records include dynamic open-window boot metadata: load URL, title, size, resizable flag, bridge source, native hook, asset protocol, and packetized evaluate-script payloads. macOS, Linux, and Windows parse this packet, evaluate immediate scripts in the target WebView, and consume follow-up operations without JSON-scanning escaped payloads. NativeBridgeLoopAdapter and BundledBridgeLoopAdapter bundle the runtime, queue, native message callback, pending-state diagnostics, and drain operation into the object platform event loops should keep beside each WebView host. Their async receive_message method accepts one UTF-8 WebView bridge message and returns a loop result: immediate scripts for sync routes, drained completion scripts for async routes, and JSON diagnostics for backend tests. NativeBridgeScheduler and NativeBridgeLoopContract now surface drainStrategy, so target readiness distinguishes sync-only loops from native loops that can schedule the queued async drain on their event loop. NativeBridgeLoopEvaluationPlan lowers those scripts into target-window evaluate-script operations, giving every platform runner the same operation shape for its drain/evaluate step. receive_window_message returns a NativeBridgeLoopDelivery / BundledBridgeLoopDelivery, pairing the raw loop result with that executable plan for the target window. drain_window returns the same delivery shape for async tasks previously captured by the message-handler handoff callback, which is the native loop path for post-callback WebView evaluation. The callback bundles also expose drain_window_scripts, a compact UTF-8 JavaScript payload for native loops that only need to evaluate the completed callback scripts, drain_window_packet, a UTF-8 handoff packet carrying the same typed evaluate-script operations, plus drain_window_operation, a drain-bridge-window executable operation naming the window and packet-drain callback a platform loop must schedule. Deferred handoff packets carry that drain-bridge-window operation immediately, so native loops can enqueue the event-loop wakeup from the same packet they return to the WebView callback. The native C loops parse and retain those drain requests, then issue a lepusa-drain-v1 request through the same packet handoff callback and execute the returned lepusa-ops-v3 drain operations. NativeOperationExecutor is the MoonBit-side runner contract for that delivery: platform packages provide handlers for drain-bridge-window, evaluate-script, navigate-window, run-effect, and service operations, then receive a typed execution report instead of parsing operation JSON. RuntimeHost::dispatch_bridge_message(message) and BundledRuntime::dispatch_bridge_message(message) execute that captured bridge message and return the response JSON plus the callback script a native WebView loop evaluates after sync or async command completion.

    lepusa bridge-task <window> <plugin.command> [payload] --project lepusa.json prints that source-project scheduling task without starting a WebView. lepusa bridge-handoff <window> <plugin.command> [payload] --project lepusa.json prints the immediate-or-deferred native callback handoff for that bridge message. lepusa bridge-complete <window> <plugin.command> [payload] --project lepusa.json executes the deferred-completion path and prints the completion envelope used by native event loops after async work finishes. lepusa bridge-dispatch <window> <plugin.command> [payload] --project lepusa.json executes the same bridge message and prints the native callback envelope without starting a WebView. lepusa bridge-loop <window> <plugin.command> [payload] --project lepusa.json feeds one source-project WebView message through the bridge-loop adapter and prints the immediate script, drained async completions, and evaluation scripts plus the native executable evaluation plan a platform loop should run. lepusa bridge-drain <window> <plugin.command> [payload] --project lepusa.json simulates the split native loop: the message-handler handoff callback runs first, then pending async work drains into a target-window delivery envelope. lepusa invoke <window> <plugin.command> [payload] --project lepusa.json executes the same host dispatch path from the CLI. It is a native smoke-test tool for project configuration, official plugin registration, and capability grants. lepusa lifecycle <event> [window] --project lepusa.json prints the runtime step JSON for startup, shutdown, and window lifecycle events without starting a native window loop.

    The generated bridge also exposes window.lepusa.listen(name, handler) and installs globalThis.__lepusaDispatchEvent(event) for native-to-frontend events.

    RuntimePlan::actions(cmd) lowers Cmd::emit, Cmd::navigate, and Cmd::effect into backend-executable RuntimeAction values. Startup actions are included in RuntimePlan::launch_manifest().

    RuntimeHost::webviews() produces per-window boot specs for native backends: window frame data, load URL, asset protocol, native hook name, and document start scripts.

    lepusa bridge emits the JavaScript bridge that frontends load as window.lepusa, including invoke(route, payload), can(route), command(route), and a frozen commands route tree such as lepusa.commands.core.invoke(payload). Direct route namespaces such as lepusa.core.invoke(payload) are also installed when they do not collide with core bridge methods.

    lepusa dev lowers the current project into a runtime development plan: resolved WebViews, asset protocol, capability grants, capability-filtered routes, runtime session, startup operations, lifecycle steps, and bridge scheduling routes. The plan now includes a devSession object that classifies each WebView as runtime protocol assets, supervised localhost, external URL, or custom URL, records whether the runner owns window reload or an external frontend server owns reload, and links supervised frontend services without re-reading project configuration. It also prints the concrete inspect, manifest, verify, run, and bundle commands for each desktop target, so a generated or file-backed app has an immediate local development loop without extra project-specific scripts. lepusa dev --json emits the same plan plus reusable command templates as a structured artifact for native runners and external tooling. This is the stable boundary the platform-specific window loops will execute.

    RuntimeHost::runner_plan() is the platform-neutral native-loop contract: launch manifest, resolved WebViews, stepped runtime session, and startup operations in one object. Platform packages map this plan to WKWebView, WebView2, or WebKitGTK without rebuilding app state. RuntimeRunnerPlan::lifecycle_step(event) returns the same operation/session shape that lepusa lifecycle prints. RuntimeSession::open_window(window) resolves a new WindowConfig into session-owned protocol mappings, virtual files, sidecar services, and a typed open-window operation containing the WebView spec and initialization scripts. request_window_close(label) and close_window(label) keep close-request lifecycle actions separate from final destruction, and final close removes the window's runtime assets/listeners before emitting a typed close-window operation.

    @lepusa/runtime also exposes NativeBackend and NativeRuntime, the shared lowering boundary for platform packages. NativeRuntime binds a backend and host once, then gives platform loops bootstrap JSON, asset JSON, dispatch JSON, service supervisor plans/reports/executors, and lifecycle step JSON without making each backend rebuild those paths. @lepusa.RunReport is the shared launch summary returned by source and packaged runtime adapters, so CLI output and future native loops use one status vocabulary for prepared, launched, failed, and unsupported runs. It also carries target launch readiness separately from run status, so tooling can distinguish a valid prepared plan from a target whose WebView loop is not implemented yet. The same report now carries executable, executed, skipped, and failed operation counts plus the first execution failure, giving CI and native-loop smoke tests a single place to compare planned startup work with what the platform executor can actually handle. Native runner plans also report bridge sync and async route sets, giving platform loops an explicit scheduling contract before they open a WebView. They also expose executable operation views for frontend event scripts and window navigations, so lifecycle/startup reporting uses typed operations before the backend crosses into C. Prepared source and packaged run plans append startup frontend event scripts to the matching WebView initialization script, so launchers consume the same operation boundary they report. NativeOperationExecutor executes those operation arrays through platform handlers and reports executed, skipped, and failed outcomes, giving WebView loops one reusable path for startup, lifecycle, and bridge-drain work. It now includes dynamic open-window and close-window handlers so platform packages can wire multi-window lifecycle without parsing runtime JSON. Capability-approved window.* bridge dispatches also lower their plugin response into a window-control executable operation, so native loops can apply window actions without parsing JavaScript response callbacks. Approved source or packaged window.open and window.close dispatches additionally emit the runtime-owned open-window and close-window lifecycle operations, keeping the dynamic window boundary visible before platform loops perform the concrete frame work. Source RuntimeHost instances retain the updated runtime session after those bridge operations, so later asset-protocol requests can resolve dynamic window virtual files instead of falling back to the original static plan. Capability-approved app.*, menu.*, and tray.* bridge dispatches lower successful plugin responses into a typed desktop-shell executable operation. This gives platform menu, tray, dock, and app-shell implementations one stable native-operation contract while MoonBit keeps permission checks and payload validation at the official plugin boundary. The macOS, Linux, and Windows loops consume those records from bridge packets; app show/hide/setTheme/exit/restart are applied in the native loop, restart relaunches the current command line before closing the current window set, macOS also applies app dock visibility, macOS/Linux/Windows apply app and window menu bars plus tray operations for icon, tooltip, menu, menu popup, visibility, and destroy. Platform operation reports now mark supported app shell, macOS/Linux/Windows app-menu/window-menu and tray operations as executed, including macOS/Linux/Windows menu accelerator rendering for supported shortcut strings and macOS/Linux/Windows menu and tray item click dispatch to menu.onItemClick and tray.onMenuItemClick. The macOS WKWebView, Linux WebKitGTK, and Windows WebView2 loops consume the sync window action set directly from the bridge handoff packet: title, size, position, fullscreen, show, hide, focus, minimize, maximize, unmaximize, and close. They also consume typed close-window records by closing the live native frame once, even when the same handoff also carries the plugin's window-control close response. macOS, Linux, and Windows consume navigate-window operations from the same handoff packet by loading the target URL in the live WebView after the approved MoonBit dispatch completes. The macOS, Linux, and Windows loops now consume dynamic open-window records by creating labeled WKWebView/WebKitGTK/WebView2 windows with the carried bridge source, native hook, asset protocol, URL, title, size, and resizable flag. Source and bundled runners pass URL-routed asset resolver callbacks into native loops, so dynamic WebViews can resolve assets for their own window labels. Platform packages now expose operation_executor() so source and packaged run reports use the backend's actual script-evaluation and window-control support instead of the generic skipped-operation fallback. @lepusa/runtime/macos, @lepusa/runtime/windows, and @lepusa/runtime/linux now provide small backend descriptors and host availability checks for WKWebView, WebView2, and WebKitGTK. Each platform package exposes runtime(host) and detect_runtime(host) helpers that return the same NativeRuntime facade, plus launch_capability() declarations for WebView creation, maximum live WebView count, and async bridge drain support. Platform packages also expose service executor helpers, and native run plans build launch sessions from the selected backend capability before running service startup, opening a WebView, running the app-will-exit lifecycle operation batch after the window loop returns, and then running service shutdown. macOS, Linux, and Windows start tracked sidecar processes, poll HTTP readiness URLs, stop tracked processes through platform-owned native hooks, and install exit/interruption cleanup so supervised sidecars do not outlive the native runner when the app process exits before the normal shutdown step.

    Source::localhost(...) supports gateway-style apps that load a local HTTP service and optionally declare the sidecar command plus readiness URL metadata. This data appears in RuntimeSession::local_services() and launch-manifest localServices for native runners to supervise.

    lepusa bundle-plan now also validates concrete bundle artifact plans through BundlePlan::files(): platform metadata, manifest-aware launcher stubs, lepusa/runtime.json, and lepusa/distribution.json, with per-window bridge initialization scripts embedded in the runtime manifest. Passing --json emits target metadata, planned resources, runtime dependencies, signing prerequisites and steps, and planned bundle files for CI and native runner tooling. Windows bundle plans now make the app .exe the primary launcher artifact and emit generated native launcher C source plus a .cmd smoke fallback, so package generators do not need application-owned launcher code. The generated distribution manifest records those runtime dependencies beside artifacts, resources, signing data, runtime executable placement, and target metadata without requiring installer tooling to parse the launch manifest. lepusa bundle-inspect <lepusa/distribution.json> parses that manifest and prints either a compact summary or the normalized JSON contract for downstream package generators. lepusa bundle-release-plan <lepusa/distribution.json> lowers the same manifest to ordered release steps for runtime dependency validation, resource staging, signing checks, signing commands, and artifact collection. Each release step carries structured entries with kind, name, path, sourcePath, required, and description fields so release tooling does not need to scrape raw manifest JSON. The release plan also reports required and optional step/item counts plus a ready flag and missingRequiredSteps, giving CI a compact pre-installer release gate before platform-specific signing or installer commands run. @lepusa/bundle.write_release_plan writes that gate as release-plan.json plus a human-readable release-checklist.md, and lepusa bundle-release-write <lepusa/distribution.json> [out-dir] is the CLI wrapper for release jobs and future package generators. BundleDistributionManifest::package_plan() then lowers the same distribution contract into target-aware package commands, expected outputs, and blockers. @lepusa/bundle.write_package_plan writes package-plan.json, package-checklist.md, and a platform package script (package.sh or package.ps1); Windows also receives an installer.nsi script for the setup artifact. lepusa bundle-package-plan and lepusa bundle-package-write are the CLI wrappers. BundleDistributionManifest::install_smoke_plan() adds the post-install gate: installed runtime manifest path, required installed files, runtime dependency files when applicable, and lepusa-runtime commands for manifest inspection, dry-run launch planning, async bridge launch-session, bridge asset resolution, and optional GUI launch. @lepusa/bundle.write_install_smoke_plan writes install-smoke-plan.json, install-smoke-checklist.md, and install-smoke.sh/install-smoke.ps1; lepusa bundle-install-smoke-plan and lepusa bundle-install-smoke-write expose the same contract for clean-machine validation. For app authors, lepusa publish-plan [target] --project lepusa.json combines the strict verifier, bundle-write, release handoff, package handoff, final package script invocation, and install-smoke handoff into one target-aware checklist without writing files.

    @lepusa/bundle.write_plan materializes those planned files under an output directory. lepusa bundle-write is the CLI wrapper. Project bundles carry registered official plugin routes into lepusa/runtime.json, so packaged runtime data matches the same host path used by lepusa manifest, lepusa dev, and lepusa invoke. Bundle verification records target runtime dependencies too: system WebViews are reported as declared external dependencies, while file-backed dependencies such as Windows WebView2Loader.dll are checked at their planned bundle path. When a file-backed dependency declares a source path, bundle-write copies it before verification; the Windows loader source defaults to _build/native/debug/build/cmd/runtime/WebView2Loader.dll. Projects can override that path in lepusa.json:

    { "runtimeDependencies": [ { "name": "WebView2Loader.dll", "source": "vendor/WebView2Loader.dll" } ] }

    When the selected bundle target matches an available host runtime backend and the local cmd/runtime native binary exists, bundle-write also embeds a target-named lepusa-runtime executable beside the launcher and verifies it with a runtime-executable check. BundlePlan::runtime_executable_path() exposes that target location before materialization. Cross-target bundles keep a launcher fallback to lepusa-runtime on PATH until Lepusa owns cross-compiled runtime artifacts. bundle-write also verifies that the generated lepusa/runtime.json lowers into a target native launch session against the target launch contract, separate from host dependency availability, and that resolvable initial WebView content is present and nonblank. For built-in sync routes that are allowed by a bundled WebView, it also runs a packaged bridge dispatch smoke check and verifies the response callback script can be produced; custom app routes are skipped until the app supplies generated handlers. It also parses lepusa/distribution.json and checks that installer metadata includes required artifact, dependency, resource, runtime executable, and signing fields. Windows bundles now pass structural native launch-session verification cross-target; missing WebView2Loader.dll or system WebView runtime placement remains a runtime-dependency verification failure. Passing --json emits target, identifier, signing prerequisites, and the reusable BundleWriteResult payload with written files, resources, runtime dependency checks, and verification checks for CI tooling. Generated desktop launcher stubs wrap lepusa-runtime launch --manifest <runtime.json> instead of replacing the launcher process with exec. POSIX wrappers trap INT, TERM, and HUP, wait on the runtime PID, and forward termination to the runtime so CLI smoke runs do not strand supervised local services. The Windows bundle also emits a native C launcher source that starts lepusa-runtime.exe, waits for completion, and returns the runtime exit code. The macOS and Linux runtimes track all native windows and stop tracked local services only after the last WKWebView or WebKitGTK window closes. The Linux package owns WebKitGTK source and packaged-window loops when GTK3 and WebKit2GTK are available, including a package-owned lepusa:// URI scheme callback for MoonBit-resolved runtime, virtual, local, and packaged assets. Windows source and packaged runs use the package-owned WebView2 COM loop when WebView2Loader.dll, its required factory exports, Ole32 COM support, and a discoverable WebView2 Runtime are available, including sync bridge response evaluation, typed dynamic window operations, and a WebView2 resource-request callback that maps https://<protocol>.localhost/... back to MoonBit-resolved runtime, virtual, local, and packaged lepusa://... assets. lepusa-runtime run --manifest <runtime.json> uses a target-aware planning path without opening a window, so bundles have a cheap validation probe. lepusa-runtime bootstrap--manifest <runtime.json> emits the target-aware packaged runtime bootstrap for platform loops: manifest path, bundle root, app metadata, native backend, WebView engine, WebView specs, service supervisor plan, startup operations, lifecycle operations, bridge routes, bridge scheduler policy, and the canonical runtime object that a backend consumes. lepusa-runtime launch-session --manifest <runtime.json> emits the packaged native host readiness envelope: prepared WebView launch plans, executable startup and lifecycle operations, bridge scheduler policy, and service supervisor plan under session, plus target launch capability and blocker fields for packaged native loops. lepusa-runtime --manifest <runtime.json> remains a manifest summary probe and reports the bundled service supervisor requirement plus sidecar start order. lepusa-runtime asset <url> --manifest <runtime.json> resolves the bundled manifest's runtime bridge, virtual files, local roots, and packaged roots using the same JSON envelope shape expected by native protocol handlers. lepusa-runtime lifecycle <event> [window] --manifest <runtime.json> reads the same bundled manifest and returns the local services and portable actions a native loop should process for that lifecycle event. lepusa-runtime bridge-task <window> <plugin.command> [payload] --manifest <runtime.json> returns the MoonBit-owned bridge scheduling task for a packaged command: target window, response hook, original bridge message, route, and sync/async dispatch mode. Native loops can use this as the packaged-manifest probe before wiring platform-specific message handlers. lepusa-runtime bridge-handoff <window> <plugin.command> [payload] --manifest <runtime.json> returns the packaged immediate-or-deferred handoff that native event loops use when deciding whether to answer a WebView callback immediately or schedule async completion. lepusa-runtime bridge-complete <window> <plugin.command> [payload] --manifest <runtime.json> executes the packaged deferred-completion path and returns the same completion envelope native event loops use after async work finishes. lepusa-runtime bridge-dispatch <window> <plugin.command> [payload] --manifest <runtime.json> executes the packaged bridge message and returns the response JSON plus callback script that a native event loop evaluates back into the target WebView. lepusa-runtime bridge-loop <window> <plugin.command> [payload] --manifest <runtime.json> feeds one packaged WebView message through the bundled bridge-loop adapter and returns the immediate script, drained async completions, and evaluation scripts plus the native executable evaluation plan a platform loop should evaluate. lepusa-runtime bridge-drain <window> <plugin.command> [payload] --manifest <runtime.json> simulates the packaged split native loop: handoff callback first, then target-window drain delivery for pending async work. lepusa-runtime invoke <window> <plugin.command> [payload] --manifest <runtime.json> executes a packaged bridge command against the manifest's registered official native handlers. It checks the requested window's allowedRoutes before dispatching and returns the same JSON response shape as project-hosted lepusa invoke. @lepusa/runtime/bundled owns the reusable manifest parser and bootstrap, asset, lifecycle, bridge-task, bridge-loop, and invoke JSON behind those commands, so native platform loops can consume bundled runtime data without depending on CLI internals. BundledRuntime::new(manifest) keeps the native command registry state alive for repeated bridge calls. It also owns bundled bridge message preparation, sync/async dispatch, target-window response-hook lookup, and response-callback scripts, while the manifest helper remains useful for one-shot probes. Bundled native run plans expose startup and lifecycle event scripts plus window navigations as typed runtime values, so packaged app loops can consume the same native-operation boundary as source-project runs. Source and bundled native run plans also serialize to compact handoff artifacts that carry native metadata plus the canonical launch session, while the launch-session CLIs wrap that session with target readiness metadata for tools that need to distinguish prepared plans from launchable platform backends and their host dependency preflight state. NativeBackendPreflight keeps the collapsed problem for human summaries, and adds problemKind, dependencyProblem, webviewCreationProblem, and asyncBridgeDrainProblem so release tooling can distinguish an unavailable system dependency from framework backend work that is still intentionally gated. The macOS runner prepares and injects the generated bridge as a document-start WKUserScript, together with a native hook bootstrap and window.webkit.messageHandlers.__lepusaInvoke dispatch path for sync command responses. Native loops now understand the typed packet format needed to evaluate queued callback scripts, retain deferred drain requests, and request a window-scoped lepusa-ops-v3 drain packet from MoonBit through the existing handoff callback. That launch capability carries an asyncBridgeDrainMessage field, which describes the packetized event-loop drain contract separately from WebView dependency, script evaluation, or creation-loop failures. Launch-session JSON also carries asyncBridgeExecutor, which names NativeRuntime::bridge_async_dispatch_callback and its UTF-8 bridge-message to JavaScript-callback-script byte contract. The same bridgeScheduler field appears in source and bundled bootstrap JSON so platform loops and CLI diagnostics read one launch policy. NativeRuntime.prepare_bridge_message, bridge_dispatch_task, and dispatch_bridge_message own the MoonBit side of that path by resolving the target window, response hook, route scheduling mode, sync/async dispatch, and response-callback script. macOS, Linux, and Windows share the same runtime hook-bootstrap and response-script helpers instead of duplicating bridge callback semantics in each backend. The same runner registers a WKURLSchemeHandler for the Lepusa asset protocol. MoonBit still owns asset resolution; the Objective-C stub only turns the runtime asset packet into WebKit response/data/finish calls. The Linux source-window loop injects the same window.lepusa bridge plus a WebKitGTK message-handler bootstrap, so sync native commands can round-trip through MoonBit in an opened WebKitGTK window. Its WebKitGTK URI-scheme handler also calls back into MoonBit for runtime asset resolution, keeping packaged Linux windows on the same lepusa:// contract as macOS. Source::packaged("dist") also emits an asset resource mapping and lepusa bundle-write copies that directory into lepusa/assets/<window>. The generated bundle runtime manifest rewrites packaged protocol roots to that bundle-relative location, while runtime asset probes return packaged-file envelopes for lepusa://packaged/<window>/... URLs.

    #Boundary

    Lepusa owns the reusable desktop framework:

    • native window and WebView runtime
    • frontend-to-MoonBit command bridge
    • app capabilities and permissions
    • official platform plugins
    • dev/build/bundle CLI

    Consumer projects own product behavior, backend services, schemas, routes, workspaces, dashboards, and domain-specific adapters.

    AsyncCommandHandler

    type AsyncCommandHandler = async (String) -> Result[String, String]

    CommandHandler

    type CommandHandler = (String) -> Result[String, String]

    Emit

    type Emit[Msg] = (Msg) -> Cmd

    OperationScopeResolver

    type OperationScopeResolver = (InvokeRequest) -> Result[OperationScope, String]

    StreamCommandHandler

    type StreamCommandHandler = (String, StreamSink) -> Result[Unit, String]

    App

    pub struct App {
    root : Cell
    windows : Array[WindowConfig]
    plugins : Array[Plugin]
    capabilities : Array[Capability]
    startup : Cmd
    lifecycle_hooks : Array[LifecycleHook]
    } derive(Eq,
    Debug
    )

    App::launch_plan

    fn App::launch_plan(self : App) -> Result[LaunchPlan, Array[String]]

    App::manager

    fn App::manager(self : App, config? : RuntimeConfig, registry? : CommandRegistry) -> Result[AppManager, Array[String]]

    App::on_shutdown

    fn App::on_shutdown(self : App, command : Cmd) -> App

    App::on_window_close_requested

    fn App::on_window_close_requested(self : App, label : String, command : Cmd) -> App

    App::on_window_closed

    fn App::on_window_closed(self : App, label : String, command : Cmd) -> App

    App::runtime_plan

    fn App::runtime_plan(self : App, config? : RuntimeConfig) -> Result[RuntimePlan, Array[String]]

    App::validate

    fn App::validate(self : App) -> Array[String]

    App::window

    fn App::window(self : App, label? : String, title? : String, width? : Int, height? : Int, resizable? : Bool, title_bar? : TitleBarStyle, source? : Source) -> App

    App::with_capability

    fn App::with_capability(self : App, capability : Capability) -> App

    App::with_lifecycle

    fn App::with_lifecycle(self : App, event : LifecycleEvent, command : Cmd) -> App

    App::with_plugin

    fn App::with_plugin(self : App, plugin : Plugin) -> App

    App::with_startup

    fn App::with_startup(self : App, startup : Cmd) -> App

    App::with_window

    fn App::with_window(self : App, window : WindowConfig) -> App

    AppManager

    pub struct AppManager {
    plan : RuntimePlan
    registry : CommandRegistry
    resources : ResourceTable
    channels : ChannelTable
    events : EventBus
    state : AppStateStore
    }

    AppManager::audit

    fn AppManager::audit(self : AppManager) -> RuntimeAudit

    AppManager::cancel_channel

    fn AppManager::cancel_channel(self : AppManager, id : String) -> Result[ChannelMessage, String]

    AppManager::capability_count

    fn AppManager::capability_count(self : AppManager) -> Int

    AppManager::channel

    fn AppManager::channel(self : AppManager, id : String) -> Channel?

    AppManager::channel_count

    fn AppManager::channel_count(self : AppManager) -> Int

    AppManager::close_all_resources

    fn AppManager::close_all_resources(self : AppManager) -> ResourceCleanupReport

    AppManager::close_resource

    fn AppManager::close_resource(self : AppManager, id : String) -> Result[ResourceEntry, String]

    AppManager::close_resource_handle

    fn AppManager::close_resource_handle(self : AppManager, handle : ResourceHandle) -> Result[ResourceEntry, String]

    AppManager::command_routes

    fn AppManager::command_routes(self : AppManager) -> Array[String]

    AppManager::dispatch

    fn AppManager::dispatch(self : AppManager, request : InvokeRequest) -> InvokeResponse

    AppManager::dispatch_async

    async fn AppManager::dispatch_async(self : AppManager, request : InvokeRequest) -> InvokeResponse

    AppManager::drain_channel

    fn AppManager::drain_channel(self : AppManager, id : String) -> Result[Array[ChannelMessage], String]

    AppManager::emit

    fn AppManager::emit(self : AppManager, event : Event, target? : EventTarget) -> Result[Array[EventDelivery], Array[String]]

    AppManager::end_channel

    fn AppManager::end_channel(self : AppManager, id : String) -> Result[ChannelMessage, String]

    AppManager::fail_channel

    fn AppManager::fail_channel(self : AppManager, id : String, message : String) -> Result[ChannelMessage, String]

    AppManager::invoke_contract_report

    fn AppManager::invoke_contract_report(self : AppManager) -> InvokeContractReport

    AppManager::invoke_contracts

    fn AppManager::invoke_contracts(self : AppManager) -> Array[InvokeContract]

    AppManager::listen

    fn AppManager::listen(self : AppManager, name : String, target? : EventTarget, once? : Bool) -> Result[EventListener, Array[String]]

    AppManager::listener_count

    fn AppManager::listener_count(self : AppManager) -> Int

    AppManager::manage_state

    fn AppManager::manage_state(self : AppManager, key : String, kind? : String, value? : String) -> Result[AppStateEntry, Array[String]]

    AppManager::new

    fn AppManager::new(plan : RuntimePlan, registry? : CommandRegistry) -> AppManager

    AppManager::once

    fn AppManager::once(self : AppManager, name : String, target? : EventTarget) -> Result[EventListener, Array[String]]

    AppManager::open_channel

    fn AppManager::open_channel(self : AppManager, owner? : String, name? : String, metadata? : String) -> Result[Channel, Array[String]]

    AppManager::open_resource

    fn AppManager::open_resource(self : AppManager, descriptor : ResourceDescriptor) -> Result[ResourceEntry, Array[String]]

    AppManager::plan

    fn AppManager::plan(self : AppManager) -> RuntimePlan

    AppManager::plugin_count

    fn AppManager::plugin_count(self : AppManager) -> Int

    AppManager::registered_routes

    fn AppManager::registered_routes(self : AppManager) -> Array[String]

    AppManager::registry

    fn AppManager::registry(self : AppManager) -> CommandRegistry

    AppManager::remove_state

    fn AppManager::remove_state(self : AppManager, key : String) -> Result[AppStateEntry, String]

    AppManager::resource

    fn AppManager::resource(self : AppManager, id : String) -> ResourceEntry?

    AppManager::resource_count

    fn AppManager::resource_count(self : AppManager) -> Int

    AppManager::resource_handles

    fn AppManager::resource_handles(self : AppManager) -> Array[ResourceHandle]

    AppManager::resource_handles_by_kind

    fn AppManager::resource_handles_by_kind(self : AppManager, kind : String) -> Array[ResourceHandle]

    AppManager::resource_handles_by_owner

    fn AppManager::resource_handles_by_owner(self : AppManager, owner : String) -> Array[ResourceHandle]

    AppManager::resource_leak_report

    fn AppManager::resource_leak_report(self : AppManager) -> ResourceLeakReport

    AppManager::resources

    fn AppManager::resources(self : AppManager) -> Array[ResourceEntry]

    AppManager::security_profile

    fn AppManager::security_profile(self : AppManager) -> SecurityProfile

    AppManager::send_channel

    fn AppManager::send_channel(self : AppManager, id : String, payload : String) -> Result[ChannelMessage, String]

    AppManager::state

    fn AppManager::state(self : AppManager, key : String) -> AppStateEntry?

    AppManager::state_count

    fn AppManager::state_count(self : AppManager) -> Int

    AppManager::to_json

    fn AppManager::to_json(self : AppManager) -> String

    AppManager::unlisten

    fn AppManager::unlisten(self : AppManager, id : String) -> Result[EventListener, String]

    AppManager::window_count

    fn AppManager::window_count(self : AppManager) -> Int

    AppMetadata

    pub struct AppMetadata {
    identifier : String
    product_name : String
    version : String
    } derive(Eq,
    Debug
    )

    AppMetadata::executable_name

    fn AppMetadata::executable_name(self : AppMetadata) -> String

    AppMetadata::identifier

    fn AppMetadata::identifier(self : AppMetadata) -> String

    AppMetadata::new

    fn AppMetadata::new(identifier~ : String, product_name~ : String, version~ : String) -> AppMetadata

    AppMetadata::product_name

    fn AppMetadata::product_name(self : AppMetadata) -> String

    AppMetadata::validate

    fn AppMetadata::validate(self : AppMetadata) -> Array[String]

    AppMetadata::version

    fn AppMetadata::version(self : AppMetadata) -> String

    AppStateEntry

    pub struct AppStateEntry {
    key : String
    kind : String
    value : String
    } derive(Eq,
    Debug
    )

    AppStateEntry::key

    fn AppStateEntry::key(self : AppStateEntry) -> String

    AppStateEntry::kind

    fn AppStateEntry::kind(self : AppStateEntry) -> String

    AppStateEntry::new

    fn AppStateEntry::new(key~ : String, kind? : String, value? : String) -> AppStateEntry

    AppStateEntry::to_json

    fn AppStateEntry::to_json(self : AppStateEntry) -> String

    AppStateEntry::validate

    fn AppStateEntry::validate(self : AppStateEntry) -> Array[String]

    AppStateEntry::value

    fn AppStateEntry::value(self : AppStateEntry) -> String

    AppStateStore

    pub struct AppStateStore {
    entries : Map[String, AppStateEntry]
    order : Array[String]
    }

    AppStateStore::clear

    AppStateStore::contains

    fn AppStateStore::contains(self : AppStateStore, key : String) -> Bool

    AppStateStore::count

    fn AppStateStore::count(self : AppStateStore) -> Int

    AppStateStore::entries

    AppStateStore::get

    fn AppStateStore::get(self : AppStateStore, key : String) -> AppStateEntry?

    AppStateStore::is_empty

    fn AppStateStore::is_empty(self : AppStateStore) -> Bool

    AppStateStore::keys

    fn AppStateStore::keys(self : AppStateStore) -> Array[String]

    AppStateStore::new

    AppStateStore::put

    fn AppStateStore::put(self : AppStateStore, entry : AppStateEntry) -> Result[AppStateEntry, Array[String]]

    AppStateStore::remove

    fn AppStateStore::remove(self : AppStateStore, key : String) -> Result[AppStateEntry, String]

    AppStateStore::set

    fn AppStateStore::set(self : AppStateStore, key : String, kind? : String, value? : String) -> Result[AppStateEntry, Array[String]]

    AppStateStore::to_json

    fn AppStateStore::to_json(self : AppStateStore) -> String

    BackpressureOverflow

    pub(all) enum BackpressureOverflow {
    RejectNew
    DropOldest
    } derive(Eq,
    Debug
    )

    BackpressureOverflow::name

    fn BackpressureOverflow::name(self : BackpressureOverflow) -> String

    BackpressurePolicy

    pub struct BackpressurePolicy {
    max_pending : Int
    overflow : BackpressureOverflow
    } derive(Eq,
    Debug
    )

    BackpressurePolicy::at_capacity

    fn BackpressurePolicy::at_capacity(self : BackpressurePolicy, pending : Int) -> Bool

    BackpressurePolicy::bounded

    fn BackpressurePolicy::bounded(max_pending~ : Int, overflow? : BackpressureOverflow) -> BackpressurePolicy

    BackpressurePolicy::is_bounded

    fn BackpressurePolicy::is_bounded(self : BackpressurePolicy) -> Bool

    BackpressurePolicy::is_unbounded

    fn BackpressurePolicy::is_unbounded(self : BackpressurePolicy) -> Bool

    BackpressurePolicy::max_pending

    fn BackpressurePolicy::max_pending(self : BackpressurePolicy) -> Int

    BackpressurePolicy::new

    fn BackpressurePolicy::new(max_pending? : Int, overflow? : BackpressureOverflow) -> BackpressurePolicy

    BackpressurePolicy::overflow

    BackpressurePolicy::to_json

    fn BackpressurePolicy::to_json(self : BackpressurePolicy) -> String

    BackpressurePolicy::unbounded

    BackpressurePolicy::validate

    fn BackpressurePolicy::validate(self : BackpressurePolicy) -> Array[String]

    BridgeConfig

    pub struct BridgeConfig {
    global_name : String
    native_hook : String
    event_dispatch_hook : String
    window_label : String
    } derive(Eq,
    Debug
    )

    BridgeConfig::new

    fn BridgeConfig::new(global_name? : String, native_hook? : String, event_dispatch_hook? : String, window_label? : String) -> BridgeConfig

    BridgeConfig::validate

    fn BridgeConfig::validate(self : BridgeConfig) -> Array[String]

    BridgeScript

    pub struct BridgeScript {
    global_name : String
    native_hook : String
    event_dispatch_hook : String
    window_label : String
    routes : Array[String]
    source : String
    } derive(Eq,
    Debug
    )

    BridgeScript::event_dispatch_hook

    fn BridgeScript::event_dispatch_hook(self : BridgeScript) -> String

    BridgeScript::global_name

    fn BridgeScript::global_name(self : BridgeScript) -> String

    BridgeScript::native_hook

    fn BridgeScript::native_hook(self : BridgeScript) -> String

    BridgeScript::routes

    fn BridgeScript::routes(self : BridgeScript) -> Array[String]

    BridgeScript::source

    fn BridgeScript::source(self : BridgeScript) -> String

    BridgeScript::window_label

    fn BridgeScript::window_label(self : BridgeScript) -> String

    BundleArtifact

    pub struct BundleArtifact {
    kind : BundleArtifactKind
    path : String
    description : String
    } derive(Eq,
    Debug
    )

    BundleArtifact::description

    fn BundleArtifact::description(self : BundleArtifact) -> String

    BundleArtifact::kind

    BundleArtifact::new

    fn BundleArtifact::new(kind~ : BundleArtifactKind, path~ : String, description~ : String) -> BundleArtifact

    BundleArtifact::path

    fn BundleArtifact::path(self : BundleArtifact) -> String

    BundleArtifact::to_json

    fn BundleArtifact::to_json(self : BundleArtifact) -> String

    BundleArtifactKind

    pub(all) enum BundleArtifactKind {
    AppBundleArtifact
    DiskImageArtifact
    ExecutableArtifact
    InstallerArtifact
    PortableDirectoryArtifact
    DesktopEntryArtifact
    } derive(Eq,
    Debug
    )

    BundleArtifactKind::name

    fn BundleArtifactKind::name(self : BundleArtifactKind) -> String

    BundleConfig

    pub struct BundleConfig {
    metadata : AppMetadata
    target : BundleTarget
    icon_path : String?
    resource_sources : Array[BundleResourceSource]
    runtime_dependency_sources : Array[BundleRuntimeDependencySource]
    signing : SigningConfig
    } derive(Eq,
    Debug
    )

    BundleConfig::new

    fn BundleConfig::new(metadata : AppMetadata, target? : BundleTarget, icon_path? : String, resource_sources? : Array[BundleResourceSource], runtime_dependency_sources? : Array[BundleRuntimeDependencySource], signing? : SigningConfig) -> BundleConfig

    BundleConfig::plan

    fn BundleConfig::plan(self : BundleConfig, runtime : RuntimePlan, registered_routes? : Array[String]) -> Result[BundlePlan, Array[String]]

    BundleConfig::validate

    fn BundleConfig::validate(self : BundleConfig) -> Array[String]

    BundleFile

    pub struct BundleFile {
    path : String
    content : String
    executable : Bool
    } derive(Eq,
    Debug
    )

    BundleFile::content

    fn BundleFile::content(self : BundleFile) -> String

    BundleFile::executable

    fn BundleFile::executable(self : BundleFile) -> Bool

    BundleFile::new

    fn BundleFile::new(path~ : String, content~ : String, executable? : Bool) -> BundleFile

    BundleFile::path

    fn BundleFile::path(self : BundleFile) -> String

    BundlePlan

    pub struct BundlePlan {
    metadata : AppMetadata
    target : BundleTarget
    runtime : RuntimePlan
    registered_routes : Array[String]
    executable_name : String
    bundle_name : String
    icon_path : String?
    resource_sources : Array[BundleResourceSource]
    runtime_dependency_sources : Array[BundleRuntimeDependencySource]
    signing : SigningConfig
    } derive(Eq,
    Debug
    )

    BundlePlan::artifacts

    fn BundlePlan::artifacts(self : BundlePlan) -> Array[BundleArtifact]

    BundlePlan::bundle_name

    fn BundlePlan::bundle_name(self : BundlePlan) -> String

    BundlePlan::distribution_manifest_json

    fn BundlePlan::distribution_manifest_json(self : BundlePlan) -> String

    BundlePlan::executable_name

    fn BundlePlan::executable_name(self : BundlePlan) -> String

    BundlePlan::files

    fn BundlePlan::files(self : BundlePlan) -> Result[Array[BundleFile], Array[String]]

    BundlePlan::icon_path

    fn BundlePlan::icon_path(self : BundlePlan) -> String?

    BundlePlan::identifier

    fn BundlePlan::identifier(self : BundlePlan) -> String

    BundlePlan::registered_routes

    fn BundlePlan::registered_routes(self : BundlePlan) -> Array[String]

    BundlePlan::release_readiness

    fn BundlePlan::release_readiness(self : BundlePlan) -> Result[ReleaseReadinessReport, Array[String]]

    BundlePlan::resources

    fn BundlePlan::resources(self : BundlePlan) -> Array[BundleResource]

    BundlePlan::runtime_dependencies

    fn BundlePlan::runtime_dependencies(self : BundlePlan) -> Array[BundleRuntimeDependency]

    BundlePlan::runtime_dependency_sources

    fn BundlePlan::runtime_dependency_sources(self : BundlePlan) -> Array[BundleRuntimeDependencySource]

    BundlePlan::runtime_executable_name

    fn BundlePlan::runtime_executable_name(self : BundlePlan) -> String

    BundlePlan::runtime_executable_path

    fn BundlePlan::runtime_executable_path(self : BundlePlan) -> String

    BundlePlan::runtime_manifest

    fn BundlePlan::runtime_manifest(self : BundlePlan) -> Result[RuntimeLaunchManifest, Array[String]]

    BundlePlan::runtime_manifest_json

    fn BundlePlan::runtime_manifest_json(self : BundlePlan) -> Result[String, Array[String]]

    BundlePlan::signing

    fn BundlePlan::signing(self : BundlePlan) -> SigningConfig

    BundlePlan::signing_prerequisites

    fn BundlePlan::signing_prerequisites(self : BundlePlan) -> Array[SigningPrerequisite]

    BundlePlan::signing_steps

    fn BundlePlan::signing_steps(self : BundlePlan) -> Array[SigningStep]

    BundlePlan::target

    fn BundlePlan::target(self : BundlePlan) -> BundleTarget

    BundlePlan::update_manifest

    fn BundlePlan::update_manifest(self : BundlePlan, base_url~ : String, channel? : String, public_key? : String, artifact_trust? : Array[UpdateArtifactTrust]) -> Result[UpdateManifest, Array[String]]

    BundlePlan::update_manifest_json

    fn BundlePlan::update_manifest_json(self : BundlePlan, base_url~ : String, channel? : String, public_key? : String, artifact_trust? : Array[UpdateArtifactTrust]) -> Result[String, Array[String]]

    BundleResource

    pub struct BundleResource {
    kind : BundleResourceKind
    source_path : String
    path : String
    } derive(Eq,
    Debug
    )

    BundleResource::kind

    BundleResource::new

    fn BundleResource::new(kind~ : BundleResourceKind, source_path~ : String, path~ : String) -> BundleResource

    BundleResource::path

    fn BundleResource::path(self : BundleResource) -> String

    BundleResource::source_path

    fn BundleResource::source_path(self : BundleResource) -> String

    BundleResource::to_json

    fn BundleResource::to_json(self : BundleResource) -> String

    BundleResourceKind

    pub(all) enum BundleResourceKind {
    IconResource
    AssetResource
    ExecutableResource
    } derive(Eq,
    Debug
    )

    BundleResourceKind::name

    fn BundleResourceKind::name(self : BundleResourceKind) -> String

    BundleResourceSource

    pub struct BundleResourceSource {
    source_path : String
    path : String
    executable : Bool
    } derive(Eq,
    Debug
    )

    BundleResourceSource::executable

    fn BundleResourceSource::executable(self : BundleResourceSource) -> Bool

    BundleResourceSource::new

    fn BundleResourceSource::new(source_path~ : String, path~ : String, executable? : Bool) -> BundleResourceSource

    BundleResourceSource::path

    fn BundleResourceSource::path(self : BundleResourceSource) -> String

    BundleResourceSource::source_path

    fn BundleResourceSource::source_path(self : BundleResourceSource) -> String

    BundleRuntimeDependency

    pub struct BundleRuntimeDependency {
    kind : BundleRuntimeDependencyKind
    name : String
    path : String?
    source_path : String?
    required : Bool
    description : String
    } derive(Eq,
    Debug
    )

    BundleRuntimeDependency::description

    fn BundleRuntimeDependency::description(self : BundleRuntimeDependency) -> String

    BundleRuntimeDependency::name

    BundleRuntimeDependency::new

    fn BundleRuntimeDependency::new(kind~ : BundleRuntimeDependencyKind, name~ : String, path? : String, source_path? : String, required? : Bool, description~ : String) -> BundleRuntimeDependency

    BundleRuntimeDependency::path

    BundleRuntimeDependency::required

    BundleRuntimeDependency::source_path

    fn BundleRuntimeDependency::source_path(self : BundleRuntimeDependency) -> String?

    BundleRuntimeDependency::to_json

    fn BundleRuntimeDependency::to_json(self : BundleRuntimeDependency) -> String

    BundleRuntimeDependencyKind

    pub(all) enum BundleRuntimeDependencyKind {
    SystemWebViewRuntime
    NativeLoaderLibrary
    } derive(Eq,
    Debug
    )

    BundleRuntimeDependencyKind::name

    BundleRuntimeDependencySource

    pub struct BundleRuntimeDependencySource {
    name : String
    source_path : String
    } derive(Eq,
    Debug
    )

    BundleRuntimeDependencySource::name

    BundleRuntimeDependencySource::new

    fn BundleRuntimeDependencySource::new(name~ : String, source_path~ : String) -> BundleRuntimeDependencySource

    BundleRuntimeDependencySource::source_path

    BundleTarget

    pub(all) enum BundleTarget {
    MacOS
    Windows
    Linux
    } derive(Eq,
    Debug
    )

    BundleTarget::name

    fn BundleTarget::name(self : BundleTarget) -> String

    Capability

    pub struct Capability {
    name : String
    windows : Array[String]
    origins : Array[String]
    platforms : Array[String]
    permissions : Array[Permission]
    operation_scopes : Array[OperationScope]
    } derive(Eq,
    Debug
    )

    Capability::allows

    fn Capability::allows(self : Capability, window_label~ : String, permission~ : Permission, origin? : String, platform? : String) -> Bool

    Capability::allows_operation

    fn Capability::allows_operation(self : Capability, window_label~ : String, permission~ : Permission, scope~ : OperationScope, origin? : String, platform? : String) -> Bool

    Capability::command

    fn Capability::command(self : Capability, route : String) -> Capability

    Capability::name

    fn Capability::name(self : Capability) -> String

    Capability::new

    fn Capability::new(name : String) -> Capability

    Capability::operation_scope

    fn Capability::operation_scope(self : Capability, scope : OperationScope) -> Capability

    Capability::operation_scopes

    fn Capability::operation_scopes(self : Capability) -> Array[OperationScope]

    Capability::operation_scopes_by_kind

    fn Capability::operation_scopes_by_kind(self : Capability, kind : OperationScopeKind) -> Array[OperationScope]

    Capability::origin

    fn Capability::origin(self : Capability, origin : String) -> Capability

    Capability::origins

    fn Capability::origins(self : Capability) -> Array[String]

    Capability::path_scope

    fn Capability::path_scope(self : Capability, root~ : String, writable? : Bool) -> Capability

    Capability::permission

    fn Capability::permission(self : Capability, permission : Permission) -> Capability

    Capability::permissions

    fn Capability::permissions(self : Capability) -> Array[Permission]

    Capability::platform

    fn Capability::platform(self : Capability, platform : String) -> Capability

    Capability::platforms

    fn Capability::platforms(self : Capability) -> Array[String]

    Capability::shell_scope

    fn Capability::shell_scope(self : Capability, command : String) -> Capability

    Capability::url_scope

    fn Capability::url_scope(self : Capability, origin : String) -> Capability

    Capability::validate

    fn Capability::validate(self : Capability) -> Array[String]

    Capability::window

    fn Capability::window(self : Capability, label : String) -> Capability

    Capability::windows

    fn Capability::windows(self : Capability) -> Array[String]

    Capability::with_file_system_scopes

    fn Capability::with_file_system_scopes(self : Capability, scopes : Array[FileSystemScope]) -> Capability

    CapabilityCompileIssue

    pub struct CapabilityCompileIssue {
    severity : CapabilityIssueSeverity
    code : String
    message : String
    plugin : String
    route : String
    permission : String
    capability : String
    window_label : String
    } derive(Eq,
    Debug
    )

    CapabilityCompileIssue::capability

    fn CapabilityCompileIssue::capability(self : CapabilityCompileIssue) -> String

    CapabilityCompileIssue::code

    CapabilityCompileIssue::message

    fn CapabilityCompileIssue::message(self : CapabilityCompileIssue) -> String

    CapabilityCompileIssue::permission

    fn CapabilityCompileIssue::permission(self : CapabilityCompileIssue) -> String

    CapabilityCompileIssue::plugin

    fn CapabilityCompileIssue::plugin(self : CapabilityCompileIssue) -> String

    CapabilityCompileIssue::route

    CapabilityCompileIssue::severity

    CapabilityCompileIssue::to_json

    fn CapabilityCompileIssue::to_json(self : CapabilityCompileIssue) -> String

    CapabilityCompileIssue::window_label

    fn CapabilityCompileIssue::window_label(self : CapabilityCompileIssue) -> String

    CapabilityCompileReport

    pub struct CapabilityCompileReport {
    plugin_contracts : Array[PluginContract]
    command_manifest : CommandManifest
    permission_manifest : PermissionManifest
    issues : Array[CapabilityCompileIssue]
    } derive(Eq,
    Debug
    )

    CapabilityCompileReport::command_manifest

    CapabilityCompileReport::denied_routes

    fn CapabilityCompileReport::denied_routes(self : CapabilityCompileReport) -> Array[String]

    CapabilityCompileReport::error_count

    fn CapabilityCompileReport::error_count(self : CapabilityCompileReport) -> Int

    CapabilityCompileReport::errors

    CapabilityCompileReport::from_plugins

    fn CapabilityCompileReport::from_plugins(plugins~ : Array[Plugin], capabilities~ : Array[Capability], windows~ : Array[ResolvedWindow]) -> CapabilityCompileReport

    CapabilityCompileReport::issues

    CapabilityCompileReport::ok

    CapabilityCompileReport::permission_manifest

    CapabilityCompileReport::plugin_contracts

    CapabilityCompileReport::to_json

    fn CapabilityCompileReport::to_json(self : CapabilityCompileReport) -> String

    CapabilityCompileReport::unknown_windows

    fn CapabilityCompileReport::unknown_windows(self : CapabilityCompileReport) -> Array[String]

    CapabilityCompileReport::unused_permissions

    fn CapabilityCompileReport::unused_permissions(self : CapabilityCompileReport) -> Array[String]

    CapabilityCompileReport::warning_count

    fn CapabilityCompileReport::warning_count(self : CapabilityCompileReport) -> Int

    CapabilityCompileReport::warnings

    CapabilityDecision

    pub struct CapabilityDecision {
    allowed : Bool
    window_label : String
    origin : String
    platform : String
    permission : Permission
    capability : String
    reason : String
    } derive(Eq,
    Debug
    )

    CapabilityDecision::allowed

    fn CapabilityDecision::allowed(self : CapabilityDecision) -> Bool

    CapabilityDecision::capability

    fn CapabilityDecision::capability(self : CapabilityDecision) -> String

    CapabilityDecision::denied

    fn CapabilityDecision::denied(self : CapabilityDecision) -> Bool

    CapabilityDecision::origin

    fn CapabilityDecision::origin(self : CapabilityDecision) -> String

    CapabilityDecision::permission

    CapabilityDecision::platform

    fn CapabilityDecision::platform(self : CapabilityDecision) -> String

    CapabilityDecision::reason

    fn CapabilityDecision::reason(self : CapabilityDecision) -> String

    CapabilityDecision::to_json

    fn CapabilityDecision::to_json(self : CapabilityDecision) -> String

    CapabilityDecision::window_label

    fn CapabilityDecision::window_label(self : CapabilityDecision) -> String

    CapabilityIssueSeverity

    pub(all) enum CapabilityIssueSeverity {
    CapabilityWarning
    CapabilityError
    } derive(Eq,
    Debug
    )

    CapabilityIssueSeverity::is_error

    CapabilityIssueSeverity::name

    CapabilityPolicy

    pub struct CapabilityPolicy {
    capabilities : Array[Capability]
    } derive(Eq,
    Debug
    )

    CapabilityPolicy::allowed_origins

    fn CapabilityPolicy::allowed_origins(self : CapabilityPolicy, window_label~ : String, permission~ : Permission, platform? : String) -> Array[String]

    CapabilityPolicy::allows

    fn CapabilityPolicy::allows(self : CapabilityPolicy, window_label~ : String, permission~ : Permission, origin? : String, platform? : String) -> Bool

    CapabilityPolicy::allows_operation

    fn CapabilityPolicy::allows_operation(self : CapabilityPolicy, window_label~ : String, permission~ : Permission, scope~ : OperationScope, origin? : String, platform? : String) -> Bool

    CapabilityPolicy::allows_window

    fn CapabilityPolicy::allows_window(self : CapabilityPolicy, window_label~ : String, permission~ : Permission, platform? : String) -> Bool

    CapabilityPolicy::capabilities

    fn CapabilityPolicy::capabilities(self : CapabilityPolicy) -> Array[Capability]

    CapabilityPolicy::evaluate

    fn CapabilityPolicy::evaluate(self : CapabilityPolicy, window_label~ : String, permission~ : Permission, origin? : String, platform? : String) -> CapabilityDecision

    CapabilityPolicy::evaluate_operation

    fn CapabilityPolicy::evaluate_operation(self : CapabilityPolicy, window_label~ : String, permission~ : Permission, scope~ : OperationScope, origin? : String, platform? : String) -> CapabilityDecision

    CapabilityPolicy::new

    fn CapabilityPolicy::new(capabilities? : Array[Capability]) -> CapabilityPolicy

    CapabilityPolicy::to_json

    fn CapabilityPolicy::to_json(self : CapabilityPolicy) -> String

    CapabilityPolicy::validate

    fn CapabilityPolicy::validate(self : CapabilityPolicy) -> Array[String]

    Cell

    pub struct Cell {
    id : String
    html : Html
    } derive(Eq,
    Debug
    )

    Cell::html

    fn Cell::html(self : Cell) -> Html

    Cell::id

    fn Cell::id(self : Cell) -> String

    Cell::new

    fn Cell::new(id? : String, html? : Html) -> Cell

    Channel

    pub struct Channel {
    resource : ResourceEntry
    next_sequence : Int
    messages : Array[ChannelMessage]
    closed : Bool
    cancelled : Bool
    } derive(Eq,
    Debug
    )

    Channel::cancelled

    fn Channel::cancelled(self : Channel) -> Bool

    Channel::closed

    fn Channel::closed(self : Channel) -> Bool

    Channel::id

    fn Channel::id(self : Channel) -> String

    Channel::pending_count

    fn Channel::pending_count(self : Channel) -> Int

    Channel::resource

    fn Channel::resource(self : Channel) -> ResourceEntry

    Channel::to_json

    fn Channel::to_json(self : Channel) -> String

    ChannelMessage

    pub struct ChannelMessage {
    channel_id : String
    sequence : Int
    kind : ChannelMessageKind
    payload : String
    } derive(Eq,
    Debug
    )

    ChannelMessage::channel_id

    fn ChannelMessage::channel_id(self : ChannelMessage) -> String

    ChannelMessage::kind

    ChannelMessage::payload

    fn ChannelMessage::payload(self : ChannelMessage) -> String

    ChannelMessage::sequence

    fn ChannelMessage::sequence(self : ChannelMessage) -> Int

    ChannelMessage::to_json

    fn ChannelMessage::to_json(self : ChannelMessage) -> String

    ChannelMessageKind

    pub(all) enum ChannelMessageKind {
    ChannelData
    ChannelError
    ChannelEnd
    ChannelCancel
    } derive(Eq,
    Debug
    )

    ChannelMessageKind::name

    fn ChannelMessageKind::name(self : ChannelMessageKind) -> String

    ChannelTable

    pub struct ChannelTable {
    resources : ResourceTable
    channels : Map[String, Channel]
    order : Array[String]
    }

    ChannelTable::cancel

    fn ChannelTable::cancel(self : ChannelTable, id : String) -> Result[ChannelMessage, String]

    ChannelTable::channels

    fn ChannelTable::channels(self : ChannelTable) -> Array[Channel]

    ChannelTable::cleanup_report

    fn ChannelTable::cleanup_report(self : ChannelTable) -> ResourceCleanupReport

    ChannelTable::close

    fn ChannelTable::close(self : ChannelTable, id : String) -> Result[ResourceEntry, String]

    ChannelTable::close_all

    fn ChannelTable::close_all(self : ChannelTable) -> Array[ResourceEntry]

    ChannelTable::contains

    fn ChannelTable::contains(self : ChannelTable, id : String) -> Bool

    ChannelTable::count

    fn ChannelTable::count(self : ChannelTable) -> Int

    ChannelTable::drain

    fn ChannelTable::drain(self : ChannelTable, id : String) -> Result[Array[ChannelMessage], String]

    ChannelTable::end

    fn ChannelTable::end(self : ChannelTable, id : String) -> Result[ChannelMessage, String]

    ChannelTable::fail

    fn ChannelTable::fail(self : ChannelTable, id : String, message : String) -> Result[ChannelMessage, String]

    ChannelTable::get

    fn ChannelTable::get(self : ChannelTable, id : String) -> Channel?

    ChannelTable::ids

    fn ChannelTable::ids(self : ChannelTable) -> Array[String]

    ChannelTable::leak_report

    fn ChannelTable::leak_report(self : ChannelTable) -> ResourceLeakReport

    ChannelTable::new

    ChannelTable::open

    fn ChannelTable::open(self : ChannelTable, owner? : String, name? : String, metadata? : String) -> Result[Channel, Array[String]]

    ChannelTable::resource_entries

    fn ChannelTable::resource_entries(self : ChannelTable) -> Array[ResourceEntry]

    ChannelTable::send

    fn ChannelTable::send(self : ChannelTable, id : String, payload : String) -> Result[ChannelMessage, String]

    ChannelTable::to_json

    fn ChannelTable::to_json(self : ChannelTable) -> String

    Cmd

    pub(all) enum Cmd {
    None
    Batch(Array[Cmd])
    Effect(String)
    Emit(EventTarget, Event)
    Navigate(String, Source)
    } derive(Eq,
    Debug
    )

    Cmd::batch

    fn Cmd::batch(commands : Array[Cmd]) -> Cmd

    Cmd::effect

    fn Cmd::effect(name : String) -> Cmd

    Cmd::emit

    fn Cmd::emit(event : Event, target? : EventTarget) -> Cmd

    Cmd::is_empty

    fn Cmd::is_empty(self : Cmd) -> Bool

    Cmd::navigate

    fn Cmd::navigate(window_label : String, source : Source) -> Cmd

    CommandExecutionAffinity

    pub(all) enum CommandExecutionAffinity {
    MainThread
    WorkerThread
    AnyThread
    } derive(Eq,
    Debug
    )

    CommandExecutionAffinity::name

    CommandManifest

    pub struct CommandManifest {
    entries : Array[CommandManifestEntry]
    } derive(Eq,
    Debug
    )

    CommandManifest::allowed_routes

    fn CommandManifest::allowed_routes(self : CommandManifest, window_label : String) -> Array[String]

    CommandManifest::allows

    fn CommandManifest::allows(self : CommandManifest, route : String, window_label~ : String, origin? : String, platform? : String) -> Bool

    CommandManifest::entries

    CommandManifest::entry

    fn CommandManifest::entry(self : CommandManifest, route : String) -> CommandManifestEntry?

    CommandManifest::from_plugins

    fn CommandManifest::from_plugins(plugins~ : Array[Plugin], capabilities~ : Array[Capability], windows~ : Array[ResolvedWindow], platform? : String) -> CommandManifest

    CommandManifest::new

    CommandManifest::routes

    fn CommandManifest::routes(self : CommandManifest) -> Array[String]

    CommandManifest::routes_by_affinity

    fn CommandManifest::routes_by_affinity(self : CommandManifest, affinity : CommandExecutionAffinity) -> Array[String]

    CommandManifest::routes_by_mode

    fn CommandManifest::routes_by_mode(self : CommandManifest, mode : CommandMode) -> Array[String]

    CommandManifest::to_json

    fn CommandManifest::to_json(self : CommandManifest) -> String

    CommandManifestEntry

    pub struct CommandManifestEntry {
    plugin : String
    command : String
    route : String
    mode : CommandMode
    affinity : CommandExecutionAffinity
    permission : Permission
    request_schema : IpcSchema
    response_schema : IpcSchema
    allowed_windows : Array[String]
    allowed_origins : Array[String]
    allowed_platforms : Array[String]
    } derive(Eq,
    Debug
    )

    CommandManifestEntry::affinity

    CommandManifestEntry::allowed_for_origin

    fn CommandManifestEntry::allowed_for_origin(self : CommandManifestEntry, origin : String) -> Bool

    CommandManifestEntry::allowed_in_window

    fn CommandManifestEntry::allowed_in_window(self : CommandManifestEntry, window_label : String) -> Bool

    CommandManifestEntry::allowed_on_platform

    fn CommandManifestEntry::allowed_on_platform(self : CommandManifestEntry, platform : String) -> Bool

    CommandManifestEntry::allowed_origins

    fn CommandManifestEntry::allowed_origins(self : CommandManifestEntry) -> Array[String]

    CommandManifestEntry::allowed_platforms

    fn CommandManifestEntry::allowed_platforms(self : CommandManifestEntry) -> Array[String]

    CommandManifestEntry::allowed_windows

    fn CommandManifestEntry::allowed_windows(self : CommandManifestEntry) -> Array[String]

    CommandManifestEntry::command

    fn CommandManifestEntry::command(self : CommandManifestEntry) -> String

    CommandManifestEntry::mode

    CommandManifestEntry::permission

    CommandManifestEntry::plugin

    fn CommandManifestEntry::plugin(self : CommandManifestEntry) -> String

    CommandManifestEntry::request_schema

    CommandManifestEntry::response_schema

    fn CommandManifestEntry::response_schema(self : CommandManifestEntry) -> IpcSchema

    CommandManifestEntry::route

    fn CommandManifestEntry::route(self : CommandManifestEntry) -> String

    CommandManifestEntry::to_json

    fn CommandManifestEntry::to_json(self : CommandManifestEntry) -> String

    CommandMode

    pub(all) enum CommandMode {
    Sync
    Async
    Stream
    Event
    } derive(Eq,
    Debug
    )

    CommandMode::name

    fn CommandMode::name(self : CommandMode) -> String

    CommandRegistry

    pub struct CommandRegistry {
    commands : Map[String, RegisteredCommand]
    duplicate_routes : Array[String]
    }

    CommandRegistry::async_routes

    fn CommandRegistry::async_routes(self : CommandRegistry) -> Array[String]

    CommandRegistry::contains

    fn CommandRegistry::contains(self : CommandRegistry, route : String) -> Bool

    CommandRegistry::dispatch

    fn CommandRegistry::dispatch(self : CommandRegistry, request : InvokeRequest, capabilities? : Array[Capability]) -> InvokeResponse

    CommandRegistry::dispatch_async

    async fn CommandRegistry::dispatch_async(self : CommandRegistry, request : InvokeRequest, capabilities? : Array[Capability]) -> InvokeResponse

    CommandRegistry::dispatch_with_permission

    fn CommandRegistry::dispatch_with_permission(self : CommandRegistry, request : InvokeRequest, permission~ : Permission, capabilities? : Array[Capability]) -> InvokeResponse

    CommandRegistry::dispatch_with_permission_async

    async fn CommandRegistry::dispatch_with_permission_async(self : CommandRegistry, request : InvokeRequest, permission~ : Permission, capabilities? : Array[Capability]) -> InvokeResponse

    CommandRegistry::dispatch_with_profile

    fn CommandRegistry::dispatch_with_profile(self : CommandRegistry, profile : SecurityProfile, request : InvokeRequest) -> InvokeResponse

    CommandRegistry::dispatch_with_profile_async

    async fn CommandRegistry::dispatch_with_profile_async(self : CommandRegistry, profile : SecurityProfile, request : InvokeRequest) -> InvokeResponse

    CommandRegistry::invoke_contract

    fn CommandRegistry::invoke_contract(self : CommandRegistry, profile : SecurityProfile, route : String) -> InvokeContract?

    CommandRegistry::invoke_contract_report

    fn CommandRegistry::invoke_contract_report(self : CommandRegistry, profile : SecurityProfile) -> InvokeContractReport

    CommandRegistry::invoke_contracts

    fn CommandRegistry::invoke_contracts(self : CommandRegistry, profile : SecurityProfile) -> Array[InvokeContract]

    CommandRegistry::merge

    CommandRegistry::new

    CommandRegistry::register

    CommandRegistry::register_async_fn

    fn CommandRegistry::register_async_fn(self : CommandRegistry, route : String, permission? : Permission, operation_scope? : (InvokeRequest) -> Result[OperationScope, String], handler~ : async (String) -> Result[String, String]) -> CommandRegistry

    CommandRegistry::register_fn

    fn CommandRegistry::register_fn(self : CommandRegistry, route : String, permission? : Permission, operation_scope? : (InvokeRequest) -> Result[OperationScope, String], handler~ : (String) -> Result[String, String]) -> CommandRegistry

    CommandRegistry::register_stream_fn

    fn CommandRegistry::register_stream_fn(self : CommandRegistry, route : String, permission? : Permission, operation_scope? : (InvokeRequest) -> Result[OperationScope, String], handler~ : (String, StreamSink) -> Result[Unit, String]) -> CommandRegistry

    CommandRegistry::routes

    fn CommandRegistry::routes(self : CommandRegistry) -> Array[String]

    CommandRegistry::sync_routes

    fn CommandRegistry::sync_routes(self : CommandRegistry) -> Array[String]

    CommandRegistry::validate

    fn CommandRegistry::validate(self : CommandRegistry) -> Array[String]

    CommandSpec

    pub struct CommandSpec {
    name : String
    mode : CommandMode
    affinity : CommandExecutionAffinity
    permission : Permission
    request_schema : IpcSchema
    response_schema : IpcSchema
    } derive(Eq,
    Debug
    )

    CommandSpec::affinity

    CommandSpec::mode

    fn CommandSpec::mode(self : CommandSpec) -> CommandMode

    CommandSpec::name

    fn CommandSpec::name(self : CommandSpec) -> String

    CommandSpec::new

    fn CommandSpec::new(name : String, mode? : CommandMode, affinity? : CommandExecutionAffinity, permission? : Permission, request? : IpcSchema, response? : IpcSchema) -> CommandSpec

    CommandSpec::permission

    fn CommandSpec::permission(self : CommandSpec) -> Permission

    CommandSpec::request_schema

    fn CommandSpec::request_schema(self : CommandSpec) -> IpcSchema

    CommandSpec::response_schema

    fn CommandSpec::response_schema(self : CommandSpec) -> IpcSchema

    CommandSpec::with_affinity

    fn CommandSpec::with_affinity(self : CommandSpec, affinity : CommandExecutionAffinity) -> CommandSpec

    CommandSpec::with_schema

    fn CommandSpec::with_schema(self : CommandSpec, request? : IpcSchema, response? : IpcSchema) -> CommandSpec

    Event

    pub struct Event {
    name : String
    payload : String
    } derive(Eq,
    Debug
    )

    Event::name

    fn Event::name(self : Event) -> String

    Event::new

    fn Event::new(name : String, payload? : String) -> Event

    Event::payload

    fn Event::payload(self : Event) -> String

    Event::to_json

    fn Event::to_json(self : Event) -> String

    Event::validate

    fn Event::validate(self : Event) -> Array[String]

    EventBus

    pub struct EventBus {
    next_listener_sequence : Int
    listeners : Map[String, EventListener]
    order : Array[String]
    } derive(Eq,
    Debug
    )

    EventBus::clear

    fn EventBus::clear(self : EventBus) -> Array[EventListener]

    EventBus::emit

    fn EventBus::emit(self : EventBus, event : Event, target? : EventTarget) -> Result[Array[EventDelivery], Array[String]]

    EventBus::listen

    fn EventBus::listen(self : EventBus, name : String, target? : EventTarget, once? : Bool) -> Result[EventListener, Array[String]]

    EventBus::listener

    fn EventBus::listener(self : EventBus, id : String) -> EventListener?

    EventBus::listener_count

    fn EventBus::listener_count(self : EventBus) -> Int

    EventBus::listeners

    fn EventBus::listeners(self : EventBus) -> Array[EventListener]

    EventBus::listeners_for

    fn EventBus::listeners_for(self : EventBus, name : String, target? : EventTarget) -> Array[EventListener]

    EventBus::new

    fn EventBus::new() -> EventBus

    EventBus::once

    fn EventBus::once(self : EventBus, name : String, target? : EventTarget) -> Result[EventListener, Array[String]]

    EventBus::remove_target

    fn EventBus::remove_target(self : EventBus, target : EventTarget) -> Array[EventListener]

    EventBus::to_json

    fn EventBus::to_json(self : EventBus) -> String

    EventBus::unlisten

    fn EventBus::unlisten(self : EventBus, id : String) -> Result[EventListener, String]

    EventDelivery

    pub struct EventDelivery {
    listener_id : String
    target : EventTarget
    event : Event
    } derive(Eq,
    Debug
    )

    EventDelivery::event

    fn EventDelivery::event(self : EventDelivery) -> Event

    EventDelivery::listener_id

    fn EventDelivery::listener_id(self : EventDelivery) -> String

    EventDelivery::target

    EventDelivery::to_json

    fn EventDelivery::to_json(self : EventDelivery) -> String

    EventListener

    pub struct EventListener {
    id : String
    name : String
    target : EventTarget
    once : Bool
    } derive(Eq,
    Debug
    )

    EventListener::id

    fn EventListener::id(self : EventListener) -> String

    EventListener::name

    fn EventListener::name(self : EventListener) -> String

    EventListener::once

    fn EventListener::once(self : EventListener) -> Bool

    EventListener::target

    EventListener::to_json

    fn EventListener::to_json(self : EventListener) -> String

    EventTarget

    pub(all) enum EventTarget {
    AppTarget
    WindowTarget(String)
    WebviewTarget(String)
    } derive(Eq,
    Debug
    )

    EventTarget::kind

    fn EventTarget::kind(self : EventTarget) -> String

    EventTarget::label

    fn EventTarget::label(self : EventTarget) -> String?

    EventTarget::to_json

    fn EventTarget::to_json(self : EventTarget) -> String

    EventTarget::validate

    fn EventTarget::validate(self : EventTarget) -> Array[String]

    FileSystemScope

    pub struct FileSystemScope {
    name : String
    root : String
    writable : Bool
    } derive(Eq,
    Debug
    )

    FileSystemScope::name

    fn FileSystemScope::name(self : FileSystemScope) -> String

    FileSystemScope::new

    fn FileSystemScope::new(name~ : String, root~ : String, writable? : Bool) -> FileSystemScope

    FileSystemScope::root

    fn FileSystemScope::root(self : FileSystemScope) -> String

    FileSystemScope::to_json

    fn FileSystemScope::to_json(self : FileSystemScope) -> String

    FileSystemScope::validate

    fn FileSystemScope::validate(self : FileSystemScope) -> Array[String]

    FileSystemScope::writable

    fn FileSystemScope::writable(self : FileSystemScope) -> Bool

    FrontendEventDispatch

    pub struct FrontendEventDispatch {
    window_label : String
    hook : String
    event : Event
    script : String
    } derive(Eq,
    Debug
    )

    FrontendEventDispatch::event

    FrontendEventDispatch::hook

    fn FrontendEventDispatch::hook(self : FrontendEventDispatch) -> String

    FrontendEventDispatch::new

    fn FrontendEventDispatch::new(window_label~ : String, hook? : String, event~ : Event) -> FrontendEventDispatch

    FrontendEventDispatch::script

    fn FrontendEventDispatch::script(self : FrontendEventDispatch) -> String

    FrontendEventDispatch::to_json

    fn FrontendEventDispatch::to_json(self : FrontendEventDispatch) -> String

    FrontendEventDispatch::window_label

    fn FrontendEventDispatch::window_label(self : FrontendEventDispatch) -> String

    Html

    pub struct Html {
    content : String
    } derive(Eq,
    Debug
    )

    Html::content

    fn Html::content(self : Html) -> String

    Html::empty

    fn Html::empty() -> Html

    Html::text

    fn Html::text(content : String) -> Html

    InvokeContract

    pub struct InvokeContract {
    route : String
    plugin : String
    command : String
    mode : CommandMode
    affinity : CommandExecutionAffinity
    permission : Permission
    request_schema : IpcSchema
    response_schema : IpcSchema
    allowed_windows : Array[String]
    allowed_origins : Array[String]
    requires_registered_handler : Bool
    registered : Bool
    registered_mode : CommandMode?
    registered_permission : Permission?
    exposed : Bool
    operation_scope_configured : Bool
    operation_scope_required : Bool
    problems : Array[String]
    } derive(Eq,
    Debug
    )

    InvokeContract::affinity

    InvokeContract::allowed_origins

    fn InvokeContract::allowed_origins(self : InvokeContract) -> Array[String]

    InvokeContract::allowed_windows

    fn InvokeContract::allowed_windows(self : InvokeContract) -> Array[String]

    InvokeContract::command

    fn InvokeContract::command(self : InvokeContract) -> String

    InvokeContract::dispatchable

    fn InvokeContract::dispatchable(self : InvokeContract) -> Bool

    InvokeContract::exposed

    fn InvokeContract::exposed(self : InvokeContract) -> Bool

    InvokeContract::mode

    InvokeContract::ok

    fn InvokeContract::ok(self : InvokeContract) -> Bool

    InvokeContract::operation_scope_configured

    fn InvokeContract::operation_scope_configured(self : InvokeContract) -> Bool

    InvokeContract::operation_scope_required

    fn InvokeContract::operation_scope_required(self : InvokeContract) -> Bool

    InvokeContract::permission

    fn InvokeContract::permission(self : InvokeContract) -> Permission

    InvokeContract::plugin

    fn InvokeContract::plugin(self : InvokeContract) -> String

    InvokeContract::problems

    fn InvokeContract::problems(self : InvokeContract) -> Array[String]

    InvokeContract::registered

    fn InvokeContract::registered(self : InvokeContract) -> Bool

    InvokeContract::registered_mode

    fn InvokeContract::registered_mode(self : InvokeContract) -> CommandMode?

    InvokeContract::registered_permission

    fn InvokeContract::registered_permission(self : InvokeContract) -> Permission?

    InvokeContract::request_schema

    fn InvokeContract::request_schema(self : InvokeContract) -> IpcSchema

    InvokeContract::requires_registered_handler

    fn InvokeContract::requires_registered_handler(self : InvokeContract) -> Bool

    InvokeContract::response_schema

    fn InvokeContract::response_schema(self : InvokeContract) -> IpcSchema

    InvokeContract::route

    fn InvokeContract::route(self : InvokeContract) -> String

    InvokeContract::to_json

    fn InvokeContract::to_json(self : InvokeContract) -> String

    InvokeContractReport

    pub struct InvokeContractReport {
    contracts : Array[InvokeContract]
    undeclared_routes : Array[String]
    duplicate_routes : Array[String]
    problems : Array[String]
    } derive(Eq,
    Debug
    )

    InvokeContractReport::contracts

    InvokeContractReport::dispatchable_routes

    fn InvokeContractReport::dispatchable_routes(self : InvokeContractReport) -> Array[String]

    InvokeContractReport::duplicate_routes

    fn InvokeContractReport::duplicate_routes(self : InvokeContractReport) -> Array[String]

    InvokeContractReport::ok

    InvokeContractReport::problems

    fn InvokeContractReport::problems(self : InvokeContractReport) -> Array[String]

    InvokeContractReport::to_json

    fn InvokeContractReport::to_json(self : InvokeContractReport) -> String

    InvokeContractReport::undeclared_routes

    fn InvokeContractReport::undeclared_routes(self : InvokeContractReport) -> Array[String]

    InvokeErrorKind

    pub(all) enum InvokeErrorKind {
    InvalidRequest
    UnknownCommand
    PermissionDenied
    AsyncRequired
    HandlerError
    TransportError
    Timeout
    Cancelled
    } derive(Eq,
    Debug
    )

    InvokeErrorKind::name

    fn InvokeErrorKind::name(self : InvokeErrorKind) -> String

    InvokeFailure

    pub struct InvokeFailure {
    kind : InvokeErrorKind
    message : String
    route : String
    } derive(Eq,
    Debug
    )

    InvokeFailure::async_required

    fn InvokeFailure::async_required(route : String) -> InvokeFailure

    InvokeFailure::cancelled

    fn InvokeFailure::cancelled(message? : String, route? : String) -> InvokeFailure

    InvokeFailure::handler_error

    fn InvokeFailure::handler_error(message : String, route? : String) -> InvokeFailure

    InvokeFailure::invalid_request

    fn InvokeFailure::invalid_request(message : String) -> InvokeFailure

    InvokeFailure::kind

    InvokeFailure::message

    fn InvokeFailure::message(self : InvokeFailure) -> String

    InvokeFailure::new

    fn InvokeFailure::new(kind~ : InvokeErrorKind, message~ : String, route? : String) -> InvokeFailure

    InvokeFailure::permission_denied

    fn InvokeFailure::permission_denied(route : String) -> InvokeFailure

    InvokeFailure::route

    fn InvokeFailure::route(self : InvokeFailure) -> String?

    InvokeFailure::timeout

    fn InvokeFailure::timeout(message? : String, route? : String) -> InvokeFailure

    InvokeFailure::to_json

    fn InvokeFailure::to_json(self : InvokeFailure) -> String

    InvokeFailure::transport_error

    fn InvokeFailure::transport_error(message : String) -> InvokeFailure

    InvokeFailure::unknown_command

    fn InvokeFailure::unknown_command(route : String) -> InvokeFailure

    InvokeRequest

    pub struct InvokeRequest {
    id : String
    window_label : String
    plugin : String
    command : String
    payload : String
    origin : String
    callback_id : String
    error_id : String
    } derive(Eq,
    Debug
    )

    InvokeRequest::callback_id

    fn InvokeRequest::callback_id(self : InvokeRequest) -> String

    InvokeRequest::command

    fn InvokeRequest::command(self : InvokeRequest) -> String

    InvokeRequest::error_id

    fn InvokeRequest::error_id(self : InvokeRequest) -> String

    InvokeRequest::has_resolver_ids

    fn InvokeRequest::has_resolver_ids(self : InvokeRequest) -> Bool

    InvokeRequest::id

    fn InvokeRequest::id(self : InvokeRequest) -> String

    InvokeRequest::new

    fn InvokeRequest::new(id~ : String, window_label~ : String, plugin~ : String, command~ : String, payload? : String, origin? : String, callback_id? : String, error_id? : String) -> InvokeRequest

    InvokeRequest::origin

    fn InvokeRequest::origin(self : InvokeRequest) -> String

    InvokeRequest::payload

    fn InvokeRequest::payload(self : InvokeRequest) -> String

    InvokeRequest::plugin

    fn InvokeRequest::plugin(self : InvokeRequest) -> String

    InvokeRequest::route

    fn InvokeRequest::route(self : InvokeRequest) -> String

    InvokeRequest::validate

    fn InvokeRequest::validate(self : InvokeRequest) -> Array[String]

    InvokeRequest::window_label

    fn InvokeRequest::window_label(self : InvokeRequest) -> String

    InvokeResponse

    pub(all) enum InvokeResponse {
    InvokeOk(String, String)
    InvokeError(String, InvokeFailure)
    } derive(Eq,
    Debug
    )

    InvokeResponse::async_required

    fn InvokeResponse::async_required(id : String, route : String) -> InvokeResponse

    InvokeResponse::error

    fn InvokeResponse::error(id : String, message : String) -> InvokeResponse

    InvokeResponse::error_kind

    fn InvokeResponse::error_kind(self : InvokeResponse) -> InvokeErrorKind?

    InvokeResponse::error_message

    fn InvokeResponse::error_message(self : InvokeResponse) -> String?

    InvokeResponse::failure

    fn InvokeResponse::failure(id : String, failure : InvokeFailure) -> InvokeResponse

    InvokeResponse::failure_info

    fn InvokeResponse::failure_info(self : InvokeResponse) -> InvokeFailure?

    InvokeResponse::handler_error

    fn InvokeResponse::handler_error(id : String, message : String, route? : String) -> InvokeResponse

    InvokeResponse::id

    fn InvokeResponse::id(self : InvokeResponse) -> String

    InvokeResponse::invalid_request

    fn InvokeResponse::invalid_request(id : String, message : String) -> InvokeResponse

    InvokeResponse::ok

    fn InvokeResponse::ok(id : String, payload : String) -> InvokeResponse

    InvokeResponse::payload

    fn InvokeResponse::payload(self : InvokeResponse) -> String?

    InvokeResponse::permission_denied

    fn InvokeResponse::permission_denied(id : String, route : String) -> InvokeResponse

    InvokeResponse::unknown_command

    fn InvokeResponse::unknown_command(id : String, route : String) -> InvokeResponse

    IpcSchema

    pub struct IpcSchema {
    name : String
    typescript : String
    description : String
    } derive(Eq,
    Debug
    )

    IpcSchema::accepts_payload

    fn IpcSchema::accepts_payload(self : IpcSchema, payload : String) -> Bool

    IpcSchema::any

    fn IpcSchema::any() -> IpcSchema

    IpcSchema::array

    fn IpcSchema::array(item : IpcSchema) -> IpcSchema

    IpcSchema::boolean

    fn IpcSchema::boolean() -> IpcSchema

    IpcSchema::description

    fn IpcSchema::description(self : IpcSchema) -> String

    IpcSchema::json

    fn IpcSchema::json() -> IpcSchema

    IpcSchema::name

    fn IpcSchema::name(self : IpcSchema) -> String

    IpcSchema::new

    fn IpcSchema::new(name~ : String, typescript? : String, description? : String) -> IpcSchema

    IpcSchema::number

    fn IpcSchema::number() -> IpcSchema

    IpcSchema::object

    fn IpcSchema::object(name : String, typescript : String, description? : String) -> IpcSchema

    IpcSchema::string

    fn IpcSchema::string() -> IpcSchema

    IpcSchema::to_json

    fn IpcSchema::to_json(self : IpcSchema) -> String

    IpcSchema::typescript

    fn IpcSchema::typescript(self : IpcSchema) -> String

    IpcSchema::unit

    fn IpcSchema::unit() -> IpcSchema

    IpcSchema::validate

    fn IpcSchema::validate(self : IpcSchema) -> Array[String]

    IpcSchema::validate_payload

    fn IpcSchema::validate_payload(self : IpcSchema, payload : String) -> String?

    LaunchPlan

    pub struct LaunchPlan {
    root : Cell
    windows : Array[WindowConfig]
    plugins : Array[Plugin]
    capabilities : Array[Capability]
    startup : Cmd
    lifecycle_hooks : Array[LifecycleHook]
    } derive(Eq,
    Debug
    )

    LaunchPlan::capabilities

    fn LaunchPlan::capabilities(self : LaunchPlan) -> Array[Capability]

    LaunchPlan::capability_count

    fn LaunchPlan::capability_count(self : LaunchPlan) -> Int

    LaunchPlan::command_routes

    fn LaunchPlan::command_routes(self : LaunchPlan) -> Array[String]

    LaunchPlan::lifecycle_hooks

    fn LaunchPlan::lifecycle_hooks(self : LaunchPlan) -> Array[LifecycleHook]

    LaunchPlan::plugin_count

    fn LaunchPlan::plugin_count(self : LaunchPlan) -> Int

    LaunchPlan::plugins

    fn LaunchPlan::plugins(self : LaunchPlan) -> Array[Plugin]

    LaunchPlan::startup

    fn LaunchPlan::startup(self : LaunchPlan) -> Cmd

    LaunchPlan::window_count

    fn LaunchPlan::window_count(self : LaunchPlan) -> Int

    LaunchPlan::windows

    fn LaunchPlan::windows(self : LaunchPlan) -> Array[WindowConfig]

    LepusaMoonSuiteProductHome

    pub(all) struct LepusaMoonSuiteProductHome {
    product_id : String
    state_path : String
    service_path : String
    runtime_path : String
    update_metadata_path : String
    tmp_path : String
    } derive(Eq, ToJson,
    Debug
    ,
    FromJson
    )

    LifecycleEvent

    pub(all) enum LifecycleEvent {
    AppStarted
    AppWillExit
    PluginSetup(String)
    PluginReady(String)
    PluginWillExit(String)
    WindowCloseRequested(String)
    WindowClosed(String)
    } derive(Eq,
    Debug
    )

    LifecycleEvent::app_started

    fn LifecycleEvent::app_started() -> LifecycleEvent

    LifecycleEvent::app_will_exit

    fn LifecycleEvent::app_will_exit() -> LifecycleEvent

    LifecycleEvent::plugin_ready

    fn LifecycleEvent::plugin_ready(name : String) -> LifecycleEvent

    LifecycleEvent::plugin_setup

    fn LifecycleEvent::plugin_setup(name : String) -> LifecycleEvent

    LifecycleEvent::plugin_will_exit

    fn LifecycleEvent::plugin_will_exit(name : String) -> LifecycleEvent

    LifecycleEvent::to_json

    fn LifecycleEvent::to_json(self : LifecycleEvent) -> String

    LifecycleEvent::window_close_requested

    fn LifecycleEvent::window_close_requested(label : String) -> LifecycleEvent

    LifecycleEvent::window_closed

    fn LifecycleEvent::window_closed(label : String) -> LifecycleEvent

    LifecycleHook

    pub struct LifecycleHook {
    event : LifecycleEvent
    command : Cmd
    } derive(Eq,
    Debug
    )

    LifecycleHook::command

    fn LifecycleHook::command(self : LifecycleHook) -> Cmd

    LifecycleHook::event

    LifecycleHook::new

    fn LifecycleHook::new(event : LifecycleEvent, command : Cmd) -> LifecycleHook

    LocalService

    pub struct LocalService {
    name : String
    command : Array[String]
    readiness_url : String
    } derive(Eq,
    Debug
    )

    LocalService::command

    fn LocalService::command(self : LocalService) -> Array[String]

    LocalService::name

    fn LocalService::name(self : LocalService) -> String

    LocalService::new

    fn LocalService::new(name~ : String, command~ : Array[String], readiness_url~ : String) -> LocalService

    LocalService::readiness_url

    fn LocalService::readiness_url(self : LocalService) -> String

    LocalService::to_json

    fn LocalService::to_json(self : LocalService) -> String

    LocalService::validate

    fn LocalService::validate(self : LocalService) -> Array[String]

    LocalServiceSupervisorAction

    pub(all) enum LocalServiceSupervisorAction {
    StartLocalService(LocalService)
    WaitLocalServiceReady(LocalService)
    StopLocalService(LocalService)
    } derive(Eq,
    Debug
    )

    LocalServiceSupervisorAction::kind

    LocalServiceSupervisorAction::service

    LocalServiceSupervisorAction::to_json

    LocalServiceSupervisorPlan

    pub struct LocalServiceSupervisorPlan {
    services : Array[LocalService]
    startup_services : Array[LocalService]
    startup_actions : Array[LocalServiceSupervisorAction]
    shutdown_actions : Array[LocalServiceSupervisorAction]
    } derive(Eq,
    Debug
    )

    LocalServiceSupervisorPlan::new

    LocalServiceSupervisorPlan::requires_supervisor

    fn LocalServiceSupervisorPlan::requires_supervisor(self : LocalServiceSupervisorPlan) -> Bool

    LocalServiceSupervisorPlan::services

    LocalServiceSupervisorPlan::shutdown_actions

    LocalServiceSupervisorPlan::start_order

    LocalServiceSupervisorPlan::startup_actions

    LocalServiceSupervisorPlan::startup_services

    LocalServiceSupervisorPlan::to_json

    LocalServiceSupervisorPlan::validate

    LocalhostSource

    pub struct LocalhostSource {
    host : String
    port : Int
    path : String
    readiness_path : String?
    command : Array[String]
    } derive(Eq,
    Debug
    )

    LocalhostSource::command

    fn LocalhostSource::command(self : LocalhostSource) -> Array[String]

    LocalhostSource::host

    fn LocalhostSource::host(self : LocalhostSource) -> String

    LocalhostSource::local_service

    fn LocalhostSource::local_service(self : LocalhostSource, name : String) -> LocalService?

    LocalhostSource::new

    fn LocalhostSource::new(port~ : Int, host? : String, path? : String, readiness_path? : String, command? : Array[String]) -> LocalhostSource

    LocalhostSource::path

    fn LocalhostSource::path(self : LocalhostSource) -> String

    LocalhostSource::port

    fn LocalhostSource::port(self : LocalhostSource) -> Int

    LocalhostSource::readiness_path

    fn LocalhostSource::readiness_path(self : LocalhostSource) -> String?

    LocalhostSource::readiness_url

    fn LocalhostSource::readiness_url(self : LocalhostSource) -> String

    LocalhostSource::url

    fn LocalhostSource::url(self : LocalhostSource) -> String

    LocalhostSource::validate

    fn LocalhostSource::validate(self : LocalhostSource) -> Array[String]

    OperationScope

    pub struct OperationScope {
    kind : OperationScopeKind
    value : String
    writable : Bool
    } derive(Eq,
    Debug
    )

    OperationScope::allows

    fn OperationScope::allows(self : OperationScope, requested : OperationScope) -> Bool

    OperationScope::command

    fn OperationScope::command(self : OperationScope) -> String

    OperationScope::kind

    OperationScope::origin

    fn OperationScope::origin(self : OperationScope) -> String

    OperationScope::path

    fn OperationScope::path(root~ : String, writable? : Bool) -> OperationScope

    OperationScope::root

    fn OperationScope::root(self : OperationScope) -> String

    OperationScope::shell

    fn OperationScope::shell(command : String) -> OperationScope

    OperationScope::to_json

    fn OperationScope::to_json(self : OperationScope) -> String

    OperationScope::url

    fn OperationScope::url(origin : String) -> OperationScope

    OperationScope::validate

    fn OperationScope::validate(self : OperationScope) -> Array[String]

    OperationScope::value

    fn OperationScope::value(self : OperationScope) -> String

    OperationScope::writable

    fn OperationScope::writable(self : OperationScope) -> Bool

    OperationScopeKind

    pub(all) enum OperationScopeKind {
    PathOperation
    ShellOperation
    UrlOperation
    } derive(Eq,
    Debug
    )

    OperationScopeKind::name

    fn OperationScopeKind::name(self : OperationScopeKind) -> String

    ParsedLaunchAssetUrl

    type ParsedLaunchAssetUrl derive(Eq,
    Debug
    )

    Permission

    pub(all) enum Permission {
    App
    FileSystemRead
    FileSystemWrite
    FileDialog
    Network
    Localhost
    DeepLink
    SingleInstance
    Menu
    Tray
    AutoLaunch
    Window
    WindowState
    Updater
    ServiceDiscovery
    Shell
    Opener
    Dialog
    Clipboard
    Notification
    ProcessInfo
    ProcessEnvironment
    ProcessControl
    Custom(String)
    } derive(Eq,
    Debug
    )

    Permission::command

    fn Permission::command(route : String) -> Permission

    Permission::name

    fn Permission::name(self : Permission) -> String

    Permission::named

    fn Permission::named(name : String) -> Result[Permission, String]

    PermissionManifest

    pub struct PermissionManifest {
    permissions : Array[PermissionManifestPermission]
    } derive(Eq,
    Debug
    )

    PermissionManifest::denied_routes

    fn PermissionManifest::denied_routes(self : PermissionManifest) -> Array[String]

    PermissionManifest::from_command_manifest

    fn PermissionManifest::from_command_manifest(manifest : CommandManifest, capabilities~ : Array[Capability]) -> PermissionManifest

    PermissionManifest::from_plugins

    fn PermissionManifest::from_plugins(plugins~ : Array[Plugin], capabilities~ : Array[Capability], windows~ : Array[ResolvedWindow], platform? : String) -> PermissionManifest

    PermissionManifest::new

    PermissionManifest::permission

    fn PermissionManifest::permission(self : PermissionManifest, name : String) -> PermissionManifestPermission?

    PermissionManifest::permission_names

    fn PermissionManifest::permission_names(self : PermissionManifest) -> Array[String]

    PermissionManifest::permissions

    PermissionManifest::to_json

    fn PermissionManifest::to_json(self : PermissionManifest) -> String

    PermissionManifestCommand

    pub struct PermissionManifestCommand {
    plugin : String
    command : String
    route : String
    mode : CommandMode
    affinity : CommandExecutionAffinity
    allowed_windows : Array[String]
    allowed_origins : Array[String]
    allowed_platforms : Array[String]
    } derive(Eq,
    Debug
    )

    PermissionManifestCommand::affinity

    PermissionManifestCommand::allowed_origins

    fn PermissionManifestCommand::allowed_origins(self : PermissionManifestCommand) -> Array[String]

    PermissionManifestCommand::allowed_platforms

    fn PermissionManifestCommand::allowed_platforms(self : PermissionManifestCommand) -> Array[String]

    PermissionManifestCommand::allowed_windows

    fn PermissionManifestCommand::allowed_windows(self : PermissionManifestCommand) -> Array[String]

    PermissionManifestCommand::command

    PermissionManifestCommand::mode

    PermissionManifestCommand::plugin

    PermissionManifestCommand::route

    PermissionManifestCommand::to_json

    PermissionManifestGrant

    pub struct PermissionManifestGrant {
    capability : String
    windows : Array[String]
    origins : Array[String]
    platforms : Array[String]
    operation_scopes : Array[OperationScope]
    } derive(Eq,
    Debug
    )

    PermissionManifestGrant::capability

    fn PermissionManifestGrant::capability(self : PermissionManifestGrant) -> String

    PermissionManifestGrant::operation_scopes

    PermissionManifestGrant::origins

    PermissionManifestGrant::platforms

    fn PermissionManifestGrant::platforms(self : PermissionManifestGrant) -> Array[String]

    PermissionManifestGrant::to_json

    fn PermissionManifestGrant::to_json(self : PermissionManifestGrant) -> String

    PermissionManifestGrant::windows

    PermissionManifestPermission

    pub struct PermissionManifestPermission {
    name : String
    commands : Array[PermissionManifestCommand]
    grants : Array[PermissionManifestGrant]
    allowed_windows : Array[String]
    allowed_origins : Array[String]
    allowed_platforms : Array[String]
    denied_routes : Array[String]
    } derive(Eq,
    Debug
    )

    PermissionManifestPermission::allowed_origins

    fn PermissionManifestPermission::allowed_origins(self : PermissionManifestPermission) -> Array[String]

    PermissionManifestPermission::allowed_platforms

    fn PermissionManifestPermission::allowed_platforms(self : PermissionManifestPermission) -> Array[String]

    PermissionManifestPermission::allowed_windows

    fn PermissionManifestPermission::allowed_windows(self : PermissionManifestPermission) -> Array[String]

    PermissionManifestPermission::commands

    PermissionManifestPermission::denied_routes

    PermissionManifestPermission::grants

    PermissionManifestPermission::name

    PermissionManifestPermission::to_json

    Plugin

    pub struct Plugin {
    name : String
    commands : Array[CommandSpec]
    lifecycle_hooks : Array[LifecycleHook]
    } derive(Eq,
    Debug
    )

    Plugin::command

    fn Plugin::command(self : Plugin, name : String, mode? : CommandMode, affinity? : CommandExecutionAffinity, permission? : Permission, request? : IpcSchema, response? : IpcSchema) -> Plugin

    Plugin::command_async

    fn Plugin::command_async(self : Plugin, name : String, permission? : Permission, request? : IpcSchema, response? : IpcSchema, affinity? : CommandExecutionAffinity) -> Plugin

    Plugin::command_event

    fn Plugin::command_event(self : Plugin, name : String, permission? : Permission, request? : IpcSchema, response? : IpcSchema, affinity? : CommandExecutionAffinity) -> Plugin

    Plugin::command_names

    fn Plugin::command_names(self : Plugin) -> Array[String]

    Plugin::command_routes

    fn Plugin::command_routes(self : Plugin) -> Array[String]

    Plugin::command_stream

    fn Plugin::command_stream(self : Plugin, name : String, permission? : Permission, request? : IpcSchema, response? : IpcSchema, affinity? : CommandExecutionAffinity) -> Plugin

    Plugin::command_sync

    fn Plugin::command_sync(self : Plugin, name : String, permission? : Permission, request? : IpcSchema, response? : IpcSchema, affinity? : CommandExecutionAffinity) -> Plugin

    Plugin::commands

    fn Plugin::commands(self : Plugin) -> Array[CommandSpec]

    Plugin::contract

    fn Plugin::contract(self : Plugin) -> PluginContract

    Plugin::lifecycle_hooks

    fn Plugin::lifecycle_hooks(self : Plugin) -> Array[LifecycleHook]

    Plugin::name

    fn Plugin::name(self : Plugin) -> String

    Plugin::new

    fn Plugin::new(name : String) -> Plugin

    Plugin::on_ready

    fn Plugin::on_ready(self : Plugin, command : Cmd) -> Plugin

    Plugin::on_setup

    fn Plugin::on_setup(self : Plugin, command : Cmd) -> Plugin

    Plugin::on_will_exit

    fn Plugin::on_will_exit(self : Plugin, command : Cmd) -> Plugin

    Plugin::validate

    fn Plugin::validate(self : Plugin) -> Array[String]

    Plugin::with_lifecycle

    fn Plugin::with_lifecycle(self : Plugin, event : LifecycleEvent, command : Cmd) -> Plugin

    PluginCommandContract

    pub struct PluginCommandContract {
    plugin : String
    name : String
    route : String
    mode : CommandMode
    affinity : CommandExecutionAffinity
    permission : Permission
    request_schema : IpcSchema
    response_schema : IpcSchema
    } derive(Eq,
    Debug
    )

    PluginCommandContract::affinity

    PluginCommandContract::from_command

    fn PluginCommandContract::from_command(plugin_name~ : String, command : CommandSpec) -> PluginCommandContract

    PluginCommandContract::mode

    PluginCommandContract::name

    fn PluginCommandContract::name(self : PluginCommandContract) -> String

    PluginCommandContract::permission

    PluginCommandContract::plugin

    fn PluginCommandContract::plugin(self : PluginCommandContract) -> String

    PluginCommandContract::request_schema

    PluginCommandContract::response_schema

    PluginCommandContract::route

    fn PluginCommandContract::route(self : PluginCommandContract) -> String

    PluginCommandContract::to_json

    fn PluginCommandContract::to_json(self : PluginCommandContract) -> String

    PluginContract

    pub struct PluginContract {
    name : String
    commands : Array[PluginCommandContract]
    lifecycle_hooks : Array[PluginLifecycleContract]
    permissions : Array[String]
    problems : Array[String]
    } derive(Eq,
    Debug
    )

    PluginContract::any_thread_count

    fn PluginContract::any_thread_count(self : PluginContract) -> Int

    PluginContract::async_count

    fn PluginContract::async_count(self : PluginContract) -> Int

    PluginContract::command_count

    fn PluginContract::command_count(self : PluginContract) -> Int

    PluginContract::command_count_by_affinity

    fn PluginContract::command_count_by_affinity(self : PluginContract, affinity : CommandExecutionAffinity) -> Int

    PluginContract::command_count_by_mode

    fn PluginContract::command_count_by_mode(self : PluginContract, mode : CommandMode) -> Int

    PluginContract::command_routes

    fn PluginContract::command_routes(self : PluginContract) -> Array[String]

    PluginContract::commands

    PluginContract::event_count

    fn PluginContract::event_count(self : PluginContract) -> Int

    PluginContract::lifecycle_count

    fn PluginContract::lifecycle_count(self : PluginContract) -> Int

    PluginContract::lifecycle_hooks

    PluginContract::main_thread_count

    fn PluginContract::main_thread_count(self : PluginContract) -> Int

    PluginContract::name

    fn PluginContract::name(self : PluginContract) -> String

    PluginContract::ok

    fn PluginContract::ok(self : PluginContract) -> Bool

    PluginContract::permissions

    fn PluginContract::permissions(self : PluginContract) -> Array[String]

    PluginContract::problems

    fn PluginContract::problems(self : PluginContract) -> Array[String]

    PluginContract::stream_count

    fn PluginContract::stream_count(self : PluginContract) -> Int

    PluginContract::sync_count

    fn PluginContract::sync_count(self : PluginContract) -> Int

    PluginContract::to_json

    fn PluginContract::to_json(self : PluginContract) -> String

    PluginContract::worker_thread_count

    fn PluginContract::worker_thread_count(self : PluginContract) -> Int

    PluginLifecycleContract

    pub struct PluginLifecycleContract {
    event : LifecycleEvent
    command_empty : Bool
    } derive(Eq,
    Debug
    )

    PluginLifecycleContract::command_empty

    fn PluginLifecycleContract::command_empty(self : PluginLifecycleContract) -> Bool

    PluginLifecycleContract::event

    PluginLifecycleContract::from_hook

    PluginLifecycleContract::to_json

    fn PluginLifecycleContract::to_json(self : PluginLifecycleContract) -> String

    ProjectManifest

    pub struct ProjectManifest {
    metadata : AppMetadata
    windows : Array[WindowConfig]
    plugins : Array[Plugin]
    capabilities : Array[Capability]
    filesystem_scopes : Array[FileSystemScope]
    startup : Cmd
    lifecycle_hooks : Array[LifecycleHook]
    runtime : RuntimeConfig
    icon_path : String?
    resource_sources : Array[BundleResourceSource]
    runtime_dependency_sources : Array[BundleRuntimeDependencySource]
    signing : SigningConfig
    } derive(Eq,
    Debug
    )

    ProjectManifest::app

    fn ProjectManifest::app(self : ProjectManifest, root : Cell) -> App

    ProjectManifest::bundle_plan

    fn ProjectManifest::bundle_plan(self : ProjectManifest, root : Cell, target? : BundleTarget, registered_routes? : Array[String]) -> Result[BundlePlan, Array[String]]

    ProjectManifest::capabilities

    fn ProjectManifest::capabilities(self : ProjectManifest) -> Array[Capability]

    ProjectManifest::file_system_scopes

    fn ProjectManifest::file_system_scopes(self : ProjectManifest) -> Array[FileSystemScope]

    ProjectManifest::icon_path

    fn ProjectManifest::icon_path(self : ProjectManifest) -> String?

    ProjectManifest::launch_plan

    fn ProjectManifest::launch_plan(self : ProjectManifest, root : Cell) -> Result[LaunchPlan, Array[String]]

    ProjectManifest::lifecycle_hooks

    fn ProjectManifest::lifecycle_hooks(self : ProjectManifest) -> Array[LifecycleHook]

    ProjectManifest::metadata

    ProjectManifest::new

    fn ProjectManifest::new(metadata : AppMetadata, windows? : Array[WindowConfig], plugins? : Array[Plugin], capabilities? : Array[Capability], filesystem_scopes? : Array[FileSystemScope], startup? : Cmd, lifecycle_hooks? : Array[LifecycleHook], runtime? : RuntimeConfig, icon_path? : String, resource_sources? : Array[BundleResourceSource], runtime_dependency_sources? : Array[BundleRuntimeDependencySource], signing? : SigningConfig) -> ProjectManifest

    ProjectManifest::plugins

    ProjectManifest::resource_sources

    ProjectManifest::runtime

    ProjectManifest::runtime_dependency_sources

    fn ProjectManifest::runtime_dependency_sources(self : ProjectManifest) -> Array[BundleRuntimeDependencySource]

    ProjectManifest::runtime_plan

    fn ProjectManifest::runtime_plan(self : ProjectManifest, root : Cell) -> Result[RuntimePlan, Array[String]]

    ProjectManifest::signing

    ProjectManifest::validate

    fn ProjectManifest::validate(self : ProjectManifest) -> Array[String]

    ProjectManifest::windows

    ProjectManifest::with_capability

    fn ProjectManifest::with_capability(self : ProjectManifest, capability : Capability) -> ProjectManifest

    ProjectManifest::with_file_system_scope

    fn ProjectManifest::with_file_system_scope(self : ProjectManifest, scope : FileSystemScope) -> ProjectManifest

    ProjectManifest::with_icon_path

    fn ProjectManifest::with_icon_path(self : ProjectManifest, icon_path : String) -> ProjectManifest

    ProjectManifest::with_lifecycle

    fn ProjectManifest::with_lifecycle(self : ProjectManifest, event : LifecycleEvent, command : Cmd) -> ProjectManifest

    ProjectManifest::with_plugin

    fn ProjectManifest::with_plugin(self : ProjectManifest, plugin : Plugin) -> ProjectManifest

    ProjectManifest::with_resource_source

    fn ProjectManifest::with_resource_source(self : ProjectManifest, source : BundleResourceSource) -> ProjectManifest

    ProjectManifest::with_runtime

    fn ProjectManifest::with_runtime(self : ProjectManifest, runtime : RuntimeConfig) -> ProjectManifest

    ProjectManifest::with_runtime_dependency_source

    fn ProjectManifest::with_runtime_dependency_source(self : ProjectManifest, source : BundleRuntimeDependencySource) -> ProjectManifest

    ProjectManifest::with_signing

    fn ProjectManifest::with_signing(self : ProjectManifest, signing : SigningConfig) -> ProjectManifest

    ProjectManifest::with_startup

    fn ProjectManifest::with_startup(self : ProjectManifest, startup : Cmd) -> ProjectManifest

    ProjectManifest::with_window

    fn ProjectManifest::with_window(self : ProjectManifest, window : WindowConfig) -> ProjectManifest

    ProtocolMapping

    pub struct ProtocolMapping {
    scheme : String
    root : String
    } derive(Eq,
    Debug
    )

    ProtocolMapping::new

    fn ProtocolMapping::new(scheme~ : String, root~ : String) -> ProtocolMapping

    ProtocolMapping::root

    fn ProtocolMapping::root(self : ProtocolMapping) -> String

    ProtocolMapping::scheme

    fn ProtocolMapping::scheme(self : ProtocolMapping) -> String

    RegisteredCommand

    pub struct RegisteredCommand {
    route : String
    permission : Permission
    operation_scope : (InvokeRequest) -> Result[OperationScope, String]?
    handler : RegisteredCommandHandler
    }

    RegisteredCommand::mode

    RegisteredCommand::new

    fn RegisteredCommand::new(route : String, permission? : Permission, operation_scope? : (InvokeRequest) -> Result[OperationScope, String], handler~ : (String) -> Result[String, String]) -> RegisteredCommand

    RegisteredCommand::new_async

    fn RegisteredCommand::new_async(route : String, permission? : Permission, operation_scope? : (InvokeRequest) -> Result[OperationScope, String], handler~ : async (String) -> Result[String, String]) -> RegisteredCommand

    RegisteredCommand::new_stream

    fn RegisteredCommand::new_stream(route : String, permission? : Permission, operation_scope? : (InvokeRequest) -> Result[OperationScope, String], handler~ : (String, StreamSink) -> Result[Unit, String]) -> RegisteredCommand

    RegisteredCommand::permission

    RegisteredCommand::requires_operation_scope

    fn RegisteredCommand::requires_operation_scope(self : RegisteredCommand) -> Bool

    RegisteredCommand::resolve_operation_scope

    fn RegisteredCommand::resolve_operation_scope(self : RegisteredCommand, request : InvokeRequest) -> Result[OperationScope?, String]

    RegisteredCommand::route

    fn RegisteredCommand::route(self : RegisteredCommand) -> String

    RegisteredCommandHandler

    type RegisteredCommandHandler

    ReleaseReadinessReport

    pub struct ReleaseReadinessReport {
    target : BundleTarget
    files : Int
    resources : Int
    artifacts : Int
    runtime_dependencies : Int
    required_runtime_dependencies : Int
    signing_configured : Bool
    signing_prerequisites : Int
    signing_steps : Int
    runtime_webviews : Int
    command_routes : Int
    registered_routes : Int
    native_launch_session_ready : Bool
    native_launch_session_issue : String
    issues : Array[String]
    } derive(Eq,
    Debug
    )

    ReleaseReadinessReport::artifacts

    fn ReleaseReadinessReport::artifacts(self : ReleaseReadinessReport) -> Int

    ReleaseReadinessReport::command_routes

    fn ReleaseReadinessReport::command_routes(self : ReleaseReadinessReport) -> Int

    ReleaseReadinessReport::files

    ReleaseReadinessReport::issues

    ReleaseReadinessReport::native_launch_session_issue

    fn ReleaseReadinessReport::native_launch_session_issue(self : ReleaseReadinessReport) -> String

    ReleaseReadinessReport::native_launch_session_ready

    fn ReleaseReadinessReport::native_launch_session_ready(self : ReleaseReadinessReport) -> Bool

    ReleaseReadinessReport::ready

    ReleaseReadinessReport::registered_routes

    fn ReleaseReadinessReport::registered_routes(self : ReleaseReadinessReport) -> Int

    ReleaseReadinessReport::required_runtime_dependencies

    fn ReleaseReadinessReport::required_runtime_dependencies(self : ReleaseReadinessReport) -> Int

    ReleaseReadinessReport::resources

    fn ReleaseReadinessReport::resources(self : ReleaseReadinessReport) -> Int

    ReleaseReadinessReport::runtime_dependencies

    fn ReleaseReadinessReport::runtime_dependencies(self : ReleaseReadinessReport) -> Int

    ReleaseReadinessReport::runtime_webviews

    fn ReleaseReadinessReport::runtime_webviews(self : ReleaseReadinessReport) -> Int

    ReleaseReadinessReport::signing_configured

    fn ReleaseReadinessReport::signing_configured(self : ReleaseReadinessReport) -> Bool

    ReleaseReadinessReport::signing_prerequisites

    fn ReleaseReadinessReport::signing_prerequisites(self : ReleaseReadinessReport) -> Int

    ReleaseReadinessReport::signing_steps

    fn ReleaseReadinessReport::signing_steps(self : ReleaseReadinessReport) -> Int

    ReleaseReadinessReport::target

    ReleaseReadinessReport::to_json

    fn ReleaseReadinessReport::to_json(self : ReleaseReadinessReport) -> String

    ResolvedSource

    pub struct ResolvedSource {
    kind : ResolvedSourceKind
    url : String
    protocol_mappings : Array[ProtocolMapping]
    virtual_files : Array[VirtualFile]
    local_services : Array[LocalService]
    } derive(Eq,
    Debug
    )

    ResolvedSource::kind

    ResolvedSource::local_services

    fn ResolvedSource::local_services(self : ResolvedSource) -> Array[LocalService]

    ResolvedSource::protocol_mappings

    fn ResolvedSource::protocol_mappings(self : ResolvedSource) -> Array[ProtocolMapping]

    ResolvedSource::url

    fn ResolvedSource::url(self : ResolvedSource) -> String

    ResolvedSource::virtual_files

    fn ResolvedSource::virtual_files(self : ResolvedSource) -> Array[VirtualFile]

    ResolvedSourceKind

    pub(all) enum ResolvedSourceKind {
    ResolvedInlineHtml
    ResolvedLocalPath
    ResolvedPackagedAssets
    ResolvedRemoteUrl
    ResolvedLocalhost
    ResolvedRabbitaMount
    } derive(Eq,
    Debug
    )

    ResolvedWindow

    pub struct ResolvedWindow {
    label : String
    title : String
    width : Int
    height : Int
    resizable : Bool
    title_bar : TitleBarStyle
    source : ResolvedSource
    } derive(Eq,
    Debug
    )

    ResolvedWindow::height

    fn ResolvedWindow::height(self : ResolvedWindow) -> Int

    ResolvedWindow::label

    fn ResolvedWindow::label(self : ResolvedWindow) -> String

    ResolvedWindow::resizable

    fn ResolvedWindow::resizable(self : ResolvedWindow) -> Bool

    ResolvedWindow::source

    ResolvedWindow::title

    fn ResolvedWindow::title(self : ResolvedWindow) -> String

    ResolvedWindow::title_bar

    ResolvedWindow::url

    fn ResolvedWindow::url(self : ResolvedWindow) -> String

    ResolvedWindow::width

    fn ResolvedWindow::width(self : ResolvedWindow) -> Int

    ResourceCleanupReport

    pub struct ResourceCleanupReport {
    closed : Array[ResourceEntry]
    remaining : Array[ResourceEntry]
    } derive(Eq,
    Debug
    )

    ResourceCleanupReport::closed

    ResourceCleanupReport::closed_count

    fn ResourceCleanupReport::closed_count(self : ResourceCleanupReport) -> Int

    ResourceCleanupReport::leak_report

    ResourceCleanupReport::new

    ResourceCleanupReport::ok

    ResourceCleanupReport::remaining

    ResourceCleanupReport::remaining_count

    fn ResourceCleanupReport::remaining_count(self : ResourceCleanupReport) -> Int

    ResourceCleanupReport::to_json

    fn ResourceCleanupReport::to_json(self : ResourceCleanupReport) -> String

    ResourceDescriptor

    pub struct ResourceDescriptor {
    kind : String
    owner : String
    name : String
    metadata : String
    } derive(Eq,
    Debug
    )

    ResourceDescriptor::kind

    fn ResourceDescriptor::kind(self : ResourceDescriptor) -> String

    ResourceDescriptor::metadata

    fn ResourceDescriptor::metadata(self : ResourceDescriptor) -> String

    ResourceDescriptor::name

    fn ResourceDescriptor::name(self : ResourceDescriptor) -> String

    ResourceDescriptor::new

    fn ResourceDescriptor::new(kind~ : String, owner? : String, name? : String, metadata? : String) -> ResourceDescriptor

    ResourceDescriptor::owner

    fn ResourceDescriptor::owner(self : ResourceDescriptor) -> String

    ResourceDescriptor::to_json

    fn ResourceDescriptor::to_json(self : ResourceDescriptor) -> String

    ResourceDescriptor::validate

    fn ResourceDescriptor::validate(self : ResourceDescriptor) -> Array[String]

    ResourceEntry

    pub struct ResourceEntry {
    id : String
    sequence : Int
    kind : String
    owner : String
    name : String
    metadata : String
    closed : Bool
    } derive(Eq,
    Debug
    )

    ResourceEntry::closed

    fn ResourceEntry::closed(self : ResourceEntry) -> Bool

    ResourceEntry::descriptor

    ResourceEntry::handle

    ResourceEntry::id

    fn ResourceEntry::id(self : ResourceEntry) -> String

    ResourceEntry::kind

    fn ResourceEntry::kind(self : ResourceEntry) -> String

    ResourceEntry::metadata

    fn ResourceEntry::metadata(self : ResourceEntry) -> String

    ResourceEntry::name

    fn ResourceEntry::name(self : ResourceEntry) -> String

    ResourceEntry::owner

    fn ResourceEntry::owner(self : ResourceEntry) -> String

    ResourceEntry::sequence

    fn ResourceEntry::sequence(self : ResourceEntry) -> Int

    ResourceEntry::to_json

    fn ResourceEntry::to_json(self : ResourceEntry) -> String

    ResourceHandle

    pub struct ResourceHandle {
    id : String
    kind : String
    owner : String
    name : String
    } derive(Eq,
    Debug
    )

    ResourceHandle::from_entry

    fn ResourceHandle::from_entry(entry : ResourceEntry) -> ResourceHandle

    ResourceHandle::id

    fn ResourceHandle::id(self : ResourceHandle) -> String

    ResourceHandle::kind

    fn ResourceHandle::kind(self : ResourceHandle) -> String

    ResourceHandle::name

    fn ResourceHandle::name(self : ResourceHandle) -> String

    ResourceHandle::new

    fn ResourceHandle::new(id~ : String, kind~ : String, owner? : String, name? : String) -> ResourceHandle

    ResourceHandle::owner

    fn ResourceHandle::owner(self : ResourceHandle) -> String

    ResourceHandle::to_json

    fn ResourceHandle::to_json(self : ResourceHandle) -> String

    ResourceHandle::validate

    fn ResourceHandle::validate(self : ResourceHandle) -> Array[String]

    ResourceLeakReport

    pub struct ResourceLeakReport {
    resources : Array[ResourceEntry]
    } derive(Eq,
    Debug
    )

    ResourceLeakReport::count

    fn ResourceLeakReport::count(self : ResourceLeakReport) -> Int

    ResourceLeakReport::handles

    ResourceLeakReport::kinds

    fn ResourceLeakReport::kinds(self : ResourceLeakReport) -> Array[String]

    ResourceLeakReport::leaked

    fn ResourceLeakReport::leaked(self : ResourceLeakReport) -> Bool

    ResourceLeakReport::messages

    fn ResourceLeakReport::messages(self : ResourceLeakReport) -> Array[String]

    ResourceLeakReport::new

    ResourceLeakReport::ok

    fn ResourceLeakReport::ok(self : ResourceLeakReport) -> Bool

    ResourceLeakReport::owners

    fn ResourceLeakReport::owners(self : ResourceLeakReport) -> Array[String]

    ResourceLeakReport::resources

    ResourceLeakReport::to_json

    fn ResourceLeakReport::to_json(self : ResourceLeakReport) -> String

    ResourceTable

    pub struct ResourceTable {
    next_sequence : Int
    id_prefix : String
    entries : Map[String, ResourceEntry]
    order : Array[String]
    }

    ResourceTable::cleanup_report

    fn ResourceTable::cleanup_report(self : ResourceTable) -> ResourceCleanupReport

    ResourceTable::close

    fn ResourceTable::close(self : ResourceTable, id : String) -> Result[ResourceEntry, String]

    ResourceTable::close_all

    ResourceTable::close_handle

    fn ResourceTable::close_handle(self : ResourceTable, handle : ResourceHandle) -> Result[ResourceEntry, String]

    ResourceTable::close_kind

    fn ResourceTable::close_kind(self : ResourceTable, kind : String) -> Array[ResourceEntry]

    ResourceTable::close_owner

    fn ResourceTable::close_owner(self : ResourceTable, owner : String) -> Array[ResourceEntry]

    ResourceTable::contains

    fn ResourceTable::contains(self : ResourceTable, id : String) -> Bool

    ResourceTable::count

    fn ResourceTable::count(self : ResourceTable) -> Int

    ResourceTable::entries

    ResourceTable::entries_by_kind

    fn ResourceTable::entries_by_kind(self : ResourceTable, kind : String) -> Array[ResourceEntry]

    ResourceTable::entries_by_owner

    fn ResourceTable::entries_by_owner(self : ResourceTable, owner : String) -> Array[ResourceEntry]

    ResourceTable::get

    fn ResourceTable::get(self : ResourceTable, id : String) -> ResourceEntry?

    ResourceTable::handle

    fn ResourceTable::handle(self : ResourceTable, id : String) -> ResourceHandle?

    ResourceTable::handles

    ResourceTable::handles_by_kind

    fn ResourceTable::handles_by_kind(self : ResourceTable, kind : String) -> Array[ResourceHandle]

    ResourceTable::handles_by_owner

    fn ResourceTable::handles_by_owner(self : ResourceTable, owner : String) -> Array[ResourceHandle]

    ResourceTable::id_prefix

    fn ResourceTable::id_prefix(self : ResourceTable) -> String

    ResourceTable::ids

    fn ResourceTable::ids(self : ResourceTable) -> Array[String]

    ResourceTable::is_empty

    fn ResourceTable::is_empty(self : ResourceTable) -> Bool

    ResourceTable::leak_report

    ResourceTable::new

    ResourceTable::open

    fn ResourceTable::open(self : ResourceTable, descriptor : ResourceDescriptor) -> Result[ResourceEntry, Array[String]]

    ResourceTable::to_json

    fn ResourceTable::to_json(self : ResourceTable) -> String

    ResourceTable::with_prefix

    fn ResourceTable::with_prefix(id_prefix : String) -> ResourceTable

    RunReport

    pub struct RunReport {
    target : String
    backend : String
    engine : String
    status : RunStatus
    webviews : Int
    first_window_title : String
    first_window_url : String
    load_url : String
    bridge_url : String
    local_services : Int
    service_supervisor : Bool
    service_start_order : Array[String]
    startup_operations : Int
    lifecycle_steps : Int
    executable_operations : Int
    executed_operations : Int
    skipped_operations : Int
    failed_operations : Int
    first_execution_failure : String
    bridge_sync_routes : Int
    bridge_async_routes : Int
    target_can_launch : Bool
    target_launch_blocker : String
    } derive(Eq,
    Debug
    )

    RunReport::backend

    fn RunReport::backend(self : RunReport) -> String

    RunReport::bridge_async_routes

    fn RunReport::bridge_async_routes(self : RunReport) -> Int

    RunReport::bridge_sync_routes

    fn RunReport::bridge_sync_routes(self : RunReport) -> Int

    RunReport::bridge_url

    fn RunReport::bridge_url(self : RunReport) -> String

    RunReport::engine

    fn RunReport::engine(self : RunReport) -> String

    RunReport::executable_operations

    fn RunReport::executable_operations(self : RunReport) -> Int

    RunReport::executed_operations

    fn RunReport::executed_operations(self : RunReport) -> Int

    RunReport::failed_operations

    fn RunReport::failed_operations(self : RunReport) -> Int

    RunReport::first_execution_failure

    fn RunReport::first_execution_failure(self : RunReport) -> String

    RunReport::first_window_title

    fn RunReport::first_window_title(self : RunReport) -> String

    RunReport::first_window_url

    fn RunReport::first_window_url(self : RunReport) -> String

    RunReport::lifecycle_steps

    fn RunReport::lifecycle_steps(self : RunReport) -> Int

    RunReport::load_url

    fn RunReport::load_url(self : RunReport) -> String

    RunReport::local_services

    fn RunReport::local_services(self : RunReport) -> Int

    RunReport::new

    fn RunReport::new(target~ : String, backend~ : String, engine~ : String, status~ : RunStatus, webviews~ : Int, first_window_title? : String, first_window_url? : String, load_url? : String, bridge_url? : String, local_services? : Int, service_supervisor? : Bool, service_start_order? : Array[String], startup_operations? : Int, lifecycle_steps? : Int, executable_operations? : Int, executed_operations? : Int, skipped_operations? : Int, failed_operations? : Int, first_execution_failure? : String, bridge_sync_routes? : Int, bridge_async_routes? : Int, target_can_launch? : Bool, target_launch_blocker? : String) -> RunReport

    RunReport::service_start_order

    fn RunReport::service_start_order(self : RunReport) -> Array[String]

    RunReport::service_supervisor

    fn RunReport::service_supervisor(self : RunReport) -> Bool

    RunReport::skipped_operations

    fn RunReport::skipped_operations(self : RunReport) -> Int

    RunReport::startup_operations

    fn RunReport::startup_operations(self : RunReport) -> Int

    RunReport::status

    fn RunReport::status(self : RunReport) -> RunStatus

    RunReport::target

    fn RunReport::target(self : RunReport) -> String

    RunReport::target_can_launch

    fn RunReport::target_can_launch(self : RunReport) -> Bool

    RunReport::target_launch_blocker

    fn RunReport::target_launch_blocker(self : RunReport) -> String

    RunReport::to_json

    fn RunReport::to_json(self : RunReport) -> String

    RunReport::webviews

    fn RunReport::webviews(self : RunReport) -> Int

    RunStatus

    pub(all) enum RunStatus {
    RunPrepared
    RunLaunched
    RunFailed(String)
    RunUnsupported(String)
    } derive(Eq,
    Debug
    )

    RunStatus::message

    fn RunStatus::message(self : RunStatus) -> String

    RunStatus::name

    fn RunStatus::name(self : RunStatus) -> String

    RunStatus::to_json

    fn RunStatus::to_json(self : RunStatus) -> String

    RuntimeAction

    pub(all) enum RuntimeAction {
    RuntimeEffect(String)
    RuntimeEmit(EventTarget, Event)
    RuntimeNavigate(String, ResolvedSource)
    } derive(Eq,
    Debug
    )

    RuntimeAction::to_json

    fn RuntimeAction::to_json(self : RuntimeAction) -> String

    RuntimeAudit

    pub struct RuntimeAudit {
    command_manifest : CommandManifest
    permission_manifest : PermissionManifest
    registered_routes : Array[String]
    route_exposures : Array[RuntimeRouteExposure]
    findings : Array[RuntimeAuditFinding]
    } derive(Eq,
    Debug
    )

    RuntimeAudit::command_manifest

    fn RuntimeAudit::command_manifest(self : RuntimeAudit) -> CommandManifest

    RuntimeAudit::error_count

    fn RuntimeAudit::error_count(self : RuntimeAudit) -> Int

    RuntimeAudit::errors

    RuntimeAudit::exposed_routes

    fn RuntimeAudit::exposed_routes(self : RuntimeAudit) -> Array[String]

    RuntimeAudit::findings

    RuntimeAudit::findings_by_severity

    fn RuntimeAudit::findings_by_severity(self : RuntimeAudit, severity : RuntimeAuditSeverity) -> Array[RuntimeAuditFinding]

    RuntimeAudit::from_plan

    fn RuntimeAudit::from_plan(plan : RuntimePlan) -> RuntimeAudit

    RuntimeAudit::from_registered_routes

    fn RuntimeAudit::from_registered_routes(plan : RuntimePlan, registered_routes : Array[String]) -> RuntimeAudit

    RuntimeAudit::info_count

    fn RuntimeAudit::info_count(self : RuntimeAudit) -> Int

    RuntimeAudit::infos

    RuntimeAudit::ok

    fn RuntimeAudit::ok(self : RuntimeAudit) -> Bool

    RuntimeAudit::permission_manifest

    fn RuntimeAudit::permission_manifest(self : RuntimeAudit) -> PermissionManifest

    RuntimeAudit::problems

    fn RuntimeAudit::problems(self : RuntimeAudit) -> Array[String]

    RuntimeAudit::registered_routes

    fn RuntimeAudit::registered_routes(self : RuntimeAudit) -> Array[String]

    RuntimeAudit::route_exposures

    fn RuntimeAudit::route_exposures(self : RuntimeAudit) -> Array[RuntimeRouteExposure]

    RuntimeAudit::to_json

    fn RuntimeAudit::to_json(self : RuntimeAudit) -> String

    RuntimeAudit::warning_count

    fn RuntimeAudit::warning_count(self : RuntimeAudit) -> Int

    RuntimeAudit::warnings

    RuntimeAuditFinding

    pub struct RuntimeAuditFinding {
    severity : RuntimeAuditSeverity
    kind : RuntimeAuditKind
    route : String
    message : String
    } derive(Eq,
    Debug
    )

    RuntimeAuditFinding::kind

    RuntimeAuditFinding::message

    fn RuntimeAuditFinding::message(self : RuntimeAuditFinding) -> String

    RuntimeAuditFinding::new

    fn RuntimeAuditFinding::new(severity~ : RuntimeAuditSeverity, kind~ : RuntimeAuditKind, route~ : String, message~ : String) -> RuntimeAuditFinding

    RuntimeAuditFinding::route

    fn RuntimeAuditFinding::route(self : RuntimeAuditFinding) -> String

    RuntimeAuditFinding::severity

    RuntimeAuditFinding::to_json

    fn RuntimeAuditFinding::to_json(self : RuntimeAuditFinding) -> String

    RuntimeAuditKind

    pub(all) enum RuntimeAuditKind {
    RuntimeAuditDeniedCommand
    RuntimeAuditMissingHandler
    RuntimeAuditUndeclaredHandler
    RuntimeAuditOpenOrigin
    } derive(Eq,
    Debug
    )

    RuntimeAuditKind::name

    fn RuntimeAuditKind::name(self : RuntimeAuditKind) -> String

    RuntimeAuditSeverity

    pub(all) enum RuntimeAuditSeverity {
    RuntimeAuditInfo
    RuntimeAuditWarning
    RuntimeAuditError
    } derive(Eq,
    Debug
    )

    RuntimeAuditSeverity::name

    fn RuntimeAuditSeverity::name(self : RuntimeAuditSeverity) -> String

    RuntimeBackend

    pub(all) enum RuntimeBackend {
    SystemWebView
    Headless
    } derive(Eq,
    Debug
    )

    RuntimeBackend::name

    fn RuntimeBackend::name(self : RuntimeBackend) -> String

    RuntimeCapabilityGrant

    pub struct RuntimeCapabilityGrant {
    name : String
    windows : Array[String]
    origins : Array[String]
    platforms : Array[String]
    permissions : Array[String]
    operation_scopes : Array[OperationScope]
    } derive(Eq,
    Debug
    )

    RuntimeCapabilityGrant::name

    RuntimeCapabilityGrant::operation_scopes

    RuntimeCapabilityGrant::origins

    fn RuntimeCapabilityGrant::origins(self : RuntimeCapabilityGrant) -> Array[String]

    RuntimeCapabilityGrant::permissions

    fn RuntimeCapabilityGrant::permissions(self : RuntimeCapabilityGrant) -> Array[String]

    RuntimeCapabilityGrant::platforms

    fn RuntimeCapabilityGrant::platforms(self : RuntimeCapabilityGrant) -> Array[String]

    RuntimeCapabilityGrant::windows

    fn RuntimeCapabilityGrant::windows(self : RuntimeCapabilityGrant) -> Array[String]

    RuntimeConfig

    pub struct RuntimeConfig {
    backend : RuntimeBackend
    devtools : Bool
    asset_protocol : String
    platform : String
    } derive(Eq,
    Debug
    )

    RuntimeConfig::headless

    fn RuntimeConfig::headless(platform? : String) -> RuntimeConfig

    RuntimeConfig::platform

    fn RuntimeConfig::platform(self : RuntimeConfig) -> String

    RuntimeConfig::system_webview

    fn RuntimeConfig::system_webview(devtools? : Bool, asset_protocol? : String, platform? : String) -> RuntimeConfig

    RuntimeConfig::validate

    fn RuntimeConfig::validate(self : RuntimeConfig) -> Array[String]

    RuntimeInvokeAuthorization

    pub struct RuntimeInvokeAuthorization {
    kind : RuntimeInvokeAuthorizationKind
    route : String
    window_label : String
    origin : String
    platform : String
    permission : Permission?
    registered : Bool
    capability : String
    reason : String
    } derive(Eq,
    Debug
    )

    RuntimeInvokeAuthorization::allowed

    RuntimeInvokeAuthorization::capability

    RuntimeInvokeAuthorization::origin

    RuntimeInvokeAuthorization::permission

    RuntimeInvokeAuthorization::platform

    RuntimeInvokeAuthorization::reason

    RuntimeInvokeAuthorization::registered

    RuntimeInvokeAuthorization::route

    RuntimeInvokeAuthorization::to_json

    RuntimeInvokeAuthorization::to_response

    RuntimeInvokeAuthorization::window_label

    fn RuntimeInvokeAuthorization::window_label(self : RuntimeInvokeAuthorization) -> String

    RuntimeInvokeAuthorizationKind

    pub(all) enum RuntimeInvokeAuthorizationKind {
    RuntimeInvokeAuthorized
    RuntimeInvokeInvalidRequest
    RuntimeInvokeUnknownCommand
    RuntimeInvokeUnregisteredCommand
    RuntimeInvokePermissionDenied
    } derive(Eq,
    Debug
    )

    RuntimeInvokeAuthorizationKind::name

    RuntimeLaunchAsset

    pub struct RuntimeLaunchAsset {
    url : String
    mime_type : String
    body : RuntimeLaunchAssetBody
    } derive(Eq,
    Debug
    )

    RuntimeLaunchAsset::body

    RuntimeLaunchAsset::mime_type

    fn RuntimeLaunchAsset::mime_type(self : RuntimeLaunchAsset) -> String

    RuntimeLaunchAsset::url

    fn RuntimeLaunchAsset::url(self : RuntimeLaunchAsset) -> String

    RuntimeLaunchAssetBody

    pub(all) enum RuntimeLaunchAssetBody {
    LaunchVirtualContent(String)
    LaunchLocalFile(String)
    LaunchPackagedFile(String)
    } derive(Eq,
    Debug
    )

    RuntimeLaunchManifest

    pub struct RuntimeLaunchManifest {
    backend : String
    platform : String
    asset_protocol : String
    devtools : Bool
    bridge_url : String
    webviews : Array[RuntimeWebViewBoot]
    protocol_mappings : Array[RuntimeProtocolBinding]
    virtual_files : Array[RuntimeVirtualAsset]
    local_services : Array[LocalService]
    filesystem_scopes : Array[FileSystemScope]
    capabilities : Array[RuntimeCapabilityGrant]
    startup_actions : Array[RuntimeAction]
    lifecycle_hooks : Array[RuntimeLifecycleHook]
    command_manifest : CommandManifest
    permission_manifest : PermissionManifest
    declared_routes : Array[String]
    command_routes : Array[String]
    registered_routes : Array[String]
    } derive(Eq,
    Debug
    )

    RuntimeLaunchManifest::asset_protocol

    fn RuntimeLaunchManifest::asset_protocol(self : RuntimeLaunchManifest) -> String

    RuntimeLaunchManifest::backend

    fn RuntimeLaunchManifest::backend(self : RuntimeLaunchManifest) -> String

    RuntimeLaunchManifest::bridge_url

    fn RuntimeLaunchManifest::bridge_url(self : RuntimeLaunchManifest) -> String

    RuntimeLaunchManifest::capabilities

    RuntimeLaunchManifest::command_manifest

    RuntimeLaunchManifest::command_routes

    fn RuntimeLaunchManifest::command_routes(self : RuntimeLaunchManifest) -> Array[String]

    RuntimeLaunchManifest::declared_routes

    fn RuntimeLaunchManifest::declared_routes(self : RuntimeLaunchManifest) -> Array[String]

    RuntimeLaunchManifest::devtools

    fn RuntimeLaunchManifest::devtools(self : RuntimeLaunchManifest) -> Bool

    RuntimeLaunchManifest::file_system_scopes

    RuntimeLaunchManifest::lifecycle_hooks

    RuntimeLaunchManifest::local_services

    RuntimeLaunchManifest::permission_manifest

    RuntimeLaunchManifest::platform

    fn RuntimeLaunchManifest::platform(self : RuntimeLaunchManifest) -> String

    RuntimeLaunchManifest::protocol_mappings

    RuntimeLaunchManifest::registered_routes

    fn RuntimeLaunchManifest::registered_routes(self : RuntimeLaunchManifest) -> Array[String]

    RuntimeLaunchManifest::resolve_asset

    fn RuntimeLaunchManifest::resolve_asset(self : RuntimeLaunchManifest, url : String) -> Result[RuntimeLaunchAsset, String]

    RuntimeLaunchManifest::startup_actions

    RuntimeLaunchManifest::to_json

    fn RuntimeLaunchManifest::to_json(self : RuntimeLaunchManifest) -> String

    RuntimeLaunchManifest::virtual_files

    RuntimeLaunchManifest::webviews

    RuntimeLifecycleHook

    pub struct RuntimeLifecycleHook {
    event : LifecycleEvent
    actions : Array[RuntimeAction]
    } derive(Eq,
    Debug
    )

    RuntimeLifecycleHook::actions

    RuntimeLifecycleHook::event

    RuntimeLifecycleHook::new

    RuntimeLifecycleHook::to_json

    fn RuntimeLifecycleHook::to_json(self : RuntimeLifecycleHook) -> String

    RuntimePlan

    pub struct RuntimePlan {
    app_metadata : AppMetadata?
    launch : LaunchPlan
    backend : RuntimeBackend
    devtools : Bool
    asset_protocol : String
    platform : String
    command_routes : Array[String]
    windows : Array[ResolvedWindow]
    filesystem_scopes : Array[FileSystemScope]
    } derive(Eq,
    Debug
    )

    RuntimePlan::actions

    fn RuntimePlan::actions(self : RuntimePlan, command : Cmd) -> Result[Array[RuntimeAction], Array[String]]

    RuntimePlan::app_metadata

    fn RuntimePlan::app_metadata(self : RuntimePlan) -> AppMetadata?

    RuntimePlan::asset_protocol

    fn RuntimePlan::asset_protocol(self : RuntimePlan) -> String

    RuntimePlan::audit

    fn RuntimePlan::audit(self : RuntimePlan) -> RuntimeAudit

    RuntimePlan::audit_with_registered_routes

    fn RuntimePlan::audit_with_registered_routes(self : RuntimePlan, registered_routes : Array[String]) -> RuntimeAudit

    RuntimePlan::authorize_invoke

    fn RuntimePlan::authorize_invoke(self : RuntimePlan, request : InvokeRequest, registered_routes? : Array[String], check_registered? : Bool) -> RuntimeInvokeAuthorization

    RuntimePlan::backend

    fn RuntimePlan::backend(self : RuntimePlan) -> RuntimeBackend

    RuntimePlan::bridge_script

    fn RuntimePlan::bridge_script(self : RuntimePlan, config? : BridgeConfig) -> Result[BridgeScript, Array[String]]

    RuntimePlan::capabilities

    fn RuntimePlan::capabilities(self : RuntimePlan) -> Array[Capability]

    RuntimePlan::capability_count

    fn RuntimePlan::capability_count(self : RuntimePlan) -> Int

    RuntimePlan::capability_report

    fn RuntimePlan::capability_report(self : RuntimePlan) -> CapabilityCompileReport

    RuntimePlan::command_manifest

    fn RuntimePlan::command_manifest(self : RuntimePlan) -> CommandManifest

    RuntimePlan::command_permission

    fn RuntimePlan::command_permission(self : RuntimePlan, route : String) -> Permission?

    RuntimePlan::command_routes

    fn RuntimePlan::command_routes(self : RuntimePlan) -> Array[String]

    RuntimePlan::command_routes_by_mode

    fn RuntimePlan::command_routes_by_mode(self : RuntimePlan, mode : CommandMode) -> Array[String]

    RuntimePlan::devtools

    fn RuntimePlan::devtools(self : RuntimePlan) -> Bool

    RuntimePlan::file_system_scopes

    fn RuntimePlan::file_system_scopes(self : RuntimePlan) -> Array[FileSystemScope]

    RuntimePlan::launch_manifest

    fn RuntimePlan::launch_manifest(self : RuntimePlan, registered_routes? : Array[String], restrict_registered? : Bool) -> Result[RuntimeLaunchManifest, Array[String]]

    RuntimePlan::lifecycle_actions

    fn RuntimePlan::lifecycle_actions(self : RuntimePlan, event : LifecycleEvent) -> Result[Array[RuntimeAction], Array[String]]

    RuntimePlan::lifecycle_hooks

    fn RuntimePlan::lifecycle_hooks(self : RuntimePlan) -> Result[Array[RuntimeLifecycleHook], Array[String]]

    RuntimePlan::permission_manifest

    fn RuntimePlan::permission_manifest(self : RuntimePlan) -> PermissionManifest

    RuntimePlan::platform

    fn RuntimePlan::platform(self : RuntimePlan) -> String

    RuntimePlan::plugin_count

    fn RuntimePlan::plugin_count(self : RuntimePlan) -> Int

    RuntimePlan::security_profile

    fn RuntimePlan::security_profile(self : RuntimePlan, registered_routes? : Array[String], check_handlers? : Bool) -> SecurityProfile

    RuntimePlan::startup_actions

    fn RuntimePlan::startup_actions(self : RuntimePlan) -> Result[Array[RuntimeAction], Array[String]]

    RuntimePlan::window_command_routes

    fn RuntimePlan::window_command_routes(self : RuntimePlan, window_label : String) -> Array[String]

    RuntimePlan::window_count

    fn RuntimePlan::window_count(self : RuntimePlan) -> Int

    RuntimePlan::windows

    RuntimeProtocolBinding

    pub struct RuntimeProtocolBinding {
    window_label : String
    scheme : String
    root : String
    } derive(Eq,
    Debug
    )

    RuntimeProtocolBinding::root

    RuntimeProtocolBinding::scheme

    fn RuntimeProtocolBinding::scheme(self : RuntimeProtocolBinding) -> String

    RuntimeProtocolBinding::window_label

    fn RuntimeProtocolBinding::window_label(self : RuntimeProtocolBinding) -> String

    RuntimeRouteExposure

    pub struct RuntimeRouteExposure {
    route : String
    mode : CommandMode
    registered : Bool
    exposed : Bool
    windows : Array[String]
    reasons : Array[String]
    } derive(Eq,
    Debug
    )

    RuntimeRouteExposure::exposed

    fn RuntimeRouteExposure::exposed(self : RuntimeRouteExposure) -> Bool

    RuntimeRouteExposure::mode

    RuntimeRouteExposure::reasons

    fn RuntimeRouteExposure::reasons(self : RuntimeRouteExposure) -> Array[String]

    RuntimeRouteExposure::registered

    fn RuntimeRouteExposure::registered(self : RuntimeRouteExposure) -> Bool

    RuntimeRouteExposure::route

    fn RuntimeRouteExposure::route(self : RuntimeRouteExposure) -> String

    RuntimeRouteExposure::to_json

    fn RuntimeRouteExposure::to_json(self : RuntimeRouteExposure) -> String

    RuntimeRouteExposure::windows

    fn RuntimeRouteExposure::windows(self : RuntimeRouteExposure) -> Array[String]

    RuntimeVirtualAsset

    pub struct RuntimeVirtualAsset {
    window_label : String
    path : String
    mime_type : String
    content : String
    } derive(Eq,
    Debug
    )

    RuntimeVirtualAsset::content

    fn RuntimeVirtualAsset::content(self : RuntimeVirtualAsset) -> String

    RuntimeVirtualAsset::mime_type

    fn RuntimeVirtualAsset::mime_type(self : RuntimeVirtualAsset) -> String

    RuntimeVirtualAsset::path

    fn RuntimeVirtualAsset::path(self : RuntimeVirtualAsset) -> String

    RuntimeVirtualAsset::window_label

    fn RuntimeVirtualAsset::window_label(self : RuntimeVirtualAsset) -> String

    RuntimeWebViewBoot

    pub struct RuntimeWebViewBoot {
    label : String
    title : String
    url : String
    width : Int
    height : Int
    resizable : Bool
    title_bar : TitleBarStyle
    devtools : Bool
    asset_protocol : String
    bridge_global_name : String
    native_hook : String
    event_dispatch_hook : String
    allowed_routes : Array[String]
    initialization_scripts : Array[String]
    } derive(Eq,
    Debug
    )

    RuntimeWebViewBoot::allowed_routes

    fn RuntimeWebViewBoot::allowed_routes(self : RuntimeWebViewBoot) -> Array[String]

    RuntimeWebViewBoot::asset_protocol

    fn RuntimeWebViewBoot::asset_protocol(self : RuntimeWebViewBoot) -> String

    RuntimeWebViewBoot::bridge_global_name

    fn RuntimeWebViewBoot::bridge_global_name(self : RuntimeWebViewBoot) -> String

    RuntimeWebViewBoot::devtools

    fn RuntimeWebViewBoot::devtools(self : RuntimeWebViewBoot) -> Bool

    RuntimeWebViewBoot::event_dispatch_hook

    fn RuntimeWebViewBoot::event_dispatch_hook(self : RuntimeWebViewBoot) -> String

    RuntimeWebViewBoot::height

    fn RuntimeWebViewBoot::height(self : RuntimeWebViewBoot) -> Int

    RuntimeWebViewBoot::initialization_scripts

    fn RuntimeWebViewBoot::initialization_scripts(self : RuntimeWebViewBoot) -> Array[String]

    RuntimeWebViewBoot::label

    fn RuntimeWebViewBoot::label(self : RuntimeWebViewBoot) -> String

    RuntimeWebViewBoot::native_hook

    fn RuntimeWebViewBoot::native_hook(self : RuntimeWebViewBoot) -> String

    RuntimeWebViewBoot::resizable

    fn RuntimeWebViewBoot::resizable(self : RuntimeWebViewBoot) -> Bool

    RuntimeWebViewBoot::title

    fn RuntimeWebViewBoot::title(self : RuntimeWebViewBoot) -> String

    RuntimeWebViewBoot::title_bar

    RuntimeWebViewBoot::url

    fn RuntimeWebViewBoot::url(self : RuntimeWebViewBoot) -> String

    RuntimeWebViewBoot::width

    fn RuntimeWebViewBoot::width(self : RuntimeWebViewBoot) -> Int

    SecurityProfile

    pub struct SecurityProfile {
    command_manifest : CommandManifest
    permission_manifest : PermissionManifest
    capability_policy : CapabilityPolicy
    capability_report : CapabilityCompileReport
    runtime_audit : RuntimeAudit
    registered_routes : Array[String]
    check_handlers : Bool
    platform : String
    } derive(Eq,
    Debug
    )

    SecurityProfile::allowed_origins

    fn SecurityProfile::allowed_origins(self : SecurityProfile, window_label~ : String, permission~ : Permission) -> Array[String]

    SecurityProfile::allows

    fn SecurityProfile::allows(self : SecurityProfile, window_label~ : String, permission~ : Permission, origin? : String) -> Bool

    SecurityProfile::allows_operation

    fn SecurityProfile::allows_operation(self : SecurityProfile, window_label~ : String, permission~ : Permission, scope~ : OperationScope, origin? : String) -> Bool

    SecurityProfile::authorize_invoke

    fn SecurityProfile::authorize_invoke(self : SecurityProfile, request : InvokeRequest) -> RuntimeInvokeAuthorization

    SecurityProfile::authorize_operation

    fn SecurityProfile::authorize_operation(self : SecurityProfile, request : InvokeRequest, scope : OperationScope) -> RuntimeInvokeAuthorization

    SecurityProfile::capability_policy

    fn SecurityProfile::capability_policy(self : SecurityProfile) -> CapabilityPolicy

    SecurityProfile::capability_report

    SecurityProfile::check_handlers

    fn SecurityProfile::check_handlers(self : SecurityProfile) -> Bool

    SecurityProfile::command_manifest

    fn SecurityProfile::command_manifest(self : SecurityProfile) -> CommandManifest

    SecurityProfile::denied_routes

    fn SecurityProfile::denied_routes(self : SecurityProfile) -> Array[String]

    SecurityProfile::error_count

    fn SecurityProfile::error_count(self : SecurityProfile) -> Int

    SecurityProfile::evaluate

    fn SecurityProfile::evaluate(self : SecurityProfile, window_label~ : String, permission~ : Permission, origin? : String) -> CapabilityDecision

    SecurityProfile::evaluate_operation

    fn SecurityProfile::evaluate_operation(self : SecurityProfile, window_label~ : String, permission~ : Permission, scope~ : OperationScope, origin? : String) -> CapabilityDecision

    SecurityProfile::exposed_routes

    fn SecurityProfile::exposed_routes(self : SecurityProfile) -> Array[String]

    SecurityProfile::from_plan

    fn SecurityProfile::from_plan(plan : RuntimePlan, registered_routes? : Array[String], check_handlers? : Bool) -> SecurityProfile

    SecurityProfile::info_count

    fn SecurityProfile::info_count(self : SecurityProfile) -> Int

    SecurityProfile::ok

    fn SecurityProfile::ok(self : SecurityProfile) -> Bool

    SecurityProfile::permission_manifest

    fn SecurityProfile::permission_manifest(self : SecurityProfile) -> PermissionManifest

    SecurityProfile::platform

    fn SecurityProfile::platform(self : SecurityProfile) -> String

    SecurityProfile::problems

    fn SecurityProfile::problems(self : SecurityProfile) -> Array[String]

    SecurityProfile::registered_routes

    fn SecurityProfile::registered_routes(self : SecurityProfile) -> Array[String]

    SecurityProfile::runtime_audit

    fn SecurityProfile::runtime_audit(self : SecurityProfile) -> RuntimeAudit

    SecurityProfile::to_json

    fn SecurityProfile::to_json(self : SecurityProfile) -> String

    SecurityProfile::unused_permissions

    fn SecurityProfile::unused_permissions(self : SecurityProfile) -> Array[String]

    SecurityProfile::warning_count

    fn SecurityProfile::warning_count(self : SecurityProfile) -> Int

    SigningConfig

    pub struct SigningConfig {
    identity : String?
    team_id : String?
    entitlements_path : String?
    notarization_profile : String?
    timestamp_url : String?
    } derive(Eq,
    Debug
    )

    SigningConfig::configured

    fn SigningConfig::configured(self : SigningConfig) -> Bool

    SigningConfig::entitlements_path

    fn SigningConfig::entitlements_path(self : SigningConfig) -> String?

    SigningConfig::identity

    fn SigningConfig::identity(self : SigningConfig) -> String?

    SigningConfig::new

    fn SigningConfig::new(identity? : String, team_id? : String, entitlements_path? : String, notarization_profile? : String, timestamp_url? : String) -> SigningConfig

    SigningConfig::notarization_profile

    fn SigningConfig::notarization_profile(self : SigningConfig) -> String?

    SigningConfig::team_id

    fn SigningConfig::team_id(self : SigningConfig) -> String?

    SigningConfig::timestamp_url

    fn SigningConfig::timestamp_url(self : SigningConfig) -> String?

    SigningConfig::to_json

    fn SigningConfig::to_json(self : SigningConfig) -> String

    SigningConfig::validate

    fn SigningConfig::validate(self : SigningConfig) -> Array[String]

    SigningPrerequisite

    pub struct SigningPrerequisite {
    kind : SigningPrerequisiteKind
    name : String
    description : String
    } derive(Eq,
    Debug
    )

    SigningPrerequisite::description

    fn SigningPrerequisite::description(self : SigningPrerequisite) -> String

    SigningPrerequisite::kind

    SigningPrerequisite::name

    fn SigningPrerequisite::name(self : SigningPrerequisite) -> String

    SigningPrerequisite::new

    fn SigningPrerequisite::new(kind~ : SigningPrerequisiteKind, name~ : String, description~ : String) -> SigningPrerequisite

    SigningPrerequisite::to_json

    fn SigningPrerequisite::to_json(self : SigningPrerequisite) -> String

    SigningPrerequisiteKind

    pub(all) enum SigningPrerequisiteKind {
    SigningIdentity
    SigningTool
    NotarizationTool
    RuntimeDependency
    PackageValidator
    } derive(Eq,
    Debug
    )

    SigningPrerequisiteKind::name

    SigningStep

    pub struct SigningStep {
    name : String
    tool : String
    arguments : Array[String]
    description : String
    } derive(Eq,
    Debug
    )

    SigningStep::arguments

    fn SigningStep::arguments(self : SigningStep) -> Array[String]

    SigningStep::description

    fn SigningStep::description(self : SigningStep) -> String

    SigningStep::name

    fn SigningStep::name(self : SigningStep) -> String

    SigningStep::new

    fn SigningStep::new(name~ : String, tool~ : String, arguments~ : Array[String], description~ : String) -> SigningStep

    SigningStep::to_json

    fn SigningStep::to_json(self : SigningStep) -> String

    SigningStep::tool

    fn SigningStep::tool(self : SigningStep) -> String

    Source

    pub(all) enum Source {
    InlineHtml(String)
    LocalPath(String)
    PackagedAssets(String)
    RemoteUrl(String)
    Localhost(LocalhostSource)
    RabbitaCell(Cell)
    } derive(Eq,
    Debug
    )

    Source::html

    fn Source::html(content : String) -> Source

    Source::is_empty

    fn Source::is_empty(self : Source) -> Bool

    Source::local_path

    fn Source::local_path(path : String) -> Source

    Source::localhost

    fn Source::localhost(port~ : Int, host? : String, path? : String, readiness_path? : String, command? : Array[String]) -> Source

    Source::localhost_source

    fn Source::localhost_source(source : LocalhostSource) -> Source

    Source::packaged

    fn Source::packaged(path : String) -> Source

    Source::rabbita

    fn Source::rabbita(cell : Cell) -> Source

    Source::resolve

    fn Source::resolve(self : Source, window_label~ : String, asset_protocol? : String) -> Result[ResolvedSource, String]

    Source::url

    fn Source::url(url : String) -> Source

    StreamSink

    pub struct StreamSink {
    route : String
    channel_id : String
    channels : ChannelTable
    }

    StreamSink::cancel

    fn StreamSink::cancel(self : StreamSink) -> Result[ChannelMessage, String]

    StreamSink::channel

    fn StreamSink::channel(self : StreamSink) -> Channel?

    StreamSink::channel_id

    fn StreamSink::channel_id(self : StreamSink) -> String

    StreamSink::closed

    fn StreamSink::closed(self : StreamSink) -> Bool

    StreamSink::end

    fn StreamSink::end(self : StreamSink) -> Result[ChannelMessage, String]

    StreamSink::fail

    fn StreamSink::fail(self : StreamSink, message : String) -> Result[ChannelMessage, String]

    StreamSink::handle

    fn StreamSink::handle(self : StreamSink) -> ResourceHandle?

    StreamSink::route

    fn StreamSink::route(self : StreamSink) -> String

    StreamSink::send

    fn StreamSink::send(self : StreamSink, payload : String) -> Result[ChannelMessage, String]

    StreamSink::to_json

    fn StreamSink::to_json(self : StreamSink) -> String

    TitleBarStyle

    pub(all) enum TitleBarStyle {
    Native
    Transparent
    Hidden
    } derive(Eq,
    Debug
    )

    UpdateArtifactTrust

    pub struct UpdateArtifactTrust {
    path : String
    sha256 : String
    signature : String?
    } derive(Eq,
    Debug
    )

    UpdateArtifactTrust::new

    fn UpdateArtifactTrust::new(path~ : String, sha256~ : String, signature? : String) -> UpdateArtifactTrust

    UpdateArtifactTrust::path

    fn UpdateArtifactTrust::path(self : UpdateArtifactTrust) -> String

    UpdateArtifactTrust::sha256

    fn UpdateArtifactTrust::sha256(self : UpdateArtifactTrust) -> String

    UpdateArtifactTrust::signature

    fn UpdateArtifactTrust::signature(self : UpdateArtifactTrust) -> String?

    UpdateArtifactTrust::validate

    fn UpdateArtifactTrust::validate(self : UpdateArtifactTrust) -> Array[String]

    UpdateManifest

    pub struct UpdateManifest {
    identifier : String
    product_name : String
    version : String
    channel : String
    public_key : String?
    artifacts : Array[UpdateManifestArtifact]
    } derive(Eq,
    Debug
    )

    UpdateManifest::artifacts

    UpdateManifest::channel

    fn UpdateManifest::channel(self : UpdateManifest) -> String

    UpdateManifest::identifier

    fn UpdateManifest::identifier(self : UpdateManifest) -> String

    UpdateManifest::new

    fn UpdateManifest::new(identifier~ : String, product_name~ : String, version~ : String, channel? : String, public_key? : String, artifacts~ : Array[UpdateManifestArtifact]) -> UpdateManifest

    UpdateManifest::parse

    fn UpdateManifest::parse(text : String) -> Result[UpdateManifest, Array[String]]

    UpdateManifest::product_name

    fn UpdateManifest::product_name(self : UpdateManifest) -> String

    UpdateManifest::public_key

    fn UpdateManifest::public_key(self : UpdateManifest) -> String?

    UpdateManifest::to_json

    fn UpdateManifest::to_json(self : UpdateManifest) -> String

    UpdateManifest::trust_report

    fn UpdateManifest::trust_report(self : UpdateManifest) -> UpdateTrustReport

    UpdateManifest::validate

    fn UpdateManifest::validate(self : UpdateManifest) -> Array[String]

    UpdateManifest::version

    fn UpdateManifest::version(self : UpdateManifest) -> String

    UpdateManifestArtifact

    pub struct UpdateManifestArtifact {
    target : BundleTarget
    kind : BundleArtifactKind
    path : String
    url : String
    sha256 : String
    signature : String?
    } derive(Eq,
    Debug
    )

    UpdateManifestArtifact::kind

    UpdateManifestArtifact::new

    fn UpdateManifestArtifact::new(target~ : BundleTarget, kind~ : BundleArtifactKind, path~ : String, url~ : String, sha256~ : String, signature? : String) -> UpdateManifestArtifact

    UpdateManifestArtifact::path

    UpdateManifestArtifact::sha256

    fn UpdateManifestArtifact::sha256(self : UpdateManifestArtifact) -> String

    UpdateManifestArtifact::signature

    fn UpdateManifestArtifact::signature(self : UpdateManifestArtifact) -> String?

    UpdateManifestArtifact::target

    UpdateManifestArtifact::to_json

    fn UpdateManifestArtifact::to_json(self : UpdateManifestArtifact) -> String

    UpdateManifestArtifact::url

    UpdateManifestArtifact::validate

    fn UpdateManifestArtifact::validate(self : UpdateManifestArtifact, signature_required? : Bool) -> Array[String]

    UpdateTrustReport

    pub struct UpdateTrustReport {
    trusted : Bool
    signature_required : Bool
    artifact_count : Int
    signed_artifacts : Int
    problems : Array[String]
    } derive(Eq,
    Debug
    )

    UpdateTrustReport::artifact_count

    fn UpdateTrustReport::artifact_count(self : UpdateTrustReport) -> Int

    UpdateTrustReport::problems

    fn UpdateTrustReport::problems(self : UpdateTrustReport) -> Array[String]

    UpdateTrustReport::signature_required

    fn UpdateTrustReport::signature_required(self : UpdateTrustReport) -> Bool

    UpdateTrustReport::signed_artifacts

    fn UpdateTrustReport::signed_artifacts(self : UpdateTrustReport) -> Int

    UpdateTrustReport::to_json

    fn UpdateTrustReport::to_json(self : UpdateTrustReport) -> String

    UpdateTrustReport::trusted

    fn UpdateTrustReport::trusted(self : UpdateTrustReport) -> Bool

    VirtualFile

    pub struct VirtualFile {
    path : String
    content : String
    } derive(Eq,
    Debug
    )

    VirtualFile::content

    fn VirtualFile::content(self : VirtualFile) -> String

    VirtualFile::new

    fn VirtualFile::new(path~ : String, content~ : String) -> VirtualFile

    VirtualFile::path

    fn VirtualFile::path(self : VirtualFile) -> String

    WindowConfig

    pub struct WindowConfig {
    label : String
    title : String
    width : Int
    height : Int
    resizable : Bool
    title_bar : TitleBarStyle
    source : Source?
    } derive(Eq,
    Debug
    )

    WindowConfig::label

    fn WindowConfig::label(self : WindowConfig) -> String

    WindowConfig::new

    fn WindowConfig::new(label? : String, title? : String, width? : Int, height? : Int, resizable? : Bool, title_bar? : TitleBarStyle, source? : Source) -> WindowConfig

    WindowConfig::parse_open_payload

    fn WindowConfig::parse_open_payload(payload : String) -> Result[WindowConfig, String]

    WindowConfig::resolve

    fn WindowConfig::resolve(self : WindowConfig, asset_protocol? : String) -> Result[ResolvedWindow, Array[String]]

    WindowConfig::validate

    fn WindowConfig::validate(self : WindowConfig) -> Array[String]

    WindowConfig::with_source

    fn WindowConfig::with_source(self : WindowConfig, source : Source) -> WindowConfig

    capabilities_with_file_system_scopes

    fn capabilities_with_file_system_scopes(capabilities~ : Array[Capability], scopes~ : Array[FileSystemScope]) -> Array[Capability]

    cell_with_emit

    fn[Model, Msg] cell_with_emit(model~ : Model, update~ : (Msg, Model) -> (Model, Cmd), view~ : ((Msg) -> Cmd, Model) -> Html) -> ((Msg) -> Cmd, Cell)

    moonsuite_product_home

    fn moonsuite_product_home() -> LepusaMoonSuiteProductHome

    moonsuite_product_home_for_workspace_root

    fn moonsuite_product_home_for_workspace_root(root : String) -> LepusaMoonSuiteProductHome

    moonsuite_product_id

    fn moonsuite_product_id() -> String

    moonsuite_product_runtime_path

    fn moonsuite_product_runtime_path() -> String

    moonsuite_product_runtime_path_for_workspace_root

    fn moonsuite_product_runtime_path_for_workspace_root(root : String) -> String

    moonsuite_product_service_path

    fn moonsuite_product_service_path() -> String

    moonsuite_product_service_path_for_workspace_root

    fn moonsuite_product_service_path_for_workspace_root(root : String) -> String

    moonsuite_product_state_path

    fn moonsuite_product_state_path() -> String

    moonsuite_product_state_path_for_workspace_root

    fn moonsuite_product_state_path_for_workspace_root(root : String) -> String

    moonsuite_product_tmp_path

    fn moonsuite_product_tmp_path() -> String

    moonsuite_product_tmp_path_for_workspace_root

    fn moonsuite_product_tmp_path_for_workspace_root(root : String) -> String

    moonsuite_product_update_metadata_path

    fn moonsuite_product_update_metadata_path() -> String

    moonsuite_product_update_metadata_path_for_workspace_root

    fn moonsuite_product_update_metadata_path_for_workspace_root(root : String) -> String

    new

    fn new(root : Cell) -> App

    none

    let none : Cmd

    simple_cell

    fn simple_cell(html : Html) -> Cell