feat(agent): add typed server API tools

This commit is contained in:
2026-07-15 10:44:07 +08:00
parent f3f873e3c4
commit 8a21908785
30 changed files with 3119 additions and 15 deletions
+10
View File
@@ -84,6 +84,9 @@ const envSchema = z
OPENCODE_BASE_URL: z.string().url().optional(),
// TJWater 后端 API 的基础地址。
TJWATER_API_BASE_URL: z.string().default("http://127.0.0.1:8000"),
// 本地实验环境默认开放受控领域工具;生产环境仍由下方鉴权校验保护。
TJWATER_API_ENABLED: optionalBoolean(true),
TJWATER_AUTH_MODE: z.enum(["disabled"]).default("disabled"),
// 代理调用 TJWater 后端 API 的超时时间(毫秒)。
TJWATER_API_TIMEOUT_MS: z.coerce.number().int().positive().default(30000),
// 后端结果在直接内联返回给模型前允许的最大字节数。
@@ -138,6 +141,13 @@ const envSchema = z
.default(3600000),
})
.superRefine((env, ctx) => {
if (env.NODE_ENV === "production" && env.TJWATER_API_ENABLED && env.TJWATER_AUTH_MODE === "disabled") {
ctx.addIssue({
code: z.ZodIssueCode.custom,
path: ["TJWATER_AUTH_MODE"],
message: "TJWATER API tools cannot run without authentication in production",
});
}
if (env.OPENCODE_MODE === "client" && !env.OPENCODE_CLIENT_BASE_URL) {
ctx.addIssue({
code: z.ZodIssueCode.custom,