mirror of
https://github.com/agentclientprotocol/claude-agent-acp.git
synced 2026-10-27 12:40:32 +00:00
Add support for authentication
This commit is contained in:
@@ -11,6 +11,7 @@ import {
|
|||||||
NewSessionResponse,
|
NewSessionResponse,
|
||||||
PromptRequest,
|
PromptRequest,
|
||||||
PromptResponse,
|
PromptResponse,
|
||||||
|
RequestError,
|
||||||
ToolCallContent,
|
ToolCallContent,
|
||||||
ToolKind,
|
ToolKind,
|
||||||
} from "@zed-industries/agent-client-protocol";
|
} from "@zed-industries/agent-client-protocol";
|
||||||
@@ -57,6 +58,18 @@ export class ClaudeAcpAgent implements Agent {
|
|||||||
agentCapabilities: {
|
agentCapabilities: {
|
||||||
promptCapabilities: { image: true, embeddedContext: true },
|
promptCapabilities: { image: true, embeddedContext: true },
|
||||||
},
|
},
|
||||||
|
authMethods: [
|
||||||
|
{
|
||||||
|
description: "Run `claude /login` in the terminal",
|
||||||
|
name: "Login with Claude CLI",
|
||||||
|
id: "claude-login",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
description: "Anthropic API KEY",
|
||||||
|
name: "Use Anthropic API Key",
|
||||||
|
id: "anthropic-api-key",
|
||||||
|
},
|
||||||
|
],
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
async newSession(params: NewSessionRequest): Promise<NewSessionResponse> {
|
async newSession(params: NewSessionRequest): Promise<NewSessionResponse> {
|
||||||
@@ -131,8 +144,13 @@ export class ClaudeAcpAgent implements Agent {
|
|||||||
case "result": {
|
case "result": {
|
||||||
// todo!() how is rate-limiting handled?
|
// todo!() how is rate-limiting handled?
|
||||||
switch (message.subtype) {
|
switch (message.subtype) {
|
||||||
case "success":
|
case "success": {
|
||||||
|
console.error(message.result);
|
||||||
|
if (message.result.includes("Please run /login")) {
|
||||||
|
throw RequestError.authRequired();
|
||||||
|
}
|
||||||
return { stopReason: "end_turn" };
|
return { stopReason: "end_turn" };
|
||||||
|
}
|
||||||
case "error_during_execution":
|
case "error_during_execution":
|
||||||
return { stopReason: "refusal" };
|
return { stopReason: "refusal" };
|
||||||
case "error_max_turns":
|
case "error_max_turns":
|
||||||
@@ -143,6 +161,13 @@ export class ClaudeAcpAgent implements Agent {
|
|||||||
}
|
}
|
||||||
case "user":
|
case "user":
|
||||||
case "assistant": {
|
case "assistant": {
|
||||||
|
if (
|
||||||
|
message.message.model == "<synthetic>" &&
|
||||||
|
message.message.content.length == 1 &&
|
||||||
|
message.message.content[0].text.includes("Please run /login")
|
||||||
|
) {
|
||||||
|
throw RequestError.authRequired();
|
||||||
|
}
|
||||||
for (const notification of toAcpNotifications(
|
for (const notification of toAcpNotifications(
|
||||||
message,
|
message,
|
||||||
params.sessionId,
|
params.sessionId,
|
||||||
|
|||||||
Reference in New Issue
Block a user