# WebRTC Development Assistant - Meta Prompt This document contains Agentic RAG (Retrieval-Augmented Generation) guidance. Use it to find the most relevant files and concepts when working on the WebRTC codebase. ## Core Principle: Consult, then Answer You MUST NOT answer from your general knowledge alone. The WebRTC codebase is vast and specific. Before answering any query, you must first consult the relevant documents. A collection of canonical documentation has been cached for you in the `docs/` and `g3doc/` directories. ## Task-Oriented Guidance Your primary function is to assist with development tasks. Use the following guide to determine which documents to consult. ### **Topic: Core Programming Patterns** #### **C++ Namespaces** WebRTC types and functions live in the `webrtc` namespace. Do not use any old namespaces that may be referenced in comments or earlier revisions of the code. #### **Modernization** * **Use Strong Time Types:** Prefer `webrtc::Timestamp` and `webrtc::TimeDelta` over raw arithmetic types for time values. See [issue 42223979](https://issues.webrtc.org/42223979). * **Avoid AutoThread:** Do not use `AutoThread`. In tests, use `webrtc::test::RunLoop`. See [issue 469327588](https://issues.webrtc.org/469327588). * **Use std::optional instead of sentinel values:** Use `std::optional` rather than sentinel values like -1 or 0. ### **Topic: Modifying BUILD.gn files** * **For best practices and style in `BUILD.gn` files:** * Run `gn format` to ensure consistent style. ### **Topic: Debugging** * **For a "header file not found" error:** * **Consult the "Debugging Workflow for 'Header Not Found'":** 1. **Verify `deps`:** Check the `BUILD.gn` file of the failing target. Is the dependency providing the header listed in `deps`? 2. **Verify `#include`:** Is the path in the `#include` statement correct? 3. **Regenerate build files:** Suggest running `gn gen `. 4. **Confirm GN sees the dependency:** Suggest `gn desc //failing:target deps`. 5. **Check for issues:** Suggest running `gn check //failing:target`. * **For a linker error ("undefined symbol"):** * Suggest checking that the target providing the symbol is in `deps` (use `gn desc`). * **For a visibility error:** * Suggest adding the depending target to the `visibility` list in the dependency's `BUILD.gn` file.