diff --git a/.github/workflows/docs-deploy.yml b/.github/workflows/docs-deploy.yml new file mode 100644 index 00000000..c5c5bdeb --- /dev/null +++ b/.github/workflows/docs-deploy.yml @@ -0,0 +1,52 @@ +name: Deploy Docs + +on: + push: + branches: [main, docs/temp-site] + paths: + - "docs/stable/**" + - "docs/docs.json" + - "apps/docs-site/**" + - ".github/workflows/docs-deploy.yml" + pull_request: + paths: + - "docs/stable/**" + - "docs/docs.json" + - "apps/docs-site/**" + - ".github/workflows/docs-deploy.yml" + workflow_dispatch: + +permissions: + contents: read + pages: write + id-token: write + +concurrency: + group: pages-${{ github.ref }} + cancel-in-progress: true + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + - uses: ./.github/actions/setup + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - run: mise run docs-site:build + env: + BASE_PATH: /adk + - uses: actions/upload-pages-artifact@56afc609e74202658d3ffba0e8f6dda462b719fa # v3 + with: + path: apps/docs-site/out + + deploy: + if: github.event_name != 'pull_request' + needs: build + runs-on: ubuntu-latest + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + steps: + - id: deployment + uses: actions/deploy-pages@d6db90164ac5ed86f2b6aed7e0febac5b3c0c03e # v4 diff --git a/README.md b/README.md index f9675753..ddfdde02 100644 --- a/README.md +++ b/README.md @@ -1,51 +1,60 @@ -# Kagenti Agent Development Kit +# Kagenti ADK + +**The developer toolkit for getting agents into production.** [![GitHub Release](https://img.shields.io/github/v/release/kagenti/adk)](https://github.com/kagenti/adk/releases/latest) [![License](https://img.shields.io/github/license/kagenti/adk)](LICENSE) [![Discord](https://img.shields.io/badge/Discord-Join%20us-5865F2?logo=discord&logoColor=white)](https://discord.gg/aJ92dNDzqB) -> ๐Ÿšง This project is under active development and not yet ready for use. +[Documentation](https://kagenti.github.io/adk) ยท [Discord](https://discord.gg/aJ92dNDzqB) ยท [Contributing](./CONTRIBUTING.md) --- -## What is Kagenti ADK? +Kagenti ADK (Agent Development Kit) takes agents built with any framework or custom code and turns them into A2A-compliant services. + +> [!WARNING] +> This project is under active development and not yet ready for production use. -Kagenti ADK (Agent Development Kit) takes agents built with any framework or custom code and turns them into [A2A](https://a2a-protocol.org/)-compliant services. +## What's in the kit -It provides: +| Component | Description | +|---|---| +| **CLI** | Scaffold projects, run agents locally, and deploy | +| **Python SDK** | Wrap your agent with A2A, inject runtime services via dependency injection | +| **TypeScript Client SDK** | Build applications that talk to your agents | +| **Server** | Self-hostable runtime with everything below built in | -- A **Python SDK** to expose your agent over A2A and connect it to the runtime services below -- A **TypeScript client SDK** to build applications that talk to your agents -- A **CLI** to scaffold projects, run agents, and deploy -- A **server** with built-in runtime services your agents use: - - **LLM proxy** โ€” single API for 15+ providers (OpenAI, Anthropic, watsonx.ai, Bedrock, Ollama, and more) - - **MCP connectors** โ€” connect agents to external tools and APIs via the [Model Context Protocol](https://modelcontextprotocol.io/) - - **Database (PostgreSQL)** โ€” agent state, conversation history, and configuration - - **Vector search (pgvector)** โ€” embeddings and similarity search for RAG workflows - - **File storage (SeaweedFS)** โ€” S3-compatible upload, download, and storage - - **Document extraction (Docling)** โ€” text extraction from PDFs, CSVs, and other formats - - **Authentication (Keycloak)** โ€” identity and access management - - **Observability (Phoenix)** โ€” LLM tracing and agent debugging - - **End user web UI** โ€” chat interface for interacting with your agents +### Runtime services -## Status +| Service | What it does | +|---|---| +| **LLM proxy** | Single API for 15+ providers โ€” OpenAI, Anthropic, watsonx.ai, Bedrock, Ollama | +| **MCP connectors** | Connect agents to external tools via [Model Context Protocol](https://modelcontextprotocol.io/) | +| **PostgreSQL** | Agent state, conversation history, and configuration | +| **Vector search** | pgvector for embeddings and similarity search | +| **File storage** | S3-compatible upload/download via SeaweedFS | +| **Document extraction** | Text extraction from PDFs, CSVs, and more via Docling | +| **Authentication** | Identity and access management via Keycloak | +| **Observability** | LLM tracing and agent debugging via Phoenix | +| **Web UI** | Built-in chat interface for testing your agents | -This project is under active development. Documentation, packages, and an initial release are coming soon. +## Quick start -## Contributing +```bash +sh -c "$(curl -LsSf https://raw.githubusercontent.com/kagenti/adk/main/install.sh)" +``` -We welcome contributions! See [CONTRIBUTING.md](./CONTRIBUTING.md) for guidelines. +## Get involved -## Contact +We'd love to hear from you โ€” whether you have questions, feedback, or want to contribute. -To reach the maintainer team, email **kagenti-maintainers@googlegroups.com** or join us on [Discord](https://discord.gg/aJ92dNDzqB). +| | | +|---|---| +| **Discord** | [Join the community](https://discord.gg/aJ92dNDzqB) | +| **Email** | kagenti-maintainers@googlegroups.com | +| **Contributing** | [Read the guide](./CONTRIBUTING.md) | +| **Issues** | [Report a bug or request a feature](https://github.com/kagenti/adk/issues) | ## License [Apache 2.0](./LICENSE) - -## QR Code for Kagenti.io - -This QR Code links to - -![Kagenti.io QR Code](./docs/stable/images/Kagenti.QRcode.png) diff --git a/apps/docs-site/.gitignore b/apps/docs-site/.gitignore new file mode 100644 index 00000000..4c463367 --- /dev/null +++ b/apps/docs-site/.gitignore @@ -0,0 +1,2 @@ +.next/ +out/ diff --git a/apps/docs-site/next.config.ts b/apps/docs-site/next.config.ts new file mode 100644 index 00000000..f1223154 --- /dev/null +++ b/apps/docs-site/next.config.ts @@ -0,0 +1,25 @@ +/** + * Copyright 2025 IBM Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import type { NextConfig } from "next"; + +const nextConfig: NextConfig = { + output: "export", + basePath: process.env.BASE_PATH || "", + images: { unoptimized: true }, +}; + +export default nextConfig; diff --git a/apps/docs-site/package.json b/apps/docs-site/package.json new file mode 100644 index 00000000..cdc36ac2 --- /dev/null +++ b/apps/docs-site/package.json @@ -0,0 +1,23 @@ +{ + "name": "@kagenti/docs-site", + "version": "1.0.0", + "private": true, + "scripts": { + "dev": "next dev --port 3334", + "build": "next build", + "start": "next start" + }, + "dependencies": { + "gray-matter": "^4.0.3", + "next": "^15.3.0", + "next-mdx-remote": "^5.0.0", + "react": "^19.0.0", + "react-dom": "^19.0.0", + "remark-gfm": "^4.0.0" + }, + "devDependencies": { + "@types/node": "^22.0.0", + "@types/react": "^19.0.0", + "typescript": "^5.7.0" + } +} diff --git a/apps/docs-site/src/app/[version]/[...slug]/page.tsx b/apps/docs-site/src/app/[version]/[...slug]/page.tsx new file mode 100644 index 00000000..cf70f2b4 --- /dev/null +++ b/apps/docs-site/src/app/[version]/[...slug]/page.tsx @@ -0,0 +1,115 @@ +/** + * Copyright 2025 IBM Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import Link from "next/link"; +import { notFound } from "next/navigation"; +import { MDXRemote } from "next-mdx-remote/rsc"; +import remarkGfm from "remark-gfm"; +import { getAllPages, getPage, getNavGroups } from "@/lib/docs"; +import { mintlifyComponents } from "@/components/mintlify"; + +export function generateStaticParams() { + return getAllPages() + .filter(({ version }) => version === "stable") + .map(({ version, slug }) => ({ + version, + slug, + })); +} + +function Sidebar({ + version, + currentSlug, +}: { + version: string; + currentSlug: string; +}) { + const groups = getNavGroups(version); + + return ( + + ); +} + +export default async function DocPage({ + params, +}: { + params: Promise<{ version: string; slug: string[] }>; +}) { + const { version, slug } = await params; + const page = getPage(version, slug); + + if (!page) { + notFound(); + } + + // Strip embedme comments and HTML style string attributes (MDX requires object syntax) + const cleanContent = page.content + .replace(/\{\/\*\s*\s*\*\/\}/g, "") + .replace(/\sstyle="[^"]*"/g, ""); + + return ( +
+ +
+
+
+ This documentation is under construction. Content may be incomplete or undergoing change. +
+
+

{page.title}

+ {page.description && ( +

{page.description}

+ )} +
+ +
+
+
+ ); +} diff --git a/apps/docs-site/src/app/globals.css b/apps/docs-site/src/app/globals.css new file mode 100644 index 00000000..fa659816 --- /dev/null +++ b/apps/docs-site/src/app/globals.css @@ -0,0 +1,371 @@ +/** + * Copyright 2025 IBM Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +:root { + --c-bg: #f2f2f2; + --c-surface: #ffffff; + --c-text: #151515; + --c-muted: #4d4d4d; + --c-border: #c7c7c7; + --c-accent: #0066cc; + --c-accent-dark: #003366; + + --font-display: "Red Hat Display", sans-serif; + --font-text: "Red Hat Text", sans-serif; + --font-mono: "Red Hat Mono", monospace; + + --sz-label: 0.75rem; + --sz-body: 0.9375rem; + --sz-code: 0.8125rem; + --sz-heading: clamp(1.375rem, 2.5vw, 1.75rem); + --sz-display: clamp(2.25rem, 5vw, 3.75rem); + + --sp-2: 0.5rem; + --sp-3: 0.75rem; + --sp-4: 1rem; + --sp-5: 1.25rem; + --sp-6: 1.5rem; + --sp-8: 2rem; + --sp-10: 2.5rem; + --sp-12: 3rem; + --sp-16: 4rem; + + --sidebar-width: 260px; + --max-w: 1120px; + --radius: 4px; +} + +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + font-family: var(--font-text); + font-size: var(--sz-body); + background: var(--c-bg); + color: var(--c-text); + line-height: 1.6; + -webkit-font-smoothing: antialiased; +} + +a { + color: var(--c-accent); + text-decoration: none; + transition: color 120ms ease; +} +a:hover { + color: var(--c-accent-dark); + text-decoration: underline; +} + +/* Layout */ +.layout { + display: flex; + min-height: 100vh; +} + +.sidebar { + width: var(--sidebar-width); + background: var(--c-surface); + border-right: 1px solid var(--c-border); + padding: var(--sp-6) var(--sp-5); + position: fixed; + top: 0; + left: 0; + height: 100vh; + overflow-y: auto; +} + +.sidebar-header { + font-family: var(--font-display); + font-weight: 700; + font-size: 1.125rem; + margin-bottom: var(--sp-6); + padding-bottom: var(--sp-3); + border-bottom: 1px solid var(--c-border); +} + +.nav-group-title { + font-family: var(--font-mono); + font-size: var(--sz-label); + font-weight: 500; + text-transform: uppercase; + letter-spacing: 0.05em; + color: var(--c-muted); + margin-top: var(--sp-6); + margin-bottom: var(--sp-2); +} + +.nav-link { + display: block; + padding: var(--sp-2) var(--sp-3); + font-size: var(--sz-body); + color: var(--c-text); + border-radius: var(--radius); + transition: background 120ms ease; +} + +.nav-link:hover { + background: var(--c-bg); + color: var(--c-text); + text-decoration: none; +} + +.nav-link.active { + font-weight: 600; + background: var(--c-bg); + color: var(--c-accent); +} + +.main-content { + margin-left: var(--sidebar-width); + flex: 1; + max-width: 52rem; + padding: var(--sp-10) var(--sp-12); + background: var(--c-surface); + min-height: 100vh; +} + +.page-title { + font-family: var(--font-display); + font-size: var(--sz-heading); + font-weight: 700; + line-height: 1.2; + margin-bottom: var(--sp-2); +} + +.page-description { + color: var(--c-muted); + margin-bottom: var(--sp-8); + font-size: var(--sz-body); + line-height: 1.6; +} + +/* Prose */ +.prose h1 { + font-family: var(--font-display); + font-size: clamp(1.5rem, 2.5vw, 1.75rem); + font-weight: 700; + line-height: 1.2; + margin-top: var(--sp-10); + margin-bottom: var(--sp-4); +} +.prose h2 { + font-family: var(--font-display); + font-size: clamp(1.25rem, 2vw, 1.5rem); + font-weight: 700; + line-height: 1.2; + margin-top: var(--sp-10); + margin-bottom: var(--sp-4); + padding-bottom: var(--sp-3); + border-bottom: 1px solid var(--c-border); +} +.prose h3 { + font-family: var(--font-display); + font-size: 1.125rem; + font-weight: 600; + line-height: 1.2; + margin-top: var(--sp-8); + margin-bottom: var(--sp-3); +} +.prose h4 { + font-family: var(--font-text); + font-size: var(--sz-body); + font-weight: 600; + margin-top: var(--sp-6); + margin-bottom: var(--sp-2); +} +.prose p { + margin-bottom: var(--sp-4); +} +.prose ul, +.prose ol { + margin-bottom: var(--sp-4); + padding-left: var(--sp-6); +} +.prose li { + margin-bottom: var(--sp-2); +} +.prose table { + width: 100%; + border-collapse: collapse; + margin-bottom: var(--sp-6); + font-size: var(--sz-body); +} +.prose th, +.prose td { + border: 1px solid var(--c-border); + padding: var(--sp-3) var(--sp-4); + text-align: left; +} +.prose th { + font-weight: 600; + background: var(--c-bg); +} +.prose pre { + background: var(--c-text); + color: #f9f9f7; + padding: var(--sp-5); + border-radius: var(--radius); + overflow-x: auto; + margin-bottom: var(--sp-4); + font-size: var(--sz-code); + line-height: 1.75; +} +.prose code { + font-family: var(--font-mono); + font-size: var(--sz-code); +} +.prose :not(pre) > code { + background: var(--c-bg); + padding: 0.15rem 0.4rem; + border-radius: var(--radius); + border: 1px solid var(--c-border); +} +.prose hr { + border: none; + border-top: 1px solid var(--c-border); + margin: var(--sp-8) 0; +} +.prose img { + max-width: 100%; + border-radius: var(--radius); +} +.prose strong { + font-weight: 600; +} + +/* Callouts */ +.callout { + border-radius: var(--radius); + padding: var(--sp-4) var(--sp-5); + margin-bottom: var(--sp-4); + border-left: 3px solid; + font-size: var(--sz-body); +} +.callout-tip { + background: #f0fdf4; + border-color: #166534; +} +.callout-warning { + background: #fffbeb; + border-color: #92400e; +} +.callout-note { + background: #eff6ff; + border-color: var(--c-accent); +} +.callout-info { + background: #f0f9ff; + border-color: var(--c-accent); +} + +/* Steps */ +.steps { + margin-bottom: var(--sp-6); +} +.steps-title { + font-family: var(--font-display); + font-size: 1.125rem; + font-weight: 600; + margin-bottom: var(--sp-4); +} +.steps-list { + border-left: 2px solid var(--c-border); + padding-left: var(--sp-6); +} +.step { + margin-bottom: var(--sp-6); + position: relative; +} +.step::before { + content: ""; + position: absolute; + left: calc(-1 * var(--sp-6) - 5px); + top: 0.5rem; + width: 8px; + height: 8px; + background: var(--c-accent); + border-radius: 50%; +} +.step-title { + font-weight: 600; + margin-bottom: var(--sp-2); +} + +/* Cards */ +.card-group { + display: grid; + gap: var(--sp-4); + margin-bottom: var(--sp-6); +} +.card { + border: 1px solid var(--c-border); + border-radius: var(--radius); + padding: var(--sp-5); + background: var(--c-surface); + transition: border-color 120ms ease; +} +.card:hover { + border-color: var(--c-accent); +} +.card-title { + font-family: var(--font-display); + font-weight: 600; + margin-bottom: var(--sp-2); +} +.card-content { + font-size: var(--sz-body); + color: var(--c-muted); +} + +/* Tabs & Accordion */ +.tab, +.accordion { + border: 1px solid var(--c-border); + border-radius: var(--radius); + margin-bottom: var(--sp-3); + background: var(--c-surface); +} +.tab summary, +.accordion summary { + padding: var(--sp-3) var(--sp-4); + cursor: pointer; + font-weight: 600; + font-size: var(--sz-body); +} +.tab-content, +.accordion-content { + padding: 0 var(--sp-4) var(--sp-4); +} + +/* Code group */ +.code-group { + margin-bottom: var(--sp-4); +} + +/* Responsive */ +@media (max-width: 768px) { + .sidebar { + display: none; + } + .main-content { + margin-left: 0; + padding: var(--sp-6); + } +} diff --git a/apps/docs-site/src/app/layout.tsx b/apps/docs-site/src/app/layout.tsx new file mode 100644 index 00000000..035d0d50 --- /dev/null +++ b/apps/docs-site/src/app/layout.tsx @@ -0,0 +1,48 @@ +/** + * Copyright 2025 IBM Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import type { Metadata } from "next"; +import "./globals.css"; + +export const metadata: Metadata = { + title: "Kagenti ADK Documentation", + description: + "The developer toolkit for getting agents into production.", +}; + +export default function RootLayout({ + children, +}: { + children: React.ReactNode; +}) { + return ( + + + + + + + {children} + + ); +} diff --git a/apps/docs-site/src/app/page.tsx b/apps/docs-site/src/app/page.tsx new file mode 100644 index 00000000..0a6efc17 --- /dev/null +++ b/apps/docs-site/src/app/page.tsx @@ -0,0 +1,21 @@ +/** + * Copyright 2025 IBM Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { redirect } from "next/navigation"; + +export default function Home() { + redirect("/stable/introduction/welcome"); +} diff --git a/apps/docs-site/src/components/mintlify.tsx b/apps/docs-site/src/components/mintlify.tsx new file mode 100644 index 00000000..013e4322 --- /dev/null +++ b/apps/docs-site/src/components/mintlify.tsx @@ -0,0 +1,190 @@ +/** + * Copyright 2025 IBM Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import React from "react"; +import Link from "next/link"; + +function Callout({ + type, + children, +}: { + type: string; + children: React.ReactNode; +}) { + return ( +
+
{children}
+
+ ); +} + +export function Tip({ children }: { children: React.ReactNode }) { + return {children}; +} + +export function Warning({ children }: { children: React.ReactNode }) { + return {children}; +} + +export function Note({ children }: { children: React.ReactNode }) { + return {children}; +} + +export function Info({ children }: { children: React.ReactNode }) { + return {children}; +} + +export function Danger({ children }: { children: React.ReactNode }) { + return {children}; +} + +export function Steps({ + children, + title, +}: { + children: React.ReactNode; + title?: string; +}) { + return ( +
+ {title &&

{title}

} +
{children}
+
+ ); +} + +export function Step({ + children, + title, +}: { + children: React.ReactNode; + title: string; +}) { + return ( +
+
{title}
+
{children}
+
+ ); +} + +export function CardGroup({ + children, + cols = 2, +}: { + children: React.ReactNode; + cols?: number; +}) { + return ( +
+ {children} +
+ ); +} + +export function Card({ + children, + title, + href, +}: { + children: React.ReactNode; + title: string; + icon?: string; + href?: string; +}) { + const content = ( +
+
{title}
+
{children}
+
+ ); + + if (href) { + return {content}; + } + return content; +} + +export function Tabs({ children }: { children: React.ReactNode }) { + return
{children}
; +} + +export function Tab({ + children, + title, +}: { + children: React.ReactNode; + title: string; +}) { + return ( +
+ {title} +
{children}
+
+ ); +} + +export function Accordion({ + children, + title, +}: { + children: React.ReactNode; + title: string; +}) { + return ( +
+ {title} +
{children}
+
+ ); +} + +export function CodeGroup({ children }: { children: React.ReactNode }) { + return
{children}
; +} + +export function ApiResult({ children }: { children: React.ReactNode }) { + return
{children}
; +} + +function MdxLink(props: React.AnchorHTMLAttributes) { + const href = props.href ?? ""; + if (href.startsWith("/") || href.startsWith("./") || href.startsWith("../")) { + return ; + } + return ; +} + +export const mintlifyComponents = { + a: MdxLink, + Tip, + Warning, + Note, + Info, + Danger, + Steps, + Step, + CardGroup, + Card, + Tabs, + Tab, + Accordion, + CodeGroup, + ApiResult, +}; diff --git a/apps/docs-site/src/lib/docs.ts b/apps/docs-site/src/lib/docs.ts new file mode 100644 index 00000000..26ee55c5 --- /dev/null +++ b/apps/docs-site/src/lib/docs.ts @@ -0,0 +1,91 @@ +/** + * Copyright 2025 IBM Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import fs from "fs"; +import path from "path"; +import matter from "gray-matter"; + +const DOCS_ROOT = path.join(process.cwd(), "..", "..", "docs"); + +export interface DocPage { + version: string; + slug: string[]; + title: string; + description: string; + content: string; +} + +export interface NavGroup { + group: string; + pages: (string | { group: string; openapi: string })[]; +} + +export interface NavVersion { + version: string; + groups: NavGroup[]; +} + +export function getNavigation(): NavVersion[] { + const docsJson = JSON.parse( + fs.readFileSync(path.join(DOCS_ROOT, "docs.json"), "utf-8"), + ); + return docsJson.navigation.versions; +} + +export function getAllPages(): { version: string; slug: string[] }[] { + const nav = getNavigation(); + const pages: { version: string; slug: string[] }[] = []; + + for (const ver of nav) { + for (const group of ver.groups) { + for (const page of group.pages) { + if (typeof page === "string") { + const parts = page.split("/"); + const version = parts[0]; + const slug = parts.slice(1); + pages.push({ version, slug }); + } + } + } + } + + return pages; +} + +export function getPage(version: string, slug: string[]): DocPage | null { + const filePath = path.join(DOCS_ROOT, version, ...slug) + ".mdx"; + + if (!fs.existsSync(filePath)) { + return null; + } + + const raw = fs.readFileSync(filePath, "utf-8"); + const { data, content } = matter(raw); + + return { + version, + slug, + title: (data.title as string) || slug[slug.length - 1], + description: (data.description as string) || "", + content, + }; +} + +export function getNavGroups(version: string): NavGroup[] { + const nav = getNavigation(); + const ver = nav.find((v) => v.version === version); + return ver?.groups || []; +} diff --git a/apps/docs-site/tasks.toml b/apps/docs-site/tasks.toml new file mode 100644 index 00000000..33100e38 --- /dev/null +++ b/apps/docs-site/tasks.toml @@ -0,0 +1,11 @@ +["docs-site:run:dev"] +depends = ["common:setup:pnpm"] +dir = "{{config_root}}/apps/docs-site" +run = "pnpm dev" + +["docs-site:build"] +depends = ["common:setup:pnpm"] +dir = "{{config_root}}/apps/docs-site" +run = "pnpm build" +sources = ["src/**/*", "package.json", "next.config.ts", "tsconfig.json", "../../docs/development/**/*.mdx", "../../docs/stable/**/*.mdx", "../../docs/docs.json"] +outputs = ["out/**/*"] diff --git a/apps/docs-site/tsconfig.json b/apps/docs-site/tsconfig.json new file mode 100644 index 00000000..fba2bf37 --- /dev/null +++ b/apps/docs-site/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "target": "ES2017", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "plugins": [{ "name": "next" }], + "paths": { "@/*": ["./src/*"] } + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], + "exclude": ["node_modules"] +} diff --git a/docs/development/introduction/welcome.mdx b/docs/development/introduction/welcome.mdx index 8fcd1e1f..4da7d01f 100644 --- a/docs/development/introduction/welcome.mdx +++ b/docs/development/introduction/welcome.mdx @@ -3,7 +3,7 @@ title: Welcome description: "Kagenti ADK is open infrastructure for turning AI agents into running services in minutes." --- -**Writing an agent is easy. Shipping one is not.** +Kagenti ADK (Agent Development Kit) takes agents built with any framework or custom code and turns them into [A2A](https://a2a-protocol.org/)-compliant services โ€” with the CLI, SDKs, runtime services, and UI you need to go from agent logic to a working service. Kagenti ADK gives you everything you need to run agents as backend services: LLM routing, vector storage, authentication, file handling, and deployment tooling out of the box. You write agent logic in any framework. Kagenti ADK provides the infrastructure so you can ship to users in minutes, not weeks. | Component | What's Included | @@ -18,6 +18,19 @@ Kagenti ADK gives you everything you need to run agents as backend services: LLM | **Kagenti ADK Deployment** | - Helm chart for Kubernetes with customizable storage, databases, and authentication | | **Framework Interoperability** | - Build agents using LangGraph, CrewAI, or your own framework
- Agents are automatically exposed as A2A-compatible agents
- `kagenti-adk` handles runtime service requests and agent-to-agent communication | +- **CLI** โ€” scaffold projects, run agents locally, and deploy to Kagenti +- **Python SDK** โ€” wrap your agent with A2A, inject runtime services (LLMs, storage, auth, MCP) via dependency injection +- **TypeScript Client SDK** โ€” build applications that talk to your agents +- **Server** with built-in runtime services: + - **LLM proxy** โ€” single API for 15+ providers (OpenAI, Anthropic, watsonx.ai, Bedrock, Ollama) + - **MCP connectors** โ€” connect agents to external tools and APIs via the [Model Context Protocol](https://modelcontextprotocol.io/) + - **PostgreSQL** โ€” agent state, conversation history, and configuration + - **Vector search (pgvector)** โ€” embeddings and similarity search for RAG + - **File storage (SeaweedFS)** โ€” S3-compatible upload, download, and storage + - **Document extraction (Docling)** โ€” text extraction from PDFs, CSVs, and more + - **Authentication (Keycloak)** โ€” identity and access management + - **Observability (Phoenix)** โ€” LLM tracing and agent debugging +- **Web UI** โ€” chat interface for interacting with and testing your agents ## Get running in one command Start a complete agent runtime locally โ€” models, storage, and services included. @@ -150,15 +163,24 @@ Kagenti ADK is being actively developed and intended to evolve alongside the age - Get up and running in one command + Install and run your first agent Deploy your existing agents to Kagenti ADK - - Build your first agent with the SDK + + Explore the Python SDK capabilities Deploy Kagenti ADK to Kubernetes for your team - \ No newline at end of file + + +## Community + +Kagenti ADK is open source under the Apache 2.0 license. We'd love to hear from you โ€” whether you have questions, feedback, or want to contribute. + +- [GitHub](https://github.com/kagenti/adk) โ€” source code, issues, and releases +- [Discord](https://discord.gg/aJ92dNDzqB) โ€” real-time chat +- [Email](mailto:kagenti-maintainers@googlegroups.com) โ€” kagenti-maintainers@googlegroups.com +- [Contributing guide](https://github.com/kagenti/adk/blob/main/CONTRIBUTING.md) โ€” how to contribute diff --git a/mise.toml b/mise.toml index 99a4b47c..da438837 100644 --- a/mise.toml +++ b/mise.toml @@ -138,4 +138,5 @@ includes = [ "apps/microshift-vm/tasks.toml", "agents/tasks.toml", "docs/tasks.toml", + "apps/docs-site/tasks.toml", ] diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 68cf242d..a95a2f20 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -357,6 +357,37 @@ importers: specifier: 'catalog:' version: 5.9.3 + apps/docs-site: + dependencies: + gray-matter: + specifier: ^4.0.3 + version: 4.0.3 + next: + specifier: ^15.3.0 + version: 15.5.13(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3) + next-mdx-remote: + specifier: ^5.0.0 + version: 5.0.0(@types/react@19.2.14)(react@19.2.4) + react: + specifier: ^19.0.0 + version: 19.2.4 + react-dom: + specifier: ^19.0.0 + version: 19.2.4(react@19.2.4) + remark-gfm: + specifier: ^4.0.0 + version: 4.0.1 + devDependencies: + '@types/node': + specifier: ^22.0.0 + version: 22.19.15 + '@types/react': + specifier: ^19.0.0 + version: 19.2.14 + typescript: + specifier: ^5.7.0 + version: 5.9.3 + apps/lint-config: dependencies: '@eslint/eslintrc': @@ -1990,54 +2021,105 @@ packages: '@next/bundle-analyzer@16.1.6': resolution: {integrity: sha512-ee2kagdTaeEWPlotgdTOqFHYcD3e2m2bbE3I9Rq2i6ABYi5OgopmtEUe8NM23viaYxLV2tDH/2nd5+qKoEr6cw==} + '@next/env@15.5.13': + resolution: {integrity: sha512-6h7Fm29+/u1WBPcPaQl0xBov7KXB6i0c8oFlSlehD+PuZJQjzXQBuYzfkM32G5iWOlKsXXyRtcMaaqwspRBujA==} + '@next/env@16.1.6': resolution: {integrity: sha512-N1ySLuZjnAtN3kFnwhAwPvZah8RJxKasD7x1f8shFqhncnWZn4JMfg37diLNuoHsLAlrDfM3g4mawVdtAG8XLQ==} '@next/eslint-plugin-next@15.5.12': resolution: {integrity: sha512-+ZRSDFTv4aC96aMb5E41rMjysx8ApkryevnvEYZvPZO52KvkqP5rNExLUXJFr9P4s0f3oqNQR6vopCZsPWKDcQ==} + '@next/swc-darwin-arm64@15.5.13': + resolution: {integrity: sha512-XrBbj2iY1mQSsJ8RoFClNpUB9uuZejP94v9pJuSAzdzwFVHeP+Vu2vzBCHwSObozgYNuTVwKhLukG1rGCgj8xA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + '@next/swc-darwin-arm64@16.1.6': resolution: {integrity: sha512-wTzYulosJr/6nFnqGW7FrG3jfUUlEf8UjGA0/pyypJl42ExdVgC6xJgcXQ+V8QFn6niSG2Pb8+MIG1mZr2vczw==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] + '@next/swc-darwin-x64@15.5.13': + resolution: {integrity: sha512-Ey3fuUeWDWtVdgiLHajk2aJ74Y8EWLeqvfwlkB5RvWsN7F1caQ6TjifsQzrAcOuNSnogGvFNYzjQlu7tu0kyWg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + '@next/swc-darwin-x64@16.1.6': resolution: {integrity: sha512-BLFPYPDO+MNJsiDWbeVzqvYd4NyuRrEYVB5k2N3JfWncuHAy2IVwMAOlVQDFjj+krkWzhY2apvmekMkfQR0CUQ==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] + '@next/swc-linux-arm64-gnu@15.5.13': + resolution: {integrity: sha512-aLtu/WxDeL3188qx3zyB3+iw8nAB9F+2Mhyz9nNZpzsREc2t8jQTuiWY4+mtOgWp1d+/Q4eXuy9m3dwh3n1IyQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + '@next/swc-linux-arm64-gnu@16.1.6': resolution: {integrity: sha512-OJYkCd5pj/QloBvoEcJ2XiMnlJkRv9idWA/j0ugSuA34gMT6f5b7vOiCQHVRpvStoZUknhl6/UxOXL4OwtdaBw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + '@next/swc-linux-arm64-musl@15.5.13': + resolution: {integrity: sha512-9VZ0OsVx9PEL72W50QD15iwSCF3GD/dwj42knfF5C4aiBPXr95etGIOGhb8rU7kpnzZuPNL81CY4vIyUKa2xvg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + '@next/swc-linux-arm64-musl@16.1.6': resolution: {integrity: sha512-S4J2v+8tT3NIO9u2q+S0G5KdvNDjXfAv06OhfOzNDaBn5rw84DGXWndOEB7d5/x852A20sW1M56vhC/tRVbccQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + '@next/swc-linux-x64-gnu@15.5.13': + resolution: {integrity: sha512-3knsu9H33e99ZfiWh0Bb04ymEO7YIiopOpXKX89ZZ/ER0iyfV1YLoJFxJJQNUD7OR8O7D7eiLI/TXPryPGv3+A==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + '@next/swc-linux-x64-gnu@16.1.6': resolution: {integrity: sha512-2eEBDkFlMMNQnkTyPBhQOAyn2qMxyG2eE7GPH2WIDGEpEILcBPI/jdSv4t6xupSP+ot/jkfrCShLAa7+ZUPcJQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + '@next/swc-linux-x64-musl@15.5.13': + resolution: {integrity: sha512-AVPb6+QZ0pPanJFc1hpx81I5tTiBF4VITw5+PMaR1CrboAUUxtxn3IsV0h48xI7fzd6/zw9D9i6khRwME5NKUw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + '@next/swc-linux-x64-musl@16.1.6': resolution: {integrity: sha512-oicJwRlyOoZXVlxmIMaTq7f8pN9QNbdes0q2FXfRsPhfCi8n8JmOZJm5oo1pwDaFbnnD421rVU409M3evFbIqg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + '@next/swc-win32-arm64-msvc@15.5.13': + resolution: {integrity: sha512-FZ/HXuTxn+e5Lp6oRZMvHaMJx22gAySveJdJE0//91Nb9rMuh2ftgKlEwBFJxhkw5kAF/yIXz3iBf0tvDXRmCA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + '@next/swc-win32-arm64-msvc@16.1.6': resolution: {integrity: sha512-gQmm8izDTPgs+DCWH22kcDmuUp7NyiJgEl18bcr8irXA5N2m2O+JQIr6f3ct42GOs9c0h8QF3L5SzIxcYAAXXw==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] + '@next/swc-win32-x64-msvc@15.5.13': + resolution: {integrity: sha512-B5E82pX3VXu6Ib5mDuZEqGwT8asocZe3OMMnaM+Yfs0TRlmSQCBQUUXR9BkXQeGVboOWS1pTsRkS9wzFd8PABw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + '@next/swc-win32-x64-msvc@16.1.6': resolution: {integrity: sha512-NRfO39AIrzBnixKbjuo2YiYhB6o9d8v/ymU9m/Xk8cyVk+k7XylniXkHwjs4s70wedVffc6bQNbufk5v0xEm0A==} engines: {node: '>= 10'} @@ -3456,6 +3538,9 @@ packages: '@types/nlcst@2.0.3': resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==} + '@types/node@22.19.15': + resolution: {integrity: sha512-F0R/h2+dsy5wJAUe3tAU6oqa2qbWY5TpNfL/RGmo1y38hiyO1w3x2jPtt76wmuaJI4DQnOBu21cNXQ2STIUUWg==} + '@types/node@24.12.0': resolution: {integrity: sha512-GYDxsZi3ChgmckRT9HPU0WEhKLP08ev/Yfcq2AstjrDASOYCSXeyjDsHg4v5t4jOj7cyDX3vmprafKlWIG9MXQ==} @@ -5085,6 +5170,10 @@ packages: resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} engines: {node: '>= 0.10.0'} + extend-shallow@2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} + extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} @@ -5382,6 +5471,10 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + gray-matter@4.0.3: + resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} + engines: {node: '>=6.0'} + gzip-size@6.0.0: resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} engines: {node: '>=10'} @@ -5712,6 +5805,10 @@ packages: engines: {node: '>=8'} hasBin: true + is-extendable@0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -6400,6 +6497,33 @@ packages: react: '>= 18.3.0 < 19.0.0' react-dom: '>= 18.3.0 < 19.0.0' + next-mdx-remote@5.0.0: + resolution: {integrity: sha512-RNNbqRpK9/dcIFZs/esQhuLA8jANqlH694yqoDBK8hkVdJUndzzGmnPHa2nyi90N4Z9VmzuSWNRpr5ItT3M7xQ==} + engines: {node: '>=14', npm: '>=7'} + peerDependencies: + react: '>=16' + + next@15.5.13: + resolution: {integrity: sha512-n0AXf6vlTwGuM93Z++POtjMsRuQ9pT5v2URPciXKUQIl/EB2WjXF0YiIUxaa9AEMFaMpZlaG3KPK6i4UVnx9eQ==} + engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.51.1 + babel-plugin-react-compiler: '*' + react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@playwright/test': + optional: true + babel-plugin-react-compiler: + optional: true + sass: + optional: true + next@16.1.6: resolution: {integrity: sha512-hkyRkcu5x/41KoqnROkfTm2pZVbKxvbZRuNvKXLRXxs3VfyO0WhY50TQS40EuKO9SW3rBj/sF3WbVwDACeMZyw==} engines: {node: '>=20.9.0'} @@ -7350,6 +7474,10 @@ packages: scheduler@0.27.0: resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} + section-matter@1.0.0: + resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} + engines: {node: '>=4'} + semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true @@ -7586,6 +7714,10 @@ packages: resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} engines: {node: '>=12'} + strip-bom-string@1.0.0: + resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} + engines: {node: '>=0.10.0'} + strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} @@ -7912,6 +8044,9 @@ packages: unbzip2-stream@1.4.3: resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + undici-types@7.16.0: resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} @@ -7968,6 +8103,9 @@ packages: unist-util-remove-position@5.0.0: resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} + unist-util-remove@3.1.1: + resolution: {integrity: sha512-kfCqZK5YVY5yEa89tvpl7KnBBHu2c6CzMkqHUrlOqaRgGOMp0sMvwWOVrbAtj03KhovQB7i96Gda72v/EFE0vw==} + unist-util-remove@4.0.0: resolution: {integrity: sha512-b4gokeGId57UVRX/eVKej5gXqGlc9+trkORhFJpu9raqZkZhU0zm8Doi05+HaiBsMEIJowL+2WtQ5ItjsngPXg==} @@ -10032,6 +10170,12 @@ snapshots: '@types/react': 19.2.14 react: 19.2.3 + '@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4)': + dependencies: + '@types/mdx': 2.0.13 + '@types/react': 19.2.14 + react: 19.2.4 + '@mermaid-js/parser@1.0.0': dependencies: langium: 4.2.1 @@ -10233,7 +10377,7 @@ snapshots: '@shikijs/twoslash': 3.23.0(typescript@5.9.3) arktype: 2.2.0 hast-util-to-string: 3.0.1 - mdast-util-from-markdown: 2.0.2 + mdast-util-from-markdown: 2.0.3 mdast-util-gfm: 3.1.0 mdast-util-mdx-jsx: 3.2.0 mdast-util-to-hast: 13.2.1 @@ -10241,12 +10385,12 @@ snapshots: react: 19.2.3 react-dom: 19.2.4(react@19.2.3) rehype-katex: 7.0.1 - remark-gfm: 4.0.0 + remark-gfm: 4.0.1 remark-math: 6.0.0 remark-smartypants: 3.0.2 shiki: 3.23.0 unified: 11.0.5 - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 transitivePeerDependencies: - '@types/react' - supports-color @@ -10473,33 +10617,59 @@ snapshots: - bufferutil - utf-8-validate + '@next/env@15.5.13': {} + '@next/env@16.1.6': {} '@next/eslint-plugin-next@15.5.12': dependencies: fast-glob: 3.3.1 + '@next/swc-darwin-arm64@15.5.13': + optional: true + '@next/swc-darwin-arm64@16.1.6': optional: true + '@next/swc-darwin-x64@15.5.13': + optional: true + '@next/swc-darwin-x64@16.1.6': optional: true + '@next/swc-linux-arm64-gnu@15.5.13': + optional: true + '@next/swc-linux-arm64-gnu@16.1.6': optional: true + '@next/swc-linux-arm64-musl@15.5.13': + optional: true + '@next/swc-linux-arm64-musl@16.1.6': optional: true + '@next/swc-linux-x64-gnu@15.5.13': + optional: true + '@next/swc-linux-x64-gnu@16.1.6': optional: true + '@next/swc-linux-x64-musl@15.5.13': + optional: true + '@next/swc-linux-x64-musl@16.1.6': optional: true + '@next/swc-win32-arm64-msvc@15.5.13': + optional: true + '@next/swc-win32-arm64-msvc@16.1.6': optional: true + '@next/swc-win32-x64-msvc@15.5.13': + optional: true + '@next/swc-win32-x64-msvc@16.1.6': optional: true @@ -12200,7 +12370,7 @@ snapshots: '@types/body-parser@1.19.6': dependencies: '@types/connect': 3.4.38 - '@types/node': 25.4.0 + '@types/node': 22.19.15 '@types/chai@5.2.3': dependencies: @@ -12209,13 +12379,13 @@ snapshots: '@types/connect@3.4.38': dependencies: - '@types/node': 25.4.0 + '@types/node': 22.19.15 '@types/cookie@0.4.1': {} '@types/cors@2.8.19': dependencies: - '@types/node': 25.4.0 + '@types/node': 22.19.15 '@types/d3-array@3.2.2': {} @@ -12342,7 +12512,7 @@ snapshots: '@types/es-aggregate-error@1.0.6': dependencies: - '@types/node': 25.4.0 + '@types/node': 22.19.15 '@types/estree-jsx@1.0.5': dependencies: @@ -12352,7 +12522,7 @@ snapshots: '@types/express-serve-static-core@5.1.1': dependencies: - '@types/node': 25.4.0 + '@types/node': 22.19.15 '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 '@types/send': 1.2.1 @@ -12395,6 +12565,10 @@ snapshots: dependencies: '@types/unist': 3.0.3 + '@types/node@22.19.15': + dependencies: + undici-types: 6.21.0 + '@types/node@24.12.0': dependencies: undici-types: 7.16.0 @@ -12429,12 +12603,12 @@ snapshots: '@types/send@1.2.1': dependencies: - '@types/node': 25.4.0 + '@types/node': 22.19.15 '@types/serve-static@2.2.0': dependencies: '@types/http-errors': 2.0.5 - '@types/node': 25.4.0 + '@types/node': 22.19.15 '@types/trusted-types@2.0.7': optional: true @@ -12449,7 +12623,7 @@ snapshots: '@types/yauzl@2.10.3': dependencies: - '@types/node': 25.4.0 + '@types/node': 22.19.15 optional: true '@typescript-eslint/eslint-plugin@8.56.1(@typescript-eslint/parser@8.56.1(eslint@9.39.3(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.3(jiti@1.21.7))(typescript@5.9.3)': @@ -13747,7 +13921,7 @@ snapshots: dependencies: '@types/cookie': 0.4.1 '@types/cors': 2.8.19 - '@types/node': 25.4.0 + '@types/node': 22.19.15 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.7.0 @@ -14246,6 +14420,10 @@ snapshots: transitivePeerDependencies: - supports-color + extend-shallow@2.0.1: + dependencies: + is-extendable: 0.1.1 + extend@3.0.2: {} extract-zip@2.0.1: @@ -14582,6 +14760,13 @@ snapshots: graceful-fs@4.2.11: {} + gray-matter@4.0.3: + dependencies: + js-yaml: 3.14.2 + kind-of: 6.0.3 + section-matter: 1.0.0 + strip-bom-string: 1.0.0 + gzip-size@6.0.0: dependencies: duplexer: 0.1.2 @@ -14770,7 +14955,7 @@ snapshots: rehype-minify-whitespace: 6.0.2 trim-trailing-lines: 2.1.0 unist-util-position: 5.0.0 - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 hast-util-to-string@3.0.1: dependencies: @@ -15031,6 +15216,8 @@ snapshots: is-docker@2.2.1: {} + is-extendable@0.1.1: {} + is-extglob@2.1.1: {} is-finalizationregistry@1.1.1: @@ -15365,7 +15552,7 @@ snapshots: '@types/mdast': 4.0.4 devlop: 1.1.0 escape-string-regexp: 5.0.0 - mdast-util-from-markdown: 2.0.2 + mdast-util-from-markdown: 2.0.3 mdast-util-to-markdown: 2.1.2 micromark-extension-frontmatter: 2.0.0 transitivePeerDependencies: @@ -15418,7 +15605,7 @@ snapshots: mdast-util-gfm@3.0.0: dependencies: - mdast-util-from-markdown: 2.0.2 + mdast-util-from-markdown: 2.0.3 mdast-util-gfm-autolink-literal: 2.0.1 mdast-util-gfm-footnote: 2.1.0 mdast-util-gfm-strikethrough: 2.0.0 @@ -15499,7 +15686,7 @@ snapshots: mdast-util-mdx@3.0.0: dependencies: - mdast-util-from-markdown: 2.0.2 + mdast-util-from-markdown: 2.0.3 mdast-util-mdx-expression: 2.0.1 mdast-util-mdx-jsx: 3.2.0 mdast-util-mdxjs-esm: 2.0.1 @@ -16003,6 +16190,44 @@ snapshots: - supports-color - unified + next-mdx-remote@5.0.0(@types/react@19.2.14)(react@19.2.4): + dependencies: + '@babel/code-frame': 7.29.0 + '@mdx-js/mdx': 3.1.1 + '@mdx-js/react': 3.1.1(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + unist-util-remove: 3.1.1 + vfile: 6.0.3 + vfile-matter: 5.0.1 + transitivePeerDependencies: + - '@types/react' + - supports-color + + next@15.5.13(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3): + dependencies: + '@next/env': 15.5.13 + '@swc/helpers': 0.5.15 + caniuse-lite: 1.0.30001774 + postcss: 8.4.31 + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + styled-jsx: 5.1.6(@babel/core@7.29.0)(react@19.2.4) + optionalDependencies: + '@next/swc-darwin-arm64': 15.5.13 + '@next/swc-darwin-x64': 15.5.13 + '@next/swc-linux-arm64-gnu': 15.5.13 + '@next/swc-linux-arm64-musl': 15.5.13 + '@next/swc-linux-x64-gnu': 15.5.13 + '@next/swc-linux-x64-musl': 15.5.13 + '@next/swc-win32-arm64-msvc': 15.5.13 + '@next/swc-win32-x64-msvc': 15.5.13 + babel-plugin-react-compiler: 1.0.0 + sass: 1.97.3 + sharp: 0.34.5 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + next@16.1.6(@babel/core@7.29.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.3): dependencies: '@next/env': 16.1.6 @@ -16904,7 +17129,7 @@ snapshots: retext: 9.0.0 retext-smartypants: 6.2.0 unified: 11.0.5 - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 remark-stringify@11.0.0: dependencies: @@ -16967,7 +17192,7 @@ snapshots: dependencies: '@types/nlcst': 2.0.3 nlcst-to-string: 4.0.0 - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 retext-stringify@4.0.0: dependencies: @@ -17162,6 +17387,11 @@ snapshots: scheduler@0.27.0: {} + section-matter@1.0.0: + dependencies: + extend-shallow: 2.0.1 + kind-of: 6.0.3 + semver@6.3.1: {} semver@7.7.2: {} @@ -17545,6 +17775,8 @@ snapshots: dependencies: ansi-regex: 6.2.2 + strip-bom-string@1.0.0: {} + strip-bom@3.0.0: {} strip-json-comments@3.1.1: {} @@ -17971,6 +18203,8 @@ snapshots: buffer: 5.7.1 through: 2.3.8 + undici-types@6.21.0: {} + undici-types@7.16.0: {} undici-types@7.18.2: {} @@ -18037,11 +18271,17 @@ snapshots: '@types/unist': 3.0.3 unist-util-visit: 5.1.0 + unist-util-remove@3.1.1: + dependencies: + '@types/unist': 2.0.11 + unist-util-is: 5.2.1 + unist-util-visit-parents: 5.1.3 + unist-util-remove@4.0.0: dependencies: '@types/unist': 3.0.3 unist-util-is: 6.0.1 - unist-util-visit-parents: 6.0.1 + unist-util-visit-parents: 6.0.2 unist-util-stringify-position@4.0.0: dependencies: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index f71f7256..397f7e86 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -59,6 +59,7 @@ packages: # TODO: Uncomment, when published to npm # - apps/adk-ts/examples/chat-ui - apps/keycloak-theme + - apps/docs-site - docs catalog: