diff --git a/packages/core/test/lib/project.ts b/packages/core/test/lib/project.ts new file mode 100644 index 0000000000..0905cd8c09 --- /dev/null +++ b/packages/core/test/lib/project.ts @@ -0,0 +1,11 @@ +import { Project } from "@opencode-ai/core/project" +import { Effect, Layer } from "effect" + +export const globalProjectLayer = Layer.succeed( + Project.Service, + Project.Service.of({ + list: () => Effect.succeed([]), + resolve: (directory) => Effect.succeed({ id: Project.ID.global, directory, canonical: directory }), + directories: () => Effect.succeed([]), + }), +) diff --git a/packages/core/test/session-compact.test.ts b/packages/core/test/session-compact.test.ts index 8f8da70b21..7f4d7c1146 100644 --- a/packages/core/test/session-compact.test.ts +++ b/packages/core/test/session-compact.test.ts @@ -22,6 +22,7 @@ import { SessionRunnerModel } from "@opencode-ai/core/session/runner/model" import { SessionStore } from "@opencode-ai/core/session/store" import { DateTime, Effect, Layer, LayerMap, Stream } from "effect" import { testEffect } from "./lib/effect" +import { globalProjectLayer } from "./lib/project" const location = Location.Ref.make({ directory: AbsolutePath.make("/project") }) const model = LanguageModel.make({ @@ -29,14 +30,6 @@ const model = LanguageModel.make({ provider: "test", route: OpenAIChat.route.with({ limits: { context: 10_000, output: 1_000 } }), }) -const projects = Layer.succeed( - Project.Service, - Project.Service.of({ - list: () => Effect.succeed([]), - resolve: (directory) => Effect.succeed({ id: Project.ID.global, directory, canonical: directory }), - directories: () => Effect.succeed([]), - }), -) let requests: LLMRequest[] = [] const client = Layer.mock(LLMClient.Service)({ stream: (request: LLMRequest) => { @@ -73,7 +66,7 @@ const it = testEffect( LayerNode.group([Database.node, Bus.node, SessionProjector.node, SessionStore.node, Session.node]), [ [LocationServiceMap.node, locations], - [Project.node, projects], + [Project.node, globalProjectLayer], [SessionExecution.node, SessionExecution.noopLayer], ], ), diff --git a/packages/core/test/session-create.test.ts b/packages/core/test/session-create.test.ts index 57ebf17d0e..8342c4f6cf 100644 --- a/packages/core/test/session-create.test.ts +++ b/packages/core/test/session-create.test.ts @@ -29,16 +29,9 @@ import { SessionStore } from "@opencode-ai/core/session/store" import { SessionTransfer } from "@opencode-ai/core/session/transfer" import { Workspace } from "@opencode-ai/core/workspace" import { testEffect } from "./lib/effect" +import { globalProjectLayer } from "./lib/project" import { tmpdir } from "./fixture/tmpdir" -const projects = Layer.succeed( - Project.Service, - Project.Service.of({ - list: () => Effect.succeed([]), - resolve: (directory) => Effect.succeed({ id: Project.ID.global, directory, canonical: directory }), - directories: () => Effect.succeed([]), - }), -) const it = testEffect( AppNodeBuilder.build( LayerNode.group([ @@ -51,7 +44,7 @@ const it = testEffect( ]), [ [Bus.node, Bus.configured({ persist: true })], - [Project.node, projects], + [Project.node, globalProjectLayer], [SessionExecution.node, SessionExecution.noopLayer], ], ), diff --git a/packages/core/test/session-instructions.test.ts b/packages/core/test/session-instructions.test.ts index 77036b77ef..e17204e194 100644 --- a/packages/core/test/session-instructions.test.ts +++ b/packages/core/test/session-instructions.test.ts @@ -34,6 +34,7 @@ import { tempLocationLayer } from "./fixture/location" import { makeLocationNode } from "@opencode-ai/util/effect/app-node" import { testEffect } from "./lib/effect" import { permissionLayer } from "./lib/permission" +import { globalProjectLayer } from "./lib/project" import { executeTool, registerToolPlugin } from "./lib/tool" const readToolNode = makeLocationNode({ @@ -51,14 +52,6 @@ const readToolNode = makeLocationNode({ ], }) -const projects = Layer.succeed( - Project.Service, - Project.Service.of({ - list: () => Effect.succeed([]), - resolve: (directory) => Effect.succeed({ id: Project.ID.global, directory, canonical: directory }), - directories: () => Effect.succeed([]), - }), -) const permission = permissionLayer({ assert: () => Effect.void }) const config = Config.testLayer() const imageLayer = AppNodeBuilder.build(Image.node, [[Config.node, config]]) @@ -83,7 +76,7 @@ const testLayer = AppNodeBuilder.build( Image.node, ]), [ - [Project.node, projects], + [Project.node, globalProjectLayer], [SessionExecution.node, SessionExecution.noopLayer], [Location.node, tempLocationLayer], [Permission.node, permission], diff --git a/packages/core/test/session-log.test.ts b/packages/core/test/session-log.test.ts index e72ff388e0..1a7dc4a4c7 100644 --- a/packages/core/test/session-log.test.ts +++ b/packages/core/test/session-log.test.ts @@ -1,5 +1,5 @@ import { describe, expect } from "bun:test" -import { Effect, Fiber, Layer, Schema, Stream } from "effect" +import { Effect, Fiber, Schema, Stream } from "effect" import { Database } from "@opencode-ai/core/database/database" import { Agent } from "@opencode-ai/core/agent" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" @@ -16,21 +16,14 @@ import { SessionExecution } from "@opencode-ai/core/session/execution" import { SessionStore } from "@opencode-ai/core/session/store" import { SessionTable } from "@opencode-ai/core/session/sql" import { testEffect } from "./lib/effect" +import { globalProjectLayer } from "./lib/project" -const projects = Layer.succeed( - Project.Service, - Project.Service.of({ - list: () => Effect.succeed([]), - resolve: (directory) => Effect.succeed({ id: Project.ID.global, directory, canonical: directory }), - directories: () => Effect.succeed([]), - }), -) const it = testEffect( AppNodeBuilder.build( LayerNode.group([Database.node, Bus.node, SessionProjector.node, SessionStore.node, Session.node]), [ [Bus.node, Bus.configured({ persist: true })], - [Project.node, projects], + [Project.node, globalProjectLayer], [SessionExecution.node, SessionExecution.noopLayer], ], ), diff --git a/packages/core/test/session-move.test.ts b/packages/core/test/session-move.test.ts index fba3649687..0240f85ad5 100644 --- a/packages/core/test/session-move.test.ts +++ b/packages/core/test/session-move.test.ts @@ -1,6 +1,6 @@ import { describe, expect } from "bun:test" import path from "path" -import { Effect, Layer } from "effect" +import { Effect } from "effect" import { Event } from "@opencode-ai/schema/project-directories" import { Bus } from "@opencode-ai/core/bus" import { Database } from "@opencode-ai/core/database/database" @@ -16,20 +16,13 @@ import { SessionStore } from "@opencode-ai/core/session/store" import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { tmpdir } from "./fixture/tmpdir" import { testEffect } from "./lib/effect" +import { globalProjectLayer } from "./lib/project" -const projects = Layer.succeed( - Project.Service, - Project.Service.of({ - list: () => Effect.succeed([]), - resolve: (directory) => Effect.succeed({ id: Project.ID.global, directory, canonical: directory }), - directories: () => Effect.succeed([]), - }), -) const it = testEffect( AppNodeBuilder.build( LayerNode.group([Database.node, Bus.node, SessionProjector.node, SessionStore.node, Session.node]), [ - [Project.node, projects], + [Project.node, globalProjectLayer], [SessionExecution.node, SessionExecution.noopLayer], ], ), diff --git a/packages/core/test/session-remove.test.ts b/packages/core/test/session-remove.test.ts index ec7c532bc7..c160701e4e 100644 --- a/packages/core/test/session-remove.test.ts +++ b/packages/core/test/session-remove.test.ts @@ -1,5 +1,5 @@ import { describe, expect } from "bun:test" -import { Effect, Layer } from "effect" +import { Effect } from "effect" import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" import { LayerNode } from "@opencode-ai/util/effect/layer-node" import { Database } from "@opencode-ai/core/database/database" @@ -12,20 +12,13 @@ import { SessionExecution } from "@opencode-ai/core/session/execution" import { SessionProjector } from "@opencode-ai/core/session/projector" import { SessionStore } from "@opencode-ai/core/session/store" import { testEffect } from "./lib/effect" +import { globalProjectLayer } from "./lib/project" -const projects = Layer.succeed( - Project.Service, - Project.Service.of({ - list: () => Effect.succeed([]), - resolve: (directory) => Effect.succeed({ id: Project.ID.global, directory, canonical: directory }), - directories: () => Effect.succeed([]), - }), -) const it = testEffect( AppNodeBuilder.build( LayerNode.group([Database.node, Bus.node, SessionProjector.node, SessionStore.node, Session.node]), [ - [Project.node, projects], + [Project.node, globalProjectLayer], [SessionExecution.node, SessionExecution.noopLayer], ], ),