mirror of
https://gitcode.com/JianFeeeee/homeagent-sdk.git
synced 2026-09-20 00:48:12 +00:00
内核侧 Lua 桥此前停在 v0.8.0 时代能力面,而 1.1/1.2/1.3 新增的 媒体、注入标志位、中断优先级、事件订阅、动态通道注销只在 Go 侧存在, 文档却宣称『能力完全对齐』——属于静默漂移。 本仓(事实源): - 新增 sdk/lua/sdk.lua:Lua mock 的单一事实源,补齐全部新 API (*_opts / inject_input_sync / inject_*_media / set_tool_blocks / unregister_output_channel / events / plugin_mgr / insert_with_media / sentence_text+media_digests / attachments / context_policy)。 - scripts/sync-lua-sdk.sh:把事实源同步到 hmapdev assets、luademo、 以及被 vendored 时的内核副本;三份 sdk.lua 不再各自漂移。 - hmapdev init --lua:优先从激活 SDK 拷权威 mock,内嵌模板降级为 assets/sdk.lua 回退,不再内联手写副本。 - hmapdev build(Lua):plugin.json 写入 SDK 版本(能力可追溯), 打包前用 luac -p / lua loadfile 做语法预检,失败以非零码退出。 - hmapdev debug --lua:优先用激活 SDK 的权威 mock(HMAPDEV_SDK_LUA)。 - luademo 升级为全能力示例(新增 luademo_probe_v2)。
36 lines
919 B
Go
36 lines
919 B
Go
package main
|
|
|
|
import (
|
|
"os"
|
|
"os/exec"
|
|
"path/filepath"
|
|
"testing"
|
|
)
|
|
|
|
// TestCheckLuaSyntax 钉住 Lua 打包前的语法预检:语法错必须被拒。
|
|
// 没有 lua/luac 的构建机跳过(预检按设计降级为警告)。
|
|
func TestCheckLuaSyntax(t *testing.T) {
|
|
if _, err := exec.LookPath("luac"); err != nil {
|
|
if _, err := exec.LookPath("lua"); err != nil {
|
|
t.Skip("no lua/luac in PATH")
|
|
}
|
|
}
|
|
dir := t.TempDir()
|
|
|
|
good := filepath.Join(dir, "good.lua")
|
|
if err := os.WriteFile(good, []byte("local x = 1\nreturn x\n"), 0644); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := checkLuaSyntax(good); err != nil {
|
|
t.Fatalf("valid Lua rejected: %v", err)
|
|
}
|
|
|
|
bad := filepath.Join(dir, "bad.lua")
|
|
if err := os.WriteFile(bad, []byte("function broken(\n"), 0644); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := checkLuaSyntax(bad); err == nil {
|
|
t.Fatal("invalid Lua accepted; syntax check is not effective")
|
|
}
|
|
}
|