Skip to content

Commit 888a095

Browse files
committed
refactor: rename facet to sql_snippet in ContextSet and update version to 0.2.0
1 parent 9690205 commit 888a095

11 files changed

+128
-19
lines changed

gemini-extension.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "mcp-db-context-enrichment",
3-
"version": "0.1.6",
3+
"version": "0.2.0",
44
"contextFileName": "./mcp/GEMINI.md",
55
"mcpServers": {
66
"mcp_db_context_enrichment": {
@@ -9,7 +9,7 @@
99
"tool",
1010
"run",
1111
"--from",
12-
"${extensionPath}${/}mcp${/}dist${/}db_context_enrichment-0.1.6-py3-none-any.whl",
12+
"${extensionPath}${/}mcp${/}dist${/}db_context_enrichment-0.2.0-py3-none-any.whl",
1313
"db-context-enrichment"
1414
]
1515
}

mcp/GEMINI.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,11 +64,11 @@ The `ContextSet` object is a JSON structure that can contain both `templates` an
6464
],
6565
"facets": [
6666
{
67-
"facet": "description LIKE '%luxury%' OR description LIKE '%premium%'",
67+
"sql_snippet": "description LIKE '%luxury%' OR description LIKE '%premium%'",
6868
"intent": "luxury product",
6969
"manifest": "luxury product",
7070
"parameterized": {
71-
"parameterized_facet": "description LIKE '%luxury%' OR description LIKE '%premium%'",
71+
"parameterized_sql_snippet": "description LIKE '%luxury%' OR description LIKE '%premium%'",
7272
"parameterized_intent": "luxury product"
7373
}
7474
}
-15.1 KB
Binary file not shown.
-13.1 KB
Binary file not shown.
15.2 KB
Binary file not shown.
13 KB
Binary file not shown.

mcp/facet/facet_generator.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,11 @@ async def generate_facets_from_pairs(
4949

5050
# 4. Assemble the final facet object
5151
facet = context.Facet(
52-
facet=facet_text,
52+
sql_snippet=facet_text,
5353
intent=intent,
5454
manifest=manifest,
5555
parameterized=context.ParameterizedFacet(
56-
parameterized_facet=parameterized_result["sql"],
56+
parameterized_sql_snippet=parameterized_result["sql"],
5757
parameterized_intent=parameterized_result["intent"],
5858
),
5959
)

mcp/model/context.py

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from pydantic import BaseModel, Field
1+
from pydantic import AliasChoices, BaseModel, Field
22
from typing import List, Optional
33

44

@@ -30,8 +30,12 @@ class Template(BaseModel):
3030
class ParameterizedFacet(BaseModel):
3131
"""Defines the parameterized version of a SQL facet and intent."""
3232

33-
parameterized_facet: str = Field(
34-
..., description="The SQL facet with placeholders (eg., )."
33+
parameterized_sql_snippet: str = Field(
34+
...,
35+
description="The SQL facet with placeholders (eg., ).",
36+
validation_alias=AliasChoices(
37+
"parameterized_sql_snippet", "parameterized_fragment"
38+
),
3539
)
3640
parameterized_intent: str = Field(
3741
..., description="The natural language intent with placeholders."
@@ -41,7 +45,11 @@ class ParameterizedFacet(BaseModel):
4145
class Facet(BaseModel):
4246
"""Represents a single, complete facet."""
4347

44-
facet: str = Field(..., description="The corresponding, complete SQL facet.")
48+
sql_snippet: str = Field(
49+
...,
50+
description="The corresponding, complete SQL facet.",
51+
validation_alias=AliasChoices("sql_snippet", "fragment"),
52+
)
4553
intent: str = Field(..., description="The user's specific intent.")
4654
manifest: str = Field(
4755
..., description="A general description of what the facet does."
@@ -52,6 +60,12 @@ class Facet(BaseModel):
5260
class ContextSet(BaseModel):
5361
"""A set of templates and facets."""
5462

55-
templates: Optional[List[Template]] = Field(None, description="A list of complete templates.")
56-
facets: Optional[List[Facet]] = Field(None, description="A list of SQL facets.")
63+
templates: Optional[List[Template]] = Field(
64+
None, description="A list of complete templates."
65+
)
66+
facets: Optional[List[Facet]] = Field(
67+
None,
68+
description="A list of SQL facets.",
69+
validation_alias=AliasChoices("facets", "fragments"),
70+
)
5771

mcp/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "db-context-enrichment"
3-
version = "0.1.6"
3+
version = "0.2.0"
44
description = "A FastMCP server for generating natural language to SQL templates from database schemas."
55
readme = "README.md"
66
requires-python = ">=3.12"

mcp/tests/facet/facet_generator_test.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,10 @@ async def test_generate_facets_from_pairs_simple():
3131
assert result_context_set.facets is not None
3232
assert len(result_context_set.facets) == 1
3333
facet = result_context_set.facets[0]
34-
assert facet.facet == "city = 'New York'"
34+
assert facet.sql_snippet == "city = 'New York'"
3535
assert facet.intent == "Find users in New York"
3636
assert facet.manifest == "Find users in a given city"
37-
assert facet.parameterized.parameterized_facet == "city = $1"
37+
assert facet.parameterized.parameterized_sql_snippet == "city = $1"
3838
assert facet.parameterized.parameterized_intent == "Find users in $1"
3939

4040
mock_extract_value_phrases.assert_called_once_with(
@@ -74,13 +74,13 @@ async def test_generate_facets_from_pairs_multiple_phrases():
7474
assert result_context_set.facets is not None
7575
assert len(result_context_set.facets) == 1
7676
facet = result_context_set.facets[0]
77-
assert facet.facet == "name = 'John Doe' AND city = 'New York'"
77+
assert facet.sql_snippet == "name = 'John Doe' AND city = 'New York'"
7878
assert facet.intent == "Find users named John Doe in New York"
7979
assert (
8080
facet.manifest == "Find users named a given person in a given city"
8181
)
8282
assert (
83-
facet.parameterized.parameterized_facet
83+
facet.parameterized.parameterized_sql_snippet
8484
== "name = $1 AND city = $2"
8585
)
8686
assert (
@@ -120,10 +120,10 @@ async def test_generate_facets_from_pairs_empty_phrases():
120120
assert result_context_set.facets is not None
121121
assert len(result_context_set.facets) == 1
122122
facet = result_context_set.facets[0]
123-
assert facet.facet == "TRUE"
123+
assert facet.sql_snippet == "TRUE"
124124
assert facet.intent == "List all users"
125125
assert facet.manifest == "List all users"
126-
assert facet.parameterized.parameterized_facet == "TRUE"
126+
assert facet.parameterized.parameterized_sql_snippet == "TRUE"
127127
assert facet.parameterized.parameterized_intent == "List all users"
128128

129129
mock_extract_value_phrases.assert_called_once_with(

0 commit comments

Comments
 (0)