Welcome banner widget for deepagents-cli.
Fetch the LangSmith project URL via the LangSmith client.
Successful results are cached at module level so repeated calls do not make additional network requests.
The network call runs in a daemon thread with a hard timeout of
_LANGSMITH_URL_LOOKUP_TIMEOUT_SECONDS, so this function blocks the
calling thread for at most that duration even if LangSmith is unreachable.
Returns None (with a debug log) on any failure: missing langsmith package,
network errors, invalid project names, client initialization issues,
or timeouts.
Get the appropriate banner for the current charset mode.
Get the glyph set for the current charset mode.
Resolve the LangSmith project name if tracing is configured.
Checks for the required API key and tracing environment variables.
When both are present, resolves the project name with priority:
settings.deepagents_langchain_project (from
DEEPAGENTS_CLI_LANGSMITH_PROJECT), then LANGSMITH_PROJECT from the
environment (note: this may already have been overridden at bootstrap time
to match DEEPAGENTS_CLI_LANGSMITH_PROJECT), then 'deepagents-cli'.
Open the URL from a Rich link style on click, if present.
Rich Style(link=...) embeds OSC 8 terminal hyperlinks, but Textual's
mouse capture intercepts normal clicks before the terminal can act on them.
By handling the Textual click event directly we open the URL with a single
click, matching the behavior of links in the Markdown widget.
URLs that fail the safety check (e.g. containing hidden Unicode or homograph domains) are blocked and not opened; the event bubbles and a warning is logged and displayed as a Textual notification.
On success the event is stopped so it does not bubble further. On failure (e.g. no browser available in a headless environment) the error is logged at debug level and the event bubbles normally.
Build a footer shown when the server failed to start.
Build a footer shown while waiting for the server to connect.
Build the footer shown at the bottom of the welcome banner.
Includes a tip to help users discover features.