diff options
| author | Kit Langton <[email protected]> | 2026-04-15 22:07:42 -0400 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-04-16 02:07:42 +0000 |
| commit | 5eae92684658c36a5026c9a36edcdf1163517022 (patch) | |
| tree | 0770c7d674b274454a409211c0864ed613ef2bc3 /packages/server/src/definition | |
| parent | cce05c16658a39d091f658bdb53dcce1e88c66d0 (diff) | |
| download | opencode-5eae92684658c36a5026c9a36edcdf1163517022.tar.gz opencode-5eae92684658c36a5026c9a36edcdf1163517022.zip | |
add experimental provider auth HttpApi slice (#22389)
Diffstat (limited to 'packages/server/src/definition')
| -rw-r--r-- | packages/server/src/definition/api.ts | 12 | ||||
| -rw-r--r-- | packages/server/src/definition/index.ts | 2 | ||||
| -rw-r--r-- | packages/server/src/definition/question.ts | 94 |
3 files changed, 0 insertions, 108 deletions
diff --git a/packages/server/src/definition/api.ts b/packages/server/src/definition/api.ts deleted file mode 100644 index e2f70196d..000000000 --- a/packages/server/src/definition/api.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { HttpApi, OpenApi } from "effect/unstable/httpapi" -import { questionApi } from "./question.js" - -export const api = HttpApi.make("opencode") - .addHttpApi(questionApi) - .annotateMerge( - OpenApi.annotations({ - title: "opencode experimental HttpApi", - version: "0.0.1", - description: "Experimental HttpApi surface for selected instance routes.", - }), - ) diff --git a/packages/server/src/definition/index.ts b/packages/server/src/definition/index.ts deleted file mode 100644 index e9a52dc93..000000000 --- a/packages/server/src/definition/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { api } from "./api.js" -export { questionApi, QuestionReply, QuestionRequest } from "./question.js" diff --git a/packages/server/src/definition/question.ts b/packages/server/src/definition/question.ts deleted file mode 100644 index 0d161e013..000000000 --- a/packages/server/src/definition/question.ts +++ /dev/null @@ -1,94 +0,0 @@ -import { Schema } from "effect" -import { HttpApi, HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi" - -const root = "/experimental/httpapi/question" - -// Temporary transport-local schemas until canonical question schemas move into packages/core. -export const QuestionID = Schema.String.annotate({ identifier: "QuestionID" }) -export const SessionID = Schema.String.annotate({ identifier: "SessionID" }) -export const MessageID = Schema.String.annotate({ identifier: "MessageID" }) - -export class QuestionOption extends Schema.Class<QuestionOption>("QuestionOption")({ - label: Schema.String.annotate({ - description: "Display text (1-5 words, concise)", - }), - description: Schema.String.annotate({ - description: "Explanation of choice", - }), -}) {} - -const base = { - question: Schema.String.annotate({ - description: "Complete question", - }), - header: Schema.String.annotate({ - description: "Very short label (max 30 chars)", - }), - options: Schema.Array(QuestionOption).annotate({ - description: "Available choices", - }), - multiple: Schema.optional(Schema.Boolean).annotate({ - description: "Allow selecting multiple choices", - }), -} - -export class QuestionInfo extends Schema.Class<QuestionInfo>("QuestionInfo")({ - ...base, - custom: Schema.optional(Schema.Boolean).annotate({ - description: "Allow typing a custom answer (default: true)", - }), -}) {} - -export class QuestionTool extends Schema.Class<QuestionTool>("QuestionTool")({ - messageID: MessageID, - callID: Schema.String, -}) {} - -export class QuestionRequest extends Schema.Class<QuestionRequest>("QuestionRequest")({ - id: QuestionID, - sessionID: SessionID, - questions: Schema.Array(QuestionInfo).annotate({ - description: "Questions to ask", - }), - tool: Schema.optional(QuestionTool), -}) {} - -export const QuestionAnswer = Schema.Array(Schema.String).annotate({ identifier: "QuestionAnswer" }) - -export class QuestionReply extends Schema.Class<QuestionReply>("QuestionReply")({ - answers: Schema.Array(QuestionAnswer).annotate({ - description: "User answers in order of questions (each answer is an array of selected labels)", - }), -}) {} - -export const questionApi = HttpApi.make("question").add( - HttpApiGroup.make("question") - .add( - HttpApiEndpoint.get("list", root, { - success: Schema.Array(QuestionRequest), - }).annotateMerge( - OpenApi.annotations({ - identifier: "question.list", - summary: "List pending questions", - description: "Get all pending question requests across all sessions.", - }), - ), - HttpApiEndpoint.post("reply", `${root}/:requestID/reply`, { - params: { requestID: QuestionID }, - payload: QuestionReply, - success: Schema.Boolean, - }).annotateMerge( - OpenApi.annotations({ - identifier: "question.reply", - summary: "Reply to question request", - description: "Provide answers to a question request from the AI assistant.", - }), - ), - ) - .annotateMerge( - OpenApi.annotations({ - title: "question", - description: "Experimental HttpApi question routes.", - }), - ), -) |
