api.ts 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import { HttpApi, HttpApiGroup, OpenApi } from "effect/unstable/httpapi"
  2. import { SchemaErrorMiddleware } from "./middleware/schema-error"
  3. import { MessageGroup } from "./groups/message"
  4. import { ModelGroup } from "./groups/model"
  5. import { ProviderGroup } from "./groups/provider"
  6. import { SessionGroup } from "./groups/session"
  7. import { PermissionGroup } from "./groups/permission"
  8. import { FileSystemGroup } from "./groups/fs"
  9. import { CommandGroup } from "./groups/command"
  10. import { SkillGroup } from "./groups/skill"
  11. import { EventGroup, makeEventGroup } from "./groups/event"
  12. import type { Definition } from "@opencode-ai/core/event"
  13. import { AgentGroup } from "./groups/agent"
  14. import { HealthGroup } from "./groups/health"
  15. import { PtyGroup } from "./groups/pty"
  16. import { QuestionGroup } from "./groups/question"
  17. import { ReferenceGroup } from "./groups/reference"
  18. import { Authorization } from "./middleware/authorization"
  19. import { LocationGroup } from "./groups/location"
  20. import { IntegrationGroup } from "./groups/integration"
  21. import { CredentialGroup } from "./groups/credential"
  22. import { ProjectCopyGroup } from "./groups/project-copy"
  23. const makeApiFromGroup = <const Group extends HttpApiGroup.Any>(eventGroup: Group) =>
  24. HttpApi.make("server")
  25. .add(HealthGroup)
  26. .add(LocationGroup)
  27. .add(AgentGroup)
  28. .add(SessionGroup)
  29. .add(MessageGroup)
  30. .add(ModelGroup)
  31. .add(ProviderGroup)
  32. .add(IntegrationGroup)
  33. .add(CredentialGroup)
  34. .add(PermissionGroup)
  35. .add(FileSystemGroup)
  36. .add(CommandGroup)
  37. .add(SkillGroup)
  38. .add(eventGroup)
  39. .add(PtyGroup)
  40. .add(QuestionGroup)
  41. .add(ReferenceGroup)
  42. .add(ProjectCopyGroup)
  43. .annotateMerge(
  44. OpenApi.annotations({
  45. title: "opencode HttpApi",
  46. version: "0.0.1",
  47. description: "Experimental HttpApi surface for selected instance routes.",
  48. }),
  49. )
  50. .middleware(Authorization)
  51. .middleware(SchemaErrorMiddleware)
  52. export const makeApi = (definitions: ReadonlyArray<Definition>) => makeApiFromGroup(makeEventGroup(definitions))
  53. export const Api = makeApiFromGroup(EventGroup)