## Why
The LangSmith Platform OpenAPI spec mixes v1 and v2 endpoints in one
file, and the backend already tags v2 operations by resource (`runs`,
`datasets`, `threads`). This reworks how the reference presents them so
a v2 endpoint sits with its v1 sibling and is easy to spot, and cleans
up inconsistent endpoint titles across the whole reference.
All changes are driven by `scripts/process_langsmith_openapi.py` (which
runs on every spec sync), so they re-derive automatically and need no
manual upkeep.
## What changed
- **Group v2 by resource.** Stop collecting v2 endpoints in a separate
bucket; let their backend resource tags place them alongside v1 (e.g.
runs → Tracing), each marked `(v2)`.
- **Match v1/v2 wording.** Paired endpoints now read identically via
canonical-title overrides: "Query runs" / "Query runs (v2)", "Read run"
/ "Read run (v2)", "Share run" / "Share run (v2)".
- **Sentence-case every title,** preserving an acronym/proper-noun
allowlist (`API`, `AWS`, `SCIM`, `TTL`, `OAuth2`, `URL`, `WebSocket`,
…).
- **Normalize markers:** `[Beta] X` becomes `X (Beta)`, and trailing `X
V2` becomes `X (v2)`.
- **Threads** moved into its own group.
## Relationship to `main`
This **supersedes the earlier "v2 endpoints" bucket approach** already
on main — an intentional flip to resource-based grouping after reviewing
how v2 actually spreads across resources.
## Please review carefully
- **`V2_TITLE_OVERRIDES`** in the script — the three canonical titles
are explicit, because the v1/v2 equivalence is semantic and even crosses
HTTP methods (POST "Share a run" ≈ PUT "Share Run"), so it cannot be
auto-inferred. New matching pairs get added here.
- **`TITLE_PRESERVE`** acronym allowlist — anything missing gets
lowercased; anything wrong gets over-preserved.
- The large `langsmith-platform-openapi.json` diff is fully generated
output; the script is the source of truth.
## Known limitation
Within a resource group the v2 endpoints cluster together rather than
each sitting directly beside its v1 twin. Mintlify sorts endpoints
within a group by path, which cannot be overridden through the spec.
Literal adjacency would require script-generated navigation, deferred by
decision.
## AI involvement
Authored with Claude Code (investigation, script changes, and spec
regeneration); reviewed by @lnhsingh.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The LangSmith Platform OpenAPI spec mixes v1 and v2 endpoints in one
file. Surface the newer v2 endpoints (runs, traces, threads, datasets,
public share) in a dedicated "New v2 endpoints" sidebar group so readers
notice them, and rename the reference group to "LangSmith REST API".
https://langchain.slack.com/archives/C0ACCE0N6F5/p1783520873705849
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
## Summary
Adds an unlisted migration guide at `/langsmith/smithdb-sdk-migration`
for partner customers migrating from v1 SDK methods to SmithDB-backed
equivalents. The page is `noindex: true` and not wired into `docs.json`
nav — accessible via direct URL only.
Each method's content (parameter tables, examples, and their code-sample
imports) lives in its own file under
`src/snippets/langsmith/smithdb-migration/` (e.g. `runs-query.mdx`,
`runs-retrieve.mdx`), included into the main page via Mintlify's
snippet-import pattern. Adding a new method's migration guide only
requires a new snippet file plus one import and one render line in the
main page, so different teams can add methods in parallel without
conflicting.
The code-samples generation and testing pipeline was extended to support
Go and cURL/bash, alongside existing Python/TypeScript/Java/Kotlin
support, so every code sample in this guide is a real, tested source
file rather than hand-authored prose.
---------
Co-authored-by: Kiewan Villatel <kiewan@langchain.dev>
Co-authored-by: Naomi Pentrel <5212232+npentrel@users.noreply.github.com>
## Why
Tooling for the fragment-based Cloud/Fleet changelog: generate the
weekly entry from `.changelog` fragments, and guarantee no user-facing
PR slips through.
## What
- `scripts/assemble_changelog.py`: reads langchainplus `.changelog`
fragments, filters by surface and readiness, resolves Eppo flag rollout
(held → ready once a flag is fully rolled out), and renders the Mintlify
`<Update>` block. Verified against the live Eppo API.
- `scripts/audit_changelog_coverage.py`: lists merged langchainplus PRs
over a contiguous, weekend-inclusive window and flags any user-facing
`feat`/`fix` with no fragment. Sub-windows queries to avoid the gh
1000-result cap.
- `scripts/changelog_audit_ignore.txt`: dispositioned (not-user-facing)
PRs the audit skips.
Read-only against the Eppo API and `gh`; `EPPO_API_KEY` is read from the
environment / the docs repo Actions secret.
Drafted with assistance from Claude Code.
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Replaces the `baseten:zai-org/GLM-5` model used in documentation
examples with `baseten:zai-org/GLM-5.2`. This updates the code-snippet
generator's Baseten tab token (so future regeneration stays consistent),
the already-generated `src/snippets/code-samples/*.mdx`, hand-authored
examples under `src/oss/`, and the GLM-5/GLM-5.1 references on the Deep
Agents models page. Benchmark matrices
(`deepagents-eval-category-matrix.mdx`,
`refresh_deepagents_category_matrix.py`) and the self-hosted changelog
are intentionally left untouched since they record factual data.
Made by [Open
SWE](https://openswe.vercel.app/agents/47bd1250-8806-5acc-2a2f-ec8497332af0)
---------
Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com>
Two improvements to the Deep Agents eval matrix generator. Zero scores
(a known CI artifact for models that fail entirely, like
`openrouter:deepseek/deepseek-v4-pro`) now render as `—` instead of
`0%`. The top-level `correctness` field from `evals_summary.json` — the
aggregate score across all eval tasks — is extracted as a new
**Overall** column, inserted immediately after the Model column so it's
the first thing readers see.
## Changes
- `_fmt_pct` now treats `v <= 0` as missing, rendering `—` instead of
`0%` for zero scores
- `_merge_rows` captures `rep["correctness"]` (a 0..1 float) per model
under an `OVERALL_KEY` sentinel, using the same first-seen-wins logic as
category scores
- `build_fragment` prepends `OVERALL_KEY`/`"Overall"` to the
`cat_keys`/`display_headers` passed to `_table_markdown`, making it
participate in column-max bolding automatically
- Regenerated snippet reflects both changes:
`openrouter:deepseek/deepseek-v4-pro` row removed (all-zero scores now
suppressed), Overall column added to all remaining rows
## Description
Adds a check that validates all `@[ref]` cross-references in source
MDX/MD files resolve against entries in `link_map.py`. Previously,
unresolved references silently passed through the build pipeline and
appeared as raw `@[ClassName]` text in the published docs. Available via
`make check-cross-refs`.
Note: I couldn't modify `.github/workflows/_check-links.yml` due to
workflow permissions. To integrate into CI, add this step to
`_check-links.yml` after "Install Python dependencies":
```yaml
- name: Check for unresolved cross-references
run: make check-cross-refs
```
## Test Plan
- [ ] `make check-cross-refs` reports unresolved references with file,
line number, and scope
- [ ] 12 unit tests covering: valid refs, unresolved refs, scope fences,
code block skipping, escaped refs, titled refs, backtick refs, and
code-samples exclusion
---------
Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com>
Co-authored-by: Naomi Pentrel <5212232+npentrel@users.noreply.github.com>
## Description
Renames the integrations documentation path from
`oss/integrations/text_embedding` to `oss/integrations/embeddings` to
accommodate that embeddings are no longer strictly text-only. Adds
wildcard redirects so all old `text_embedding` URLs automatically
redirect to the new `embeddings` paths.
Resolves DOC-851
## Test Plan
- [ ] Verify `/oss/python/integrations/embeddings/` and
`/oss/javascript/integrations/embeddings/` pages render correctly
- [ ] Verify old URLs like `/oss/integrations/text_embedding/openai`
redirect to `/oss/integrations/embeddings/openai`
- [ ] Verify internal links from provider, vectorstore, and guide pages
point to the new embeddings paths
---------
Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com>
Fixes false positives in the import checker where symbols like
`BaseMessage` were flagged despite not being re-exported by `langchain`.
The module-level mapping (`langchain_core.messages` ->
`langchain.messages`) caused all imports from that module to be flagged.
Now each imported symbol is verified against the symbol-level mappings
before flagging.
Introduces an automated system to detecting and manage incorrect imports
from `langchain_core` in favor of using the re-exports from `langchain`.
* Added `check-import-mappings.yml` workflow to periodically analyze the
latest version of `langchain_core`, check for re-exports in `langchain`
(and generate `import_mappings.json`), and automatically create PRs to
update the mappings cache in this repo.
* Added `check_import_mappings.py` to fetch latest package releases,
introspect `langchain` public `__init__` files, and generate a detailed
mapping of re-exported members from `langchain_core`. Uses the previous
local `import_mappings.json`
* Added `check-pr-imports.yml` workflow to run on PRs, ensuring inbound
contributions use `langchain` imports when available, and comment on PRs
with specific guidance if issues are found.
* Uses `check_pr_imports.py` to analyze PR diffs against the import
mappings, detect incorrect `langchain_core` imports, and output
suggested fixes for contributors.
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This PR updates the docs for LangSmith Platform, folding in LGP.
Specifically:
- Update to tab arrangement.
- Big content changes in Deployments tab (now Agent deployment as well
as Platform infrastructure deployment).
- Changing the name of the Studio feature.
- Overhaul of home page.
- Updates to tab landing pages to follow the same card format
consistently.
- Moving LGP content into the LS directory in the docs.
## Latest preview:
https://langchain-5e9cc07a-preview-langsm-1760109143-df9b7ef.mintlify.app/langsmith/home
# Documentation update
## Overview
<!-- Brief description of what documentation is being added/updated -->
- Updated broken links in all docs that **are not** under
`python/integrations` or `javascript/integrations` (these will be
addressed later)
- Updated broken-links scripts (locally and GH actions) to ignore the
integrations directories
- Changed .md files to .mdx
- Fixed vscode settings
- Added vscode extension suggestions
## Type of change
<!-- Check the relevant box -->
- [ ] New documentation page
- [ ] Update existing documentation
- [x] Fix typo, bug, broken link, or formatting issue
- [ ] Remove outdated content
- [ ] Other (please describe):
## Related issues/PRs
<!-- Link to related issues, feature PRs, or discussions (if applicable)
-->
- GitHub issue:
- Feature PR:
<!-- For LangChain employees, if applicable: -->
- Linear issue:
- Slack thread:
## Checklist
<!-- Check all that apply -->
- [x] I have read the [contributing guidelines](README.md)
- [x] I have tested my changes locally using `docs dev`
- [x] All code examples have been tested and work correctly
- [x] I have used **root relative** paths for internal links
- [x] I have updated navigation in `src/docs.json` if needed
- [x] I have gotten approval from the relevant reviewers
- [x] (Internal team members only / optional) I have created a preview
deployment using the [Create Preview Branch
workflow](https://github.com/langchain-ai/docs/actions/workflows/create-preview-branch.yml)
## Additional notes
<!-- Any other information that would be helpful for reviewers -->