| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- import { describe, expect, test } from "bun:test"
- import path from "path"
- import fs from "fs/promises"
- import { tmpdir } from "../fixture/fixture"
- import { Instance } from "../../src/project/instance"
- import { ToolRegistry } from "../../src/tool/registry"
- describe("tool.registry", () => {
- test("loads tools from .opencode/tool (singular)", async () => {
- await using tmp = await tmpdir({
- init: async (dir) => {
- const opencodeDir = path.join(dir, ".opencode")
- await fs.mkdir(opencodeDir, { recursive: true })
- const toolDir = path.join(opencodeDir, "tool")
- await fs.mkdir(toolDir, { recursive: true })
- await Bun.write(
- path.join(toolDir, "hello.ts"),
- [
- "export default {",
- " description: 'hello tool',",
- " args: {},",
- " execute: async () => {",
- " return 'hello world'",
- " },",
- "}",
- "",
- ].join("\n"),
- )
- },
- })
- await Instance.provide({
- directory: tmp.path,
- fn: async () => {
- const ids = await ToolRegistry.ids()
- expect(ids).toContain("hello")
- },
- })
- })
- test("loads tools from .opencode/tools (plural)", async () => {
- await using tmp = await tmpdir({
- init: async (dir) => {
- const opencodeDir = path.join(dir, ".opencode")
- await fs.mkdir(opencodeDir, { recursive: true })
- const toolsDir = path.join(opencodeDir, "tools")
- await fs.mkdir(toolsDir, { recursive: true })
- await Bun.write(
- path.join(toolsDir, "hello.ts"),
- [
- "export default {",
- " description: 'hello tool',",
- " args: {},",
- " execute: async () => {",
- " return 'hello world'",
- " },",
- "}",
- "",
- ].join("\n"),
- )
- },
- })
- await Instance.provide({
- directory: tmp.path,
- fn: async () => {
- const ids = await ToolRegistry.ids()
- expect(ids).toContain("hello")
- },
- })
- })
- })
|