Skip to content

Commit a79ee72

Browse files
committed
Rename LLM to AI
Also, any references to the API are renamed as "AgentAPI" rather than just "agent".
1 parent 866b721 commit a79ee72

File tree

2 files changed

+58
-57
lines changed

2 files changed

+58
-57
lines changed

cli/exp_mcp.go

Lines changed: 41 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ import (
2828

2929
const (
3030
envAppStatusSlug = "CODER_MCP_APP_STATUS_SLUG"
31-
envLLMAgentURL = "CODER_MCP_LLM_AGENT_URL"
31+
envAIAgentAPIURL = "CODER_MCP_AI_AGENTAPI_URL"
3232
)
3333

3434
func (r *RootCmd) mcpCommand() *serpent.Command {
@@ -126,7 +126,7 @@ func (r *RootCmd) mcpConfigureClaudeCode() *serpent.Command {
126126
coderPrompt string
127127
appStatusSlug string
128128
testBinaryName string
129-
llmAgentURL url.URL
129+
aiAgentAPIURL url.URL
130130

131131
deprecatedCoderMCPClaudeAPIKey string
132132
)
@@ -165,8 +165,8 @@ func (r *RootCmd) mcpConfigureClaudeCode() *serpent.Command {
165165
if appStatusSlug != "" {
166166
configureClaudeEnv[envAppStatusSlug] = appStatusSlug
167167
}
168-
if llmAgentURL.String() != "" {
169-
configureClaudeEnv[envLLMAgentURL] = llmAgentURL.String()
168+
if aiAgentAPIURL.String() != "" {
169+
configureClaudeEnv[envAIAgentAPIURL] = aiAgentAPIURL.String()
170170
}
171171
if deprecatedSystemPromptEnv, ok := os.LookupEnv("SYSTEM_PROMPT"); ok {
172172
cliui.Warnf(inv.Stderr, "SYSTEM_PROMPT is deprecated, use CODER_MCP_CLAUDE_SYSTEM_PROMPT instead")
@@ -267,10 +267,10 @@ func (r *RootCmd) mcpConfigureClaudeCode() *serpent.Command {
267267
Value: serpent.StringOf(&appStatusSlug),
268268
},
269269
{
270-
Flag: "llm-agent-url",
271-
Description: "The URL of the LLM agent API, used to listen for status updates.",
272-
Env: envLLMAgentURL,
273-
Value: serpent.URLOf(&llmAgentURL),
270+
Flag: "ai-agentapi-url",
271+
Description: "The URL of the AI AgentAPI, used to listen for status updates.",
272+
Env: envAIAgentAPIURL,
273+
Value: serpent.URLOf(&aiAgentAPIURL),
274274
},
275275
{
276276
Name: "test-binary-name",
@@ -370,11 +370,11 @@ type taskReport struct {
370370
}
371371

372372
type mcpServer struct {
373-
agentClient *agentsdk.Client
374-
appStatusSlug string
375-
client *codersdk.Client
376-
llmClient *agentapi.Client
377-
queue *cliutil.Queue[taskReport]
373+
agentClient *agentsdk.Client
374+
appStatusSlug string
375+
client *codersdk.Client
376+
aiAgentAPIClient *agentapi.Client
377+
queue *cliutil.Queue[taskReport]
378378
}
379379

380380
func (r *RootCmd) mcpServer() *serpent.Command {
@@ -383,13 +383,13 @@ func (r *RootCmd) mcpServer() *serpent.Command {
383383
instructions string
384384
allowedTools []string
385385
appStatusSlug string
386-
llmAgentURL url.URL
386+
aiAgentAPIURL url.URL
387387
)
388388
return &serpent.Command{
389389
Use: "server",
390390
Handler: func(inv *serpent.Invocation) error {
391391
// lastUserMessageID is the ID of the last *user* message that we saw. A
392-
// user message only happens when interacting via the LLM agent API (as
392+
// user message only happens when interacting via the AI AgentAPI (as
393393
// opposed to interacting with the terminal directly).
394394
var lastUserMessageID int64
395395
var lastReport taskReport
@@ -399,14 +399,15 @@ func (r *RootCmd) mcpServer() *serpent.Command {
399399
// new user message, and the status is "working" and not self-reported
400400
// (meaning it came from the screen watcher), then it means one of two
401401
// things:
402-
// 1. The LLM is still working, so there is nothing to update.
403-
// 2. The LLM stopped working, then the user has interacted with the
404-
// terminal directly. For now, we are ignoring these updates. This
405-
// risks missing cases where the user manually submits a new prompt
406-
// and the LLM becomes active and does not update itself, but it
407-
// avoids spamming useless status updates as the user is typing, so
408-
// the tradeoff is worth it. In the future, if we can reliably
409-
// distinguish between user and LLM activity, we can change this.
402+
// 1. The AI agent is still working, so there is nothing to update.
403+
// 2. The AI agent stopped working, then the user has interacted with
404+
// the terminal directly. For now, we are ignoring these updates.
405+
// This risks missing cases where the user manually submits a new
406+
// prompt and the AI agent becomes active and does not update itself,
407+
// but it avoids spamming useless status updates as the user is
408+
// typing, so the tradeoff is worth it. In the future, if we can
409+
// reliably distinguish between user and AI agent activity, we can
410+
// change this.
410411
if report.messageID > lastUserMessageID {
411412
report.state = codersdk.WorkspaceAppStatusStateWorking
412413
} else if report.state == codersdk.WorkspaceAppStatusStateWorking && !report.selfReported {
@@ -475,20 +476,20 @@ func (r *RootCmd) mcpServer() *serpent.Command {
475476
cliui.Infof(inv.Stderr, "Task reporter : Enabled")
476477
}
477478

478-
// Try to create a client for the LLM agent API, which is used to get the
479+
// Try to create a client for the AI AgentAPI, which is used to get the
479480
// screen status to make the status reporting more robust. No auth
480481
// needed, so no validation.
481-
if llmAgentURL.String() == "" {
482-
cliui.Infof(inv.Stderr, "LLM agent URL : Not configured")
482+
if aiAgentAPIURL.String() == "" {
483+
cliui.Infof(inv.Stderr, "AI AgentAPI URL : Not configured")
483484
} else {
484-
cliui.Infof(inv.Stderr, "LLM agent URL : %s", llmAgentURL.String())
485-
llmClient, err := agentapi.NewClient(llmAgentURL.String())
485+
cliui.Infof(inv.Stderr, "AI AgentAPI URL : %s", aiAgentAPIURL.String())
486+
aiAgentAPIClient, err := agentapi.NewClient(aiAgentAPIURL.String())
486487
if err != nil {
487488
cliui.Infof(inv.Stderr, "Screen events : Disabled")
488-
cliui.Warnf(inv.Stderr, "%s must be set", envLLMAgentURL)
489+
cliui.Warnf(inv.Stderr, "%s must be set", envAIAgentAPIURL)
489490
} else {
490491
cliui.Infof(inv.Stderr, "Screen events : Enabled")
491-
srv.llmClient = llmClient
492+
srv.aiAgentAPIClient = aiAgentAPIClient
492493
}
493494
}
494495

@@ -499,10 +500,10 @@ func (r *RootCmd) mcpServer() *serpent.Command {
499500
cliui.Infof(inv.Stderr, "Failed to watch screen events")
500501
// Start the reporter, watcher, and server. These are all tied to the
501502
// lifetime of the MCP server, which is itself tied to the lifetime of the
502-
// LLM agent.
503+
// AI agent.
503504
if srv.agentClient != nil && appStatusSlug != "" {
504505
srv.startReporter(ctx, inv)
505-
if srv.llmClient != nil {
506+
if srv.aiAgentAPIClient != nil {
506507
srv.startWatcher(ctx, inv)
507508
}
508509
}
@@ -536,10 +537,10 @@ func (r *RootCmd) mcpServer() *serpent.Command {
536537
Default: "",
537538
},
538539
{
539-
Flag: "llm-agent-url",
540-
Description: "The URL of the LLM agent API, used to listen for status updates.",
541-
Env: envLLMAgentURL,
542-
Value: serpent.URLOf(&llmAgentURL),
540+
Flag: "ai-agentapi-url",
541+
Description: "The URL of the AI AgentAPI, used to listen for status updates.",
542+
Env: envAIAgentAPIURL,
543+
Value: serpent.URLOf(&aiAgentAPIURL),
543544
},
544545
},
545546
}
@@ -549,9 +550,9 @@ func (s *mcpServer) startReporter(ctx context.Context, inv *serpent.Invocation)
549550
go func() {
550551
for {
551552
// TODO: Even with the queue, there is still the potential that a message
552-
// from the screen watcher and a message from the LLM could arrive out of
553-
// order if the timing is just right. We might want to wait a bit, then
554-
// check if the status has changed before committing.
553+
// from the screen watcher and a message from the AI agent could arrive
554+
// out of order if the timing is just right. We might want to wait a bit,
555+
// then check if the status has changed before committing.
555556
item, ok := s.queue.Pop()
556557
if !ok {
557558
return
@@ -571,7 +572,7 @@ func (s *mcpServer) startReporter(ctx context.Context, inv *serpent.Invocation)
571572
}
572573

573574
func (s *mcpServer) startWatcher(ctx context.Context, inv *serpent.Invocation) {
574-
eventsCh, errCh, err := s.llmClient.SubscribeEvents(ctx)
575+
eventsCh, errCh, err := s.aiAgentAPIClient.SubscribeEvents(ctx)
575576
if err != nil {
576577
cliui.Warnf(inv.Stderr, "Failed to watch screen events: %s", err)
577578
return

cli/exp_mcp_test.go

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -366,7 +366,7 @@ test-system-prompt
366366
"CODER_AGENT_URL": "%s",
367367
"CODER_AGENT_TOKEN": "test-agent-token",
368368
"CODER_MCP_APP_STATUS_SLUG": "some-app-name",
369-
"CODER_MCP_LLM_AGENT_URL": "http://localhost:3284"
369+
"CODER_MCP_AI_AGENTAPI_URL": "http://localhost:3284"
370370
}
371371
}
372372
}
@@ -391,7 +391,7 @@ test-system-prompt
391391
"--claude-test-binary-name=pathtothecoderbinary",
392392
"--agent-url", client.URL.String(),
393393
"--agent-token", "test-agent-token",
394-
"--llm-agent-url", "http://localhost:3284",
394+
"--ai-agentapi-url", "http://localhost:3284",
395395
)
396396
clitest.SetupConfig(t, client, root)
397397

@@ -741,7 +741,7 @@ func TestExpMcpReporter(t *testing.T) {
741741
"--agent-url", client.URL.String(),
742742
"--agent-token", "fake-agent-token",
743743
"--app-status-slug", "vscode",
744-
"--llm-agent-url", "not a valid url",
744+
"--ai-agentapi-url", "not a valid url",
745745
)
746746
inv = inv.WithContext(ctx)
747747

@@ -804,7 +804,7 @@ func TestExpMcpReporter(t *testing.T) {
804804

805805
ctx, cancel := context.WithCancel(testutil.Context(t, testutil.WaitShort))
806806

807-
// Mock the LLM agent API server.
807+
// Mock the AI AgentAPI server.
808808
listening := make(chan func(sse codersdk.ServerSentEvent) error)
809809
srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
810810
send, closed, err := httpapi.ServerSentEventSender(w, r)
@@ -821,7 +821,7 @@ func TestExpMcpReporter(t *testing.T) {
821821
<-closed
822822
}))
823823
t.Cleanup(srv.Close)
824-
llmAgentURL := srv.URL
824+
aiAgentAPIURL := srv.URL
825825

826826
// Watch the workspace for changes.
827827
watcher, err := client.WatchWorkspace(ctx, r.Workspace.ID)
@@ -844,11 +844,11 @@ func TestExpMcpReporter(t *testing.T) {
844844

845845
inv, _ := clitest.New(t,
846846
"exp", "mcp", "server",
847-
// We need the agent credentials, LLM API url, and a slug for reporting.
847+
// We need the agent credentials, AI AgentAPI url, and a slug for reporting.
848848
"--agent-url", client.URL.String(),
849849
"--agent-token", r.AgentToken,
850850
"--app-status-slug", "vscode",
851-
"--llm-agent-url", llmAgentURL,
851+
"--ai-agentapi-url", aiAgentAPIURL,
852852
"--allowed-tools=coder_report_task",
853853
)
854854
inv = inv.WithContext(ctx)
@@ -878,13 +878,13 @@ func TestExpMcpReporter(t *testing.T) {
878878
tests := []struct {
879879
// event simulates an event from the screen watcher.
880880
event *codersdk.ServerSentEvent
881-
// state, summary, and uri simulate a tool call from the LLM.
881+
// state, summary, and uri simulate a tool call from the AI agent.
882882
state codersdk.WorkspaceAppStatusState
883883
summary string
884884
uri string
885885
expected *codersdk.WorkspaceAppStatus
886886
}{
887-
// First the LLM updates with a state change.
887+
// First the AI agent updates with a state change.
888888
{
889889
state: codersdk.WorkspaceAppStatusStateWorking,
890890
summary: "doing work",
@@ -895,8 +895,8 @@ func TestExpMcpReporter(t *testing.T) {
895895
URI: "https://dev.coder.com",
896896
},
897897
},
898-
// Terminal goes quiet but the LLM forgot the update, and it is caught by
899-
// the screen watcher. Message and URI are preserved.
898+
// Terminal goes quiet but the AI agent forgot the update, and it is
899+
// caught by the screen watcher. Message and URI are preserved.
900900
{
901901
event: makeStatusEvent(agentapi.StatusStable),
902902
expected: &codersdk.WorkspaceAppStatus{
@@ -910,17 +910,17 @@ func TestExpMcpReporter(t *testing.T) {
910910
event: makeStatusEvent(agentapi.StatusStable),
911911
},
912912
// Terminal becomes active again according to the screen watcher, but no
913-
// new user message. This could be the LLM being active again, but it
914-
// could also be the user messing around. We will prefer not updating the
915-
// status so the "working" update here should be skipped.
913+
// new user message. This could be the AI agent being active again, but
914+
// it could also be the user messing around. We will prefer not updating
915+
// the status so the "working" update here should be skipped.
916916
{
917917
event: makeStatusEvent(agentapi.StatusRunning),
918918
},
919919
// Agent messages are ignored.
920920
{
921921
event: makeMessageEvent(1, agentapi.RoleAgent),
922922
},
923-
// LLM reports that it failed and URI is blank.
923+
// AI agent reports that it failed and URI is blank.
924924
{
925925
state: codersdk.WorkspaceAppStatusStateFailure,
926926
summary: "oops",
@@ -934,8 +934,8 @@ func TestExpMcpReporter(t *testing.T) {
934934
{
935935
event: makeStatusEvent(agentapi.StatusRunning),
936936
},
937-
// ... but this time we have a new user message so we know there is LLM
938-
// activity. This time the "working" update will not be skipped.
937+
// ... but this time we have a new user message so we know there is AI
938+
// agent activity. This time the "working" update will not be skipped.
939939
{
940940
event: makeMessageEvent(2, agentapi.RoleUser),
941941
expected: &codersdk.WorkspaceAppStatus{

0 commit comments

Comments
 (0)