mirror of
https://github.com/langchain-ai/langgraph.git
synced 2026-09-17 23:27:56 +02:00
## Why `docs/llms.txt` is written by hand and was last touched in February, so the index served at <https://langchain-ai.github.io/langgraph/llms.txt> had drifted badly: - 12 pages listed, against the 43 the docs site publishes. - One entry, `/oss/python/langgraph/why-langgraph`, now 404s. The deploy workflow only fires on `docs/**` pushes, so nothing brought the file back in line as the docs site changed. It is served verbatim: `generate_redirects.py` copies it into `docs/_site` via a `static_files` list, and `deploy-redirects.yml` uploads that directory to Pages. The docs site already generates exactly this index, and regenerates it on every deploy: ``` https://docs.langchain.com/oss/python/langgraph/llms.txt ``` ## What changed `generate_redirects.py` now fetches that index at build time and writes it into `_site`, so the published file cannot drift from the docs site. The committed `docs/llms.txt` stays as a fallback only, refreshed here to current content. `deploy-redirects.yml` gains a weekly `schedule:` trigger, so docs changes that never touch this repo still reach the deployed file. The `permissions:` block is unchanged. ## Fetching remote content in CI The fetched body is published on a public Pages site, so it is validated before it is written: - The URL is a hardcoded module constant, never built from input. - Both that URL and the post-redirect `response.url` are checked against an HTTPS-plus-single-host allowlist. `urlopen` follows redirects, so checking only the request URL would not be enough. - 30 second timeout, response capped at 1MB, decoded as UTF-8. - The body must open with a markdown heading and contain a docs.langchain.com link, which rejects an error page or a truncated response. Any failure returns `None` and falls back to the committed copy, so a docs.langchain.com outage degrades to a stale file rather than a broken deploy or a published error page. ## Verification Ran `python docs/generate_redirects.py`: 294 redirect files, `llms.txt` fetched, 43 entries. Each rejection path was exercised against a stubbed `urlopen` and all fall back to the committed file: | Case | Result | |---|---| | Network error | falls back | | Timeout | falls back | | Redirect to another host | falls back | | Body over 1MB | falls back | | Invalid UTF-8 | falls back | | HTML error page | falls back | | Empty body | falls back | | Valid index | published | Allowlist rejects `http://docs.langchain.com/...`, `https://evil.com/...`, and `https://docs.langchain.com.evil.com/...`. ## Note on ordering The fallback committed here is labelled "LangGraph (Python)", which is what the docs site will serve once langchain-ai/docs#6032 deploys. Until then the fetched file reads "Open source (Python)". No action needed; it self-corrects. --- Written with Claude Code; I reviewed the diff and ran the verification above.
50 lines
3.9 KiB
Plaintext
50 lines
3.9 KiB
Plaintext
# Docs by LangChain: LangGraph (Python)
|
|
|
|
> Markdown index of the LangGraph (Python) documentation.
|
|
|
|
## LangGraph (Python)
|
|
|
|
- [Memory](https://docs.langchain.com/oss/python/langgraph/add-memory.md)
|
|
- [Build a custom RAG agent with LangGraph](https://docs.langchain.com/oss/python/langgraph/agentic-rag.md)
|
|
- [Application structure](https://docs.langchain.com/oss/python/langgraph/application-structure.md)
|
|
- [Backward compatibility](https://docs.langchain.com/oss/python/langgraph/backward-compatibility.md)
|
|
- [Case studies](https://docs.langchain.com/oss/python/langgraph/case-studies.md)
|
|
- [Changelog](https://docs.langchain.com/oss/python/langgraph/changelog-js.md)
|
|
- [Changelog](https://docs.langchain.com/oss/python/langgraph/changelog-py.md)
|
|
- [Checkpointers](https://docs.langchain.com/oss/python/langgraph/checkpointers.md)
|
|
- [Choosing between Graph and Functional APIs](https://docs.langchain.com/oss/python/langgraph/choosing-apis.md)
|
|
- [Deployment](https://docs.langchain.com/oss/python/langgraph/deploy.md)
|
|
- [GRAPH_RECURSION_LIMIT](https://docs.langchain.com/oss/python/langgraph/errors/GRAPH_RECURSION_LIMIT.md)
|
|
- [INVALID_CHAT_HISTORY](https://docs.langchain.com/oss/python/langgraph/errors/INVALID_CHAT_HISTORY.md)
|
|
- [INVALID_CONCURRENT_GRAPH_UPDATE](https://docs.langchain.com/oss/python/langgraph/errors/INVALID_CONCURRENT_GRAPH_UPDATE.md)
|
|
- [INVALID_GRAPH_NODE_RETURN_VALUE](https://docs.langchain.com/oss/python/langgraph/errors/INVALID_GRAPH_NODE_RETURN_VALUE.md)
|
|
- [MISSING_CHECKPOINTER](https://docs.langchain.com/oss/python/langgraph/errors/MISSING_CHECKPOINTER.md)
|
|
- [MULTIPLE_SUBGRAPHS](https://docs.langchain.com/oss/python/langgraph/errors/MULTIPLE_SUBGRAPHS.md)
|
|
- [Event streaming](https://docs.langchain.com/oss/python/langgraph/event-streaming.md)
|
|
- [Fault tolerance](https://docs.langchain.com/oss/python/langgraph/fault-tolerance.md)
|
|
- [Custom stream channels](https://docs.langchain.com/oss/python/langgraph/frontend/custom-stream-channels.md)
|
|
- [Graph execution](https://docs.langchain.com/oss/python/langgraph/frontend/graph-execution.md)
|
|
- [Overview](https://docs.langchain.com/oss/python/langgraph/frontend/overview.md)
|
|
- [Functional API overview](https://docs.langchain.com/oss/python/langgraph/functional-api.md)
|
|
- [Graph API overview](https://docs.langchain.com/oss/python/langgraph/graph-api.md)
|
|
- [Install LangGraph](https://docs.langchain.com/oss/python/langgraph/install.md)
|
|
- [Interrupts](https://docs.langchain.com/oss/python/langgraph/interrupts.md)
|
|
- [Run a local server](https://docs.langchain.com/oss/python/langgraph/local-server.md)
|
|
- [LangSmith Observability](https://docs.langchain.com/oss/python/langgraph/observability.md)
|
|
- [LangGraph overview](https://docs.langchain.com/oss/python/langgraph/overview.md)
|
|
- [Persistence](https://docs.langchain.com/oss/python/langgraph/persistence.md)
|
|
- [LangGraph runtime](https://docs.langchain.com/oss/python/langgraph/pregel.md)
|
|
- [Quickstart](https://docs.langchain.com/oss/python/langgraph/quickstart.md)
|
|
- [Build a custom SQL agent](https://docs.langchain.com/oss/python/langgraph/sql-agent.md)
|
|
- [Stores](https://docs.langchain.com/oss/python/langgraph/stores.md)
|
|
- [Streaming](https://docs.langchain.com/oss/python/langgraph/streaming.md)
|
|
- [LangSmith Studio](https://docs.langchain.com/oss/python/langgraph/studio.md)
|
|
- [Test](https://docs.langchain.com/oss/python/langgraph/test.md)
|
|
- [Thinking in LangGraph](https://docs.langchain.com/oss/python/langgraph/thinking-in-langgraph.md)
|
|
- [Agent Chat UI](https://docs.langchain.com/oss/python/langgraph/ui.md)
|
|
- [Use the functional API](https://docs.langchain.com/oss/python/langgraph/use-functional-api.md)
|
|
- [Use the graph API](https://docs.langchain.com/oss/python/langgraph/use-graph-api.md)
|
|
- [Subgraphs](https://docs.langchain.com/oss/python/langgraph/use-subgraphs.md)
|
|
- [Use time-travel](https://docs.langchain.com/oss/python/langgraph/use-time-travel.md)
|
|
- [Workflows and agents](https://docs.langchain.com/oss/python/langgraph/workflows-agents.md)
|