Ready for first real test
This commit is contained in:
1 parent
acddf9135f
commit
b91c81ebdf
46 files changed
+34903
-26
No files matched your search
@@ -0,0 +1,54 @@
|
||||
"""Tool health check — exercise every agent tool and print PASS/FAIL.
|
||||
|
||||
Confirms internet access, market-data APIs, the sandbox, and (critically) that the sandbox
|
||||
CANNOT read account secrets. Run anytime: uv run python scripts/check_tools.py
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import pathlib
|
||||
import sys
|
||||
|
||||
sys.path.insert(0, str(pathlib.Path(__file__).resolve().parent.parent))
|
||||
|
||||
from tools.market_data import get_bars, get_quote # noqa: E402
|
||||
from tools.options import get_option_chain # noqa: E402
|
||||
from tools.python_exec import run_python # noqa: E402
|
||||
from tools.sandbox import run_analysis # noqa: E402
|
||||
from tools.web import web_fetch, web_search # noqa: E402
|
||||
|
||||
|
||||
def _check(name: str, fn) -> bool:
|
||||
try:
|
||||
r = str(fn())
|
||||
ok = not r.startswith("ERROR")
|
||||
print(f"[{'PASS' if ok else 'FAIL'}] {name}: {r[:80].strip()}")
|
||||
return ok
|
||||
except Exception as e:
|
||||
print(f"[FAIL] {name}: {type(e).__name__}: {e}")
|
||||
return False
|
||||
|
||||
|
||||
def main() -> int:
|
||||
checks = [
|
||||
("run_python (calc)", lambda: run_python.invoke({"code": "print(2 + 2)"})),
|
||||
("web_search (INTERNET)", lambda: web_search.invoke({"query": "stock market news"})),
|
||||
("web_fetch (INTERNET)", lambda: web_fetch.invoke({"url": "https://example.com"})),
|
||||
("get_quote", lambda: get_quote.invoke({"ticker": "AAPL"})),
|
||||
("get_bars", lambda: get_bars.invoke({"ticker": "AAPL"})),
|
||||
("get_option_chain", lambda: get_option_chain.invoke({"underlying": "AAPL", "right": "call"})),
|
||||
("run_analysis (sandbox)", lambda: run_analysis.invoke({"code": "import pandas, numpy; print('libs ok')"})),
|
||||
(
|
||||
"sandbox SECRET-SCRUB",
|
||||
lambda: "PASS"
|
||||
if "None" in run_analysis.invoke({"code": "import os; print(os.environ.get('ALPACA_NOVA_SECRET'))"})
|
||||
else "ERROR: secret leaked into sandbox!",
|
||||
),
|
||||
]
|
||||
results = [_check(n, f) for n, f in checks]
|
||||
print(f"\n{sum(results)}/{len(results)} tools OK")
|
||||
return 0 if all(results) else 1
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
Reference in new issue
Block a user