Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
e45f96b
Placeholder PR
fjmorris Aug 3, 2026
79c02bf
docs: rename actor/tenant/ingress vocabulary to user/organization/auth
fjmorris Aug 3, 2026
d51dc54
docs: move connector pages to the dev80 connectors.* API
fjmorris Aug 3, 2026
65e9f29
docs: fold GitHub webhooks into the GitHub connector page
fjmorris Aug 3, 2026
cd672da
Merge remote-tracking branch 'origin/main' into fjmorris/DOC-1403
fjmorris Aug 3, 2026
a67e0fb
docs: add Slack connector page with managed app provisioning
fjmorris Aug 3, 2026
188d5ca
docs: fold channels overview into connectors index
fjmorris Aug 3, 2026
5b49eb3
docs: reconcile the MDA CLI page onto the connectors model
fjmorris Aug 3, 2026
48bf30c
docs: document the mda connect command (dev84)
fjmorris Aug 3, 2026
c7b9d12
feat(identity): have component explain different variations (#5272)
christian-bromann Aug 5, 2026
d045101
Merge remote-tracking branch 'origin/main' into fjmorris/DOC-1403
fjmorris Aug 5, 2026
3a32ec3
docs: align MDA identity docs with beta scope model
fjmorris Aug 5, 2026
8ac611c
docs: update MDA Slack connector for BYOK app setup
fjmorris Aug 5, 2026
d478e09
docs: refresh MDA integration catalog and connect CLI
fjmorris Aug 5, 2026
fbecce4
docs: reconcile MDA CLI reference with current commands
fjmorris Aug 5, 2026
0ec67cf
docs: clean up stale MDA terminology across pages
fjmorris Aug 5, 2026
f14d80c
docs: fix MDA identity card group markup
fjmorris Aug 5, 2026
901f1da
docs: update MDA install and beta wording
fjmorris Aug 5, 2026
8993bee
Merge remote-tracking branch 'origin/main' into fjmorris/DOC-1403-dev…
fjmorris Aug 5, 2026
556875a
mda docs (#5337)
hwchase17 Aug 6, 2026
0ba7942
cr
hwchase17 Aug 6, 2026
7469655
cr
hwchase17 Aug 6, 2026
fcb67a0
cr
hwchase17 Aug 6, 2026
6a47f00
cr
hwchase17 Aug 7, 2026
1000a70
cr
hwchase17 Aug 7, 2026
b13722a
cleanup identity page and simplify for public beta release
victorm-lc Aug 7, 2026
6b59f12
adding missing code fence annotation
christian-bromann Aug 7, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
90 changes: 81 additions & 9 deletions pipeline/core/builder.py
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,9 @@ def build_all(self) -> None:
logger.debug("Building LangSmith content...")
self._build_unversioned_content("langsmith", "langsmith")

logger.debug("Building Managed Deep Agents language variants...")
self._build_managed_deep_agents_versions()

# Copy shared files (docs.json, images, etc.)
logger.debug("Copying shared files...")
self._copy_shared_files()
Expand Down Expand Up @@ -202,6 +205,27 @@ def rewrite_link(match: re.Match) -> str:
pattern = r'(\[.*?\]\(|\bhref="|")(/oss/[^")\s]+)([")\s])'
return re.sub(pattern, rewrite_link, content)

def _rewrite_managed_deep_agents_links(
self, content: str, target_language: str | None
) -> str:
"""Rewrite Managed Deep Agents links to the target language route."""
if not target_language:
return content

language = self.language_url_names[target_language]

def rewrite_link(match: re.Match) -> str:
prefix, url, suffix = match.groups()
relative_url = url.removeprefix("/langsmith/")
return f"{prefix}/langsmith/{language}/{relative_url}{suffix}"

pattern = (
r'(\[.*?\]\(|\bhref="|")'
r'(/langsmith/managed-deep-agents[^"\)\s]*)'
r'(["\)\s])'
)
return re.sub(pattern, rewrite_link, content)

def _add_suggested_edits_link(self, content: str, input_path: Path) -> str:
"""Add 'Edit Source' link to the end of markdown content.

Expand Down Expand Up @@ -315,8 +339,8 @@ def _process_markdown_content(
content, target_language
)

# Then rewrite /oss/ links to include language
return self._rewrite_oss_links(content, target_language)
content = self._rewrite_oss_links(content, target_language)
return self._rewrite_managed_deep_agents_links(content, target_language)

except Exception:
logger.exception("Failed to process markdown content from %s", file_path)
Expand Down Expand Up @@ -450,6 +474,41 @@ def _build_oss_file(self, file_path: Path, relative_path: Path) -> None:
if self._build_single_file_to_path(file_path, js_output, "js"):
logger.debug("Built JavaScript version: oss/javascript/%s", oss_relative)

def is_managed_deep_agents_file(self, file_path: Path) -> bool:
"""Return whether a source file is a Managed Deep Agents page."""
try:
relative_path = file_path.absolute().relative_to(self.src_dir.absolute())
except ValueError:
return False
return (
relative_path.parent == Path("langsmith")
and relative_path.name.startswith("managed-deep-agents")
and relative_path.suffix.lower() in {".md", ".mdx"}
)

def _build_managed_deep_agents_variants(self, file_path: Path) -> None:
"""Build Python and JavaScript routes for a Managed Deep Agents page."""
relative_path = file_path.absolute().relative_to(self.src_dir.absolute())
langsmith_relative = relative_path.relative_to("langsmith")
for language, output_name in self.language_url_names.items():
output_path = (
self.build_dir / "langsmith" / output_name / langsmith_relative
)
if self._build_single_file_to_path(file_path, output_path, language):
logger.debug(
"Built Managed Deep Agents %s version: %s",
output_name,
langsmith_relative,
)

def _build_managed_deep_agents_versions(self) -> None:
"""Build language-specific routes for all Managed Deep Agents pages."""
langsmith_dir = self.src_dir / "langsmith"
if not langsmith_dir.exists():
return
for file_path in langsmith_dir.glob("managed-deep-agents*.mdx"):
self._build_managed_deep_agents_variants(file_path)

def _build_unversioned_file(self, file_path: Path, relative_path: Path) -> None:
"""Build an unversioned file (langsmith).

Expand All @@ -460,6 +519,8 @@ def _build_unversioned_file(self, file_path: Path, relative_path: Path) -> None:
output_path = self.build_dir / relative_path
if self._build_single_file_to_path(file_path, output_path, "python"):
logger.debug("Built: %s", relative_path)
if self.is_managed_deep_agents_file(file_path):
self._build_managed_deep_agents_variants(file_path)

def _build_shared_file(self, file_path: Path, relative_path: Path) -> None:
"""Build a shared file (images, docs.json, JS/CSS files).
Expand Down Expand Up @@ -561,7 +622,10 @@ def _build_file_with_progress(self, file_path: Path, pbar: tqdm) -> bool:
if file_path.suffix.lower() in self.copy_extensions:
# Handle markdown files with preprocessing
if file_path.suffix.lower() in {".md", ".mdx"}:
self._process_markdown_file(file_path, output_path)
if self.is_managed_deep_agents_file(file_path):
self._build_unversioned_file(file_path, relative_path)
else:
self._process_markdown_file(file_path, output_path)
return True
shutil.copy2(file_path, output_path)
return True
Expand Down Expand Up @@ -1153,10 +1217,6 @@ def _process_snippet_markdown_file(
with input_path.open("r", encoding="utf-8") as f:
content = f.read()

processed_content = preprocess_markdown(
content, input_path, target_language=None
)

if input_path.suffix.lower() == ".md":
output_path = output_path.with_suffix(".mdx")

Expand All @@ -1166,14 +1226,26 @@ def _process_snippet_markdown_file(
)

for lang_key, lang_name in self.language_url_names.items():
lang_content = self._rewrite_oss_links(processed_content, lang_key)
lang_content = preprocess_markdown(
content, input_path, target_language=lang_key
)
lang_content = self._rewrite_oss_links(lang_content, lang_key)
lang_content = self._rewrite_managed_deep_agents_links(
lang_content, lang_key
)
lang_output = snippets_root / lang_name / relative_snippet
lang_output.parent.mkdir(parents=True, exist_ok=True)
with lang_output.open("w", encoding="utf-8") as f:
f.write(lang_content)

# Default path: Python-prefixed absolute links for unversioned pages.
default_content = self._rewrite_oss_links(processed_content, "python")
default_content = preprocess_markdown(
content, input_path, target_language="python"
)
default_content = self._rewrite_oss_links(default_content, "python")
default_content = self._rewrite_managed_deep_agents_links(
default_content, "python"
)
output_path.parent.mkdir(parents=True, exist_ok=True)
with output_path.open("w", encoding="utf-8") as f:
f.write(default_content)
Expand Down
143 changes: 95 additions & 48 deletions src/docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -206,8 +206,8 @@
{
"group": "Deployment",
"pages": [
"langsmith/managed-deep-agents",
{
"langsmith/python/managed-deep-agents",
{
"group": "Going to production",
"root": "oss/python/deepagents/going-to-production",
"pages": [
Expand Down Expand Up @@ -290,6 +290,52 @@
}
]
},
{
"tab": "Managed Deep Agents",
"pages": [
{
"group": "Get started",
"tag": "BETA",
"pages": [
"langsmith/python/managed-deep-agents-overview",
"langsmith/python/managed-deep-agents-quickstart",
"langsmith/python/managed-deep-agents-project-structure"
]
},
{
"group": "Agent definition",
"pages": [
"langsmith/python/managed-deep-agents-agent-definition",
"langsmith/python/managed-deep-agents-instructions",
"langsmith/python/managed-deep-agents-skills",
"langsmith/python/managed-deep-agents-tools",
"langsmith/python/managed-deep-agents-middleware",
"langsmith/python/managed-deep-agents-memory",
"langsmith/python/managed-deep-agents-sandboxes",
"langsmith/python/managed-deep-agents-identity",
{
"group": "Channels",
"expanded": false,
"pages": [
"langsmith/python/managed-deep-agents-channels",
"langsmith/python/managed-deep-agents-channels-slack"
]
},
"langsmith/python/managed-deep-agents-schedules",
"langsmith/python/managed-deep-agents-evals"
]
},
{
"group": "Build and deploy",
"pages": [
"langsmith/python/managed-deep-agents-local-development",
"langsmith/python/managed-deep-agents-tutorial",
"langsmith/python/managed-deep-agents-deploy",
"langsmith/python/managed-deep-agents-cli"
]
}
]
},
{
"tab": "LangChain",
"pages": [
Expand Down Expand Up @@ -712,7 +758,7 @@
{
"group": "Deployment",
"pages": [
"langsmith/managed-deep-agents",
"langsmith/javascript/managed-deep-agents",
{
"group": "Going to production",
"root": "oss/javascript/deepagents/going-to-production",
Expand Down Expand Up @@ -795,6 +841,52 @@
}
]
},
{
"tab": "Managed Deep Agents",
"pages": [
{
"group": "Get started",
"tag": "BETA",
"pages": [
"langsmith/javascript/managed-deep-agents-overview",
"langsmith/javascript/managed-deep-agents-quickstart",
"langsmith/javascript/managed-deep-agents-project-structure"
]
},
{
"group": "Agent definition",
"pages": [
"langsmith/javascript/managed-deep-agents-agent-definition",
"langsmith/javascript/managed-deep-agents-instructions",
"langsmith/javascript/managed-deep-agents-skills",
"langsmith/javascript/managed-deep-agents-tools",
"langsmith/javascript/managed-deep-agents-middleware",
"langsmith/javascript/managed-deep-agents-memory",
"langsmith/javascript/managed-deep-agents-sandboxes",
"langsmith/javascript/managed-deep-agents-identity",
{
"group": "Channels",
"expanded": false,
"pages": [
"langsmith/javascript/managed-deep-agents-channels",
"langsmith/javascript/managed-deep-agents-channels-slack"
]
},
"langsmith/javascript/managed-deep-agents-schedules",
"langsmith/javascript/managed-deep-agents-evals"
]
},
{
"group": "Build and deploy",
"pages": [
"langsmith/javascript/managed-deep-agents-local-development",
"langsmith/javascript/managed-deep-agents-tutorial",
"langsmith/javascript/managed-deep-agents-deploy",
"langsmith/javascript/managed-deep-agents-cli"
]
}
]
},
{
"tab": "LangChain",
"pages": [
Expand Down Expand Up @@ -1683,47 +1775,6 @@
}
]
},
{
"tab": "Managed Deep Agents",
"pages": [
{
"group": "Managed Deep Agents",
"tag": "BETA",
"pages": [
"langsmith/managed-deep-agents-overview",
"langsmith/managed-deep-agents-quickstart",
"langsmith/managed-deep-agents-tutorial",
"langsmith/managed-deep-agents-how-it-works",
"langsmith/managed-deep-agents-identity",
"langsmith/managed-deep-agents-memory",
"langsmith/managed-deep-agents-evals",
"langsmith/managed-deep-agents-tools",
"langsmith/managed-deep-agents-middleware",
{
"group": "Connectors",
"pages": [
"langsmith/managed-deep-agents-connectors/index",
"langsmith/managed-deep-agents-connectors/mcp",
"langsmith/managed-deep-agents-connectors/langsmith",
"langsmith/managed-deep-agents-connectors/github"
]
},
{
"group": "Channels",
"pages": [
"langsmith/managed-deep-agents-channels/index",
"langsmith/managed-deep-agents-channels/slack",
"langsmith/managed-deep-agents-channels/github"
]
},
"langsmith/managed-deep-agents-schedules",
"langsmith/managed-deep-agents-examples",
"langsmith/managed-deep-agents-deploy",
"langsmith/managed-deep-agents-cli"
]
}
]
},
{
"tab": "Prompt & Context Hub",
"pages": [
Expand Down Expand Up @@ -2501,10 +2552,6 @@
"source": "/langsmith/env-var",
"destination": "/langsmith/env-var-cloud"
},
{
"source": "/langsmith/managed-deep-agents-mcp",
"destination": "/langsmith/managed-deep-agents-connectors"
},
{
"source": "/langsmith/managed-deep-agents-invoke",
"destination": "/langsmith/managed-deep-agents-overview"
Expand Down
Loading
Loading