mirror of
https://github.com/DayuanJiang/next-ai-draw-io.git
synced 2026-10-13 04:59:51 +08:00
refactor(server): drop stale prompt text, duplicated routes and dead options
- lib/system-prompts.ts: delete the extended prompt kept only to reach the 4096-token cache threshold of two old Claude models; describe the current canvas-first UI in the App Features section - app/api/chat/route.ts: remove the server-side example cache (the browser answers examples itself), the ENABLE_HISTORY_XML_REPLACE option and its helper, the unread messageMetadata fields; the DEBUG_LLM_PAYLOAD blocks become one describeMessages summary - app/api/log-feedback and log-save share scoreLatestTrace in lib/langfuse.ts - app/api/admin/test-model and validate-model call a shared testModelConnection() instead of one route faking a request to the other and passing trust through the body - lib/dynamo-quota-manager.ts reads the failing item from the conditional update instead of a second GetItem - lib/ai-providers.ts: geminiThinkingOptions helper for the google and vertexai cases, drop the unused fourth resolveBaseURL parameter - edge-functions: always stream, shrink messageSchema, drop model aliases nothing sends - delete app/api/chat/xml_guide.md, parseOutputTokenLimit, unused type exports and export keywords on file-internal symbols - env.example: drop variables nothing reads, document the quota, validation and analytics variables, mention the apiKeyEnv array form (also in docs/*/ai-providers.md)
This commit is contained in:
@@ -9,7 +9,6 @@ import {
|
||||
describe("resolveBaseURL", () => {
|
||||
const SERVER_BASE_URL = "https://server-proxy.example.com"
|
||||
const USER_BASE_URL = "https://user-proxy.example.com"
|
||||
const DEFAULT_BASE_URL = "https://api.provider.com/v1"
|
||||
const USER_API_KEY = "user-api-key-123"
|
||||
|
||||
describe("when user provides their own API key", () => {
|
||||
@@ -18,28 +17,12 @@ describe("resolveBaseURL", () => {
|
||||
USER_API_KEY,
|
||||
USER_BASE_URL,
|
||||
SERVER_BASE_URL,
|
||||
DEFAULT_BASE_URL,
|
||||
)
|
||||
expect(result).toBe(USER_BASE_URL)
|
||||
})
|
||||
|
||||
it("uses default baseUrl when user provides no baseUrl", () => {
|
||||
const result = resolveBaseURL(
|
||||
USER_API_KEY,
|
||||
null,
|
||||
SERVER_BASE_URL,
|
||||
DEFAULT_BASE_URL,
|
||||
)
|
||||
expect(result).toBe(DEFAULT_BASE_URL)
|
||||
})
|
||||
|
||||
it("returns undefined when user provides no baseUrl and no default exists", () => {
|
||||
const result = resolveBaseURL(
|
||||
USER_API_KEY,
|
||||
null,
|
||||
SERVER_BASE_URL,
|
||||
undefined,
|
||||
)
|
||||
it("returns undefined when user provides no baseUrl", () => {
|
||||
const result = resolveBaseURL(USER_API_KEY, null, SERVER_BASE_URL)
|
||||
expect(result).toBeUndefined()
|
||||
})
|
||||
|
||||
@@ -48,92 +31,47 @@ describe("resolveBaseURL", () => {
|
||||
USER_API_KEY,
|
||||
undefined,
|
||||
SERVER_BASE_URL,
|
||||
undefined,
|
||||
)
|
||||
// Should NOT return SERVER_BASE_URL
|
||||
expect(result).not.toBe(SERVER_BASE_URL)
|
||||
expect(result).toBeUndefined()
|
||||
})
|
||||
|
||||
it("prefers user's baseUrl over default", () => {
|
||||
const result = resolveBaseURL(
|
||||
USER_API_KEY,
|
||||
USER_BASE_URL,
|
||||
SERVER_BASE_URL,
|
||||
DEFAULT_BASE_URL,
|
||||
)
|
||||
expect(result).toBe(USER_BASE_URL)
|
||||
})
|
||||
})
|
||||
|
||||
describe("when using server credentials (no user API key)", () => {
|
||||
it("uses user's baseUrl when provided (overrides server)", () => {
|
||||
const result = resolveBaseURL(
|
||||
null,
|
||||
USER_BASE_URL,
|
||||
SERVER_BASE_URL,
|
||||
DEFAULT_BASE_URL,
|
||||
)
|
||||
const result = resolveBaseURL(null, USER_BASE_URL, SERVER_BASE_URL)
|
||||
expect(result).toBe(USER_BASE_URL)
|
||||
})
|
||||
|
||||
it("falls back to server's baseUrl when no user baseUrl", () => {
|
||||
const result = resolveBaseURL(
|
||||
null,
|
||||
null,
|
||||
SERVER_BASE_URL,
|
||||
DEFAULT_BASE_URL,
|
||||
)
|
||||
const result = resolveBaseURL(null, null, SERVER_BASE_URL)
|
||||
expect(result).toBe(SERVER_BASE_URL)
|
||||
})
|
||||
|
||||
it("falls back to default when no user or server baseUrl", () => {
|
||||
const result = resolveBaseURL(
|
||||
null,
|
||||
null,
|
||||
undefined,
|
||||
DEFAULT_BASE_URL,
|
||||
)
|
||||
expect(result).toBe(DEFAULT_BASE_URL)
|
||||
})
|
||||
|
||||
it("returns undefined when no baseUrl available anywhere", () => {
|
||||
const result = resolveBaseURL(null, null, undefined, undefined)
|
||||
const result = resolveBaseURL(null, null, undefined)
|
||||
expect(result).toBeUndefined()
|
||||
})
|
||||
|
||||
it("handles undefined apiKey same as null", () => {
|
||||
const result = resolveBaseURL(
|
||||
undefined,
|
||||
null,
|
||||
SERVER_BASE_URL,
|
||||
DEFAULT_BASE_URL,
|
||||
)
|
||||
const result = resolveBaseURL(undefined, null, SERVER_BASE_URL)
|
||||
expect(result).toBe(SERVER_BASE_URL)
|
||||
})
|
||||
})
|
||||
|
||||
describe("edge cases", () => {
|
||||
it("handles empty string apiKey as falsy (uses server config)", () => {
|
||||
const result = resolveBaseURL(
|
||||
"",
|
||||
null,
|
||||
SERVER_BASE_URL,
|
||||
DEFAULT_BASE_URL,
|
||||
)
|
||||
const result = resolveBaseURL("", null, SERVER_BASE_URL)
|
||||
// Empty string is falsy, so should use server config
|
||||
expect(result).toBe(SERVER_BASE_URL)
|
||||
})
|
||||
|
||||
it("handles empty string baseUrl as falsy", () => {
|
||||
const result = resolveBaseURL(
|
||||
USER_API_KEY,
|
||||
"",
|
||||
SERVER_BASE_URL,
|
||||
DEFAULT_BASE_URL,
|
||||
)
|
||||
// Empty string baseUrl is falsy, should fall back to default
|
||||
expect(result).toBe(DEFAULT_BASE_URL)
|
||||
const result = resolveBaseURL(USER_API_KEY, "", SERVER_BASE_URL)
|
||||
// Empty string baseUrl is falsy; a user's key never goes to the
|
||||
// server's URL, so nothing is left
|
||||
expect(result).toBeUndefined()
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user