refactor(server): canonicalize service API (#31049)

This commit is contained in:
Dax
2026-06-06 23:27:28 -04:00
committed by GitHub
parent 53ff1b57c9
commit fe0c4f8c74
388 changed files with 7103 additions and 4092 deletions
@@ -58,7 +58,9 @@ function componentName(ref: string) {
function componentNames(response: OpenApiResponse | undefined) {
const schema = response?.content?.["application/json"]?.schema
if (!schema) return []
return [schema, ...(schema.anyOf ?? [])].flatMap((item) => (item.$ref ? [componentName(item.$ref)] : []))
return [
...new Set([schema, ...(schema.anyOf ?? [])].flatMap((item) => (item.$ref ? [componentName(item.$ref)] : []))),
]
}
function isBuiltInEndpointError(name: string) {
@@ -110,8 +112,8 @@ describe("PublicApi OpenAPI v2 errors", () => {
for (const path of [
"/api/session/{sessionID}/prompt",
"/api/session/{sessionID}/permission/request/{requestID}/reply",
"/api/session/{sessionID}/question/request/{requestID}/reply",
"/api/session/{sessionID}/permission/{requestID}/reply",
"/api/session/{sessionID}/question/{requestID}/reply",
]) {
expect(spec.paths[path]?.post?.requestBody?.required, path).toBe(true)
}
@@ -175,9 +177,7 @@ describe("PublicApi OpenAPI v2 errors", () => {
["get", "/api/session/{sessionID}/context"],
["get", "/api/session/{sessionID}/message"],
] as const) {
expect(componentName(responseRef(spec.paths[route[1]]?.[route[0]]?.responses?.["404"]) ?? "")).toBe(
"SessionNotFoundError",
)
expect(componentNames(spec.paths[route[1]]?.[route[0]]?.responses?.["404"])).toContain("SessionNotFoundError")
}
})
@@ -237,12 +237,12 @@ describe("PublicApi OpenAPI v2 errors", () => {
)
}
for (const route of [
["post", "/api/session/{sessionID}/question/request/{requestID}/reply"],
["post", "/api/session/{sessionID}/question/request/{requestID}/reject"],
["post", "/api/session/{sessionID}/question/{requestID}/reply"],
["post", "/api/session/{sessionID}/question/{requestID}/reject"],
] as const) {
expect(componentNames(spec.paths[route[1]]?.[route[0]]?.responses?.["404"])).toEqual([
"SessionNotFoundError",
"QuestionNotFoundError",
"SessionNotFoundError",
])
}
})