Просмотр исходного кода

Source diff message query pattern (#26638)

Kit Langton 4 месяцев назад
Родитель
Сommit
49ee3ba85a

+ 0 - 1
packages/opencode/src/server/routes/instance/httpapi/public.ts

@@ -62,7 +62,6 @@ const QueryParameterSchemas: Record<string, OpenApiSchema> = {
   "GET /experimental/session limit": { type: "number" },
   "GET /experimental/session limit": { type: "number" },
   "GET /session start": { type: "number" },
   "GET /session start": { type: "number" },
   "GET /session limit": { type: "number" },
   "GET /session limit": { type: "number" },
-  "GET /session/{sessionID}/diff messageID": { type: "string", pattern: "^msg.*" },
   "GET /session/{sessionID}/message limit": { type: "integer", minimum: 0, maximum: Number.MAX_SAFE_INTEGER },
   "GET /session/{sessionID}/message limit": { type: "integer", minimum: 0, maximum: Number.MAX_SAFE_INTEGER },
   "GET /api/session limit": { type: "number" },
   "GET /api/session limit": { type: "number" },
   "GET /api/session start": { type: "number" },
   "GET /api/session start": { type: "number" },

+ 17 - 0
packages/opencode/test/server/httpapi-query-schema-drift.test.ts

@@ -75,6 +75,10 @@ const numericSdkQueryParams = [
   { method: "get", path: "/api/session/:sessionID/message", name: "limit", schema: { type: "number" } },
   { method: "get", path: "/api/session/:sessionID/message", name: "limit", schema: { type: "number" } },
 ] satisfies Array<{ method: Method; path: string; name: string; schema: OpenApiSchema }>
 ] satisfies Array<{ method: Method; path: string; name: string; schema: OpenApiSchema }>
 
 
+const queryParamPatterns = [
+  { method: "get", path: SessionPaths.diff, name: "messageID", pattern: "^msg" },
+] satisfies Array<{ method: Method; path: string; name: string; pattern: string }>
+
 const pathParamPatterns = [
 const pathParamPatterns = [
   { method: "get", path: SessionPaths.get, name: "sessionID", pattern: "^ses" },
   { method: "get", path: SessionPaths.get, name: "sessionID", pattern: "^ses" },
   { method: "get", path: SessionPaths.message, name: "messageID", pattern: "^msg" },
   { method: "get", path: SessionPaths.message, name: "messageID", pattern: "^msg" },
@@ -169,6 +173,19 @@ describe("httpapi query schema drift", () => {
     }),
     }),
   )
   )
 
 
+  it.effect(
+    "OpenAPI query parameter patterns come from runtime schemas",
+    Effect.sync(() => {
+      const spec = OpenApi.fromApi(PublicApi)
+      for (const expected of queryParamPatterns) {
+        expect(
+          queryParameter(spec.paths[openApiPath(expected.path)]?.[expected.method], expected.name)?.schema,
+          `${expected.method.toUpperCase()} ${expected.path} ${expected.name}`,
+        ).toEqual({ type: "string", pattern: expected.pattern })
+      }
+    }),
+  )
+
   it.effect(
   it.effect(
     "OpenAPI workspace query params are declared by runtime query schemas",
     "OpenAPI workspace query params are declared by runtime query schemas",
     Effect.sync(() => {
     Effect.sync(() => {