Tavily web search and extract for AppKit apps
I maintainer di solito rispondono entro 3 giorni
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 35/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- node.js, typescript
- Ambito
- api, backend, developer-experience
Direzione di ricerca
Inizia confrontando la struttura proposta di packages/appkit/src/plugins/tavily/ con i plugin genie e serving esistenti, quindi leggi il contratto ToolProvider di agents e le convenzioni di sincronizzazione dei plugin appkit. Il lavoro della v1 è completo quando search ed extract, il manifest dei secret, lo schema di configurazione, l’integrazione con il toolkit, i test e una pagina di documentazione sono coperti e le questioni relative a packaging, beta-gating e dipendenze sono state risolte.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
We propose adding a Tavily plugin to AppKit, giving Databricks Apps first-class access to real-time web data: search, content extraction, and (later) crawling and deep research. Tavily is a web access API built specifically for LLMs and agents — results come back as clean, relevance-scored, LLM-ready content rather than raw HTML.
We're the Tavily team, and we'd like to contribute this plugin ourselves — this issue is to align on scope and design before we open the PR.
Motivation
AppKit apps are strong on Lakehouse-native data (analytics, Genie, vector search) but have no built-in way to reach outside the workspace. Common patterns this unlocks:
- Grounded AI agents — the agents plugin resolves
plugin:NAMEtool providers; a Tavily plugin exposing atoolkit()would let any AppKit agent do web search/extraction with one line of frontmatter (tools: [plugin:tavily]), complementing Genie and vector-search for questions that need current, external information. - RAG enrichment — combine vector-search results over internal docs with fresh web context in serving/agents flows.
- Data enrichment apps — enrich entities from Lakehouse tables (companies, products, tickers) with live web data.
Proposed design
A core plugin following the existing conventions (packages/appkit/src/plugins/tavily/):
Manifest — one required secret resource (permission: READ) holding the Tavily API key, surfaced via a TAVILY_API_KEY env field, so databricks apps init and appkit plugin sync wire it up like any other resource. No OBO semantics — the key is app-level, like a service principal credential.
Server API — typed methods plus injected routes:
const app = await createApp({ plugins: [new TavilyPlugin({ /* defaults */ })] });
await app.tavily.search("latest EU AI Act enforcement actions", {
maxResults: 5,
timeRange: "month",
});
await app.tavily.extract(["https://example.com/report"], { format: "markdown" });
POST /api/tavily/searchandPOST /api/tavily/extract, validated with Zod like other plugins.- All outbound calls go through
this.execute(), so caching (search results are very cacheable), retry, timeout, and OpenTelemetry tracing come for free from the interceptor chain.
Agents integration — implement the ToolProvider contract (toolkit()), so agents get tavily_search / tavily_extract tools, subject to the existing tool-approval gate.
Config schema (sketch) —
{
"apiKey": { /* from secret resource / TAVILY_API_KEY */ },
"search": { "maxResults": 5, "searchDepth": "basic", "includeDomains": [], "excludeDomains": [] },
"cache": { "ttl": 300000 },
"timeout": 30000
}
Scope
- v1:
search+extract, manifest, config schema, agentstoolkit(), tests, docs page. - Later (separate PRs):
crawl/map, deepresearch(long-running — fits the SSE streaming machinery), and optionally anappkit-uiresults component.
Open questions for maintainers
- Packaging — core plugin in
packages/appkit(like genie/serving), or would you prefer third-party integrations in a separate package? This would be the first non-Databricks-service plugin, so happy to follow whatever precedent you want to set. - Beta gating — should it ship via
beta-exportsinitially? - Dependency policy — we'd use the official
@tavily/coreSDK (MIT); fine, or do you prefer plainfetchfor supply-chain reasons?
If this direction sounds good, we'll follow up with the PR.
- Lingua principale
- TypeScript
- Stelle
- 119
- Fork
- 36
- Merge medio
- 4g 16h
- PR unite (30g)
- 37
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di databricks/appkit
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 55/100
databricks/appkit#729 ·
I maintainer di solito rispondono entro 3 giorni
-
@databricks/lakebase: pool drops maxLifetimeSeconds and other pg options, so connections never recycle and Unity Catalog claims access fails after 4 hoursForse già presa @billmcmillin l’ha presa 5 giorni fa. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 20/100
databricks/appkit#718 ·
I maintainer di solito rispondono entro 3 giorni
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
databricks/appkit#699 ·
I maintainer di solito rispondono entro 3 giorni
-
Difficoltà 3/5 Mezza giornata Idoneità per principianti 42/100
databricks/appkit#656 · 1 commento ·
I maintainer di solito rispondono entro 3 giorni
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 28/100
databricks/appkit#648 · 2 commenti ·
I maintainer di solito rispondono entro 3 giorni
Tutte le issue di databricks/appkit
Issue simili
-
Difficoltà 1/5 1-3 ore Idoneità per principianti 83/100
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
jupyterlite/jupyterlite#2111 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 80/100
karlhorky/electron-app-patcher#241 ·
I maintainer di solito rispondono entro 1 giorno
-
Tab bar scrolls past its last tab in Firefox until no tabs are visibleForse già presa @daviwil l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
eclipse-theia/theia#18367 ·
I maintainer di solito rispondono entro 2 giorni
-
Server-side render fails with "requestAnimationFrame is not defined" when the room has a video nodeForse già presa @jesusmpc l’ha presa oggi. Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 79/100
InditexTech/weavejs#1294 ·
I maintainer di solito rispondono entro 1 giorno