ailu-napi — Rust引擎的节点绑定
将 Rust 引擎暴露于节点的凝固器绑起,所以TypeScript SDK和 控制平面可以在迁移期间(ADR-0002)调用 Rust 核而不用旗帜 日报. JSON进/JSON出 边界小.
发布到 pnpm 工作空间 @ailu-ai/napi (见 pnpm-workspace.yaml) (中文(简体) ).
已曝光
engineVersion(): stringvalidateGraphJson(definitionJson: string): string返回 JSON 数组 校验错误( e)[]当声音。 TS的接班人validateGraph(同样的)GraphDefinition线形,同出错代码).
Dev 流量( 每天使用的流量)
从回波根:
pnpm napi:build # runs scripts/build-napi.sh
脚本运行 cargo build -p ailu-napi,检测平台
(单位:千美元).dylib 在macOS上, .so 在Linux上, .dll 复制 cdylib 到
crates/bindings/ailu_napi.node 手写的文件 index.js
要求. index.js 财务报告和审定财务报表 index.d.ts 为: 手写并登记; 脱发
水流永远无法再生.
脚本( 和根) rust:* 脚本)假设 cargo 开始 PATH生锈的
安装器为普通登录 shells 安排; 脚本额外来源
"$HOME/.cargo/env" 本身,如果 cargo 失踪了,所以它也是从赤裸而出
非日志贝壳.
吸烟试验:
node crates/bindings/smoke.cjs
# engineVersion: 0.0.1
# valid → []
# dangling edge → [{"code":"INVALID_EDGE_REFERENCE",...}]
释放流量(@napi-rs/cli ——用于已公布的管线,不是dev)
package.json 携带一个 napi 配置块( n)"name": "ailu_napi"匹配
二进制底名)和两个脚本,命名如此的turbo忽略了它们(只有turbo)
捡起 build编号 :test编号 :lint编号 :typecheck:
pnpm --filter @ailu-ai/napi run build:napi # napi build --platform --release
pnpm --filter @ailu-ai/napi run build:napi:debug # napi build --platform
napi build --platform 编译出一个平台后缀二进制
(例如:. ailu_napi.darwin-arm64.node+) 加上 (中文(简体) ) 重生成 index.js编号 :index.d.ts数字 :
正在生成的加载器切换大小写 process.platform编号 :process.arch 财务报告和审定财务报表
需要后缀二进制(或 @ailu-ai/napi-<platform> 子包装),其中
这是您在为来自中情局的许多目标发布预建时想要的.
为什么Dev不使用它: 生成的加载器从不查看
ailu_napi.node所以它默默地忽略了 scripts/build-napi.sh 生产——
在一台新鲜的机器上, pnpm napi:build 将构建装入器找不到的二进制 .
CLI 路径被本地验证( 构建成功、 生成加载器负载、 SDK)
,但手写装载器作为承诺状态保存
因此德夫剧本仍然是真理的唯一来源. 真正的释放管道应该
运行 build:napi 每个目标,在公布的软件包中装载生成的装载器
换句话说.
SDK 整合
packages/graph-sdk/src/rust-validator.ts 负载 @ailu-ai/napi 可选择数字 :
如果模块(或其 .node 二进制)不存在,需要投掷,SDK
抓住它, 回到纯Type脚本 validateGraph 从
@ailu-ai/graph-core在SDK硬性依赖 土生土长.
pnpm --filter @ailu-ai/graph-sdk exec node --import tsx examples/rust-validation.ts
# Rust validator active: true (with the .node present; false → TS fallback)
中情局
.github/workflows/ci.yml (准备激活; repo 尚未在 git 下) 运行
(单位:千美元) node 车道(pnpm安装,打字检查,测试, lint)和 a rust 车道
(单位:千美元)cargo fmt --check, (中文(简体) ), cargo clippy --all-targets -- -D warnings, (中文(简体) ), cargo test
内部 crates/) (中文(简体) ). 同一门作为根脚本在当地被接通:
pnpm rust:fmt, (中文(简体) ), pnpm rust:lint, (中文(简体) ), pnpm rust:test, (中文(简体) ), pnpm napi:build。 。 。 .