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
62db624
docs(observe): add Observe concept pages (spans, traces, sessions, us…
khushalsonawat Jul 1, 2026
fbd6ffa
docs(observe): restore Observe overview, quickstart, and revamped nav…
khushalsonawat Jul 1, 2026
176c4ad
docs(observe): scaffold Guides section and name the running-example p…
khushalsonawat Jul 1, 2026
962d9c7
docs(observe): restructure Reference section and externalize OpenTele…
khushalsonawat Jul 1, 2026
300479e
docs(observe): fix Voice observability Keep-exploring cards
Jul 1, 2026
26c3cdc
docs(observe): one-read clarity pass on Voice observability
Jul 1, 2026
2eeb852
docs(observe): add substantive depth to Voice observability concept
Jul 1, 2026
874bda0
docs(observe): Observability model concept revamp (rebased on latest …
Jul 1, 2026
bfa0b4c
Merge pull request #703 from future-agi/docs/observe-observability-model
khushalsonawat Jul 2, 2026
b6cec10
Merge pull request #702 from future-agi/docs/observe-voice-observability
khushalsonawat Jul 2, 2026
068e4a9
docs(cookbook): rewrite observability cookbook as improving a LangGra…
khushalsonawat Jul 2, 2026
5e81b01
docs(observe): restructure guides and reference, revise concepts
khushalsonawat Jul 2, 2026
684784c
docs(observe): drop unreferenced PNG duplicate of the tracing overvie…
khushalsonawat Jul 2, 2026
88ab4b7
Merge branch 'dev' into docs/observe-concepts
khushalsonawat Jul 2, 2026
81e7447
docs(observe): rename redundant Troubleshooting sidebar labels
Jul 3, 2026
9d8598d
docs(observe): repoint dead manual-tracing links in Reference + Troub…
Jul 3, 2026
40a7ae4
Merge pull request #707 from future-agi/docs/observe-links-audit
khushalsonawat Jul 3, 2026
33fab58
Merge pull request #706 from future-agi/docs/observe-sidebar-cleanup
khushalsonawat Jul 3, 2026
a3007c0
Merge dev (self-hosting section) into docs/observe-concepts
khushalsonawat Jul 6, 2026
6e2977b
docs(cookbook): re-scope observability cookbook to observing an agent…
khushalsonawat Jul 6, 2026
0c4600d
Observability docs complete
khushalsonawat Jul 7, 2026
eb7dd94
Merge pull request #716 from future-agi/docs/observe-cookbook
khushalsonawat Jul 7, 2026
388a082
Minor change
khushalsonawat Jul 7, 2026
abcf517
Merge pull request #717 from future-agi/docs/observe-cookbook
khushalsonawat Jul 7, 2026
4685b8c
Fixing CI
khushalsonawat Jul 7, 2026
fc7c2e8
Committing redirect.ts
khushalsonawat Jul 7, 2026
458a872
Merge pull request #701 from future-agi/docs/observe-concepts
khushalsonawat Jul 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
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/docs/observe/alerts-configure.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/docs/observe/alerts-landing.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/docs/observe/alerts-table.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Binary file added public/images/docs/observe/display-menu.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/docs/observe/evals-add-button.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/docs/observe/evals-configure.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/docs/observe/evals-create-task.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/docs/observe/evals-schedule.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/docs/observe/session-detail.png
Binary file added public/images/docs/observe/sessions-list.png
Binary file added public/images/docs/observe/users-list.png
Binary file added public/images/docs/observe/views-create.png
Binary file added public/images/docs/observe/views-save-modal.png
Binary file added public/images/docs/observe/views-saved-tab.png
53 changes: 45 additions & 8 deletions src/components/Sidebar.astro
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import { tabNavigation, getActiveTab, getActiveGroup, type NavItem, type NavGrou
const currentPath = Astro.url.pathname;
const activeTab = getActiveTab(currentPath);
const isDocsTab = activeTab?.tab === 'Docs';
const isSdkTab = activeTab?.tab === 'SDK';

// For Docs tab: groups are sections you switch between
// For other tabs: groups are also switchable sections
Expand All @@ -21,14 +22,23 @@ let activeGroup: NavGroup | undefined;
if (isDocsTab) {
activeGroup = getActiveGroup(currentPath);
} else {
// For non-Docs tabs, find the group containing current page
activeGroup = allGroups.find(g =>
g.items.some(item => {
const norm = currentPath.replace(/\/$/, '') || '/';
const href = (item.href || '').replace(/\/$/, '') || '/';
return href === norm || (href !== '/' && norm.startsWith(href + '/'));
})
) || allGroups[0];
// For non-Docs tabs, pick the group whose deepest matching item href is the
// longest (most specific), so a broad landing group (e.g. SDK Overview at
// /docs/sdk) never shadows a product group like Evaluation (/docs/sdk/evals).
const norm = currentPath.replace(/\/$/, '') || '/';
let bestLen = -1;
const consider = (g: NavGroup, list: NavItem[]) => {
for (const it of list) {
if (it.href) {
const href = it.href.replace(/\/$/, '') || '/';
const matches = href === norm || (href !== '/' && href !== '/docs' && norm.startsWith(href + '/'));
if (matches && href.length > bestLen) { bestLen = href.length; activeGroup = g; }
}
if (it.items) consider(g, it.items);
}
};
allGroups.forEach(g => consider(g, g.items));
if (!activeGroup) activeGroup = allGroups[0];
}

const items = activeGroup?.items || [];
Expand Down Expand Up @@ -127,6 +137,22 @@ const referenceItems: DropdownItem[] = [
{ title: 'API Reference', icon: 'webhook', href: '/docs/api' },
];

// SDK tab: the same phase-grouped product dropdown as Docs, with the SDK's products.
const sdkPhasedOrder: { phase: string; titles: string[] }[] = [
{ phase: 'Start', titles: ['SDK Overview'] },
{ phase: 'Observe & diagnose', titles: ['traceAI'] },
{ phase: 'Evaluate & measure', titles: ['Evaluation', 'Simulation', 'Datasets'] },
{ phase: 'Improve', titles: ['Prompt Optimization', 'Annotation Queues'] },
{ phase: 'Build & connect', titles: ['Knowledge Base'] },
{ phase: 'Protect', titles: ['Protect'] },
];
const sdkReferenceItems: DropdownItem[] = [
{ title: 'Product Docs', icon: 'book', href: '/docs' },
{ title: 'Integrations', icon: 'plug', href: '/docs/integrations' },
{ title: 'Guides', icon: 'compass', href: '/docs/cookbook' },
{ title: 'API Reference', icon: 'webhook', href: '/docs/api' },
];

let dropdownSections: DropdownSection[];
if (isDocsTab) {
dropdownSections = phasedOrder
Expand All @@ -140,6 +166,17 @@ if (isDocsTab) {
if (leftovers.length) dropdownSections.push({ phase: 'More', items: leftovers });

dropdownSections.push({ phase: 'Reference', items: referenceItems });
} else if (isSdkTab) {
dropdownSections = sdkPhasedOrder
.map(p => ({ phase: p.phase, items: p.titles.filter(t => groupLookup.has(t)).map(toItem) }))
.filter(s => s.items.length > 0);

// Future-proofing: any SDK group not placed above still shows under "More".
const placed = new Set<string>(sdkPhasedOrder.flatMap(p => p.titles));
const leftovers = allGroups.map(g => g.group).filter(t => !placed.has(t)).map(toItem);
if (leftovers.length) dropdownSections.push({ phase: 'More', items: leftovers });

dropdownSections.push({ phase: 'Reference', items: sdkReferenceItems });
} else {
// Other multi-group tabs: one unlabelled section (empty phase hides the header).
dropdownSections = [{ phase: '', items: allGroups.map(g => toItem(g.group)) }];
Expand Down
281 changes: 152 additions & 129 deletions src/lib/navigation.ts

Large diffs are not rendered by default.

66 changes: 43 additions & 23 deletions src/lib/redirects.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,27 @@
// Auto-generated redirect map: old Mintlify URLs → new docs URLs
// 275 redirects from futureagi.mintlify.app
export const redirectMap: Record<string, string> = {
// Manual-instrumentation pages moved from Observe features into the traceAI SDK section
'/docs/observe/features/manual-tracing/set-up-tracing': '/docs/sdk/tracing/set-up-tracing',
'/docs/observe/features/manual-tracing/instrument-with-traceai-helpers': '/docs/sdk/tracing/instrument-with-traceai-helpers',
'/docs/observe/features/manual-tracing/set-session-user-id': '/docs/sdk/tracing/set-session-user-id',
'/docs/observe/features/manual-tracing/add-attributes-metadata-tags': '/docs/sdk/tracing/add-attributes-metadata-tags',
'/docs/observe/features/manual-tracing/log-prompt-templates': '/docs/sdk/tracing/log-prompt-templates',
'/docs/observe/features/manual-tracing/add-events-exceptions-status': '/docs/sdk/tracing/add-events-exceptions-status',
'/docs/observe/features/manual-tracing/mask-span-attributes': '/docs/sdk/tracing/mask-span-attributes',
'/docs/observe/features/manual-tracing/create-tool-spans': '/docs/sdk/tracing/create-tool-spans',
'/docs/observe/features/manual-tracing/get-current-span-context': '/docs/sdk/tracing/get-current-span-context',
'/docs/observe/features/manual-tracing/in-line-evals': '/docs/sdk/tracing/in-line-evals',
'/docs/observe/features/manual-tracing/annotating-using-api': '/docs/sdk/tracing/annotating-using-api',
'/docs/observe/features/manual-tracing/semantic-conventions': '/docs/sdk/tracing/semantic-conventions',
'/docs/observe/features/manual-tracing/advanced-tracing-examples': '/docs/sdk/tracing/advanced-tracing-examples',
'/docs/observe/features/manual-tracing/langfuse-integration': '/docs/sdk/tracing/langfuse-integration',
'/docs/cookbook/observability': '/docs/cookbook/observe-langgraph-agent-and-obtain-insights',
'/docs/cookbook/improve-langgraph-agent-with-observability': '/docs/cookbook/observe-langgraph-agent-and-obtain-insights',
'/docs/observe/features/annotation-queue-using-sdk': '/docs/annotations/sdk/annotation-queue-using-sdk',
// SDK pages restructured: sdk/tracing.mdx flat page → sdk/tracing/ folder (index still serves /docs/sdk/tracing); annotation-queues moved under Annotations
'/docs/sdk/tracing': '/docs/sdk/tracing/set-up-tracing',
'/docs/sdk/annotation-queues': '/docs/annotations/sdk/annotation-queue-using-sdk',
'/docs/observe/voice/set-up': '/docs/observe/features/voice',
'/docs/quickstart/installation': '/docs/installation',
'/docs/observability': '/docs/tracing/auto',
Expand All @@ -14,17 +34,17 @@ export const redirectMap: Record<string, string> = {
'/docs/knowledge-base/concept': '/docs/knowledge-base/concepts/concept',
'/docs/prompt-workbench': '/docs/prompt',
'/docs/prompt-workbench/sdk': '/docs/prompt/features/sdk',
'/docs/tracing/manual/log-prompt-templates': '/docs/observe/features/manual-tracing/log-prompt-templates',
'/docs/tracing/manual/in-line-evals': '/docs/observe/features/manual-tracing/in-line-evals',
'/docs/tracing/manual/log-prompt-templates': '/docs/sdk/tracing/log-prompt-templates',
'/docs/tracing/manual/in-line-evals': '/docs/sdk/tracing/in-line-evals',
'/docs/simulation/set-up/scenarios': '/docs/simulation/concepts/scenarios',
'/docs/simulation/set-up/agent-definition': '/docs/simulation/concepts/agent-definition',
'/docs/tracing/concepts/components': '/docs/tracing/concepts',
'/docs/tracing/manual/add-attributes-metadata-tags': '/docs/observe/features/manual-tracing/add-attributes-metadata-tags',
'/docs/tracing/manual/add-events-exceptions-status': '/docs/observe/features/manual-tracing/add-events-exceptions-status',
'/docs/tracing/manual/advanced-tracing-examples': '/docs/observe/features/manual-tracing/advanced-tracing-examples',
'/docs/tracing/manual/langfuse-integration': '/docs/observe/features/manual-tracing/langfuse-integration',
'/docs/tracing/manual/set-session-user-id': '/docs/observe/features/manual-tracing/set-session-user-id',
'/docs/tracing/manual/set-up-tracing': '/docs/observe/features/manual-tracing/set-up-tracing',
'/docs/tracing/manual/add-attributes-metadata-tags': '/docs/sdk/tracing/add-attributes-metadata-tags',
'/docs/tracing/manual/add-events-exceptions-status': '/docs/sdk/tracing/add-events-exceptions-status',
'/docs/tracing/manual/advanced-tracing-examples': '/docs/sdk/tracing/advanced-tracing-examples',
'/docs/tracing/manual/langfuse-integration': '/docs/sdk/tracing/langfuse-integration',
'/docs/tracing/manual/set-session-user-id': '/docs/sdk/tracing/set-session-user-id',
'/docs/tracing/manual/set-up-tracing': '/docs/sdk/tracing/set-up-tracing',
'/docs/prism': '/docs/command-center',
'/docs/prism/concepts/api-reference': '/docs/command-center/concepts/api-reference',
'/docs/prism/concepts/configuration': '/docs/command-center/concepts/configuration',
Expand Down Expand Up @@ -77,7 +97,7 @@ export const redirectMap: Record<string, string> = {
'/cookbook/cookbook5/How-to-build-and-incrementally-improve-RAG-applications-in-Langchain': '/docs/cookbook/rag-langchain',
'/cookbook/cookbook6/How-to-evaluate-RAG-Applications': '/docs/cookbook/evaluate-rag',
'/cookbook/cookbook7/Creating-Trustworthy-RAGs-for-Chatbots': '/docs/cookbook/trustworthy-rag',
'/cookbook/cookbook8/How-To-Implement-Observability': '/docs/cookbook/observability',
'/cookbook/cookbook8/How-To-Implement-Observability': '/docs/cookbook/observe-langgraph-agent-and-obtain-insights',
'/cookbook/cookbook9/How-To-Decrease-RAG-Hallucination': '/docs/cookbook/decrease-hallucination',
'/cookbook/integrations/mongodb': '/docs/cookbook/mongodb',
'/cookbook/optimization/basic-prompt-optimization': '/docs/cookbook/basic-optimization',
Expand Down Expand Up @@ -163,20 +183,20 @@ export const redirectMap: Record<string, string> = {
'/future-agi/get-started/knowledge-base/how-to/create-kb-using-sdk': '/docs/knowledge-base/features/sdk',
'/future-agi/get-started/knowledge-base/how-to/create-kb-using-ui': '/docs/knowledge-base/features/ui',
'/future-agi/get-started/knowledge-base/overview': '/docs/knowledge-base',
'/future-agi/get-started/observability/manual-tracing/add-attributes-metadata-tags': '/docs/observe/features/manual-tracing/add-attributes-metadata-tags',
'/future-agi/get-started/observability/manual-tracing/add-events-exceptions-status': '/docs/observe/features/manual-tracing/add-events-exceptions-status',
'/future-agi/get-started/observability/manual-tracing/advanced-tracing-examples': '/docs/observe/features/manual-tracing/advanced-tracing-examples',
'/future-agi/get-started/observability/manual-tracing/annotating-using-api': '/docs/observe/features/manual-tracing/annotating-using-api',
'/future-agi/get-started/observability/manual-tracing/create-tool-spans': '/docs/observe/features/manual-tracing/create-tool-spans',
'/future-agi/get-started/observability/manual-tracing/get-current-span-context': '/docs/observe/features/manual-tracing/get-current-span-context',
'/future-agi/get-started/observability/manual-tracing/in-line-evals': '/docs/observe/features/manual-tracing/in-line-evals',
'/future-agi/get-started/observability/manual-tracing/instrument-with-traceai-helpers': '/docs/observe/features/manual-tracing/instrument-with-traceai-helpers',
'/future-agi/get-started/observability/manual-tracing/langfuse-intergation': '/docs/observe/features/manual-tracing/langfuse-integration',
'/future-agi/get-started/observability/manual-tracing/log-prompt-templates': '/docs/observe/features/manual-tracing/log-prompt-templates',
'/future-agi/get-started/observability/manual-tracing/mask-span-attributes': '/docs/observe/features/manual-tracing/mask-span-attributes',
'/future-agi/get-started/observability/manual-tracing/semantic-conventions': '/docs/observe/features/manual-tracing/semantic-conventions',
'/future-agi/get-started/observability/manual-tracing/set-session-user-id': '/docs/observe/features/manual-tracing/set-session-user-id',
'/future-agi/get-started/observability/manual-tracing/set-up-tracing': '/docs/observe/features/manual-tracing/set-up-tracing',
'/future-agi/get-started/observability/manual-tracing/add-attributes-metadata-tags': '/docs/sdk/tracing/add-attributes-metadata-tags',
'/future-agi/get-started/observability/manual-tracing/add-events-exceptions-status': '/docs/sdk/tracing/add-events-exceptions-status',
'/future-agi/get-started/observability/manual-tracing/advanced-tracing-examples': '/docs/sdk/tracing/advanced-tracing-examples',
'/future-agi/get-started/observability/manual-tracing/annotating-using-api': '/docs/sdk/tracing/annotating-using-api',
'/future-agi/get-started/observability/manual-tracing/create-tool-spans': '/docs/sdk/tracing/create-tool-spans',
'/future-agi/get-started/observability/manual-tracing/get-current-span-context': '/docs/sdk/tracing/get-current-span-context',
'/future-agi/get-started/observability/manual-tracing/in-line-evals': '/docs/sdk/tracing/in-line-evals',
'/future-agi/get-started/observability/manual-tracing/instrument-with-traceai-helpers': '/docs/sdk/tracing/instrument-with-traceai-helpers',
'/future-agi/get-started/observability/manual-tracing/langfuse-intergation': '/docs/sdk/tracing/langfuse-integration',
'/future-agi/get-started/observability/manual-tracing/log-prompt-templates': '/docs/sdk/tracing/log-prompt-templates',
'/future-agi/get-started/observability/manual-tracing/mask-span-attributes': '/docs/sdk/tracing/mask-span-attributes',
'/future-agi/get-started/observability/manual-tracing/semantic-conventions': '/docs/sdk/tracing/semantic-conventions',
'/future-agi/get-started/observability/manual-tracing/set-session-user-id': '/docs/sdk/tracing/set-session-user-id',
'/future-agi/get-started/observability/manual-tracing/set-up-tracing': '/docs/sdk/tracing/set-up-tracing',
'/future-agi/get-started/optimization/dataset-optimization': '/docs/cookbook/quickstart/dataset-optimization',
'/future-agi/get-started/optimization/how-to/using-python-sdk': '/docs/optimization/features/using-python-sdk',
'/future-agi/get-started/optimization/optimizers/bayesian-search': '/docs/optimization/optimizers/bayesian-search',
Expand Down
6 changes: 3 additions & 3 deletions src/pages/docs/cookbook/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -111,11 +111,11 @@ description: "Practical step-by-step guides for evaluation, optimization, simula

<CardGroup cols={3}>
<Card
title="LangChain Chatbot"
href="/docs/cookbook/observability"
title="Observing a LangGraph agent and obtaining insights"
href="/docs/cookbook/observe-langgraph-agent-and-obtain-insights"
img="/images/agi2.png"
>
Add monitoring and observability to your AI applications
Trace a support agent by session and user, score it with an Eval Task, and read the scores as insights
</Card>
<Card
title="Text-to-SQL Agent"
Expand Down
Loading
Loading