@auth/代理服务器
客户端 SDK 用于 Auth 代理协议 代理人身份、登记和能力授权.
安装
npm install @auth/agent
快速启动
import { AgentAuthClient } from "@auth/agent";
const client = new AgentAuthClient({
directoryUrl: "https://directory.example.com",
});
// Discover a provider
const config = await client.discoverProvider("https://api.example.com");
// Connect an agent with constrained capabilities
const agent = await client.connectAgent({
provider: "https://api.example.com",
capabilities: ["read_data", { name: "transfer_money", constraints: { amount: { max: 1000 } } }],
name: "my-assistant",
});
// Execute a capability
const result = await client.executeCapability({
agentId: agent.agentId,
capability: "read_data",
arguments: { id: "user-123" },
});
AI 框架整合
维塞尔 AI SDK
toAISDKTools 自动进口 jsonSchema 从 ai 软件包。 如果喜欢的话,明确通过:
import { generateText } from "ai";
import { AgentAuthClient, getAgentAuthTools, toAISDKTools } from "@auth/agent";
const client = new AgentAuthClient();
const tools = await toAISDKTools(getAgentAuthTools(client));
const { text } = await generateText({
model: openai("gpt-4o"),
tools,
prompt: "Transfer $50 to Alice",
});
通过 jsonSchema 明确( 避免动态导入) :
import { generateText, jsonSchema } from "ai";
import { AgentAuthClient, getAgentAuthTools, toAISDKTools } from "@auth/agent";
const client = new AgentAuthClient();
const tools = await toAISDKTools(getAgentAuthTools(client), { jsonSchema });
OpenAI 函数调用
import { AgentAuthClient, getAgentAuthTools, toOpenAITools } from "@auth/agent";
const client = new AgentAuthClient();
const { definitions, execute } = toOpenAITools(getAgentAuthTools(client), {
strict: true, // structured outputs — prevents hallucinated arguments
});
const res = await openai.chat.completions.create({
model: "gpt-4o",
tools: definitions,
messages,
});
for (const call of res.choices[0].message.tool_calls ?? []) {
const result = await execute(call.function.name, JSON.parse(call.function.arguments));
}
雅典克劳德
import { AgentAuthClient, getAgentAuthTools, toAnthropicTools } from "@auth/agent";
const client = new AgentAuthClient();
const { definitions, processToolUse } = toAnthropicTools(getAgentAuthTools(client));
const res = await anthropic.messages.create({
model: "claude-sonnet-4-20250514",
max_tokens: 1024,
tools: definitions,
messages,
});
const toolUseBlocks = res.content.filter((b) => b.type === "tool_use");
if (toolUseBlocks.length > 0) {
const results = await processToolUse(toolUseBlocks);
messages.push({ role: "assistant", content: res.content }, { role: "user", content: results });
}
处理错误
所有适配器按结构将工具执行错误包裹 { error, code } 对象而不是投掷。 这让模特们能优雅地恢复:
{ "error": "Capability not granted", "code": "capability_not_granted" }
SDK 工具
SDK曝光了映射到代理生命周期的协议工具:
| 工具 | 说明 |
|---|---|
list_providers | 已发现/ 已配置的提供者列表 |
search_providers | 有意查询登记册 |
discover_provider | 通过 URL 查找提供者 |
list_capabilities | 名单提供者能力 |
describe_capability | 获得全部能力定义 |
connect_agent | 登记代理人(有可选限制) |
execute_capability | 执行授予的能力 |
request_capability | 请求增加能力 |
agent_status | 检查代理地位和赠款 |
sign_jwt | 手动签名代理 JWT |
disconnect_agent | 撤销代理 |
reactivate_agent | 重新激活过期的代理 |
rotate_agent_key | 旋转代理键盘 |
rotate_host_key | 旋转主机密钥pair |
enroll_host | 使用入学标志输入主机 |
过滤工具
使用 filterTools 只暴露您的代理工具:
import { getAgentAuthTools, filterTools } from "@auth/agent";
const allTools = getAgentAuthTools(client);
const minimal = filterTools(allTools, { only: ["execute_capability", "agent_status"] });
const safe = filterTools(allTools, { exclude: ["sign_jwt", "rotate_host_key"] });
子路径导入
对于只需要工具+适配器(没有客户端、加密或存储)的更轻的导入:
import { getAgentAuthTools, toOpenAITools, filterTools } from "@auth/agent/tools";
制约因素(第2.13节)
连接或请求限制参数值的能力时通过限制 :
await client.connectAgent({
provider: "https://api.example.com",
capabilities: [
"read_data",
{
name: "transfer_money",
constraints: {
amount: { max: 1000, min: 1 },
currency: { in: ["USD", "EUR"] },
},
},
],
});
受约束的赠款退还 capabilityGrants[].constraints。 。 。 .
存储
SDK使用可插件存储,用于持续的主机身份和代理连接:
import { AgentAuthClient } from "@auth/agent";
const client = new AgentAuthClient({
storage: myCustomStorage, // implements Storage interface
});
内建: MemoryStorage (默认,非持久性). 对于长期运行的应用程序,执行 Storage 与您首选的后端( 数据库、 文件系统、 KV 存储等) 接口 :
| 方法组 | 说明 |
|---|---|
getHostIdentity 编号 : setHostIdentity 编号 : deleteHostIdentity | 主机键盘和身份 |
getAgentConnection 编号 : setAgentConnection 编号 : deleteAgentConnection | 代理连接状态 |
getProviderConfig 编号 : setProviderConfig 编号 : listProviderConfigs | 缓存提供者发现文件 |
CLI 软件包 (
@auth/agent-cli)包括基于文件的文件FileStorage执行,休息时可选择加密——见packages/cli/src/storage.ts参考执行.
许可证
麻省理工学院