| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- import { Hono } from "hono"
- import { describeRoute, validator } from "hono-openapi"
- import { resolver } from "hono-openapi"
- import { Instance } from "../project/instance"
- import { Project } from "../project/project"
- import z from "zod"
- import { errors } from "./error"
- export const ProjectRoute = new Hono()
- .get(
- "/",
- describeRoute({
- summary: "List all projects",
- description: "Get a list of projects that have been opened with OpenCode.",
- operationId: "project.list",
- responses: {
- 200: {
- description: "List of projects",
- content: {
- "application/json": {
- schema: resolver(Project.Info.array()),
- },
- },
- },
- },
- }),
- async (c) => {
- const projects = await Project.list()
- return c.json(projects)
- },
- )
- .get(
- "/current",
- describeRoute({
- summary: "Get current project",
- description: "Retrieve the currently active project that OpenCode is working with.",
- operationId: "project.current",
- responses: {
- 200: {
- description: "Current project information",
- content: {
- "application/json": {
- schema: resolver(Project.Info),
- },
- },
- },
- },
- }),
- async (c) => {
- return c.json(Instance.project)
- },
- )
- .patch(
- "/:projectID",
- describeRoute({
- summary: "Update project",
- description: "Update project properties such as name, icon and color.",
- operationId: "project.update",
- responses: {
- 200: {
- description: "Updated project information",
- content: {
- "application/json": {
- schema: resolver(Project.Info),
- },
- },
- },
- ...errors(400, 404),
- },
- }),
- validator("param", z.object({ projectID: z.string() })),
- validator("json", Project.update.schema.omit({ projectID: true })),
- async (c) => {
- const projectID = c.req.valid("param").projectID
- const body = c.req.valid("json")
- const project = await Project.update({ ...body, projectID })
- return c.json(project)
- },
- )
|