diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c4a21d26..fcefebdc 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -325,9 +325,9 @@ The pre-commit hooks do not currently enforce SPDX headers automatically, but re Before making significant changes, read through the documentation in [`docs/`](docs/), especially: -- [Architecture Overview](docs/about/architecture.mdx) -- runtime model and data flow -- [Scopes](docs/about/concepts/scopes.mdx) -- scopes, handles, events, and runtime ownership -- [Middleware](docs/about/concepts/middleware.mdx) -- execution ordering and middleware behavior +- [Architecture Overview](docs/about-nemo-relay/architecture.mdx) -- runtime model and data flow +- [Scopes](docs/about-nemo-relay/concepts/scopes.mdx) -- scopes, handles, events, and runtime ownership +- [Middleware](docs/about-nemo-relay/concepts/middleware.mdx) -- execution ordering and middleware behavior - [API Reference](docs/reference/api/index.mdx) -- public surfaces across Rust, Python, and Node.js The codebase follows a layered architecture: **Core (Rust)** provides the runtime, with bindings through **FFI (C, used by Go through CGo)**, **PyO3 (Python)**, **NAPI (Node.js)**, and **wasm-bindgen (WebAssembly)**. Each binding mirrors the full API surface. diff --git a/docs/about/architecture.mdx b/docs/about-nemo-relay/architecture.mdx similarity index 100% rename from docs/about/architecture.mdx rename to docs/about-nemo-relay/architecture.mdx diff --git a/docs/about/concepts/events.mdx b/docs/about-nemo-relay/concepts/events.mdx similarity index 100% rename from docs/about/concepts/events.mdx rename to docs/about-nemo-relay/concepts/events.mdx diff --git a/docs/about/concepts/framework-integrations.mdx b/docs/about-nemo-relay/concepts/framework-integrations.mdx similarity index 99% rename from docs/about/concepts/framework-integrations.mdx rename to docs/about-nemo-relay/concepts/framework-integrations.mdx index e7ea444a..13262b1b 100644 --- a/docs/about/concepts/framework-integrations.mdx +++ b/docs/about-nemo-relay/concepts/framework-integrations.mdx @@ -151,4 +151,4 @@ Use these practices when applying the concept in application or integration code - Use mark events to fill visibility gaps rather than to model full execution spans. - Keep binding-level API details in the [API Reference](/reference/api) and - deeper integration patterns in [Integrate into Frameworks](/integrate-frameworks/about). + deeper integration patterns in [Integrate into Frameworks](/integrate-into-frameworks/about). diff --git a/docs/about/concepts/index.mdx b/docs/about-nemo-relay/concepts/index.mdx similarity index 100% rename from docs/about/concepts/index.mdx rename to docs/about-nemo-relay/concepts/index.mdx diff --git a/docs/about/concepts/middleware.mdx b/docs/about-nemo-relay/concepts/middleware.mdx similarity index 100% rename from docs/about/concepts/middleware.mdx rename to docs/about-nemo-relay/concepts/middleware.mdx diff --git a/docs/about/concepts/plugins.mdx b/docs/about-nemo-relay/concepts/plugins.mdx similarity index 95% rename from docs/about/concepts/plugins.mdx rename to docs/about-nemo-relay/concepts/plugins.mdx index 203a5097..c48ba1f4 100644 --- a/docs/about/concepts/plugins.mdx +++ b/docs/about-nemo-relay/concepts/plugins.mdx @@ -150,9 +150,9 @@ through the same component lifecycle as other plugins: - Inspect the activation result if needed Detailed adaptive configuration belongs in -[Adaptive Configuration](/plugins/adaptive/configuration), -[Adaptive Cache Governor (ACG)](/plugins/adaptive/acg), and -[Adaptive Hints](/plugins/adaptive/adaptive-hints). +[Adaptive Configuration](/adaptive-plugin/configuration), +[Adaptive Cache Governor (ACG)](/adaptive-plugin/acg), and +[Adaptive Hints](/adaptive-plugin/adaptive-hints). ### Observability @@ -163,7 +163,7 @@ disabled unless its section sets `enabled: true`, and subscriber names are inferred from the plugin namespace instead of exposed in public config. Detailed observability plugin configuration belongs in -[Observability Configuration](/plugins/observability/configuration). +[Observability Configuration](/observability-plugin/configuration). For the CLI gateway's `plugins.toml` discovery, precedence, merge, and editing rules, see [Plugin Configuration Files](/build-plugins/plugin-configuration-files). diff --git a/docs/about/concepts/scopes.mdx b/docs/about-nemo-relay/concepts/scopes.mdx similarity index 100% rename from docs/about/concepts/scopes.mdx rename to docs/about-nemo-relay/concepts/scopes.mdx diff --git a/docs/about/concepts/subscribers.mdx b/docs/about-nemo-relay/concepts/subscribers.mdx similarity index 96% rename from docs/about/concepts/subscribers.mdx rename to docs/about-nemo-relay/concepts/subscribers.mdx index 843b66f8..175b292e 100644 --- a/docs/about/concepts/subscribers.mdx +++ b/docs/about-nemo-relay/concepts/subscribers.mdx @@ -134,13 +134,13 @@ of the canonical event stream. ### Agent Trajectory Interchange Format (ATIF) Exporter -The [Agent Trajectory Interchange Format (ATIF) exporter](/plugins/observability/atif) +The [Agent Trajectory Interchange Format (ATIF) exporter](/observability-plugin/atif) collects lifecycle events and emits trajectory artifacts for offline analysis, replay, or debugging. ### Agent Trajectory Observability Format (ATOF) JSONL Exporter -The [Agent Trajectory Observability Format (ATOF) JSONL exporter](/plugins/observability/atof) +The [Agent Trajectory Observability Format (ATOF) JSONL exporter](/observability-plugin/atof) writes the canonical event stream to a native filesystem path as one raw ATOF event per line. @@ -155,9 +155,9 @@ The OpenInference subscriber maps runtime events into OTLP traces using OpenInference semantics for model-centric observability. Detailed setup, configuration, and API shape for these subscribers belongs in -[Observability](/plugins/observability/about). +[Observability](/observability-plugin/about). For configuration-driven setup, use the built-in -[`observability` plugin](/plugins/observability/configuration) +[`observability` plugin](/observability-plugin/configuration) to install ATOF, ATIF, OpenTelemetry, and OpenInference subscribers from one plugin component. diff --git a/docs/about/ecosystem.mdx b/docs/about-nemo-relay/ecosystem.mdx similarity index 96% rename from docs/about/ecosystem.mdx rename to docs/about-nemo-relay/ecosystem.mdx index 2e3c2167..76f7f81c 100644 --- a/docs/about/ecosystem.mdx +++ b/docs/about-nemo-relay/ecosystem.mdx @@ -111,8 +111,8 @@ Use these links to continue into adjacent concepts and workflows. - [NVIDIA NeMo documentation](https://docs.nvidia.com/nemo/index.html) - [NVIDIA NeMo Agent Toolkit documentation](https://docs.nvidia.com/nemo/agent-toolkit/latest/) - [NVIDIA NeMo Guardrails documentation](https://docs.nvidia.com/nemo-guardrails/index.html) -- [Integrate into Frameworks](/integrate-frameworks/about) -- [Adding Framework Scopes](/integrate-frameworks/adding-scopes) -- [Wrapping Tool Calls](/integrate-frameworks/wrap-tool-calls) -- [Wrapping LLM Calls](/integrate-frameworks/wrap-llm-calls) +- [Integrate into Frameworks](/integrate-into-frameworks/about) +- [Adding Framework Scopes](/integrate-into-frameworks/adding-scopes) +- [Wrapping Tool Calls](/integrate-into-frameworks/wrap-tool-calls) +- [Wrapping LLM Calls](/integrate-into-frameworks/wrap-llm-calls) - [Plugin Model](/build-plugins/basic-guide) diff --git a/docs/about/overview.mdx b/docs/about-nemo-relay/overview.mdx similarity index 95% rename from docs/about/overview.mdx rename to docs/about-nemo-relay/overview.mdx index b472cdaf..e8751fae 100644 --- a/docs/about/overview.mdx +++ b/docs/about-nemo-relay/overview.mdx @@ -67,13 +67,13 @@ Use the reading path that matches your task: | Develop from source | [Development Setup](/contribute/development-setup) | | Understand the runtime model | [Concepts](/about-nemo-relay/concepts) | | Instrument an application | [Instrument Applications](/instrument-applications/about) | -| Use a maintained integration | [Supported Integrations](/integrations/about) | -| Integrate a framework | [Integrate into Frameworks](/integrate-frameworks/about) | +| Use a maintained integration | [Supported Integrations](/supported-integrations/about) | +| Integrate a framework | [Integrate into Frameworks](/integrate-into-frameworks/about) | | Observe a local coding-agent CLI | [NeMo Relay CLI](/nemo-relay-cli/about) | | Package reusable behavior | [Build Plugins](/build-plugins/about) | -| Export traces or trajectories | [Observability](/plugins/observability/about) | +| Export traces or trajectories | [Observability](/observability-plugin/about) | | Debug trace incidents | [Trace Incident Runbook](/resources/troubleshooting/trace-incident-runbook) | -| Tune performance with adaptive behavior | [Adaptive](/plugins/adaptive/about) | +| Tune performance with adaptive behavior | [Adaptive](/adaptive-plugin/about) | | Look up symbols | [APIs](/reference/api) | ## Conceptual Diagram diff --git a/docs/about/release-notes/highlights.mdx b/docs/about-nemo-relay/release-notes/highlights.mdx similarity index 100% rename from docs/about/release-notes/highlights.mdx rename to docs/about-nemo-relay/release-notes/highlights.mdx diff --git a/docs/about/release-notes/index.mdx b/docs/about-nemo-relay/release-notes/index.mdx similarity index 100% rename from docs/about/release-notes/index.mdx rename to docs/about-nemo-relay/release-notes/index.mdx diff --git a/docs/about/release-notes/known-issues.mdx b/docs/about-nemo-relay/release-notes/known-issues.mdx similarity index 100% rename from docs/about/release-notes/known-issues.mdx rename to docs/about-nemo-relay/release-notes/known-issues.mdx diff --git a/docs/about/release-notes/related-topics.mdx b/docs/about-nemo-relay/release-notes/related-topics.mdx similarity index 100% rename from docs/about/release-notes/related-topics.mdx rename to docs/about-nemo-relay/release-notes/related-topics.mdx diff --git a/docs/plugins/adaptive/about.mdx b/docs/adaptive-plugin/about.mdx similarity index 81% rename from docs/plugins/adaptive/about.mdx rename to docs/adaptive-plugin/about.mdx index 9e19ae8b..b053c8dc 100644 --- a/docs/plugins/adaptive/about.mdx +++ b/docs/adaptive-plugin/about.mdx @@ -41,17 +41,17 @@ Start here when you need to: If instrumentation is not in place yet, start with [Instrument Applications](/instrument-applications/about) or -[Integrate into Frameworks](/integrate-frameworks/about). +[Integrate into Frameworks](/integrate-into-frameworks/about). ## Pages -- [Adaptive Configuration](/plugins/adaptive/configuration) documents the full plugin +- [Adaptive Configuration](/adaptive-plugin/configuration) documents the full plugin component shape, validation, activation, teardown, and whole-plugin settings. -- [ACG](/plugins/adaptive/acg) explains Adaptive Cache Governor configuration and what prompt +- [ACG](/adaptive-plugin/acg) explains Adaptive Cache Governor configuration and what prompt cache planning accomplishes. -- [Adaptive Hints](/plugins/adaptive/adaptive-hints) explains request hint injection and how +- [Adaptive Hints](/adaptive-plugin/adaptive-hints) explains request hint injection and how downstream model paths can consume the hints. State, telemetry, tool parallelism, and policy are whole-plugin configuration -areas. They are documented on [Adaptive Configuration](/plugins/adaptive/configuration) rather +areas. They are documented on [Adaptive Configuration](/adaptive-plugin/configuration) rather than as separate area pages. diff --git a/docs/plugins/adaptive/acg.mdx b/docs/adaptive-plugin/acg.mdx similarity index 100% rename from docs/plugins/adaptive/acg.mdx rename to docs/adaptive-plugin/acg.mdx diff --git a/docs/plugins/adaptive/adaptive-hints.mdx b/docs/adaptive-plugin/adaptive-hints.mdx similarity index 100% rename from docs/plugins/adaptive/adaptive-hints.mdx rename to docs/adaptive-plugin/adaptive-hints.mdx diff --git a/docs/plugins/adaptive/configuration.mdx b/docs/adaptive-plugin/configuration.mdx similarity index 98% rename from docs/plugins/adaptive/configuration.mdx rename to docs/adaptive-plugin/configuration.mdx index c8d6bc59..55621aef 100644 --- a/docs/plugins/adaptive/configuration.mdx +++ b/docs/adaptive-plugin/configuration.mdx @@ -34,8 +34,8 @@ The top-level adaptive object contains: | `acg` | Adaptive Cache Governor prompt-cache planning. | | `policy` | Adaptive-local handling for unknown fields and unsupported values. | -The requested area pages cover [Adaptive Cache Governor (ACG)](/plugins/adaptive/acg) and -[Adaptive Hints](/plugins/adaptive/adaptive-hints). State, telemetry, tool parallelism, and +The requested area pages cover [Adaptive Cache Governor (ACG)](/adaptive-plugin/acg) and +[Adaptive Hints](/adaptive-plugin/adaptive-hints). State, telemetry, tool parallelism, and policy remain whole-plugin settings: - Use `state.backend.kind = "in_memory"` for local experiments. diff --git a/docs/build-plugins/plugin-configuration-files.mdx b/docs/build-plugins/plugin-configuration-files.mdx index 5d598ae3..866d80d9 100644 --- a/docs/build-plugins/plugin-configuration-files.mdx +++ b/docs/build-plugins/plugin-configuration-files.mdx @@ -264,7 +264,7 @@ Observability exporters through `plugins.toml`. Use the component guides for field-level configuration: -- [Observability Configuration](/plugins/observability/configuration) -- [Adaptive Configuration](/plugins/adaptive/configuration) -- [Adaptive Cache Governor (ACG)](/plugins/adaptive/acg) -- [Adaptive Hints](/plugins/adaptive/adaptive-hints) +- [Observability Configuration](/observability-plugin/configuration) +- [Adaptive Configuration](/adaptive-plugin/configuration) +- [Adaptive Cache Governor (ACG)](/adaptive-plugin/acg) +- [Adaptive Hints](/adaptive-plugin/adaptive-hints) diff --git a/docs/getting-started/agent-runtime-primer.mdx b/docs/getting-started/agent-runtime-primer.mdx index 1212e763..f16b7d73 100644 --- a/docs/getting-started/agent-runtime-primer.mdx +++ b/docs/getting-started/agent-runtime-primer.mdx @@ -100,12 +100,12 @@ The following pages help you choose the next step for your integration. - Use [Quick Start](/getting-started/quick-start) for the smallest binding-specific example. - Use [Instrument Applications](/instrument-applications/about) when you own the tool or LLM call site. -- Use [Integrate into Frameworks](/integrate-frameworks/about) when a +- Use [Integrate into Frameworks](/integrate-into-frameworks/about) when a framework owns invocation, scheduling, retries, callbacks, or provider payloads. - Use [Build Plugins](/build-plugins/about) when behavior should be reusable and activated from configuration. -- Use [Observability](/plugins/observability/about) when you need to export +- Use [Observability](/observability-plugin/about) when you need to export runtime events to ATIF, OpenTelemetry, or OpenInference. -- Use [Adaptive](/plugins/adaptive/about) after baseline instrumentation is +- Use [Adaptive](/adaptive-plugin/about) after baseline instrumentation is working and you want to tune behavior from observed runtime signals. diff --git a/docs/getting-started/configuration.mdx b/docs/getting-started/configuration.mdx index d9c1572f..d20ee1bb 100644 --- a/docs/getting-started/configuration.mdx +++ b/docs/getting-started/configuration.mdx @@ -43,8 +43,8 @@ Interchange Format (ATIF) exporters, OpenTelemetry subscribers, and OpenInference subscribers can be configured directly through binding-native config objects. Use the built-in `observability` plugin when you want one plugin component to own standard exporter setup and teardown. See -[Observability Configuration](/plugins/observability/configuration) -and [Observability](/plugins/observability/about) +[Observability Configuration](/observability-plugin/configuration) +and [Observability](/observability-plugin/about) for the supported export paths. NeMo Relay does not require application-level environment variables for normal @@ -58,4 +58,4 @@ deployment manifests. ## Adaptive Setup -Adaptive tuning is enabled through the adaptive plugin component and binding helper APIs. See [Adaptive Configuration](/plugins/adaptive/configuration). +Adaptive tuning is enabled through the adaptive plugin component and binding helper APIs. See [Adaptive Configuration](/adaptive-plugin/configuration). diff --git a/docs/getting-started/installation.mdx b/docs/getting-started/installation.mdx index 1e5adeb5..88a3194f 100644 --- a/docs/getting-started/installation.mdx +++ b/docs/getting-started/installation.mdx @@ -76,7 +76,7 @@ openclaw gateway restart Use the package name `nemo-relay-openclaw` for installation. Use the plugin ID `nemo-relay` in OpenClaw configuration, inspection, and gateway status commands. -See the [OpenClaw Plugin Guide](/integrations/openclaw-plugin) for +See the [OpenClaw Plugin Guide](/supported-integrations/openclaw-plugin) for configuration and verification steps. ### Python Framework Integrations @@ -90,5 +90,5 @@ uv add "nemo-relay[langchain,langgraph,deepagents]@0.3.0" The extras install the NeMo Relay Python package plus the dependencies needed by the maintained public integrations. See -[Supported Integrations](/integrations/about) for guide links and support +[Supported Integrations](/supported-integrations/about) for guide links and support levels. diff --git a/docs/getting-started/quick-start/nodejs.mdx b/docs/getting-started/quick-start/nodejs.mdx index d1df5344..17307bbd 100644 --- a/docs/getting-started/quick-start/nodejs.mdx +++ b/docs/getting-started/quick-start/nodejs.mdx @@ -119,4 +119,4 @@ Use these links to continue from the quick start into the core runtime concepts. - [Instrument Applications Code Examples](/instrument-applications/code-examples) - [Subscribers](/about-nemo-relay/concepts/subscribers) -- [Using Codecs](/integrate-frameworks/using-codecs) +- [Using Codecs](/integrate-into-frameworks/using-codecs) diff --git a/docs/getting-started/quick-start/python.mdx b/docs/getting-started/quick-start/python.mdx index 02aaae70..edb8cbaf 100644 --- a/docs/getting-started/quick-start/python.mdx +++ b/docs/getting-started/quick-start/python.mdx @@ -8,7 +8,7 @@ SPDX-License-Identifier: Apache-2.0 */} This quick start shows the smallest Python workflow that emits scope, tool, and LLM events. -[LangChain](https://www.langchain.com/langchain), [LangGraph](https://www.langchain.com/langgraph), and [Deep Agents](https://www.langchain.com/deep-agents) users should start with the [LangChain integration](/integrations/langchain), [LangGraph integration](/integrations/langgraph), and [Deep Agents integration](/integrations/deepagents) guides for the best experience in those frameworks. +[LangChain](https://www.langchain.com/langchain), [LangGraph](https://www.langchain.com/langgraph), and [Deep Agents](https://www.langchain.com/deep-agents) users should start with the [LangChain integration](/supported-integrations/langchain), [LangGraph integration](/supported-integrations/langgraph), and [Deep Agents integration](/supported-integrations/deepagents) guides for the best experience in those frameworks. ## Choose an Install Path @@ -123,7 +123,7 @@ These modules are the main Python APIs to use from applications and integrations Use these links to continue from the quick start into the core runtime concepts. -- [Supported Integrations](/integrations/about) +- [Supported Integrations](/supported-integrations/about) - [Scopes](/about-nemo-relay/concepts/scopes) - [Middleware](/about-nemo-relay/concepts/middleware) - [Plugins](/about-nemo-relay/concepts/plugins) diff --git a/docs/index.yml b/docs/index.yml index 52670074..d575476f 100644 --- a/docs/index.yml +++ b/docs/index.yml @@ -2,7 +2,7 @@ # SPDX-License-Identifier: Apache-2.0 navigation: - - folder: ./about + - folder: ./about-nemo-relay title: "About NeMo Relay" slug: about-nemo-relay title-source: frontmatter @@ -14,7 +14,7 @@ navigation: title: "NeMo Relay CLI" slug: nemo-relay-cli title-source: frontmatter - - folder: ./integrations + - folder: ./supported-integrations title: "Supported Integrations" slug: supported-integrations title-source: frontmatter @@ -22,15 +22,15 @@ navigation: title: "Instrument Applications" slug: instrument-applications title-source: frontmatter - - folder: ./plugins/observability + - folder: ./observability-plugin title: "Observability Plugin" slug: observability-plugin title-source: frontmatter - - folder: ./plugins/adaptive + - folder: ./adaptive-plugin title: "Adaptive Plugin" slug: adaptive-plugin title-source: frontmatter - - folder: ./integrate-frameworks + - folder: ./integrate-into-frameworks title: "Integrate into Frameworks" slug: integrate-into-frameworks title-source: frontmatter diff --git a/docs/instrument-applications/about.mdx b/docs/instrument-applications/about.mdx index 52ca1992..a0bfcbfe 100644 --- a/docs/instrument-applications/about.mdx +++ b/docs/instrument-applications/about.mdx @@ -24,7 +24,7 @@ Use this guide when you need to: - Wrap calls with timing, routing, retries, or fallback behavior - Isolate request-specific middleware and subscribers -If the tool or LLM boundary is owned by a framework, use [Integrate into Frameworks](/integrate-frameworks/about) instead. +If the tool or LLM boundary is owned by a framework, use [Integrate into Frameworks](/integrate-into-frameworks/about) instead. ## Guides diff --git a/docs/instrument-applications/advanced-guide.mdx b/docs/instrument-applications/advanced-guide.mdx index aa59906c..10546853 100644 --- a/docs/instrument-applications/advanced-guide.mdx +++ b/docs/instrument-applications/advanced-guide.mdx @@ -223,4 +223,4 @@ Use these links to continue from this workflow into the next related task. - Use [Middleware](/about-nemo-relay/concepts/middleware) to review execution order. - Use [Code Examples](/instrument-applications/code-examples) for direct registration and partial-execution examples. -- Use [Handle Non-Serializable Data](/integrate-frameworks/non-serializable-data) if middleware needs to work with framework objects. +- Use [Handle Non-Serializable Data](/integrate-into-frameworks/non-serializable-data) if middleware needs to work with framework objects. diff --git a/docs/instrument-applications/instrument-llm-call.mdx b/docs/instrument-applications/instrument-llm-call.mdx index 99eddae2..29b9555f 100644 --- a/docs/instrument-applications/instrument-llm-call.mdx +++ b/docs/instrument-applications/instrument-llm-call.mdx @@ -241,5 +241,5 @@ Use these links to continue from this workflow into the next related task. - Instrument tools with [Instrument a Tool Call](/instrument-applications/instrument-tool-call). - Add policy or transformation with [Add Middleware](/instrument-applications/advanced-guide). -- Use [Provider Codecs](/integrate-frameworks/provider-codecs) when middleware needs normalized LLM request and response data. -- Export events with [Observability](/plugins/observability/about). +- Use [Provider Codecs](/integrate-into-frameworks/provider-codecs) when middleware needs normalized LLM request and response data. +- Export events with [Observability](/observability-plugin/about). diff --git a/docs/instrument-applications/instrument-tool-call.mdx b/docs/instrument-applications/instrument-tool-call.mdx index 5015781e..27aa67b4 100644 --- a/docs/instrument-applications/instrument-tool-call.mdx +++ b/docs/instrument-applications/instrument-tool-call.mdx @@ -29,7 +29,7 @@ Complete one binding Quick Start guide first: Create a scope for the active request or agent run before adding tool instrumentation. If you have not done that yet, start with [Adding Scopes and Marks](/instrument-applications/adding-scopes-and-marks). -The tool arguments and result must be JSON-compatible. If your framework passes clients, sockets, streams, callbacks, or other opaque objects, use [Handle Non-Serializable Data](/integrate-frameworks/non-serializable-data) before you instrument the callback. +The tool arguments and result must be JSON-compatible. If your framework passes clients, sockets, streams, callbacks, or other opaque objects, use [Handle Non-Serializable Data](/integrate-into-frameworks/non-serializable-data) before you instrument the callback. ## Integration Pattern @@ -219,5 +219,5 @@ Use these links to continue from this workflow into the next related task. - Add model-provider instrumentation with [Instrument an LLM Call](/instrument-applications/instrument-llm-call). - Add policy or transformation with [Add Middleware](/instrument-applications/advanced-guide). -- Export events with [Observability](/plugins/observability/about). +- Export events with [Observability](/observability-plugin/about). - Use [Code Examples](/instrument-applications/code-examples) for manual lifecycle, streaming, scope, and partial middleware API examples. diff --git a/docs/integrate-frameworks/about.mdx b/docs/integrate-into-frameworks/about.mdx similarity index 65% rename from docs/integrate-frameworks/about.mdx rename to docs/integrate-into-frameworks/about.mdx index d4ae3297..430860fb 100644 --- a/docs/integrate-frameworks/about.mdx +++ b/docs/integrate-into-frameworks/about.mdx @@ -33,20 +33,20 @@ Use these signals to decide whether this documentation path matches your current If you own the application call sites directly, use [Instrument Applications](/instrument-applications/about) first. If your application uses a maintained public integration such as LangChain, LangGraph, Deep Agents, or OpenClaw, start with -[Supported Integrations](/integrations/about). +[Supported Integrations](/supported-integrations/about). ## Guides Use these guide links to move from the overview into task-specific instructions. -- [Adding Scopes](/integrate-frameworks/adding-scopes) shows how framework request and run hooks become NeMo Relay ownership boundaries. -- [Wrap Tool Calls](/integrate-frameworks/wrap-tool-calls) explains where to place managed tool wrappers and tool lifecycle fallbacks. -- [Wrap LLM Calls](/integrate-frameworks/wrap-llm-calls) explains where to place managed provider wrappers, model names, streaming behavior, and LLM lifecycle fallbacks. -- [Handle Non-Serializable Data](/integrate-frameworks/non-serializable-data) shows how to keep clients, streams, callbacks, and SDK objects outside JSON payloads. -- [Using Codecs](/integrate-frameworks/using-codecs) explains typed value codecs for framework-facing wrappers. -- [Provider Codecs](/integrate-frameworks/provider-codecs) explains provider request and response codecs for normalized middleware and event annotations. -- [Provider Response Codecs](/integrate-frameworks/provider-response-codecs) focuses on response-only annotations for subscribers and exporters. -- [Code Examples](/integrate-frameworks/code-examples) collects fallback APIs, mark events, and repository patch workflow examples. +- [Adding Scopes](/integrate-into-frameworks/adding-scopes) shows how framework request and run hooks become NeMo Relay ownership boundaries. +- [Wrap Tool Calls](/integrate-into-frameworks/wrap-tool-calls) explains where to place managed tool wrappers and tool lifecycle fallbacks. +- [Wrap LLM Calls](/integrate-into-frameworks/wrap-llm-calls) explains where to place managed provider wrappers, model names, streaming behavior, and LLM lifecycle fallbacks. +- [Handle Non-Serializable Data](/integrate-into-frameworks/non-serializable-data) shows how to keep clients, streams, callbacks, and SDK objects outside JSON payloads. +- [Using Codecs](/integrate-into-frameworks/using-codecs) explains typed value codecs for framework-facing wrappers. +- [Provider Codecs](/integrate-into-frameworks/provider-codecs) explains provider request and response codecs for normalized middleware and event annotations. +- [Provider Response Codecs](/integrate-into-frameworks/provider-response-codecs) focuses on response-only annotations for subscribers and exporters. +- [Code Examples](/integrate-into-frameworks/code-examples) collects fallback APIs, mark events, and repository patch workflow examples. For coding-agent hook and LLM gateway observability, use [NeMo Relay CLI](/nemo-relay-cli/about). That section covers Claude Code, diff --git a/docs/integrate-frameworks/adding-scopes.mdx b/docs/integrate-into-frameworks/adding-scopes.mdx similarity index 97% rename from docs/integrate-frameworks/adding-scopes.mdx rename to docs/integrate-into-frameworks/adding-scopes.mdx index e2b143b2..f45e12c0 100644 --- a/docs/integrate-frameworks/adding-scopes.mdx +++ b/docs/integrate-into-frameworks/adding-scopes.mdx @@ -180,6 +180,6 @@ Check these symptoms first when the workflow does not behave as expected. Use these links to continue from this workflow into the next related task. -- Wrap tools with [Wrap Tool Calls](/integrate-frameworks/wrap-tool-calls). -- Wrap model providers with [Wrap LLM Calls](/integrate-frameworks/wrap-llm-calls). +- Wrap tools with [Wrap Tool Calls](/integrate-into-frameworks/wrap-tool-calls). +- Wrap model providers with [Wrap LLM Calls](/integrate-into-frameworks/wrap-llm-calls). - Use [Code Examples](/instrument-applications/code-examples#scope-and-context-helpers) for explicit scope-stack propagation helpers. diff --git a/docs/integrate-frameworks/code-examples.mdx b/docs/integrate-into-frameworks/code-examples.mdx similarity index 94% rename from docs/integrate-frameworks/code-examples.mdx rename to docs/integrate-into-frameworks/code-examples.mdx index dfff546b..c57181bb 100644 --- a/docs/integrate-frameworks/code-examples.mdx +++ b/docs/integrate-into-frameworks/code-examples.mdx @@ -9,13 +9,13 @@ SPDX-License-Identifier: Apache-2.0 */} Use these examples for implementation surfaces: -- [Adding Scopes](/integrate-frameworks/adding-scopes) -- [Wrap Tool Calls](/integrate-frameworks/wrap-tool-calls) -- [Wrap LLM Calls](/integrate-frameworks/wrap-llm-calls) -- [Non-Serializable Data](/integrate-frameworks/non-serializable-data) -- [Using Codecs](/integrate-frameworks/using-codecs) -- [Provider Codecs](/integrate-frameworks/provider-codecs) -- [Provider Response Codecs](/integrate-frameworks/provider-response-codecs) +- [Adding Scopes](/integrate-into-frameworks/adding-scopes) +- [Wrap Tool Calls](/integrate-into-frameworks/wrap-tool-calls) +- [Wrap LLM Calls](/integrate-into-frameworks/wrap-llm-calls) +- [Non-Serializable Data](/integrate-into-frameworks/non-serializable-data) +- [Using Codecs](/integrate-into-frameworks/using-codecs) +- [Provider Codecs](/integrate-into-frameworks/provider-codecs) +- [Provider Response Codecs](/integrate-into-frameworks/provider-response-codecs) ## Preferred Integration Order @@ -256,7 +256,7 @@ event( NeMo Relay keeps sample third-party integrations as patch sets under `patches/` and pinned upstream checkouts under `third_party/`. For the current OpenClaw end-user integration, use the -[OpenClaw Plugin Guide](/integrations/openclaw-plugin). +[OpenClaw Plugin Guide](/supported-integrations/openclaw-plugin). The following table lists maintained patch checkouts: diff --git a/docs/integrate-frameworks/non-serializable-data.mdx b/docs/integrate-into-frameworks/non-serializable-data.mdx similarity index 95% rename from docs/integrate-frameworks/non-serializable-data.mdx rename to docs/integrate-into-frameworks/non-serializable-data.mdx index ce9bfc6a..c3f62091 100644 --- a/docs/integrate-frameworks/non-serializable-data.mdx +++ b/docs/integrate-into-frameworks/non-serializable-data.mdx @@ -185,7 +185,7 @@ contract. Use these links to continue from this workflow into the next related task. -- Wrap the framework boundary with [Wrap Tool Calls](/integrate-frameworks/wrap-tool-calls) or [Wrap LLM Calls](/integrate-frameworks/wrap-llm-calls). -- Use [Provider Codecs](/integrate-frameworks/provider-codecs) when provider payloads need normalized request or response annotations. -- Use the typed value codec examples in [Using Codecs](/integrate-frameworks/using-codecs#typed-value-codecs) for structured conversion helpers. +- Wrap the framework boundary with [Wrap Tool Calls](/integrate-into-frameworks/wrap-tool-calls) or [Wrap LLM Calls](/integrate-into-frameworks/wrap-llm-calls). +- Use [Provider Codecs](/integrate-into-frameworks/provider-codecs) when provider payloads need normalized request or response annotations. +- Use the typed value codec examples in [Using Codecs](/integrate-into-frameworks/using-codecs#typed-value-codecs) for structured conversion helpers. - Use [Add Middleware](/instrument-applications/advanced-guide) before adding request transforms. diff --git a/docs/integrate-frameworks/provider-codecs.mdx b/docs/integrate-into-frameworks/provider-codecs.mdx similarity index 95% rename from docs/integrate-frameworks/provider-codecs.mdx rename to docs/integrate-into-frameworks/provider-codecs.mdx index e22d59d9..b311b626 100644 --- a/docs/integrate-frameworks/provider-codecs.mdx +++ b/docs/integrate-into-frameworks/provider-codecs.mdx @@ -33,7 +33,7 @@ A provider codec is a pure data translator at the NeMo Relay LLM boundary. - An LLM request codec converts a raw provider request into a normalized annotated request, then encodes any annotated edits back into the original provider request. - An LLM response codec converts a raw provider response into a normalized response annotation for lifecycle events. -Provider codecs let framework code keep using provider-native payloads while NeMo Relay middleware works against a shared annotated model. For application-facing type conversion, use [Using Codecs](/integrate-frameworks/using-codecs). +Provider codecs let framework code keep using provider-native payloads while NeMo Relay middleware works against a shared annotated model. For application-facing type conversion, use [Using Codecs](/integrate-into-frameworks/using-codecs). ## How Provider Codecs Work @@ -45,7 +45,7 @@ When a managed LLM call has a request codec: 4. NeMo Relay calls `encode` to merge the annotated request back into the original raw request. 5. Execution intercepts and the provider callback receive the encoded provider request. -When a managed LLM call has a response codec, NeMo Relay decodes the raw provider response for observability and attaches the result to the emitted LLM end event. The response codec does not rewrite the value returned to the application. Use [Provider Response Codecs](/integrate-frameworks/provider-response-codecs) for response-only behavior and custom response codec examples. +When a managed LLM call has a response codec, NeMo Relay decodes the raw provider response for observability and attaches the result to the emitted LLM end event. The response codec does not rewrite the value returned to the application. Use [Provider Response Codecs](/integrate-into-frameworks/provider-response-codecs) for response-only behavior and custom response codec examples. Codec implementations should preserve fields they do not understand. Treat `encode` as a merge operation over the original provider payload, not as a full replacement. @@ -368,7 +368,7 @@ contract. Use these links to continue from this workflow into the next related task. -- Use [Using Codecs](/integrate-frameworks/using-codecs) for typed value codecs. -- Use [Provider Response Codecs](/integrate-frameworks/provider-response-codecs) for response-only annotations and subscriber examples. +- Use [Using Codecs](/integrate-into-frameworks/using-codecs) for typed value codecs. +- Use [Provider Response Codecs](/integrate-into-frameworks/provider-response-codecs) for response-only annotations and subscriber examples. - Use [Add Middleware](/instrument-applications/advanced-guide) before adding request transforms. -- Use [Handle Non-Serializable Data](/integrate-frameworks/non-serializable-data) when the framework boundary includes SDK objects or streams that cannot pass through JSON payloads. +- Use [Handle Non-Serializable Data](/integrate-into-frameworks/non-serializable-data) when the framework boundary includes SDK objects or streams that cannot pass through JSON payloads. diff --git a/docs/integrate-frameworks/provider-response-codecs.mdx b/docs/integrate-into-frameworks/provider-response-codecs.mdx similarity index 96% rename from docs/integrate-frameworks/provider-response-codecs.mdx rename to docs/integrate-into-frameworks/provider-response-codecs.mdx index 27b9c638..5cc367d4 100644 --- a/docs/integrate-frameworks/provider-response-codecs.mdx +++ b/docs/integrate-into-frameworks/provider-response-codecs.mdx @@ -24,7 +24,7 @@ Response codecs are observability-only: You need: -- A managed LLM boundary from [Wrap LLM Calls](/integrate-frameworks/wrap-llm-calls). +- A managed LLM boundary from [Wrap LLM Calls](/integrate-into-frameworks/wrap-llm-calls). - A raw provider response that is JSON-compatible. - A built-in response codec or a custom response codec for the provider response shape. - A subscriber or exporter that consumes `annotated_response` from LLM end events. @@ -345,6 +345,6 @@ Check these symptoms first when the workflow does not behave as expected. Use these links to continue from this workflow into the next related task. -- Use [Provider Codecs](/integrate-frameworks/provider-codecs) for request-side provider codecs and full request/response examples. -- Use [Wrap LLM Calls](/integrate-frameworks/wrap-llm-calls) to add the managed LLM boundary first. -- Use [Observability](/plugins/observability/about) after annotations are visible in local subscribers. +- Use [Provider Codecs](/integrate-into-frameworks/provider-codecs) for request-side provider codecs and full request/response examples. +- Use [Wrap LLM Calls](/integrate-into-frameworks/wrap-llm-calls) to add the managed LLM boundary first. +- Use [Observability](/observability-plugin/about) after annotations are visible in local subscribers. diff --git a/docs/integrate-frameworks/using-codecs.mdx b/docs/integrate-into-frameworks/using-codecs.mdx similarity index 89% rename from docs/integrate-frameworks/using-codecs.mdx rename to docs/integrate-into-frameworks/using-codecs.mdx index 38d3c6b1..e8201a80 100644 --- a/docs/integrate-frameworks/using-codecs.mdx +++ b/docs/integrate-into-frameworks/using-codecs.mdx @@ -18,7 +18,7 @@ You will choose typed value codecs for framework-facing wrappers so that: - Middleware and subscribers receive predictable serialized values - The framework callback still receives the application type it expects -For provider-native LLM payload normalization, use [Provider Codecs](/integrate-frameworks/provider-codecs). +For provider-native LLM payload normalization, use [Provider Codecs](/integrate-into-frameworks/provider-codecs). ## Before You Start @@ -40,7 +40,7 @@ Typed value codecs are different from provider codecs: | Typed value codec | Converts application values to and from JSON. | Dataclasses, Pydantic models, TypeScript object shapes, custom framework types. | | Provider codec | Converts provider-specific LLM requests and responses to annotated NeMo Relay request or response data. | OpenAI Chat, OpenAI Responses, Anthropic Messages, custom provider payloads. | -Use this page for typed value codecs. Use [Provider Codecs](/integrate-frameworks/provider-codecs) when middleware needs normalized LLM messages, tools, model names, generation parameters, or provider response annotations. +Use this page for typed value codecs. Use [Provider Codecs](/integrate-into-frameworks/provider-codecs) when middleware needs normalized LLM messages, tools, model names, generation parameters, or provider response annotations. ## How Typed Value Codecs Work @@ -173,6 +173,6 @@ contract. Use these links to continue from this workflow into the next related task. -- Use [Provider Codecs](/integrate-frameworks/provider-codecs) when provider payloads need normalized request or response annotations. -- Use [Handle Non-Serializable Data](/integrate-frameworks/non-serializable-data) when framework objects cannot pass through JSON payloads. -- Use [Integrate into Frameworks Code Examples](/integrate-frameworks/code-examples) for explicit fallback APIs. +- Use [Provider Codecs](/integrate-into-frameworks/provider-codecs) when provider payloads need normalized request or response annotations. +- Use [Handle Non-Serializable Data](/integrate-into-frameworks/non-serializable-data) when framework objects cannot pass through JSON payloads. +- Use [Integrate into Frameworks Code Examples](/integrate-into-frameworks/code-examples) for explicit fallback APIs. diff --git a/docs/integrate-frameworks/wrap-llm-calls.mdx b/docs/integrate-into-frameworks/wrap-llm-calls.mdx similarity index 92% rename from docs/integrate-frameworks/wrap-llm-calls.mdx rename to docs/integrate-into-frameworks/wrap-llm-calls.mdx index 134114d3..745b7b16 100644 --- a/docs/integrate-frameworks/wrap-llm-calls.mdx +++ b/docs/integrate-into-frameworks/wrap-llm-calls.mdx @@ -17,7 +17,7 @@ You will place a managed NeMo Relay LLM execution wrapper at the provider bounda You need: -- A framework request or run scope. If the framework does not create one yet, start with [Adding Scopes](/integrate-frameworks/adding-scopes). +- A framework request or run scope. If the framework does not create one yet, start with [Adding Scopes](/integrate-into-frameworks/adding-scopes). - A stable model-provider boundary, such as a provider adapter or client dispatch method. - A JSON-compatible request projection inside `LLMRequest`. - A JSON-compatible response projection for subscribers and exporters. @@ -32,7 +32,7 @@ Follow this sequence to keep framework work attached to the expected runtime con 4. Pass a stable provider name and `model_name`. 5. Keep provider clients, streams, callbacks, and retry state outside emitted JSON payloads. -Use a request or response codec when provider payloads need normalization before middleware or events see them. Use [Provider Codecs](/integrate-frameworks/provider-codecs) for those cases. +Use a request or response codec when provider payloads need normalization before middleware or events see them. Use [Provider Codecs](/integrate-into-frameworks/provider-codecs) for those cases. ## Concrete LLM Example @@ -154,6 +154,6 @@ Check these symptoms first when the workflow does not behave as expected. Use these links to continue from this workflow into the next related task. -- Add tool integration with [Wrap Tool Calls](/integrate-frameworks/wrap-tool-calls). -- Normalize provider payloads with [Provider Codecs](/integrate-frameworks/provider-codecs). -- Use [Handle Non-Serializable Data](/integrate-frameworks/non-serializable-data) for provider clients, streams, and callback objects. +- Add tool integration with [Wrap Tool Calls](/integrate-into-frameworks/wrap-tool-calls). +- Normalize provider payloads with [Provider Codecs](/integrate-into-frameworks/provider-codecs). +- Use [Handle Non-Serializable Data](/integrate-into-frameworks/non-serializable-data) for provider clients, streams, and callback objects. diff --git a/docs/integrate-frameworks/wrap-tool-calls.mdx b/docs/integrate-into-frameworks/wrap-tool-calls.mdx similarity index 92% rename from docs/integrate-frameworks/wrap-tool-calls.mdx rename to docs/integrate-into-frameworks/wrap-tool-calls.mdx index 834ca8ae..df68460d 100644 --- a/docs/integrate-frameworks/wrap-tool-calls.mdx +++ b/docs/integrate-into-frameworks/wrap-tool-calls.mdx @@ -17,7 +17,7 @@ You will place a managed NeMo Relay tool execution wrapper at the framework's st You need: -- A framework request or run scope. If the framework does not create one yet, start with [Adding Scopes](/integrate-frameworks/adding-scopes). +- A framework request or run scope. If the framework does not create one yet, start with [Adding Scopes](/integrate-into-frameworks/adding-scopes). - A stable tool invocation boundary, such as a callback dispatcher, tool registry, or tool adapter. - A JSON-compatible projection of tool arguments and results. - A subscriber or exporter that can verify emitted tool events. @@ -124,7 +124,7 @@ async fn run_framework_tool() -> anyhow::Result { Use explicit lifecycle APIs only when the framework owns the real tool invocation internally and exposes only start and finish hooks. In that case, the integration must preserve the returned handle and call the matching end helper on every success and failure path. -Use standalone request-intercept or conditional-execution helpers when the framework needs only partial middleware behavior before it continues down its own invocation path. See [Code Examples](/integrate-frameworks/code-examples#fallback-explicit-api-calls) for those fallback surfaces. +Use standalone request-intercept or conditional-execution helpers when the framework needs only partial middleware behavior before it continues down its own invocation path. See [Code Examples](/integrate-into-frameworks/code-examples#fallback-explicit-api-calls) for those fallback surfaces. ## Validate the Tool Wrapper @@ -149,6 +149,6 @@ Check these symptoms first when the workflow does not behave as expected. Use these links to continue from this workflow into the next related task. -- Add model-provider integration with [Wrap LLM Calls](/integrate-frameworks/wrap-llm-calls). -- Add request ownership with [Adding Scopes](/integrate-frameworks/adding-scopes). -- Use [Handle Non-Serializable Data](/integrate-frameworks/non-serializable-data) when framework objects need ID-based lookup. +- Add model-provider integration with [Wrap LLM Calls](/integrate-into-frameworks/wrap-llm-calls). +- Add request ownership with [Adding Scopes](/integrate-into-frameworks/adding-scopes). +- Use [Handle Non-Serializable Data](/integrate-into-frameworks/non-serializable-data) when framework objects need ID-based lookup. diff --git a/docs/nemo-relay-cli/about.mdx b/docs/nemo-relay-cli/about.mdx index 4337c45f..d3350e44 100644 --- a/docs/nemo-relay-cli/about.mdx +++ b/docs/nemo-relay-cli/about.mdx @@ -31,7 +31,7 @@ Use these guides when you need to: If you are instrumenting an application or framework directly, use [Instrument Applications](/instrument-applications/about) or -[Integrate into Frameworks](/integrate-frameworks/about) instead. +[Integrate into Frameworks](/integrate-into-frameworks/about) instead. ## Agent Harness Support diff --git a/docs/plugins/observability/about.mdx b/docs/observability-plugin/about.mdx similarity index 82% rename from docs/plugins/observability/about.mdx rename to docs/observability-plugin/about.mdx index 76415dce..fe3fe601 100644 --- a/docs/plugins/observability/about.mdx +++ b/docs/observability-plugin/about.mdx @@ -54,10 +54,10 @@ Choose the exporter based on the downstream system: | Need | Use | |---|---| -| Raw canonical event stream | [Agent Trajectory Observability Format (ATOF)](/plugins/observability/atof) | -| Offline analysis, replay, or evaluation trajectories | [Agent Trajectory Interchange Format (ATIF)](/plugins/observability/atif) | -| Generic OTLP traces | [OpenTelemetry](/plugins/observability/opentelemetry) | -| OpenInference-oriented agent and LLM spans | [OpenInference](/plugins/observability/openinference) | +| Raw canonical event stream | [Agent Trajectory Observability Format (ATOF)](/observability-plugin/atof) | +| Offline analysis, replay, or evaluation trajectories | [Agent Trajectory Interchange Format (ATIF)](/observability-plugin/atif) | +| Generic OTLP traces | [OpenTelemetry](/observability-plugin/opentelemetry) | +| OpenInference-oriented agent and LLM spans | [OpenInference](/observability-plugin/openinference) | Start with in-process event inspection before exporting externally. Add sanitize guardrails before exporters receive sensitive payloads. @@ -82,10 +82,10 @@ are not written into ATIF. ## Pages -- [Observability Configuration](/plugins/observability/configuration) documents the whole plugin +- [Observability Configuration](/observability-plugin/configuration) documents the whole plugin component shape, activation, validation, and teardown. -- [Agent Trajectory Observability Format (ATOF)](/plugins/observability/atof) covers raw JSONL event stream export. -- [Agent Trajectory Interchange Format (ATIF)](/plugins/observability/atif) covers per-agent trajectory export. -- [OpenTelemetry](/plugins/observability/opentelemetry) covers generic OTLP trace export. -- [OpenInference](/plugins/observability/openinference) covers OpenInference-oriented OTLP trace +- [Agent Trajectory Observability Format (ATOF)](/observability-plugin/atof) covers raw JSONL event stream export. +- [Agent Trajectory Interchange Format (ATIF)](/observability-plugin/atif) covers per-agent trajectory export. +- [OpenTelemetry](/observability-plugin/opentelemetry) covers generic OTLP trace export. +- [OpenInference](/observability-plugin/openinference) covers OpenInference-oriented OTLP trace export. diff --git a/docs/plugins/observability/atif.mdx b/docs/observability-plugin/atif.mdx similarity index 100% rename from docs/plugins/observability/atif.mdx rename to docs/observability-plugin/atif.mdx diff --git a/docs/plugins/observability/atof.mdx b/docs/observability-plugin/atof.mdx similarity index 100% rename from docs/plugins/observability/atof.mdx rename to docs/observability-plugin/atof.mdx diff --git a/docs/plugins/observability/configuration.mdx b/docs/observability-plugin/configuration.mdx similarity index 100% rename from docs/plugins/observability/configuration.mdx rename to docs/observability-plugin/configuration.mdx diff --git a/docs/plugins/observability/openinference.mdx b/docs/observability-plugin/openinference.mdx similarity index 99% rename from docs/plugins/observability/openinference.mdx rename to docs/observability-plugin/openinference.mdx index ab9139cd..7d72b46a 100644 --- a/docs/plugins/observability/openinference.mdx +++ b/docs/observability-plugin/openinference.mdx @@ -50,7 +50,7 @@ OpenInference-style OTLP spans to Phoenix or another compatible backend. ## Fields OpenInference uses the same OTLP section shape as -[OpenTelemetry](/plugins/observability/opentelemetry): +[OpenTelemetry](/observability-plugin/opentelemetry): | Field | Default | Notes | |---|---|---| diff --git a/docs/plugins/observability/opentelemetry.mdx b/docs/observability-plugin/opentelemetry.mdx similarity index 100% rename from docs/plugins/observability/opentelemetry.mdx rename to docs/observability-plugin/opentelemetry.mdx diff --git a/docs/reference/performance.mdx b/docs/reference/performance.mdx index 2d0c6963..f6cd189d 100644 --- a/docs/reference/performance.mdx +++ b/docs/reference/performance.mdx @@ -34,4 +34,4 @@ Use these links to continue into adjacent concepts and workflows. - [Architecture](/about-nemo-relay/architecture) - [Middleware](/about-nemo-relay/concepts/middleware) - [Subscribers](/about-nemo-relay/concepts/subscribers) -- [Typed Wrappers And Codecs](/integrate-frameworks/using-codecs) +- [Typed Wrappers And Codecs](/integrate-into-frameworks/using-codecs) diff --git a/docs/resources/support-and-faqs.mdx b/docs/resources/support-and-faqs.mdx index 776d6ebb..4beb3987 100644 --- a/docs/resources/support-and-faqs.mdx +++ b/docs/resources/support-and-faqs.mdx @@ -202,7 +202,7 @@ Use manual lifecycle APIs only when the framework owns the invocation internally and you only have start and finish hooks. In that case, preserve the start handle, emit the matching end event, and handle error paths deliberately. See [Invocation API Selection](/instrument-applications/code-examples#invocation-api-selection) -and [Preferred Integration Order](/integrate-frameworks/code-examples#preferred-integration-order). +and [Preferred Integration Order](/integrate-into-frameworks/code-examples#preferred-integration-order). ### How Are Tool Calls And LLM Calls Different? @@ -222,7 +222,7 @@ object. Use the streaming helpers when callers need incremental output or when subscribers should observe streaming lifecycle activity. Refer to [Streaming LLM Execution](/instrument-applications/code-examples#streaming-llm-execution) -and [Wrap LLM Calls](/integrate-frameworks/wrap-llm-calls#streaming-providers). +and [Wrap LLM Calls](/integrate-into-frameworks/wrap-llm-calls#streaming-providers). ## Middleware, Policy, And Data @@ -301,7 +301,7 @@ instances outside NeMo Relay payloads. When a framework exposes non-serializable objects, pass stable IDs or summarized metadata through NeMo Relay and keep the original objects in framework-owned -storage. Refer to [Handle Non-Serializable Data](/integrate-frameworks/non-serializable-data). +storage. Refer to [Handle Non-Serializable Data](/integrate-into-frameworks/non-serializable-data). ### How Do I Keep Sensitive Data Out Of Observability? @@ -311,7 +311,7 @@ configuration and source code, and emit summarized metadata when full request or response bodies are not needed. Refer to [Middleware](/about-nemo-relay/concepts/middleware#guardrails) and -[Observability](/plugins/observability/about). +[Observability](/observability-plugin/about). ## Observability And Export @@ -325,7 +325,7 @@ operational tracing, trajectory export, or analytics. Refer to [Subscribers](/about-nemo-relay/concepts/subscribers), [Events](/about-nemo-relay/concepts/events), and -[Observability](/plugins/observability/about). +[Observability](/observability-plugin/about). ### Which Exporter Should I Use? @@ -335,10 +335,10 @@ OpenInference when your tracing stack expects OpenInference-style agent and LLM semantics. Use Agent Trajectory Interchange Format (ATIF) when you need trajectory artifacts for analysis, replay, or evaluation workflows. -Refer to [Exporter Selection](/plugins/observability/about#exporter-selection), -[OpenTelemetry](/plugins/observability/opentelemetry), -[OpenInference](/plugins/observability/openinference), and -[Agent Trajectory Interchange Format (ATIF)](/plugins/observability/atif). +Refer to [Exporter Selection](/observability-plugin/about#exporter-selection), +[OpenTelemetry](/observability-plugin/opentelemetry), +[OpenInference](/observability-plugin/openinference), and +[Agent Trajectory Interchange Format (ATIF)](/observability-plugin/atif). ### Can I Use NeMo Relay Just For Observability Without Adaptive Tuning Or Middleware? @@ -384,10 +384,10 @@ telemetry and in-memory state so the runtime can observe representative workflows before changing behavior. Enable active behavior one area at a time, such as adaptive hints, tool parallelism, or cache-governor behavior. -Refer to [Adaptive](/plugins/adaptive/about), -[Adaptive Configuration](/plugins/adaptive/configuration), -[Adaptive Cache Governor (ACG)](/plugins/adaptive/acg), and -[Adaptive Hints](/plugins/adaptive/adaptive-hints). +Refer to [Adaptive](/adaptive-plugin/about), +[Adaptive Configuration](/adaptive-plugin/configuration), +[Adaptive Cache Governor (ACG)](/adaptive-plugin/acg), and +[Adaptive Hints](/adaptive-plugin/adaptive-hints). ## Framework Integration And APIs @@ -403,7 +403,7 @@ helpers only when the framework needs those decisions before it invokes its own downstream code. Refer to [Framework Integrations](/about-nemo-relay/concepts/framework-integrations) and -[Integrate into Frameworks](/integrate-frameworks/about). +[Integrate into Frameworks](/integrate-into-frameworks/about). ### How Does NeMo Relay Connect To My Favorite Agent Harness Or Framework? @@ -424,9 +424,9 @@ into a normalized request shape for middleware and encoded back before the real provider call. Use provider response codecs when provider responses need a normalized annotated shape for events or downstream consumers. -Refer to [Using Codecs](/integrate-frameworks/using-codecs), -[Provider Codecs](/integrate-frameworks/provider-codecs), and -[Provider Response Codecs](/integrate-frameworks/provider-response-codecs). +Refer to [Using Codecs](/integrate-into-frameworks/using-codecs), +[Provider Codecs](/integrate-into-frameworks/provider-codecs), and +[Provider Response Codecs](/integrate-into-frameworks/provider-response-codecs). ### How Are Third-Party Integrations Maintained? @@ -435,15 +435,15 @@ upstream source checkouts under `third_party/`. Use the repository wrapper scripts when checking or applying those patches, and regenerate the patch after changing files inside a submodule. -Refer to [Framework Integration Code Examples](/integrate-frameworks/code-examples#quickstart-apply-maintained-patches) +Refer to [Framework Integration Code Examples](/integrate-into-frameworks/code-examples#quickstart-apply-maintained-patches) and the repository root `third_party/README.md`. ### Where Are The API Docs? Use [API](/reference/api) for generated symbol-level documentation. -The primary generated entry points are [Python API](/reference/api/python), -[Node.js API](/reference/api/nodejs), and -[Rust API](/reference/api/rust). +The primary generated entry points are [Python API](/reference/api/python-library-reference), +[Node.js API](/reference/api/nodejs-library-reference), and +[Rust API](/reference/api/rust-library-reference). Go, WebAssembly, and raw FFI are experimental and source-first; use their source directories and tests when you need exact behavior. diff --git a/docs/resources/troubleshooting/index.mdx b/docs/resources/troubleshooting/index.mdx index a19d245d..c0c5e4ed 100644 --- a/docs/resources/troubleshooting/index.mdx +++ b/docs/resources/troubleshooting/index.mdx @@ -119,7 +119,7 @@ Use [Middleware](/about-nemo-relay/concepts/middleware) to confirm when an execu Confirm that the subscriber is registered before the runtime emits the events you expect. For scope-local subscribers, confirm that the active scope is the owning scope or a descendant scope. -Use [Subscribers](/about-nemo-relay/concepts/subscribers), [Events](/about-nemo-relay/concepts/events), and [Observability](/plugins/observability/about) to verify lifecycle timing and event names. +Use [Subscribers](/about-nemo-relay/concepts/subscribers), [Events](/about-nemo-relay/concepts/events), and [Observability](/observability-plugin/about) to verify lifecycle timing and event names. ## Events Are Missing Expected Fields @@ -134,21 +134,21 @@ exporter subscribed after the relevant events were emitted, or the export filter does not match the active `root_uuid`. Mixed trajectories usually mean multiple agents share a root scope or the export did not filter by root scope. -Use [Agent Trajectory Interchange Format (ATIF)](/plugins/observability/atif) -and [Observability](/plugins/observability/about) to confirm exporter +Use [Agent Trajectory Interchange Format (ATIF)](/observability-plugin/atif) +and [Observability](/observability-plugin/about) to confirm exporter setup, event collection timing, and root-scope filtering. ## LLM Stream Output Is Missing The Final Chunk When wrapping streamed LLM responses, confirm that the stream wrapper receives the provider's terminal event and that the application drains the stream until completion. A stream that is dropped early can prevent finalizers, collectors, or subscribers from seeing the completed output. -Use [Wrap LLM Calls](/integrate-frameworks/wrap-llm-calls) and [Provider Response Codecs](/integrate-frameworks/provider-response-codecs) to verify the expected stream event format. +Use [Wrap LLM Calls](/integrate-into-frameworks/wrap-llm-calls) and [Provider Response Codecs](/integrate-into-frameworks/provider-response-codecs) to verify the expected stream event format. ## Provider Payloads Fail To Convert JSON conversion errors usually mean the integration passed a value that cannot be represented in NeMo Relay's JSON model, such as functions, class instances, handles, or provider-specific streaming objects. -Use [Non-Serializable Data](/integrate-frameworks/non-serializable-data), [Provider Codecs](/integrate-frameworks/provider-codecs), and [Using Codecs](/integrate-frameworks/using-codecs) to define explicit conversions for provider-specific payloads. +Use [Non-Serializable Data](/integrate-into-frameworks/non-serializable-data), [Provider Codecs](/integrate-into-frameworks/provider-codecs), and [Using Codecs](/integrate-into-frameworks/using-codecs) to define explicit conversions for provider-specific payloads. ## Plugin Configuration Does Not Validate @@ -163,9 +163,9 @@ the runtime path actually reaches that component. If behavior does not change, check whether the configured policy is disabled, scoped too narrowly, or not connected to the call path under test. -Use [Adaptive Configuration](/plugins/adaptive/configuration), -[Adaptive Cache Governor (ACG)](/plugins/adaptive/acg), and -[Adaptive Hints](/plugins/adaptive/adaptive-hints) to verify component +Use [Adaptive Configuration](/adaptive-plugin/configuration), +[Adaptive Cache Governor (ACG)](/adaptive-plugin/acg), and +[Adaptive Hints](/adaptive-plugin/adaptive-hints) to verify component names and configuration scope. ## Third-Party Patch Does Not Apply @@ -182,4 +182,4 @@ If the patch still does not apply, confirm that the local checkout is clean and First reproduce the behavior through the closest core or binding-level API. If the core API behaves correctly, inspect the integration wrapper, codec, or provider adapter that translates provider calls into NeMo Relay calls. -Use [Integrate Frameworks](/integrate-frameworks/about), [Wrap Tool Calls](/integrate-frameworks/wrap-tool-calls), and [Wrap LLM Calls](/integrate-frameworks/wrap-llm-calls) to compare the integration path with the core runtime path. +Use [Integrate into Frameworks](/integrate-into-frameworks/about), [Wrap Tool Calls](/integrate-into-frameworks/wrap-tool-calls), and [Wrap LLM Calls](/integrate-into-frameworks/wrap-llm-calls) to compare the integration path with the core runtime path. diff --git a/docs/resources/troubleshooting/trace-incident-runbook.mdx b/docs/resources/troubleshooting/trace-incident-runbook.mdx index 82886e03..700840f1 100644 --- a/docs/resources/troubleshooting/trace-incident-runbook.mdx +++ b/docs/resources/troubleshooting/trace-incident-runbook.mdx @@ -65,7 +65,7 @@ Start with the code path that owns the real work. guidance. - If a framework owns scheduling, retries, callbacks, or provider payloads, verify that the integration uses - [Integrate into Frameworks](/integrate-frameworks/about) guidance. + [Integrate into Frameworks](/integrate-into-frameworks/about) guidance. - If a plugin installs runtime behavior, verify that the plugin is activated before the request path starts. @@ -105,8 +105,8 @@ areas: Refer to [Instrument a Tool Call](/instrument-applications/instrument-tool-call), [Instrument an LLM Call](/instrument-applications/instrument-llm-call), -[Wrap Tool Calls](/integrate-frameworks/wrap-tool-calls), and -[Wrap LLM Calls](/integrate-frameworks/wrap-llm-calls). +[Wrap Tool Calls](/integrate-into-frameworks/wrap-tool-calls), and +[Wrap LLM Calls](/integrate-into-frameworks/wrap-llm-calls). ## Confirm Subscriber And Exporter Registration @@ -122,8 +122,8 @@ already been emitted. Verify these conditions: - Shutdown, teardown, or request completion calls flush owned exporters before the process exits or the container stops. -Use [Observability](/plugins/observability/about), -[Observability Configuration](/plugins/observability/configuration), and +Use [Observability](/observability-plugin/about), +[Observability Configuration](/observability-plugin/configuration), and [Subscribers](/about-nemo-relay/concepts/subscribers) to verify the registration lifecycle. @@ -150,10 +150,10 @@ For OpenTelemetry or OpenInference export, confirm these settings: - The application flushes and shuts down the subscriber during graceful termination. -Refer to [Agent Trajectory Observability Format (ATOF)](/plugins/observability/atof), -[Agent Trajectory Interchange Format (ATIF)](/plugins/observability/atif), -[OpenTelemetry](/plugins/observability/opentelemetry), and -[OpenInference](/plugins/observability/openinference). +Refer to [Agent Trajectory Observability Format (ATOF)](/observability-plugin/atof), +[Agent Trajectory Interchange Format (ATIF)](/observability-plugin/atif), +[OpenTelemetry](/observability-plugin/opentelemetry), and +[OpenInference](/observability-plugin/openinference). ## Check For Duplicate Event Sources diff --git a/docs/integrations/about.mdx b/docs/supported-integrations/about.mdx similarity index 77% rename from docs/integrations/about.mdx rename to docs/supported-integrations/about.mdx index 18b5dfe2..d6bd2976 100644 --- a/docs/integrations/about.mdx +++ b/docs/supported-integrations/about.mdx @@ -29,16 +29,16 @@ security middleware, and optimization features. Use these guide links to move from the support matrix into setup and usage instructions. -- [OpenClaw Plugin Guide](/integrations/openclaw-plugin) covers configuring the OpenClaw +- [OpenClaw Plugin Guide](/supported-integrations/openclaw-plugin) covers configuring the OpenClaw plugin, mapping OpenClaw hooks to NeMo Relay telemetry, and understanding current LLM replay fidelity boundaries. -- [LangChain Integration Guide](/integrations/langchain) covers installing the LangChain +- [LangChain Integration Guide](/supported-integrations/langchain) covers installing the LangChain extra and adding NeMo Relay middleware and callbacks to LangChain agents. -- [LangGraph Integration Guide](/integrations/langgraph) covers installing the LangGraph +- [LangGraph Integration Guide](/supported-integrations/langgraph) covers installing the LangGraph extra and adding NeMo Relay callbacks to LangGraph workflows. -- [Deep Agents Integration Guide](/integrations/deepagents) covers installing the Deep +- [Deep Agents Integration Guide](/supported-integrations/deepagents) covers installing the Deep Agents extra and capturing Deep Agents-specific marks, skills, subagents, and human-in-the-loop lifecycle events. If you are building a new framework integration or patching framework internals, -use [Integrate into Frameworks](/integrate-frameworks/about) instead. +use [Integrate into Frameworks](/integrate-into-frameworks/about) instead. diff --git a/docs/integrations/deepagents.mdx b/docs/supported-integrations/deepagents.mdx similarity index 98% rename from docs/integrations/deepagents.mdx rename to docs/supported-integrations/deepagents.mdx index f957192e..fa247fe2 100644 --- a/docs/integrations/deepagents.mdx +++ b/docs/supported-integrations/deepagents.mdx @@ -105,5 +105,5 @@ It captures: Remote graphs or processes still need NeMo Relay instrumentation in that graph or process to capture their internal model and tool calls. -Refer to [Observability](/plugins/observability/about) +Refer to [Observability](/observability-plugin/about) for details on exporting NeMo Relay observability data to third-party systems. diff --git a/docs/integrations/langchain.mdx b/docs/supported-integrations/langchain.mdx similarity index 93% rename from docs/integrations/langchain.mdx rename to docs/supported-integrations/langchain.mdx index 8b4736ab..f9d83011 100644 --- a/docs/integrations/langchain.mdx +++ b/docs/supported-integrations/langchain.mdx @@ -90,4 +90,4 @@ print(f"Final response: {final_message.content}") ## Observability -Refer to [Observability](/plugins/observability/about) for details on exporting NeMo Relay observability data to third-party systems. +Refer to [Observability](/observability-plugin/about) for details on exporting NeMo Relay observability data to third-party systems. diff --git a/docs/integrations/langgraph.mdx b/docs/supported-integrations/langgraph.mdx similarity index 94% rename from docs/integrations/langgraph.mdx rename to docs/supported-integrations/langgraph.mdx index f34f14ff..b3723263 100644 --- a/docs/integrations/langgraph.mdx +++ b/docs/supported-integrations/langgraph.mdx @@ -103,4 +103,4 @@ pip install "nemo-relay[langgraph,langchain-nvidia]" ## Observability -Refer to [Observability](/plugins/observability/about) for details on exporting NeMo Relay observability data to third-party systems. +Refer to [Observability](/observability-plugin/about) for details on exporting NeMo Relay observability data to third-party systems. diff --git a/docs/integrations/openclaw-plugin.mdx b/docs/supported-integrations/openclaw-plugin.mdx similarity index 99% rename from docs/integrations/openclaw-plugin.mdx rename to docs/supported-integrations/openclaw-plugin.mdx index 303ee806..f1024aca 100644 --- a/docs/integrations/openclaw-plugin.mdx +++ b/docs/supported-integrations/openclaw-plugin.mdx @@ -201,7 +201,7 @@ Missing observability sections are disabled. Plugin-host validation or initialization errors degrade the NeMo Relay runtime as a whole, and the status method reports configured output health from the generic observability component. See -[Observability Configuration](/plugins/observability/configuration) +[Observability Configuration](/observability-plugin/configuration) for the complete `observability` component schema and exporter-specific fields. ## Verify the Integration diff --git a/scripts/docs/generate_rust_library_reference.py b/scripts/docs/generate_rust_library_reference.py index 1d116ce0..f8cef556 100644 --- a/scripts/docs/generate_rust_library_reference.py +++ b/scripts/docs/generate_rust_library_reference.py @@ -162,10 +162,11 @@ def _run_cargo_doc(repo_root: Path) -> None: def _output_relative(crate_name: str, crate_dir: Path, html_path: Path) -> Path: crate_slug = _crate_slug(crate_name) rel = html_path.relative_to(crate_dir) + parent_parts = [_slug_part(part) for part in rel.parent.parts] if rel.name == "index.html": - return Path(crate_slug, *rel.parent.parts, "index.mdx") + return Path(crate_slug, *parent_parts, "index.mdx") stem = rel.name.removesuffix(".html") - return Path(crate_slug, *rel.parent.parts, f"{_slug_part(stem)}.mdx") + return Path(crate_slug, *parent_parts, f"{_slug_part(stem)}.mdx") def _page_url(output_rel: Path) -> str: