location-layer.ts 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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 { AppFileSystem } from "./filesystem"
  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 { LocationFileSystem } from "./location-filesystem"
  21. export class LocationServiceMap extends LayerMap.Service<LocationServiceMap>()("@opencode/example/LocationServiceMap", {
  22. lookup: (ref: Location.Ref) => {
  23. const location = Location.layer(ref)
  24. return Layer.mergeAll(
  25. location,
  26. Policy.locationLayer,
  27. Config.locationLayer,
  28. PluginV2.locationLayer,
  29. Catalog.locationLayer,
  30. AgentV2.locationLayer,
  31. PluginBoot.locationLayer,
  32. PermissionV2.locationLayer,
  33. LocationFileSystem.locationLayer,
  34. ).pipe(Layer.provideMerge(location), Layer.fresh)
  35. },
  36. idleTimeToLive: "60 minutes",
  37. dependencies: [
  38. Project.defaultLayer,
  39. EventV2.defaultLayer,
  40. Auth.defaultLayer,
  41. Npm.defaultLayer,
  42. ModelsDev.defaultLayer,
  43. AppFileSystem.defaultLayer,
  44. Global.defaultLayer,
  45. Database.defaultLayer,
  46. SessionV2.defaultLayer,
  47. PermissionSaved.defaultLayer,
  48. ],
  49. }) {}