Release_Test_Build, and hidden in normal release builds. Native avatar deformation, tool interaction, and workspace mesh behavior still need application smoke tests before release. Types, limits, and behavior may change.
The public API gives you copied document data, opaque handles, validated commands, and application-owned dialogs. It keeps ForgeCore objects, C++ pointers, scene registries, and undo internals inside Armorsmith.
Choose your integration surface
The C++ header uses C++17 standard library types and virtual interfaces. It is a source contract, not a binary compatibility promise. Do not pass its STL types across independently compiled DLL boundaries. The Python module is injected by Armorsmith’s script launcher; it is not a separately installable package.
Read, change, and create UI
You cannot bypass a lock by requesting a permission. A granted capability means the service is available to your session; the target object must also be eligible when you use it.
Version and permissions
Version contains major and minor; its defaults are 0 and 3. SessionOptions.required_version selects the requested source contract. The host accepts major 0 with a minor no greater than 3 and rejects newer versions or a different major with UnsupportedVersion. GetInfo() reports the actual host version and experimental = true.
Acceptance of an earlier version does not guarantee future 0.x compatibility. Check capabilities as well as version. Python declarations accept exactly 0.2 or 0.3; new controls and avatar/tool actions require 0.3. ui.dialog retains its 0.2 default for existing scripts. Opt in with version=(0, 3).
The host chooses SessionOptions.permissions. The default is ReadDocument. C++ permissions use a bit mask; combine values with Grant(Permission::...) and |.
Call
GetInfo() on the host’s owning thread to inspect the session’s version and grants:
ApiInfo contains Version version, bool experimental, and std::vector<Capability> capabilities. Each capability has an id string and a granted boolean.
Current coverage
0.3 adds avatar snapshots, measurement bounds, undoable body edits, a 20-ID viewport tool catalog, and initial activation adapters. The 0.2 document, part, mesh filter, history, and dialog services remain available. Python adds familiardata, context, and ops entry points; ops currently builds button actions rather than applying edits during worker execution.
Dedicated topology, transform, island, pattern, spline, material, import/export, appearance, pose, fitting, custom command registration, menu/tool registration, callback, logging, project/plugin data, and filesystem APIs remain future work. Catalog access does not mean every tool can be executed by a script. Reading selected does not provide a command to change selection. A mesh query does not expose geometry buffers.
Start with handles, revisions, and errors. Then use the document reference, avatars and measurements, tools and context, mesh commands, history and changes, dialog reference, or Python scripting guide. If you use Blender, read For Blender scripters.