open-swe/agent
Adam Moussa a2794118ff
feat: optional separate LangSmith key/endpoint for sandboxes (#1760)
* feat: optional separate LangSmith key/endpoint for sandboxes

Adds optional SANDBOX_LANGSMITH_API_KEY / SANDBOX_LANGSMITH_ENDPOINT env
overrides so sandboxes can run against a different LangSmith workspace than
the one used for tracing and other API calls. Both fall back to the existing
LANGSMITH_API_KEY / LANGSMITH_ENDPOINT resolution, so default behavior is
unchanged.

Applied to sandbox create/connect/delete, the GitHub proxy config, and repo
snapshot builds.

* feat: name langsmith sandboxes openswe-<b32(thread id)>

New sandboxes get a deterministic, thread-traceable name derived from the
LangGraph thread id (UUID base32-encoded lowercase, no padding), e.g.
openswe-ci2fm6asgrlhqerukz4bencwpa. Falls back to an unset name when no thread
id is present. Reconnect/delete still key off the server-assigned sandbox id.

* fix: pass sandbox base URL (root + /v2/sandboxes) to langsmith SDK clients

The SDK's api_endpoint is the sandbox base, not the API root — its methods
append /boxes, /snapshots, etc. Passing the bare root sent calls to
<root>/boxes instead of <root>/v2/sandboxes/boxes. Add _get_sandbox_api_endpoint
for the SDK clients (async client, provider, snapshot SandboxClient) while the
proxy-config PATCH keeps using the root.

---------

Co-authored-by: open-swe[bot] <open-swe@users.noreply.github.com>
(cherry picked from commit e826864dce0e56cda7decbc48254b1e13eef07e2)

Co-authored-by: Ramon Nogueira <ramon.nogueira@langchain.dev>
2026-07-17 16:22:38 -04:00
..
api refactor: split webapp.py into api/ + per-source webhook routes 2026-07-17 14:30:05 -04:00
dashboard feat: optional separate LangSmith key/endpoint for sandboxes (#1760) 2026-07-17 16:22:38 -04:00
graphs refactor: adopt graphs/runtime/providers shims + retarget langgraph.json 2026-07-17 13:57:20 -04:00
integrations feat: optional separate LangSmith key/endpoint for sandboxes (#1760) 2026-07-17 16:22:38 -04:00
middleware feat: add Linear issue search tool (#1748) 2026-07-17 16:22:38 -04:00
providers refactor: adopt graphs/runtime/providers shims + retarget langgraph.json 2026-07-17 13:57:20 -04:00
resources refactor: move docs/resources/assets to domain layout 2026-07-17 13:45:39 -04:00
review refactor: consolidate reviewer modules into agent/review/ 2026-07-17 13:52:03 -04:00
runtime refactor: adopt graphs/runtime/providers shims + retarget langgraph.json 2026-07-17 13:57:20 -04:00
skills feat: outcomes dataset + bootstrap/continual split via skills (#1365) 2026-06-01 13:25:12 -07:00
tools feat: add Linear issue search tool (#1748) 2026-07-17 16:22:38 -04:00
utils feat: add Linear issue search tool (#1748) 2026-07-17 16:22:38 -04:00
webhooks refactor: split webapp.py into api/ + per-source webhook routes 2026-07-17 14:30:05 -04:00
analyzer.py refactor: consolidate reviewer modules into agent/review/ 2026-07-17 13:52:03 -04:00
chat.py fix: defensive copy in get_reviewer_agent and get_chat_agent [closes #1584] (#1742) 2026-07-17 16:22:38 -04:00
ci_autofix.py refactor: split webapp.py into api/ + per-source webhook routes 2026-07-17 14:30:05 -04:00
ci_monitor.py feat: CI auto-fix and PR babysitting for agent PRs (#1530) 2026-06-15 13:53:50 -07:00
completion.py feat: Jira + Confluence integration (tools + triggers) (#182) 2026-07-13 19:45:54 -04:00
dispatch.py feat: port durable dispatch hardening and startup latency improvements (#160) 2026-07-09 17:11:25 -04:00
encryption.py feat: support TOKEN_ENCRYPTION_KEY rotation via MultiFernet [closes AB-2323] (#1275) 2026-05-08 14:29:23 -07:00
prompt.py refactor: move docs/resources/assets to domain layout 2026-07-17 13:45:39 -04:00
reconcile.py refactor: adopt modular webhook architecture (#1621) + port fork customizations (#85) 2026-06-30 18:46:46 -04:00
reviewer.py fix: defensive copy in get_reviewer_agent and get_chat_agent [closes #1584] (#1742) 2026-07-17 16:22:38 -04:00
scheduler.py refactor: adopt modular webhook architecture (#1621) + port fork customizations (#85) 2026-06-30 18:46:46 -04:00
server.py feat: add Linear issue search tool (#1748) 2026-07-17 16:22:38 -04:00
webapp.py refactor: split webapp.py into api/ + per-source webhook routes 2026-07-17 14:30:05 -04:00