Merge branch 'backend-temp' into redesigning-block-menu

This commit is contained in:
Abhimanyu Yadav
2025-06-03 10:22:01 +05:30
5 changed files with 21 additions and 25 deletions

View File

@@ -5,6 +5,7 @@ import prisma
import backend.server.model as server_model
from backend.blocks import load_all_blocks
from backend.blocks.llm import LlmModel
from backend.data.block import Block, BlockCategory, BlockSchema
from backend.data.credit import get_block_costs
from backend.integrations.providers import ProviderName
@@ -19,6 +20,9 @@ from backend.server.v2.builder.model import (
)
logger = logging.getLogger(__name__)
llm_models = [
name.name.lower().replace("_", " ") for name in LlmModel
]
_static_counts_cache: dict | None = None
@@ -142,7 +146,11 @@ def search_blocks(
if block.disabled:
continue
# Skip blocks that don't match the query
if query not in block.name.lower() or query not in block.description.lower():
if (
query not in block.name.lower()
and query not in block.description.lower()
and not _matches_llm_model(block.input_schema, query)
):
continue
keep = False
credentials = list(block.input_schema.get_credentials_fields().values())
@@ -283,6 +291,15 @@ async def _get_static_counts():
return _static_counts_cache
def _matches_llm_model(schema_cls: type[BlockSchema], query: str) -> bool:
for field in schema_cls.model_fields.values():
if field.annotation == LlmModel:
# Check if query matches any value in llm_models
if any(query in name for name in llm_models):
return True
return False
@functools.cache
def _get_all_providers() -> dict[ProviderName, Provider]:
providers: dict[ProviderName, Provider] = {}

View File

@@ -10,7 +10,6 @@ from backend.integrations.providers import ProviderName
FilterType = Literal[
"blocks",
"integrations",
"providers",
"marketplace_agents",
"my_agents",
]
@@ -72,9 +71,7 @@ class SearchBlocksResponse(BaseModel):
class SearchResponse(BaseModel):
items: list[
BlockData | Provider | library_model.LibraryAgent | store_model.StoreAgent
]
items: list[BlockData | library_model.LibraryAgent | store_model.StoreAgent]
total_items: dict[FilterType, int]
page: int
more_pages: bool

View File

@@ -126,7 +126,6 @@ async def search(
options.filter = [
"blocks",
"integrations",
"providers",
"marketplace_agents",
"my_agents",
]
@@ -152,18 +151,6 @@ async def search(
page_size=options.page_size,
)
# Providers
providers = builder_model.ProviderResponse(
providers=[],
pagination=server_model.Pagination.empty(),
)
if "providers" in options.filter:
providers = builder_db.get_providers(
query=options.search_query or "",
page=options.page,
page_size=options.page_size,
)
# Library Agents
my_agents = library_model.LibraryAgentResponse(
agents=[],
@@ -204,10 +191,7 @@ async def search(
# todo kcze sort results
return builder_model.SearchResponse(
items=blocks.blocks.blocks
+ providers.providers
+ my_agents.agents
+ marketplace_agents.agents,
items=blocks.blocks.blocks + my_agents.agents + marketplace_agents.agents,
total_items={
"blocks": blocks.total_block_count,
"integrations": blocks.total_integration_count,

View File

@@ -239,7 +239,6 @@ export default class BackendAPI {
filter?: (
| "blocks"
| "integrations"
| "providers"
| "marketplace_agents"
| "my_agents"
)[];

View File

@@ -72,11 +72,10 @@ export type ProviderResponse = {
/* Mirror of backend/server/v2/builder/model.py:BlockSearchResponse */
export type BlockSearchResponse = {
items: (Block | Provider | LibraryAgent | StoreAgent)[];
items: (Block | LibraryAgent | StoreAgent)[];
total_items: Record<
| "blocks"
| "integrations"
| "providers"
| "marketplace_agents"
| "my_agents",
number