diff --git a/.agents/skills/databricks-apps/references/appkit/overview.md b/.agents/skills/databricks-apps/references/appkit/overview.md index e3c9a1a8..c20afcf4 100644 --- a/.agents/skills/databricks-apps/references/appkit/overview.md +++ b/.agents/skills/databricks-apps/references/appkit/overview.md @@ -68,13 +68,14 @@ my-app/ ``` **Key files to modify:** -| Task | File | -|------|------| -| Build UI | `client/src/App.tsx` | -| Add SQL query | `config/queries/.sql` | -| Add API endpoint | `server/server.ts` (tRPC) | + +| Task | File | +| ----------------------------- | ---------------------------------------------------------- | +| Build UI | `client/src/App.tsx` | +| Add SQL query | `config/queries/.sql` | +| Add API endpoint | `server/server.ts` (tRPC) | | Add shared helpers (optional) | create `shared/types.ts` or `client/src/lib/formatters.ts` | -| Fix smoke test | `tests/smoke.spec.ts` | +| Fix smoke test | `tests/smoke.spec.ts` | ## Type Safety diff --git a/api/content-markdown.ts b/api/content-markdown.ts index 9bf99a21..14d67ad2 100644 --- a/api/content-markdown.ts +++ b/api/content-markdown.ts @@ -35,11 +35,7 @@ import { buildNativeSolutionMarkdown } from "../src/lib/solutions/solution-markd import { resolveSiteUrl } from "../src/lib/site-url"; export type MarkdownSection = - | "docs" - | "recipes" - | "solutions" - | "examples" - | "templates"; + "docs" | "recipes" | "solutions" | "examples" | "templates"; /** * Recipe injected into every agent-prompt copy as the "Verify your local diff --git a/content/cookbooks/ai-chat-app/goal.md b/content/cookbooks/ai-chat-app/goal.md index 7dd70d17..b04c9ea5 100644 --- a/content/cookbooks/ai-chat-app/goal.md +++ b/content/cookbooks/ai-chat-app/goal.md @@ -1,11 +1,11 @@ -A streaming AI chat app on Databricks: a user sends a message, the server authenticates with the Databricks CLI profile (or a service-principal token in production), calls an AI Gateway chat endpoint via the OpenAI-compatible provider, and streams the answer back token-by-token. Chat sessions and messages are persisted in Lakebase Postgres so conversations survive page refreshes and redeploys. +A streaming AI chat app on Databricks: a user sends a message, the server authenticates with the Databricks CLI profile (or a service-principal token in production), calls a foundation-model serving endpoint via the OpenAI-compatible provider, and streams the answer back token-by-token. Chat sessions and messages are persisted in Lakebase Postgres so conversations survive page refreshes and redeploys. ### How the steps fit together Work through the steps in the order below. Each one adds one concrete piece; by the end you have a deployable app. Your installed Databricks agent skills provide the implementation patterns for each step. 1. **Spin Up a Databricks App** — scaffold a fresh AppKit Databricks App with `databricks apps init` (the meta-prompt above already verifies the CLI profile via [Set Up Your Local Dev Environment](/templates/set-up-your-local-dev-environment)). -2. **Query AI Gateway Endpoints** — pick a chat model (e.g. `databricks-gpt-5-4-mini`) and wire up `createOpenAI()` with the AI Gateway base URL. +2. **Query Foundation Model Endpoints** — pick a chat model (e.g. `databricks-gpt-5-4-mini`) and wire up `createOpenAI()` with your workspace's `/serving-endpoints` base URL. 3. **Streaming AI Chat with Model Serving** — add the `/api/chat` route with `streamText()` and a `useChat` UI backed by `TextStreamChatTransport`. 4. **Create a Lakebase Instance** — provision a managed Postgres project, branch, and endpoint; capture the connection values. 5. **Lakebase Data Persistence** — add the `lakebase()` plugin, schema setup, and CRUD plumbing against your new project. @@ -13,4 +13,4 @@ Work through the steps in the order below. Each one adds one concrete piece; by ### Before you start -Every step below lists its own workspace-feature checks. Combined, the app needs a Databricks CLI profile that can reach Model Serving (AI Gateway foundation-model endpoints), Lakebase Postgres, and Databricks Apps. Run each step's prerequisite checks upfront so you do not hit gated features mid-build. +Every step below lists its own workspace-feature checks. Combined, the app needs a Databricks CLI profile that can reach Model Serving (Databricks-hosted foundation-model endpoints), Lakebase Postgres, and Databricks Apps. Run each step's prerequisite checks upfront so you do not hit gated features mid-build. diff --git a/content/cookbooks/genie-analytics-app/goal.md b/content/cookbooks/genie-analytics-app/goal.md index 8755fcb5..bb24eba6 100644 --- a/content/cookbooks/genie-analytics-app/goal.md +++ b/content/cookbooks/genie-analytics-app/goal.md @@ -2,4 +2,4 @@ A minimal Databricks App with AI/BI Genie conversational analytics. Users ask na ### Components -1. **Genie Conversational Analytics** — configure a Genie space, wire up the server and client plugins, declare app resources, and deploy. +1. **Genie Conversational Analytics** — configure a Genie Agent, wire up the server and client plugins, declare app resources, and deploy. diff --git a/content/cookbooks/genie-analytics-app/replit-prompt.md b/content/cookbooks/genie-analytics-app/replit-prompt.md index afda4611..5c0413e3 100644 --- a/content/cookbooks/genie-analytics-app/replit-prompt.md +++ b/content/cookbooks/genie-analytics-app/replit-prompt.md @@ -11,16 +11,16 @@ Ask for: - Unity Catalog catalog name - Unity Catalog schema name - the primary table(s) to analyze -- the Genie space (or table set) to use for natural-language questions +- the Genie Agent (or table set) to use for natural-language questions - SQL Warehouse, if not already configured by the connector -If the user does not already have a Genie space, ask whether they want to continue with SQL-only dashboard and previews, configure a Genie space in Databricks first, or use the PAT fallback for direct Genie API access if available. +If the user does not already have a Genie Agent, ask whether they want to continue with SQL-only dashboard and previews, configure a Genie Agent in Databricks first, or use the PAT fallback for direct Genie API access if available. ## Additional Secrets If the user is on the PAT fallback path and wants direct Genie API access, also ask for: -- `DATABRICKS_GENIE_SPACE_ID` — the Genie space ID to use for conversational analytics. The user can list their Genie spaces with the Databricks CLI — for example, `databricks api get /api/2.0/genie/spaces` — and copy the ID of the space they want to use. +- `DATABRICKS_GENIE_SPACE_ID` — the Genie Agent ID to use for conversational analytics. The user can list their Genie Agents with the Databricks CLI — for example, `databricks api get /api/2.0/genie/spaces` — and copy the ID of the space they want to use. ## Features @@ -39,7 +39,7 @@ Build a polished full-stack web app with: 1. Resolve Databricks access per the general routing above. 2. Verify warehouse access with `SELECT current_user()`. -3. Ask for catalog, schema, tables, and Genie space. +3. Ask for catalog, schema, tables, and Genie Agent. 4. Build the app shell with the four tabs and shared navigation. 5. Build the Tables tab (preview cards) backed by SQL warehouse queries. 6. Build the Dashboard tab (KPI cards + trend charts) backed by SQL warehouse queries. diff --git a/content/dev-guidelines.md b/content/dev-guidelines.md index 9c776682..13605626 100644 --- a/content/dev-guidelines.md +++ b/content/dev-guidelines.md @@ -5,7 +5,7 @@ Follow these rules every time you act on a DevHub prompt. ## Read first, then act - Read the entire prompt before executing any steps. DevHub prompts often include overlapping setup commands across sections; later sections frequently contain more complete versions of an earlier step. -- Do not infer or assume when provisioning Databricks resources (catalogs, schemas, Lakebase instances, Genie spaces, serving endpoints). Ask the user whether to create new resources or reuse existing ones. +- Do not infer or assume when provisioning Databricks resources (catalogs, schemas, Lakebase instances, Genie Agents, serving endpoints). Ask the user whether to create new resources or reuse existing ones. - If you run into trouble, fetch additional templates and docs from https://developers.databricks.com (the index lives at https://developers.databricks.com/llms.txt). For example, if Genie setup fails, fetch the Genie docs and templates instead of guessing. ## Implementation guidance diff --git a/content/examples/agentic-support-console/goal.md b/content/examples/agentic-support-console/goal.md index 9ed2312d..641832c7 100644 --- a/content/examples/agentic-support-console/goal.md +++ b/content/examples/agentic-support-console/goal.md @@ -7,7 +7,7 @@ Customer interactions flow from your application's OLTP database (Lakebase Postg 1. **OLTP writes** land in Lakebase Postgres (users, orders, support cases, messages). 2. **Lakebase Change Data Feed (CDF)** replicates every change into Unity Catalog as CDC history tables (bronze layer). 3. A **Lakeflow Declarative Pipeline** transforms CDC history into current-state silver tables and analytical gold materialized views (daily revenue, support overview, user profiles, case context). -4. A **Lakeflow Job** runs every minute, finds unanswered messages, builds rich context from gold tables, calls an LLM via AI Gateway, and merges suggested responses into a Delta table. +4. A **Lakeflow Job** runs every minute, finds unanswered messages, builds rich context from gold tables, calls an LLM via a Model Serving endpoint, and merges suggested responses into a Delta table. 5. **Sync Tables** (reverse sync) replicate gold tables back into Lakebase for sub-10ms reads. 6. The **Support Console** (Databricks App) reads from both OLTP and synced gold tables to present cases, AI suggestions, and analytics. @@ -21,5 +21,5 @@ To make this template your own: - **Lakebase**: Point the app's `databricks.yml` at your own Lakebase project, branch, and database. - **Tables**: The seed script creates the OLTP schema. After seeding, configure Change Data Feed to replicate your `public` schema tables. - **Sync Tables**: Manually create the four reverse sync configurations (see the README for the exact table mappings). -- **AI Gateway**: Set the `endpoint` variable to your preferred model serving endpoint. -- **Genie Space**: Create a Genie space over your gold tables and set the `genie_space_id` in the app bundle. +- **Serving Endpoint**: Set the `endpoint` variable to your preferred model serving endpoint. +- **Genie Agent**: Create a Genie Agent over your gold tables and set the `genie_space_id` in the app bundle. diff --git a/content/examples/content-moderator/goal.md b/content/examples/content-moderator/goal.md index e7987678..ff63e1d6 100644 --- a/content/examples/content-moderator/goal.md +++ b/content/examples/content-moderator/goal.md @@ -2,14 +2,14 @@ This template demonstrates an internal content moderation tool built on Databric ### Data Flow -Content moves through a review pipeline backed by Lakebase and AI Gateway: +Content moves through a review pipeline backed by Lakebase and Model Serving: 1. **Authors submit content** to Lakebase Postgres, specifying a title, body, and content target (blog, LinkedIn, etc.). -2. **AI scoring** triggers automatically. The server fetches active guidelines for the content target, sends the content plus guidelines to a Model Serving endpoint via AI Gateway, and stores the compliance score (0-100), flagged issues, and improvement suggestions. +2. **AI scoring** triggers automatically. The server fetches active guidelines for the content target, sends the content plus guidelines to a Model Serving endpoint, and stores the compliance score (0-100), flagged issues, and improvement suggestions. 3. **Moderators review** from a queue that shows AI scores alongside each submission. They approve, reject, or request revisions with feedback. 4. **Guidelines management** lets moderators create and update rules per content target. When guidelines change, moderators can re-analyze existing submissions. 5. **SQL Warehouse queries** power the analytics dashboard (submission counts, approval rates, average compliance scores by target). -6. A **Genie Space** over the content moderation tables enables natural language questions about content performance. +6. A **Genie Agent** over the content moderation tables enables natural language questions about content performance. ### What to Adapt @@ -20,7 +20,7 @@ To make this template your own: - **Lakebase**: Point the app's `databricks.yml` at your own Lakebase project, branch, and database. - **SQL Warehouse**: Set the warehouse ID for the analytics queries. - **Serving Endpoint**: Set the model serving endpoint name for AI content analysis (e.g. `databricks-claude-sonnet-4`). AI scoring is optional; the app works without it. -- **Genie Space**: Create a Genie space over the `content_moderation` tables and set the space ID. +- **Genie Agent**: Create a Genie Agent over the `content_moderation` tables and set the space ID. - **Content Targets**: Adjust the target list in the server routes and client utils to match your organization's content channels. - **Guidelines**: Replace the seed guidelines with your organization's actual content policies. - **Seed Data**: The seed script creates 7 guidelines, 10 sample submissions, and 5 reviews. Replace with your own data or use the app's Submit form. diff --git a/content/examples/inventory-intelligence/goal.md b/content/examples/inventory-intelligence/goal.md index 534d2ef0..1a0d3032 100644 --- a/content/examples/inventory-intelligence/goal.md +++ b/content/examples/inventory-intelligence/goal.md @@ -26,4 +26,4 @@ To make this template your own: - **Tables**: The seed script creates the OLTP schema with 5 stores, 25 products, and 90 days of sales history. After seeding, configure Change Data Feed to replicate the `inventory` schema tables. - **Sync Tables**: Manually create the three reverse sync configurations (see the README for the exact table mappings). - **Forecast Model**: Set the `forecast_model` variable in the demand forecast pipeline to `weighted_moving_average` (default), `exponential_smoothing`, `prophet`, or `model_serving`. -- **Genie Space**: Create a Genie space over your gold tables and set the `genie_space_id` in the app bundle to activate the Analytics tab. +- **Genie Agent**: Create a Genie Agent over your gold tables and set the `genie_space_id` in the app bundle to activate the Analytics tab. diff --git a/content/examples/rag-chat/goal.md b/content/examples/rag-chat/goal.md index 6c425e84..d6b4c7d6 100644 --- a/content/examples/rag-chat/goal.md +++ b/content/examples/rag-chat/goal.md @@ -2,11 +2,11 @@ This template demonstrates a Retrieval-Augmented Generation chat app built on Da ### Data Flow -All retrieval and chat state live in Lakebase Postgres; generation uses AI Gateway: +All retrieval and chat state live in Lakebase Postgres; generation uses Model Serving: -1. **Seeding** pulls a handful of Wikipedia articles on startup, chunks them by paragraph, embeds each chunk through the AI Gateway embeddings endpoint (`databricks-gte-large-en` by default), and writes rows into `rag.documents` with a `vector(1024)` column. +1. **Seeding** pulls a handful of Wikipedia articles on startup, chunks them by paragraph, embeds each chunk through the foundation-model embeddings endpoint (`databricks-gte-large-en` by default), and writes rows into `rag.documents` with a `vector(1024)` column. 2. **User turns** are embedded with the same endpoint. The server runs a pgvector cosine-similarity search to retrieve the top-k matching chunks. -3. **Context injection**: the retrieved chunks are prepended as a system message before the user's conversation history is sent to the chat completion endpoint (`databricks-gpt-5-4-mini` by default) via AI Gateway. +3. **Context injection**: the retrieved chunks are prepended as a system message before the user's conversation history is sent to the chat completion endpoint (`databricks-gpt-5-4-mini` by default) via Model Serving. 4. **Streaming**: `streamText` streams tokens back to the client while an `onFinish` callback appends the assistant turn to Lakebase. 5. **Chat history**: every user and assistant turn is persisted in `chat.messages`, keyed by `chat_id`, so conversations can be resumed. diff --git a/content/examples/saas-tracker/goal.md b/content/examples/saas-tracker/goal.md index 0a49c414..f7d4cd81 100644 --- a/content/examples/saas-tracker/goal.md +++ b/content/examples/saas-tracker/goal.md @@ -1,4 +1,4 @@ -This template demonstrates a straightforward internal CRUD tool built on Databricks: a SaaS subscription tracker where teams log the tools they use, who owns each subscription, what it costs, and when it renews. A Genie space provides self-serve analytics over the subscription data. +This template demonstrates a straightforward internal CRUD tool built on Databricks: a SaaS subscription tracker where teams log the tools they use, who owns each subscription, what it costs, and when it renews. A Genie Agent provides self-serve analytics over the subscription data. ### Data Flow @@ -7,7 +7,7 @@ All subscription data lives in a single Lakebase Postgres table and is served di 1. **Lakebase Postgres** stores the `saas_tracker.subscriptions` table with name, vendor, cost, billing cycle, owner, status, and renewal dates. 2. The **SaaS Tracker App** (Databricks App) reads and writes subscriptions through Express API routes backed by Lakebase. 3. **SQL Warehouse queries** power the analytics dashboard (spend overview, spend by category). -4. A **Genie Space** configured over the subscriptions table lets users ask natural language questions about spend, owners, and renewals. +4. A **Genie Agent** configured over the subscriptions table lets users ask natural language questions about spend, owners, and renewals. ### What to Adapt @@ -17,6 +17,6 @@ To make this template your own: - **Lakebase**: Point the app's `databricks.yml` at your own Lakebase project, branch, and database. - **SQL Warehouse**: Set the warehouse ID for the analytics queries. -- **Genie Space**: Create a Genie space over the `saas_tracker.subscriptions` table and set the space ID. +- **Genie Agent**: Create a Genie Agent over the `saas_tracker.subscriptions` table and set the space ID. - **Categories**: Adjust the category list in the server routes and form component to match your organization's departments. - **Seed Data**: The seed script creates 18 realistic demo subscriptions. Replace with your own data or use the app's Add form. diff --git a/content/examples/vacation-rentals/goal.md b/content/examples/vacation-rentals/goal.md index 351cf067..1cf350c1 100644 --- a/content/examples/vacation-rentals/goal.md +++ b/content/examples/vacation-rentals/goal.md @@ -6,8 +6,8 @@ The app composes four Databricks primitives behind a single React UI: 1. **SQL Warehouse** runs analytics queries (revenue by destination, single booking detail) over the seeded `samples.wanderbricks.{bookings,properties,destinations,reviews}` tables. Queries live in `config/queries/*.sql` and are executed through the AppKit `analytics` plugin. 2. **Lakebase Postgres** stores operator-owned state in the `app.booking_flags` and `app.booking_notes` tables. The Express server creates the schema and tables on startup and exposes CRUD routes for flagging bookings and adding agent notes. -3. **Genie Space** ("Wanderbricks") is configured over the booking, property, and destination tables. The AppKit `genie` plugin embeds a chat panel so users can ask spend, occupancy, and rating questions in natural language. -4. **Databricks App** ties it together: an Express + AppKit server, a Vite/React/Tailwind client, deployed via a Databricks Asset Bundle that declares the SQL warehouse, Genie space, and Lakebase database as app resources. +3. **Genie Agent** ("Wanderbricks") is configured over the booking, property, and destination tables. The AppKit `genie` plugin embeds a chat panel so users can ask spend, occupancy, and rating questions in natural language. +4. **Databricks App** ties it together: an Express + AppKit server, a Vite/React/Tailwind client, deployed via a Databricks Asset Bundle that declares the SQL warehouse, Genie Agent, and Lakebase database as app resources. ### What to Adapt @@ -18,5 +18,5 @@ To make this template your own: - **Source data**: Point the analytics SQL files at your own catalog and schema instead of `samples.wanderbricks.*`. Adjust the joins to match your booking, property, and destination model. - **SQL Warehouse**: Set `sql_warehouse_id` in `databricks.yml` to the warehouse you want the app to query. - **Lakebase**: Replace `postgres_branch` and `postgres_database` with your own Lakebase project, branch, and database. The `app.booking_flags` and `app.booking_notes` tables are created automatically on first run. -- **Genie Space**: Create a Genie space over your booking tables and set `genie_space_id` and `genie_space_name` in `databricks.yml`. +- **Genie Agent**: Create a Genie Agent over your booking tables and set `genie_space_id` and `genie_space_name` in `databricks.yml`. - **Domain wording**: The UI is themed around vacation rentals (destinations, bookings, agent notes). For other operations consoles (logistics, support, partnerships), rename the routes and components and re-point the analytics queries — the Lakebase + Genie + analytics scaffolding stays the same. diff --git a/content/intent-cookbook.md b/content/intent-cookbook.md index eda0e714..e60b6259 100644 --- a/content/intent-cookbook.md +++ b/content/intent-cookbook.md @@ -25,7 +25,7 @@ Ask **one** question, ideally with a multiple-choice tool: Cookbooks compose multiple Databricks primitives — Lakebase, Agent Bricks, Model Serving, Genie, Lakeflow Pipelines depending on the cookbook. Before generating code, ask: -- For each primitive the cookbook needs: **create new** or **reuse existing**? Never assume — Lakebase instances, Model Serving endpoints, and Genie spaces all cost money and take minutes to provision. +- For each primitive the cookbook needs: **create new** or **reuse existing**? Never assume — Lakebase instances, Model Serving endpoints, and Genie Agents all cost money and take minutes to provision. - Which **Databricks profile** to target? (`databricks auth profiles`.) - **Data**: real data from the user's Unity Catalog, or seed data to start and swap later? - **Scope today**: ship the full archetype, or stop after a working slice (e.g. just the Lakebase + UI layer, no AI yet)? diff --git a/content/intent-example.md b/content/intent-example.md index 441e2f40..98638404 100644 --- a/content/intent-example.md +++ b/content/intent-example.md @@ -26,7 +26,7 @@ Ask **one** question, ideally with a multiple-choice tool: Once the intent is clear, ask follow-ups one at a time: - **Workspace**: which Databricks workspace and profile? Examples need a valid Databricks CLI profile to scaffold. (`databricks auth profiles`.) -- **Resources**: the example may need a Lakebase instance, a Model Serving endpoint, a Genie space, or a Unity Catalog catalog/schema. For each: create new or reuse existing? Never assume. +- **Resources**: the example may need a Lakebase instance, a Model Serving endpoint, a Genie Agent, or a Unity Catalog catalog/schema. For each: create new or reuse existing? Never assume. - **Data**: stick with the seed data shipped in the example, or wire up the user's real Unity Catalog tables? If real data, which catalog/schema? - **Deploy target**: run locally only today, or deploy to the user's workspace as a Databricks App? diff --git a/content/recipes/ai-chat-model-serving/goal.md b/content/recipes/ai-chat-model-serving/goal.md index 8f2e9da4..8aea8947 100644 --- a/content/recipes/ai-chat-model-serving/goal.md +++ b/content/recipes/ai-chat-model-serving/goal.md @@ -1,6 +1,6 @@ When done, you will have: - A real-time streaming chat interface in your Databricks App -- Integration with Databricks Model Serving via AI Gateway +- Integration with Databricks Model Serving foundation-model endpoints - Server-side chat transport and client-side chat UI wired together - A deployed app where users can converse with a Databricks-hosted LLM diff --git a/content/recipes/ai-chat-model-serving/prerequisites.md b/content/recipes/ai-chat-model-serving/prerequisites.md index e168cfb4..92c83507 100644 --- a/content/recipes/ai-chat-model-serving/prerequisites.md +++ b/content/recipes/ai-chat-model-serving/prerequisites.md @@ -1,7 +1,7 @@ Complete these prerequisite templates first: - [Set Up Your Local Dev Environment](/templates/set-up-your-local-dev-environment) — install the Databricks CLI and authenticate a profile. -- [Query AI Gateway Endpoints](/templates/ai-chat-app#query-ai-gateway-endpoints) — confirm your workspace exposes a chat endpoint via the AI Gateway. +- [Query Foundation Model Endpoints](/templates/foundation-models-api) — confirm your workspace exposes a Databricks-hosted foundation-model chat endpoint. Then verify these Databricks workspace features are enabled. If any check fails, ask your workspace admin to enable the feature. diff --git a/content/recipes/foundation-models-api/goal.md b/content/recipes/foundation-models-api/goal.md index 1b641875..e66974e3 100644 --- a/content/recipes/foundation-models-api/goal.md +++ b/content/recipes/foundation-models-api/goal.md @@ -1,5 +1,5 @@ When done, you will have: -- A configured AI Gateway endpoint for chat inference in your app +- A configured foundation-model serving endpoint for chat inference in your app - A query helper using the Databricks SDK for standard request/response interactions - An optional streaming setup using the Vercel AI SDK for real-time chat responses diff --git a/content/recipes/foundation-models-api/prerequisites.md b/content/recipes/foundation-models-api/prerequisites.md index a82070de..9b82ed3f 100644 --- a/content/recipes/foundation-models-api/prerequisites.md +++ b/content/recipes/foundation-models-api/prerequisites.md @@ -1,3 +1,3 @@ Verify these Databricks workspace features are enabled before starting. If any check fails, ask your workspace admin to enable the feature. -- **AI Gateway (currently in Beta).** AI Gateway is built into all Foundation Model API endpoints, but it is still a **Beta** feature — behavior and APIs can change. Confirm availability by listing endpoints and checking the config: `databricks serving-endpoints list --profile ` should return at least one `databricks-*` foundation-model endpoint, and `databricks serving-endpoints get --profile -o json | grep -q '"ai_gateway"' && echo ok` should print `ok`. Endpoint availability varies by workspace and region. +- **Foundation Model API endpoints with AI Gateway governance.** Databricks-hosted foundation-model endpoints come preconfigured with AI Gateway features (usage tracking, rate limits, guardrails). Confirm availability by listing endpoints and checking the config: `databricks serving-endpoints list --profile ` should return at least one `databricks-*` foundation-model endpoint, and `databricks serving-endpoints get --profile -o json | grep -q '"ai_gateway"' && echo ok` should print `ok`. Endpoint availability varies by workspace and region. diff --git a/content/recipes/genie-conversational-analytics/goal.md b/content/recipes/genie-conversational-analytics/goal.md index 63bdff0c..d48d1848 100644 --- a/content/recipes/genie-conversational-analytics/goal.md +++ b/content/recipes/genie-conversational-analytics/goal.md @@ -1,6 +1,6 @@ When done, you will have: -- A configured AI/BI Genie space connected to your data tables +- A configured AI/BI Genie Agent connected to your data tables - A Databricks App with an embedded Genie chat interface - Server and client plugins wired together with proper app resource declarations - A deployed app where users can ask questions about their data in plain language diff --git a/content/recipes/genie-conversational-analytics/prerequisites.md b/content/recipes/genie-conversational-analytics/prerequisites.md index 5aec144e..1ea6d9e5 100644 --- a/content/recipes/genie-conversational-analytics/prerequisites.md +++ b/content/recipes/genie-conversational-analytics/prerequisites.md @@ -1,5 +1,5 @@ Verify these Databricks workspace features are enabled before starting. If any check fails, ask your workspace admin to enable the feature. - **AI/BI Genie enabled.** Run `databricks genie list-spaces --profile ` and confirm the command succeeds. A `not found` or permission error means Genie is not available to this identity. -- **At least one Genie space configured.** The command above must return at least one space; you will use its `space_id` below. If none exist, open your Databricks workspace, navigate to **AI/BI Genie**, and create a space connected to the data tables you want to query. +- **At least one Genie Agent configured.** The command above must return at least one space; you will use its `space_id` below. If none exist, open your Databricks workspace, navigate to **AI/BI Genie**, and create a space connected to the data tables you want to query. - **Databricks Apps enabled.** Run `databricks apps list --profile ` and confirm the command succeeds (an empty list is fine). The template deploys an AppKit app that hosts the Genie chat UI. diff --git a/content/recipes/genie-conversational-analytics/replit-prompt.md b/content/recipes/genie-conversational-analytics/replit-prompt.md index 90679bcd..873e1126 100644 --- a/content/recipes/genie-conversational-analytics/replit-prompt.md +++ b/content/recipes/genie-conversational-analytics/replit-prompt.md @@ -9,16 +9,16 @@ Use the Databricks connector for SQL verification of the existing tables, and us Ask for: - which Unity Catalog catalog/schema/tables the app already reads from -- the Genie space to use for natural-language questions +- the Genie Agent to use for natural-language questions - SQL Warehouse, if not already configured by the connector -If the user does not already have a Genie space, ask whether to continue without conversational analytics, configure a Genie space in Databricks first, or use the PAT fallback for direct Genie API access if available. +If the user does not already have a Genie Agent, ask whether to continue without conversational analytics, configure a Genie Agent in Databricks first, or use the PAT fallback for direct Genie API access if available. ## Additional Secrets If the user is on the PAT fallback path and wants direct Genie API access, also ask for: -- `DATABRICKS_GENIE_SPACE_ID` — the Genie space ID to use for conversational analytics. The user can list their Genie spaces with the Databricks CLI — for example, `databricks api get /api/2.0/genie/spaces` — and copy the ID of the space they want to use. +- `DATABRICKS_GENIE_SPACE_ID` — the Genie Agent ID to use for conversational analytics. The user can list their Genie Agents with the Databricks CLI — for example, `databricks api get /api/2.0/genie/spaces` — and copy the ID of the space they want to use. ## Features @@ -36,7 +36,7 @@ The panel should integrate into the existing app's layout (sidebar, modal, drawe 1. Resolve Databricks access per the general routing above. 2. Verify warehouse access with `SELECT current_user()`. -3. Ask for the existing tables and the Genie space. +3. Ask for the existing tables and the Genie Agent. 4. Add the Genie chat panel component and wire it into the existing app's layout. 5. Add suggested-question chips generated from the configured tables. 6. Add SQL preview/citations beneath query-backed answers. diff --git a/content/recipes/genie-multi-space/goal.md b/content/recipes/genie-multi-space/goal.md index 883a0608..d37e8ad0 100644 --- a/content/recipes/genie-multi-space/goal.md +++ b/content/recipes/genie-multi-space/goal.md @@ -1,6 +1,6 @@ When done, you will have: -- Multiple Genie spaces accessible from a single app -- A dropdown selector for switching between named Genie spaces -- Automatic conversation state cleanup when switching spaces -- Server and client configuration supporting multiple space aliases +- Multiple Genie Agents accessible from a single app +- A dropdown selector for switching between named Genie Agents +- Automatic conversation state cleanup when switching agents +- Server and client configuration supporting multiple Genie Agent aliases diff --git a/content/recipes/genie-multi-space/prerequisites.md b/content/recipes/genie-multi-space/prerequisites.md index 934b1205..ad3b8501 100644 --- a/content/recipes/genie-multi-space/prerequisites.md +++ b/content/recipes/genie-multi-space/prerequisites.md @@ -1,6 +1,6 @@ -This template upgrades an existing single-space Genie app to switch between multiple spaces. Verify these Databricks workspace features are enabled before starting. If any check fails, ask your workspace admin to enable the feature. +This template upgrades an existing single-agent Genie app to switch between multiple Genie Agents. Verify these Databricks workspace features are enabled before starting. If any check fails, ask your workspace admin to enable the feature. - **AI/BI Genie enabled.** Run `databricks genie list-spaces --profile ` and confirm the command succeeds. -- **Two or more Genie spaces configured.** The list above must return at least two spaces — one per entry you want in the selector. If you have fewer, create additional spaces in **AI/BI Genie** in the Databricks UI. +- **Two or more Genie Agents configured.** The list above must return at least two Genie Agents — one per entry you want in the selector. If you have fewer, create additional Genie Agents in **AI/BI Genie** in the Databricks UI. - **Databricks Apps enabled.** Run `databricks apps list --profile ` and confirm the command succeeds. -- **A scaffolded AppKit app with the Genie feature.** Complete the [Genie Conversational Analytics](/templates/genie-conversational-analytics) template first. This template only covers the upgrade from one space to many — not the initial Genie wiring. +- **A scaffolded AppKit app with the Genie feature.** Complete the [Genie Conversational Analytics](/templates/genie-conversational-analytics) template first. This template only covers the upgrade from one Genie Agent to many — not the initial Genie wiring. diff --git a/content/recipes/genie-multi-space/replit-prompt.md b/content/recipes/genie-multi-space/replit-prompt.md index 15629dfa..102d5e40 100644 --- a/content/recipes/genie-multi-space/replit-prompt.md +++ b/content/recipes/genie-multi-space/replit-prompt.md @@ -1,35 +1,35 @@ -# Build a Multi-Space Genie Analytics App +# Build a Multi-Agent Genie Analytics App -Help the user build a Databricks-backed multi-space Genie analytics app: an internal tool that lets users switch between multiple Databricks Genie spaces from one polished interface. +Help the user build a Databricks-backed multi-agent Genie analytics app: an internal tool that lets users switch between multiple Databricks Genie Agents from one polished interface. ## Data -Use the Databricks connector for SQL verification and space context. Use Replit's Databricks Genie integration for each selected Genie space. +Use the Databricks connector for SQL verification and Genie Agent context. Use Replit's Databricks Genie integration for each selected Genie Agent. Ask for: -- the list of Genie spaces to include -- a short display name and description for each space -- Unity Catalog catalog/schema/table context for each space, if useful for previews +- the list of Genie Agents to include +- a short display name and description for each Genie Agent +- Unity Catalog catalog/schema/table context for each Genie Agent, if useful for previews - SQL Warehouse, if not already configured by the connector -If the user has only one Genie space, mention that the multi-space UI is overkill for a single space and suggest building a single-Genie-space app instead, but continue if they still want the multi-space UI. +If the user has only one Genie Agent, mention that the multi-agent UI is overkill for a single Genie Agent and suggest building a single-agent Genie app instead, but continue if they still want the multi-agent UI. ## Additional Secrets If the user is on the PAT fallback path, also ask for: -- `DATABRICKS_GENIE_SPACE_IDS` — a comma-separated list of Genie space IDs to include. The user can list their Genie spaces with the Databricks CLI — for example, `databricks api get /api/2.0/genie/spaces` — and copy the IDs of the spaces they want to include. +- `DATABRICKS_GENIE_SPACE_IDS` — a comma-separated list of Genie Agent IDs to include. The user can list their Genie Agents with the Databricks CLI — for example, `databricks api get /api/2.0/genie/spaces` — and copy the IDs of the Genie Agents they want to include. ## Features Build a polished full-stack web app with: -- Space selector with names, descriptions, and badges for each analytics domain -- Genie chat panel that resets or scopes conversation state when the selected space changes -- Suggested question chips per space -- Optional table preview cards for the selected space's core tables -- Conversation history display for the current selected space +- Agent selector with names, descriptions, and badges for each analytics domain +- Genie chat panel that resets or scopes conversation state when the selected agent changes +- Suggested question chips per agent +- Optional table preview cards for the selected agent's core tables +- Conversation history display for the current selected agent - Clear loading, empty, reconnect, and permission states - Responsive layout that works well on desktop and mobile @@ -37,13 +37,13 @@ Build a polished full-stack web app with: 1. Resolve Databricks access per the general routing above. 2. Verify warehouse access with `SELECT current_user()` when SQL previews are needed. -3. Ask for Genie spaces, display names, and optional table context. -4. Build the multi-space selector and page shell. -5. Wire each space to the Genie chat panel. -6. Add suggested questions, per-space context, and error states. +3. Ask for Genie Agents, display names, and optional table context. +4. Build the multi-agent selector and page shell. +5. Wire each agent to the Genie chat panel. +6. Add suggested questions, per-agent context, and error states. 7. Run the app in Replit Preview. 8. Help the user deploy with Replit Deployments. ## Notes -For multi-space failures: also offer to remove the failing space or continue with the remaining spaces (in addition to the standard "use a different space" option from the preamble's permission handling). +For multi-agent failures: also offer to remove the failing agent or continue with the remaining agents (in addition to the standard "use a different Genie Agent" option from the preamble's permission handling). diff --git a/content/recipes/onboard-your-coding-agent/prerequisites.md b/content/recipes/onboard-your-coding-agent/prerequisites.md index d25f6b9d..4fd4e038 100644 --- a/content/recipes/onboard-your-coding-agent/prerequisites.md +++ b/content/recipes/onboard-your-coding-agent/prerequisites.md @@ -3,4 +3,4 @@ This template makes a Databricks repo agent-ready: it installs Databricks platfo - **A repo to onboard the agent into.** Run this from the root of the project the agent will work on. If the user does not have a project yet, run [Spin Up a Databricks App](/templates/spin-up-databricks-app) first and come back here from inside the scaffolded directory. - **A coding agent installed locally.** The Databricks aitools installer detects Cursor, Claude Code, Codex CLI, OpenCode, GitHub Copilot, and Antigravity. The DevHub MCP server install via `npx add-mcp` works with the same set plus VS Code. - **`npx` available.** The DevHub MCP install runs through `npx add-mcp` — comes with Node.js `18+`. -- **Knowledge of which Databricks resources this repo will use.** Before writing `AGENTS.md` you'll ask the user which CLI profile, workspace URL, Unity Catalog catalog/schema, Lakebase project/branch, Genie space, and Model Serving endpoint to treat as defaults for this repo. It is fine to leave fields blank with a `TODO:` marker if the user does not know yet. +- **Knowledge of which Databricks resources this repo will use.** Before writing `AGENTS.md` you'll ask the user which CLI profile, workspace URL, Unity Catalog catalog/schema, Lakebase project/branch, Genie Agent, and Model Serving endpoint to treat as defaults for this repo. It is fine to leave fields blank with a `TODO:` marker if the user does not know yet. diff --git a/content/replit-shared/preamble.md b/content/replit-shared/preamble.md index 2cb4fb39..6680a4f7 100644 --- a/content/replit-shared/preamble.md +++ b/content/replit-shared/preamble.md @@ -33,7 +33,7 @@ If the user wants the native connector instead, tell them it requires Replit Ent If a Databricks call fails because the connector or PAT lacks permission: - Explain the failed operation -- Ask whether to use a different table/space/volume, switch to read-only mode, or request Databricks permissions +- Ask whether to use a different table/Genie Agent/volume, switch to read-only mode, or request Databricks permissions - Do not silently switch to local-only mock data or storage The source of truth for the data, files, and analytics this app shows should remain Databricks. diff --git a/content/solutions/devhub-launch/goal.md b/content/solutions/devhub-launch/goal.md index 48beba77..1cba83e7 100644 --- a/content/solutions/devhub-launch/goal.md +++ b/content/solutions/devhub-launch/goal.md @@ -50,7 +50,7 @@ Templates tell you _how_ to build something. The docs explain _what_ the underly - **[Platform overview](/docs/platform-overview)** — how Databricks Apps, Lakebase, Agent Bricks, and Unity Catalog fit together for an internal app. - **[Databricks Apps](/docs/apps/overview)** — the managed runtime your app deploys to, with workspace SSO, secrets, and the [AppKit](/docs/appkit/v0) TypeScript SDK that wires it all together. - **[Lakebase](/docs/lakebase/overview)** — managed Postgres co-located with your workspace data: when to use it, how to provision an instance, and how to connect from on- and off-platform apps. -- **[Agent Bricks](/docs/agents/overview)** — the agent platform: foundation-model calls through the [AI Gateway](/docs/agents/ai-gateway), conversational analytics with [Genie](/docs/agents/genie), and [custom agents](/docs/agents/custom-agents). +- **[Agent Bricks](/docs/agents/overview)** — the agent platform: foundation-model calls through [Unity AI Gateway](/docs/agents/ai-gateway), conversational analytics with [Genie](/docs/agents/genie), and [custom agents](/docs/agents/custom-agents). - **[Tools](/docs/tools/databricks-cli)** — the [Databricks CLI](/docs/tools/databricks-cli), [agent skills](/docs/tools/ai-tools/agent-skills) for your coding agent, and the [Docs MCP server](/docs/tools/ai-tools/docs-mcp-server) that exposes every page on this site to MCP-aware IDEs. Start at [/docs/start-here](/docs/start-here) if you want the guided tour. diff --git a/docs/agents/ai-gateway.md b/docs/agents/ai-gateway.md index 2df9f4e9..c0440220 100644 --- a/docs/agents/ai-gateway.md +++ b/docs/agents/ai-gateway.md @@ -1,12 +1,12 @@ --- -title: AI Gateway -sidebar_label: AI Gateway -description: Call governed LLM endpoints from your AppKit app using the Model Serving plugin. AI Gateway adds rate limits, usage tracking, guardrails, and cost attribution. +title: Unity AI Gateway +sidebar_label: Unity AI Gateway +description: Call governed LLM endpoints from your AppKit app using the Model Serving plugin. Unity AI Gateway adds rate limits, usage tracking, guardrails, and cost attribution. --- -# AI Gateway +# Unity AI Gateway -**AI Gateway** is a Databricks governance layer for LLM endpoints and MCP servers. It tracks usage, enforces rate limits, logs payloads, filters unsafe content and PII, and attributes cost. See the [AI Gateway overview](https://docs.databricks.com/aws/en/ai-gateway/) for a full product introduction. From your AppKit app, you call a governed endpoint with the Model Serving plugin. This page covers the AppKit wiring, the governance features, and the CLI for inspecting and provisioning endpoints. +**Unity AI Gateway** is a Databricks governance layer for LLM endpoints and MCP servers. It tracks usage, enforces rate limits, logs payloads, filters unsafe content and PII, and attributes cost. See the [Unity AI Gateway overview](https://docs.databricks.com/aws/en/ai-gateway/) for a full product introduction. From your AppKit app, you call a governed endpoint with the Model Serving plugin. This page covers the AppKit wiring, the governance features, and the CLI for inspecting and provisioning endpoints. ## Prerequisites @@ -16,7 +16,7 @@ description: Call governed LLM endpoints from your AppKit app using the Model Se ## Call a governed endpoint from AppKit -The [Model Serving plugin](/docs/appkit/v0/plugins/serving) handles the HTTP plumbing, auth, and streaming. Endpoint names come from environment variables at runtime, so the same code runs locally and in production. +The [Model Serving plugin](/docs/appkit/v0/plugins/model-serving) handles the HTTP plumbing, auth, and streaming. Endpoint names come from environment variables at runtime, so the same code runs locally and in production. ### Register the plugin @@ -107,13 +107,17 @@ The examples above use **named mode** with an explicit alias. Omit the config to :::note[Two surfaces, one plugin] -You might see AI Gateway in two places in your workspace: +You might see governance in two places in your workspace: -- **Classic**: features toggled on an existing Model Serving endpoint. Usage logs to `system.serving.endpoint_usage`. The Model Serving plugin calls these endpoints directly. -- **Beta standalone**: a separate product with its own endpoints under the **LLMs** tab of the AI Gateway UI. Usage logs to `system.ai_gateway.usage`. The Model Serving plugin doesn't call these directly. For Databricks-hosted Beta endpoints, click **View legacy endpoint** in the workspace UI to get the underlying Model Serving endpoint name, then point the plugin at that. +- **Unity AI Gateway** (recommended): the current standalone product. Its **model services** are Unity Catalog objects managed under the **AI Gateway** sidebar entry, and you query them by fully qualified name through the Unity AI Gateway APIs (`https:///ai-gateway/openai/v1` and the other provider paths), not through the Model Serving plugin. Usage logs to `system.ai_gateway.usage`. +- **Previous version of AI Gateway**: features toggled on an existing Model Serving endpoint. Usage logs to `system.serving.endpoint_usage`. The Model Serving plugin calls these endpoints directly by name. -- [AI Gateway landing](https://docs.databricks.com/aws/en/ai-gateway/) -- [AI Gateway for LLM endpoints](https://docs.databricks.com/aws/en/ai-gateway/overview-beta) +The Model Serving plugin in this guide calls serving endpoints by name, including the Databricks-hosted foundation models (`databricks-` prefix). It does not call Unity AI Gateway model services; to use one, query its OpenAI-compatible API. See [Query model services](https://docs.databricks.com/aws/en/ai-gateway/query-model-services). + +For more detail, see: + +- [Unity AI Gateway](https://docs.databricks.com/aws/en/ai-gateway/) +- [Previous version: AI Gateway on model serving endpoints](https://docs.databricks.com/aws/en/ai-gateway/overview-serving-endpoints) - [Configure AI Gateway on model serving endpoints](https://docs.databricks.com/aws/en/ai-gateway/configure-ai-gateway-endpoints) ::: @@ -131,9 +135,9 @@ AI Gateway features vary by endpoint type. Configure them in the workspace UI or | **Fallbacks** | Route to backup endpoints on failure | | **Traffic splitting** | Split traffic across multiple served entities | -See [Configure AI Gateway on serving endpoints](https://docs.databricks.com/aws/en/ai-gateway/configure-ai-gateway-endpoints) for the full configuration guide. For the newer standalone experience, see [AI Gateway for LLM endpoints](https://docs.databricks.com/aws/en/ai-gateway/overview-beta). +See [Configure AI Gateway on serving endpoints](https://docs.databricks.com/aws/en/ai-gateway/configure-ai-gateway-endpoints) for the full configuration guide, or [Unity AI Gateway](https://docs.databricks.com/aws/en/ai-gateway/) for governing model services. -AI Gateway also governs MCP server access. AppKit apps don't configure this directly. It applies when an agent endpoint you call (for example ABMAS or a custom Python agent) routes to an MCP server internally. See [custom agent endpoints](/docs/agents/custom-agents). +Unity AI Gateway also governs MCP server access. AppKit apps don't configure this directly. It applies when an agent endpoint you call (for example a Supervisor Agent or a custom Python agent) routes to an MCP server internally. See [custom agent endpoints](/docs/agents/custom-agents). ## List available endpoints @@ -322,12 +326,12 @@ Wait for the endpoint to reach `READY` state before querying it. For a step-by-s ## Coding agent integrations -AI Gateway can also govern AI coding tools. Route requests from Cursor, Codex CLI, and Gemini CLI through a Databricks AI Gateway endpoint to get one invoice, one usage dashboard, and one place to manage permissions and rate limits across your organization. +Unity AI Gateway can also govern AI coding tools. Route requests from Cursor, Codex CLI, and Gemini CLI through Unity AI Gateway model services to get one invoice, one usage dashboard, and one place to manage permissions and rate limits across your organization. -To set up an integration, open **AI Gateway** in your workspace sidebar, go to the **LLMs** tab, and open the **Coding agents** section. Follow the tool-specific instructions (base URL, API key, model provider). +Databricks recommends [`ucode`](https://github.com/databricks/ucode), a CLI that installs, authenticates, and configures supported coding agents against Unity AI Gateway in one command. You can also configure an agent by hand with its base URL and a Databricks token. -See [Integrate with coding agents](https://docs.databricks.com/aws/en/ai-gateway/coding-agent-integration-beta) for the full walkthrough and the current list of supported tools. +See [Integrate with coding agents](https://docs.databricks.com/aws/en/ai-gateway/coding-agent-integration-model-services) for the `ucode` setup steps, the manual configuration option, and the current list of supported tools. ## Where to next -Try the [AI Chat App](/templates/ai-chat-app) to wire a governed endpoint into your app, or explore the other agent capabilities: [Genie spaces](/docs/agents/genie) or [Custom agent endpoints](/docs/agents/custom-agents). +Try the [AI Chat App](/templates/ai-chat-app) to wire a governed endpoint into your app, or explore the other agent capabilities: [Genie Agents](/docs/agents/genie) or [Custom agent endpoints](/docs/agents/custom-agents). diff --git a/docs/agents/custom-agents.md b/docs/agents/custom-agents.md index 8ecb5a75..e385d073 100644 --- a/docs/agents/custom-agents.md +++ b/docs/agents/custom-agents.md @@ -1,12 +1,12 @@ --- title: Custom agent endpoints sidebar_label: Custom agents -description: Call a Knowledge Assistant, Supervisor Agent, or custom Python agent from your AppKit app. Same Model Serving plugin wiring for all three. +description: Call a Knowledge Assistant, Supervisor Agent, or custom Python agent from your AppKit app. Wire any of them into the Model Serving plugin. --- # Custom agent endpoints -When your AppKit app needs more than a foundation model response or a Genie-style data query, you call a **custom agent**: an LLM shaped by instructions, tools, document grounding, or multi-agent orchestration. On Databricks, custom agents deploy as Model Serving endpoints, so the Model Serving plugin calls them like any foundation model. +When your AppKit app needs more than a foundation model response or a Genie-style data query, you call a **custom agent**: an LLM shaped by instructions, tools, document grounding, or multi-agent orchestration. This page covers custom agents that your app reaches at a Model Serving endpoint, which the Model Serving plugin calls like any foundation model. If instead you want the agent to run inside your App, see the [agents plugin](/docs/appkit/v0/plugins/agents) (beta). ## Prerequisites @@ -18,29 +18,37 @@ When your AppKit app needs more than a foundation model response or a Genie-styl Three Databricks products produce agent endpoints. The table summarizes when to use each; subsections below link to the setup docs. -| Builder | Use when | Setup | -| --------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- | -| [Knowledge Assistant](#knowledge-assistant) | You need Q&A over documents (PDFs, Markdown, Office files) with citations | Click-through UI in the workspace | -| [Agent Bricks Multi-Agent Supervisor](#agent-bricks-multi-agent-supervisor) | You need to coordinate existing Genie spaces, other agents, Unity Catalog functions, or MCP servers | Click-through UI in the workspace | -| [Custom Python agent](#custom-python-agent) | No builder fits; you need arbitrary orchestration, custom tools, or a proprietary framework | Write Python with `ResponsesAgent`, deploy via `agents.deploy()` | +| Builder | Use when | Setup | +| ------------------------------------------- | --------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| [Knowledge Assistant](#knowledge-assistant) | You need Q&A over documents (PDFs, Markdown, Office files) with citations | Click-through UI in the workspace | +| [Supervisor Agent](#supervisor-agent) | You need to coordinate existing Genie Agents, other agents, Unity Catalog functions, or MCP servers | Click-through UI, or the [Supervisor API](https://docs.databricks.com/aws/en/agents/agent-bricks/supervisor-api) | +| [Custom Python agent](#custom-python-agent) | No builder fits; you need arbitrary orchestration, custom tools, or a proprietary framework | Write Python with `ResponsesAgent`, deploy to an endpoint via `agents.deploy()` (legacy path — prefer the [agents plugin](/docs/appkit/v0/plugins/agents) on Apps) | ### Knowledge Assistant Turns a folder of documents (plain text, PDFs, Markdown, Office files in a Unity Catalog volume) or a vector search index into a Q&A chatbot with source citations. Good for product docs, HR policies, support knowledge bases. Databricks builds and deploys the agent endpoint for you. -See [Knowledge Assistant](https://docs.databricks.com/aws/en/generative-ai/agent-bricks/knowledge-assistant). +See [Knowledge Assistant](https://docs.databricks.com/aws/en/agents/agent-bricks/knowledge-assistant). -### Agent Bricks Multi-Agent Supervisor +### Supervisor Agent -Coordinates subagents (Genie spaces, other agent endpoints, Unity Catalog functions, MCP servers) to complete a task, handling delegation and result synthesis. Good for workflows that span domains, for example searching research reports and querying usage data in the same conversation. Like Knowledge Assistant, the builder produces a single agent endpoint. +Coordinates subagents (Genie Agents, other agent endpoints, Unity Catalog functions, MCP servers) to complete a task, handling delegation and result synthesis. Good for workflows that span domains, for example searching research reports and querying usage data in the same conversation. Like Knowledge Assistant, the builder produces a single agent endpoint. -See [Agent Bricks Multi-Agent Supervisor](https://docs.databricks.com/aws/en/generative-ai/agent-bricks/multi-agent-supervisor) and the [Supervisor API](https://docs.databricks.com/aws/en/generative-ai/agent-bricks/supervisor-api) for response shapes and query parameters. +See [Supervisor Agent](https://docs.databricks.com/aws/en/agents/agent-bricks/multi-agent-supervisor) and the [Supervisor API](https://docs.databricks.com/aws/en/agents/agent-bricks/supervisor-api) for response shapes and query parameters. ### Custom Python agent -Author an agent in Python when neither builder covers your use case. The Databricks path is the `ResponsesAgent` interface plus a framework of your choice (OpenAI Agents SDK, LangGraph, LlamaIndex), with MLflow handling tracing. Agents deploy as Model Serving endpoints (via `agents.deploy()`) or as full Databricks Apps. The App-based path produces a standalone app, not an endpoint you'd call from another AppKit app. +Author an agent in Python when neither builder covers your use case. The Databricks path is the `ResponsesAgent` interface plus a framework of your choice (OpenAI Agents SDK, LangGraph, LlamaIndex), with MLflow handling tracing. Databricks recommends deploying the agent on Databricks Apps; deploying to a Model Serving endpoint (via `agents.deploy()`) is a legacy path. -See [Create an AI agent](https://docs.databricks.com/aws/en/generative-ai/agent-framework/create-agent) on docs.databricks.com. Authoring is out of scope for this page. +:::note[Prefer building the agent on Apps] + +For an AppKit app, the recommended way to build a custom agent is the [agents plugin](/docs/appkit/v0/plugins/agents) (beta). The agent runs inside your App, so there's no separate serving endpoint to deploy or wire up. + +This page covers a narrower case: calling a custom agent as an endpoint from a separate AppKit app. That requires a Model Serving endpoint, either a builder (Knowledge Assistant, Supervisor Agent) or a deployed Python agent. Reach for it only when the agent must be a shared endpoint that several apps call, not the app itself. + +::: + +Authoring is out of scope for this page. For the Python (non-AppKit) track, where a `ResponsesAgent` agent is deployed to Apps, see [Author an AI agent](https://docs.databricks.com/aws/en/agents/agent-framework/author-agent) and [Migrate from Model Serving to Apps](https://docs.databricks.com/aws/en/agents/agent-framework/migrate-agent-to-apps) on docs.databricks.com. ## Wire it up @@ -76,16 +84,18 @@ If streaming, responses arrive as `useServingStream` chunks; if non-streaming, ` Broad patterns to expect: -- **Knowledge Assistant**: text answers with source citations. The endpoint returns document references alongside the answer, ready to render as citations for verifiability. See [Knowledge Assistant](https://docs.databricks.com/aws/en/generative-ai/agent-bricks/knowledge-assistant#query-the-agent-endpoint). -- **Agent Bricks Multi-Agent Supervisor**: a synthesized answer drawn from whatever subagents the supervisor routed to (Genie spaces, Knowledge Assistants, Unity Catalog functions, MCP servers). The MLflow trace captures the full sequence of model calls and tool executions. +- **Knowledge Assistant**: text answers with source citations. The endpoint returns document references alongside the answer, ready to render as citations for verifiability. See [Knowledge Assistant](https://docs.databricks.com/aws/en/agents/agent-bricks/knowledge-assistant#query-the-agent-endpoint). +- **Supervisor Agent**: a synthesized answer drawn from whatever subagents the supervisor routed to (Genie Agents, Knowledge Assistants, Unity Catalog functions, MCP servers). The MLflow trace captures the full sequence of model calls and tool executions. - **Custom Python agent**: whatever the author designed. Agents built on the `ResponsesAgent` interface use the OpenAI Responses API (`input` instead of `messages`). ## Per-user permissions -Serving routes in AppKit run on behalf of the authenticated user by default. If the agent hits user-scoped data (for example a Supervisor Agent that routes to a Genie space the user can query), the user only sees the data they're allowed to see. No extra auth code. +Serving routes in AppKit run on behalf of the authenticated user by default. If the agent hits user-scoped data (for example a Supervisor Agent that routes to a Genie Agent the user can query), the user only sees the data they're allowed to see. No extra auth code. For server logic outside the built-in plugin routes (for example, custom Express routes), call `AppKit.serving("assistant").asUser(req).invoke(...)` to keep per-user behavior. For background work without a request (scheduled tasks, workers), omit `asUser` and the call runs as the app's service principal. ## Where to next Try the [AI Chat App](/templates/ai-chat-app) for a complete AppKit and agent setup, or browse the [templates catalog](/templates) for more patterns. + +To host the agent inside your App instead, see the [agents plugin](/docs/appkit/v0/plugins/agents) (beta). diff --git a/docs/agents/genie.md b/docs/agents/genie.md index 350091c0..fdc5b31e 100644 --- a/docs/agents/genie.md +++ b/docs/agents/genie.md @@ -1,20 +1,20 @@ --- -title: Genie spaces +title: Genie Agents sidebar_label: Genie description: Embed a chat interface over Unity Catalog tables with the AppKit Genie plugin and GenieChat component. No text-to-SQL code, no prompts, no custom LLM. --- -# Genie spaces +# Genie Agents -Give your users a chat box that queries your data. No text-to-SQL, no schema mapping, no custom LLM. A **Genie space** is a Databricks natural-language interface over Unity Catalog tables: curated datasets plus a knowledge store (synonyms, example SQL, column descriptions) plus a compound AI system that turns questions into SQL. Your AppKit app wires it in with one plugin on the server and one component on the page. +Give your users a chat box that queries your data. No text-to-SQL, no schema mapping, no custom LLM. A **Genie Agent** (formerly Genie space) is a Databricks natural-language interface over Unity Catalog tables: curated datasets plus a knowledge store (synonyms, example SQL, column descriptions) plus a compound AI system that turns questions into SQL. Your AppKit app wires it in with one plugin on the server and one component on the page. ## Prerequisites - Databricks CLI `v1.0.0+` with an [authenticated profile](/docs/tools/databricks-cli#authenticate). - A running AppKit app. See [Apps quickstart](/docs/apps/quickstart). -- A Genie space configured on Unity Catalog tables. See [What is a Genie space](https://docs.databricks.com/aws/en/genie/) for setup. +- A Genie Agent configured on Unity Catalog tables. See [What is a Genie Agent](https://docs.databricks.com/aws/en/genie/) for setup. - Attach the space as a resource in `app.yaml` and Databricks grants your app's service principal `CAN RUN` on deploy. End-user permissions are covered [below](#permissions-and-data-access). + Attach the agent as a resource in `app.yaml` and Databricks grants your app's service principal `CAN RUN` on deploy. End-user permissions are covered [below](#permissions-and-data-access). ## Why Genie @@ -45,7 +45,7 @@ await createApp({ }); ``` -Bind each alias to a Genie space resource in `app.yaml`: +Bind each alias to a Genie Agent resource in `app.yaml`: ```yaml title="app.yaml" env: @@ -53,9 +53,9 @@ env: valueFrom: genie-space ``` -The Databricks Apps runtime injects the space ID from the resource into the env var. Find your space ID in the **About** tab of the Genie space page in your workspace. +The Databricks Apps runtime injects the space ID from the resource into the env var. Find your space ID in the **About** tab of the Genie Agent page in your workspace. -For a single-space app, skip the `spaces` config entirely and bind the plugin's default env var: +For a single-agent app, skip the `spaces` config entirely and bind the plugin's default env var: ```yaml title="app.yaml" env: @@ -127,14 +127,14 @@ genie({ }), ``` -Bind each ID to a separate resource in `app.yaml`. See the [Genie Multi-Space Selector](/templates/genie-multi-space) template for a working UI with space switching, conversation cleanup, and URL sync. +Bind each ID to a separate resource in `app.yaml`. See the [Genie Multi-Agent Selector](/templates/genie-multi-space) template for a working UI with agent switching, conversation cleanup, and URL sync. ## Permissions and data access The `genie` plugin calls the Genie API on behalf of the signed-in user. Both the app's service principal and each end user need access for a request to succeed: -- **App service principal**: `CAN RUN` on the Genie space, plus `SELECT` on the underlying Unity Catalog tables. Attach the space as a resource in `app.yaml` to provision these automatically. See [Add a Genie space resource to an app](https://docs.databricks.com/aws/en/dev-tools/databricks-apps/genie). -- **End users**: access to the Genie space (shared with them or via a group) and `SELECT` on the same tables. If the user doesn't have access, the call returns a 403. You don't write the permission check. +- **App service principal**: `CAN RUN` on the Genie Agent, plus `SELECT` on the underlying Unity Catalog tables. Attach the agent as a resource in `app.yaml` to provision these automatically. See [Add a Genie Agent resource to an app](https://docs.databricks.com/aws/en/dev-tools/databricks-apps/genie). +- **End users**: access to the Genie Agent (shared with them or via a group) and `SELECT` on the same tables. If the user doesn't have access, the call returns a 403. You don't write the permission check. ## Where to next diff --git a/docs/agents/overview.md b/docs/agents/overview.md index 4541d138..916507a1 100644 --- a/docs/agents/overview.md +++ b/docs/agents/overview.md @@ -6,20 +6,20 @@ description: Agent Bricks is Databricks' enterprise agent platform. It unifies m # What is Agent Bricks? -**Agent Bricks** is Databricks' enterprise agent platform for building, deploying, and governing agents that operate on your business data. It unifies model access, execution, governance, and context across a single system: from the model you call, to the data your agent reads, to the identity it acts under. In your workspace you configure Knowledge Assistants, Multi-Agent Supervisors, and custom Python agents. Databricks handles evaluation, tuning, and quality improvement, then hosts each agent at an HTTP endpoint your app can call. +**Agent Bricks** is Databricks' enterprise agent platform for building, deploying, and governing agents that operate on your business data. It unifies model access, execution, governance, and context across a single system: from the model you call, to the data your agent reads, to the identity it acts under. In your workspace you configure Knowledge Assistants, Supervisor Agents, and custom Python agents. Databricks handles evaluation, tuning, and quality improvement, then hosts each agent at an HTTP endpoint your app can call. -Your AppKit app connects to Agent Bricks capabilities through two plugins: the [Model Serving plugin](/docs/appkit/v0/plugins/serving) for agents, foundation models, and governed endpoints, and the [Genie plugin](/docs/appkit/v0/plugins/genie) for natural-language queries over Unity Catalog tables. +Your AppKit app connects to Agent Bricks capabilities through two plugins: the [Model Serving plugin](/docs/appkit/v0/plugins/model-serving) for agents, foundation models, and governed endpoints, and the [Genie plugin](/docs/appkit/v0/plugins/genie) for natural-language queries over Unity Catalog tables. ## How it fits together -Your AppKit app calls Agent Bricks through a **Model Serving endpoint** (a foundation model, Knowledge Assistant, Agent Bricks Multi-Agent Supervisor, or custom Python agent) or a **Genie space** (natural-language queries over Unity Catalog tables). The [Model Serving plugin](/docs/appkit/v0/plugins/serving) and [Genie plugin](/docs/appkit/v0/plugins/genie) cover both. +Your AppKit app calls Agent Bricks through a **Model Serving endpoint** (a foundation model, Knowledge Assistant, Supervisor Agent, or custom Python agent) or a **Genie Agent** (natural-language queries over Unity Catalog tables). The [Model Serving plugin](/docs/appkit/v0/plugins/model-serving) and [Genie plugin](/docs/appkit/v0/plugins/genie) cover both. ```mermaid flowchart LR React["React
(@databricks/appkit-ui/react)"] -->|"useServingStream /
useGenieChat"| Node["AppKit server
(@databricks/appkit)"] Node -->|"Model Serving plugin"| Endpoint["Model Serving endpoint
(LLM, Knowledge Assistant,
Supervisor Agent,
custom Python)"] - Node -->|"Genie plugin"| Space["Genie space"] - Endpoint --> Gateway["AI Gateway
(governance, rate limits,
system tables)"] + Node -->|"Genie plugin"| Space["Genie Agent"] + Endpoint --> Gateway["Unity AI Gateway
(governance, rate limits,
system tables)"] Space --> UC["Unity Catalog
tables"] ``` @@ -35,7 +35,7 @@ Pick the plugin that matches the resource. No other primitive is required for th ## Auth -Serving and Genie HTTP routes run on behalf of the authenticated user by default. If the user doesn't have `CAN QUERY` on the serving endpoint or `CAN RUN` on the Genie space, the call fails with a 403. You don't write the permission check. +Serving and Genie HTTP routes run on behalf of the authenticated user by default. If the user doesn't have `CAN QUERY` on the serving endpoint or `CAN RUN` on the Genie Agent, the call fails with a 403. You don't write the permission check. For server logic outside a route handler, call `AppKit.serving("alias").asUser(req).invoke(...)` to keep the same behavior. @@ -50,7 +50,7 @@ You could call a serving endpoint directly with `fetch` and a token. The plugin :::note[Creating a custom agent] -Creating a custom agent is a Python workflow: the `ResponsesAgent` interface, an agent framework (OpenAI Agents SDK, LangGraph, LlamaIndex), and MLflow for tracing. See [Create an AI agent](https://docs.databricks.com/aws/en/generative-ai/agent-framework/create-agent) on docs.databricks.com for that track. +Creating a custom agent is a Python workflow: the `ResponsesAgent` interface, an agent framework (OpenAI Agents SDK, LangGraph, LlamaIndex), and MLflow for tracing. See [Author an AI agent](https://docs.databricks.com/aws/en/agents/agent-framework/author-agent) on docs.databricks.com for that track. ::: @@ -62,10 +62,10 @@ Start from a template that matches your use case. Each one includes the Model Se | -------------------------------------------------- | ---------------------------------------------------------- | | Add a streaming chatbot to your app | [AI Chat App](/templates/ai-chat-app) | | Let users query tables in natural language | [Genie Analytics App](/templates/genie-analytics-app) | -| Add multi-space Genie switching to an existing app | [Genie Multi-Space Selector](/templates/genie-multi-space) | +| Add multi-agent Genie switching to an existing app | [Genie Multi-Agent Selector](/templates/genie-multi-space) | ## Where to next -- [AI Gateway](/docs/agents/ai-gateway) for governed access to models, agent endpoints, and external tools. -- [Genie spaces](/docs/agents/genie) for chat-with-your-data over Unity Catalog tables. +- [Unity AI Gateway](/docs/agents/ai-gateway) for governed access to models, agent endpoints, and external tools. +- [Genie Agents](/docs/agents/genie) for chat-with-your-data over Unity Catalog tables. - [Custom agent endpoints](/docs/agents/custom-agents) for wiring Knowledge Assistant, Supervisor Agent, or your own Python agent. diff --git a/docs/apps/configuration.md b/docs/apps/configuration.md index a0a70c18..3d89af28 100644 --- a/docs/apps/configuration.md +++ b/docs/apps/configuration.md @@ -67,7 +67,7 @@ AppKit templates use conventional names for plugin-managed resources: | [Lakebase Postgres](/docs/lakebase/quickstart) | `postgres` | PostgreSQL connection | | [SQL Warehouse](https://docs.databricks.com/aws/en/compute/sql-warehouse/index.html) | `sql-warehouse` | SQL query execution | | [Model Serving](/docs/agents/ai-gateway) | `serving-endpoint` | AI model inference | -| [Genie space](/docs/agents/genie) | `genie-space` | Natural language data queries | +| [Genie Agent](/docs/agents/genie) | `genie-space` | Natural language data queries | | [Job](https://docs.databricks.com/aws/en/dev-tools/databricks-apps/resources) | `job` | Scheduled or triggered job | | [UC Volumes](https://docs.databricks.com/aws/en/files/index.html) | `volume` | File storage | @@ -136,7 +136,7 @@ Each app gets a dedicated service principal. Databricks injects `DATABRICKS_CLIE | Medium | Up to 2 | 6 GB | 0.5 | | Large | Up to 4 | 12 GB | 1.0 | -Medium is the default. Compute size is configured in the workspace UI (not available through the CLI). +Medium is the default. Configure compute size in the workspace UI or with the `--compute-size` flag (`MEDIUM` or `LARGE`) on `databricks apps create` and `databricks apps update`. ## Constraints diff --git a/docs/apps/development.md b/docs/apps/development.md index 1e502c33..c57c23e3 100644 --- a/docs/apps/development.md +++ b/docs/apps/development.md @@ -98,6 +98,7 @@ databricks apps init --name my-app databricks apps init \ --name $APP_NAME \ --features lakebase,analytics \ + --set lakebase.postgres.project=projects/$PROJECT_ID \ --set lakebase.postgres.branch=projects/$PROJECT_ID/branches/production \ --set lakebase.postgres.database=projects/$PROJECT_ID/branches/production/databases/$DB_NAME \ --set analytics.sql-warehouse.id=$WAREHOUSE_ID \ diff --git a/docs/apps/overview.md b/docs/apps/overview.md index 1d62cbf3..b0a4907b 100644 --- a/docs/apps/overview.md +++ b/docs/apps/overview.md @@ -18,14 +18,14 @@ AppKit uses a three-layer architecture with plugins that register capabilities a - **Server**: Express HTTP server with Databricks OAuth built in. Plugins attach routes and middleware at this layer. - **Data**: Plugin-based access to Databricks resources. Each plugin wraps a resource type and exposes a typed API on the `AppKit` object. -| Plugin | What it adds | -| -------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [**server**](/docs/appkit/v0/plugins/server) | Express HTTP server, static file serving, Vite dev mode (always included) | -| [**lakebase**](/docs/appkit/v0/plugins/lakebase) | Postgres connection pool for [Lakebase Postgres](/docs/lakebase/quickstart) with automatic OAuth token refresh | -| [**analytics**](/docs/appkit/v0/plugins/analytics) | SQL query execution against [Databricks SQL Warehouses](https://docs.databricks.com/aws/en/compute/sql-warehouse/index.html). See [Analytical reads](/docs/lakehouse/analytical-reads). | -| [**genie**](/docs/appkit/v0/plugins/genie) | [Genie space](/docs/agents/genie) integration for natural-language data queries | -| [**serving**](/docs/appkit/v0/plugins/serving) | Authenticated proxy to [Model Serving](/docs/agents/ai-gateway) endpoints with streaming support | -| [**files**](/docs/appkit/v0/plugins/files) | File operations against [Unity Catalog Volumes](https://docs.databricks.com/aws/en/files/index.html) | +| Plugin | What it adds | +| ---------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [**server**](/docs/appkit/v0/plugins/server) | Express HTTP server, static file serving, Vite dev mode (always included) | +| [**lakebase**](/docs/appkit/v0/plugins/lakebase) | Postgres connection pool for [Lakebase Postgres](/docs/lakebase/quickstart) with automatic OAuth token refresh | +| [**analytics**](/docs/appkit/v0/plugins/analytics) | SQL query execution against [Databricks SQL Warehouses](https://docs.databricks.com/aws/en/compute/sql-warehouse/index.html). See [Analytical reads](/docs/lakehouse/analytical-reads). | +| [**genie**](/docs/appkit/v0/plugins/genie) | [Genie Agent](/docs/agents/genie) integration for natural-language data queries | +| [**serving**](/docs/appkit/v0/plugins/model-serving) | Authenticated proxy to [Model Serving](/docs/agents/ai-gateway) endpoints with streaming support | +| [**files**](/docs/appkit/v0/plugins/files) | File operations against [Unity Catalog Volumes](https://docs.databricks.com/aws/en/files/index.html) | ## How auth works @@ -40,7 +40,7 @@ Apps are about **interactivity**, not only analytics. A dashboard is great for r ## When not to use it - **Static sites with no Databricks data access.** Host these anywhere. -- **Public-facing or customer-facing apps.** By default, users must be authenticated identities in your Databricks workspace. For external or customer-facing access, see [App Users](https://docs.databricks.com/aws/en/dev-tools/databricks-apps/key-concepts/#app-users). +- **Public-facing or customer-facing apps.** By default, users must be authenticated identities in your Databricks workspace. For external or customer-facing access, see [App Users](https://docs.databricks.com/aws/en/dev-tools/databricks-apps/key-concepts/#app-sharing). - **Pure read-only dashboards** that AI/BI [Dashboards](https://docs.databricks.com/aws/en/dashboards/) already cover. Use a dashboard until you need to persist user input or run custom logic on top of it. ## Where to next diff --git a/docs/apps/quickstart.md b/docs/apps/quickstart.md index 5a318301..2755f901 100644 --- a/docs/apps/quickstart.md +++ b/docs/apps/quickstart.md @@ -24,7 +24,7 @@ Common starting points: | [AI Chat App](/templates/ai-chat-app) | Conversational AI, chatbots, assistants | | [App with Lakebase](/templates/app-with-lakebase) | CRUD apps with persistent storage | -The [templates catalog](/templates) has the full list, including [Lakebase Postgres](/docs/lakebase/quickstart), [Genie spaces](/docs/agents/genie), [AI Gateway](/docs/agents/ai-gateway), and [Agent Bricks](/docs/agents/overview). +The [templates catalog](/templates) has the full list, including [Lakebase Postgres](/docs/lakebase/quickstart), [Genie Agents](/docs/agents/genie), [Unity AI Gateway](/docs/agents/ai-gateway), and [Agent Bricks](/docs/agents/overview). Give your AI assistant Databricks platform context by installing the [agent skills](/docs/tools/ai-tools/agent-skills) before copying in the template: diff --git a/docs/lakebase/configuration.md b/docs/lakebase/configuration.md index 0a47f165..3faa7970 100644 --- a/docs/lakebase/configuration.md +++ b/docs/lakebase/configuration.md @@ -75,12 +75,12 @@ Project, branch, endpoint, and database IDs must be 1-63 characters, start with Computes autoscale between a configured min and max compute unit (CU) range. Default settings by branch type when created via API or CLI: -- **Production branch**: 1 CU (min and max), scale to zero disabled. -- **Child branches**: 1 CU (min and max), scale to zero enabled (5-minute default). +- **Production branch**: 1 CU (min and max), scale to zero enabled (24-hour default timeout). +- **Child branches**: 1 CU (min and max), scale to zero enabled (24-hour default timeout). The Lakebase Postgres UI sets higher defaults: 8–16 CU for production and 2–4 CU for child branches. -[Autoscaling](https://docs.databricks.com/aws/en/oltp/projects/autoscaling) is supported from 0.5 to 32 CU; computes from 36 to 112 CU are fixed size. The difference between max and min cannot exceed 16 CU (`max - min <= 16`). +[Autoscaling](https://docs.databricks.com/aws/en/oltp/projects/autoscaling) is available for computes up to 64 CU (128 GB). For workloads requiring more than 64 CU, larger fixed-size computes are available. The difference between max and min cannot exceed 16 CU (`max - min <= 16`). Compute units (CU) are the capacity measure for Lakebase Postgres. Each CU provides approximately 2 GB of RAM. @@ -130,18 +130,20 @@ databricks postgres update-endpoint \ [Scale to zero](https://docs.databricks.com/aws/en/oltp/projects/scale-to-zero) suspends idle computes to eliminate costs. When a new query arrives, the compute resumes automatically (typically a few hundred milliseconds). -| Setting | Default | -| --------------- | ---------- | -| Timeout | 5 minutes | -| Minimum timeout | 60 seconds | +| Setting | Value | +| --------------- | -------------------- | +| Default timeout | 24 hours | +| Timeout range | 60 seconds to 7 days | -Apps connecting to a scaled-down compute will see a brief pause on the first query. Implement connection retry logic in your app. +For development branches, shorter timeouts (for example 30 minutes) reduce costs further. Apps connecting to a scaled-down compute will see a brief pause on the first query. Implement connection retry logic in your app. When a compute resumes, session context resets (temporary tables, prepared statements, session settings, connection pools).
Configure scale to zero +The `300s` values below are illustrative custom timeouts, not the default (the default is 24 hours). Set any value from 60 seconds to 7 days. + **Project defaults** (new branches inherit these settings): ```bash title="Common" diff --git a/docs/lakebase/development.md b/docs/lakebase/development.md index f7281f27..0d91d737 100644 --- a/docs/lakebase/development.md +++ b/docs/lakebase/development.md @@ -47,6 +47,8 @@ lakebase({ }); ``` +The `max: 10` default applies to the shared service-principal pool. Per-user on-behalf-of pools (created by `asUser(req)`) default to `max: 3`. + ### Caching integration Lakebase Postgres also backs the [AppKit caching plugin](/docs/appkit/v0/plugins/caching) when healthy. For the full API, ORM integration, and connection configuration, read the [plugin reference](/docs/appkit/v0/plugins/lakebase). @@ -95,6 +97,7 @@ databricks postgres create-branch \ projects/$PROJECT_ID \ $BRANCH_ID \ --json '{"spec": {"source_branch": "projects/$PROJECT_ID/branches/$SOURCE_BRANCH_ID", "no_expiry": true}}' \ + --replace-existing \ --debug \ -o json \ --target $TARGET \ @@ -106,17 +109,18 @@ databricks postgres create-branch \
Options -| Option | Required | Description | -| ----------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `PARENT` | yes | Project resource path: `projects/{project_id}` | -| `BRANCH_ID` | yes | Unique branch identifier (1-63 chars, lowercase) | -| `--json` | no | JSON spec with `source_branch` and expiration policy (`no_expiry`, `ttl`, or `expire_time`). If omitted, branches from the project's default branch with default expiration | -| `--no-wait` | no | Return immediately with operation details | -| `--timeout` | no | Max time to wait for completion | -| `--debug` | no | Enable debug logging | -| `-o json` | no | Output as JSON (default: text) | -| `--target` | no | Bundle target to use (if applicable) | -| `--profile` | no | Databricks CLI profile name | +| Option | Required | Description | +| -------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `PARENT` | yes | Project resource path: `projects/{project_id}` | +| `BRANCH_ID` | yes | Unique branch identifier (1-63 chars, lowercase) | +| `--json` | no | JSON spec with `source_branch` and expiration policy (`no_expiry`, `ttl`, or `expire_time`). If omitted, branches from the project's default branch with default expiration | +| `--replace-existing` | no | Update the branch if it already exists instead of returning an error | +| `--no-wait` | no | Return immediately with operation details | +| `--timeout` | no | Max time to wait for completion | +| `--debug` | no | Enable debug logging | +| `-o json` | no | Output as JSON (default: text) | +| `--target` | no | Bundle target to use (if applicable) | +| `--profile` | no | Databricks CLI profile name |
@@ -131,6 +135,7 @@ databricks postgres delete-branch projects/my-project/branches/feature-xyz ```bash title="All Options" databricks postgres delete-branch \ projects/$PROJECT_ID/branches/$BRANCH_ID \ + --purge \ --no-wait \ --timeout 10m \ --debug \ @@ -142,15 +147,16 @@ databricks postgres delete-branch \
Options -| Option | Required | Description | -| ----------- | -------- | ------------------------------------------------------------------ | -| `NAME` | yes | Branch resource path: `projects/{project_id}/branches/{branch_id}` | -| `--no-wait` | no | Return immediately with operation details | -| `--timeout` | no | Max time to wait for completion | -| `--debug` | no | Enable debug logging | -| `-o json` | no | Output as JSON (default: text) | -| `--target` | no | Bundle target to use (if applicable) | -| `--profile` | no | Databricks CLI profile name | +| Option | Required | Description | +| ----------- | -------- | --------------------------------------------------------------------- | +| `NAME` | yes | Branch resource path: `projects/{project_id}/branches/{branch_id}` | +| `--purge` | no | Permanently delete the branch; if omitted, the branch is soft-deleted | +| `--no-wait` | no | Return immediately with operation details | +| `--timeout` | no | Max time to wait for completion | +| `--debug` | no | Enable debug logging | +| `-o json` | no | Output as JSON (default: text) | +| `--target` | no | Bundle target to use (if applicable) | +| `--profile` | no | Databricks CLI profile name |
diff --git a/docs/lakebase/overview.md b/docs/lakebase/overview.md index 16236ef0..6f9de4ba 100644 --- a/docs/lakebase/overview.md +++ b/docs/lakebase/overview.md @@ -15,7 +15,7 @@ Use it for the data your apps actively write and read at low latency: user state - **Runs inside your workspace**, eliminating VPC peering, cross-cloud credential management, and network latency. - **Instant branching** via copy-on-write storage creates isolated database copies in seconds, similar to git branches. Branches share unchanged data so they're cheap to create and maintain. - **Autoscales** with your workload, scaling up under load and back down when demand drops, within a configured min/max range. No capacity planning or manual resize. -- **Scales to zero** when idle and resumes on the next query. No cost for idle compute. Development branches suspend by default after five minutes. +- **Scales to zero** when idle and resumes on the next query. No cost for idle compute. The inactivity timeout defaults to 24 hours and can be set anywhere from 60 seconds to 7 days. ## How AppKit wires it up diff --git a/docs/lakebase/quickstart.md b/docs/lakebase/quickstart.md index dfeb1081..f19b7b53 100644 --- a/docs/lakebase/quickstart.md +++ b/docs/lakebase/quickstart.md @@ -56,6 +56,7 @@ Select **Lakebase** and the CLI walks you through selecting an existing project, ```bash databricks apps init --name my-app --features lakebase \ + --set lakebase.postgres.project=projects/ \ --set lakebase.postgres.branch=projects//branches/ \ --set lakebase.postgres.database=projects//branches//databases/ ``` diff --git a/docs/tools/ai-tools/agent-skills.md b/docs/tools/ai-tools/agent-skills.md index c30ee5c6..aa605b96 100644 --- a/docs/tools/ai-tools/agent-skills.md +++ b/docs/tools/ai-tools/agent-skills.md @@ -24,14 +24,12 @@ The CLI detects which coding agents you have installed and links the skills into The following flags are available for the `databricks aitools install` command: -| Option | Description | -| ----------------- | ---------------------------------------------------------------------------- | -| `--scope=global` | Install globally (default) | -| `--scope=project` | Install to project directory | -| `--scope=both` | Apply to both scopes (valid on `update`/`uninstall`) | -| `--agents` | Target specific agents (comma-separated, e.g. `--agents cursor,claude-code`) | -| `--skills` | Install specific skills only (comma-separated) | -| `--experimental` | Include experimental skills | +| Option | Description | +| ---------------- | ------------------------------------------------------------------------------------- | +| `--scope` | Scope to apply: `global` (default), `project`, or `both` (`both` on update/uninstall) | +| `--agents` | Target specific agents (comma-separated, e.g. `--agents cursor,claude-code`) | +| `--skills` | Install specific skills only (comma-separated) | +| `--experimental` | Include experimental skills | Run `databricks aitools install --help` for the full list of options. @@ -53,18 +51,42 @@ You can also install Databricks skills with the [Skills CLI](https://github.com/ ## Available skills -Run `databricks aitools skills list` to see available skills and their install status. - -| Skill | Description | -| --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `databricks-apps` | Build apps on Databricks Apps using AppKit. Includes references for the AppKit SDK, SQL queries, tRPC, Lakebase, Model Serving, and testing. | -| `databricks-core` | CLI operations, auth, profiles, data exploration, and bundles. Base skill for all Databricks development. | -| `databricks-dabs` | Declare, deploy, and manage Databricks resources with Declarative Automation Bundles (DABs). Covers bundle structure, deploy/run commands, resource permissions, and pipelines. | -| `databricks-jobs` | Develop and deploy Lakeflow Jobs with notebooks, Python wheels, or SQL tasks. | -| `databricks-lakebase` | Manage Lakebase Postgres Autoscaling projects, branches, and endpoints. | -| `databricks-model-serving` | Create and manage Model Serving endpoints for real-time ML inference with auto-scaling and version management. | -| `databricks-pipelines` | Develop Lakeflow Spark Declarative Pipelines (formerly DLT). Large reference set covering streaming tables, materialized views, Auto Loader, Auto CDC, expectations, and sinks. | -| `databricks-serverless-migration` | Migrate Databricks workloads from classic compute to serverless. Covers compatibility checks, configuration, code patterns, networking, and streaming migration. | +Run `databricks aitools list` to see available skills and their install status. + +| Skill | Description | +| ---------------------------------------- | --------------------------------------------------------------------------------------------------------------- | +| `databricks-agent-bricks` | Create Agent Bricks: Knowledge Assistants for document Q&A and Supervisor Agents for multi-agent orchestration. | +| `databricks-ai-functions` | Use Databricks built-in AI Functions (`ai_classify`, `ai_extract`, `ai_summarize`, `ai_query`, and more). | +| `databricks-ai-runtime` | Databricks AI Runtime (`air`) CLI for submitting and managing GPU training workloads on serverless compute. | +| `databricks-aibi-dashboards` | Create Databricks AI/BI dashboards. Use when creating, updating, or deploying Lakeview dashboards. | +| `databricks-app-design` | Design the UX of custom-code Databricks Apps (AppKit/React) data screens mapped to concrete AppKit components. | +| `databricks-apps` | Build apps on the Databricks Apps platform. | +| `databricks-apps-python` | Python backend for Databricks Apps — FastAPI (default), Flask, Dash, Streamlit, Gradio, Reflex. | +| `databricks-core` | CLI operations and the parent/entry-point skill: authentication, profile selection, and bundles. | +| `databricks-dabs` | Create, configure, validate, deploy, run, and manage Declarative Automation Bundles (DABs). | +| `databricks-data-discovery` | Discover, explore, and query Databricks data via Genie — the CLI equivalent of the Genie One MCP. | +| `databricks-dbsql` | Databricks SQL (DBSQL) advanced features and SQL warehouse capabilities. | +| `databricks-docs` | Databricks documentation reference via `llms.txt` index. | +| `databricks-execution-compute` | Execute code and manage compute: run Python/Scala/SQL/R via serverless, classic, or interactive clusters. | +| `databricks-genie` | Create and query Databricks Genie Agents for natural language SQL exploration. | +| `databricks-iceberg` | Apache Iceberg tables on Databricks — Managed Iceberg, External Iceberg Reads, IRC, Iceberg v3, and more. | +| `databricks-jobs` | Develop and deploy Lakeflow Jobs via DABs, Python SDK, or the CLI. | +| `databricks-lakebase` | Databricks Lakebase Postgres: projects, scaling, connectivity, synced tables, and Data API. | +| `databricks-lakeflow-connect` | Build managed ingestion pipelines into Databricks using Lakeflow Connect. | +| `databricks-metric-views` | Unity Catalog metric views: define, create, query, and manage governed business metrics in YAML. | +| `databricks-ml-training` | Train ML or custom-agent models with MLflow tracking and Unity Catalog registration. | +| `databricks-mlflow-evaluation` | MLflow 3 GenAI agent evaluation. | +| `databricks-model-serving` | Databricks Model Serving endpoint lifecycle and ops. | +| `databricks-pipelines` | Develop Lakeflow Spark Declarative Pipelines (formerly Delta Live Tables). | +| `databricks-python-sdk` | Databricks development guidance including Python SDK, Databricks Connect, CLI, and REST API. | +| `databricks-serverless-migration` | Migrate Databricks workloads from classic compute to serverless compute. | +| `databricks-spark-structured-streaming` | Comprehensive guide to Spark Structured Streaming for production workloads. | +| `databricks-synthetic-data-gen` | Generate realistic synthetic data using Spark + Faker, with serverless execution and multiple output formats. | +| `databricks-unity-catalog` | Unity Catalog governance, access control, and observability — grants, privilege model, RLS, and column masks. | +| `databricks-unstructured-pdf-generation` | Build RAG / unstructured-document evaluation datasets and demo documents on Databricks. | +| `databricks-vector-search` | Databricks Vector Search endpoints and indexes for RAG and semantic search. | +| `databricks-zerobus-ingest` | Build Zerobus Ingest clients for near real-time data ingestion into Databricks Delta tables via gRPC. | +| `spark-python-data-source` | Build custom Python data sources for Apache Spark using the PySpark DataSource API. | ## Where to next diff --git a/plugins/llms-txt.ts b/plugins/llms-txt.ts index 7d7d779d..666b6d07 100644 --- a/plugins/llms-txt.ts +++ b/plugins/llms-txt.ts @@ -41,7 +41,7 @@ const SIDEBAR_SECTIONS: Array<{ { title: "Agent Bricks", description: - "Connect Agent Bricks agents, governed LLM endpoints, and Genie spaces to your AppKit app. Covers AI Gateway, the Model Serving plugin for calling LLM and agent endpoints, and the Genie plugin for natural-language data queries.", + "Connect Agent Bricks agents, governed LLM endpoints, and Genie Agents to your AppKit app. Covers Unity AI Gateway, the Model Serving plugin for calling LLM and agent endpoints, and the Genie plugin for natural-language data queries.", slugs: [ "agents/overview", "agents/ai-gateway", diff --git a/src/components/docs/content-heading.tsx b/src/components/docs/content-heading.tsx index 1275b9e4..899ed30c 100644 --- a/src/components/docs/content-heading.tsx +++ b/src/components/docs/content-heading.tsx @@ -26,7 +26,9 @@ export function ContentHeading({ } const url = `${window.location.origin}${window.location.pathname}#${id}`; - await copyText(url); + if (!(await copyText(url))) { + return; + } setCopied(true); window.setTimeout(() => setCopied(false), 1500); } @@ -71,11 +73,11 @@ export function ContentHeading({ ); } -async function copyText(value: string) { +async function copyText(value: string): Promise { if (navigator.clipboard?.writeText) { try { await navigator.clipboard.writeText(value); - return; + return true; } catch { // Fall back to execCommand for browser contexts without clipboard access. } @@ -88,6 +90,7 @@ async function copyText(value: string) { textarea.style.top = "-9999px"; document.body.appendChild(textarea); textarea.select(); - document.execCommand("copy"); + const copied = document.execCommand("copy"); document.body.removeChild(textarea); + return copied; } diff --git a/src/components/home/hero/player.source.js b/src/components/home/hero/player.source.js index 1ff83148..ec6711bd 100644 --- a/src/components/home/hero/player.source.js +++ b/src/components/home/hero/player.source.js @@ -4141,7 +4141,7 @@ const baseStep = Math.max(18, duration / stepCount); const cadence = [0.55, 0.95, 0.72, 1.2, 0.68]; - for (let cursor = 0; cursor < order.length; ) { + for (let cursor = 0; cursor < order.length;) { if (token !== runId) { throw new Error("Animation cancelled"); } diff --git a/src/components/home/loved-by-developers-metrics-animation.ts b/src/components/home/loved-by-developers-metrics-animation.ts index 532bee71..453e7b97 100644 --- a/src/components/home/loved-by-developers-metrics-animation.ts +++ b/src/components/home/loved-by-developers-metrics-animation.ts @@ -1,10 +1,5 @@ type LovedTimelineLayerName = - | "lines" - | "scan" - | "checker" - | "bars" - | "glow" - | "solid"; + "lines" | "scan" | "checker" | "bars" | "glow" | "solid"; type LovedMetricsSettings = { look: "original" | "cipher" | "crt" | "terminal"; diff --git a/src/lib/recipes/recipes.ts b/src/lib/recipes/recipes.ts index a39bfe3b..9c71ffb6 100644 --- a/src/lib/recipes/recipes.ts +++ b/src/lib/recipes/recipes.ts @@ -3,7 +3,7 @@ export const SERVICES = [ "Lakebase Postgres", "Agent Bricks", "Genie", - "AI Gateway", + "Unity AI Gateway", "Data Lakehouse", "Lakeflow Pipelines", "Unity Catalog", @@ -97,8 +97,8 @@ export const recipes: Recipe[] = [ name: "Streaming AI Chat with Model Serving", description: "Build a streaming AI chat experience using AI SDK and Databricks Model Serving endpoints.", - tags: ["Agent Bricks", "AI", "Chat", "AI SDK", "AI Gateway"], - services: ["Databricks Apps", "AI Gateway"], + tags: ["Agent Bricks", "AI", "Chat", "AI SDK", "Unity AI Gateway"], + services: ["Databricks Apps", "Unity AI Gateway"], previewImageLightUrl: "/img/guides/ai-chat-model-serving-preview-light.png", previewImageDarkUrl: "/img/guides/ai-chat-model-serving-preview-dark.png", prerequisites: [ @@ -109,22 +109,22 @@ export const recipes: Recipe[] = [ }, { id: "foundation-models-api", - name: "Query AI Gateway Endpoints", + name: "Query Foundation Model Endpoints", description: - "Query AI Gateway endpoints for production-ready access to foundation models with built-in governance.", - tags: ["Agent Bricks", "AI", "AI Gateway", "Foundation Models"], - services: ["AI Gateway"], + "Query Databricks foundation-model endpoints for production-ready access to hosted models with built-in AI Gateway governance.", + tags: ["Agent Bricks", "AI", "Unity AI Gateway", "Foundation Models"], + services: ["Unity AI Gateway"], prerequisites: ["set-up-your-local-dev-environment"], previewImageLightUrl: "/img/guides/foundation-models-api-preview-light.png", previewImageDarkUrl: "/img/guides/foundation-models-api-preview-dark.png", }, { id: "embeddings-generation", - name: "Generate Embeddings with AI Gateway", + name: "Generate Embeddings with Foundation Models", description: - "Generate text embeddings from a Databricks AI Gateway endpoint using the Databricks SDK.", - tags: ["Agent Bricks", "AI", "AI Gateway", "Embeddings"], - services: ["AI Gateway"], + "Generate text embeddings from a Databricks foundation-model endpoint using the Databricks SDK.", + tags: ["Agent Bricks", "AI", "Unity AI Gateway", "Embeddings"], + services: ["Unity AI Gateway"], prerequisites: ["set-up-your-local-dev-environment"], previewImageLightUrl: "/img/guides/embeddings-generation-preview-light.png", previewImageDarkUrl: "/img/guides/embeddings-generation-preview-dark.png", @@ -134,8 +134,8 @@ export const recipes: Recipe[] = [ name: "Create a Databricks Model Serving endpoint", description: "Create and validate a Databricks Model Serving endpoint for AI chat inference in Databricks Apps.", - tags: ["Agent Bricks", "AI Gateway", "Endpoints", "Inference"], - services: ["AI Gateway"], + tags: ["Agent Bricks", "Unity AI Gateway", "Endpoints", "Inference"], + services: ["Unity AI Gateway"], prerequisites: ["set-up-your-local-dev-environment"], previewImageLightUrl: "/img/guides/model-serving-endpoint-creation-preview-light.png", @@ -240,7 +240,7 @@ export const recipes: Recipe[] = [ id: "genie-conversational-analytics", name: "Genie Conversational Analytics", description: - "Embed a Databricks AI/BI Genie chat interface so users can explore data through natural language. Configure a Genie space, wire up server and client plugins, declare app resources, and deploy.", + "Embed a Databricks AI/BI Genie chat interface so users can explore data through natural language. Configure a Genie Agent, wire up server and client plugins, declare app resources, and deploy.", tags: ["Agent Bricks", "Genie", "AI/BI", "Natural Language", "Analytics"], services: ["Genie", "Databricks Apps"], prerequisites: ["set-up-your-local-dev-environment"], @@ -268,9 +268,9 @@ export const recipes: Recipe[] = [ }, { id: "genie-multi-space", - name: "Genie Multi-Space Selector", + name: "Genie Multi-Agent Selector", description: - "Add a space selector so users can switch between multiple AI/BI Genie spaces from a single page. Covers multi-alias server config, per-space bundle resources, and automatic conversation cleanup on space switch and redeployment.", + "Add a selector so users can switch between multiple AI/BI Genie Agents from a single page. Covers multi-alias server config, per-agent bundle resources, and automatic conversation cleanup on agent switch and redeployment.", tags: ["Agent Bricks", "Genie", "AI/BI", "Natural Language", "Data"], services: ["Genie"], prerequisites: ["genie-conversational-analytics"], @@ -486,7 +486,7 @@ export const cookbooks: Cookbook[] = [ id: "genie-analytics-app", name: "Genie Analytics App", description: - "Build a minimal Databricks App with AI/BI Genie conversational analytics. Covers Genie space configuration, plugin wiring, and deploy.", + "Build a minimal Databricks App with AI/BI Genie conversational analytics. Covers Genie Agent configuration, plugin wiring, and deploy.", recipeIds: ["genie-conversational-analytics"], previewImageLightUrl: "/img/guides/genie-analytics-app-preview-light.png", previewImageDarkUrl: "/img/guides/genie-analytics-app-preview-dark.png", diff --git a/tests/docs-verify/docs-verify-apps.test.ts b/tests/docs-verify/docs-verify-apps.test.ts index 610e3afa..877bd689 100644 --- a/tests/docs-verify/docs-verify-apps.test.ts +++ b/tests/docs-verify/docs-verify-apps.test.ts @@ -33,10 +33,13 @@ afterAll(() => { describe("CLI prerequisites", { timeout: 30_000 }, () => { test("databricks CLI is installed and meets minimum version", () => { const version = execSync("databricks -v", { encoding: "utf-8" }).trim(); - expect(version).toMatch(/Databricks CLI v0\.\d+\.\d+/); - const match = version.match(/v0\.(\d+)\.\d+/); + expect(version).toMatch(/Databricks CLI v\d+\.\d+\.\d+/); + const match = version.match(/v(\d+)\.(\d+)\.\d+/); expect(match).not.toBeNull(); - expect(Number(match![1])).toBeGreaterThanOrEqual(295); + const major = Number(match![1]); + const minor = Number(match![2]); + // Minimum: v1.0.0, or the pre-1.0 floor of v0.295.0 + expect(major >= 1 || minor >= 295).toBe(true); }); test("profile is authenticated and valid", () => { @@ -160,6 +163,7 @@ describe("Scaffold app with Lakebase feature", { timeout: 120_000 }, () => { profile: PROFILE, features: "lakebase", setFlags: [ + "lakebase.postgres.project=projects/fake", "lakebase.postgres.branch=projects/fake/branches/production", "lakebase.postgres.database=projects/fake/branches/production/databases/databricks_postgres", "lakebase.postgres.databaseName=databricks_postgres", diff --git a/tests/e2e/navigation.spec.ts b/tests/e2e/navigation.spec.ts index f31bbf4b..7825b17e 100644 --- a/tests/e2e/navigation.spec.ts +++ b/tests/e2e/navigation.spec.ts @@ -861,7 +861,7 @@ test.describe("example detail page", () => { page.getByText("Genie Conversational Analytics", { exact: true }), ).toBeVisible(); await expect( - page.getByText("Query AI Gateway Endpoints", { exact: true }), + page.getByText("Query Foundation Model Endpoints", { exact: true }), ).toBeVisible(); }); }); diff --git a/tests/e2e/pages.spec.ts b/tests/e2e/pages.spec.ts index a1fb7642..21b05404 100644 --- a/tests/e2e/pages.spec.ts +++ b/tests/e2e/pages.spec.ts @@ -44,8 +44,8 @@ const PAGES = [ { path: "/templates/lakebase-off-platform", title: "Lakebase Off-Platform" }, { path: "/docs/start-here", title: "Start here" }, { path: "/docs/agents/overview", title: "What is Agent Bricks?" }, - { path: "/docs/agents/ai-gateway", title: "AI Gateway" }, - { path: "/docs/agents/genie", title: "Genie spaces" }, + { path: "/docs/agents/ai-gateway", title: "Unity AI Gateway" }, + { path: "/docs/agents/genie", title: "Genie Agents" }, { path: "/docs/agents/custom-agents", title: "Custom agent endpoints" }, { path: "/docs/apps/quickstart", title: "Quickstart" }, { path: "/docs/apps/configuration", title: "App configuration" }, diff --git a/tests/e2e/resources-filters.spec.ts b/tests/e2e/resources-filters.spec.ts index d3a6b699..a02ca631 100644 --- a/tests/e2e/resources-filters.spec.ts +++ b/tests/e2e/resources-filters.spec.ts @@ -127,7 +127,7 @@ test.describe("templates page service filter", () => { templateTextLink(page, "/templates/lakebase-off-platform"), ).toBeVisible(); await expect( - templateTextLink(page, "/templates/query-ai-gateway-endpoints"), + templateTextLink(page, "/templates/foundation-models-api"), ).toBeHidden(); }); @@ -148,7 +148,7 @@ test.describe("templates page service filter", () => { .toBeGreaterThan(listTop + 200); await page - .getByRole("checkbox", { name: "AI Gateway", exact: true }) + .getByRole("checkbox", { name: "Unity AI Gateway", exact: true }) .check(); await expect