MCPcopy Create free account
hub / github.com/anomalyco/opencode / makeQuestionGroup

Function makeQuestionGroup

packages/protocol/src/groups/question.ts:9–84  ·  view source on GitHub ↗
(
  locationMiddleware: Context.Key<LocationId, LocationService>,
  sessionLocationMiddleware: Context.Key<SessionLocationId, SessionLocationService>,
)

Source from the content-addressed store, hash-verified

7import { LocationQuery, locationQueryOpenApi } from "./location"
8
9export const makeQuestionGroup = <
10 LocationId extends HttpApiMiddleware.AnyId,
11 LocationService,
12 SessionLocationId extends HttpApiMiddleware.AnyId,
13 SessionLocationService,
14>(
15 locationMiddleware: Context.Key<LocationId, LocationService>,
16 sessionLocationMiddleware: Context.Key<SessionLocationId, SessionLocationService>,
17) =>
18 HttpApiGroup.make("server.question")
19 .add(
20 HttpApiEndpoint.get("question.request.list", "/api/question/request", {
21 query: LocationQuery,
22 success: Location.response(Schema.Array(Question.Request)),
23 })
24 .annotateMerge(locationQueryOpenApi)
25 .annotateMerge(
26 OpenApi.annotations({
27 identifier: "v2.question.request.list",
28 summary: "List pending question requests",
29 description: "Retrieve pending question requests for a location.",
30 }),
31 ),
32 )
33 .annotateMerge(OpenApi.annotations({ title: "questions", description: "Experimental question routes." }))
34 // Effect applies group middleware only to endpoints already added; session endpoints use session placement below.
35 .middleware(locationMiddleware)
36 .add(
37 HttpApiEndpoint.get("session.question.list", "/api/session/:sessionID/question", {
38 params: { sessionID: Session.ID },
39 success: Schema.Struct({ data: Schema.Array(Question.Request) }),
40 error: SessionNotFoundError,
41 })
42 .middleware(sessionLocationMiddleware)
43 .annotateMerge(
44 OpenApi.annotations({
45 identifier: "v2.session.question.list",
46 summary: "List session question requests",
47 description: "Retrieve pending question requests owned by a session.",
48 }),
49 ),
50 )
51 .add(
52 HttpApiEndpoint.post("session.question.reply", "/api/session/:sessionID/question/:requestID/reply", {
53 params: { sessionID: Session.ID, requestID: Question.ID },
54 payload: Question.Reply,
55 success: HttpApiSchema.NoContent,
56 error: [SessionNotFoundError, QuestionNotFoundError],
57 })
58 .middleware(sessionLocationMiddleware)
59 .annotateMerge(
60 OpenApi.annotations({
61 identifier: "v2.session.question.reply",
62 summary: "Reply to pending question request",
63 description: "Answer a pending question request owned by a session.",
64 }),
65 ),
66 )

Callers 1

makeApiFromGroupFunction · 0.90

Calls 4

addMethod · 0.65
getMethod · 0.65
makeMethod · 0.45
responseMethod · 0.45

Tested by

no test coverage detected