35 lines · 1.4 KB · TypeScript
RawDownload
// Cross-target: a fresh workspace ships the built-in executor integration ready// to use — it appears in the catalog, it cannot be removed, and it already// contributes tools so an agent can start without any manual setup.import { expect } from "@effect/vitest";import { Effect } from "effect";import { composePluginApi } from "@executor-js/api/server"; import { scenario } from "../src/scenario";import { Api, Target } from "../src/services"; const coreApi = composePluginApi([] as const); scenario(  "Integrations · a fresh workspace ships the built-in executor integration ready to use",  {},  Effect.gen(function* () {    const target = yield* Target;    const { client } = yield* Api;    const identity = yield* target.newIdentity();    const api = yield* client(coreApi, identity);     const integrations = yield* api.integrations.list();    const builtin = integrations.find((i) => i.slug === "executor");    expect(builtin, "the 'executor' integration is in the catalog").toBeDefined();    expect(builtin?.kind).toBe("built-in");    expect(builtin?.canRemove, "the built-in integration is permanent").toBe(false);     const tools = yield* api.tools.list({ query: {} });    const executorTools = tools.filter((t) => t.integration === "executor");    expect(      executorTools.length,      "tools are available out of the box, no connection setup needed",    ).toBeGreaterThan(0);  }),);