Skip to content

Add Conductor-Agents to Go SDK - #285

Merged
NicholasDCole merged 1 commit into
mainfrom
feat/agent-sdk-4-runtime
Sep 24, 2026
Merged

NicholasDCole merged 1 commit into
mainfrom
feat/agent-sdk-4-runtime

Conversation

@ling-senpeng13

@ling-senpeng13 ling-senpeng13 commented Sep 15, 2026 •

Copy link
Copy Markdown
Contributor

Adds the agents feature to the Go SDK as sdk/ai, a port of the Python SDK's agent surface.

What it adds

  • Agents — the Agent model and its serializer, Runtime, AgentHandle, and the agent REST client.
  • Tools — functions, HTTP, MCP, human input, agent-as-tool, media, and worker tools served from another process, with declared credentials and structured output.
  • Composition — guardrails, handoffs and swarm transitions, plan-execute, code execution and CLI runners, routers, terminations, gates, and Agent Skills.
  • Operations — deploy and serve, signals and messages, pause and resume, lifecycle callbacks, agent schedules, code executors, and semantic memory.
  • Docs and examples — the design docs under docs/ai/, and the Python agent examples ported under examples/agents/.

How it is verified

TestGoldenAgentConfig serializes a Go agent for every fixture under sdk/ai/testdata/agent_config/ and requires the document the Python serializer produces, so the wire format cannot drift from Python's. The Python e2e suites are ported under test/integration_tests/ai/ and replayed against recorded LLM traffic, one directory per test file: 105 tests pass, and the 13 skips are listed with their reasons in that directory's README.

CONDUCTOR_SERVER_URL=http://localhost:8080/api go test -tags integration ./test/integration_tests/ai/

Fixes outside sdk/ai

Six gaps the ports exposed, each a feature that was declared but never wired up: tool-level guardrails now run in the worker; terminations, stop-when predicates and router functions each get the worker the server waits for; Agent.Stateful routes a run to a per-execution worker domain; Runtime.Plan compiles a skill from its own document; an event carries the execution it came from, so a nested agent's request for human input is answered on that execution; and a schedule's input survives being read back.

The lint workflow now compares a pull request against its merge base. The patch API it used refuses a diff this size and then silently lints the whole repository.

Two tests stay skipped until conductor-oss/conductor#1633 lands, which fixes numeric and agent-envelope matching in the LLM recorder.

@ling-senpeng13
ling-senpeng13 force-pushed the feat/agent-sdk-4-runtime branch 3 times, most recently from 0f3679c to 37f7de7 Compare September 16, 2026 21:32
@ling-senpeng13
ling-senpeng13 marked this pull request as draft September 16, 2026 21:34
@ling-senpeng13
ling-senpeng13 force-pushed the feat/agent-sdk-4-runtime branch 2 times, most recently from fc70f37 to 00d7809 Compare September 17, 2026 04:08
@ling-senpeng13
ling-senpeng13 marked this pull request as ready for review September 17, 2026 15:58
@ling-senpeng13
ling-senpeng13 force-pushed the feat/agent-sdk-4-runtime branch from 00d7809 to 02db740 Compare September 17, 2026 16:32
@ling-senpeng13
ling-senpeng13 changed the base branch from feat/agent-sdk-3-workers to main September 17, 2026 16:32
@ling-senpeng13 ling-senpeng13 changed the title feat(ai): runtime operations, callbacks, schedules, executors and memory feat(ai): agent SDK for Go Sep 17, 2026
@ling-senpeng13
ling-senpeng13 force-pushed the feat/agent-sdk-4-runtime branch 4 times, most recently from 87ea19b to 2d1943a Compare September 17, 2026 20:19
@ling-senpeng13
ling-senpeng13 force-pushed the feat/agent-sdk-4-runtime branch 2 times, most recently from 75c8099 to ad23b2d Compare September 17, 2026 21:41
@NicholasDCole

Copy link
Copy Markdown
Contributor

All of these files should not be required
image

@ling-senpeng13

Copy link
Copy Markdown
Contributor Author

All of these files should not be required image

In addition to porting the Python example tests, I also ported the applicable Python E2E tests with LLM replay to increase test coverage and these json files are the artifacts. Through this process, I found a few SDK bugs as well.

General thoughts:

  1. There may be cases where we want to run SDK-specific integration tests with LLM replay. In that case, we would need to keep the corresponding JSON replay files in the SDK repo.
  2. It is possible to port the above E2E tests with LLM replay in the same way as the example tests. If we take this approach, I can remove the JSON replay files mentioned above.

@ling-senpeng13
ling-senpeng13 force-pushed the feat/agent-sdk-4-runtime branch 4 times, most recently from 831d4de to 5b255ea Compare September 22, 2026 18:44
@ling-senpeng13
ling-senpeng13 force-pushed the feat/agent-sdk-4-runtime branch from 5b255ea to 6875944 Compare September 22, 2026 19:50
@ling-senpeng13
ling-senpeng13 force-pushed the feat/agent-sdk-4-runtime branch 5 times, most recently from 3027a04 to ca8af9b Compare September 22, 2026 22:46
@NicholasDCole NicholasDCole changed the title feat(ai): agent SDK for Go Add Conductor-Agents to Go SDK Sep 23, 2026
@NicholasDCole
NicholasDCole requested a review from v1r3n September 23, 2026 23:52
Co-Authored-By: nicholascole <nicholas.colesd@gmail.com>
@ling-senpeng13
ling-senpeng13 force-pushed the feat/agent-sdk-4-runtime branch from 55b9d49 to d1db4f4 Compare September 24, 2026 18:31
@NicholasDCole
NicholasDCole merged commit ec37756 into main Sep 24, 2026
8 checks passed
@NicholasDCole
NicholasDCole deleted the feat/agent-sdk-4-runtime branch September 24, 2026 19:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants