41 lines · 1.3 KB · TypeScript
RawDownload
import * as NodeAssert from "node:assert/strict"; import * as NodeServices from "@effect/platform-node/NodeServices";import type { OpencodeClient } from "@opencode-ai/sdk/v2";import { it } from "@effect/vitest";import * as Effect from "effect/Effect";import * as Layer from "effect/Layer"; import { OpenCodeRuntime, OpenCodeRuntimeLive } from "./opencodeRuntime.ts"; const testLayer = OpenCodeRuntimeLive.pipe(Layer.provideMerge(NodeServices.layer)); it.layer(testLayer)("loadOpenCodeInventory", (it) => {  it.effect("keeps provider inventory when skill discovery fails", () =>    Effect.gen(function* () {      const runtime = yield* OpenCodeRuntime;      const client = {        provider: {          list: () =>            Promise.resolve({              data: {                connected: ["openai"],                all: [],                default: {},              },            }),        },        app: {          agents: () => Promise.resolve({ data: [] }),          skills: () => Promise.reject(new Error("skills endpoint unavailable")),        },      } as unknown as OpencodeClient;       const inventory = yield* runtime.loadOpenCodeInventory(client);       NodeAssert.deepEqual(inventory.providerList.connected, ["openai"]);      NodeAssert.deepEqual(inventory.agents, []);      NodeAssert.deepEqual(inventory.skills, []);    }),  );});