mirror of
https://github.com/anomalyco/opencode.git
synced 2026-11-14 20:21:39 +03:00
34 lines
1.4 KiB
TypeScript
34 lines
1.4 KiB
TypeScript
import type { FileSystem } from "@opencode/core/filesystem"
|
|
import { Bus } from "@opencode/core/bus"
|
|
import { Image } from "@opencode/core/image"
|
|
import { LocationServiceMap } from "@opencode/core/location-service-map"
|
|
import type { LocationServices } from "@opencode/core/location-services"
|
|
import { Plugin } from "@opencode/core/plugin"
|
|
import { PluginHooks } from "@opencode/core/plugin/hooks"
|
|
import { Skill } from "@opencode/core/skill"
|
|
import type { Location } from "@opencode/schema/location"
|
|
import { makeGlobalNode } from "@opencode/util/effect/app-node"
|
|
import { LayerNode } from "@opencode/util/effect/layer-node"
|
|
import { Effect, Layer, LayerMap } from "effect"
|
|
|
|
// Plain-prompt unit fixtures use virtual directories.
|
|
export const promptLocationNode = makeGlobalNode({
|
|
service: LocationServiceMap.Service,
|
|
layer: Layer.effect(
|
|
LocationServiceMap.Service,
|
|
Effect.gen(function* () {
|
|
const bus = yield* Bus.Service
|
|
return yield* LayerMap.make(
|
|
(_ref: Location.Ref) =>
|
|
LayerNode.compile(LayerNode.group([PluginHooks.node, Image.node, Skill.node, Plugin.node]), {
|
|
replacements: [
|
|
Bus.node.replace(Layer.succeed(Bus.Service, bus)),
|
|
Plugin.node.replace(Layer.mock(Plugin.Service, { awaitActivation: Effect.void })),
|
|
],
|
|
}) as unknown as Layer.Layer<LocationServices, FileSystem.DirectoryNotFoundError>,
|
|
)
|
|
}),
|
|
),
|
|
deps: [Bus.node],
|
|
})
|