Fix local worker toolkit registration (#387)

This PR fixes two bugs:
1. `serve_default_worker` was not registering toolkits to the worker
(non mcp). This caused workers created during `arcade workerup` and
`arcade serve` to have 0 tools.
2. We were logging the number of files in the toolkit as the number of
tools in the toolkit.
This commit is contained in:
Eric Gustin 2025-05-02 12:38:58 -08:00 committed by GitHub
parent 9bc1cd4a12
commit 2de123f271
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -239,13 +239,20 @@ def serve_default_worker(
toolkits = discover_toolkits() toolkits = discover_toolkits()
logger.info("Serving the following toolkits:") logger.info("Serving the following toolkits:")
toolkit_tool_counts: dict[str, int] = {}
for toolkit in toolkits:
for _, tools in toolkit.tools.items():
toolkit_tool_counts[toolkit.name] = toolkit_tool_counts.get(toolkit.name, 0) + len(
tools
)
for toolkit in toolkits: for toolkit in toolkits:
if debug: if debug:
for name, tools in toolkit.tools.items(): logger.info(f"{toolkit.name}: ({toolkit_tool_counts.get(toolkit.name, 0)} tools)")
for filename, tools in toolkit.tools.items():
for tool in tools: for tool in tools:
logger.info(f" - {name}: {tool}") logger.info(f" - {filename}: {tool}")
else: else:
logger.info(f" - {toolkit.name}: {len(toolkit.tools)} tools") logger.info(f" - {toolkit.name}: {toolkit_tool_counts.get(toolkit.name, 0)} tools")
# --- MCP stdio -------------------------------------------------- # --- MCP stdio --------------------------------------------------
if mcp: if mcp:
@ -267,18 +274,23 @@ def serve_default_worker(
secret = os.getenv("ARCADE_WORKER_SECRET", None) secret = os.getenv("ARCADE_WORKER_SECRET", None)
if secret is None: if secret is None:
logger.warning("No secret found for Arcade Worker") logger.warning("No secret found for Arcade Worker")
logger.info("Setting secret to 'dev'. Set this in production") logger.info(
"Setting ARCADE_WORKER_SECRET environment variable to 'dev'. Set this in production"
)
secret = "dev" # noqa: S105 secret = "dev" # noqa: S105
otel_handler = OTELHandler( otel_handler = OTELHandler(
app, enable=enable_otel, log_level=logging.DEBUG if debug else logging.INFO app, enable=enable_otel, log_level=logging.DEBUG if debug else logging.INFO
) )
_ = FastAPIWorker( worker = FastAPIWorker(
app=app, app=app,
secret=secret, secret=secret,
disable_auth=disable_auth, disable_auth=disable_auth,
otel_meter=otel_handler.get_meter(), otel_meter=otel_handler.get_meter(),
) )
for toolkit in toolkits:
worker.register_toolkit(toolkit)
_run_fastapi_server( _run_fastapi_server(
app, app,
host=host, host=host,