@instruktlabs/kiln 1.2.1 → 1.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (219) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/.codex-plugin/plugin.json +1 -1
  3. package/CHANGELOG.md +86 -1
  4. package/README.md +18 -0
  5. package/dist/agent-run.mjs +6392 -1477
  6. package/dist/build.json +23 -23
  7. package/dist/cli.mjs +8453 -3407
  8. package/dist/evaluator-worker.mjs +16608 -12387
  9. package/dist/mcp-engine.mjs +6746 -1725
  10. package/dist/mcp-server.mjs +4 -4
  11. package/dist/viewer/app.js +203 -199
  12. package/dist/viewer/chat.html +209 -205
  13. package/dist/viewer/style.css +10 -0
  14. package/docs/atlas-provenance.md +23 -0
  15. package/docs/community-exporter.md +27 -0
  16. package/docs/export-profiles.md +20 -0
  17. package/docs/install.md +7 -6
  18. package/docs/material-library.md +9 -5
  19. package/docs/migration.md +16 -0
  20. package/docs/procedural-surfaces-v3.md +276 -0
  21. package/docs/projects-and-live-review.md +1 -1
  22. package/docs/rendering.md +41 -0
  23. package/docs/runtime.md +3 -3
  24. package/docs/sdk.md +55 -2
  25. package/docs/tools-operations.md +2 -2
  26. package/docs/tools.md +3 -3
  27. package/lib/asset-materials-node.d.ts +3 -3
  28. package/lib/asset-materials-node.js +29 -33
  29. package/lib/assets-node.d.ts +1 -1
  30. package/lib/assets-node.js +11 -4
  31. package/lib/assets.d.ts +4 -2
  32. package/lib/assets.js +61 -16
  33. package/lib/atlas-provenance.d.ts +86 -0
  34. package/lib/atlas-provenance.js +448 -0
  35. package/lib/character.d.ts +11 -2
  36. package/lib/character.js +90 -2
  37. package/lib/community-exporter.d.ts +3 -2
  38. package/lib/community-exporter.js +139 -3
  39. package/lib/discovery/helper-contracts.js +161 -7
  40. package/lib/discovery/helper-specs.js +49 -4
  41. package/lib/discovery/shapes.js +20 -7
  42. package/lib/engine-identity.d.ts +1 -1
  43. package/lib/engine-identity.js +1 -1
  44. package/lib/evaluator/authoring-diagnostic.d.ts +1 -1
  45. package/lib/evaluator/authoring-diagnostic.js +12 -0
  46. package/lib/evaluator/protocol.d.ts +2 -2
  47. package/lib/evaluator/protocol.js +16 -6
  48. package/lib/evaluator/subprocess.js +2 -2
  49. package/lib/exporter-node.js +9 -1
  50. package/lib/geometry-budget.d.ts +7 -0
  51. package/lib/geometry-budget.js +8 -0
  52. package/lib/gltf-texture-binding.d.ts +6 -0
  53. package/lib/gltf-texture-binding.js +54 -0
  54. package/lib/material-authoring-node.d.ts +6 -0
  55. package/lib/material-authoring-node.js +49 -0
  56. package/lib/material-authoring-schema.d.ts +871 -0
  57. package/lib/material-authoring-schema.js +310 -0
  58. package/lib/material-export.d.ts +5 -0
  59. package/lib/material-export.js +21 -0
  60. package/lib/material-library-node.d.ts +34 -8
  61. package/lib/material-library-node.js +691 -11
  62. package/lib/material-library.d.ts +3704 -4
  63. package/lib/material-library.js +272 -0
  64. package/lib/mcp-core.d.ts +1 -1
  65. package/lib/pinned-material-map.d.ts +33 -0
  66. package/lib/pinned-material-map.js +1 -0
  67. package/lib/portable-material-runtime.d.ts +5 -0
  68. package/lib/portable-material-runtime.js +160 -0
  69. package/lib/portable-sampler-runtime.d.ts +4 -0
  70. package/lib/portable-sampler-runtime.js +26 -0
  71. package/lib/portable-sampler.d.ts +11 -0
  72. package/lib/portable-sampler.js +42 -0
  73. package/lib/primitives.d.ts +15 -3
  74. package/lib/primitives.js +24 -4
  75. package/lib/procedural-material-v2.d.ts +2 -0
  76. package/lib/procedural-material-v2.js +2 -1
  77. package/lib/procedural-material-v3.d.ts +72 -0
  78. package/lib/procedural-material-v3.js +162 -0
  79. package/lib/procedural-texture-v2-compiler.d.ts +31 -0
  80. package/lib/procedural-texture-v2-compiler.js +172 -0
  81. package/lib/procedural-texture-v3-contract.d.ts +125 -0
  82. package/lib/procedural-texture-v3-contract.js +333 -0
  83. package/lib/procedural-texture-v3.d.ts +12 -0
  84. package/lib/procedural-texture-v3.js +165 -0
  85. package/lib/procedural-texture.d.ts +9 -31
  86. package/lib/procedural-texture.js +43 -170
  87. package/lib/project-bundle-node.d.ts +1 -1
  88. package/lib/project-bundle-node.js +70 -13
  89. package/lib/project-bundle.d.ts +91 -3
  90. package/lib/project-bundle.js +48 -7
  91. package/lib/qa/atlas.d.ts +21 -0
  92. package/lib/qa/atlas.js +474 -0
  93. package/lib/qa/index.d.ts +1 -0
  94. package/lib/qa/index.js +1 -0
  95. package/lib/qa/material.js +2 -0
  96. package/lib/qa/skin-integrity.d.ts +18 -0
  97. package/lib/qa/skin-integrity.js +221 -0
  98. package/lib/render-service-host.js +4 -7
  99. package/lib/render.d.ts +3 -3
  100. package/lib/render.js +108 -16
  101. package/lib/skin-binding.d.ts +20 -0
  102. package/lib/skin-binding.js +144 -0
  103. package/lib/texture-atlas-contract.d.ts +97 -0
  104. package/lib/texture-atlas-contract.js +414 -0
  105. package/lib/texture-atlas-pixels.d.ts +73 -0
  106. package/lib/texture-atlas-pixels.js +290 -0
  107. package/lib/texture-atlas.d.ts +10 -0
  108. package/lib/texture-atlas.js +143 -0
  109. package/lib/texture-bake.d.ts +3 -0
  110. package/lib/texture-bake.js +66 -11
  111. package/lib/texture-resolver.d.ts +22 -0
  112. package/lib/texture-resolver.js +24 -0
  113. package/lib/tools/materials.js +8 -7
  114. package/lib/tools/registry.js +5 -16
  115. package/lib/tools/review.js +1 -1
  116. package/lib/uv-data.d.ts +32 -0
  117. package/lib/uv-data.js +172 -0
  118. package/lib/uv-shapes.js +3 -0
  119. package/lib/uv.d.ts +9 -3
  120. package/lib/uv.js +53 -82
  121. package/lib/views/camera.d.ts +3 -3
  122. package/lib/views/camera.js +32 -28
  123. package/lib/views/face-policy.d.ts +9 -0
  124. package/lib/views/face-policy.js +16 -0
  125. package/lib/views/glb.js +218 -24
  126. package/lib/views/pose.d.ts +7 -1
  127. package/lib/views/pose.js +63 -12
  128. package/lib/views/raster.d.ts +6 -2
  129. package/lib/views/raster.js +49 -37
  130. package/lib/views/scene-copy.d.ts +6 -0
  131. package/lib/views/scene-copy.js +73 -0
  132. package/lib/views/scene-raster.js +2 -1
  133. package/lib/views/triangle-coverage.d.ts +8 -0
  134. package/lib/views/triangle-coverage.js +58 -0
  135. package/lib/workspace-node.js +7 -3
  136. package/lib/workspace.d.ts +2 -2
  137. package/package.json +3 -1
  138. package/plugin.json +1 -1
  139. package/plugins/kiln-engine/.claude-plugin/plugin.json +1 -1
  140. package/plugins/kiln-engine/README.md +3 -3
  141. package/plugins/kiln-engine/package-provenance.json +6 -6
  142. package/plugins/kiln-engine/plugin.json +1 -1
  143. package/plugins/kiln-engine/runtime.json +1 -1
  144. package/skills/kiln-author-asset/SKILL.md +1 -1
  145. package/skills/kiln-author-asset/references/camera-cli.md +13 -0
  146. package/skills/kiln-author-asset/references/geometry-recipes.md +134 -0
  147. package/skills/kiln-author-asset/references/projects-and-materials.md +32 -2
  148. package/skills/kiln-compose-scene/references/runtime-scenes.md +19 -0
  149. package/skills/kiln-qa-asset/references/integration-checks.md +37 -2
  150. package/src/asset-materials-node.ts +38 -45
  151. package/src/assets-node.ts +22 -5
  152. package/src/assets.ts +61 -20
  153. package/src/atlas-provenance.ts +522 -0
  154. package/src/character.ts +107 -2
  155. package/src/community-exporter.ts +143 -3
  156. package/src/discovery/helper-contracts.ts +188 -7
  157. package/src/discovery/helper-specs.ts +69 -4
  158. package/src/discovery/shapes.ts +25 -9
  159. package/src/engine-identity.ts +1 -1
  160. package/src/evaluator/authoring-diagnostic.ts +19 -1
  161. package/src/evaluator/protocol.ts +19 -9
  162. package/src/evaluator/subprocess.ts +2 -2
  163. package/src/exporter-node.ts +12 -1
  164. package/src/generated/mcp-manifest.json +3 -3
  165. package/src/geometry-budget.ts +8 -0
  166. package/src/gltf-texture-binding.ts +60 -0
  167. package/src/material-authoring-node.ts +68 -0
  168. package/src/material-authoring-schema.ts +343 -0
  169. package/src/material-export.ts +25 -0
  170. package/src/material-library-node.ts +840 -16
  171. package/src/material-library.ts +348 -5
  172. package/src/pinned-material-map.ts +43 -0
  173. package/src/portable-material-runtime.ts +200 -0
  174. package/src/portable-sampler-runtime.ts +40 -0
  175. package/src/portable-sampler.ts +54 -0
  176. package/src/primitives.ts +98 -4
  177. package/src/procedural-material-v2.ts +2 -1
  178. package/src/procedural-material-v3.ts +224 -0
  179. package/src/procedural-texture-v2-compiler.ts +234 -0
  180. package/src/procedural-texture-v3-contract.ts +437 -0
  181. package/src/procedural-texture-v3.ts +220 -0
  182. package/src/procedural-texture.ts +61 -229
  183. package/src/project-bundle-node.ts +106 -14
  184. package/src/project-bundle.ts +61 -18
  185. package/src/project-cli.ts +29 -17
  186. package/src/qa/atlas.ts +597 -0
  187. package/src/qa/index.ts +1 -0
  188. package/src/qa/material.ts +2 -0
  189. package/src/qa/skin-integrity.ts +291 -0
  190. package/src/render-service-host.ts +4 -6
  191. package/src/render.ts +133 -15
  192. package/src/skin-binding.ts +225 -0
  193. package/src/texture-atlas-contract.ts +558 -0
  194. package/src/texture-atlas-pixels.ts +456 -0
  195. package/src/texture-atlas.ts +185 -0
  196. package/src/texture-bake.ts +88 -10
  197. package/src/texture-resolver.ts +55 -0
  198. package/src/tools/materials.ts +15 -11
  199. package/src/tools/registry.ts +5 -15
  200. package/src/tools/review.ts +1 -1
  201. package/src/uv-data.ts +238 -0
  202. package/src/uv-shapes.ts +3 -0
  203. package/src/uv.ts +73 -128
  204. package/src/viewer/app.ts +37 -0
  205. package/src/viewer/live-panel.ts +57 -1
  206. package/src/viewer/material-preview-panel.ts +140 -0
  207. package/src/viewer/material-preview.ts +138 -0
  208. package/src/viewer/materials-panel.ts +34 -5
  209. package/src/viewer/navigation.ts +2 -0
  210. package/src/views/camera.ts +37 -40
  211. package/src/views/face-policy.ts +20 -0
  212. package/src/views/glb.ts +294 -17
  213. package/src/views/pose.ts +71 -13
  214. package/src/views/raster.ts +73 -46
  215. package/src/views/scene-copy.ts +86 -0
  216. package/src/views/scene-raster.ts +2 -1
  217. package/src/views/triangle-coverage.ts +78 -0
  218. package/src/workspace-node.ts +11 -3
  219. package/src/workspace.ts +2 -2
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "kiln",
3
3
  "description": "Build and revise 3D assets with your coding agent. Write JavaScript, inspect selected views, edit saved source revisions, and export GLB files locally.",
4
- "version": "1.2.1",
4
+ "version": "1.2.3",
5
5
  "author": {
6
6
  "name": "Matthew Kissinger"
7
7
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kiln",
3
- "version": "1.2.1",
3
+ "version": "1.2.3",
4
4
  "description": "Create, review, save, and refine procedural 3D assets with portable source and GLB collections.",
5
5
  "author": {
6
6
  "name": "Matthew Kissinger"
package/CHANGELOG.md CHANGED
@@ -5,7 +5,92 @@ Source releases and installable package publication are separate milestones.
5
5
  Published versions and tags are recorded by the npm registry; changing this file
6
6
  does not publish a package.
7
7
 
8
- ## 1.2.1 (unpublished)
8
+ ## 1.2.3 (2026-10-12)
9
+
10
+ - Allow concurrent renderer clients to await verified health through the shared
11
+ startup deadline when another client wins the socket during a cold start.
12
+ - Publish Cabin in the Woods: PSX Horror with 53 exact editable asset revisions,
13
+ runtime and Full Kiln downloads, a portable scene, and integrated gallery pages.
14
+ The WebGPU walkthrough includes first-person tools, fuel-driven fire, woodland
15
+ interactions and fullscreen controls. Performance evidence and limits are recorded
16
+ in the scene's review report.
17
+
18
+ - Add opt-in named texture atlases, clone-owned region UV mapping and portable
19
+ V3 material sampling. V2 saved material records carry RGBA recipes, atlas source
20
+ manifests and exact dependency pins; standalone creation and complete offline
21
+ material/project delivery preserve existing V1 records and explicit opt-outs.
22
+ - Inspect named atlas bindings against drawn UVs, material slots and samplers
23
+ without reading pixels. Report bounded or unavailable inspection as partial;
24
+ structural checks do not establish intended corner orientation or appearance.
25
+ - Add exact saved-material map inspection to Materials, Library and Live Review,
26
+ with pixel zoom, light/dark/checker backgrounds and optional atlas-region labels.
27
+ Raw map inspection remains distinct from material-faithful rendered evidence.
28
+ - Add opt-in bounded V3 RGBA procedural surfaces with rectangular images, explicit
29
+ shape coverage, alpha masks, palette mapping, fixed dithering and seeded periodic
30
+ stamps. V1/V2 recipes, pixels, hashes and material records retain their behavior.
31
+ - Preserve encoded image bytes for direct unflipped PNG/JPEG bindings in the
32
+ experimental converter, including transparent RGB padding. Prepare raw maps for
33
+ channel conversion and explicit vertical flipping without changing caller data;
34
+ report native canvas load failures with recovery steps. Converted transparent
35
+ images retain a documented pixel-fidelity limitation.
36
+ - Correct project documentation: explicit call-level material pins replace matching
37
+ project pins for that invocation without rewriting the saved project revision.
38
+ - Diagnose malformed source skin bindings before bounds, texture baking and
39
+ conversion, with mesh/joint/vertex-range findings through SDK, CLI and MCP.
40
+ Read-only integrity inspection includes current morphed/skinned bounds and
41
+ preserves authored data. Invalid bindings cannot bypass input validation through
42
+ QA warning mode or derivative export; final glTF validation remains independent.
43
+ - Add opt-in semantic `createBoneChain` and bounded explicit `createSkinnedPart`
44
+ helpers, retaining rigid `createJointChain` behavior and legacy exporter defaults.
45
+ Skin binding owns cloned geometry, preserves rich unchanged topology, validates
46
+ explicit four-lane influences and provides closed CLI/MCP repair advice.
47
+
48
+ - Extend GLB geometry/animation review to position and normal morph targets,
49
+ default weight precedence and STEP/LINEAR/CUBICSPLINE weight tracks. Preserve
50
+ independent influences across primitives, instances and review copies, apply
51
+ morphs before skinning, and reject invalid data before claiming pose evidence.
52
+ Other morph semantics remain explicitly unsupported by this review path.
53
+ - Remove CPU preview cracks and duplicate shared-edge coverage on continuous
54
+ triangulated surfaces. Both camera paths use top-left sample ownership and
55
+ unbiased edge interpolation; clipped shared edges retain matching endpoints.
56
+ - Correct CPU face culling under mirrored transforms and honor back-only source
57
+ materials in both camera paths. Visible reverse faces now use the corresponding
58
+ flat lighting normal; ordinary positive-scale front faces retain their output.
59
+ - Reject used `BackSide` materials in both GLB converters with an actionable diagnostic,
60
+ instead of silently writing front-only surfaces. Author inward-facing geometry
61
+ or deliberately choose `DoubleSide`; existing saved GLBs remain unchanged.
62
+ - Preserve independent skeletons in isolated, two-sided and composed-scene review
63
+ copies. Hidden joint ancestors retain their transforms without rendering their
64
+ geometry; copied bones and bind data no longer reference the retained source.
65
+ - Reconstruct four-influence glTF skins in geometry/animation review and measure
66
+ the sampled surface for CPU views and part bounds. Preserve joint hierarchy,
67
+ inverse bind matrices and normalized weights; reject unsupported extra
68
+ influence sets instead of showing a false pose. Supported POSITION/NORMAL morph
69
+ review is described above; other target semantics remain explicit limitations.
70
+ - Preserve explicitly authored texture filtering and wrap modes in the default
71
+ GLB exporter, including separate samplers sharing image bytes. Existing
72
+ procedural and loaded-texture defaults stay unchanged. Regenerated GLBs now
73
+ encode those settings explicitly; saved asset revisions are not rewritten.
74
+ - Reject unsupported sampler values in the default exporter instead of silently
75
+ replacing them with glTF defaults.
76
+ - Preserve supported vertex attributes, morph targets, material groups and
77
+ metadata through `autoUnwrap` seam duplication. Reject unsupported inputs,
78
+ invalid correspondence and the xatlas adapter's 16-bit index overflow.
79
+ Existing normal defaults remain unchanged; normal morphs require
80
+ `useNormals: true`. New UV0 invalidates tangents, which must be recomputed.
81
+
82
+ ## 1.2.2
83
+
84
+ - Clarify radial and tangential orientation for circular walls and roof sections,
85
+ including edge checks for accidental quarter-turn rotations.
86
+ - Require checking export receipts and delivering files from the final reviewed
87
+ revision in the authoring skill and CLI guidance.
88
+ - Include these instructions in the package and local plugin. Geometry/runtime
89
+ behavior and the seventeen-tool local MCP interface are unchanged.
90
+ - Align the public hosted integration draft with the deployed 21-tool contract,
91
+ and update README/site guidance for the invite-only service and Discord access.
92
+
93
+ ## 1.2.1
9
94
 
10
95
  - Load embedded viewer textures through the browser image path, retaining
11
96
  pixels, sampler settings and UV transforms under restrictive MCP Apps CSP.
package/README.md CHANGED
@@ -3,6 +3,7 @@
3
3
  [![CI](https://github.com/instruktlabs/kiln/actions/workflows/ci.yml/badge.svg)](https://github.com/instruktlabs/kiln/actions/workflows/ci.yml)
4
4
  [![npm](https://img.shields.io/npm/v/@instruktlabs/kiln)](https://www.npmjs.com/package/@instruktlabs/kiln)
5
5
  [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
6
+ [![Discord](https://img.shields.io/badge/Discord-Join%20the%20community-5865F2?logo=discord&logoColor=white)](https://discord.gg/fSWVbMdQXK)
6
7
 
7
8
  **Build and revise 3D assets with your coding agent.**
8
9
 
@@ -19,6 +20,23 @@ do not require a separate model API key.
19
20
  [Interactive scenes](https://kilnstudio.tools/scenes/) ·
20
21
  [Changelog](CHANGELOG.md)
21
22
 
23
+ ## Community and hosted access
24
+
25
+ [Join the Kiln Discord](https://discord.gg/fSWVbMdQXK) to share assets, get help,
26
+ and request hosted access. [Hosted Kiln](https://kiln.instruktlabs.com/) is open
27
+ as a free, invite-only introductory service, with ten accounts sharing an
28
+ allowance of 200 native requests per month. Ask in `#request-access` or message
29
+ `matt_941`; individual Kiln codes are sent privately as capacity allows.
30
+ Joining Discord does not automatically grant hosted access. Local Kiln remains
31
+ free, open source and account-free.
32
+
33
+ | Cabin in the Woods: the cabin and woodland | Inside the cabin |
34
+ | --- | --- |
35
+ | [![The cabin and woodland with a warm porch light](scenes/packages/cabin-woods-psx-horror/review-media/aerial.png)](scenes/packages/cabin-woods-psx-horror/README.md) | [![Furnished cabin interior and burning fireplace](scenes/packages/cabin-woods-psx-horror/review-media/interior.png)](scenes/packages/cabin-woods-psx-horror/README.md) |
36
+
37
+ [Cabin in the Woods: PSX Horror](scenes/packages/cabin-woods-psx-horror/README.md)
38
+ includes 53 editable assets and a playable cabin and woodland scene.
39
+
22
40
  | Troy: the city and fleet | Achilles and Hector at the gates |
23
41
  | --- | --- |
24
42
  | [![Troy's walled city, army formations and fleet along the coast](assets/readme/troy-coast.webp)](https://kilnstudio.tools/scenes/troy/) | [![Achilles and Hector outside Troy's gate, with army formations behind them](assets/readme/troy-city.webp)](https://kilnstudio.tools/scenes/troy/) |