From 57a877279d01fadf09dbb4a0dc9d91716a6340ec Mon Sep 17 00:00:00 2001 From: Lauren Hirata Singh Date: Wed, 29 Oct 2025 12:12:06 -0400 Subject: [PATCH] chore(docs): Revert the revert "fix: rollback doc redirects" (add redirects) (#6353) Reverts langchain-ai/langgraph#6301 This adds redirects back --- .github/workflows/deploy_docs.yml | 88 +--- docs/_scripts/notebook_hooks.py | 454 ++++++++++++++---- .../langgraph-platform/local-server.md | 4 +- docs/mkdocs.yml | 160 +++--- 4 files changed, 435 insertions(+), 271 deletions(-) diff --git a/.github/workflows/deploy_docs.yml b/.github/workflows/deploy_docs.yml index 462d1e663..9b805039b 100644 --- a/.github/workflows/deploy_docs.yml +++ b/.github/workflows/deploy_docs.yml @@ -1,12 +1,9 @@ -name: Deploy Docs +name: Deploy Docs Redirects on: push: branches: - main - pull_request: - branches: - - main workflow_dispatch: permissions: @@ -23,18 +20,6 @@ defaults: working-directory: docs jobs: - get-changed-files: - runs-on: ubuntu-latest - outputs: - changed-files: ${{ steps.changed-files.outputs.added_modified }} - steps: - - uses: actions/checkout@v5 - - name: Get changed files - id: changed-files - uses: Ana06/get-changed-files@v2.3.0 - with: - filter: "docs/docs/**" - deploy: runs-on: ubuntu-latest timeout-minutes: 10 # Job will be cancelled if it runs for more than 10 minutes @@ -62,84 +47,21 @@ jobs: uv run pip install "git+https://${GITHUB_TOKEN}@github.com/langchain-ai/mkdocs-material-insiders.git" fi - - name: Run unit tests - # Run unit tests on the docs build pipeline - run: make tests - - name: Lint Docs - # This step lints the docs using the existing linting set up. - # It should be very fast and should not require any external services. - run: make lint-docs - name: Build llms-text run: make llms-text - - name: Build site - run: | - # If this is main branch, then we want to download stats. we do this - # with the env variable DOWNLOAD_STATS=true - if [ "${{ github.ref }}" == "refs/heads/main" ]; then - DOWNLOAD_STATS=true make build-docs - else - make build-docs - fi + + - name: Build site (redirects only) + run: make build-docs env: - MKDOCS_GIT_COMMITTERS_APIKEY: ${{ secrets.MKDOCS_GIT_COMMITTERS_APIKEY }} OPENAI_API_KEY: sf-proj-1234567890 # fake placeholder, shouldn't actually be used ANTHROPIC_API_KEY: sk-ant-api03-1234567890 # fake placeholder, shouldn't actually be used - - name: Check links in notebooks - env: - LANGCHAIN_API_KEY: test - if: github.event_name == 'schedule' - run: | - if [ "${{ github.event_name }}" == "schedule" ]; then - echo "Running link check on all HTML files matching notebooks in docs directory..." - uv run pytest -v \ - --check-links-ignore "https://(api|web|docs)\.smith\.langchain\.com/.*" \ - --check-links-ignore "https://academy\.langchain\.com/.*" \ - --check-links-ignore "https://x.com/.*" \ - --check-links-ignore "https://twitter.com/.*" \ - --check-links-ignore "https://github\.com/.*" \ - --check-links-ignore "http://localhost:8123/.*" \ - --check-links-ignore "http://localhost:2024.*" \ - --check-links-ignore "http://127.0.0.1:.*" \ - --check-links-ignore "/.*\.(ipynb|html)$" \ - --check-links-ignore "https://python\.langchain\.com/.*" \ - --check-links-ignore "https://openai\.com/.*" \ - --check-links-ignore "https://www\.uber\.com/.*" \ - --check-links-ignore "https://pepy\.tech/.*" \ - --check-links-ignore "docs/docs/static/wordmark_*" \ - --check-links $(find site -name "index.html" | grep -v 'storm/index.html') - - else - echo "Fetching changes from origin/main..." - git fetch origin main - echo "Checking for changed notebook files..." - CHANGED_FILES=$(git diff --name-only --diff-filter=d origin/main | grep 'docs/docs/.*\.ipynb$' | grep -v 'storm.ipynb' | sed -E 's|^docs/docs/|site/|; s/\.ipynb$/\/index.html/' || true) - echo "Changed files: ${CHANGED_FILES}" - if [ -n "${CHANGED_FILES}" ]; then - echo "Running link check on HTML files matching changed notebook files..." - uv run pytest -v \ - --check-links-ignore "https://(api|web|docs)\.smith\.langchain\.com/.*" \ - --check-links-ignore "https://academy\.langchain\.com/.*" \ - --check-links-ignore "http://localhost:8123/.*" \ - --check-links-ignore "http://localhost:2024.*" \ - --check-links-ignore "http://127.0.0.1:.*" \ - --check-links-ignore "https://x.com/.*" \ - --check-links-ignore "https://twitter.com/.*" \ - --check-links-ignore "https://github\.com/.*" \ - --check-links-ignore "/.*\.(ipynb|html)$" \ - --check-links-ignore "docs/docs/static/wordmark_*" \ - --check-links ${CHANGED_FILES} \ - || ([ $? = 5 ] && exit 0 || exit $?) - else - echo "No notebook files changed." - fi - fi - name: Configure GitHub Pages if: github.ref == 'refs/heads/main' uses: actions/configure-pages@v5 - name: Upload Pages Artifact - # if: github.ref == 'refs/heads/main' + if: github.ref == 'refs/heads/main' uses: actions/upload-pages-artifact@v4 with: path: ./docs/site/ diff --git a/docs/_scripts/notebook_hooks.py b/docs/_scripts/notebook_hooks.py index e88b2709f..bc2868704 100644 --- a/docs/_scripts/notebook_hooks.py +++ b/docs/_scripts/notebook_hooks.py @@ -27,66 +27,66 @@ DISABLED = os.getenv("DISABLE_NOTEBOOK_CONVERT") in ("1", "true", "True") REDIRECT_MAP = { # lib redirects - "how-tos/stream-values.ipynb": "how-tos/streaming.md#stream-graph-state", - "how-tos/stream-updates.ipynb": "how-tos/streaming.md#stream-graph-state", - "how-tos/streaming-content.ipynb": "how-tos/streaming.md", - "how-tos/stream-multiple.ipynb": "how-tos/streaming.md#stream-multiple-nodes", - "how-tos/streaming-tokens-without-langchain.ipynb": "how-tos/streaming.md#use-with-any-llm", - "how-tos/streaming-from-final-node.ipynb": "how-tos/streaming-specific-nodes.ipynb", - "how-tos/streaming-events-from-within-tools-without-langchain.ipynb": "how-tos/streaming-events-from-within-tools.ipynb#example-without-langchain", + "how-tos/stream-values.ipynb": "https://docs.langchain.com/oss/python/langgraph/streaming", + "how-tos/stream-updates.ipynb": "https://docs.langchain.com/oss/python/langgraph/streaming", + "how-tos/streaming-content.ipynb": "https://docs.langchain.com/oss/python/langgraph/streaming", + "how-tos/stream-multiple.ipynb": "https://docs.langchain.com/oss/python/langgraph/streaming", + "how-tos/streaming-tokens-without-langchain.ipynb": "https://docs.langchain.com/oss/python/langgraph/streaming", + "how-tos/streaming-from-final-node.ipynb": "https://docs.langchain.com/oss/python/langgraph/streaming", + "how-tos/streaming-events-from-within-tools-without-langchain.ipynb": "https://docs.langchain.com/oss/python/langgraph/streaming", # graph-api - "how-tos/state-reducers.ipynb": "how-tos/graph-api.md#define-and-update-state", - "how-tos/sequence.ipynb": "how-tos/graph-api.md#create-a-sequence-of-steps", - "how-tos/branching.ipynb": "how-tos/graph-api.md#create-branches", - "how-tos/recursion-limit.ipynb": "how-tos/graph-api.md#create-and-control-loops", - "how-tos/visualization.ipynb": "how-tos/graph-api.md#visualize-your-graph", - "how-tos/input_output_schema.ipynb": "how-tos/graph-api.md#define-input-and-output-schemas", - "how-tos/pass_private_state.ipynb": "how-tos/graph-api.md#pass-private-state-between-nodes", - "how-tos/state-model.ipynb": "how-tos/graph-api.md#use-pydantic-models-for-graph-state", - "how-tos/map-reduce.ipynb": "how-tos/graph-api.md#map-reduce-and-the-send-api", - "how-tos/command.ipynb": "how-tos/graph-api.md#combine-control-flow-and-state-updates-with-command", - "how-tos/configuration.ipynb": "how-tos/graph-api.md#add-runtime-configuration", - "how-tos/node-retries.ipynb": "how-tos/graph-api.md#add-retry-policies", - "how-tos/return-when-recursion-limit-hits.ipynb": "how-tos/graph-api.md#impose-a-recursion-limit", - "how-tos/async.ipynb": "how-tos/graph-api.md#async", + "how-tos/state-reducers.ipynb": "https://docs.langchain.com/oss/python/langgraph/graph-api#define-and-update-state", + "how-tos/sequence.ipynb": "https://docs.langchain.com/oss/python/langgraph/graph-api#create-a-sequence-of-steps", + "how-tos/branching.ipynb": "https://docs.langchain.com/oss/python/langgraph/graph-api#create-branches", + "how-tos/recursion-limit.ipynb": "https://docs.langchain.com/oss/python/langgraph/graph-api#create-and-control-loops", + "how-tos/visualization.ipynb": "https://docs.langchain.com/oss/python/langgraph/graph-api#visualize-your-graph", + "how-tos/input_output_schema.ipynb": "https://docs.langchain.com/oss/python/langgraph/graph-api#define-input-and-output-schemas", + "how-tos/pass_private_state.ipynb": "https://docs.langchain.com/oss/python/langgraph/graph-api#pass-private-state-between-nodes", + "how-tos/state-model.ipynb": "https://docs.langchain.com/oss/python/langgraph/graph-api#use-pydantic-models-for-graph-state", + "how-tos/map-reduce.ipynb": "https://docs.langchain.com/oss/python/langgraph/graph-api#map-reduce-and-the-send-api", + "how-tos/command.ipynb": "https://docs.langchain.com/oss/python/langgraph/graph-api#combine-control-flow-and-state-updates-with-command", + "how-tos/configuration.ipynb": "https://docs.langchain.com/oss/python/langgraph/graph-api#add-runtime-configuration", + "how-tos/node-retries.ipynb": "https://docs.langchain.com/oss/python/langgraph/graph-api#add-retry-policies", + "how-tos/return-when-recursion-limit-hits.ipynb": "https://docs.langchain.com/oss/python/langgraph/graph-api#impose-a-recursion-limit", + "how-tos/async.ipynb": "https://docs.langchain.com/oss/python/langgraph/graph-api#async", # memory how-tos - "how-tos/memory/manage-conversation-history.ipynb": "how-tos/memory/add-memory.md", - "how-tos/memory/delete-messages.ipynb": "how-tos/memory/add-memory.md#delete-messages", - "how-tos/memory/add-summary-conversation-history.ipynb": "how-tos/memory/add-memory.md#summarize-messages", - "how-tos/memory.ipynb": "how-tos/memory/add-memory.md", - "agents/memory.ipynb": "how-tos/memory/add-memory.md", + "how-tos/memory/manage-conversation-history.ipynb": "https://docs.langchain.com/oss/python/langgraph/add-memory", + "how-tos/memory/delete-messages.ipynb": "https://docs.langchain.com/oss/python/langgraph/add-memory#delete-messages", + "how-tos/memory/add-summary-conversation-history.ipynb": "https://docs.langchain.com/oss/python/langgraph/add-memory#summarize-messages", + "how-tos/memory.ipynb": "https://docs.langchain.com/oss/python/langgraph/add-memory", + "agents/memory.ipynb": "https://docs.langchain.com/oss/python/langgraph/add-memory", # subgraph how-tos - "how-tos/subgraph-transform-state.ipynb": "how-tos/subgraph.md#different-state-schemas", - "how-tos/subgraphs-manage-state.ipynb": "how-tos/subgraph.md#add-persistence", + "how-tos/subgraph-transform-state.ipynb": "https://docs.langchain.com/oss/python/langgraph/use-subgraphs#different-state-schemas", + "how-tos/subgraphs-manage-state.ipynb": "https://docs.langchain.com/oss/python/langgraph/use-subgraphs#add-persistence", # persistence how-tos - "how-tos/persistence_postgres.ipynb": "how-tos/memory/add-memory.md#use-in-production", - "how-tos/persistence_mongodb.ipynb": "how-tos/memory/add-memory.md#use-in-production", - "how-tos/persistence_redis.ipynb": "how-tos/memory/add-memory.md#use-in-production", - "how-tos/subgraph-persistence.ipynb": "how-tos/memory/add-memory.md#use-with-subgraphs", - "how-tos/cross-thread-persistence.ipynb": "how-tos/memory/add-memory.md#add-long-term-memory", - "cloud/how-tos/copy_threads": "cloud/how-tos/use_threads", - "cloud/how-tos/check-thread-status": "cloud/how-tos/use_threads", - "cloud/concepts/threads.md": "concepts/persistence.md#threads", - "how-tos/persistence.ipynb": "how-tos/memory/add-memory.md", + "how-tos/persistence_postgres.ipynb": "https://docs.langchain.com/oss/python/langgraph/add-memory#use-in-production", + "how-tos/persistence_mongodb.ipynb": "https://docs.langchain.com/oss/python/langgraph/add-memory#use-in-production", + "how-tos/persistence_redis.ipynb": "https://docs.langchain.com/oss/python/langgraph/add-memory#use-in-production", + "how-tos/subgraph-persistence.ipynb": "https://docs.langchain.com/oss/python/langgraph/add-memory#use-with-subgraphs", + "how-tos/cross-thread-persistence.ipynb": "https://docs.langchain.com/oss/python/langgraph/add-memory#add-long-term-memory", + "cloud/how-tos/copy_threads": "https://docs.langchain.com/langsmith/use-threads", + "cloud/how-tos/check-thread-status": "https://docs.langchain.com/langsmith/use-threads", + "cloud/concepts/threads.md": "https://docs.langchain.com/oss/python/langgraph/persistence#threads", + "how-tos/persistence.ipynb": "https://docs.langchain.com/oss/python/langgraph/add-memory", # tool calling how-tos - "how-tos/tool-calling-errors.ipynb": "how-tos/tool-calling.ipynb#handle-errors", - "how-tos/pass-config-to-tools.ipynb": "how-tos/tool-calling.ipynb#access-config", - "how-tos/pass-run-time-values-to-tools.ipynb": "how-tos/tool-calling.ipynb#read-state", - "how-tos/update-state-from-tools.ipynb": "how-tos/tool-calling.ipynb#update-state", - "agents/tools.md": "how-tos/tool-calling.md", + "how-tos/tool-calling-errors.ipynb": "https://docs.langchain.com/oss/python/langgraph/workflows-agents", + "how-tos/pass-config-to-tools.ipynb": "https://docs.langchain.com/oss/python/langgraph/workflows-agents", + "how-tos/pass-run-time-values-to-tools.ipynb": "https://docs.langchain.com/oss/python/langgraph/workflows-agents", + "how-tos/update-state-from-tools.ipynb": "https://docs.langchain.com/oss/python/langgraph/workflows-agents", + "agents/tools.md": "https://docs.langchain.com/oss/python/langgraph/workflows-agents", # multi-agent how-tos - "how-tos/agent-handoffs.ipynb": "how-tos/multi_agent.md#handoffs", - "how-tos/multi-agent-network.ipynb": "how-tos/multi_agent.md#use-in-a-multi-agent-system", - "how-tos/multi-agent-multi-turn-convo.ipynb": "how-tos/multi_agent.md#multi-turn-conversation", + "how-tos/agent-handoffs.ipynb": "https://docs.langchain.com/oss/python/langgraph/graph-api", + "how-tos/multi-agent-network.ipynb": "https://docs.langchain.com/oss/python/langgraph/graph-api", + "how-tos/multi-agent-multi-turn-convo.ipynb": "https://docs.langchain.com/oss/python/langgraph/graph-api", # cloud redirects - "cloud/index.md": "index.md", - "cloud/how-tos/index.md": "concepts/langgraph_platform", - "cloud/concepts/api.md": "concepts/langgraph_server.md", - "cloud/concepts/cloud.md": "concepts/langgraph_cloud.md", - "cloud/faq/studio.md": "concepts/langgraph_studio.md#studio-faqs", - "cloud/how-tos/human_in_the_loop_edit_state.md": "cloud/how-tos/add-human-in-the-loop.md", - "cloud/how-tos/human_in_the_loop_user_input.md": "cloud/how-tos/add-human-in-the-loop.md", - "concepts/platform_architecture.md": "concepts/langgraph_cloud#architecture", + "cloud/index.md": "https://docs.langchain.com/oss/python/langgraph/overview", + "cloud/how-tos/index.md": "https://docs.langchain.com/langsmith/home", + "cloud/concepts/api.md": "https://docs.langchain.com/langsmith/langgraph-server", + "cloud/concepts/cloud.md": "https://docs.langchain.com/langsmith/cloud", + "cloud/faq/studio.md": "https://docs.langchain.com/langsmith/studio", + "cloud/how-tos/human_in_the_loop_edit_state.md": "https://docs.langchain.com/langsmith/add-human-in-the-loop", + "cloud/how-tos/human_in_the_loop_user_input.md": "https://docs.langchain.com/langsmith/add-human-in-the-loop", + "concepts/platform_architecture.md": "https://docs.langchain.com/langsmith/cloud#architecture", # cloud streaming redirects "cloud/how-tos/stream_values.md": "https://docs.langchain.com/langsmith/streaming", "cloud/how-tos/stream_updates.md": "https://docs.langchain.com/langsmith/streaming", @@ -94,39 +94,39 @@ REDIRECT_MAP = { "cloud/how-tos/stream_events.md": "https://docs.langchain.com/langsmith/streaming", "cloud/how-tos/stream_debug.md": "https://docs.langchain.com/langsmith/streaming", "cloud/how-tos/stream_multiple.md": "https://docs.langchain.com/langsmith/streaming", - "cloud/concepts/streaming.md": "concepts/streaming.md", - "agents/streaming.md": "how-tos/streaming.md", + "cloud/concepts/streaming.md": "https://docs.langchain.com/oss/python/langgraph/streaming", + "agents/streaming.md": "https://docs.langchain.com/oss/python/langgraph/streaming", # prebuilt redirects - "how-tos/create-react-agent.ipynb": "agents/agents.md#basic-configuration", - "how-tos/create-react-agent-memory.ipynb": "agents/memory.md", - "how-tos/create-react-agent-system-prompt.ipynb": "agents/context.md#prompts", - "how-tos/create-react-agent-structured-output.ipynb": "agents/agents.md#structured-output", + "how-tos/create-react-agent.ipynb": "https://docs.langchain.com/oss/python/langchain/agents#basic-configuration", + "how-tos/create-react-agent-memory.ipynb": "https://docs.langchain.com/oss/python/langgraph/add-memory", + "how-tos/create-react-agent-system-prompt.ipynb": "https://docs.langchain.com/oss/python/langgraph/add-memory", + "how-tos/create-react-agent-structured-output.ipynb": "https://docs.langchain.com/oss/python/langchain/agents#structured-output", # misc - "prebuilt.md": "agents/prebuilt.md", - "reference/prebuilt.md": "reference/agents.md", - "concepts/high_level.md": "index.md", - "concepts/index.md": "index.md", - "concepts/v0-human-in-the-loop.md": "concepts/human-in-the-loop.md", - "how-tos/index.md": "index.md", - "tutorials/introduction.ipynb": "concepts/why-langgraph.md", - "agents/deployment.md": "tutorials/langgraph-platform/local-server.md", + "prebuilt.md": "https://docs.langchain.com/oss/python/langchain/agents", + "reference/prebuilt.md": "https://reference.langchain.com/python/langgraph/agents/", + "concepts/high_level.md": "https://docs.langchain.com/oss/python/langgraph/overview", + "concepts/index.md": "https://docs.langchain.com/oss/python/langgraph/overview", + "concepts/v0-human-in-the-loop.md": "https://docs.langchain.com/oss/python/langgraph/interrupts", + "how-tos/index.md": "https://docs.langchain.com/oss/python/langgraph/overview", + "tutorials/introduction.ipynb": "https://docs.langchain.com/oss/python/langgraph/overview", + "agents/deployment.md": "https://docs.langchain.com/oss/python/langgraph/local-server", # deployment redirects - "how-tos/deploy-self-hosted.md": "cloud/deployment/self_hosted_data_plane.md", - "concepts/self_hosted.md": "concepts/langgraph_self_hosted_data_plane.md", - "tutorials/deployment.md": "concepts/deployment_options.md", + "how-tos/deploy-self-hosted.md": "https://docs.langchain.com/langsmith/hosting", + "concepts/self_hosted.md": "https://docs.langchain.com/langsmith/hosting", + "tutorials/deployment.md": "https://docs.langchain.com/langsmith/deployments", # assistant redirects - "cloud/how-tos/assistant_versioning.md": "cloud/how-tos/configuration_cloud.md", - "cloud/concepts/runs.md": "concepts/assistants.md#execution", + "cloud/how-tos/assistant_versioning.md": "https://docs.langchain.com/langsmith/configuration-cloud", + "cloud/concepts/runs.md": "https://docs.langchain.com/langsmith/assistants#execution", # hitl redirects - "how-tos/wait-user-input-functional.ipynb": "how-tos/use-functional-api.md", - "how-tos/review-tool-calls-functional.ipynb": "how-tos/use-functional-api.md", - "how-tos/create-react-agent-hitl.ipynb": "how-tos/human_in_the_loop/add-human-in-the-loop.md", - "agents/human-in-the-loop.md": "how-tos/human_in_the_loop/add-human-in-the-loop.md", - "how-tos/human_in_the_loop/dynamic_breakpoints.ipynb": "how-tos/human_in_the_loop/breakpoints.md", - "concepts/breakpoints.md": "concepts/human_in_the_loop.md", - "how-tos/human_in_the_loop/breakpoints.md": "how-tos/human_in_the_loop/add-human-in-the-loop.md", - "cloud/how-tos/human_in_the_loop_breakpoint.md": "cloud/how-tos/add-human-in-the-loop.md", - "how-tos/human_in_the_loop/edit-graph-state.ipynb": "how-tos/human_in_the_loop/time-travel.md", + "how-tos/wait-user-input-functional.ipynb": "https://docs.langchain.com/oss/python/langgraph/functional-api", + "how-tos/review-tool-calls-functional.ipynb": "https://docs.langchain.com/oss/python/langgraph/functional-api", + "how-tos/create-react-agent-hitl.ipynb": "https://docs.langchain.com/oss/python/langgraph/interrupts", + "agents/human-in-the-loop.md": "https://docs.langchain.com/oss/python/langgraph/interrupts", + "how-tos/human_in_the_loop/dynamic_breakpoints.ipynb": "https://docs.langchain.com/oss/python/langgraph/interrupts", + "concepts/breakpoints.md": "https://docs.langchain.com/oss/python/langgraph/interrupts", + "how-tos/human_in_the_loop/breakpoints.md": "https://docs.langchain.com/oss/python/langgraph/interrupts", + "cloud/how-tos/human_in_the_loop_breakpoint.md": "https://docs.langchain.com/langsmith/add-human-in-the-loop", + "how-tos/human_in_the_loop/edit-graph-state.ipynb": "https://docs.langchain.com/oss/python/langgraph/use-time-travel", # LGP mintlify migration redirects "tutorials/auth/getting_started.md": "https://docs.langchain.com/langsmith/auth", @@ -141,7 +141,7 @@ REDIRECT_MAP = { "concepts/langgraph_server.md": "https://docs.langchain.com/langsmith/langgraph-server", "concepts/langgraph_data_plane.md": "https://docs.langchain.com/langsmith/data-plane", "concepts/langgraph_control_plane.md": "https://docs.langchain.com/langsmith/control-plane", - "concepts/langgraph_cli.md": "https://docs.langchain.com/langsmith/langgraph-cli", + "concepts/langgraph_cli.md": "https://docs.langchain.com/langsmith/cli", "concepts/langgraph_studio.md": "https://docs.langchain.com/langsmith/studio", "cloud/how-tos/studio/quick_start.md": "https://docs.langchain.com/langsmith/quick-start-studio", "cloud/how-tos/invoke_studio.md": "https://docs.langchain.com/langsmith/use-studio#run-application", @@ -206,6 +206,234 @@ REDIRECT_MAP = { "cloud/reference/cli.md": "https://docs.langchain.com/langsmith/cli", "cloud/reference/env_var.md": "https://docs.langchain.com/langsmith/env-var", "troubleshooting/studio.md": "https://docs.langchain.com/langsmith/troubleshooting-studio", + + # LangGraph mintlify migration redirects + "index.md": "https://docs.langchain.com/oss/python/langgraph/overview", + "agents/agents.md": "https://docs.langchain.com/oss/python/langchain/agents", + "concepts/why-langgraph.md": "https://docs.langchain.com/oss/python/langgraph/overview", + "tutorials/get-started/1-build-basic-chatbot.md": "https://docs.langchain.com/oss/python/langgraph/quickstart", + "tutorials/get-started/2-add-tools.md": "https://docs.langchain.com/oss/python/langgraph/quickstart", + "tutorials/get-started/3-add-memory.md": "https://docs.langchain.com/oss/python/langgraph/quickstart", + "tutorials/get-started/4-human-in-the-loop.md": "https://docs.langchain.com/oss/python/langgraph/quickstart", + "tutorials/get-started/5-customize-state.md": "https://docs.langchain.com/oss/python/langgraph/quickstart", + "tutorials/get-started/6-time-travel.md": "https://docs.langchain.com/oss/python/langgraph/quickstart", + "tutorials/langsmith/local-server.md": "https://docs.langchain.com/oss/python/langgraph/local-server", + "tutorials/workflows.md": "https://docs.langchain.com/oss/python/langgraph/workflows-agents", + "concepts/agentic_concepts.md": "https://docs.langchain.com/oss/python/langgraph/workflows-agents", + "guides/index.md": "https://docs.langchain.com/oss/python/langchain/overview", + "agents/overview.md": "https://docs.langchain.com/oss/python/langchain/agents", + "agents/run_agents.md": "https://docs.langchain.com/oss/python/langgraph/quickstart", + "concepts/low_level.md": "https://docs.langchain.com/oss/python/langgraph/graph-api", + "how-tos/graph-api.md": "https://docs.langchain.com/oss/python/langgraph/graph-api", + "concepts/functional_api.md": "https://docs.langchain.com/oss/python/langgraph/functional-api", + "how-tos/use-functional-api.md": "https://docs.langchain.com/oss/python/langgraph/functional-api", + "concepts/pregel.md": "https://docs.langchain.com/oss/python/langgraph/pregel", + "concepts/streaming.md": "https://docs.langchain.com/oss/python/langgraph/streaming", + "how-tos/streaming.md": "https://docs.langchain.com/oss/python/langgraph/streaming", + "concepts/persistence.md": "https://docs.langchain.com/oss/python/langgraph/persistence", + "concepts/durable_execution.md": "https://docs.langchain.com/oss/python/langgraph/durable-execution", + "concepts/memory.md": "https://docs.langchain.com/oss/python/langgraph/memory", + "how-tos/memory/add-memory.md": "https://docs.langchain.com/oss/python/langgraph/add-memory", + "agents/context.md": "https://docs.langchain.com/oss/python/langgraph/add-memory", + "agents/models.md": "https://docs.langchain.com/oss/python/langgraph/overview", + "concepts/tools.md": "https://docs.langchain.com/oss/python/langgraph/workflows-agents", + "how-tos/tool-calling.md": "https://docs.langchain.com/oss/python/langgraph/workflows-agents", + "concepts/human_in_the_loop.md": "https://docs.langchain.com/oss/python/langgraph/interrupts", + "how-tos/human_in_the_loop/add-human-in-the-loop.md": "https://docs.langchain.com/oss/python/langgraph/interrupts", + "concepts/time-travel.md": "https://docs.langchain.com/oss/python/langgraph/persistence", + "how-tos/human_in_the_loop/time-travel.md": "https://docs.langchain.com/oss/python/langgraph/use-time-travel", + "concepts/subgraphs.md": "https://docs.langchain.com/oss/python/langgraph/use-subgraphs", + "how-tos/subgraph.md": "https://docs.langchain.com/oss/python/langgraph/use-subgraphs", + "concepts/multi_agent.md": "https://docs.langchain.com/oss/python/langgraph/graph-api", + "agents/multi-agent.md": "https://docs.langchain.com/oss/python/langchain/multi-agent", + "how-tos/multi_agent.md": "https://docs.langchain.com/oss/python/langgraph/graph-api", + "concepts/mcp.md": "https://docs.langchain.com/oss/python/langgraph/overview", + "agents/mcp.md": "https://docs.langchain.com/oss/python/langgraph/overview", + "concepts/tracing.md": "https://docs.langchain.com/oss/python/langgraph/observability", + "how-tos/enable-tracing.md": "https://docs.langchain.com/oss/python/langgraph/observability", + "agents/evals.md": "https://docs.langchain.com/oss/python/langgraph/overview", + "examples/index.md": "https://docs.langchain.com/oss/python/langgraph/case-studies", + "concepts/template_applications.md": "https://docs.langchain.com/oss/python/langgraph/overview", + "tutorials/rag/langgraph_agentic_rag.md": "https://docs.langchain.com/oss/python/langgraph/agentic-rag", + "tutorials/multi_agent/agent_supervisor.md": "https://docs.langchain.com/oss/python/langgraph/workflows-agents", + "tutorials/sql/sql-agent.md": "https://docs.langchain.com/oss/python/langgraph/sql-agent", + "agents/ui.md": "https://docs.langchain.com/oss/python/langgraph/ui", + "how-tos/run-id-langsmith.md": "https://docs.langchain.com/oss/python/langgraph/observability", + "troubleshooting/errors/index.md": "https://docs.langchain.com/oss/python/langgraph/common-errors", + "troubleshooting/errors/INVALID_CHAT_HISTORY.md": "https://docs.langchain.com/oss/python/langgraph/INVALID_CHAT_HISTORY", + "troubleshooting/errors/INVALID_LICENSE.md": "https://docs.langchain.com/oss/python/langgraph/common-errors", + "adopters.md": "https://docs.langchain.com/oss/python/langgraph/case-studies", + "concepts/faq.md": "https://docs.langchain.com/oss/python/langgraph/overview", + "agents/prebuilt.md": "https://docs.langchain.com/oss/python/langchain/agents", + "reference/index.md": "https://reference.langchain.com/python/langgraph/", + "reference/graphs.md": "https://reference.langchain.com/python/langgraph/graphs/", + "reference/func.md": "https://reference.langchain.com/python/langgraph/func/", + "reference/pregel.md": "https://reference.langchain.com/python/langgraph/pregel/", + "reference/checkpoints.md": "https://reference.langchain.com/python/langgraph/checkpoints/", + "reference/store.md": "https://reference.langchain.com/python/langgraph/store/", + "reference/cache.md": "https://reference.langchain.com/python/langgraph/cache/", + "reference/types.md": "https://reference.langchain.com/python/langgraph/types/", + "reference/runtime.md": "https://reference.langchain.com/python/langgraph/runtime/", + "reference/config.md": "https://reference.langchain.com/python/langgraph/config/", + "reference/errors.md": "https://reference.langchain.com/python/langgraph/errors/", + "reference/constants.md": "https://reference.langchain.com/python/langgraph/constants/", + "reference/channels.md": "https://reference.langchain.com/python/langgraph/channels/", + "reference/agents.md": "https://reference.langchain.com/python/langgraph/agents/", + "reference/supervisor.md": "https://reference.langchain.com/python/langgraph/supervisor/", + "reference/swarm.md": "https://reference.langchain.com/python/langgraph/swarm/", + "reference/mcp.md": "https://reference.langchain.com/python/langgraph/mcp/", + "cloud/reference/sdk/python_sdk_ref.md": "https://reference.langchain.com/python/platform/python_sdk/", + "reference/remote_graph.md": "https://reference.langchain.com/python/platform/remote_graph/", + + # additional exclude-search entries from mkdocs.yml + "additional-resources/index.md": "https://docs.langchain.com/oss/python/langchain/overview", + "cloud/concepts/cron_jobs.md": "https://docs.langchain.com/langsmith/cron-jobs", + "cloud/concepts/data_storage_and_privacy.md": "https://docs.langchain.com/langsmith/data-storage-and-privacy", + "cloud/concepts/webhooks.md": "https://docs.langchain.com/langsmith/use-webhooks", + "cloud/deployment/cloud.md": "https://docs.langchain.com/langsmith/cloud", + "cloud/deployment/custom_docker.md": "https://docs.langchain.com/langsmith/custom-docker", + "cloud/deployment/egress.md": "https://docs.langchain.com/langsmith/env-var", + "cloud/deployment/graph_rebuild.md": "https://docs.langchain.com/langsmith/graph-rebuild", + "cloud/deployment/self_hosted_control_plane.md": "https://docs.langchain.com/langsmith/hosting", + "cloud/deployment/self_hosted_data_plane.md": "https://docs.langchain.com/langsmith/hosting", + "cloud/deployment/semantic_search.md": "https://docs.langchain.com/langsmith/semantic-search", + "cloud/deployment/setup_javascript.md": "https://docs.langchain.com/langsmith/setup-javascript", + "cloud/deployment/setup_pyproject.md": "https://docs.langchain.com/langsmith/setup-pyproject", + "cloud/deployment/setup.md": "https://docs.langchain.com/langsmith/setup-app-requirements-txt", + "cloud/deployment/standalone_container.md": "https://docs.langchain.com/langsmith/docker", + "cloud/how-tos/add-human-in-the-loop.md": "https://docs.langchain.com/langsmith/add-human-in-the-loop", + "cloud/how-tos/background_run.md": "https://docs.langchain.com/langsmith/background-run", + "cloud/how-tos/clone_traces_studio.md": "https://docs.langchain.com/langsmith/observability", + "cloud/how-tos/configurable_headers.md": "https://docs.langchain.com/langsmith/configurable-headers", + "cloud/how-tos/configuration_cloud.md": "https://docs.langchain.com/langsmith/configuration-cloud", + "cloud/how-tos/cron_jobs.md": "https://docs.langchain.com/langsmith/cron-jobs", + "cloud/how-tos/datasets_studio.md": "https://docs.langchain.com/langsmith/use-studio", + "cloud/how-tos/enqueue_concurrent.md": "https://docs.langchain.com/langsmith/enqueue-concurrent", + "cloud/how-tos/generative_ui_react.md": "https://docs.langchain.com/langsmith/generative-ui-react", + "cloud/how-tos/human_in_the_loop_time_travel.md": "https://docs.langchain.com/langsmith/human-in-the-loop-time-travel", + "cloud/how-tos/interrupt_concurrent.md": "https://docs.langchain.com/langsmith/interrupt-concurrent", + "cloud/how-tos/invoke_studio.md": "https://docs.langchain.com/langsmith/use-studio", + "cloud/how-tos/iterate_graph_studio.md": "https://docs.langchain.com/langsmith/use-studio", + "cloud/how-tos/reject_concurrent.md": "https://docs.langchain.com/langsmith/reject-concurrent", + "cloud/how-tos/rollback_concurrent.md": "https://docs.langchain.com/langsmith/rollback-concurrent", + "cloud/how-tos/same-thread.md": "https://docs.langchain.com/langsmith/same-thread", + "cloud/how-tos/stateless_runs.md": "https://docs.langchain.com/langsmith/stateless-runs", + "cloud/how-tos/streaming.md": "https://docs.langchain.com/langsmith/streaming", + "cloud/how-tos/studio/manage_assistants.md": "https://docs.langchain.com/langsmith/use-studio", + "cloud/how-tos/studio/quick_start.md": "https://docs.langchain.com/langsmith/quick-start-studio", + "cloud/how-tos/studio/run_evals.md": "https://docs.langchain.com/langsmith/observability", + "cloud/how-tos/threads_studio.md": "https://docs.langchain.com/langsmith/use-threads", + "cloud/how-tos/use_stream_react.md": "https://docs.langchain.com/langsmith/use-stream-react", + "cloud/how-tos/use_threads.md": "https://docs.langchain.com/langsmith/use-threads", + "cloud/how-tos/webhooks.md": "https://docs.langchain.com/langsmith/use-webhooks", + "cloud/quick_start.md": "https://docs.langchain.com/langsmith/deployment-quickstart", + "cloud/reference/api/api_ref_control_plane.md": "https://docs.langchain.com/langsmith/api-ref-control-plane", + "cloud/reference/api/api_ref.md": "https://docs.langchain.com/langsmith/server-api-ref", + "cloud/reference/cli.md": "https://docs.langchain.com/langsmith/cli", + "cloud/reference/env_var.md": "https://docs.langchain.com/langsmith/env-var", + "cloud/reference/langgraph_server_changelog.md": "https://docs.langchain.com/langsmith/langgraph-server-changelog", + "cloud/reference/sdk/js_ts_sdk_ref.md": "https://reference.langchain.com/javascript/modules/langsmith.html", + "concepts/application_structure.md": "https://docs.langchain.com/langsmith/application-structure", + "concepts/assistants.md": "https://docs.langchain.com/langsmith/assistants", + "concepts/auth.md": "https://docs.langchain.com/langsmith/auth", + "concepts/deployment_options.md": "https://docs.langchain.com/langsmith/deployments", + "concepts/double_texting.md": "https://docs.langchain.com/langsmith/double-texting", + "concepts/faq.md": "https://docs.langchain.com/langsmith/faq", + "concepts/langgraph_cli.md": "https://docs.langchain.com/langsmith/cli", + "concepts/langgraph_cloud.md": "https://docs.langchain.com/langsmith/cloud", + "concepts/langgraph_components.md": "https://docs.langchain.com/langsmith/components", + "concepts/langgraph_control_plane.md": "https://docs.langchain.com/langsmith/control-plane", + "concepts/langgraph_data_plane.md": "https://docs.langchain.com/langsmith/data-plane", + "concepts/langgraph_platform.md": "https://docs.langchain.com/langsmith/home", + "concepts/langgraph_self_hosted_control_plane.md": "https://docs.langchain.com/langsmith/hosting", + "concepts/langgraph_self_hosted_data_plane.md": "https://docs.langchain.com/langsmith/hosting", + "concepts/langgraph_server.md": "https://docs.langchain.com/langsmith/langgraph-server", + "concepts/langgraph_standalone_container.md": "https://docs.langchain.com/langsmith/docker", + "concepts/langgraph_studio.md": "https://docs.langchain.com/langsmith/studio", + "concepts/plans.md": "https://docs.langchain.com/langsmith/home", + "concepts/scalability_and_resilience.md": "https://docs.langchain.com/langsmith/scalability-and-resilience", + "concepts/sdk.md": "https://docs.langchain.com/langsmith/sdk", + "concepts/server-mcp.md": "https://docs.langchain.com/langsmith/server-mcp", + "concepts/template_applications.md": "https://docs.langchain.com/oss/python/langgraph/overview", + "concepts/why-langgraph.md": "https://docs.langchain.com/oss/python/langgraph/overview", + "examples/index.md": "https://docs.langchain.com/oss/python/langgraph/case-studies", + "guides/index.md": "https://docs.langchain.com/oss/python/langchain/overview", + "how-tos/auth/custom_auth.md": "https://docs.langchain.com/langsmith/custom-auth", + "how-tos/auth/openapi_security.md": "https://docs.langchain.com/langsmith/openapi-security", + "how-tos/autogen-integration.md": "https://docs.langchain.com/langsmith/autogen-integration", + "how-tos/http/custom_lifespan.md": "https://docs.langchain.com/langsmith/custom-lifespan", + "how-tos/http/custom_middleware.md": "https://docs.langchain.com/langsmith/custom-middleware", + "how-tos/http/custom_routes.md": "https://docs.langchain.com/langsmith/custom-routes", + "how-tos/ttl/configure_ttl.md": "https://docs.langchain.com/langsmith/configure-ttl", + "how-tos/use-remote-graph.md": "https://docs.langchain.com/langsmith/use-remote-graph", + "index.md": "https://docs.langchain.com/oss/python/langgraph/overview", + "snippets/chat_model_tabs.md": "https://docs.langchain.com/oss/python/langchain/overview", + "troubleshooting/errors/GRAPH_RECURSION_LIMIT.md": "https://docs.langchain.com/oss/python/langgraph/GRAPH_RECURSION_LIMIT", + "troubleshooting/errors/index.md": "https://docs.langchain.com/oss/python/langgraph/common-errors", + "troubleshooting/errors/INVALID_CHAT_HISTORY.md": "https://docs.langchain.com/oss/python/langgraph/INVALID_CHAT_HISTORY", + "troubleshooting/errors/INVALID_CONCURRENT_GRAPH_UPDATE.md": "https://docs.langchain.com/oss/python/langgraph/INVALID_CONCURRENT_GRAPH_UPDATE", + "troubleshooting/errors/INVALID_GRAPH_NODE_RETURN_VALUE.md": "https://docs.langchain.com/oss/python/langgraph/INVALID_GRAPH_NODE_RETURN_VALUE", + "troubleshooting/errors/INVALID_LICENSE.md": "https://docs.langchain.com/oss/python/langgraph/common-errors", + "troubleshooting/errors/MULTIPLE_SUBGRAPHS.md": "https://docs.langchain.com/oss/python/langgraph/MULTIPLE_SUBGRAPHS", + "troubleshooting/studio.md": "https://docs.langchain.com/langsmith/troubleshooting-studio", + "tutorials/auth/add_auth_server.md": "https://docs.langchain.com/langsmith/add-auth-server", + "tutorials/auth/getting_started.md": "https://docs.langchain.com/langsmith/auth", + "tutorials/auth/resource_auth.md": "https://docs.langchain.com/langsmith/resource-auth", + "agents/agents.md": "https://docs.langchain.com/oss/python/langchain/agents", + "concepts/why-langgraph.md": "https://docs.langchain.com/oss/python/langgraph/overview", + "tutorials/langsmith/local-server.md": "https://docs.langchain.com/oss/python/langgraph/local-server", + "tutorials/workflows.md": "https://docs.langchain.com/oss/python/langgraph/workflows-agents", + "concepts/agentic_concepts.md": "https://docs.langchain.com/oss/python/langgraph/workflows-agents", + "guides/index.md": "https://docs.langchain.com/oss/python/langchain/overview", + "agents/overview.md": "https://docs.langchain.com/oss/python/langchain/agents", + "concepts/agentic_concepts.md": "https://docs.langchain.com/oss/python/langgraph/workflows-agents", + "agents/run_agents.md": "https://docs.langchain.com/oss/python/langgraph/quickstart", + "concepts/low_level.md": "https://docs.langchain.com/oss/python/langgraph/graph-api", + "how-tos/graph-api.md": "https://docs.langchain.com/oss/python/langgraph/graph-api", + "concepts/functional_api.md": "https://docs.langchain.com/oss/python/langgraph/functional-api", + "how-tos/use-functional-api.md": "https://docs.langchain.com/oss/python/langgraph/functional-api", + "concepts/pregel.md": "https://docs.langchain.com/oss/python/langgraph/pregel", + "concepts/streaming.md": "https://docs.langchain.com/oss/python/langgraph/streaming", + "how-tos/streaming.md": "https://docs.langchain.com/oss/python/langgraph/streaming", + "concepts/persistence.md": "https://docs.langchain.com/oss/python/langgraph/persistence", + "concepts/durable_execution.md": "https://docs.langchain.com/oss/python/langgraph/durable-execution", + "concepts/memory.md": "https://docs.langchain.com/oss/python/langgraph/memory", + "how-tos/memory/add-memory.md": "https://docs.langchain.com/oss/python/langgraph/add-memory", + "agents/context.md": "https://docs.langchain.com/oss/python/langgraph/add-memory", + "agents/models.md": "https://docs.langchain.com/oss/python/langgraph/overview", + "concepts/tools.md": "https://docs.langchain.com/oss/python/langgraph/workflows-agents", + "how-tos/tool-calling.md": "https://docs.langchain.com/oss/python/langgraph/workflows-agents", + "concepts/human_in_the_loop.md": "https://docs.langchain.com/oss/python/langgraph/interrupts", + "how-tos/human_in_the_loop/add-human-in-the-loop.md": "https://docs.langchain.com/oss/python/langgraph/interrupts", + "concepts/time-travel.md": "https://docs.langchain.com/oss/python/langgraph/persistence", + "how-tos/human_in_the_loop/time-travel.md": "https://docs.langchain.com/oss/python/langgraph/use-time-travel", + "concepts/subgraphs.md": "https://docs.langchain.com/oss/python/langgraph/use-subgraphs", + "how-tos/subgraph.md": "https://docs.langchain.com/oss/python/langgraph/use-subgraphs", + "concepts/multi_agent.md": "https://docs.langchain.com/oss/python/langgraph/graph-api", + "agents/multi-agent.md": "https://docs.langchain.com/oss/python/langchain/multi-agent", + "how-tos/multi_agent.md": "https://docs.langchain.com/oss/python/langgraph/graph-api", + "concepts/mcp.md": "https://docs.langchain.com/oss/python/langgraph/overview", + "agents/mcp.md": "https://docs.langchain.com/oss/python/langgraph/overview", + "concepts/tracing.md": "https://docs.langchain.com/oss/python/langgraph/observability", + "how-tos/enable-tracing.md": "https://docs.langchain.com/oss/python/langgraph/observability", + "agents/evals.md": "https://docs.langchain.com/oss/python/langgraph/overview", + "examples/index.md": "https://docs.langchain.com/oss/python/langgraph/case-studies", + "concepts/template_applications.md": "https://docs.langchain.com/oss/python/langgraph/overview", + "tutorials/rag/langgraph_agentic_rag.md": "https://docs.langchain.com/oss/python/langgraph/agentic-rag", + "tutorials/multi_agent/agent_supervisor.md": "https://docs.langchain.com/oss/python/langgraph/workflows-agents", + "tutorials/sql/sql-agent.md": "https://docs.langchain.com/oss/python/langgraph/sql-agent", + "agents/ui.md": "https://docs.langchain.com/oss/python/langgraph/ui", + "how-tos/run-id-langsmith.md": "https://docs.langchain.com/oss/python/langgraph/observability", + "troubleshooting/errors/index.md": "https://docs.langchain.com/oss/python/langgraph/common-errors", + "troubleshooting/errors/GRAPH_RECURSION_LIMIT.md": "https://docs.langchain.com/oss/python/langgraph/GRAPH_RECURSION_LIMIT", + "troubleshooting/errors/INVALID_CONCURRENT_GRAPH_UPDATE.md": "https://docs.langchain.com/oss/python/langgraph/INVALID_CONCURRENT_GRAPH_UPDATE", + "troubleshooting/errors/INVALID_GRAPH_NODE_RETURN_VALUE.md": "https://docs.langchain.com/oss/python/langgraph/INVALID_GRAPH_NODE_RETURN_VALUE", + "troubleshooting/errors/MULTIPLE_SUBGRAPHS.md": "https://docs.langchain.com/oss/python/langgraph/MULTIPLE_SUBGRAPHS", + "troubleshooting/errors/INVALID_CHAT_HISTORY.md": "https://docs.langchain.com/oss/python/langgraph/INVALID_CHAT_HISTORY", + "troubleshooting/errors/INVALID_LICENSE.md": "https://docs.langchain.com/oss/python/langgraph/common-errors", + "adopters.md": "https://docs.langchain.com/oss/python/langgraph/case-studies", + "concepts/faq.md": "https://docs.langchain.com/oss/python/langgraph/overview", + "agents/prebuilt.md": "https://docs.langchain.com/oss/python/langchain/agents", } @@ -560,10 +788,16 @@ def on_post_page(html: str, page: Page, config: MkDocsConfig) -> str: # Create HTML files for redirects after site dir has been built def on_post_build(config): use_directory_urls = config.get("use_directory_urls") + site_dir = config["site_dir"] + + # Track which paths have explicit redirects + redirected_paths = set() + + # Process explicit redirects from REDIRECT_MAP for page_old, page_new in REDIRECT_MAP.items(): # Convert .ipynb to .md for path calculation page_old = page_old.replace(".ipynb", ".md") - + # Calculate the HTML path for the old page (whether it exists or not) if use_directory_urls: # With directory URLs: /path/to/page/ becomes /path/to/page/index.html @@ -577,15 +811,18 @@ def on_post_build(config): old_html_path = page_old[:-3] + ".html" else: old_html_path = page_old + ".html" - + + # Track this path as redirected + redirected_paths.add(old_html_path) + if isinstance(page_new, str) and page_new.startswith("http"): # Handle external redirects - _write_html(config["site_dir"], old_html_path, page_new) + _write_html(site_dir, old_html_path, page_new) else: # Handle internal redirects page_new = page_new.replace(".ipynb", ".md") page_new_before_hash, hash, suffix = page_new.partition("#") - + # Try to get the new path using File class, but fallback to manual calculation try: new_html_path = File(page_new_before_hash, "", "", True).url @@ -607,5 +844,46 @@ def on_post_build(config): else: new_html_path = page_new_before_hash + ".html" new_html_path += hash + suffix - - _write_html(config["site_dir"], old_html_path, new_html_path) + + _write_html(site_dir, old_html_path, new_html_path) + + # Create root index.html redirect + root_redirect_html = """ + + + + Redirecting to LangGraph Documentation + + + + + + +

Documentation has moved

+

The LangGraph documentation has moved to docs.langchain.com.

+

Redirecting you now...

+ + +""" + + root_index_path = os.path.join(site_dir, "index.html") + with open(root_index_path, "w", encoding="utf-8") as f: + f.write(root_redirect_html) + + # Create server-side catch-all redirect file for Netlify/Cloudflare Pages + # This handles any pages not explicitly mapped in REDIRECT_MAP + # Note: This won't work on GitHub Pages, but kept for potential future use + redirects_content = """# Netlify/Cloudflare Pages redirect rules +# Specific redirects are handled by individual HTML redirect pages +# This is the catch-all for any unmapped pages + +# Exclude reference docs from catch-all +/reference/* 200 + +# Catch-all: redirect any page not explicitly mapped +/* https://docs.langchain.com/oss/python/langgraph/overview 301 +""" + + redirects_path = os.path.join(site_dir, "_redirects") + with open(redirects_path, "w", encoding="utf-8") as f: + f.write(redirects_content) diff --git a/docs/docs/tutorials/langgraph-platform/local-server.md b/docs/docs/tutorials/langgraph-platform/local-server.md index f749f248d..971ab74b5 100644 --- a/docs/docs/tutorials/langgraph-platform/local-server.md +++ b/docs/docs/tutorials/langgraph-platform/local-server.md @@ -294,9 +294,9 @@ Now that you have a LangGraph app running locally, take your journey further by :::python - [Python SDK Reference](../../cloud/reference/sdk/python_sdk_ref.md): Explore the Python SDK API Reference. - ::: +::: :::js - [JS/TS SDK Reference](../../cloud/reference/sdk/js_ts_sdk_ref.md): Explore the JS/TS SDK API Reference. - ::: +::: diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml index 9bf95b065..a15a4b586 100644 --- a/docs/mkdocs.yml +++ b/docs/mkdocs.yml @@ -149,6 +149,67 @@ plugins: - tutorials/auth/add_auth_server.md - tutorials/auth/getting_started.md - tutorials/auth/resource_auth.md + - agents/agents.md + - concepts/why-langgraph.md + - tutorials/get-started/1-build-basic-chatbot.md + - tutorials/get-started/2-add-tools.md + - tutorials/get-started/3-add-memory.md + - tutorials/get-started/4-human-in-the-loop.md + - tutorials/get-started/5-customize-state.md + - tutorials/get-started/6-time-travel.md + - tutorials/langgraph-platform/local-server.md + - tutorials/workflows.md + - concepts/agentic_concepts.md + - guides/index.md + - agents/overview.md + - agents/run_agents.md + - concepts/low_level.md + - how-tos/graph-api.md + - concepts/functional_api.md + - how-tos/use-functional-api.md + - concepts/pregel.md + - concepts/streaming.md + - how-tos/streaming.md + - concepts/persistence.md + - concepts/durable_execution.md + - concepts/memory.md + - how-tos/memory/add-memory.md + - agents/context.md + - agents/models.md + - concepts/tools.md + - how-tos/tool-calling.md + - concepts/human_in_the_loop.md + - how-tos/human_in_the_loop/add-human-in-the-loop.md + - concepts/time-travel.md + - how-tos/human_in_the_loop/time-travel.md + - concepts/subgraphs.md + - how-tos/subgraph.md + - concepts/multi_agent.md + - agents/multi-agent.md + - how-tos/multi_agent.md + - concepts/mcp.md + - agents/mcp.md + - concepts/tracing.md + - how-tos/enable-tracing.md + - agents/evals.md + - examples/index.md + - concepts/template_applications.md # TODO: make tutorial + - tutorials/rag/langgraph_agentic_rag.md + - tutorials/multi_agent/agent_supervisor.md + - tutorials/sql/sql-agent.md + - agents/ui.md + - how-tos/run-id-langsmith.md + - troubleshooting/errors/index.md + - troubleshooting/errors/GRAPH_RECURSION_LIMIT.md + - troubleshooting/errors/INVALID_CONCURRENT_GRAPH_UPDATE.md + - troubleshooting/errors/INVALID_GRAPH_NODE_RETURN_VALUE.md + - troubleshooting/errors/MULTIPLE_SUBGRAPHS.md + - troubleshooting/errors/INVALID_CHAT_HISTORY.md + - troubleshooting/errors/INVALID_LICENSE.md + - adopters.md + - concepts/faq.md + - agents/prebuilt.md # NOTE: prebuilt.md is auto-generated by `make build-prebuilt` + - tags - include-markdown - mkdocstrings: @@ -186,75 +247,6 @@ plugins: - "!^_" nav: - - Get started: - - index.md - - Quickstarts: - - Start with a prebuilt agent: agents/agents.md - - Build a custom workflow: - - concepts/why-langgraph.md - - 1. Build a basic chatbot: tutorials/get-started/1-build-basic-chatbot.md - - 2. Add tools: tutorials/get-started/2-add-tools.md - - 3. Add memory: tutorials/get-started/3-add-memory.md - - 4. Add human-in-the-loop: tutorials/get-started/4-human-in-the-loop.md - - 5. Customize state: tutorials/get-started/5-customize-state.md - - 6. Time travel: tutorials/get-started/6-time-travel.md - - Run a local server: tutorials/langgraph-platform/local-server.md - - General concepts: - - Workflows & agents: tutorials/workflows.md - - Agent architectures: concepts/agentic_concepts.md - - - Guides: - - guides/index.md - - Agent development: - - Overview: agents/overview.md - - Run an agent: agents/run_agents.md - - LangGraph APIs: - - Graph API: - - Overview: concepts/low_level.md - - Use the Graph API: how-tos/graph-api.md - - Functional API: - - Overview: concepts/functional_api.md - - Use the Functional API: how-tos/use-functional-api.md - - Runtime: concepts/pregel.md - - Core capabilities: - - Streaming: - - Overview: concepts/streaming.md - - Stream outputs: how-tos/streaming.md - - Persistence: - - Overview: concepts/persistence.md - - Durable execution: - - Overview: concepts/durable_execution.md - - Memory: - - Overview: concepts/memory.md - - Add memory: how-tos/memory/add-memory.md - - Context: - - Add context: agents/context.md - - Models: - - Configure model: agents/models.md - - Tools: - - Overview: concepts/tools.md - - Call tools: how-tos/tool-calling.md - - Human-in-the-loop: - - Overview: concepts/human_in_the_loop.md - - Add human intervention: how-tos/human_in_the_loop/add-human-in-the-loop.md - - Time travel: - - Overview: concepts/time-travel.md - - Use time travel: how-tos/human_in_the_loop/time-travel.md - - Subgraphs: - - Overview: concepts/subgraphs.md - - Use subgraphs: how-tos/subgraph.md - - Multi-agent: - - Overview: concepts/multi_agent.md - - Prebuilt implementation: agents/multi-agent.md - - Custom implementation: how-tos/multi_agent.md - - MCP: - - Overview: concepts/mcp.md - - Use MCP: agents/mcp.md - - Tracing: - - Overview: concepts/tracing.md - - Enable tracing: how-tos/enable-tracing.md - - Evaluate performance: agents/evals.md - - Reference: - reference/index.md - LangGraph: @@ -278,35 +270,7 @@ nav: - LangGraph Platform: - SDK (Python): cloud/reference/sdk/python_sdk_ref.md - SDK (JS/TS): https://langchain-ai.github.io/langgraphjs/reference/modules/sdk.html - - RemoteGraph: reference/remote_graph.md - - - Examples: - - examples/index.md - - Template applications: concepts/template_applications.md # TODO: make tutorial - - Agentic RAG: tutorials/rag/langgraph_agentic_rag.md - - Agent Supervisor: tutorials/multi_agent/agent_supervisor.md - - SQL agent: tutorials/sql/sql-agent.md - - Prebuilt chat UI: agents/ui.md - - Graph runs in LangSmith: how-tos/run-id-langsmith.md - - - Additional resources: - - additional-resources/index.md - - agents/prebuilt.md # NOTE: prebuilt.md is auto-generated by `make build-prebuilt` - - LangGraph Academy course: https://academy.langchain.com/courses/intro-to-langgraph - - Case studies: adopters.md - - concepts/faq.md - - llms.txt: llms-txt-overview.md - - LangChain Forum: https://forum.langchain.com/ - - Troubleshooting: - - Errors: - - troubleshooting/errors/index.md - - troubleshooting/errors/GRAPH_RECURSION_LIMIT.md - - troubleshooting/errors/INVALID_CONCURRENT_GRAPH_UPDATE.md - - troubleshooting/errors/INVALID_GRAPH_NODE_RETURN_VALUE.md - - troubleshooting/errors/MULTIPLE_SUBGRAPHS.md - - troubleshooting/errors/INVALID_CHAT_HISTORY.md - - troubleshooting/errors/INVALID_LICENSE.md - + - RemoteGraph: reference/remote_graph.md markdown_extensions: - abbr