location-layer.ts 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import { Layer, LayerMap } from "effect"
  2. import { Location } from "./location"
  3. import { Policy } from "./policy"
  4. import { Config } from "./config"
  5. import { PluginV2 } from "./plugin"
  6. import { Catalog } from "./catalog"
  7. import { AgentV2 } from "./agent"
  8. import { PluginBoot } from "./plugin/boot"
  9. import { Project } from "./project"
  10. import { EventV2 } from "./event"
  11. import { Auth } from "./auth"
  12. import { Npm } from "./npm"
  13. import { ModelsDev } from "./models-dev"
  14. import { FSUtil } from "./fs-util"
  15. import { Global } from "./global"
  16. import { Database } from "./database/database"
  17. import { PermissionV2 } from "./permission"
  18. import { PermissionSaved } from "./permission/saved"
  19. import { SessionV2 } from "./session"
  20. import { FileSystem } from "./filesystem"
  21. import { Watcher } from "./filesystem/watcher"
  22. import { ProjectReference } from "./project-reference"
  23. import { RepositoryCache } from "./repository-cache"
  24. import { Pty } from "./pty"
  25. export class LocationServiceMap extends LayerMap.Service<LocationServiceMap>()("@opencode/example/LocationServiceMap", {
  26. lookup: (ref: Location.Ref) => {
  27. const location = Location.layer(ref)
  28. return Layer.mergeAll(
  29. location,
  30. Policy.locationLayer,
  31. Config.locationLayer,
  32. ProjectReference.locationLayer,
  33. PluginV2.locationLayer,
  34. Catalog.locationLayer,
  35. AgentV2.locationLayer,
  36. PluginBoot.locationLayer,
  37. PermissionV2.locationLayer,
  38. FileSystem.locationLayer,
  39. Watcher.locationLayer,
  40. Pty.locationLayer,
  41. ).pipe(Layer.provideMerge(location), Layer.fresh)
  42. },
  43. idleTimeToLive: "60 minutes",
  44. dependencies: [
  45. Project.defaultLayer,
  46. EventV2.defaultLayer,
  47. Auth.defaultLayer,
  48. Npm.defaultLayer,
  49. ModelsDev.defaultLayer,
  50. FSUtil.defaultLayer,
  51. Global.defaultLayer,
  52. Database.defaultLayer,
  53. SessionV2.defaultLayer,
  54. PermissionSaved.defaultLayer,
  55. RepositoryCache.defaultLayer,
  56. ],
  57. }) {}