schema_version = 1
id = "example.rust_service_plugin"
name = "Rust Service Plugin Template"
version = "0.1.0"
description = "Example Component Model Plugin with Tool and Service ingress handlers."
surfaces = ["tool", "service", "ingress"]
permissions = [
  { kind = "surface", surface = "tool" },
  { kind = "tool", name = "example_echo" },
  { kind = "surface", surface = "service" },
  { kind = "service", name = "example_service" },
  { kind = "surface", surface = "ingress" },
  { kind = "ingress", name = "example_ws" },
  { kind = "host_api", api = "websocket" },
]

[runtime]
kind = "wasm-component"
world = "yoi:plugin/instance@1.0.0"
component = "plugin.component.wasm"

[[tools]]
name = "example_echo"
description = "Echo input text through the shared Plugin instance."
input_schema = { type = "object" }

[[services]]
name = "example_service"
description = "Host-managed service instance for bounded ingress events."
lifecycle = "host-managed"

[[ingresses]]
name = "example_ws"
description = "Handles host-owned WebSocket text events and returns websocket_send output commands."
event_kinds = ["websocket_text"]
sources = ["websocket:wss://example.com/socket"]
input_schema = { type = "object" }

[[websocket]]
scheme = "wss"
host = "example.com"
path_prefixes = ["/socket"]
