Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,29 @@ updates:
patterns:
- "*"

- package-ecosystem: "uv"
directory: "/contrib/python/economic-research-agent"
schedule:
interval: weekly
day: monday
time: "02:00"
commit-message:
prefix: chore
include: scope
labels:
- dependencies
open-pull-requests-limit: 1
# Wait a few days after a release before opening a PR, so the community
# catches broken releases before we auto-merge them. Security updates
# bypass this cooldown and fire immediately.
cooldown:
default-days: 7
semver-major-days: 14
groups:
all-dependencies:
patterns:
- "*"

- package-ecosystem: "uv"
directory: "/contrib/python/market-research-agent"
schedule:
Expand Down
38 changes: 25 additions & 13 deletions .gitignore

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a reason to keep this file and the folders containing it?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed! Standard Python ignores (.venv, __pycache__, .env, etc.) are handled globally by the repository root .gitignore, so the redundant standalone contrib/python/economic-research-agent/.gitignore file has been deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,13 @@ ipython_config.py
# commonly ignored for libraries.
#uv.lock

# poetry
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
# This is especially recommended for binary packages to ensure reproducibility, and is more
# commonly ignored for libraries.
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
poetry.lock

# pdm
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
#pdm.lock
Expand All @@ -127,16 +134,16 @@ celerybeat.pid
*.sage.py

# Environments
**/.env
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
**/.env*
!**/.env.example
!**/.env.local.example
.env*
!.env.example
!.env.local.example

# Spyder project settings
.spyderproject
Expand All @@ -162,6 +169,13 @@ dmypy.json
# Cython debug symbols
cython_debug/

# PyCharm
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
# and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/

# Ruff stuff:
.ruff_cache/

Expand All @@ -170,8 +184,7 @@ cython_debug/

# Others
.DS_Store
Thumbs.db
ehthumbs.db
bin

# Node.js
node_modules/
Expand Down Expand Up @@ -226,10 +239,9 @@ go/agents/sail-researcher/server
*.class
local.properties

# Credentials & Secrets
*service-account*.json
client_secret*.json
*creds*.json
*credentials*.json
*.pem
*.key
# AlphaEvolve R&D Experiments
experiments/

# Local Developer Cache & Tokens
.firebase/
.gcloud_token
77 changes: 77 additions & 0 deletions contrib/python/economic-research-agent/.env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
# --- GOOGLE CLOUD CONFIGURATION ---
PROJECT_ID=your-project-id
LOCATION=us-east1
PROJECT_NUMBER=your-project-number

# --- API KEYS ---
# Bureau of Economic Analysis (BEA)
BEA_API_KEY=your-bea-api-key

# St. Louis Fed (FRED)
FRED_API_KEY=your-fred-api-key

# U.S. Census Bureau
CENSUS_API_KEY=your-census-api-key

# Energy Information Administration (EIA)
EIA_API_KEY=your-eia-api-key

# Bureau of Labor Statistics (BLS)
BLS_API_KEY=your-bls-api-key

# Federal Election Commission (FEC)
FEC_API_KEY=your-fec-api-key

# News & Sentiment (NewsAPI)
NEWS_API_KEY=your-news-api-key

# Live Judge Web Search (Serper.dev)
SERPER_API_KEY=your-serper-api-key

# HUD Fair Market Rents (HUDUser.gov)
HUD_API_KEY=your-hud-api-key

# Real Estate Active Listings (RentCast.io)
RENTCAST_API_KEY=your-rentcast-api-key

# O*NET Web Services API Key
ONET_API_KEY=your-onet-api-key

# Optional: LangChain/AgentOps Tracing
LANGCHAIN_API_KEY=your-langchain-key
AGENTOPS_API_KEY=your-agentops-key

# --- LOGGING & TELEMETRY ---
# Set to 'true' to enable Traceloop
ENABLE_TELEMETRY=true

# CDC Open Data App Token (data.cdc.gov)
CDC_APP_TOKEN=your-cdc-app-token

# OpenFDA Data Profile
OPENFDA_API_KEY=your-openfda-api-key

# Environment variables extracted by extract-python-environment-variables
ALLOW_ORIGINS=<TODO: update-this-value> # extracted-by:extract-env-vars; from getenv in economic_research/fast_api_app.py; source had "" — empty string, please fix source too
COMMIT_SHA=dev # extracted-by:extract-env-vars; from environ_get in economic_research/app_utils/telemetry.py
ERA_BYPASS_SUPERVISOR=<TODO: update-this-value> # extracted-by:extract-env-vars; no default in source
GCP_LOCATION=us-central1 # extracted-by:extract-env-vars; from getenv in economic_research/tools/workforce_exposure_skill.py
GCP_PROJECT=your-project-id # extracted-by:extract-env-vars; from getenv in economic_research/tools/workforce_exposure_skill.py
GENAI_TELEMETRY_PATH=completions # extracted-by:extract-env-vars; from environ_get in economic_research/app_utils/telemetry.py
GOOGLE_CLOUD_LOCATION=us-east1 # extracted-by:extract-env-vars; from setdefault in economic_research/__init__.py
GOOGLE_CLOUD_PROJECT=your-project-id # extracted-by:extract-env-vars; from getenv in experiments/evolve_universal_prompts/evaluator.py
GOOGLE_CLOUD_STORAGE_BUCKET=<TODO: update-this-value> # extracted-by:extract-env-vars; no default in source
GOOGLE_GENAI_USE_VERTEXAI=True # extracted-by:extract-env-vars; from setdefault in economic_research/__init__.py
LABOR_STATS_DATASET=bls # extracted-by:extract-env-vars; from getenv in economic_research/tools/common/bureau_of_labor.py
LOGS_BUCKET_NAME=<TODO: update-this-value> # extracted-by:extract-env-vars; no default in source
OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT=false # extracted-by:extract-env-vars; from environ_get in economic_research/app_utils/telemetry.py
OTEL_INSTRUMENTATION_GENAI_COMPLETION_HOOK=upload # extracted-by:extract-env-vars; from setdefault in economic_research/app_utils/telemetry.py
OTEL_INSTRUMENTATION_GENAI_UPLOAD_BASE_PATH=<TODO: update-this-value> # extracted-by:extract-env-vars; no default in source
OTEL_INSTRUMENTATION_GENAI_UPLOAD_FORMAT=jsonl # extracted-by:extract-env-vars; from setdefault in economic_research/app_utils/telemetry.py
OTEL_RESOURCE_ATTRIBUTES=<TODO: update-this-value> # extracted-by:extract-env-vars; no default in source
OTEL_SEMCONV_STABILITY_OPT_IN=gen_ai_latest_experimental # extracted-by:extract-env-vars; from setdefault in economic_research/app_utils/telemetry.py

# Default Gemini Models
MODEL_NAME=gemini-3.6-flash
MODEL_NAME_GENERATED_1=gemini-3.1-pro
OBSERVABILITY_LOG_DIR=<TODO: update-this-value>
Original file line number Diff line number Diff line change
Expand Up @@ -39,18 +39,16 @@ streamlit: ## Launch the Economic Research Agent Dashboard (Streamlit)

test-integration: ## Run integration tests (Requires API keys)
@echo "🛰️ Running ERA integration tests..."
uv run pytest tests/integration/
ERA_BYPASS_SUPERVISOR=true uv run pytest tests/integration/

deploy: ## Deploy the agent to Vertex AI Reasoning Engine (Direct Vertex SDK)
@echo "🚀 Deploying ERA to Vertex (Direct SDK)..."
PYTHONPATH=. uv run python3 economic_research/deployment/deploy.py
deploy: ## Deploy the agent to Vertex AI Agent Runtime and register to Gemini Enterprise
@echo "🚀 Executing Production Deployment & Registration..."
./deploy.sh




register-gemini-enterprise: ## Register the agent with Gemini Enterprise (Reasoning Engine Spec)
register-gemini-enterprise: ## Register the agent with Gemini Enterprise via agents-cli
@echo "🛰️ Registering ERA with Gemini Enterprise..."
@uvx agent-starter-pack register-gemini-enterprise
agents-cli publish gemini-enterprise

lint: ## Run ruff check without fixing
@echo "🔍 Running ruff checks..."
uvx ruff check .
Expand Down
Loading
Loading