Download packages/protocol/src/groups/project-copy.ts from SaylorTwift/opencode: direct link, hf CLI and curl.
- Browser
- Download file 2.16 kB
-
https://huggingface.co/SaylorTwift/opencode/resolve/main/packages/protocol/src/groups/project-copy.ts
- Command line
-
hf download hf://SaylorTwift/opencode/packages/protocol/src/groups/project-copy.ts
-
curl -L -o project-copy.ts https://huggingface.co/SaylorTwift/opencode/resolve/main/packages/protocol/src/groups/project-copy.ts
2.16 kB
| import { ProjectCopy } from "@opencode-ai/schema/project-copy" | |
| import { Project } from "@opencode-ai/schema/project" | |
| import { Schema, Struct } from "effect" | |
| import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/unstable/httpapi" | |
| import { LocationQuery, locationQueryOpenApi } from "./location" | |
| const root = "/experimental/project/:projectID/copy" | |
| export class ProjectCopyError extends Schema.ErrorClass<ProjectCopyError>("ProjectCopyError")( | |
| { | |
| name: Schema.Literal("ProjectCopyError"), | |
| data: Schema.Struct({ | |
| message: Schema.String, | |
| forceRequired: Schema.optional(Schema.Boolean), | |
| }), | |
| }, | |
| { httpApiStatus: 400 }, | |
| ) {} | |
| const CreatePayload = Schema.Struct(Struct.omit(ProjectCopy.CreateInput.fields, ["projectID", "sourceDirectory"])) | |
| const RemovePayload = Schema.Struct(Struct.omit(ProjectCopy.RemoveInput.fields, ["projectID"])) | |
| export const ProjectCopyGroup = HttpApiGroup.make("server.projectCopy") | |
| .add( | |
| HttpApiEndpoint.post("projectCopy.create", root, { | |
| params: { projectID: Project.ID }, | |
| query: LocationQuery, | |
| payload: CreatePayload, | |
| success: ProjectCopy.Copy, | |
| error: ProjectCopyError, | |
| }) | |
| .annotateMerge(locationQueryOpenApi) | |
| .annotateMerge(OpenApi.annotations({ identifier: "v2.projectCopy.create" })), | |
| ) | |
| .add( | |
| HttpApiEndpoint.delete("projectCopy.remove", root, { | |
| params: { projectID: Project.ID }, | |
| query: LocationQuery, | |
| payload: RemovePayload, | |
| success: HttpApiSchema.NoContent, | |
| error: ProjectCopyError, | |
| }) | |
| .annotateMerge(locationQueryOpenApi) | |
| .annotateMerge(OpenApi.annotations({ identifier: "v2.projectCopy.remove" })), | |
| ) | |
| .add( | |
| HttpApiEndpoint.post("projectCopy.refresh", `${root}/refresh`, { | |
| params: { projectID: Project.ID }, | |
| query: LocationQuery, | |
| success: HttpApiSchema.NoContent, | |
| error: ProjectCopyError, | |
| }) | |
| .annotateMerge(locationQueryOpenApi) | |
| .annotateMerge(OpenApi.annotations({ identifier: "v2.projectCopy.refresh" })), | |
| ) | |
| .annotateMerge(OpenApi.annotations({ title: "projectCopy", description: "Project copy management routes." })) | |