{
  "schema_version": 1,
  "generated_from": "torana-plugins/plugins/*/plugin.json",
  "status": "source-preview",
  "plugins": [
    {
      "id": "torana/cache_tier_selector",
      "name": "cache_tier_selector",
      "latest": "0.1.0",
      "description": "Buys the cheapest prompt-cache lifetime for a conversation based on how long it actually goes idle. Keeps each decision fixed until the provider cache tier expires, because changing a live breakpoint marker would invalidate the entry it is protecting.",
      "failure_mode": "pass",
      "requires_upstream": false,
      "hooks": [
        "run_before_request"
      ],
      "conflicts_with": [],
      "capabilities": [
        "env.cache_policy",
        "env.host_call.torana_plugin_counter",
        "env.log",
        "env.now",
        "env.plugin_config",
        "env.state_get",
        "env.state_keys",
        "env.state_set",
        "ir.cache_control.write"
      ],
      "source": "https://github.com/torana-edge/torana-plugins/tree/main/plugins/cache_tier_selector"
    },
    {
      "id": "torana/cache_warmer",
      "name": "cache_warmer",
      "latest": "0.1.0",
      "description": "Keeps a chosen conversation's prompt cache alive across an idle gap. Opt-in per conversation and bounded by a deadline and a break-even refresh budget, because refreshing forever costs more than the cache miss it avoids.",
      "failure_mode": "pass",
      "requires_upstream": false,
      "hooks": [
        "run_before_request",
        "run_on_tick"
      ],
      "conflicts_with": [],
      "capabilities": [
        "env.background_tick",
        "env.cache_policy",
        "env.host_call.torana_send_request",
        "env.now",
        "env.plugin_config",
        "env.state_get",
        "env.state_keys",
        "env.state_set"
      ],
      "source": "https://github.com/torana-edge/torana-plugins/tree/main/plugins/cache_warmer"
    },
    {
      "id": "torana/compactor",
      "name": "compactor",
      "latest": "0.5.0",
      "description": "Economically gated cheap-model tool-result compaction; uses cached intent when available and a bounded local fallback otherwise. Alternative to keyword_compactor — run ONE of the two; running after intent improves relevance.",
      "failure_mode": "pass",
      "requires_upstream": false,
      "hooks": [
        "run_before_request"
      ],
      "conflicts_with": [
        "torana/keyword_compactor"
      ],
      "capabilities": [
        "env.cache_get",
        "env.cache_set",
        "env.emit_metric",
        "env.host_call.torana_evaluate_compaction",
        "env.host_call.torana_record_savings",
        "env.model_complete",
        "env.model_pricing",
        "env.plugin_config",
        "env.shared_cache_get",
        "ir.tool_results.write"
      ],
      "source": "https://github.com/torana-edge/torana-plugins/tree/main/plugins/compactor"
    },
    {
      "id": "torana/intent",
      "name": "intent",
      "latest": "0.1.0",
      "description": "Captures WHY each tool call is made: injects the required 'i' field into tool schemas (plus a system-prompt example), extracts it from streamed tool calls into the shared cache, and strips it before the harness sees it. On later requests it rehydrates cached intents onto history tool calls (bridging them to the request's tool_call_ids for the compactors) and heuristically fills never-captured ones so no tool establishes an 'i'-less precedent. Run before keyword_compactor OR compactor — both consume the intent cache.",
      "failure_mode": "pass",
      "requires_upstream": false,
      "hooks": [
        "run_before_request",
        "run_on_stream_chunk"
      ],
      "conflicts_with": [],
      "capabilities": [
        "env.cache_get",
        "env.cache_set",
        "env.emit_metric",
        "env.log",
        "env.meta_get",
        "env.meta_set",
        "env.plugin_config",
        "env.shared_cache_set",
        "ir.cache_control.write",
        "ir.messages.write.assistant",
        "ir.messages.write.developer",
        "ir.messages.write.other",
        "ir.messages.write.system",
        "ir.messages.write.tool",
        "ir.messages.write.user",
        "ir.stream.write",
        "ir.tool_results.write",
        "ir.tools.write"
      ],
      "source": "https://github.com/torana-edge/torana-plugins/tree/main/plugins/intent"
    },
    {
      "id": "torana/keyword_compactor",
      "name": "keyword_compactor",
      "latest": "0.6.0",
      "description": "Deterministic keyword-based tool-result compaction; uses cached intent when available and a bounded local fallback otherwise. Alternative to compactor — run ONE of the two; running after intent improves relevance.",
      "failure_mode": "pass",
      "requires_upstream": false,
      "hooks": [
        "run_before_request"
      ],
      "conflicts_with": [
        "torana/compactor"
      ],
      "capabilities": [
        "env.cache_get",
        "env.cache_set",
        "env.emit_metric",
        "env.host_call.torana_record_savings",
        "env.plugin_config",
        "env.shared_cache_get",
        "ir.tool_results.write"
      ],
      "source": "https://github.com/torana-edge/torana-plugins/tree/main/plugins/keyword_compactor"
    },
    {
      "id": "torana/otel",
      "name": "otel",
      "latest": "0.5.0",
      "description": "OpenTelemetry per-request metrics: request shape on the way in; latency, status class, and token usage on the way out",
      "failure_mode": "pass",
      "requires_upstream": false,
      "hooks": [
        "run_before_request",
        "run_after_response",
        "run_on_http_request"
      ],
      "conflicts_with": [],
      "capabilities": [
        "env.emit_metric",
        "env.serve_http"
      ],
      "source": "https://github.com/torana-edge/torana-plugins/tree/main/plugins/otel"
    },
    {
      "id": "torana/pii",
      "name": "pii",
      "latest": "0.1.0",
      "description": "Scans tool results through an operator-bound model plus a regex pre-filter and blocks the request if PII is detected",
      "failure_mode": "block",
      "requires_upstream": false,
      "hooks": [
        "run_before_request"
      ],
      "conflicts_with": [],
      "capabilities": [
        "env.block_request",
        "env.cache_get",
        "env.cache_set",
        "env.model_complete",
        "env.plugin_config"
      ],
      "source": "https://github.com/torana-edge/torana-plugins/tree/main/plugins/pii"
    },
    {
      "id": "torana/schema_translator",
      "name": "schema_translator",
      "latest": "0.3.0",
      "description": "KV-array schema translation: converts additionalProperties maps to arrays on the way in and reverses on the stream",
      "failure_mode": "pass",
      "requires_upstream": false,
      "hooks": [
        "run_before_request",
        "run_on_stream_chunk"
      ],
      "conflicts_with": [],
      "capabilities": [
        "env.meta_get",
        "env.meta_set",
        "ir.messages.write.assistant",
        "ir.stream.write",
        "ir.tools.write"
      ],
      "source": "https://github.com/torana-edge/torana-plugins/tree/main/plugins/schema_translator"
    },
    {
      "id": "torana/tool_governor",
      "name": "tool_governor",
      "latest": "0.1.0",
      "description": "Restricts or replaces the tool definitions advertised to the model",
      "failure_mode": "block",
      "requires_upstream": false,
      "hooks": [
        "run_before_request"
      ],
      "conflicts_with": [],
      "capabilities": [
        "env.plugin_config",
        "ir.cache_control.write",
        "ir.tools.write"
      ],
      "source": "https://github.com/torana-edge/torana-plugins/tree/main/plugins/tool_governor"
    },
    {
      "id": "torana/usage_logger",
      "name": "usage_logger",
      "latest": "0.1.0",
      "description": "Write content-free request, latency, and token usage records to a rotating private JSONL file",
      "failure_mode": "pass",
      "requires_upstream": false,
      "hooks": [
        "run_after_response"
      ],
      "conflicts_with": [],
      "capabilities": [
        "env.file_append"
      ],
      "source": "https://github.com/torana-edge/torana-plugins/tree/main/plugins/usage_logger"
    }
  ]
}
