contract.ts 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import { makeDefaultApi } from "@kirincode-ai/protocol/api"
  2. import { InvalidRequestError, SessionNotFoundError } from "@kirincode-ai/protocol/errors"
  3. import { HttpApiMiddleware } from "effect/unstable/httpapi"
  4. class LocationMiddleware extends HttpApiMiddleware.Service<LocationMiddleware>()(
  5. "@kirincode-ai/client/LocationMiddleware",
  6. ) {}
  7. class SessionLocationMiddleware extends HttpApiMiddleware.Service<SessionLocationMiddleware>()(
  8. "@kirincode-ai/client/SessionLocationMiddleware",
  9. { error: [InvalidRequestError, SessionNotFoundError] },
  10. ) {}
  11. export const ClientApi = makeDefaultApi({
  12. locationMiddleware: LocationMiddleware,
  13. sessionLocationMiddleware: SessionLocationMiddleware,
  14. })
  15. export const groupNames = {
  16. "server.health": "health",
  17. "server.location": "location",
  18. "server.agent": "agents",
  19. "server.session": "sessions",
  20. "server.message": "messages",
  21. "server.model": "models",
  22. "server.provider": "providers",
  23. "server.integration": "integrations",
  24. "server.credential": "credentials",
  25. "server.permission": "permissions",
  26. "server.fs": "files",
  27. "server.command": "commands",
  28. "server.skill": "skills",
  29. "server.event": "events",
  30. "server.pty": "ptys",
  31. "server.question": "questions",
  32. "server.reference": "references",
  33. "server.projectCopy": "projectCopies",
  34. } as const
  35. export const endpointNames = {
  36. "session.messages": "list",
  37. "integration.connect.key": "connectKey",
  38. "integration.connect.oauth": "connectOauth",
  39. "integration.attempt.status": "attemptStatus",
  40. "integration.attempt.complete": "attemptComplete",
  41. "integration.attempt.cancel": "attemptCancel",
  42. "permission.request.list": "listRequests",
  43. "permission.saved.list": "listSaved",
  44. "permission.saved.remove": "removeSaved",
  45. "question.request.list": "listRequests",
  46. } as const
  47. export const omitEndpoints = new Set(["fs.read", "pty.connect", "pty.connectToken"])