openAgent
gitlabThe open source UNIVERSAL agent.
clone
https://gitlab.com/bitzzdev/openAgent.gitAIagentautomationopen-sourceuniversal-agent
import { expect } from "bun:test"import { Npm } from "@opencode-ai/core/npm"import { Effect } from "effect"import path from "path"import { pathToFileURL } from "url"import { Agent } from "../../src/agent/agent"import { Account } from "../../src/account/account"import { Auth } from "../../src/auth"import { RuntimeFlags } from "../../src/effect/runtime-flags"import { Plugin } from "../../src/plugin"import { Provider } from "../../src/provider/provider"import { Skill } from "../../src/skill"import { AccountTest } from "../fake/account"import { AuthTest } from "../fake/auth"import { NpmTest } from "../fake/npm"import { ProviderTest } from "../fake/provider"import { SkillTest } from "../fake/skill"import { testEffect } from "../lib/effect"import { PLUGIN_AGENT } from "../fixture/agent-plugin.constants"import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"import { LayerNode } from "@opencode-ai/core/effect/layer-node"// `it.instance` skips InstanceBootstrap so LSP / MCP don't spin up — those// services hang during scope teardown on Windows and aren't needed// to verify plugin → config hook → Agent.list.const pluginUrl = pathToFileURL(path.join(import.meta.dir, "..", "fixture", "agent-plugin.ts")).hrefconst provider = ProviderTest.fake()const it = testEffect(AppNodeBuilder.build(LayerNode.group([Agent.node, Plugin.node]), [[Auth.node, AuthTest.empty],[Account.node, AccountTest.empty],[Npm.node, NpmTest.noop],[Provider.node, provider.layer],[Skill.node, SkillTest.empty],[RuntimeFlags.node, RuntimeFlags.layer({ disableDefaultPlugins: true })],]),)it.instance("plugin-registered agents appear in Agent.list",() =>Effect.gen(function* () {yield* Plugin.Service.use((p) => p.init())const agents = yield* Agent.use.list()const added = agents.find((agent) => agent.name === PLUGIN_AGENT.name)expect(added?.description).toBe(PLUGIN_AGENT.description)expect(added?.mode).toBe(PLUGIN_AGENT.mode)}),{ config: { plugin: [pluginUrl] } },)