project-copy.ts 1.4 KB

1234567891011121314151617181920212223242526272829303132
  1. import { ProjectV2 } from "@kirincode-ai/core/project"
  2. import { Schema } from "effect"
  3. import { HttpApi, HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi"
  4. import { Authorization } from "../middleware/authorization"
  5. import { InstanceContextMiddleware } from "../middleware/instance-context"
  6. import { WorkspaceRoutingMiddleware, WorkspaceRoutingQuery } from "../middleware/workspace-routing"
  7. export const GenerateNamePayload = Schema.Struct({
  8. context: Schema.optional(Schema.String),
  9. })
  10. export const ProjectCopyApi = HttpApi.make("projectCopyName").add(
  11. HttpApiGroup.make("projectCopyName")
  12. .add(
  13. HttpApiEndpoint.post("generateName", "/experimental/project/:projectID/copy/generate-name", {
  14. params: { projectID: ProjectV2.ID },
  15. query: WorkspaceRoutingQuery,
  16. payload: GenerateNamePayload,
  17. success: Schema.Struct({ name: Schema.String }),
  18. }).annotateMerge(
  19. OpenApi.annotations({
  20. identifier: "experimental.projectCopy.generateName",
  21. summary: "Generate project copy name",
  22. description: "Generate a short name for a project copy from task context.",
  23. }),
  24. ),
  25. )
  26. .annotateMerge(OpenApi.annotations({ title: "projectCopy", description: "Project copy naming routes." }))
  27. .middleware(InstanceContextMiddleware)
  28. .middleware(WorkspaceRoutingMiddleware)
  29. .middleware(Authorization),
  30. )