polyweave-gamekit 0.1.0__tar.gz

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 (685) hide show
  1. polyweave_gamekit-0.1.0/.gitignore +19 -0
  2. polyweave_gamekit-0.1.0/LICENSE +21 -0
  3. polyweave_gamekit-0.1.0/PKG-INFO +126 -0
  4. polyweave_gamekit-0.1.0/README.md +89 -0
  5. polyweave_gamekit-0.1.0/pyproject.toml +91 -0
  6. polyweave_gamekit-0.1.0/src/polyweave/__init__.py +66 -0
  7. polyweave_gamekit-0.1.0/src/polyweave/__main__.py +7 -0
  8. polyweave_gamekit-0.1.0/src/polyweave/kernel/__init__.py +1 -0
  9. polyweave_gamekit-0.1.0/src/polyweave/kernel/cache.py +182 -0
  10. polyweave_gamekit-0.1.0/src/polyweave/kernel/codes.py +1344 -0
  11. polyweave_gamekit-0.1.0/src/polyweave/kernel/config.py +1147 -0
  12. polyweave_gamekit-0.1.0/src/polyweave/kernel/describe.py +400 -0
  13. polyweave_gamekit-0.1.0/src/polyweave/kernel/doors.py +75 -0
  14. polyweave_gamekit-0.1.0/src/polyweave/kernel/errors.py +291 -0
  15. polyweave_gamekit-0.1.0/src/polyweave/kernel/files.py +69 -0
  16. polyweave_gamekit-0.1.0/src/polyweave/kernel/git.py +75 -0
  17. polyweave_gamekit-0.1.0/src/polyweave/kernel/image.py +90 -0
  18. polyweave_gamekit-0.1.0/src/polyweave/kernel/jobs/__init__.py +30 -0
  19. polyweave_gamekit-0.1.0/src/polyweave/kernel/jobs/children.py +64 -0
  20. polyweave_gamekit-0.1.0/src/polyweave/kernel/jobs/process.py +262 -0
  21. polyweave_gamekit-0.1.0/src/polyweave/kernel/jobs/record.py +211 -0
  22. polyweave_gamekit-0.1.0/src/polyweave/kernel/jobs/report.py +92 -0
  23. polyweave_gamekit-0.1.0/src/polyweave/kernel/jobs/runner.py +420 -0
  24. polyweave_gamekit-0.1.0/src/polyweave/kernel/jobs/stages.py +63 -0
  25. polyweave_gamekit-0.1.0/src/polyweave/kernel/jobs/worker.py +201 -0
  26. polyweave_gamekit-0.1.0/src/polyweave/kernel/layer.py +489 -0
  27. polyweave_gamekit-0.1.0/src/polyweave/kernel/post/__init__.py +165 -0
  28. polyweave_gamekit-0.1.0/src/polyweave/kernel/post/files.py +68 -0
  29. polyweave_gamekit-0.1.0/src/polyweave/kernel/post/mesh.py +150 -0
  30. polyweave_gamekit-0.1.0/src/polyweave/kernel/post/pixels.py +358 -0
  31. polyweave_gamekit-0.1.0/src/polyweave/kernel/post/voxels.py +302 -0
  32. polyweave_gamekit-0.1.0/src/polyweave/kernel/provenance.py +1167 -0
  33. polyweave_gamekit-0.1.0/src/polyweave/layers/__init__.py +1 -0
  34. polyweave_gamekit-0.1.0/src/polyweave/layers/engine/__init__.py +1 -0
  35. polyweave_gamekit-0.1.0/src/polyweave/layers/engine/capture.py +1020 -0
  36. polyweave_gamekit-0.1.0/src/polyweave/layers/engine/codes.py +441 -0
  37. polyweave_gamekit-0.1.0/src/polyweave/layers/engine/contrast.py +382 -0
  38. polyweave_gamekit-0.1.0/src/polyweave/layers/engine/driving.py +1669 -0
  39. polyweave_gamekit-0.1.0/src/polyweave/layers/engine/engine.py +589 -0
  40. polyweave_gamekit-0.1.0/src/polyweave/layers/engine/flashes.py +237 -0
  41. polyweave_gamekit-0.1.0/src/polyweave/layers/engine/frame_cost.py +289 -0
  42. polyweave_gamekit-0.1.0/src/polyweave/layers/engine/godot/__init__.py +63 -0
  43. polyweave_gamekit-0.1.0/src/polyweave/layers/engine/godot/addons/polyweave_driver/driver.gd +879 -0
  44. polyweave_gamekit-0.1.0/src/polyweave/layers/engine/godot/addons/polyweave_voxels/voxel.gdshader +25 -0
  45. polyweave_gamekit-0.1.0/src/polyweave/layers/engine/godot/addons/polyweave_voxels/voxel_draw.gd +117 -0
  46. polyweave_gamekit-0.1.0/src/polyweave/layers/engine/godot/addons/polyweave_voxels/voxel_model.gd +127 -0
  47. polyweave_gamekit-0.1.0/src/polyweave/layers/engine/godot/addons/polyweave_voxels/voxels.gd +73 -0
  48. polyweave_gamekit-0.1.0/src/polyweave/layers/engine/godot/first_screen.gd +35 -0
  49. polyweave_gamekit-0.1.0/src/polyweave/layers/engine/godot/parse_all.gd +26 -0
  50. polyweave_gamekit-0.1.0/src/polyweave/layers/engine/godot/perf_run.gd +57 -0
  51. polyweave_gamekit-0.1.0/src/polyweave/layers/engine/godot/preset_run.gd +71 -0
  52. polyweave_gamekit-0.1.0/src/polyweave/layers/engine/godot/quiet_draw.gd +23 -0
  53. polyweave_gamekit-0.1.0/src/polyweave/layers/engine/integrity.py +329 -0
  54. polyweave_gamekit-0.1.0/src/polyweave/layers/engine/layer.py +101 -0
  55. polyweave_gamekit-0.1.0/src/polyweave/layers/engine/offscreen.py +397 -0
  56. polyweave_gamekit-0.1.0/src/polyweave/layers/engine/pack.py +134 -0
  57. polyweave_gamekit-0.1.0/src/polyweave/layers/engine/perf.py +144 -0
  58. polyweave_gamekit-0.1.0/src/polyweave/layers/engine/presets.py +186 -0
  59. polyweave_gamekit-0.1.0/src/polyweave/layers/engine/pressure.py +264 -0
  60. polyweave_gamekit-0.1.0/src/polyweave/layers/engine/runs.py +131 -0
  61. polyweave_gamekit-0.1.0/src/polyweave/layers/engine/settings.py +66 -0
  62. polyweave_gamekit-0.1.0/src/polyweave/layers/engine/states.py +165 -0
  63. polyweave_gamekit-0.1.0/src/polyweave/layers/engine/tables.py +235 -0
  64. polyweave_gamekit-0.1.0/src/polyweave/layers/engine/testing.py +248 -0
  65. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/__init__.py +604 -0
  66. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/blend.py +215 -0
  67. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/build.py +210 -0
  68. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/codes.py +341 -0
  69. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/cost.py +426 -0
  70. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/custom.py +149 -0
  71. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/expr.py +215 -0
  72. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/finish.py +671 -0
  73. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/fracture.py +208 -0
  74. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/kit.py +189 -0
  75. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/layer.py +152 -0
  76. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/looks/__init__.py +87 -0
  77. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/looks/finish.py +15 -0
  78. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/looks/fuzz.py +23 -0
  79. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/make.py +611 -0
  80. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/mesh_buy.py +192 -0
  81. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/normalise.py +994 -0
  82. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/ops/__init__.py +69 -0
  83. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/ops/_shared.py +97 -0
  84. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/ops/annulus.py +31 -0
  85. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/ops/bevel.py +36 -0
  86. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/ops/blend.py +66 -0
  87. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/ops/carve.py +41 -0
  88. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/ops/cells.py +48 -0
  89. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/ops/crowned.py +30 -0
  90. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/ops/custom.py +23 -0
  91. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/ops/inflate.py +70 -0
  92. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/ops/mesh.py +40 -0
  93. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/ops/mirror.py +55 -0
  94. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/ops/model.py +125 -0
  95. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/ops/paint.py +59 -0
  96. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/ops/plate.py +62 -0
  97. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/ops/primitive.py +54 -0
  98. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/ops/prism.py +56 -0
  99. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/ops/transform.py +51 -0
  100. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/ops/union.py +44 -0
  101. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/outline.py +409 -0
  102. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/page.py +22 -0
  103. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/port.py +387 -0
  104. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/render/__init__.py +781 -0
  105. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/render/blender.py +959 -0
  106. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/render/rig.py +221 -0
  107. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/representations/__init__.py +66 -0
  108. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/representations/mesh.py +133 -0
  109. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/representations/voxels/__init__.py +69 -0
  110. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/representations/voxels/colour.py +124 -0
  111. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/representations/voxels/compare.py +163 -0
  112. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/representations/voxels/fit.py +421 -0
  113. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/representations/voxels/model.py +1029 -0
  114. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/representations/voxels/sheet.py +281 -0
  115. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/review.py +435 -0
  116. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/settings.py +62 -0
  117. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/shape.py +276 -0
  118. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/solid.py +1125 -0
  119. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/solver.py +222 -0
  120. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/surface.py +297 -0
  121. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/texture.py +307 -0
  122. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/tuning.py +140 -0
  123. polyweave_gamekit-0.1.0/src/polyweave/layers/geometry/units.py +314 -0
  124. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/__init__.py +1259 -0
  125. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/access/core/access.gd +216 -0
  126. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/access/core/filter.gdshader +31 -0
  127. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/access/core/filters.gd +64 -0
  128. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/access/core/flash_run.gd +42 -0
  129. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/access/core/options.gd +47 -0
  130. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/access/core/proof.gd +345 -0
  131. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/access/fixture/flash.gd +11 -0
  132. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/access/fixture/flash.tscn +10 -0
  133. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/access/fixture/main.tscn +35 -0
  134. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/access/fixture/polyweave_access.gd +10 -0
  135. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/access/fixture/project.godot +9 -0
  136. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/access/fixture/shake.gd +8 -0
  137. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/access/fixture/shake.tscn +8 -0
  138. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/access/kit.toml +22 -0
  139. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/audio/core/audio.gd +276 -0
  140. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/audio/core/options.gd +23 -0
  141. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/audio/core/proof.gd +334 -0
  142. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/audio/fixture/main.tscn +3 -0
  143. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/audio/fixture/polyweave_audio.gd +15 -0
  144. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/audio/fixture/project.godot +9 -0
  145. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/audio/fixture/sounds/confirm.wav +0 -0
  146. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/audio/fixture/sounds/focus.wav +0 -0
  147. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/audio/kit.toml +20 -0
  148. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/codes.py +39 -0
  149. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/crash/core/catcher.gd +30 -0
  150. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/crash/core/log.gd +161 -0
  151. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/crash/core/proof.gd +70 -0
  152. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/crash/fixture/main.gd +8 -0
  153. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/crash/fixture/main.tscn +6 -0
  154. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/crash/fixture/project.godot +9 -0
  155. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/crash/kit.toml +19 -0
  156. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/credits/core/credits.gd +83 -0
  157. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/credits/core/proof.gd +104 -0
  158. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/credits/fixture/art/badge.png +0 -0
  159. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/credits/fixture/art/badge.png.prov.json +34 -0
  160. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/credits/fixture/art/mark.png +0 -0
  161. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/credits/fixture/art/mark.png.prov.json +33 -0
  162. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/credits/fixture/credits.json +24 -0
  163. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/credits/fixture/main.tscn +3 -0
  164. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/credits/fixture/polyweave.toml +4 -0
  165. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/credits/fixture/project.godot +9 -0
  166. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/credits/fixture/source/badge.png +0 -0
  167. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/credits/fixture/source/mark.png +0 -0
  168. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/credits/kit.toml +21 -0
  169. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/credits/scene/credits.tscn +11 -0
  170. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/determinism/core/proof.gd +100 -0
  171. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/determinism/core/random.gd +69 -0
  172. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/determinism/core/recorder.gd +76 -0
  173. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/determinism/fixture/main.gd +16 -0
  174. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/determinism/fixture/main.tscn +6 -0
  175. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/determinism/fixture/polyweave_random.gd +8 -0
  176. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/determinism/fixture/polyweave_state.gd +8 -0
  177. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/determinism/fixture/project.godot +16 -0
  178. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/determinism/fixture/record.json +4 -0
  179. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/determinism/kit.toml +18 -0
  180. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/dialogue/core/dialogue.gd +150 -0
  181. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/dialogue/core/proof.gd +184 -0
  182. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/dialogue/fixture/art/luna.png +0 -0
  183. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/dialogue/fixture/i18n/strings.csv +6 -0
  184. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/dialogue/fixture/main.tscn +3 -0
  185. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/dialogue/fixture/polyweave_dialogue.gd +11 -0
  186. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/dialogue/fixture/project.godot +9 -0
  187. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/dialogue/kit.toml +21 -0
  188. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/dialogue/scene/dialogue_box.tscn +41 -0
  189. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/graphics/core/graphics.gd +162 -0
  190. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/graphics/core/options.gd +18 -0
  191. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/graphics/core/proof.gd +68 -0
  192. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/graphics/fixture/main.tscn +17 -0
  193. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/graphics/fixture/project.godot +9 -0
  194. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/graphics/kit.toml +19 -0
  195. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/language/core/language.gd +178 -0
  196. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/language/core/options.gd +19 -0
  197. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/language/core/proof.gd +125 -0
  198. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/language/fixture/fonts/kana.ttf +0 -0
  199. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/language/fixture/i18n/strings.csv +7 -0
  200. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/language/fixture/main.tscn +39 -0
  201. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/language/fixture/polyweave_language.gd +7 -0
  202. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/language/fixture/project.godot +9 -0
  203. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/language/kit.toml +22 -0
  204. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/launch/core/proof.gd +134 -0
  205. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/launch/core/scenes.gd +142 -0
  206. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/launch/core/splash.gd +78 -0
  207. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/launch/fixture/logo.png +0 -0
  208. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/launch/fixture/main.tscn +3 -0
  209. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/launch/fixture/polyweave_launch.gd +6 -0
  210. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/launch/fixture/project.godot +8 -0
  211. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/launch/kit.toml +20 -0
  212. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/launch/scene/splash.tscn +13 -0
  213. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/layer.py +27 -0
  214. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/menus/core/confirm.gd +13 -0
  215. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/menus/core/menu.gd +108 -0
  216. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/menus/core/pause.gd +54 -0
  217. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/menus/core/proof.gd +146 -0
  218. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/menus/fixture/main.tscn +3 -0
  219. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/menus/fixture/project.godot +15 -0
  220. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/menus/kit.toml +21 -0
  221. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/menus/scene/main_menu.tscn +17 -0
  222. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/options/core/options_screen.gd +159 -0
  223. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/options/core/proof.gd +256 -0
  224. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/options/core/settings.gd +285 -0
  225. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/options/fixture/main.tscn +3 -0
  226. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/options/fixture/polyweave_options.gd +31 -0
  227. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/options/fixture/project.godot +8 -0
  228. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/options/kit.toml +31 -0
  229. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/options/scene/options_screen.tscn +13 -0
  230. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/players/core/players.gd +237 -0
  231. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/players/core/proof.gd +234 -0
  232. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/players/fixture/main.tscn +3 -0
  233. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/players/fixture/project.godot +20 -0
  234. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/players/kit.toml +23 -0
  235. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/presence/core/presence.gd +176 -0
  236. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/presence/core/proof.gd +118 -0
  237. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/presence/fixture/main.tscn +3 -0
  238. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/presence/fixture/project.godot +9 -0
  239. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/presence/kit.toml +20 -0
  240. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/generic/dpad_down_64.png +0 -0
  241. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/generic/dpad_down_64.png.prov.json +28 -0
  242. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/generic/dpad_left_64.png +0 -0
  243. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/generic/dpad_left_64.png.prov.json +28 -0
  244. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/generic/dpad_right_64.png +0 -0
  245. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/generic/dpad_right_64.png.prov.json +28 -0
  246. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/generic/dpad_up_64.png +0 -0
  247. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/generic/dpad_up_64.png.prov.json +28 -0
  248. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/generic/east_64.png +0 -0
  249. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/generic/east_64.png.prov.json +28 -0
  250. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/generic/l_stick_64.png +0 -0
  251. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/generic/l_stick_64.png.prov.json +28 -0
  252. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/generic/lb_64.png +0 -0
  253. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/generic/lb_64.png.prov.json +28 -0
  254. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/generic/ls_64.png +0 -0
  255. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/generic/ls_64.png.prov.json +28 -0
  256. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/generic/lt_64.png +0 -0
  257. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/generic/lt_64.png.prov.json +28 -0
  258. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/generic/north_64.png +0 -0
  259. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/generic/north_64.png.prov.json +28 -0
  260. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/generic/r_stick_64.png +0 -0
  261. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/generic/r_stick_64.png.prov.json +28 -0
  262. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/generic/rb_64.png +0 -0
  263. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/generic/rb_64.png.prov.json +28 -0
  264. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/generic/rs_64.png +0 -0
  265. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/generic/rs_64.png.prov.json +28 -0
  266. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/generic/rt_64.png +0 -0
  267. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/generic/rt_64.png.prov.json +28 -0
  268. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/generic/select_64.png +0 -0
  269. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/generic/select_64.png.prov.json +28 -0
  270. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/generic/south_64.png +0 -0
  271. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/generic/south_64.png.prov.json +28 -0
  272. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/generic/start_64.png +0 -0
  273. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/generic/start_64.png.prov.json +28 -0
  274. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/generic/west_64.png +0 -0
  275. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/generic/west_64.png.prov.json +28 -0
  276. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_0_64.png +0 -0
  277. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_0_64.png.prov.json +28 -0
  278. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_1_64.png +0 -0
  279. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_1_64.png.prov.json +28 -0
  280. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_2_64.png +0 -0
  281. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_2_64.png.prov.json +28 -0
  282. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_3_64.png +0 -0
  283. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_3_64.png.prov.json +28 -0
  284. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_4_64.png +0 -0
  285. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_4_64.png.prov.json +28 -0
  286. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_5_64.png +0 -0
  287. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_5_64.png.prov.json +28 -0
  288. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_6_64.png +0 -0
  289. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_6_64.png.prov.json +28 -0
  290. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_7_64.png +0 -0
  291. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_7_64.png.prov.json +28 -0
  292. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_8_64.png +0 -0
  293. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_8_64.png.prov.json +28 -0
  294. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_9_64.png +0 -0
  295. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_9_64.png.prov.json +28 -0
  296. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_a_64.png +0 -0
  297. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_a_64.png.prov.json +28 -0
  298. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_alt_64.png +0 -0
  299. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_alt_64.png.prov.json +28 -0
  300. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_b_64.png +0 -0
  301. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_b_64.png.prov.json +28 -0
  302. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_backspace_64.png +0 -0
  303. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_backspace_64.png.prov.json +28 -0
  304. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_c_64.png +0 -0
  305. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_c_64.png.prov.json +28 -0
  306. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_ctrl_64.png +0 -0
  307. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_ctrl_64.png.prov.json +28 -0
  308. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_d_64.png +0 -0
  309. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_d_64.png.prov.json +28 -0
  310. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_down_64.png +0 -0
  311. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_down_64.png.prov.json +28 -0
  312. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_e_64.png +0 -0
  313. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_e_64.png.prov.json +28 -0
  314. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_enter_64.png +0 -0
  315. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_enter_64.png.prov.json +28 -0
  316. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_escape_64.png +0 -0
  317. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_escape_64.png.prov.json +28 -0
  318. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_f_64.png +0 -0
  319. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_f_64.png.prov.json +28 -0
  320. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_g_64.png +0 -0
  321. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_g_64.png.prov.json +28 -0
  322. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_h_64.png +0 -0
  323. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_h_64.png.prov.json +28 -0
  324. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_i_64.png +0 -0
  325. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_i_64.png.prov.json +28 -0
  326. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_j_64.png +0 -0
  327. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_j_64.png.prov.json +28 -0
  328. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_k_64.png +0 -0
  329. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_k_64.png.prov.json +28 -0
  330. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_l_64.png +0 -0
  331. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_l_64.png.prov.json +28 -0
  332. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_left_64.png +0 -0
  333. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_left_64.png.prov.json +28 -0
  334. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_m_64.png +0 -0
  335. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_m_64.png.prov.json +28 -0
  336. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_n_64.png +0 -0
  337. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_n_64.png.prov.json +28 -0
  338. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_o_64.png +0 -0
  339. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_o_64.png.prov.json +28 -0
  340. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_p_64.png +0 -0
  341. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_p_64.png.prov.json +28 -0
  342. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_q_64.png +0 -0
  343. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_q_64.png.prov.json +28 -0
  344. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_r_64.png +0 -0
  345. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_r_64.png.prov.json +28 -0
  346. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_right_64.png +0 -0
  347. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_right_64.png.prov.json +28 -0
  348. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_s_64.png +0 -0
  349. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_s_64.png.prov.json +28 -0
  350. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_shift_64.png +0 -0
  351. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_shift_64.png.prov.json +28 -0
  352. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_space_64.png +0 -0
  353. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_space_64.png.prov.json +28 -0
  354. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_t_64.png +0 -0
  355. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_t_64.png.prov.json +28 -0
  356. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_tab_64.png +0 -0
  357. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_tab_64.png.prov.json +28 -0
  358. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_u_64.png +0 -0
  359. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_u_64.png.prov.json +28 -0
  360. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_up_64.png +0 -0
  361. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_up_64.png.prov.json +28 -0
  362. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_v_64.png +0 -0
  363. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_v_64.png.prov.json +28 -0
  364. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_w_64.png +0 -0
  365. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_w_64.png.prov.json +28 -0
  366. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_x_64.png +0 -0
  367. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_x_64.png.prov.json +28 -0
  368. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_y_64.png +0 -0
  369. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_y_64.png.prov.json +28 -0
  370. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_z_64.png +0 -0
  371. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/key_z_64.png.prov.json +28 -0
  372. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/mouse_left_64.png +0 -0
  373. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/mouse_left_64.png.prov.json +28 -0
  374. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/mouse_middle_64.png +0 -0
  375. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/mouse_middle_64.png.prov.json +28 -0
  376. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/mouse_right_64.png +0 -0
  377. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/keyboard/mouse_right_64.png.prov.json +28 -0
  378. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/playstation/dpad_down_64.png +0 -0
  379. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/playstation/dpad_down_64.png.prov.json +28 -0
  380. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/playstation/dpad_left_64.png +0 -0
  381. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/playstation/dpad_left_64.png.prov.json +28 -0
  382. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/playstation/dpad_right_64.png +0 -0
  383. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/playstation/dpad_right_64.png.prov.json +28 -0
  384. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/playstation/dpad_up_64.png +0 -0
  385. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/playstation/dpad_up_64.png.prov.json +28 -0
  386. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/playstation/east_64.png +0 -0
  387. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/playstation/east_64.png.prov.json +28 -0
  388. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/playstation/l_stick_64.png +0 -0
  389. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/playstation/l_stick_64.png.prov.json +28 -0
  390. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/playstation/lb_64.png +0 -0
  391. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/playstation/lb_64.png.prov.json +28 -0
  392. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/playstation/ls_64.png +0 -0
  393. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/playstation/ls_64.png.prov.json +28 -0
  394. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/playstation/lt_64.png +0 -0
  395. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/playstation/lt_64.png.prov.json +28 -0
  396. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/playstation/north_64.png +0 -0
  397. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/playstation/north_64.png.prov.json +28 -0
  398. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/playstation/r_stick_64.png +0 -0
  399. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/playstation/r_stick_64.png.prov.json +28 -0
  400. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/playstation/rb_64.png +0 -0
  401. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/playstation/rb_64.png.prov.json +28 -0
  402. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/playstation/rs_64.png +0 -0
  403. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/playstation/rs_64.png.prov.json +28 -0
  404. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/playstation/rt_64.png +0 -0
  405. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/playstation/rt_64.png.prov.json +28 -0
  406. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/playstation/select_64.png +0 -0
  407. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/playstation/select_64.png.prov.json +28 -0
  408. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/playstation/south_64.png +0 -0
  409. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/playstation/south_64.png.prov.json +28 -0
  410. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/playstation/start_64.png +0 -0
  411. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/playstation/start_64.png.prov.json +28 -0
  412. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/playstation/west_64.png +0 -0
  413. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/playstation/west_64.png.prov.json +28 -0
  414. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/switch/dpad_down_64.png +0 -0
  415. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/switch/dpad_down_64.png.prov.json +28 -0
  416. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/switch/dpad_left_64.png +0 -0
  417. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/switch/dpad_left_64.png.prov.json +28 -0
  418. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/switch/dpad_right_64.png +0 -0
  419. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/switch/dpad_right_64.png.prov.json +28 -0
  420. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/switch/dpad_up_64.png +0 -0
  421. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/switch/dpad_up_64.png.prov.json +28 -0
  422. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/switch/east_64.png +0 -0
  423. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/switch/east_64.png.prov.json +28 -0
  424. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/switch/l_stick_64.png +0 -0
  425. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/switch/l_stick_64.png.prov.json +28 -0
  426. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/switch/lb_64.png +0 -0
  427. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/switch/lb_64.png.prov.json +28 -0
  428. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/switch/ls_64.png +0 -0
  429. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/switch/ls_64.png.prov.json +28 -0
  430. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/switch/lt_64.png +0 -0
  431. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/switch/lt_64.png.prov.json +28 -0
  432. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/switch/north_64.png +0 -0
  433. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/switch/north_64.png.prov.json +28 -0
  434. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/switch/r_stick_64.png +0 -0
  435. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/switch/r_stick_64.png.prov.json +28 -0
  436. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/switch/rb_64.png +0 -0
  437. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/switch/rb_64.png.prov.json +28 -0
  438. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/switch/rs_64.png +0 -0
  439. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/switch/rs_64.png.prov.json +28 -0
  440. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/switch/rt_64.png +0 -0
  441. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/switch/rt_64.png.prov.json +28 -0
  442. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/switch/select_64.png +0 -0
  443. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/switch/select_64.png.prov.json +28 -0
  444. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/switch/south_64.png +0 -0
  445. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/switch/south_64.png.prov.json +28 -0
  446. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/switch/start_64.png +0 -0
  447. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/switch/start_64.png.prov.json +28 -0
  448. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/switch/west_64.png +0 -0
  449. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/switch/west_64.png.prov.json +28 -0
  450. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/xbox/dpad_down_64.png +0 -0
  451. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/xbox/dpad_down_64.png.prov.json +28 -0
  452. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/xbox/dpad_left_64.png +0 -0
  453. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/xbox/dpad_left_64.png.prov.json +28 -0
  454. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/xbox/dpad_right_64.png +0 -0
  455. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/xbox/dpad_right_64.png.prov.json +28 -0
  456. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/xbox/dpad_up_64.png +0 -0
  457. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/xbox/dpad_up_64.png.prov.json +28 -0
  458. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/xbox/east_64.png +0 -0
  459. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/xbox/east_64.png.prov.json +28 -0
  460. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/xbox/l_stick_64.png +0 -0
  461. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/xbox/l_stick_64.png.prov.json +28 -0
  462. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/xbox/lb_64.png +0 -0
  463. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/xbox/lb_64.png.prov.json +28 -0
  464. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/xbox/ls_64.png +0 -0
  465. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/xbox/ls_64.png.prov.json +28 -0
  466. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/xbox/lt_64.png +0 -0
  467. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/xbox/lt_64.png.prov.json +28 -0
  468. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/xbox/north_64.png +0 -0
  469. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/xbox/north_64.png.prov.json +28 -0
  470. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/xbox/r_stick_64.png +0 -0
  471. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/xbox/r_stick_64.png.prov.json +28 -0
  472. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/xbox/rb_64.png +0 -0
  473. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/xbox/rb_64.png.prov.json +28 -0
  474. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/xbox/rs_64.png +0 -0
  475. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/xbox/rs_64.png.prov.json +28 -0
  476. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/xbox/rt_64.png +0 -0
  477. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/xbox/rt_64.png.prov.json +28 -0
  478. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/xbox/select_64.png +0 -0
  479. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/xbox/select_64.png.prov.json +28 -0
  480. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/xbox/south_64.png +0 -0
  481. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/xbox/south_64.png.prov.json +28 -0
  482. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/xbox/start_64.png +0 -0
  483. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/xbox/start_64.png.prov.json +28 -0
  484. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/xbox/west_64.png +0 -0
  485. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/icons/xbox/west_64.png.prov.json +28 -0
  486. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/prompt_icon.gd +19 -0
  487. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/prompts.gd +562 -0
  488. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/core/proof.gd +334 -0
  489. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/fixture/main.tscn +3 -0
  490. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/fixture/project.godot +28 -0
  491. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/icons/generic.icons.toml +84 -0
  492. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/icons/keyboard.icons.toml +216 -0
  493. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/icons/playstation.icons.toml +86 -0
  494. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/icons/switch.icons.toml +83 -0
  495. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/icons/xbox.icons.toml +88 -0
  496. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/kit.toml +30 -0
  497. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/proof.accept.toml +10 -0
  498. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/prompts/scene/prompt_legend.tscn +15 -0
  499. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/remap/core/bindings.gd +618 -0
  500. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/remap/core/icons/remap/listening_64.png +0 -0
  501. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/remap/core/icons/remap/listening_64.png.prov.json +28 -0
  502. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/remap/core/icons/remap/reset_64.png +0 -0
  503. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/remap/core/icons/remap/reset_64.png.prov.json +28 -0
  504. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/remap/core/options.gd +11 -0
  505. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/remap/core/pad_screen.gd +370 -0
  506. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/remap/core/pads/playstation.json +29 -0
  507. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/remap/core/pads/playstation.png +0 -0
  508. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/remap/core/pads/playstation.png.prov.json +38 -0
  509. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/remap/core/pads/switch.json +29 -0
  510. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/remap/core/pads/switch.png +0 -0
  511. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/remap/core/pads/switch.png.prov.json +30 -0
  512. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/remap/core/pads/xbox.json +29 -0
  513. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/remap/core/pads/xbox.png +0 -0
  514. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/remap/core/pads/xbox.png.prov.json +38 -0
  515. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/remap/core/proof.gd +507 -0
  516. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/remap/core/remap_menu.gd +398 -0
  517. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/remap/fixture/main.tscn +3 -0
  518. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/remap/fixture/project.godot +24 -0
  519. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/remap/icons/remap.icons.toml +20 -0
  520. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/remap/kit.toml +45 -0
  521. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/remap/pads/pads.accept.toml +26 -0
  522. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/remap/pads/playstation.svg +34 -0
  523. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/remap/pads/switch.svg +94 -0
  524. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/remap/pads/xbox.svg +34 -0
  525. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/remap/proof.accept.toml +10 -0
  526. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/remap/scene/remap_menu.tscn +15 -0
  527. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/saves/core/proof.gd +148 -0
  528. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/saves/core/saves.gd +192 -0
  529. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/saves/fixture/main.tscn +3 -0
  530. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/saves/fixture/polyweave_saves.gd +14 -0
  531. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/saves/fixture/project.godot +8 -0
  532. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/saves/kit.toml +21 -0
  533. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/settings.py +17 -0
  534. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/state/core/proof.gd +36 -0
  535. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/state/core/state.gd +85 -0
  536. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/state/fixture/level.gd +7 -0
  537. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/state/fixture/main.tscn +13 -0
  538. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/state/fixture/player.gd +3 -0
  539. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/state/fixture/polyweave_state.gd +9 -0
  540. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/state/fixture/project.godot +9 -0
  541. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/state/kit.toml +18 -0
  542. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/tables/core/proof.gd +93 -0
  543. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/tables/core/tables.gd +120 -0
  544. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/tables/fixture/data/enemies.csv +4 -0
  545. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/tables/fixture/data/tables.toml +12 -0
  546. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/tables/fixture/project.godot +7 -0
  547. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/tables/fixture/tables/enemies.gd +26 -0
  548. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/tables/kit.toml +19 -0
  549. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/tests/core/proof.gd +29 -0
  550. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/tests/core/test.gd +54 -0
  551. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/tests/fixture/project.godot +8 -0
  552. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/tests/fixture/tests/legacy_test.gd +14 -0
  553. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/tests/fixture/tests/sums_test.gd +7 -0
  554. polyweave_gamekit-0.1.0/src/polyweave/layers/kits/tests/kit.toml +18 -0
  555. polyweave_gamekit-0.1.0/src/polyweave/layers/motion/__init__.py +1 -0
  556. polyweave_gamekit-0.1.0/src/polyweave/layers/motion/camera.py +724 -0
  557. polyweave_gamekit-0.1.0/src/polyweave/layers/motion/clip.py +758 -0
  558. polyweave_gamekit-0.1.0/src/polyweave/layers/motion/codes.py +155 -0
  559. polyweave_gamekit-0.1.0/src/polyweave/layers/motion/layer.py +52 -0
  560. polyweave_gamekit-0.1.0/src/polyweave/layers/motion/motion.py +78 -0
  561. polyweave_gamekit-0.1.0/src/polyweave/layers/motion/settings.py +37 -0
  562. polyweave_gamekit-0.1.0/src/polyweave/layers/motion/skeleton.py +677 -0
  563. polyweave_gamekit-0.1.0/src/polyweave/layers/motion/sprites.py +287 -0
  564. polyweave_gamekit-0.1.0/src/polyweave/layers/motion/timeline.py +422 -0
  565. polyweave_gamekit-0.1.0/src/polyweave/layers/picture/__init__.py +1 -0
  566. polyweave_gamekit-0.1.0/src/polyweave/layers/picture/codes.py +114 -0
  567. polyweave_gamekit-0.1.0/src/polyweave/layers/picture/copies.py +193 -0
  568. polyweave_gamekit-0.1.0/src/polyweave/layers/picture/fitting.py +206 -0
  569. polyweave_gamekit-0.1.0/src/polyweave/layers/picture/layer.py +61 -0
  570. polyweave_gamekit-0.1.0/src/polyweave/layers/picture/page.py +224 -0
  571. polyweave_gamekit-0.1.0/src/polyweave/layers/picture/panel.py +1727 -0
  572. polyweave_gamekit-0.1.0/src/polyweave/layers/picture/picture.py +668 -0
  573. polyweave_gamekit-0.1.0/src/polyweave/layers/picture/scenario.py +191 -0
  574. polyweave_gamekit-0.1.0/src/polyweave/layers/picture/settings.py +69 -0
  575. polyweave_gamekit-0.1.0/src/polyweave/layers/picture/style.py +695 -0
  576. polyweave_gamekit-0.1.0/src/polyweave/layers/picture/variation.py +637 -0
  577. polyweave_gamekit-0.1.0/src/polyweave/layers/picture/vector.py +476 -0
  578. polyweave_gamekit-0.1.0/src/polyweave/layers/reference/__init__.py +1 -0
  579. polyweave_gamekit-0.1.0/src/polyweave/layers/reference/layer.py +90 -0
  580. polyweave_gamekit-0.1.0/src/polyweave/layers/reference/reference.py +592 -0
  581. polyweave_gamekit-0.1.0/src/polyweave/layers/reference/reference_compare.py +285 -0
  582. polyweave_gamekit-0.1.0/src/polyweave/layers/reference/reference_concept.py +391 -0
  583. polyweave_gamekit-0.1.0/src/polyweave/layers/reference/reference_events.py +415 -0
  584. polyweave_gamekit-0.1.0/src/polyweave/layers/reference/reference_objects.py +590 -0
  585. polyweave_gamekit-0.1.0/src/polyweave/layers/reference/reference_regions.py +224 -0
  586. polyweave_gamekit-0.1.0/src/polyweave/layers/reference/reference_register.py +167 -0
  587. polyweave_gamekit-0.1.0/src/polyweave/layers/reference/reference_transcription.py +237 -0
  588. polyweave_gamekit-0.1.0/src/polyweave/layers/reference/settings.py +44 -0
  589. polyweave_gamekit-0.1.0/src/polyweave/layers/sound/__init__.py +1 -0
  590. polyweave_gamekit-0.1.0/src/polyweave/layers/sound/codes.py +213 -0
  591. polyweave_gamekit-0.1.0/src/polyweave/layers/sound/layer.py +70 -0
  592. polyweave_gamekit-0.1.0/src/polyweave/layers/sound/licences.py +93 -0
  593. polyweave_gamekit-0.1.0/src/polyweave/layers/sound/music.py +1049 -0
  594. polyweave_gamekit-0.1.0/src/polyweave/layers/sound/music_draft.py +413 -0
  595. polyweave_gamekit-0.1.0/src/polyweave/layers/sound/music_heard.py +387 -0
  596. polyweave_gamekit-0.1.0/src/polyweave/layers/sound/music_render.py +729 -0
  597. polyweave_gamekit-0.1.0/src/polyweave/layers/sound/page.py +20 -0
  598. polyweave_gamekit-0.1.0/src/polyweave/layers/sound/settings.py +74 -0
  599. polyweave_gamekit-0.1.0/src/polyweave/layers/sound/sfx.py +570 -0
  600. polyweave_gamekit-0.1.0/src/polyweave/layers/sound/sfxr.py +334 -0
  601. polyweave_gamekit-0.1.0/src/polyweave/layers/sound/sound.py +893 -0
  602. polyweave_gamekit-0.1.0/src/polyweave/layers/sound/sound_buy.py +932 -0
  603. polyweave_gamekit-0.1.0/src/polyweave/layers/sound/sound_loop.py +270 -0
  604. polyweave_gamekit-0.1.0/src/polyweave/layers/sound/sound_stems.py +180 -0
  605. polyweave_gamekit-0.1.0/src/polyweave/layers/store/__init__.py +1 -0
  606. polyweave_gamekit-0.1.0/src/polyweave/layers/store/codes.py +191 -0
  607. polyweave_gamekit-0.1.0/src/polyweave/layers/store/compose.py +218 -0
  608. polyweave_gamekit-0.1.0/src/polyweave/layers/store/icons.py +417 -0
  609. polyweave_gamekit-0.1.0/src/polyweave/layers/store/layer.py +42 -0
  610. polyweave_gamekit-0.1.0/src/polyweave/layers/store/store.py +298 -0
  611. polyweave_gamekit-0.1.0/src/polyweave/layers/store/stores/steam.toml +61 -0
  612. polyweave_gamekit-0.1.0/src/polyweave/layers/store/video.py +575 -0
  613. polyweave_gamekit-0.1.0/src/polyweave/layers/vfx/__init__.py +1 -0
  614. polyweave_gamekit-0.1.0/src/polyweave/layers/vfx/codes.py +42 -0
  615. polyweave_gamekit-0.1.0/src/polyweave/layers/vfx/layer.py +50 -0
  616. polyweave_gamekit-0.1.0/src/polyweave/layers/vfx/page.py +26 -0
  617. polyweave_gamekit-0.1.0/src/polyweave/layers/vfx/vfx.py +1599 -0
  618. polyweave_gamekit-0.1.0/src/polyweave/layers/words/__init__.py +1 -0
  619. polyweave_gamekit-0.1.0/src/polyweave/layers/words/codes.py +175 -0
  620. polyweave_gamekit-0.1.0/src/polyweave/layers/words/layer.py +79 -0
  621. polyweave_gamekit-0.1.0/src/polyweave/layers/words/page.py +35 -0
  622. polyweave_gamekit-0.1.0/src/polyweave/layers/words/settings.py +42 -0
  623. polyweave_gamekit-0.1.0/src/polyweave/layers/words/svgtext.py +301 -0
  624. polyweave_gamekit-0.1.0/src/polyweave/layers/words/words.py +894 -0
  625. polyweave_gamekit-0.1.0/src/polyweave/layers/words/world.py +956 -0
  626. polyweave_gamekit-0.1.0/src/polyweave/loop/__init__.py +1 -0
  627. polyweave_gamekit-0.1.0/src/polyweave/loop/accept.py +861 -0
  628. polyweave_gamekit-0.1.0/src/polyweave/loop/calibrate.py +405 -0
  629. polyweave_gamekit-0.1.0/src/polyweave/loop/declared.py +98 -0
  630. polyweave_gamekit-0.1.0/src/polyweave/loop/extend.py +597 -0
  631. polyweave_gamekit-0.1.0/src/polyweave/loop/ladder.py +139 -0
  632. polyweave_gamekit-0.1.0/src/polyweave/loop/loop.py +808 -0
  633. polyweave_gamekit-0.1.0/src/polyweave/loop/measure.py +1446 -0
  634. polyweave_gamekit-0.1.0/src/polyweave/loop/person.py +179 -0
  635. polyweave_gamekit-0.1.0/src/polyweave/loop/review.py +743 -0
  636. polyweave_gamekit-0.1.0/src/polyweave/loop/review_page/locales/en.json +244 -0
  637. polyweave_gamekit-0.1.0/src/polyweave/loop/review_page/locales/pt-BR.json +244 -0
  638. polyweave_gamekit-0.1.0/src/polyweave/loop/review_page/screen/GLTFLoader.js +1 -0
  639. polyweave_gamekit-0.1.0/src/polyweave/loop/review_page/screen/OrbitControls.js +1 -0
  640. polyweave_gamekit-0.1.0/src/polyweave/loop/review_page/screen/index.css +2 -0
  641. polyweave_gamekit-0.1.0/src/polyweave/loop/review_page/screen/index.html +13 -0
  642. polyweave_gamekit-0.1.0/src/polyweave/loop/review_page/screen/inter-cyrillic-ext-wght-normal.woff2 +0 -0
  643. polyweave_gamekit-0.1.0/src/polyweave/loop/review_page/screen/inter-cyrillic-wght-normal.woff2 +0 -0
  644. polyweave_gamekit-0.1.0/src/polyweave/loop/review_page/screen/inter-greek-ext-wght-normal.woff2 +0 -0
  645. polyweave_gamekit-0.1.0/src/polyweave/loop/review_page/screen/inter-greek-wght-normal.woff2 +0 -0
  646. polyweave_gamekit-0.1.0/src/polyweave/loop/review_page/screen/inter-latin-ext-wght-normal.woff2 +0 -0
  647. polyweave_gamekit-0.1.0/src/polyweave/loop/review_page/screen/inter-latin-wght-normal.woff2 +0 -0
  648. polyweave_gamekit-0.1.0/src/polyweave/loop/review_page/screen/inter-vietnamese-wght-normal.woff2 +0 -0
  649. polyweave_gamekit-0.1.0/src/polyweave/loop/review_page/screen/plus-jakarta-sans-latin-ext-wght-normal.woff2 +0 -0
  650. polyweave_gamekit-0.1.0/src/polyweave/loop/review_page/screen/plus-jakarta-sans-latin-wght-normal.woff2 +0 -0
  651. polyweave_gamekit-0.1.0/src/polyweave/loop/review_page/screen/plus-jakarta-sans-vietnamese-wght-normal.woff2 +0 -0
  652. polyweave_gamekit-0.1.0/src/polyweave/loop/review_page/screen/review.js +60 -0
  653. polyweave_gamekit-0.1.0/src/polyweave/loop/review_page/screen/stamp.json +15 -0
  654. polyweave_gamekit-0.1.0/src/polyweave/loop/review_page/screen/three.module.js +4220 -0
  655. polyweave_gamekit-0.1.0/src/polyweave/loop/review_text.py +78 -0
  656. polyweave_gamekit-0.1.0/src/polyweave/loop/search.py +864 -0
  657. polyweave_gamekit-0.1.0/src/polyweave/loop/trace.py +157 -0
  658. polyweave_gamekit-0.1.0/src/polyweave/loop/verdict.py +1007 -0
  659. polyweave_gamekit-0.1.0/src/polyweave/services/__init__.py +1 -0
  660. polyweave_gamekit-0.1.0/src/polyweave/services/client.py +174 -0
  661. polyweave_gamekit-0.1.0/src/polyweave/services/elevenlabs.py +221 -0
  662. polyweave_gamekit-0.1.0/src/polyweave/services/generated.py +184 -0
  663. polyweave_gamekit-0.1.0/src/polyweave/services/ideogram.py +276 -0
  664. polyweave_gamekit-0.1.0/src/polyweave/services/meshy.py +85 -0
  665. polyweave_gamekit-0.1.0/src/polyweave/services/purchase.py +849 -0
  666. polyweave_gamekit-0.1.0/src/polyweave/services/rodin.py +82 -0
  667. polyweave_gamekit-0.1.0/src/polyweave/services/scenario.py +199 -0
  668. polyweave_gamekit-0.1.0/src/polyweave/services/schema.py +266 -0
  669. polyweave_gamekit-0.1.0/src/polyweave/services/service.py +388 -0
  670. polyweave_gamekit-0.1.0/src/polyweave/services/tripo.py +86 -0
  671. polyweave_gamekit-0.1.0/src/polyweave/surface/__init__.py +1 -0
  672. polyweave_gamekit-0.1.0/src/polyweave/surface/adoption.py +171 -0
  673. polyweave_gamekit-0.1.0/src/polyweave/surface/brief.py +313 -0
  674. polyweave_gamekit-0.1.0/src/polyweave/surface/capabilities.py +263 -0
  675. polyweave_gamekit-0.1.0/src/polyweave/surface/census.py +245 -0
  676. polyweave_gamekit-0.1.0/src/polyweave/surface/cli.py +196 -0
  677. polyweave_gamekit-0.1.0/src/polyweave/surface/commands.py +454 -0
  678. polyweave_gamekit-0.1.0/src/polyweave/surface/migrate.py +573 -0
  679. polyweave_gamekit-0.1.0/src/polyweave/surface/moved.toml +137 -0
  680. polyweave_gamekit-0.1.0/src/polyweave/surface/newgame.py +169 -0
  681. polyweave_gamekit-0.1.0/src/polyweave/surface/project.py +1041 -0
  682. polyweave_gamekit-0.1.0/src/polyweave/surface/quote.py +81 -0
  683. polyweave_gamekit-0.1.0/src/polyweave/surface/report.py +95 -0
  684. polyweave_gamekit-0.1.0/src/polyweave/surface/revision.py +689 -0
  685. polyweave_gamekit-0.1.0/src/polyweave/surface/server.py +396 -0
@@ -0,0 +1,19 @@
1
+ .roadkeep
2
+
3
+ # the plugin's working state, which `[paths] work` names and nothing outside the tree;
4
+ # tools/gate.py keeps its log and stamp under it too
5
+ .polyweave/
6
+ # What tools\gate-vm.cmd brings back from the VMware guest.
7
+ TestResults/
8
+
9
+ # a run redirected to a file at the root is evidence, not source, and the commit tool
10
+ # stages the whole tree
11
+ /*.log
12
+
13
+ __pycache__/
14
+ *.py[cod]
15
+ .pytest_cache/
16
+ .ruff_cache/
17
+ *.egg-info/
18
+ build/
19
+ dist/
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Alexandre Oliveira
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,126 @@
1
+ Metadata-Version: 2.5
2
+ Name: polyweave-gamekit
3
+ Version: 0.1.0
4
+ Summary: Make a game's parts by declaring what each must satisfy: 3D assets, pictures, sound loops and the world's text, on top of Blender, Godot and paid generators.
5
+ Project-URL: Homepage, https://alegauss.github.io/polyweave/
6
+ Project-URL: Source, https://github.com/alegauss/polyweave
7
+ Project-URL: Issues, https://github.com/alegauss/polyweave/issues
8
+ Author: Alexandre Oliveira
9
+ License-Expression: MIT
10
+ License-File: LICENSE
11
+ Keywords: 3d,assets,blender,claude-code,gamedev,godot,mcp,sound
12
+ Classifier: Development Status :: 3 - Alpha
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Operating System :: OS Independent
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Programming Language :: Python :: 3.13
19
+ Classifier: Topic :: Games/Entertainment
20
+ Classifier: Topic :: Multimedia :: Graphics :: 3D Modeling
21
+ Requires-Python: >=3.11
22
+ Requires-Dist: numpy>=1.26
23
+ Requires-Dist: pillow>=10
24
+ Provides-Extra: audio
25
+ Requires-Dist: pedalboard>=0.9; extra == 'audio'
26
+ Provides-Extra: blender
27
+ Requires-Dist: bpy>=4.2; extra == 'blender'
28
+ Provides-Extra: dev
29
+ Requires-Dist: pytest-xdist>=3; extra == 'dev'
30
+ Requires-Dist: pytest>=8; extra == 'dev'
31
+ Requires-Dist: ruff>=0.6; extra == 'dev'
32
+ Provides-Extra: stems
33
+ Requires-Dist: demucs>=4; extra == 'stems'
34
+ Provides-Extra: text
35
+ Requires-Dist: fonttools>=4.40; extra == 'text'
36
+ Description-Content-Type: text/markdown
37
+
38
+ # polyweave
39
+
40
+ A Claude Code plugin for making a game's parts by declaring what each has to satisfy:
41
+ 3D assets (geometry, surface and motion) and the pictures they start from, sound loops
42
+ held to a seam, and the names and lines of the game's world. It works on top of Blender,
43
+ Godot and paid generators. Levels are next, on the roadmap.
44
+
45
+ The premise: generating a mesh is the cheap part. The expensive part is everything between
46
+ *having a mesh* and *knowing it is right*, and today that is a person changing one number at
47
+ a time and looking at a two-minute render. polyweave aims to close that loop — you state
48
+ what the asset has to satisfy, and it searches for the parameters that satisfy it, measuring
49
+ against the reference rather than against an opinion.
50
+
51
+ It is built for an agent to drive. No GUI, no account, no hosted service: it runs on your
52
+ machine against files in your own repository.
53
+
54
+ ## Status
55
+
56
+ The status is not typed here, because a typed status goes stale: this file said "Block A
57
+ has started" a hundred shipped lines after most blocks were built. `docs/ROADMAP.md` holds
58
+ what is still open, block by block, and `docs/CHANGELOG.md` what has shipped; the site's
59
+ landing page states the count, derived from the roadmap. Every line in that file was drawn
60
+ from a failure measured in a real project, and it also carries the non-goals, which say
61
+ what this deliberately will not be.
62
+
63
+ No number anywhere is yet a measurement of polyweave: that is Block H, where a real game
64
+ adopts the plugin and the loop ledger records what an asset cost to make each way.
65
+
66
+ ## The plugin
67
+
68
+ Python, under `src/polyweave`, against Python 3.11 — which is the interpreter Blender 4.2
69
+ ships, and code here may have to run inside it. It depends on numpy and Pillow, and on
70
+ nothing else. Blender is optional: `pip install -e ".[blender]"` brings `bpy` in for the
71
+ render path, and without it `capabilities()` says so and a render refuses rather than
72
+ importing a renderer nobody asked for.
73
+
74
+ On PyPI the distribution is **`polyweave-gamekit`**, because `polyweave` there is an
75
+ unrelated project: `pip install polyweave-gamekit[audio]` installs it with an extra, and
76
+ the import and `python -m polyweave` keep the short name. A `v<version>` tag publishes it
77
+ through `.github/workflows/publish.yml`, to TestPyPI first and then PyPI, and a manual run
78
+ of that workflow rehearses on TestPyPI alone; the version is `polyweave.__version__`, and the
79
+ plugin manifest carries the same number.
80
+
81
+ It is served as a Claude Code plugin from this repository. `.claude-plugin/` holds the
82
+ marketplace, which names `plugin/` as the plugin: its manifest, its hooks and
83
+ `skills/polyweave/`, the skill that drives it, and nothing else an adopter would have to
84
+ download. `python -m polyweave serve` is the MCP server every operation is exposed
85
+ through.
86
+
87
+ ```
88
+ python tools/gate.py # the suite, in tests/, under a lock, stamped
89
+ python -m ruff check . # the linter
90
+ python -m ruff format . # the formatter
91
+ ```
92
+
93
+ ## Roadmap docs
94
+
95
+ `docs/ROADMAP.md`, `docs/CHANGELOG.md` and `docs/IMPROVEMENTS.md` are maintained by roadkeep
96
+ and are not edited by hand — `python .roadkeep/scripts/roadkeep.py` is the entry point here.
97
+
98
+ `docs/specs/` is the other half: the contracts that more than one roadmap line depends on — a
99
+ file format, a vocabulary, a behaviour every call obeys. Those are ordinary documents, edited
100
+ directly, and they are settled enough to build against.
101
+
102
+ ## The site
103
+
104
+ `site/` is the public page, at `alegauss.github.io/polyweave/` once Pages is pointed at the
105
+ `site` workflow. It says on the page — second, above everything but the hero — how many
106
+ blocks are built and how many lines are still open.
107
+
108
+ Everything it counts is generated from `docs/ROADMAP.md` through roadkeep rather than typed,
109
+ so the page cannot disagree with the file, and `npm test` fails the build if the stated
110
+ status differs from the roadmap's. See [`site/README.md`](site/README.md).
111
+
112
+ ## More tools by alegauss
113
+
114
+ For Claude Code:
115
+
116
+ - **[Claude Code Tray](https://alegauss.github.io/claude-tray/)**: your rate-limit usage as a Windows tray icon that turns red before you run out.
117
+ - **[roadkeep](https://alegauss.github.io/roadkeep/)**: keeps ROADMAP, CHANGELOG and IMPROVEMENTS to one format, as a CLI and a Claude Code plugin.
118
+ - **[commitclerk](https://alegauss.github.io/commitclerk/)**: Conventional Commits messages from your staged diff, in a single-file Python CLI.
119
+
120
+ For Windows developers:
121
+
122
+ - **[winwright](https://alegauss.github.io/winwright/)**: drives a Windows desktop app from a test and reports what was actually observed.
123
+ - **[FreeWilly](https://alegauss.github.io/freewilly/)**: Docker on Windows without Docker Desktop, with no admin prompt and no telemetry.
124
+ - **[Quickshell](https://alegauss.github.io/quickshell/)**: an SSH client for Windows with sessions, keys, SFTP and tunnels, and without the rest of the suite.
125
+
126
+ All of them: [alegauss.github.io](https://alegauss.github.io/)
@@ -0,0 +1,89 @@
1
+ # polyweave
2
+
3
+ A Claude Code plugin for making a game's parts by declaring what each has to satisfy:
4
+ 3D assets (geometry, surface and motion) and the pictures they start from, sound loops
5
+ held to a seam, and the names and lines of the game's world. It works on top of Blender,
6
+ Godot and paid generators. Levels are next, on the roadmap.
7
+
8
+ The premise: generating a mesh is the cheap part. The expensive part is everything between
9
+ *having a mesh* and *knowing it is right*, and today that is a person changing one number at
10
+ a time and looking at a two-minute render. polyweave aims to close that loop — you state
11
+ what the asset has to satisfy, and it searches for the parameters that satisfy it, measuring
12
+ against the reference rather than against an opinion.
13
+
14
+ It is built for an agent to drive. No GUI, no account, no hosted service: it runs on your
15
+ machine against files in your own repository.
16
+
17
+ ## Status
18
+
19
+ The status is not typed here, because a typed status goes stale: this file said "Block A
20
+ has started" a hundred shipped lines after most blocks were built. `docs/ROADMAP.md` holds
21
+ what is still open, block by block, and `docs/CHANGELOG.md` what has shipped; the site's
22
+ landing page states the count, derived from the roadmap. Every line in that file was drawn
23
+ from a failure measured in a real project, and it also carries the non-goals, which say
24
+ what this deliberately will not be.
25
+
26
+ No number anywhere is yet a measurement of polyweave: that is Block H, where a real game
27
+ adopts the plugin and the loop ledger records what an asset cost to make each way.
28
+
29
+ ## The plugin
30
+
31
+ Python, under `src/polyweave`, against Python 3.11 — which is the interpreter Blender 4.2
32
+ ships, and code here may have to run inside it. It depends on numpy and Pillow, and on
33
+ nothing else. Blender is optional: `pip install -e ".[blender]"` brings `bpy` in for the
34
+ render path, and without it `capabilities()` says so and a render refuses rather than
35
+ importing a renderer nobody asked for.
36
+
37
+ On PyPI the distribution is **`polyweave-gamekit`**, because `polyweave` there is an
38
+ unrelated project: `pip install polyweave-gamekit[audio]` installs it with an extra, and
39
+ the import and `python -m polyweave` keep the short name. A `v<version>` tag publishes it
40
+ through `.github/workflows/publish.yml`, to TestPyPI first and then PyPI, and a manual run
41
+ of that workflow rehearses on TestPyPI alone; the version is `polyweave.__version__`, and the
42
+ plugin manifest carries the same number.
43
+
44
+ It is served as a Claude Code plugin from this repository. `.claude-plugin/` holds the
45
+ marketplace, which names `plugin/` as the plugin: its manifest, its hooks and
46
+ `skills/polyweave/`, the skill that drives it, and nothing else an adopter would have to
47
+ download. `python -m polyweave serve` is the MCP server every operation is exposed
48
+ through.
49
+
50
+ ```
51
+ python tools/gate.py # the suite, in tests/, under a lock, stamped
52
+ python -m ruff check . # the linter
53
+ python -m ruff format . # the formatter
54
+ ```
55
+
56
+ ## Roadmap docs
57
+
58
+ `docs/ROADMAP.md`, `docs/CHANGELOG.md` and `docs/IMPROVEMENTS.md` are maintained by roadkeep
59
+ and are not edited by hand — `python .roadkeep/scripts/roadkeep.py` is the entry point here.
60
+
61
+ `docs/specs/` is the other half: the contracts that more than one roadmap line depends on — a
62
+ file format, a vocabulary, a behaviour every call obeys. Those are ordinary documents, edited
63
+ directly, and they are settled enough to build against.
64
+
65
+ ## The site
66
+
67
+ `site/` is the public page, at `alegauss.github.io/polyweave/` once Pages is pointed at the
68
+ `site` workflow. It says on the page — second, above everything but the hero — how many
69
+ blocks are built and how many lines are still open.
70
+
71
+ Everything it counts is generated from `docs/ROADMAP.md` through roadkeep rather than typed,
72
+ so the page cannot disagree with the file, and `npm test` fails the build if the stated
73
+ status differs from the roadmap's. See [`site/README.md`](site/README.md).
74
+
75
+ ## More tools by alegauss
76
+
77
+ For Claude Code:
78
+
79
+ - **[Claude Code Tray](https://alegauss.github.io/claude-tray/)**: your rate-limit usage as a Windows tray icon that turns red before you run out.
80
+ - **[roadkeep](https://alegauss.github.io/roadkeep/)**: keeps ROADMAP, CHANGELOG and IMPROVEMENTS to one format, as a CLI and a Claude Code plugin.
81
+ - **[commitclerk](https://alegauss.github.io/commitclerk/)**: Conventional Commits messages from your staged diff, in a single-file Python CLI.
82
+
83
+ For Windows developers:
84
+
85
+ - **[winwright](https://alegauss.github.io/winwright/)**: drives a Windows desktop app from a test and reports what was actually observed.
86
+ - **[FreeWilly](https://alegauss.github.io/freewilly/)**: Docker on Windows without Docker Desktop, with no admin prompt and no telemetry.
87
+ - **[Quickshell](https://alegauss.github.io/quickshell/)**: an SSH client for Windows with sessions, keys, SFTP and tunnels, and without the rest of the suite.
88
+
89
+ All of them: [alegauss.github.io](https://alegauss.github.io/)
@@ -0,0 +1,91 @@
1
+ [build-system]
2
+ requires = ["hatchling"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ # `polyweave` on PyPI is an unrelated project, so the distribution is named apart and
7
+ # the import stays `polyweave` (§PW602). A remedy that says `pip install` names this.
8
+ name = "polyweave-gamekit"
9
+ dynamic = ["version"]
10
+ description = "Make a game's parts by declaring what each must satisfy: 3D assets, pictures, sound loops and the world's text, on top of Blender, Godot and paid generators."
11
+ readme = "README.md"
12
+ requires-python = ">=3.11"
13
+ license = "MIT"
14
+ license-files = ["LICENSE"]
15
+ authors = [{ name = "Alexandre Oliveira" }]
16
+ keywords = ["gamedev", "3d", "blender", "godot", "assets", "sound", "mcp", "claude-code"]
17
+ classifiers = [
18
+ "Development Status :: 3 - Alpha",
19
+ "Intended Audience :: Developers",
20
+ "Operating System :: OS Independent",
21
+ "Programming Language :: Python :: 3",
22
+ "Programming Language :: Python :: 3.11",
23
+ "Programming Language :: Python :: 3.12",
24
+ "Programming Language :: Python :: 3.13",
25
+ "Topic :: Games/Entertainment",
26
+ "Topic :: Multimedia :: Graphics :: 3D Modeling",
27
+ ]
28
+ # Both are what a pixel question needs and neither is exotic: Blender bundles numpy, and
29
+ # the assertions and measurements here would otherwise decode PNG by hand.
30
+ dependencies = ["numpy>=1.26", "pillow>=10"]
31
+
32
+ # 3.11 is Blender 4.2's interpreter. Code here may have to run inside it, so nothing
33
+ # below that line is available to this package.
34
+
35
+ [project.optional-dependencies]
36
+ dev = ["pytest>=8", "pytest-xdist>=3", "ruff>=0.6"]
37
+ # Blender is optional: `capabilities()` reports whether it is reachable and a render
38
+ # refuses without it, so importing polyweave never costs a renderer. The module route is
39
+ # what a worker uses; a blender binary named in `[paths]` is the other one.
40
+ blender = ["bpy>=4.2"]
41
+ # Rendering a score (§PW187) loads Surge XT and runs the mix through Pedalboard. Optional
42
+ # like Blender: music.render refuses by name without it, and nothing else imports it.
43
+ audio = ["pedalboard>=0.9"]
44
+ # Splitting a recorded track into stems (§PW558). Optional the same way, and heavy (torch):
45
+ # sound.stems refuses by name without it. CPU torch is enough.
46
+ stems = ["demucs>=4"]
47
+ # Outlining an SVG's live text before the engine draws it (§PW453). Optional the same
48
+ # way: an SVG with no text never imports it, and one with text refuses by name.
49
+ text = ["fonttools>=4.40"]
50
+
51
+ # `polyweave <operation>` once pip has installed it: the same command line as
52
+ # `python -m polyweave`, which the plugin's server and hooks keep using.
53
+ [project.scripts]
54
+ polyweave = "polyweave.surface.cli:main"
55
+
56
+ [project.urls]
57
+ Homepage = "https://alegauss.github.io/polyweave/"
58
+ Source = "https://github.com/alegauss/polyweave"
59
+ Issues = "https://github.com/alegauss/polyweave/issues"
60
+
61
+ # One number for the package, the MCP server's serverInfo and the provenance record; the
62
+ # plugin manifest is held to it by tests/test_packaging.py.
63
+ [tool.hatch.version]
64
+ path = "src/polyweave/__init__.py"
65
+
66
+ [tool.hatch.build.targets.sdist]
67
+ only-include = ["src/polyweave", "README.md", "LICENSE", "pyproject.toml"]
68
+
69
+ [tool.hatch.build.targets.wheel]
70
+ packages = ["src/polyweave"]
71
+
72
+ [tool.pytest.ini_options]
73
+ testpaths = ["tests"]
74
+ pythonpath = ["src", "tests"]
75
+ addopts = "-q"
76
+ markers = [
77
+ "serial: measures time on the machine, so the gate runs it alone after the rest",
78
+ ]
79
+
80
+ [tool.ruff]
81
+ line-length = 88
82
+ src = ["src", "tests"]
83
+ target-version = "py311"
84
+ # The hooks under `.claude` are this repository's plumbing rather than the plugin, and
85
+ # they predate any lint config here. The migration fixtures are two consumers' scripts
86
+ # copied as they were, which is what tests/test_migrate.py reads, so they are not ours
87
+ # to lint.
88
+ extend-exclude = [".claude", "tests/fixtures/migrate"]
89
+
90
+ [tool.ruff.lint]
91
+ select = ["E", "F", "I", "UP", "B", "SIM"]
@@ -0,0 +1,66 @@
1
+ """polyweave — a game's parts declared rather than dialled in.
2
+
3
+ Nothing is imported here on purpose. The caller is an agent whose turn is the budget,
4
+ and a package that pulls in its whole surface to answer one call spends that budget
5
+ before the call happens.
6
+
7
+ The one function here keeps that rule: `readable()` imports `sys` inside itself, and a
8
+ caller that never calls it pays nothing for it.
9
+
10
+ The package is laid out by which way its dependencies are meant to run (§PW499):
11
+
12
+ - `kernel/`: errors and doors, the operation registry, config, jobs, files, the cache,
13
+ the post-checks and the provenance record. It knows no medium.
14
+ - `loop/`: accept, measure, search, calibrate, verdict, review, brief, revision and the
15
+ loop's own ledger: what every medium is declared, measured, searched and judged by.
16
+ - `layers/<medium>/`: geometry (with render), picture, sound, words, vfx, motion,
17
+ engine, reference, store and kits. A measure reading one medium lives with it.
18
+ - `services/`: what was bought from a paid service, and what the service accepts.
19
+ - `surface/`: the server, the command line, the census, capabilities and the calls
20
+ that adopt a project whole.
21
+
22
+ A module that fits no layer cleanly sits with the layer that owns its data.
23
+ """
24
+
25
+ __version__ = "0.1.0"
26
+
27
+
28
+ def readable() -> list[str]:
29
+ """Write this process's output as UTF-8, and say which streams moved (§PW73).
30
+
31
+ Nothing in this package prints its prose. A refusal's message and remedy, and every
32
+ line a run reports, are returned for the caller to print — so the encoding of the
33
+ stream they land on is the caller's process to set, not this one's.
34
+
35
+ Left unset on a Windows desk it is the locale's. An em dash then goes out as the
36
+ single byte 0x97, which is correct cp1252 and nothing is lost writing it; what reads
37
+ the pipe decodes UTF-8, where that byte is not a character, and shows a lozenge. The
38
+ loss is at the far end, which is the worse end: the process that wrote the line saw
39
+ nothing wrong and has nothing to report.
40
+
41
+ A library must not reconfigure a process it does not own, so this is a call and not
42
+ something that happens on import. One line at the top of a runner, before it prints:
43
+
44
+ polyweave.readable()
45
+
46
+ It returns the streams it changed, which is empty where they were already UTF-8, and
47
+ it is safe to call twice. `sys` is the only import, so it costs nothing to the turn
48
+ of a caller that never uses it.
49
+ """
50
+ import sys
51
+
52
+ moved = []
53
+ for name in ("stdout", "stderr"):
54
+ stream = getattr(sys, name, None)
55
+ if stream is None or not hasattr(stream, "reconfigure"):
56
+ continue
57
+ if (getattr(stream, "encoding", "") or "").lower().replace("-", "") == "utf8":
58
+ continue
59
+ try:
60
+ stream.reconfigure(encoding="utf-8")
61
+ except (AttributeError, ValueError, OSError):
62
+ # A stream that cannot be reconfigured is one somebody else already wrapped,
63
+ # and taking it over would be the reach this call exists to avoid.
64
+ continue
65
+ moved.append(name)
66
+ return moved
@@ -0,0 +1,7 @@
1
+ """`python -m polyweave`, the command line in `cli.py`."""
2
+
3
+ import sys
4
+
5
+ from .surface.cli import main
6
+
7
+ sys.exit(main())
@@ -0,0 +1 @@
1
+ """What every layer stands on: errors, the registry, config, jobs, records."""
@@ -0,0 +1,182 @@
1
+ """Renders are content-addressed, so the same picture is paid for once.
2
+
3
+ The evidence is §PW14: a search revisits neighbourhoods and a caller re-runs the same
4
+ render across sessions, and without a cache every one of those is paid again at the full
5
+ price of a path trace.
6
+
7
+ The key is the provenance record's own subset — the input hashes, the parameter values,
8
+ the renderer version, the colour pipeline and the seed. Everything that can change the
9
+ output is in it and nothing that cannot, which is what makes a hit **safe to return**
10
+ rather than merely likely to be right.
11
+
12
+ key = provenance.cache_key(provenance.planned(...)) # before anything is rendered
13
+ hit = look(key, work=...) # or None
14
+ put(key, artefact, record, work=...) # after a miss
15
+
16
+ Two things matter more than they look. **A hit is reported as a hit**, because a caller
17
+ timing a sweep needs to know what it actually measured. And **preview rungs are cached
18
+ too**, since those are the renders a search asks for thousands of times while the full
19
+ ones are asked for once.
20
+ """
21
+
22
+ from __future__ import annotations
23
+
24
+ import contextlib
25
+ import json
26
+ import os
27
+ import shutil
28
+ import time
29
+ from pathlib import Path
30
+
31
+ from .errors import PolyweaveError
32
+ from .files import read_text_retrying, write_atomic
33
+
34
+ #: Under the project, so it can be inspected and deleted by hand. `[paths] work` is the
35
+ #: only location the plugin chooses for itself, and it belongs in `.gitignore`.
36
+ DIRECTORY = "cache"
37
+
38
+ #: What a project may hold before the least recently used are dropped.
39
+ MAX_BYTES = 8_000_000_000
40
+
41
+
42
+ def where(work: str | Path) -> Path:
43
+ return Path(work) / DIRECTORY
44
+
45
+
46
+ def slot(key: str, work: str | Path, suffix: str = ".png") -> tuple[Path, Path]:
47
+ """The artefact and its record, fanned out by the key's first two characters."""
48
+ if not key or len(key) < 4:
49
+ raise PolyweaveError(
50
+ "prov.bad-key",
51
+ f"{key!r} is not a cache key",
52
+ "compute it with cache_key over a provenance record",
53
+ )
54
+ folder = where(work) / key[:2]
55
+ return folder / f"{key}{suffix}", folder / f"{key}.json"
56
+
57
+
58
+ def look(key: str, *, work: str | Path, suffix: str = ".png") -> dict | None:
59
+ """What this key holds, or nothing.
60
+
61
+ A record whose artefact is missing is **dropped rather than repaired**: half an
62
+ entry is a hit waiting to return a file that is not there.
63
+ """
64
+ artefact, record = slot(key, work, suffix)
65
+ if not record.is_file():
66
+ return None
67
+ if not artefact.is_file():
68
+ with contextlib.suppress(OSError):
69
+ record.unlink()
70
+ return None
71
+ text = read_text_retrying(record)
72
+ if text is None: # pragma: no cover - removed between the two reads
73
+ return None
74
+ try:
75
+ held = json.loads(text)
76
+ except json.JSONDecodeError:
77
+ with contextlib.suppress(OSError):
78
+ record.unlink()
79
+ artefact.unlink()
80
+ return None
81
+ _touch(artefact)
82
+ return {
83
+ "key": key,
84
+ "artefact": artefact,
85
+ "record": held,
86
+ "bytes": artefact.stat().st_size,
87
+ }
88
+
89
+
90
+ def put(key: str, artefact: str | Path, record: dict, *, work: str | Path) -> dict:
91
+ """Keep this artefact under its key, with the record that says what produced it."""
92
+ source = Path(artefact)
93
+ if not source.is_file():
94
+ raise PolyweaveError(
95
+ "prov.missing-artefact",
96
+ f"nothing is at {source} to cache",
97
+ "write the artefact before caching it",
98
+ )
99
+ held, beside = slot(key, work, source.suffix or ".png")
100
+ held.parent.mkdir(parents=True, exist_ok=True)
101
+ shutil.copy2(source, held)
102
+ write_atomic(beside, json.dumps(record, indent=2, sort_keys=True) + "\n")
103
+ return {"key": key, "artefact": held, "bytes": held.stat().st_size}
104
+
105
+
106
+ def take(hit: dict, out: str | Path) -> Path:
107
+ """Copy a hit out to where the caller wanted it written."""
108
+ destination = Path(out)
109
+ destination.parent.mkdir(parents=True, exist_ok=True)
110
+ shutil.copy2(hit["artefact"], destination)
111
+ return destination
112
+
113
+
114
+ def entries(work: str | Path) -> list[dict]:
115
+ """Every entry, newest use first."""
116
+ found = []
117
+ root = where(work)
118
+ if not root.is_dir():
119
+ return found
120
+ for record in root.rglob("*.json"):
121
+ key = record.stem
122
+ artefact = next(
123
+ (p for p in record.parent.glob(f"{key}.*") if p.suffix != ".json"), None
124
+ )
125
+ if artefact is None:
126
+ with contextlib.suppress(OSError):
127
+ record.unlink()
128
+ continue
129
+ stat = artefact.stat()
130
+ found.append(
131
+ {
132
+ "key": key,
133
+ "artefact": artefact,
134
+ "record": record,
135
+ "bytes": stat.st_size + record.stat().st_size,
136
+ "used": stat.st_mtime,
137
+ }
138
+ )
139
+ return sorted(found, key=lambda e: e["used"], reverse=True)
140
+
141
+
142
+ def stats(work: str | Path) -> dict:
143
+ held = entries(work)
144
+ return {
145
+ "entries": len(held),
146
+ "bytes": sum(e["bytes"] for e in held),
147
+ "where": str(where(work)),
148
+ }
149
+
150
+
151
+ def evict(*, work: str | Path, max_bytes: int = MAX_BYTES) -> dict:
152
+ """Drop the least recently used until the store is under its ceiling."""
153
+ held = entries(work)
154
+ total = sum(e["bytes"] for e in held)
155
+ dropped = []
156
+ for entry in reversed(held): # oldest use first
157
+ if total <= max_bytes:
158
+ break
159
+ for path in (entry["artefact"], entry["record"]):
160
+ with contextlib.suppress(OSError):
161
+ path.unlink()
162
+ total -= entry["bytes"]
163
+ dropped.append(entry["key"])
164
+ return {"dropped": dropped, "bytes": total, "entries": len(held) - len(dropped)}
165
+
166
+
167
+ def forget(key: str, *, work: str | Path, suffix: str = ".png") -> bool:
168
+ artefact, record = slot(key, work, suffix)
169
+ gone = False
170
+ for path in (artefact, record):
171
+ if path.is_file():
172
+ with contextlib.suppress(OSError):
173
+ path.unlink()
174
+ gone = True
175
+ return gone
176
+
177
+
178
+ def _touch(path: Path) -> None:
179
+ """Mark an entry as used now, which is what least-recently-used is measured on."""
180
+ with contextlib.suppress(OSError):
181
+ now = time.time()
182
+ os.utime(path, (now, now))