mirror of
https://gitea.toothfairyai.com/ToothFairyAI/tf_code.git
synced 2026-03-30 05:43:55 +00:00
Co-authored-by: Aiden Cline <aidenpcline@gmail.com> Co-authored-by: Aiden Cline <63023139+rekram1-node@users.noreply.github.com>
60 lines
1.7 KiB
TypeScript
60 lines
1.7 KiB
TypeScript
import { describe, expect, test } from "bun:test"
|
|
import path from "path"
|
|
import { Agent } from "../../src/agent/agent"
|
|
import { Instance } from "../../src/project/instance"
|
|
import { SystemPrompt } from "../../src/session/system"
|
|
import { tmpdir } from "../fixture/fixture"
|
|
|
|
describe("session.system", () => {
|
|
test("skills output is sorted by name and stable across calls", async () => {
|
|
await using tmp = await tmpdir({
|
|
git: true,
|
|
init: async (dir) => {
|
|
for (const [name, description] of [
|
|
["zeta-skill", "Zeta skill."],
|
|
["alpha-skill", "Alpha skill."],
|
|
["middle-skill", "Middle skill."],
|
|
]) {
|
|
const skillDir = path.join(dir, ".opencode", "skill", name)
|
|
await Bun.write(
|
|
path.join(skillDir, "SKILL.md"),
|
|
`---
|
|
name: ${name}
|
|
description: ${description}
|
|
---
|
|
|
|
# ${name}
|
|
`,
|
|
)
|
|
}
|
|
},
|
|
})
|
|
|
|
const home = process.env.OPENCODE_TEST_HOME
|
|
process.env.OPENCODE_TEST_HOME = tmp.path
|
|
|
|
try {
|
|
await Instance.provide({
|
|
directory: tmp.path,
|
|
fn: async () => {
|
|
const build = await Agent.get("build")
|
|
const first = await SystemPrompt.skills(build!)
|
|
const second = await SystemPrompt.skills(build!)
|
|
|
|
expect(first).toBe(second)
|
|
|
|
const alpha = first!.indexOf("<name>alpha-skill</name>")
|
|
const middle = first!.indexOf("<name>middle-skill</name>")
|
|
const zeta = first!.indexOf("<name>zeta-skill</name>")
|
|
|
|
expect(alpha).toBeGreaterThan(-1)
|
|
expect(middle).toBeGreaterThan(alpha)
|
|
expect(zeta).toBeGreaterThan(middle)
|
|
},
|
|
})
|
|
} finally {
|
|
process.env.OPENCODE_TEST_HOME = home
|
|
}
|
|
})
|
|
})
|