lili b112f888cf feat(game-runtime): U2 build-from-source 装配器(gameDefinition → 可玩工厂源文本)
plan 2026-06-18-001 U2 · 引擎线 · 解锁「源 → 可玩」装配链。

新增 game-runtime/src/host/build-from-source.mjs:
- validateSourceProject(sp) → {ok,errors,gameDefinition}:轻量校验 + top-level strip
  (产线容错必做——剥模型塞的 schema 外键);引用完整性(entity.components→components[].id /
  scene.entityRefs→entities[].id)+ behavior 缺逻辑 code 揪错。守 game-runtime「本机零依赖」
  不引 ajv(inner 键宽松保留运行时用的 vx/vy/tags,待 schema 迭代再收紧)。
- assembleFactoryFromSource(sp,{runtimeImportPath?}) → generated-factory.js 源文本:
  对齐已冻装载契约(game-host.d.ts:default export 工厂 → GameInstance{init,update,render,
  destroy,_forensicsView}),五法委托 U1 createRuntime;gameDefinition 内联为 JS 字面量、
  behavior.code 作数据串随之内联(运行期 new Function 编译)。校验失败 fail-loud(err.validationErrors
  供 buildNode 回灌 repair feedback)。

接现有零改下游:产出文本 → scaffoldNode 落 generated-factory.js → scripts/build.mjs(esbuild,
不动)→ bundle.iife.js → 九门 harness(零改);entry-bundle.template.js 不动。

验收(lili-mac 快走查):
- node --test src/host/build-from-source.test.mjs 5/5——校验+strip / 装配产物含装载契约要件 +
  node --check 过 / fail-loud / **端到端功能证**(装配文本经 createRuntime 真跑到 win + fx 真接线);
  全 runtime 套件 46/46 无回归。
- 真 esbuild 链探针(探针目录已清,不入仓):金样 gameDefinition → assemble → scaffold(正确深度)→
  真 build.mjs → bundle.iife.js(215KB,语法过,__GameBundle 全局在);metafile 实证
  gd-runtime.js + boot-game-host.js + littlejsengine 全内联。

范围说明:U2 的后端 Java 接线(SaaGenNodes.buildNode/scaffoldNode 从 K_SOURCE_PROJECT 装配、
SaaStudioNodes.modifyNode deterministic 解除 fail-loud)属后端线、需 mvn/mini-desktop 验证,
随 U3 后端线一并落(plan 允两线并行)。本提交 = U2 引擎线核心(本机可验的装配地基)。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 23:04:46 -07:00
Description
No description provided
240 MiB
Languages
Java 38.3%
JavaScript 28.5%
Python 19.4%
Vue 6.2%
TypeScript 3.8%
Other 3.7%