LumeTS AGENTS.md
This is the top-level monorepo for LumeTS — a 3D scene engine with N-API bindings for JavaScript/ArkTS.
Submodule Documentation
Detailed knowledge docs live in docs/knowledge/:
| Scope | Document |
|---|---|
| ECS system & component authoring, component managers, systems, unit tests | Lume3D.md |
| Scene layer wrapping ECS into typed interfaces (components, nodes, property forwarding) | LumeScene.md |
| N-API bindings exposing LumeScene to JS/ArkTS (wrappers, proxies, threading) | ScenePluginAddon.md |
Module Dependency Graph
The three modules documented under docs/knowledge/ form a consumer chain
(each depends on the one below, plus lower-level engine/render/base libs
detailed in each module's own ## Module Dependencies section):
ScenePluginAddon (scene3d.node) — N-API bindings exposing LumeScene to JS/ArkTS
└── LumeScene — high-level scene interfaces (IScene, INode, ICamera)
└── Lume3D — ECS components (Transform, Camera, Light), graphics context
Other top-level modules (no knowledge doc):
ModuleDeclaration— public TypeScript/ArkTS API type declarationsScenePluginTest— integration tests for ScenePluginAddon (Windows TS app)NativeDemo— OHOS demo app exercising ScenePluginAddonWindowAddon— window management addon (.node)SharedAddonCode— shared source compiled into ScenePluginAddon & WindowAddon
Build
Windows
build.bat vs2022 # VS 2022, Debug
build.bat vs2017 # VS 2017, Debug
On Linux Build OHOS
# Ensure in dir <prefix>/code
./build_system.sh --abi-type generic_generic_arm_64only --device-type general_all_phone_standard --ccache --build-target graphic_3d graphic_3d_ext --build-variant root
Boundaries
Always
- Compile-test after changes. After any modification to source files in this repo or its submodules, run
build.batand fix any compilation errors before considering the task complete. Use a subagent to execute the build and resolve errors iteratively.
Ask First
- Which module should be modified? Confirm the target module before making changes. The dependency graph above shows the allowed direction — avoid modifying lower-level modules (LumeBase, LumeEngine) without explicit approval.
Never
- Do not modify files under
submodules/unless explicitly asked — these are versioned separately.