Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
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
15 changes: 15 additions & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,21 @@ a shared, cross-instance session-and-IP rate limiter, Cloud organization budgets
an approved conversation retention/deletion process are in place. Same-origin validation is an
additional browser safeguard, not a substitute for those cost controls.

### Demo reliability monitoring

The site demos (`/demos`, `/demo/github`, `/chat`, `/compare`) mount
`components/reliability-observability.tsx`, which forwards OpenUI render events to the [Reliability
dashboard](https://console.thesys.dev/reliability) through `@openuidev/observability-cloud`. It only
initializes when a client API key from the [Thesys
Console](https://console.thesys.dev/client-api-keys) is set:

```bash
NEXT_PUBLIC_THESYS_CLIENT_API_KEY=pk-th-...
```

Without the variable nothing is initialized and no events leave the browser, so local development
needs no extra setup. The key is a publishable client key; do not use `THESYS_API_KEY` here.

## Project structure

```
Expand Down
2 changes: 2 additions & 0 deletions docs/app/chat/layout.tsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
import { ReliabilityObservability } from "@/components/reliability-observability";
import { WebsiteThemeProvider } from "@/components/website-theme-provider";
import type { ReactNode } from "react";
import { ChatPageClient } from "./_components/chat-page-client";

export default function ChatLayout({ children }: { children: ReactNode }) {
return (
<WebsiteThemeProvider>
<ReliabilityObservability />
<ChatPageClient />
{children}
</WebsiteThemeProvider>
Expand Down
8 changes: 7 additions & 1 deletion docs/app/compare/layout.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
import { ReliabilityObservability } from "@/components/reliability-observability";
import { WebsiteThemeProvider } from "@/components/website-theme-provider";
import type { ReactNode } from "react";

export default function CompareLayout({ children }: { children: ReactNode }) {
return <WebsiteThemeProvider>{children}</WebsiteThemeProvider>;
return (
<WebsiteThemeProvider>
<ReliabilityObservability />
{children}
</WebsiteThemeProvider>
);
}
8 changes: 7 additions & 1 deletion docs/app/demo/github/layout.tsx
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { ReliabilityObservability } from "@/components/reliability-observability";
import { WebsiteThemeProvider } from "@/components/website-theme-provider";
import { createPageMetadata } from "@/lib/page-metadata";
import type { ReactNode } from "react";
Expand All @@ -12,5 +13,10 @@ export const metadata = createPageMetadata({
});

export default function DemoGitHubLayout({ children }: { children: ReactNode }) {
return <WebsiteThemeProvider>{children}</WebsiteThemeProvider>;
return (
<WebsiteThemeProvider>
<ReliabilityObservability />
{children}
</WebsiteThemeProvider>
);
}
8 changes: 7 additions & 1 deletion docs/app/demos/layout.tsx
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { ReliabilityObservability } from "@/components/reliability-observability";
import { WebsiteThemeProvider } from "@/components/website-theme-provider";
import { createPageMetadata } from "@/lib/page-metadata";
import type { ReactNode } from "react";
Expand All @@ -12,5 +13,10 @@ export const metadata = createPageMetadata({
});

export default function DemosLayout({ children }: { children: ReactNode }) {
return <WebsiteThemeProvider>{children}</WebsiteThemeProvider>;
return (
<WebsiteThemeProvider>
<ReliabilityObservability />
{children}
</WebsiteThemeProvider>
);
}
26 changes: 26 additions & 0 deletions docs/components/reliability-observability.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
"use client";

import * as Observability from "@openuidev/observability-cloud";
import { useEffect } from "react";

let initialized = false;

/**
* Reports OpenUI render events from the site demos to the Thesys reliability
* dashboard (console.thesys.dev/reliability). Stays inert until
* NEXT_PUBLIC_THESYS_CLIENT_API_KEY is set to a client API key from
* console.thesys.dev/client-api-keys.
*/
export function ReliabilityObservability() {
useEffect(() => {
if (initialized) return;

const apiKey = process.env.NEXT_PUBLIC_THESYS_CLIENT_API_KEY?.trim();
if (!apiKey) return;

initialized = true;
Observability.init({ apiKey });
}, []);

return null;
}
1 change: 1 addition & 0 deletions docs/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
"dependencies": {
"@openuidev/cli": "workspace:*",
"@openuidev/lang-core": "workspace:^",
"@openuidev/observability-cloud": "workspace:^",
"@openuidev/react-headless": "workspace:^",
"@openuidev/react-lang": "workspace:^",
"@openuidev/react-ui": "workspace:^",
Expand Down
3 changes: 3 additions & 0 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading