Files
ai-agent/web/app/dashboard/ai-agents/_components/config-workbench-copy.test.mjs
T

61 lines
2.7 KiB
JavaScript

import assert from "node:assert/strict"
import test from "node:test"
import { readFile } from "node:fs/promises"
const configWorkbenchSource = await readFile(new URL("./config-workbench.tsx", import.meta.url), "utf8")
const zhMessagesSource = await readFile(new URL("../../../../messages/zh-CN.json", import.meta.url), "utf8")
const adminApiSource = await readFile(new URL("../../../../lib/api/admin.ts", import.meta.url), "utf8")
const zhMessages = JSON.parse(zhMessagesSource)
test("AI Agent policy copy separates handoff execution from knowledge fallback", () => {
const combinedSource = `${configWorkbenchSource}\n${zhMessagesSource}`
assert.match(combinedSource, /转人工执行方式/)
assert.match(combinedSource, /知识不足回复策略/)
assert.match(combinedSource, /知识不足回复文案/)
assert.match(combinedSource, /AI继续接待并提醒人工/)
assert.match(combinedSource, /直接说明知识不足/)
assert.match(combinedSource, /引导用户补充信息/)
assert.doesNotMatch(configWorkbenchSource, /转人工模式/)
assert.doesNotMatch(configWorkbenchSource, /兜底策略/)
assert.doesNotMatch(configWorkbenchSource, /兜底文案/)
})
test("AI Agent config no longer exposes legacy graph tool routing knobs", () => {
const aiAgentMessages = JSON.stringify(zhMessages.aiAgent ?? {})
assert.doesNotMatch(configWorkbenchSource, /graphTools/)
assert.doesNotMatch(adminApiSource, /graphTools/)
assert.doesNotMatch(aiAgentMessages, /graphTools/)
assert.doesNotMatch(aiAgentMessages, /Graph Tool/)
assert.doesNotMatch(aiAgentMessages, /内置流程/)
})
test("AI Agent config uses one Agent Loop without a runtime mode selector", () => {
assert.doesNotMatch(configWorkbenchSource, /runtimeMode/)
assert.doesNotMatch(adminApiSource, /runtimeMode/)
assert.doesNotMatch(configWorkbenchSource, /运行方式/)
assert.doesNotMatch(configWorkbenchSource, /Workflow 是 Agent 的可选能力/)
assert.doesNotMatch(configWorkbenchSource, /管理工作流/)
assert.match(configWorkbenchSource, /写操作(需确认)/)
})
test("publishing an AI Agent saves the current form before publishing", () => {
const publishFunction = configWorkbenchSource.match(
/async function publishAgent\(\) \{([\s\S]*?)\n \}/,
)?.[1]
assert.ok(publishFunction)
assert.match(publishFunction, /const payload = buildPayload\(\)/)
const saveIndex = publishFunction.indexOf(
"await updateAIAgent({ id: agent.id, ...payload })",
)
const publishIndex = publishFunction.indexOf("await publishAIAgent(agent.id)")
assert.ok(saveIndex >= 0)
assert.ok(publishIndex > saveIndex)
assert.match(publishFunction, /Agent 配置已保存并发布/)
})