RimBridgeServer.Annotations 1.1.0

dotnet add package RimBridgeServer.Annotations --version 1.1.0
                    
NuGet\Install-Package RimBridgeServer.Annotations -Version 1.1.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="RimBridgeServer.Annotations" Version="1.1.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="RimBridgeServer.Annotations" Version="1.1.0" />
                    
Directory.Packages.props
<PackageReference Include="RimBridgeServer.Annotations" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add RimBridgeServer.Annotations --version 1.1.0
                    
#r "nuget: RimBridgeServer.Annotations, 1.1.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package RimBridgeServer.Annotations@1.1.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=RimBridgeServer.Annotations&version=1.1.0
                    
Install as a Cake Addin
#tool nuget:?package=RimBridgeServer.Annotations&version=1.1.0
                    
Install as a Cake Tool

RimBridgeServer.Annotations

RimBridgeServer.Annotations is a small shared annotation package for products that work like RimBridgeServer.

Overview

RimBridgeServer.Annotations is not a bridge runtime, not a transport implementation, and not an end-user server product. It is the lightweight annotation contract shared between a bridge host and the external mods or plugins whose tools that host can discover.

For the 1.1.0 release summary and upgrade notes, see RELEASE_NOTES.md.

This repository exists to keep that shared contract separate from the full bridge/runtime layer:

  • a RimBridgeServer-style host can use Lib.GAB plus its own product logic to expose the final GABP surface
  • the host itself can use this same attribute model for discoverable tools
  • third-party mods can reference only RimBridgeServer.Annotations to describe tools without taking a dependency on the full bridge runtime
  • the host can scan loaded assemblies and republish discovered tools through one bridge surface

If you are building your own version of RimBridgeServer for another game, this is the reason this repo exists: keep the host/runtime dependency in the bridge, and keep the external extension contract small, stable, and metadata-only.

Who This Is For

Use this package if you are:

  • building a bridge host that wants to discover attributed tools from extension assemblies
  • writing a mod or plugin that should contribute tools to such a host without taking a dependency on the full bridge runtime

What Is In This Package

The NuGet package, assembly, and default namespace are RimBridgeServer.Annotations.

It currently ships these attributes:

  • ToolAttribute
  • ToolParameterAttribute
  • ToolResponseAttribute

Those types are pure metadata. They do not perform discovery, registration, transport, or invocation by themselves.

That split is intentional:

  • bridge hosts and extension mods share one stable annotation model
  • contributed extensions depend on a tiny package instead of the full bridge/runtime layer
  • RimBridgeServer or your own bridge host stays responsible for scanning loaded assemblies and turning annotated methods into live bridge capabilities
  • the shared surface remains cheap to version and cheap to adopt

How This Fits With Lib.GAB

Lib.GAB is the host/runtime layer for teams building a RimBridgeServer-style bridge product.

RimBridgeServer.Annotations is the lighter package that can be shared with external mods and plugin assemblies that contribute tools to that host.

That means the responsibilities stay split cleanly:

  • Lib.GAB handles the host-side GABP server mechanics
  • RimBridgeServer.Annotations supplies the shared metadata contract
  • RimBridgeServer or your own product owns discovery, trust boundaries, naming rules, and lifecycle management for contributed tools

Example

using RimBridgeServer.Annotations;

public sealed class AchtungBridgeTools
{
    [Tool(
        "achtung/select_group",
        Description = "Select an Achtung pawn group by stable id.",
        ResultDescription = "Whether the group was selected and which stable id was resolved.")]
    [ToolResponse("success", Type = "boolean", Description = "True when the group was resolved and selected.")]
    public object SelectGroup(
        [ToolParameter(Description = "Stable Achtung group id.")] string groupId)
    {
        return new
        {
            success = true,
            groupId
        };
    }
}

Use ResultDescription when you want to describe what a successful result means without documenting every response field. Use ToolResponseAttribute when individual response fields are worth surfacing in machine-readable metadata.

Attention And Async Problems

Extension tools do not currently need to publish GABP attention items directly.

Today, blocking attention is still owned centrally by RimBridgeServer:

  • severe async RimWorld log errors can open attention
  • failed or timed-out bridge operations can open attention
  • ordinary extension tools usually do not need to write any attention protocol code

There is not yet a public cross-mod API for third-party mods to publish their own async attention items. If your extension needs that, treat it as future integration work rather than part of the current annotations contract.

Build

Run:

dotnet build RimBridgeServer.Annotations.sln

The library project is configured with GeneratePackageOnBuild=true, so a normal build emits:

  • artifacts/nuget/RimBridgeServer.Annotations.<version>.nupkg
  • artifacts/nuget/RimBridgeServer.Annotations.<version>.snupkg

That is the package you can upload to NuGet manually.

Scope

This repository intentionally does not include:

  • runtime assembly scanning
  • bridge capability registration
  • RimWorld integration code
  • GABP transport code

Those belong in RimBridgeServer or in your own bridge host product, not in the shared annotations package.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 is compatible.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETFramework 4.7.2

    • No dependencies.
  • .NETStandard 2.0

    • No dependencies.
  • net10.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.1.0 38 3/21/2026
1.0.0 92 3/18/2026

Add optional Tool.ResultDescription metadata so extension tools can describe successful results without requiring field-level response annotations.