{
  "schema": 1,
  "version": "0.0.1",
  "release_packages": [
    "libremetaverse-types",
    "libremetaverse-structured-data",
    "libremetaverse-imaging",
    "libremetaverse-imaging-skia",
    "libremetaverse-openjpeg",
    "libremetaverse-opus",
    "libremetaverse-prim-mesher",
    "libremetaverse-lsl-tools",
    "libremetaverse",
    "libremetaverse-rendering-simple",
    "libremetaverse-rendering-mesh-foundry",
    "libremetaverse-rlv",
    "libremetaverse-utilities",
    "libremetaverse-voice-vivox",
    "libremetaverse-voice-webrtc",
    "libremetaverse-programs"
  ],
  "binaries": [
    {"name":"inventory-explorer","services":["OpenSim login, capabilities, AIS, UDP when explicitly given credentials"]},
    {"name":"irc-gateway","services":["OpenSim and IRC TCP when explicitly given credentials and an IRC endpoint"]},
    {"name":"live-grid-smoke","services":["none in audit/fake mode; explicit OpenSim endpoint in live mode"]},
    {"name":"osd-inspector","services":["none; offline files and standard streams only"]},
    {"name":"packet-dump","services":["OpenSim login and UDP when explicitly given credentials"]},
    {"name":"prim-inspector","services":["OpenSim login, capabilities, and UDP when explicitly given credentials"]},
    {"name":"simple-bot","services":["OpenSim login, capabilities, and UDP when explicitly given credentials"]},
    {"name":"test-client","services":["OpenSim services selected by explicit login and commands"]},
    {"name":"vivox-test","services":["none in help mode; explicit external Vivox control service in live mode"]},
    {"name":"webrtc-test","services":["IPv4 loopback in fake mode; explicit OpenSim voice capabilities in live mode"]}
  ],
  "offline_smokes": [
    {"binary":"osd-inspector","args":["prim-to-osd"],"required_output":false},
    {"binary":"live-grid-smoke","args":["--audit-only"],"required_output":false},
    {"binary":"live-grid-smoke","args":["--fake","--evidence","{output}"],"required_output":true},
    {"binary":"webrtc-test","args":["--fake","--timeout-seconds","10"],"required_output":false}
  ],
  "allowed_native_ffi": [
    "crates/libremetaverse-openjpeg/src/ffi.rs",
    "crates/libremetaverse-openjpeg/src/lib.rs",
    "crates/libremetaverse-opus/src/lib.rs"
  ],
  "mirrored_inputs": [
    {"source":"codegen/inputs/avatar_lad.xml","package_path":"crates/libremetaverse/assets/avatar_lad.xml"}
  ],
  "forbidden_dependencies": [
    "coreclr",
    "grpc",
    "grpcio",
    "hostfxr",
    "jsonrpsee",
    "mono",
    "netcorehost",
    "pythonnet",
    "tarpc",
    "thrift",
    "tonic",
    "xmlrpc"
  ],
  "forbidden_artifact_strings": [
    "coreclr",
    "hostfxr",
    "mscoree.dll",
    "libmono",
    "libremetaverse.dll",
    "system.runtime.loader",
    "assemblyloadcontext"
  ],
  "forbidden_source_strings": [
    "std::process::Command",
    "tokio::process",
    "Command::new(\"dotnet\")",
    "Command::new(\"mono\")",
    "libloading::",
    "include_bytes!(\"LibreMetaverse.dll\")"
  ]
}
