-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
46 lines (34 loc) · 1.68 KB
/
Copy pathmain.py
File metadata and controls
46 lines (34 loc) · 1.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
"""Support Intelligence Agent — Copilot SDK + Foundry toolbox, served via Foundry responses protocol."""
import os
import pathlib
import sys
from dotenv import load_dotenv
load_dotenv(override=False)
from agent import CopilotToolboxAgent
from server import CopilotFoundryAdapter
ROOT = pathlib.Path(__file__).parent
SKILLS_DIR = ROOT / "skills"
def _toolbox_endpoint() -> str | None:
"""Build the Foundry toolbox MCP URL from env. Returns None unless TOOLBOX_NAME is set — that's the toolbox on/off switch."""
if url := os.environ.get("TOOLBOX_ENDPOINT"):
return url
name = os.environ.get("TOOLBOX_NAME")
endpoint = os.environ.get("FOUNDRY_PROJECT_ENDPOINT")
if not (name and endpoint):
return None
version = os.environ.get("TOOLBOX_VERSION")
suffix = f"/versions/{version}" if version else ""
return f"{endpoint.rstrip('/')}/toolboxes/{name}{suffix}/mcp?api-version=v1"
# 1. A Copilot SDK agent — reasoning + tool-calling via GitHub Copilot.
# 2. Wired to Foundry toolbox (remote MCP tools) and local skills in ./skills.
def create_agent() -> CopilotToolboxAgent:
return CopilotToolboxAgent(
skill_directories=[str(SKILLS_DIR)] if SKILLS_DIR.exists() else [],
toolbox_endpoint=_toolbox_endpoint(),
)
if __name__ == "__main__":
if not (os.environ.get("GITHUB_TOKEN") or os.environ.get("FOUNDRY_PROJECT_ENDPOINT")):
sys.exit("Set GITHUB_TOKEN (local dev) or FOUNDRY_PROJECT_ENDPOINT (hosted). See README.")
# 3. Wrap it in the Foundry adapter → deployable as-is to Azure AI Foundry.
adapter = CopilotFoundryAdapter(create_agent())
adapter.run(port=int(os.environ["PORT"]) if os.environ.get("PORT") else None)