mishrabp commited on
Commit
bb2368f
·
verified ·
1 Parent(s): d29ac73

Upload folder using huggingface_hub

Browse files
common/aagents/google_agent.py CHANGED
@@ -2,9 +2,9 @@
2
  import os
3
  from agents import Agent, OpenAIChatCompletionsModel
4
  from dotenv import load_dotenv
5
- from mcp.tools.google_tools import google_search, google_search_recent
6
- from mcp.tools.search_tools import duckduckgo_search, fetch_page_content
7
- from mcp.tools.time_tools import current_datetime
8
  from openai import AsyncOpenAI
9
 
10
  # ---------------------------------------------------------
 
2
  import os
3
  from agents import Agent, OpenAIChatCompletionsModel
4
  from dotenv import load_dotenv
5
+ from common.mcp.tools.google_tools import google_search, google_search_recent
6
+ from common.mcp.tools.search_tools import duckduckgo_search, fetch_page_content
7
+ from common.mcp.tools.time_tools import current_datetime
8
  from openai import AsyncOpenAI
9
 
10
  # ---------------------------------------------------------
common/aagents/healthcare_agent.py CHANGED
@@ -5,9 +5,9 @@ from dotenv import load_dotenv
5
  from openai import AsyncOpenAI
6
 
7
  # Import tools
8
- from mcp.tools.rag_tool import rag_search, UserContext
9
- from mcp.tools.search_tools import duckduckgo_search, fetch_page_content
10
- from mcp.tools.time_tools import current_datetime
11
 
12
 
13
  # ---------------------------------------------------------
 
5
  from openai import AsyncOpenAI
6
 
7
  # Import tools
8
+ from common.mcp.tools.rag_tool import rag_search, UserContext
9
+ from common.mcp.tools.search_tools import duckduckgo_search, fetch_page_content
10
+ from common.mcp.tools.time_tools import current_datetime
11
 
12
 
13
  # ---------------------------------------------------------
common/aagents/news_agent.py CHANGED
@@ -2,8 +2,8 @@
2
  import os
3
  from agents import Agent, OpenAIChatCompletionsModel
4
  from dotenv import load_dotenv
5
- from mcp.tools.news_tools import get_top_headlines, search_news, get_news_by_category
6
- from mcp.tools.time_tools import current_datetime
7
  from openai import AsyncOpenAI
8
 
9
  # ---------------------------------------------------------
 
2
  import os
3
  from agents import Agent, OpenAIChatCompletionsModel
4
  from dotenv import load_dotenv
5
+ from common.mcp.tools.news_tools import get_top_headlines, search_news, get_news_by_category
6
+ from common.mcp.tools.time_tools import current_datetime
7
  from openai import AsyncOpenAI
8
 
9
  # ---------------------------------------------------------
common/aagents/search_agent.py CHANGED
@@ -3,8 +3,8 @@ import os
3
  from agents import Agent, OpenAIChatCompletionsModel
4
  from openai import AsyncOpenAI
5
  from dotenv import load_dotenv
6
- from mcp.tools.search_tools import duckduckgo_search, fetch_page_content
7
- from mcp.tools.time_tools import current_datetime
8
 
9
  # ---------------------------------------------------------
10
  # Load environment variables
 
3
  from agents import Agent, OpenAIChatCompletionsModel
4
  from openai import AsyncOpenAI
5
  from dotenv import load_dotenv
6
+ from common.mcp.tools.search_tools import duckduckgo_search, fetch_page_content
7
+ from common.mcp.tools.time_tools import current_datetime
8
 
9
  # ---------------------------------------------------------
10
  # Load environment variables
common/aagents/weather_agent.py CHANGED
@@ -3,8 +3,8 @@ import os
3
  from agents import Agent
4
  from dotenv import load_dotenv
5
  from pydantic import BaseModel, Field
6
- from mcp.tools.weather_tools import get_weather_forecast, search_weather_fallback_ddgs, search_weather_fallback_bs
7
- from mcp.tools.time_tools import current_datetime
8
  from agents import Agent, OpenAIChatCompletionsModel
9
  from openai import AsyncOpenAI
10
 
 
3
  from agents import Agent
4
  from dotenv import load_dotenv
5
  from pydantic import BaseModel, Field
6
+ from common.mcp.tools.weather_tools import get_weather_forecast, search_weather_fallback_ddgs, search_weather_fallback_bs
7
+ from common.mcp.tools.time_tools import current_datetime
8
  from agents import Agent, OpenAIChatCompletionsModel
9
  from openai import AsyncOpenAI
10
 
common/aagents/web_agent.py CHANGED
@@ -3,7 +3,7 @@ import os
3
  from agents import AgentOutputSchema, function_tool, Agent
4
  from dotenv import load_dotenv
5
  from pydantic import BaseModel, Field
6
- from mcp.tools.search_tools import duckduckgo_search, searchQuery, searchResult
7
  from agents import Agent, OpenAIChatCompletionsModel
8
  from openai import AsyncOpenAI
9
 
 
3
  from agents import AgentOutputSchema, function_tool, Agent
4
  from dotenv import load_dotenv
5
  from pydantic import BaseModel, Field
6
+ from common.mcp.tools.search_tools import duckduckgo_search, searchQuery, searchResult
7
  from agents import Agent, OpenAIChatCompletionsModel
8
  from openai import AsyncOpenAI
9
 
common/aagents/web_research_agent.py CHANGED
@@ -3,7 +3,7 @@ import os
3
  from agents import AgentOutputSchema, function_tool, Agent
4
  from dotenv import load_dotenv
5
  from pydantic import BaseModel, Field
6
- from mcp.tools.search_tools import duckduckgo_search, searchQuery, searchResult, fetch_page_content
7
  from agents import Agent, OpenAIChatCompletionsModel
8
  from openai import AsyncOpenAI
9
 
 
3
  from agents import AgentOutputSchema, function_tool, Agent
4
  from dotenv import load_dotenv
5
  from pydantic import BaseModel, Field
6
+ from common.mcp.tools.search_tools import duckduckgo_search, searchQuery, searchResult, fetch_page_content
7
  from agents import Agent, OpenAIChatCompletionsModel
8
  from openai import AsyncOpenAI
9
 
common/aagents/yf_agent.py CHANGED
@@ -2,8 +2,8 @@
2
  import os
3
  from agents import Agent, OpenAIChatCompletionsModel
4
  from dotenv import load_dotenv
5
- from mcp.tools.yf_tools import get_summary, get_market_sentiment, get_history, get_analyst_recommendations, get_earnings_calendar
6
- from mcp.tools.time_tools import current_datetime
7
  from openai import AsyncOpenAI
8
 
9
  # ---------------------------------------------------------
 
2
  import os
3
  from agents import Agent, OpenAIChatCompletionsModel
4
  from dotenv import load_dotenv
5
+ from common.mcp.tools.yf_tools import get_summary, get_market_sentiment, get_history, get_analyst_recommendations, get_earnings_calendar
6
+ from common.mcp.tools.time_tools import current_datetime
7
  from openai import AsyncOpenAI
8
 
9
  # ---------------------------------------------------------
common/mcp/tools/search_tools.py CHANGED
@@ -1,8 +1,8 @@
 
1
  from ddgs import DDGS
2
  from agents import function_tool
3
  from dotenv import load_dotenv
4
  from pydantic import BaseModel, Field
5
- import requests
6
  from bs4 import BeautifulSoup
7
  from typing import Optional
8
 
 
1
+ import requests
2
  from ddgs import DDGS
3
  from agents import function_tool
4
  from dotenv import load_dotenv
5
  from pydantic import BaseModel, Field
 
6
  from bs4 import BeautifulSoup
7
  from typing import Optional
8
 
pyproject.toml CHANGED
@@ -65,7 +65,7 @@ dependencies = [
65
  "httpx>=0.28.1",
66
  "speedtest-cli>=2.1.3",
67
  "logfire",
68
- "serpapi",
69
  "smithery>=0.4.4",
70
  "sendgrid",
71
 
@@ -125,26 +125,30 @@ dev = [
125
  # ============================================================
126
  # BUILD SYSTEM
127
  # ============================================================
 
 
128
  [build-system]
129
  requires = ["setuptools>=80.9.0"]
130
  build-backend = "setuptools.build_meta"
131
 
132
  # ============================================================
133
- # CORRECT: TELL SETUPTOOLS YOUR CODE LIVES IN src/
134
  # ============================================================
135
- [tool.setuptools]
136
- package-dir = {"" = "src"}
137
-
138
- # ensures src and common become importable
139
  [tool.setuptools.packages.find]
140
- where = ["src", "common"]
141
-
142
 
143
 
144
  # ============================================================
145
  # PYTEST SETTINGS
146
  # ============================================================
 
147
  [tool.pytest.ini_options]
 
 
 
148
  pythonpath = ["src", "common"]
149
- testpaths = ["tests"]
150
- addopts = "-q"
 
65
  "httpx>=0.28.1",
66
  "speedtest-cli>=2.1.3",
67
  "logfire",
68
+ "google-search-results",
69
  "smithery>=0.4.4",
70
  "sendgrid",
71
 
 
125
  # ============================================================
126
  # BUILD SYSTEM
127
  # ============================================================
128
+ # Defines how to build the project.
129
+ # We use setuptools as the build backend, ensuring consistent packaging.
130
  [build-system]
131
  requires = ["setuptools>=80.9.0"]
132
  build-backend = "setuptools.build_meta"
133
 
134
  # ============================================================
135
+ # PACKAGING & DISCOVERY
136
  # ============================================================
137
+ # Tells setuptools where to find the source code.
138
+ # This makes 'common' and 'src' importable when installed (pip install -e .).
 
 
139
  [tool.setuptools.packages.find]
140
+ where = ["."] # Look in the project root
141
+ include = ["common*", "src*"] # Treat 'common' and 'src' folders as packages
142
 
143
 
144
  # ============================================================
145
  # PYTEST SETTINGS
146
  # ============================================================
147
+ # Configures the test runner to automatically find code.
148
  [tool.pytest.ini_options]
149
+ # Adds 'src' and 'common' to the python path during tests.
150
+ # This allows tests to import modules (e.g., 'import travel_agent')
151
+ # just like the apps do locally, preventing ModuleNotFoundError.
152
  pythonpath = ["src", "common"]
153
+ testpaths = ["tests"] # Only look for tests in the 'tests' directory
154
+ addopts = "-q" # Run in quiet mode (less verbose output)
run.py CHANGED
@@ -144,10 +144,15 @@ def launch_app(app_name: str, port: Optional[int] = None):
144
  print("\n" + "=" * 70)
145
  print("\n🎯 Starting application...\n")
146
 
 
 
 
 
 
147
  try:
148
  # Change to app directory and run
149
  os.chdir(app_dir)
150
- subprocess.run(cmd)
151
  except KeyboardInterrupt:
152
  print("\n\n👋 Application stopped by user")
153
  except FileNotFoundError:
 
144
  print("\n" + "=" * 70)
145
  print("\n🎯 Starting application...\n")
146
 
147
+ # Prepare environment with project root in PYTHONPATH to fix imports
148
+ env = os.environ.copy()
149
+ env["PYTHONPATH"] = str(project_root) + os.pathsep + env.get("PYTHONPATH", "")
150
+ print(f"\n\nPYTHONPATH: {env['PYTHONPATH']}")
151
+
152
  try:
153
  # Change to app directory and run
154
  os.chdir(app_dir)
155
+ subprocess.run(cmd, env=env)
156
  except KeyboardInterrupt:
157
  print("\n\n👋 Application stopped by user")
158
  except FileNotFoundError:
src/chatbot/app.py CHANGED
@@ -1,16 +1,8 @@
1
- import streamlit as st
2
  import os
3
  import glob
4
- import asyncio
5
- import sys
6
  import uuid
7
- from pathlib import Path
8
- # Add project root
9
- # sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), ".")))
10
- # Add common directory to path for imports
11
- project_root = Path(__file__).resolve().parent.parent.parent
12
- sys.path.insert(0, str(project_root))
13
-
14
  from aagents.orchestrator_agent import orchestrator_agent
15
  from agents import Runner, trace, SQLiteSession
16
  from agents.exceptions import InputGuardrailTripwireTriggered
 
 
1
  import os
2
  import glob
 
 
3
  import uuid
4
+ import asyncio
5
+ import streamlit as st
 
 
 
 
 
6
  from aagents.orchestrator_agent import orchestrator_agent
7
  from agents import Runner, trace, SQLiteSession
8
  from agents.exceptions import InputGuardrailTripwireTriggered
uv.lock CHANGED
@@ -18,6 +18,7 @@ dependencies = [
18
  { name = "ddgs" },
19
  { name = "duckduckgo-search" },
20
  { name = "faiss-cpu" },
 
21
  { name = "html2text" },
22
  { name = "httpx" },
23
  { name = "huggingface-hub" },
@@ -55,7 +56,6 @@ dependencies = [
55
  { name = "scikit-learn" },
56
  { name = "sendgrid" },
57
  { name = "sentence-transformers" },
58
- { name = "serpapi" },
59
  { name = "smithery" },
60
  { name = "speedtest-cli" },
61
  { name = "streamlit" },
@@ -85,6 +85,7 @@ requires-dist = [
85
  { name = "ddgs", specifier = ">=9.9.2" },
86
  { name = "duckduckgo-search" },
87
  { name = "faiss-cpu", specifier = ">=1.13.0" },
 
88
  { name = "html2text", specifier = ">=2025.4.15" },
89
  { name = "httpx", specifier = ">=0.28.1" },
90
  { name = "huggingface-hub", specifier = "<=1.1.4" },
@@ -122,7 +123,6 @@ requires-dist = [
122
  { name = "scikit-learn", specifier = ">=1.7.2" },
123
  { name = "sendgrid" },
124
  { name = "sentence-transformers", specifier = ">=5.1.2" },
125
- { name = "serpapi" },
126
  { name = "smithery", specifier = ">=0.4.4" },
127
  { name = "speedtest-cli", specifier = ">=2.1.3" },
128
  { name = "streamlit", specifier = ">=1.51.0" },
@@ -1036,6 +1036,15 @@ wheels = [
1036
  { url = "https://files.pythonhosted.org/packages/6f/d1/385110a9ae86d91cc14c5282c61fe9f4dc41c0b9f7d423c6ad77038c4448/google_auth-2.43.0-py2.py3-none-any.whl", hash = "sha256:af628ba6fa493f75c7e9dbe9373d148ca9f4399b5ea29976519e0a3848eddd16", size = 223114, upload-time = "2025-11-06T00:13:35.209Z" },
1037
  ]
1038
 
 
 
 
 
 
 
 
 
 
1039
  [[package]]
1040
  name = "googleapis-common-protos"
1041
  version = "1.72.0"
@@ -3465,18 +3474,6 @@ wheels = [
3465
  { url = "https://files.pythonhosted.org/packages/bb/a6/a607a737dc1a00b7afe267b9bfde101b8cee2529e197e57471d23137d4e5/sentence_transformers-5.1.2-py3-none-any.whl", hash = "sha256:724ce0ea62200f413f1a5059712aff66495bc4e815a1493f7f9bca242414c333", size = 488009, upload-time = "2025-10-22T12:47:53.433Z" },
3466
  ]
3467
 
3468
- [[package]]
3469
- name = "serpapi"
3470
- version = "0.1.5"
3471
- source = { registry = "https://pypi.org/simple" }
3472
- dependencies = [
3473
- { name = "requests" },
3474
- ]
3475
- sdist = { url = "https://files.pythonhosted.org/packages/f0/fa/3fd8809287f3977a3e752bb88610e918d49cb1038b14f4bc51e13e594197/serpapi-0.1.5.tar.gz", hash = "sha256:b9707ed54750fdd2f62dc3a17c6a3fb7fa421dc37902fd65b2263c0ac765a1a5", size = 14191, upload-time = "2023-11-01T14:00:43.602Z" }
3476
- wheels = [
3477
- { url = "https://files.pythonhosted.org/packages/df/6a/21deade04100d64844e494353a5d65e7971fbdfddf78eb1f248423593ad0/serpapi-0.1.5-py2.py3-none-any.whl", hash = "sha256:6467b6adec1231059f754ccaa952b229efeaa8b9cae6e71f879703ec9e5bb3d1", size = 10966, upload-time = "2023-11-01T14:00:38.885Z" },
3478
- ]
3479
-
3480
  [[package]]
3481
  name = "setuptools"
3482
  version = "80.9.0"
 
18
  { name = "ddgs" },
19
  { name = "duckduckgo-search" },
20
  { name = "faiss-cpu" },
21
+ { name = "google-search-results" },
22
  { name = "html2text" },
23
  { name = "httpx" },
24
  { name = "huggingface-hub" },
 
56
  { name = "scikit-learn" },
57
  { name = "sendgrid" },
58
  { name = "sentence-transformers" },
 
59
  { name = "smithery" },
60
  { name = "speedtest-cli" },
61
  { name = "streamlit" },
 
85
  { name = "ddgs", specifier = ">=9.9.2" },
86
  { name = "duckduckgo-search" },
87
  { name = "faiss-cpu", specifier = ">=1.13.0" },
88
+ { name = "google-search-results" },
89
  { name = "html2text", specifier = ">=2025.4.15" },
90
  { name = "httpx", specifier = ">=0.28.1" },
91
  { name = "huggingface-hub", specifier = "<=1.1.4" },
 
123
  { name = "scikit-learn", specifier = ">=1.7.2" },
124
  { name = "sendgrid" },
125
  { name = "sentence-transformers", specifier = ">=5.1.2" },
 
126
  { name = "smithery", specifier = ">=0.4.4" },
127
  { name = "speedtest-cli", specifier = ">=2.1.3" },
128
  { name = "streamlit", specifier = ">=1.51.0" },
 
1036
  { url = "https://files.pythonhosted.org/packages/6f/d1/385110a9ae86d91cc14c5282c61fe9f4dc41c0b9f7d423c6ad77038c4448/google_auth-2.43.0-py2.py3-none-any.whl", hash = "sha256:af628ba6fa493f75c7e9dbe9373d148ca9f4399b5ea29976519e0a3848eddd16", size = 223114, upload-time = "2025-11-06T00:13:35.209Z" },
1037
  ]
1038
 
1039
+ [[package]]
1040
+ name = "google-search-results"
1041
+ version = "2.4.2"
1042
+ source = { registry = "https://pypi.org/simple" }
1043
+ dependencies = [
1044
+ { name = "requests" },
1045
+ ]
1046
+ sdist = { url = "https://files.pythonhosted.org/packages/77/30/b3a6f6a2e00f8153549c2fa345c58ae1ce8e5f3153c2fe0484d444c3abcb/google_search_results-2.4.2.tar.gz", hash = "sha256:603a30ecae2af8e600b22635757a6df275dad4b934f975e67878ccd640b78245", size = 18818, upload-time = "2023-03-10T11:13:09.953Z" }
1047
+
1048
  [[package]]
1049
  name = "googleapis-common-protos"
1050
  version = "1.72.0"
 
3474
  { url = "https://files.pythonhosted.org/packages/bb/a6/a607a737dc1a00b7afe267b9bfde101b8cee2529e197e57471d23137d4e5/sentence_transformers-5.1.2-py3-none-any.whl", hash = "sha256:724ce0ea62200f413f1a5059712aff66495bc4e815a1493f7f9bca242414c333", size = 488009, upload-time = "2025-10-22T12:47:53.433Z" },
3475
  ]
3476
 
 
 
 
 
 
 
 
 
 
 
 
 
3477
  [[package]]
3478
  name = "setuptools"
3479
  version = "80.9.0"