You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hudi.apache.org by vh...@apache.org on 2026/09/16 14:15:06 UTC
(hudi) 01/02: chore: remove stray hudi-agent-gateway egg-info files
This is an automated email from the ASF dual-hosted git repository.
voonhous pushed a commit to branch release-1.2.1
in repository https://gitbox.apache.org/repos/asf/hudi.git
commit 6e82422611f2ef300a8d7824f8e21c999f388f6a
Author: voon <vo...@gmail.com>
AuthorDate: Wed Sep 16 22:09:40 2026 +0800
chore: remove stray hudi-agent-gateway egg-info files
The #18837 cherry-pick (74d1097335d4) also committed
hudi-agent-gateway/src/hudi_agent_gateway.egg-info, the build output of
a local pip install. It is not in #18837 on master and is the only
content of hudi-agent-gateway on this branch. The source release check
rejects dependency_links.txt as a binary file.
---
.../src/hudi_agent_gateway.egg-info/PKG-INFO | 163 ---------------------
.../src/hudi_agent_gateway.egg-info/SOURCES.txt | 43 ------
.../dependency_links.txt | 1 -
.../hudi_agent_gateway.egg-info/entry_points.txt | 2 -
.../src/hudi_agent_gateway.egg-info/requires.txt | 20 ---
.../src/hudi_agent_gateway.egg-info/top_level.txt | 1 -
6 files changed, 230 deletions(-)
diff --git a/hudi-agent-gateway/src/hudi_agent_gateway.egg-info/PKG-INFO b/hudi-agent-gateway/src/hudi_agent_gateway.egg-info/PKG-INFO
deleted file mode 100644
index e55cb3aedd60..000000000000
--- a/hudi-agent-gateway/src/hudi_agent_gateway.egg-info/PKG-INFO
+++ /dev/null
@@ -1,163 +0,0 @@
-Metadata-Version: 2.4
-Name: hudi-agent-gateway
-Version: 0.1.0
-Summary: The Apache Hudi AI gateway: agent loop, MCP server, and chat UI over lakehouse tools
-License-Expression: Apache-2.0
-Project-URL: Homepage, https://hudi.apache.org
-Project-URL: Source, https://github.com/apache/hudi
-Requires-Python: >=3.11
-Description-Content-Type: text/markdown
-Requires-Dist: fastapi>=0.115
-Requires-Dist: uvicorn[standard]>=0.30
-Requires-Dist: langgraph<2,>=1.0
-Requires-Dist: langchain-core<2,>=1.0
-Requires-Dist: langchain-anthropic>=1.0
-Requires-Dist: langchain-openai>=1.0
-Requires-Dist: langchain-ollama>=1.0
-Requires-Dist: fastmcp<3,>=2.10
-Requires-Dist: trino>=0.330
-Requires-Dist: sqlglot>=25.0
-Requires-Dist: pydantic>=2.7
-Requires-Dist: pydantic-settings>=2.3
-Requires-Dist: sse-starlette>=2.1
-Requires-Dist: httpx>=0.27
-Provides-Extra: dev
-Requires-Dist: pytest>=8.0; extra == "dev"
-Requires-Dist: pytest-asyncio>=0.24; extra == "dev"
-Requires-Dist: ruff>=0.6; extra == "dev"
-Requires-Dist: mypy>=1.11; extra == "dev"
-
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-# hudi-agent-gateway
-
-**One deployable service that serves your Hudi lakehouse to AI.** A single
-process hosts three surfaces over the same set of guarded lakehouse tools:
-
-| Surface | Where | What |
-|---|---|---|
-| Agent chat API | `POST /v1/chat` | prompt in → LangGraph agent loop (model ↔ tools) → grounded answer out; multi-turn sessions; optional SSE streaming |
-| MCP server | `/mcp` (streamable HTTP) | external agents (Claude, anything MCP) call the lakehouse tools directly |
-| Chat UI | `/ui/` | first-party ChatGPT-style web UI (zero third-party code) |
-
-The v1 tools query the lakehouse through Trino: `query_lakehouse` (guarded,
-read-only SQL), `list_tables`, `describe_table`. Every model-written query
-passes AST-level guardrails (single statement, SELECT-only, row cap injected
-as a real `LIMIT`) and every invocation is logged as structured JSON — the
-seed of the gateway's trace collection.
-
-## Quickstart (local process)
-
-```bash
-cd hudi-agent-gateway
-python3.12 -m venv .venv && .venv/bin/pip install -e ".[dev]"
-
-# point at a Trino with the Hudi connector (e.g. the local-dev stack, port-forwarded):
-GATEWAY_TRINO_HOST=localhost GATEWAY_TRINO_PORT=18080 \
-GATEWAY_LLM_PROVIDER=anthropic GATEWAY_LLM_MODEL=claude-haiku-4-5-20251001 \
- .venv/bin/hudi-agent-gateway serve
-
-curl -X POST localhost:8000/v1/chat -H 'Content-Type: application/json' \
- -d '{"message": "How many trips per city?", "session_id": "s1"}'
-open http://localhost:8000/ui/
-```
-
-`GET /v1/models` lists the models the configured provider offers (live:
-Anthropic and OpenAI model APIs, Ollama's local tags, vLLM's served models),
-and `POST /v1/chat` accepts an optional `"model"` to pick one per request —
-the chat UI exposes this as a model picker. Sessions survive model switches.
-
-For a fully local model, install [Ollama](https://ollama.com), pull a
-tool-capable model, and use the default provider:
-
-```bash
-ollama pull qwen3:8b
-GATEWAY_LLM_PROVIDER=ollama GATEWAY_LLM_MODEL=qwen3:8b hudi-agent-gateway serve
-```
-
-Connect an MCP client:
-
-```bash
-claude mcp add --transport http hudi-lakehouse http://localhost:8000/mcp/
-```
-
-## Deploying on Kubernetes
-
-See `hudi-lakehouse/charts/hudi-agent-gateway` — the product Helm chart —
-and `hudi-lakehouse/local-dev/` for a complete laptop environment
-(MinIO + Hive Metastore + Trino + this gateway) where the gateway is
-installed alongside Trino by default.
-
-## Configuration
-
-Environment variables (prefix `GATEWAY_` except the standard key names):
-
-| Variable | Default | Purpose |
-|---|---|---|
-| `GATEWAY_LLM_PROVIDER` | `ollama` | `anthropic` \| `openai` \| `ollama` \| `openai-compatible` |
-| `GATEWAY_LLM_MODEL` | `qwen3:8b` | model name for the provider |
-| `ANTHROPIC_API_KEY` / `OPENAI_API_KEY` | — | required by the matching provider |
-| `GATEWAY_OLLAMA_BASE_URL` | `http://localhost:11434` | Ollama endpoint |
-| `GATEWAY_OPENAI_BASE_URL` | — | endpoint for `openai-compatible` (vLLM, Together, …) |
-| `GATEWAY_LLM_TIMEOUT_SECONDS` | `120` | per-model-call timeout |
-| `GATEWAY_TRINO_HOST` / `_PORT` | `hudi-trino.hudi-lakehouse.svc` / `8080` | Trino coordinator |
-| `GATEWAY_TRINO_CATALOG` / `_SCHEMA` / `_USER` | `hudi` / `default` / `hudi-agent-gateway` | query defaults |
-| `GATEWAY_SQL_ROW_CAP` | `200` | LIMIT enforced on every query |
-| `GATEWAY_SQL_TIMEOUT_SECONDS` | `120` | per-query timeout |
-| `GATEWAY_TOOL_RESULT_MAX_BYTES` | `50000` | tool results truncated beyond this (with notice) |
-| `GATEWAY_AGENT_MAX_ITERATIONS` | `25` | agent loop recursion limit |
-| `GATEWAY_SESSION_TTL_SECONDS` / `GATEWAY_MAX_SESSIONS` | `3600` / `1000` | session store bounds |
-| `GATEWAY_MAX_MESSAGES_PER_SESSION` | `40` | context window per session (trimmed pre-model) |
-| `GATEWAY_SYSTEM_PROMPT_EXTRA` | — | appended to the built-in system prompt |
-| `GATEWAY_MCP_ENABLED` | `true` | serve /mcp |
-| `GATEWAY_HOST` / `GATEWAY_PORT` / `GATEWAY_LOG_LEVEL` | `0.0.0.0` / `8000` / `INFO` | server basics |
-
-Startup never depends on the LLM or Trino being reachable: `/health` is
-liveness, `/ready` reports per-dependency status (and gates the Kubernetes
-readiness probe).
-
-## Development
-
-```bash
-.venv/bin/pytest # offline suite (fake Trino + scripted model)
-.venv/bin/ruff check src tests
-.venv/bin/mypy src
-
-# live integration (against a port-forwarded local-dev stack):
-GATEWAY_IT_TRINO_HOST=localhost GATEWAY_IT_TRINO_PORT=18080 .venv/bin/pytest tests/integration
-```
-
-Adding a tool: write a module under `src/hudi_agent_gateway/tools/` with a
-`register(registry, ...)` function and call it from
-`tools/__init__.py:build_registry`. One registration exposes it to the agent
-loop, the MCP server, `GET /v1/tools`, and the invocation log.
-
-## Design notes & limits (v1)
-
-- **No authentication in v1**: `/v1/chat`, `/mcp` and the other endpoints are
- open to anyone who can reach the pod (and `GATEWAY_HOST` defaults to
- `0.0.0.0`). Deploy behind an authenticating proxy or on a trusted network.
-- **Single replica**: sessions live in an in-memory LangGraph checkpointer.
- The seam for horizontal scale is swapping in
- `langgraph-checkpoint-postgres` inside `sessions.py`.
-- **Read-only by construction**: non-SELECT statements are rejected at the
- AST level (sqlglot, fail-closed); `EXPLAIN` is also blocked in v1.
-- The chat UI is deliberately first-party and dependency-free (no CDN, no
- npm) so the whole service works air-gapped and stays license-clean. The
- one remote reference is the Hudi logo image, hotlinked from
- hudi.apache.org; offline it degrades to alt text.
diff --git a/hudi-agent-gateway/src/hudi_agent_gateway.egg-info/SOURCES.txt b/hudi-agent-gateway/src/hudi_agent_gateway.egg-info/SOURCES.txt
deleted file mode 100644
index df0fb57efdff..000000000000
--- a/hudi-agent-gateway/src/hudi_agent_gateway.egg-info/SOURCES.txt
+++ /dev/null
@@ -1,43 +0,0 @@
-README.md
-pyproject.toml
-src/hudi_agent_gateway/__init__.py
-src/hudi_agent_gateway/__main__.py
-src/hudi_agent_gateway/agent.py
-src/hudi_agent_gateway/app.py
-src/hudi_agent_gateway/cli.py
-src/hudi_agent_gateway/config.py
-src/hudi_agent_gateway/llm.py
-src/hudi_agent_gateway/log.py
-src/hudi_agent_gateway/mcp_server.py
-src/hudi_agent_gateway/py.typed
-src/hudi_agent_gateway/sessions.py
-src/hudi_agent_gateway.egg-info/PKG-INFO
-src/hudi_agent_gateway.egg-info/SOURCES.txt
-src/hudi_agent_gateway.egg-info/dependency_links.txt
-src/hudi_agent_gateway.egg-info/entry_points.txt
-src/hudi_agent_gateway.egg-info/requires.txt
-src/hudi_agent_gateway.egg-info/top_level.txt
-src/hudi_agent_gateway/api/__init__.py
-src/hudi_agent_gateway/api/chat.py
-src/hudi_agent_gateway/api/meta.py
-src/hudi_agent_gateway/api/models.py
-src/hudi_agent_gateway/tools/__init__.py
-src/hudi_agent_gateway/tools/guardrails.py
-src/hudi_agent_gateway/tools/registry.py
-src/hudi_agent_gateway/tools/trino_client.py
-src/hudi_agent_gateway/tools/trino_tools.py
-src/hudi_agent_gateway/ui/app.js
-src/hudi_agent_gateway/ui/index.html
-src/hudi_agent_gateway/ui/markdown.js
-src/hudi_agent_gateway/ui/style.css
-tests/test_agent_loop.py
-tests/test_api_meta.py
-tests/test_chat_sse.py
-tests/test_config.py
-tests/test_guardrails.py
-tests/test_llm.py
-tests/test_mcp.py
-tests/test_registry.py
-tests/test_sessions.py
-tests/test_trino_tools.py
-tests/test_ui.py
\ No newline at end of file
diff --git a/hudi-agent-gateway/src/hudi_agent_gateway.egg-info/dependency_links.txt b/hudi-agent-gateway/src/hudi_agent_gateway.egg-info/dependency_links.txt
deleted file mode 100644
index 8b137891791f..000000000000
--- a/hudi-agent-gateway/src/hudi_agent_gateway.egg-info/dependency_links.txt
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/hudi-agent-gateway/src/hudi_agent_gateway.egg-info/entry_points.txt b/hudi-agent-gateway/src/hudi_agent_gateway.egg-info/entry_points.txt
deleted file mode 100644
index 84a249ac48f4..000000000000
--- a/hudi-agent-gateway/src/hudi_agent_gateway.egg-info/entry_points.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-[console_scripts]
-hudi-agent-gateway = hudi_agent_gateway.cli:main
diff --git a/hudi-agent-gateway/src/hudi_agent_gateway.egg-info/requires.txt b/hudi-agent-gateway/src/hudi_agent_gateway.egg-info/requires.txt
deleted file mode 100644
index 8a2b84a1f23c..000000000000
--- a/hudi-agent-gateway/src/hudi_agent_gateway.egg-info/requires.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-fastapi>=0.115
-uvicorn[standard]>=0.30
-langgraph<2,>=1.0
-langchain-core<2,>=1.0
-langchain-anthropic>=1.0
-langchain-openai>=1.0
-langchain-ollama>=1.0
-fastmcp<3,>=2.10
-trino>=0.330
-sqlglot>=25.0
-pydantic>=2.7
-pydantic-settings>=2.3
-sse-starlette>=2.1
-httpx>=0.27
-
-[dev]
-pytest>=8.0
-pytest-asyncio>=0.24
-ruff>=0.6
-mypy>=1.11
diff --git a/hudi-agent-gateway/src/hudi_agent_gateway.egg-info/top_level.txt b/hudi-agent-gateway/src/hudi_agent_gateway.egg-info/top_level.txt
deleted file mode 100644
index a739e485153b..000000000000
--- a/hudi-agent-gateway/src/hudi_agent_gateway.egg-info/top_level.txt
+++ /dev/null
@@ -1 +0,0 @@
-hudi_agent_gateway