import { AgentV2 } from "@opencode-ai/core/agent" import { AISDK } from "@opencode-ai/core/aisdk" import { Catalog } from "@opencode-ai/core/catalog" import { CommandV2 } from "@opencode-ai/core/command" import { Credential } from "@opencode-ai/core/credential" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" import { LayerNodePlatform } from "@opencode-ai/core/effect/app-node-platform" import { LayerNode } from "@opencode-ai/core/effect/layer-node" import { EventV2 } from "@opencode-ai/core/event" import { FileSystem } from "@opencode-ai/core/filesystem" import { FSUtil } from "@opencode-ai/core/fs-util" import { Integration } from "@opencode-ai/core/integration" import { Location } from "@opencode-ai/core/location" import { Npm } from "@opencode-ai/core/npm" import { PluginV2 } from "@opencode-ai/core/plugin" import { PluginRuntime } from "@opencode-ai/core/plugin/runtime" import { Reference } from "@opencode-ai/core/reference" import { SkillV2 } from "@opencode-ai/core/skill" import { ToolHooks } from "@opencode-ai/core/tool/hooks" import { ToolRegistry } from "@opencode-ai/core/tool/registry" import { Effect, Layer } from "effect" import { tempLocationLayer } from "../fixture/location" const npmLayer = Layer.succeed( Npm.Service, Npm.Service.of({ add: () => Effect.succeed({ directory: "", entrypoint: undefined }), install: () => Effect.void, which: () => Effect.succeed(undefined), }), ) export const PluginTestLayer = AppNodeBuilder.build( LayerNode.group([ FileSystem.node, FSUtil.node, Location.node, Npm.node, Credential.node, EventV2.node, LayerNodePlatform.httpClient, PluginV2.node, AgentV2.node, AISDK.node, Catalog.node, CommandV2.node, Integration.node, PluginRuntime.node, Reference.node, SkillV2.node, ToolHooks.node, ToolRegistry.toolsNode, ]), [ [Location.node, tempLocationLayer], [Npm.node, npmLayer], ], ) as unknown as Layer.Layer