- 品牌替换:OpenCode/opencode → AirCoding/aircoding(16+ 文件) - Logo ASCII art:修复 left/right 行数不匹配导致的启动崩溃 - 启动诊断:添加 OPENCODE_PRINT_TIMING 计时探针 - dev 模式默认 --pure 跳过外部插件加载 - AGENTS.md 模板:追加 AirCoding 多 Agent 专项段落 - architect prompt + plugin:强化 AGENTS.md 产出验证
51 lines
1.3 KiB
TypeScript
51 lines
1.3 KiB
TypeScript
import { expect, test } from "bun:test"
|
|
import { createPluginRuntime } from "../../src/plugin/runtime"
|
|
|
|
test("routes use the latest registration and restore previous registrations", () => {
|
|
const runtime = createPluginRuntime()
|
|
const first = () => "first"
|
|
const second = () => "second"
|
|
runtime.routes.register([{ name: "demo", render: first }])
|
|
const dispose = runtime.routes.register([{ name: "demo", render: second }])
|
|
|
|
expect(runtime.routes.get("demo")).toBe(second)
|
|
dispose()
|
|
expect(runtime.routes.get("demo")).toBe(first)
|
|
})
|
|
|
|
test("facade publishes and clears presentation state", async () => {
|
|
const runtime = createPluginRuntime()
|
|
runtime.update({
|
|
commands: {
|
|
async activate() {
|
|
return true
|
|
},
|
|
async deactivate() {
|
|
return true
|
|
},
|
|
async add() {
|
|
return true
|
|
},
|
|
async install() {
|
|
return { ok: true, dir: "/tmp", tui: true }
|
|
},
|
|
},
|
|
status: [
|
|
{
|
|
id: "demo",
|
|
source: "internal",
|
|
spec: "demo",
|
|
target: "demo",
|
|
enabled: true,
|
|
active: true,
|
|
},
|
|
],
|
|
})
|
|
|
|
expect(await runtime.commands().activate("demo")).toBe(true)
|
|
expect(runtime.status()).toHaveLength(1)
|
|
runtime.clear()
|
|
expect(await runtime.commands().activate("demo")).toBe(false)
|
|
expect(runtime.status()).toEqual([])
|
|
})
|