@wildshard/shard-format 0.0.1 → 0.4.5

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 (746) hide show
  1. package/corpus/brasscap-mesa/blobs/bin/02da0052111419cdff3a29f1c6d0ff0d223e0b53a956c16c65ed63d87928b3b9.bin +0 -0
  2. package/corpus/brasscap-mesa/blobs/bin/068a121cd780a2a9164416f6e4fde44834f2d2f3a5ed65c174e480b7a2d3f627.bin +0 -0
  3. package/corpus/brasscap-mesa/blobs/bin/07d5a061cd338618e528747d61eb2b17709510550ef0ba40a58b67761b200f3f.bin +0 -0
  4. package/corpus/brasscap-mesa/blobs/bin/086e3706070555baca863f6ecf9dbca09c084afa501d92d4246d896b09546f36.bin +0 -0
  5. package/corpus/brasscap-mesa/blobs/bin/08b1b9ab7c732d7dbe8f961f1fc40e84042d1fe42544f55c9ee89f04dffe3d5e.bin +0 -0
  6. package/corpus/brasscap-mesa/blobs/bin/18bdbdc704cb8aac93435d208dfe0e9a44374efb73afa3bc58c631650e0a2995.bin +0 -0
  7. package/corpus/brasscap-mesa/blobs/bin/1a210fcddcb9749ecb1c244837e8e37ea69b038faae191dee6bbbde228d31a18.bin +0 -0
  8. package/corpus/brasscap-mesa/blobs/bin/264ab9ede386504a5ff9814b0a620b879cb29f3f45a80bcfc0c80b8ee236e364.bin +0 -0
  9. package/corpus/brasscap-mesa/blobs/bin/2b6fbea4c846a23cf4802ebdb1804e128896c8dd87e5d23509db6729e5b1be4e.bin +0 -0
  10. package/corpus/brasscap-mesa/blobs/bin/2d755cc635dee90b0f3958272855a821e2dd605a189a5ffcd480a325155fe84f.bin +0 -0
  11. package/corpus/brasscap-mesa/blobs/bin/2d76c6829fe77fb55cc2541e4aca5ce5d18b68508dcdf3fa957fe4a83b9c887a.bin +0 -0
  12. package/corpus/brasscap-mesa/blobs/bin/32c15d55a4548501740593807c5007217c72dbc10a21f4613ef5e0cee0b90d1d.bin +0 -0
  13. package/corpus/brasscap-mesa/blobs/bin/3539b362cf3a61a79e92e113ebf8f255d0b25ec2d2edd816498879de831fa912.bin +0 -0
  14. package/corpus/brasscap-mesa/blobs/bin/3af38a2377bc89f6c6c82ee1e83df674efa2793db932b50a23bbce7ec9cd7941.bin +0 -0
  15. package/corpus/brasscap-mesa/blobs/bin/3c176a7a0d0850fdcee790ed2641216fc3d1cba025928de3d7784262bb9b6f4a.bin +0 -0
  16. package/corpus/brasscap-mesa/blobs/bin/3fb37e488aa81a64c997b3dd09794e988994c6ee3476c6d653ced1670888dd8e.bin +0 -0
  17. package/corpus/brasscap-mesa/blobs/bin/424dcc7b320317bf3f2c62c8f19bc80564035127eb38ab811e460934d57ea38c.bin +0 -0
  18. package/corpus/brasscap-mesa/blobs/bin/45cea35fab6bb06051a3286fca2307944850c7f9ed7aa89b7c24fafef28efda6.bin +0 -0
  19. package/corpus/brasscap-mesa/blobs/bin/499cc7863851f97d79dbfc64e76f9e6978894199184a0d80ebdca13066a8fa78.bin +0 -0
  20. package/corpus/brasscap-mesa/blobs/bin/4b7217644763b00c6ee6ae3f176c726914966fb791654a385c0638bb998b6dd2.bin +0 -0
  21. package/corpus/brasscap-mesa/blobs/bin/4cf11c7177bb082f335e5bc7a037ef00d09355c5ad8263e284a96a92630ff9ae.bin +0 -0
  22. package/corpus/brasscap-mesa/blobs/bin/536b37cab5a1edd6a68a71d122aab6898e44c68a5470a4ca8a9a72c57c02e034.bin +0 -0
  23. package/corpus/brasscap-mesa/blobs/bin/55d3628b27e0fcea383df86c434a69761439f51a013359f0829675b07ee2b616.bin +0 -0
  24. package/corpus/brasscap-mesa/blobs/bin/5652ba90fbd8146edaf42660329cc81798752f2f60b8d03956714460d5ba75ef.bin +0 -0
  25. package/corpus/brasscap-mesa/blobs/bin/57459ab5e2ac6cec65ef5e59789dd82b9666d8573df41c4a398df603f1fa456f.bin +0 -0
  26. package/corpus/brasscap-mesa/blobs/bin/5915b6aed21bba49b841b45574f44f60d26b44810bd68ac70b22f3f3b0dab072.bin +0 -0
  27. package/corpus/brasscap-mesa/blobs/bin/5c4a5c7a8e99253561105c5fa3faf14326cf0c23adc32bfe7f8aea4dbf4b05f9.bin +0 -0
  28. package/corpus/brasscap-mesa/blobs/bin/61822a412cfd461f4f7ae50bc13f242a0fca6c5c58fca72247b596ab037a1c85.bin +0 -0
  29. package/corpus/brasscap-mesa/blobs/bin/673b7712908966718341508469b39cd49e6461f690ca3c23d4621ea7eba0cc30.bin +0 -0
  30. package/corpus/brasscap-mesa/blobs/bin/69394a49520f84f6dccc1655f1c89eedc913ac53a7e48ac5dc1bff4141639bb4.bin +0 -0
  31. package/corpus/brasscap-mesa/blobs/bin/6e58a53a6c2acd50f9f80fd270ca034c54421df8a587e181101b4b75b952ac5d.bin +0 -0
  32. package/corpus/brasscap-mesa/blobs/bin/75dc9f23ee71e11a3a0c67eb77275d741a281c3398808fb42efd52b9973d5d04.bin +0 -0
  33. package/corpus/brasscap-mesa/blobs/bin/76c6a403293a68ed3d6ad14e9dd27b555c3a1ef4a3cae12a2bd2ab3e67c5ad02.bin +0 -0
  34. package/corpus/brasscap-mesa/blobs/bin/82b73ce3a18e47092840fc029177861887aa2867b007248ac79ffa20895a4491.bin +0 -0
  35. package/corpus/brasscap-mesa/blobs/bin/8430d9bbfb4e2b678c54595ad95555c3c73d0e1b144a4d6e29664ccb4371baf0.bin +0 -0
  36. package/corpus/brasscap-mesa/blobs/bin/848d4492508689f5c4a224079dca8809e872e33b8f2635c9f16da5dc21beed16.bin +0 -0
  37. package/corpus/brasscap-mesa/blobs/bin/84941ac387a0d245ea20bd663ff4ee78c5315bedfa058ada0961765aff61acaf.bin +0 -0
  38. package/corpus/brasscap-mesa/blobs/bin/859b7bbcf048a4525db0548b8f5afef83bfc4870914767153f44c05e83436ec5.bin +0 -0
  39. package/corpus/brasscap-mesa/blobs/bin/87b68b45680a57c796eed9183211b03335a6ad6737372b3ef476c2cf42efa631.bin +0 -0
  40. package/corpus/brasscap-mesa/blobs/bin/8cef94308af8d09670e4c99a3b6c3d9280b7a27d386653a3bd7d482b2cdf2b65.bin +0 -0
  41. package/corpus/brasscap-mesa/blobs/bin/8e564bce3f352c2186ae09ed7fbca9739c10abc46fd5f6893c68cb47178bd2b4.bin +0 -0
  42. package/corpus/brasscap-mesa/blobs/bin/8f89e79d0fb9b04d48c7b5719e1d024161c6a2119835b18dcb193ff51123a9be.bin +0 -0
  43. package/corpus/brasscap-mesa/blobs/bin/8fe511ad48656a0b10801100b9100edab1be605a8a182dc5c834d298bf0d9166.bin +0 -0
  44. package/corpus/brasscap-mesa/blobs/bin/900bda6562d06fafda54c495e325d57dbb7931813178ee207449c5519d89d537.bin +0 -0
  45. package/corpus/brasscap-mesa/blobs/bin/997b1b7d9210bfa77dc71f16a57c6bd66bc7c648686dc2a2666044c95042978a.bin +0 -0
  46. package/corpus/brasscap-mesa/blobs/bin/a111bb4c6cec536bcf57dddc744b871ac9f3d094ce459c16243adca19020db77.bin +0 -0
  47. package/corpus/brasscap-mesa/blobs/bin/a2208bf899e6c84942eef9fbab569d597f574551afae5864f1953c6a517af068.bin +0 -0
  48. package/corpus/brasscap-mesa/blobs/bin/a302ddb2598a72ece53780094b64ad861dc68e6913d8a1ea08f5d141736e2986.bin +0 -0
  49. package/corpus/brasscap-mesa/blobs/bin/afcbc671326d0dac14e460662c1f793335877ba53cc965f67c0306833b087e7c.bin +0 -0
  50. package/corpus/brasscap-mesa/blobs/bin/b657159e6a28c801a211024f96a7ef60e388ce928a7b41ae3d7555a6f8fd2e3e.bin +0 -0
  51. package/corpus/brasscap-mesa/blobs/bin/be6bbc6cd15ba525790075252ba0ed0b28dae5cfbfa118c00dfb9ea1ab95e668.bin +0 -0
  52. package/corpus/brasscap-mesa/blobs/bin/c1360e3cbe6b3dc8894bc66c359853854c2e5adeac9c7cd5ba63f5db448be601.bin +0 -0
  53. package/corpus/brasscap-mesa/blobs/bin/c7983018dbf8e384ddf73191f526075bd0b29907061ab17642ecdc18ea7b9897.bin +0 -0
  54. package/corpus/brasscap-mesa/blobs/bin/cea66f27ca60ea173ee0a2bcd91964dc2638eb5657250fe3aa5bd3e41faf8730.bin +0 -0
  55. package/corpus/brasscap-mesa/blobs/bin/d052be571a0f3ab69926951f3a4c9d63f05da2ca6d91e5963dd63e04ecb515de.bin +0 -0
  56. package/corpus/brasscap-mesa/blobs/bin/d162a993a60dd682c8c21dd111429d84d8d30413a000cf481cf98d06ca83e706.bin +0 -0
  57. package/corpus/brasscap-mesa/blobs/bin/d238c3d3d054911714ebe30dafc99e6ad13925b7a600ba9f8d532d0f515f3f5a.bin +0 -0
  58. package/corpus/brasscap-mesa/blobs/bin/d9a98cfe2865a9bb0e94f35c735a570b0625b58f890a6b1f6e14fab2401f0af2.bin +0 -0
  59. package/corpus/brasscap-mesa/blobs/bin/dc27ae954b7b8a13a9459d6ca6ef2997f662715ff5f5453ea0da169f141748b8.bin +0 -0
  60. package/corpus/brasscap-mesa/blobs/bin/e3ff1fd41cf76668b8e1927c0c2e4056b63a293ebbd300a8f1b1d27d87786271.bin +0 -0
  61. package/corpus/brasscap-mesa/blobs/bin/e45b7344d373b3ef4a94f560cf4e17b1eb3b8cd89d1e552fc9be11d6b7b546f0.bin +0 -0
  62. package/corpus/brasscap-mesa/blobs/bin/eb14eb898224d5d81d1012bec54f2b79f9377dc60fa1d01e49b4c3e148292d77.bin +0 -0
  63. package/corpus/brasscap-mesa/blobs/bin/ed0e0101a3d91a3a615f9e78ef36f7deb8bb0eab0f133241d621925d0b596599.bin +0 -0
  64. package/corpus/brasscap-mesa/blobs/bin/f722e3a3b1f0a3d7b9f7d7c66c46d8c87245de5f8eece055daf95c7086f8c267.bin +0 -0
  65. package/corpus/brasscap-mesa/blobs/bin/f76013aedfd810f136fa689a151024bcb942687ef42ae7edf1fd3513ac4e22c7.bin +0 -0
  66. package/corpus/brasscap-mesa/blobs/glb/0547e63693282614673b13bade4c08eb772020757b131b7c80f2077873aab70e.glb +0 -0
  67. package/corpus/brasscap-mesa/blobs/glb/0cf89e9b1824440d213c8e9e33fb357734b7241b4c7eedaba3df7f8306e05425.glb +0 -0
  68. package/corpus/brasscap-mesa/blobs/glb/0e01060e3a507ffff6461c50b5c565c71380a6a67d9760cdd7a09afd3e30b584.glb +0 -0
  69. package/corpus/brasscap-mesa/blobs/glb/0ef326c5cf5292cd15b48b851460ee8156f51e0a5b62457c8f1f3c53c41665a3.glb +0 -0
  70. package/corpus/brasscap-mesa/blobs/glb/1112ff4a3f69db3b62c6d2d6ae021e7c43ce0ca1feb1d3130376881decb3c6b0.glb +0 -0
  71. package/corpus/brasscap-mesa/blobs/glb/11357cb8a0670fdc9a03780dd79a31e0aa7a0537786cbf66491bae1722d6feb3.glb +0 -0
  72. package/corpus/brasscap-mesa/blobs/glb/11dbecc73bd343c375bd4b79db8dbda2272e76a6b8426ac29e90f2b1272ccfc2.glb +0 -0
  73. package/corpus/brasscap-mesa/blobs/glb/133f639cfa837bc5da7915121c71fd32281660c2aaa0248bd59bde47e7faf8bc.glb +0 -0
  74. package/corpus/brasscap-mesa/blobs/glb/16812a090136b6678633aa4db03e4187920ae0aca776ad6da373c600cd341972.glb +0 -0
  75. package/corpus/brasscap-mesa/blobs/glb/17e63980d7934cfe1d2823d78652af338fe9f0c2170106cd4506a2c4e7f4716f.glb +0 -0
  76. package/corpus/brasscap-mesa/blobs/glb/199224cafc86904bdefec8f01d131d7ca3e076a22b689bfc6a26dd20373cf286.glb +0 -0
  77. package/corpus/brasscap-mesa/blobs/glb/1a5c8cf223a2f64715ea5eaf14d97a0131f9ebdef4388dc4823dcfa57817724c.glb +0 -0
  78. package/corpus/brasscap-mesa/blobs/glb/1b0ec09ad6718149d7ca514136cee09b04c96425f03af0559fd097112aa0daa5.glb +0 -0
  79. package/corpus/brasscap-mesa/blobs/glb/1e5024bbb1284b2ed39bbca2d0ade3acb5be2a2c6ba643291f269b76098c7f79.glb +0 -0
  80. package/corpus/brasscap-mesa/blobs/glb/1e7635972e13468ffcbb1608f1d12559b066b4533912be2c35e3db07fd4a679d.glb +0 -0
  81. package/corpus/brasscap-mesa/blobs/glb/1f03db3a38a21b8d4d02f8ede30e1303cd8d4c426815326a88f45a268b17a492.glb +0 -0
  82. package/corpus/brasscap-mesa/blobs/glb/2624abb7bf45618be40f8c3221445179fca44f7321baff415fdf7ddd5e0afc6f.glb +0 -0
  83. package/corpus/brasscap-mesa/blobs/glb/27fc3bad6db6e2b5ade5d242867d882362482ddf19c647edef821afc27d52dc2.glb +0 -0
  84. package/corpus/brasscap-mesa/blobs/glb/29959bdb5b04a9180e88ec1ed976bae55424d3dc50985f13c0f85bae11ae79ee.glb +0 -0
  85. package/corpus/brasscap-mesa/blobs/glb/308cbce2b1b6360f9a2dc275d0bc28be1966fc3ff5e0a58844405ba867f3f668.glb +0 -0
  86. package/corpus/brasscap-mesa/blobs/glb/3674d7be969755aaffa368e57b8d1bb743bc98e766a57948859d54fdc7d2c066.glb +0 -0
  87. package/corpus/brasscap-mesa/blobs/glb/3736ca95c9c40b30e21302ae6c89148d8ac09264dfbb7e5764b08c265a73ba3c.glb +0 -0
  88. package/corpus/brasscap-mesa/blobs/glb/3bc90e1dc9411d249697e4ec352baa4886f91cacfe4940ac43aed879f60966c9.glb +0 -0
  89. package/corpus/brasscap-mesa/blobs/glb/3f519c7c7482307cae908b27602dcb7716e2da4b651eff39c4c37103998d18fa.glb +0 -0
  90. package/corpus/brasscap-mesa/blobs/glb/4767636d5554b60c94b447b87b77fc1456a2b9af42bfe08585389d27f306dd5e.glb +0 -0
  91. package/corpus/brasscap-mesa/blobs/glb/4a3242773b3a73a73ee746a0cdf30c8d6d904bb4406dfdf9822dcd535d6ae308.glb +0 -0
  92. package/corpus/brasscap-mesa/blobs/glb/4c7bf3788cba151442d85c3f76553c2e356edf8566ae8243d0a535c9bcde51d0.glb +0 -0
  93. package/corpus/brasscap-mesa/blobs/glb/4f3b9f4c818ed6d375947e9603dd058c539e14ff05aa193fb5054d899dbb82a2.glb +0 -0
  94. package/corpus/brasscap-mesa/blobs/glb/4fdf7ee67d12de1cd30c3c2bbd9409032dcab5feb3a7d3977b92c50b1d161afe.glb +0 -0
  95. package/corpus/brasscap-mesa/blobs/glb/5821f33aa00e9acd2f4c0a29129978ee7006a879d163ce1463ae476031bfabcf.glb +0 -0
  96. package/corpus/brasscap-mesa/blobs/glb/5a986c3e44fc686a2efe7648c3945bb7b51cf303918381383f21f898dd312cad.glb +0 -0
  97. package/corpus/brasscap-mesa/blobs/glb/5c32fc1de6d198ed606d3e8c3264319acdd950dab18e8b723fc6332bf2f56aea.glb +0 -0
  98. package/corpus/brasscap-mesa/blobs/glb/602ce4e8b00a0afbc1a894b65641e48d362ec834a559b9d97a4801473bb01da7.glb +0 -0
  99. package/corpus/brasscap-mesa/blobs/glb/6180f9f96167522d8cab4de1d52598cecee8d7ee042f48e41669c98cf61c19c3.glb +0 -0
  100. package/corpus/brasscap-mesa/blobs/glb/6205973ba63f7a554662ba05010d25131bed2d9656de422e2067ca54709d5b3c.glb +0 -0
  101. package/corpus/brasscap-mesa/blobs/glb/693e556f2165232e8a38b1b2d68676f235ece5705c564992cfa7731426f4d376.glb +0 -0
  102. package/corpus/brasscap-mesa/blobs/glb/6a46175438bec5527c281b577bd220b6badedf3c74266b997d39e596f83b8853.glb +0 -0
  103. package/corpus/brasscap-mesa/blobs/glb/6ca1bcad7ea053a259b7f9fc5a7ec388a4cd29d44391d93386ea8b1143d94c21.glb +0 -0
  104. package/corpus/brasscap-mesa/blobs/glb/6f9bc99656b611890d6acc76ee416f6222ca2d5f62167840b4216a21e020a4c8.glb +0 -0
  105. package/corpus/brasscap-mesa/blobs/glb/6fb1e7857996662233ab5314fc13f8aa30703f91c04542e352ec17f9dc4fc054.glb +0 -0
  106. package/corpus/brasscap-mesa/blobs/glb/7028ec39712143a7e9d09d2e1477282b654d0470102ca9d272ac82b23604cb21.glb +0 -0
  107. package/corpus/brasscap-mesa/blobs/glb/73af65ac86efa61099178f3e7075dcd26d389ee9b9aa3546c18dede10c3dfda1.glb +0 -0
  108. package/corpus/brasscap-mesa/blobs/glb/73b992b71bd3165ff7701ab1430c075cb5ba9b74e6363d24640377b1011ddc93.glb +0 -0
  109. package/corpus/brasscap-mesa/blobs/glb/7471261d4df59979ba41a622d93779b66ebecd50353ad433862e603ee65f8748.glb +0 -0
  110. package/corpus/brasscap-mesa/blobs/glb/76e9a3fcca962c2f900cf79dc1a0851840bd405dc11231f629f784adbcb69d23.glb +0 -0
  111. package/corpus/brasscap-mesa/blobs/glb/79d2d29e8cd8b642386b5f31429b39bc4d6f13e53107dda00ebc463abf80c79d.glb +0 -0
  112. package/corpus/brasscap-mesa/blobs/glb/7de66fcfffe4ff108510cbe6bebec44e28ab4b78e98e9c1a38466db5b81881f7.glb +0 -0
  113. package/corpus/brasscap-mesa/blobs/glb/811fa798cb81ea99488db98e3d3ddea815aac8f6e7493ad04d0176f603978678.glb +0 -0
  114. package/corpus/brasscap-mesa/blobs/glb/89b277f1636be220ff5658ff1f1c62efe14079d6e1f42efb373fbf0246801533.glb +0 -0
  115. package/corpus/brasscap-mesa/blobs/glb/905c5fe666d9f6174e987382e47d3f325c5696cf8792d7a4a1dd120a438b8270.glb +0 -0
  116. package/corpus/brasscap-mesa/blobs/glb/90efe3e05370ee853c0130b98ee82f00b86f7c7104e96b094715187fa49ac16f.glb +0 -0
  117. package/corpus/brasscap-mesa/blobs/glb/968a7c5cb13014bce00a29d43b344bd6943ff00ae2908abbc6b40a994f1172a1.glb +0 -0
  118. package/corpus/brasscap-mesa/blobs/glb/9a955b4e69dfa5b38f071099053c1a3684cf85ec2d346420de2853c61768f8cc.glb +0 -0
  119. package/corpus/brasscap-mesa/blobs/glb/9da2781216a2e482dd8a6ada5ebb43bcf48e0169430e787ac277559cb2ade19a.glb +0 -0
  120. package/corpus/brasscap-mesa/blobs/glb/9db02aab14a3b52463deadefbf4ba771809941e7fcb137c905955bdc80ec23bd.glb +0 -0
  121. package/corpus/brasscap-mesa/blobs/glb/a3fe1788cf5d7f260249c722f0e0695a4d55744d1b14be44122377147a296256.glb +0 -0
  122. package/corpus/brasscap-mesa/blobs/glb/a5c75af8f090d3c95fa46d2be49be5031138d7cd1bae234ae028edf717bf299e.glb +0 -0
  123. package/corpus/brasscap-mesa/blobs/glb/a771abd40bd337a464c1bd19f841b62e290124faa89b19ec50e85ab36bc740a5.glb +0 -0
  124. package/corpus/brasscap-mesa/blobs/glb/a94a2ad2ed463a47cdda117df25b06b3cf6be37ddac08594bc5f5d76c7237730.glb +0 -0
  125. package/corpus/brasscap-mesa/blobs/glb/ad434e4a6490e495994b25f7574a5847a9f7d9c2ca5a2b229a9dfdd2e5e2bb72.glb +0 -0
  126. package/corpus/brasscap-mesa/blobs/glb/aeae7b05404b852008a7897689e58aacef44a2c3bc0e87d2519ecdb4cb1e3ff5.glb +0 -0
  127. package/corpus/brasscap-mesa/blobs/glb/b0c0c8a4985f92be3b358a8e703c67957427501882aeee05b4ccd3c7880930d4.glb +0 -0
  128. package/corpus/brasscap-mesa/blobs/glb/b25174c3cd13eea6e1d9c3104ee5197dc6330129b2f0f7676e8a429900999d9b.glb +0 -0
  129. package/corpus/brasscap-mesa/blobs/glb/b3eecdec571df96338edf690443394ff859383b4c94f4cf33d42c240006f8543.glb +0 -0
  130. package/corpus/brasscap-mesa/blobs/glb/b7aa0c61ff9e7411535c7b7b8e587849a92bad00d431171ab16ad47d55db0a53.glb +0 -0
  131. package/corpus/brasscap-mesa/blobs/glb/b9deef944c22331bc05220d1d6e46412e3cb1246ef041a4405d0cbbd90c2d624.glb +0 -0
  132. package/corpus/brasscap-mesa/blobs/glb/ba9376e4ac39b809133ab717edb4c88b5219118766db492d7c97534ce119c2ec.glb +0 -0
  133. package/corpus/brasscap-mesa/blobs/glb/baf338e9c272158b905fb58a712e29410c657a45be2764f1c6c43ca87fd1db48.glb +0 -0
  134. package/corpus/brasscap-mesa/blobs/glb/bd442ac9fbe52b9f2e4ba586670017c3f2d9fedf1cbdec77ef24e9f8b3a183c8.glb +0 -0
  135. package/corpus/brasscap-mesa/blobs/glb/c142adcf253be43b66f23ede8cea1e8fcfa256ebf53054a1068ace04745718a6.glb +0 -0
  136. package/corpus/brasscap-mesa/blobs/glb/c6d7cbdc4b2ee9d416edf4d736a4f374f08aea98ca395ad371a50a1853744cfc.glb +0 -0
  137. package/corpus/brasscap-mesa/blobs/glb/cfb165a7675d15cee2c490b31095a58f73bace50ccc1e0fdf2c8dc4400f1df27.glb +0 -0
  138. package/corpus/brasscap-mesa/blobs/glb/d40f2ee59612473e9f687f17a0e203fdb4ba54c7185b05a8d81a433b04f24134.glb +0 -0
  139. package/corpus/brasscap-mesa/blobs/glb/d50ce95411156a6b6cf386aefa5ee58db659811813f74be74f323e7c5795056f.glb +0 -0
  140. package/corpus/brasscap-mesa/blobs/glb/d6af418bbde39b4fc7d22a61401d416be7a3fc1214ea2d3f42b4549c392d22ca.glb +0 -0
  141. package/corpus/brasscap-mesa/blobs/glb/de7222ceeb1f72693dfb7fd1f343798659e03772d77f2b498fd8ebece2d5550a.glb +0 -0
  142. package/corpus/brasscap-mesa/blobs/glb/e26975b198127ac3b6b4f5c4bc08ad47d6691398feee777743285391cd36d502.glb +0 -0
  143. package/corpus/brasscap-mesa/blobs/glb/ea428490cd5f2672676a2776a598b819b08246871e76de94b7196f9643144986.glb +0 -0
  144. package/corpus/brasscap-mesa/blobs/glb/eb96567a266d24be188cb5b08021112f2fad311cbead939d53c5565da11f6265.glb +0 -0
  145. package/corpus/brasscap-mesa/blobs/glb/ecf66230bf7b68050c0827c2e4caf3de90e46859d291b794faa0dd3816d9dac6.glb +0 -0
  146. package/corpus/brasscap-mesa/blobs/glb/ed8f067763a4a8adb83d80c8324b2a9668f1061f5f5352f21295e6cc5132386f.glb +0 -0
  147. package/corpus/brasscap-mesa/blobs/glb/ee507a38772865467736d370791fe73c6aa4d83fe3e7ff4baa156b9cb2894c1c.glb +0 -0
  148. package/corpus/brasscap-mesa/blobs/glb/eedc5b62dc6f27d4a089e9f5b282f626129236d3f1689b001e04f8748bf8859c.glb +0 -0
  149. package/corpus/brasscap-mesa/blobs/glb/f4119b9c6c23435619682b5d247743459e76584b9b0d6c5cb689d8e156906695.glb +0 -0
  150. package/corpus/brasscap-mesa/blobs/glb/f576047267a0bf9bd4bfc47072ea3d11066345b839953546292da678d1cb4722.glb +0 -0
  151. package/corpus/brasscap-mesa/blobs/glb/f8cdfb11997d4ccabea88bcdd3924cc8b621b33618b18fe5fbfd286edfc1d87e.glb +0 -0
  152. package/corpus/brasscap-mesa/blobs/glb/fce95ecc5db24c903bd46f338e366e2715411465a5efac180e2f0f46397e59de.glb +0 -0
  153. package/corpus/brasscap-mesa/blobs/image/0579557f9344df6f2c4b1225e6252e53ab86d417a4c9b504b5c714a08a388e47.jpg +0 -0
  154. package/corpus/brasscap-mesa/blobs/image/9e18816a2ec16fbbb1f00f4a39c73ac2cbf6a8cdc17b4c96b1eba4cc9a754dc7.jpg +0 -0
  155. package/corpus/brasscap-mesa/blobs/image/eb453c71cfb1f9441eb00b32281f98e226e49d9dcf75c231455575fcdc652222.jpg +0 -0
  156. package/corpus/brasscap-mesa/blobs/json/e0072ed82115c519b891f53a194ea3b28fff7d3826d8ddf23460d6f21b7728d9.json +1 -0
  157. package/corpus/brasscap-mesa/blobs/json/ffb0e08eaaa7188db1f55931c9b6330937316091cc7463ed2eff6767bbfa33de.json +1 -0
  158. package/corpus/brasscap-mesa/blobs/wasm/1d6ace79610c4d510b60ad0c52915e42b57797d91f1ef292f60d8a3daec03dd6.wasm +0 -0
  159. package/corpus/brasscap-mesa/blobs/wasm/24a4d4c1292677b1c984b5c0d3497ae2929528bf511df475f80cc20945bb08ec.wasm +0 -0
  160. package/corpus/brasscap-mesa/blobs/wasm/b86d8afcc269fb063ebf64768fc3787635b65a7409a571115b07be2e4da39733.wasm +0 -0
  161. package/corpus/brasscap-mesa/cook.json +1 -0
  162. package/corpus/brasscap-mesa/mounts/shardfiles/brasscap-mesa/discovery.json +1 -0
  163. package/corpus/brasscap-mesa/sections/actors/creatures.json +1 -0
  164. package/corpus/brasscap-mesa/sections/actors/crowds.json +1 -0
  165. package/corpus/brasscap-mesa/sections/actors/species.json +1 -0
  166. package/corpus/brasscap-mesa/sections/audio/audio.json +1 -0
  167. package/corpus/brasscap-mesa/sections/combat/encounters.json +1 -0
  168. package/corpus/brasscap-mesa/sections/combat/items.json +1 -0
  169. package/corpus/brasscap-mesa/sections/combat/strikes.json +1 -0
  170. package/corpus/brasscap-mesa/sections/economy/ledger.json +1 -0
  171. package/corpus/brasscap-mesa/sections/economy/loot.json +1 -0
  172. package/corpus/brasscap-mesa/sections/look/look.json +1 -0
  173. package/corpus/brasscap-mesa/sections/look/materials.json +1 -0
  174. package/corpus/brasscap-mesa/sections/quests/quests.json +1 -0
  175. package/corpus/brasscap-mesa/sections/sim/client-scripts.json +1 -0
  176. package/corpus/brasscap-mesa/sections/sim/hooks.json +1 -0
  177. package/corpus/brasscap-mesa/sections/sim/plumbing.json +1 -0
  178. package/corpus/brasscap-mesa/sections/sim/scripts.json +1 -0
  179. package/corpus/brasscap-mesa/sections/sim/sim.json +1 -0
  180. package/corpus/brasscap-mesa/sections/state/migrations.json +1 -0
  181. package/corpus/brasscap-mesa/sections/state/state.json +1 -0
  182. package/corpus/brasscap-mesa/sections/ui/card.json +1 -0
  183. package/corpus/brasscap-mesa/sections/ui/compendium.json +1 -0
  184. package/corpus/brasscap-mesa/sections/ui/level.json +1 -0
  185. package/corpus/brasscap-mesa/sections/ui/ui.json +1 -0
  186. package/corpus/brasscap-mesa/sections/world/collision.json +1 -0
  187. package/corpus/brasscap-mesa/sections/world/days.json +1 -0
  188. package/corpus/brasscap-mesa/sections/world/edge.json +1 -0
  189. package/corpus/brasscap-mesa/sections/world/movers.json +1 -0
  190. package/corpus/brasscap-mesa/sections/world/navigation.json +1 -0
  191. package/corpus/brasscap-mesa/sections/world/props.json +1 -0
  192. package/corpus/brasscap-mesa/sections/world/spawn.json +1 -0
  193. package/corpus/brasscap-mesa/sections/world/terrain.json +1 -0
  194. package/corpus/brasscap-mesa/sections/world/tiles.json +1 -0
  195. package/corpus/brasscap-mesa/sections/world/traversal.json +1 -0
  196. package/corpus/brasscap-mesa/sections/world/water.json +1 -0
  197. package/corpus/brasscap-mesa/sections/world/weather.json +1 -0
  198. package/corpus/brasscap-mesa/shard.json +1 -0
  199. package/corpus/brasscap-mesa/validation.json +1 -0
  200. package/corpus/handwritten/blobs/bin/027822f6ae9c374ce1ced851f2227cb9acb03077e5cc6b7fecb245c31f021abd.bin +0 -0
  201. package/corpus/handwritten/blobs/bin/0377ce182bd604bcf4d501f14bf954c434ea64ad856ad9d71c502d1045612703.bin +0 -0
  202. package/corpus/handwritten/blobs/bin/05ad93d239eeeb5d9afa09b00d90c56098d88e8850e5b5e691fcaa7520dec3cd.bin +0 -0
  203. package/corpus/handwritten/blobs/bin/0c8980141e6e394ea473df1eb11c347ba617a1a9a4b39b3fa1871b5d15b97d87.bin +0 -0
  204. package/corpus/handwritten/blobs/bin/14eb11f8d809320e0a68b1edea7837d7a5b4a3da71f1ce4f54068e0afe0b039b.bin +0 -0
  205. package/corpus/handwritten/blobs/bin/16590066c039ac71e5038a9866a53ccb95e21af13db29cb655b379c4fcfef7bb.bin +0 -0
  206. package/corpus/handwritten/blobs/bin/1795b5147ad52482445d2414ee22823b947c43a917b6e96fd9ec017f17000912.bin +0 -0
  207. package/corpus/handwritten/blobs/bin/18f2e24ecc1ed1b1d12ae1c89732a5a1a618ab6e973d4ff0332cf9ecc4e4f4a6.bin +0 -0
  208. package/corpus/handwritten/blobs/bin/1a18ade01095f1a9ebe75650127861ef27dda0bb17c2b91bde057ec88ef2e98a.bin +0 -0
  209. package/corpus/handwritten/blobs/bin/1dba017cddb874bc147efb00c55418846ffa344a696f4df702bbabeea55034d0.bin +0 -0
  210. package/corpus/handwritten/blobs/bin/248c703537e4687ddd2b69a40d1ef3936da718626289d6867ce0a6866f562ba4.bin +0 -0
  211. package/corpus/handwritten/blobs/bin/2612d9fd4727f8c349f2dbfb7b1650bb7a752d0798a4966ac22cf2b6cdd9fcef.bin +0 -0
  212. package/corpus/handwritten/blobs/bin/28c54c766e90e3b046a2377b9fa015b0ce45cf3da4420f2b10553251f86c06aa.bin +0 -0
  213. package/corpus/handwritten/blobs/bin/30866b4807b12579f50218f6525c3db00919fbd43c97921daf47b3244b25dca6.bin +0 -0
  214. package/corpus/handwritten/blobs/bin/3d14fae85d77406a9b8c59f2e973cdae9587d49108ea92fb460679ca860196b8.bin +0 -0
  215. package/corpus/handwritten/blobs/bin/3f2201a53c441abcfb52089fe9bbb01f26fac8744099d3fb6668452885c2fa11.bin +0 -0
  216. package/corpus/handwritten/blobs/bin/42f270a99367fc4cc901518ccaa344ab595e265f113be944510da745c11f69d1.bin +0 -0
  217. package/corpus/handwritten/blobs/bin/43fd4327fedd51a586684ac611bcad4a8b9d62e51e03967de71fb42c9bf0f6e1.bin +0 -0
  218. package/corpus/handwritten/blobs/bin/484adda0898a881b6f095dad447f6a619bf0933f65efe940b72f1ab7f3630c22.bin +0 -0
  219. package/corpus/handwritten/blobs/bin/4a38cd49e8797429ce76265c3d8972195d5b0a02a35fc05fc513eab11240f415.bin +0 -0
  220. package/corpus/handwritten/blobs/bin/4fe636237bbbd4f836b0816bc61702f4c224d4cb91fbd94f244c731e24a1b945.bin +0 -0
  221. package/corpus/handwritten/blobs/bin/51b1cff782dc7ebb382bc429ee965023d4cdb52c7b3e37d6ffff5ef55c1c2813.bin +0 -0
  222. package/corpus/handwritten/blobs/bin/52561f02071ecaa98432fab5e8ece407a8e8f733a01f8eb7c543d1efe02614da.bin +0 -0
  223. package/corpus/handwritten/blobs/bin/556d6333923afea9641c4738741a41d6a46ae28a508288b9a49a749a344c1398.bin +0 -0
  224. package/corpus/handwritten/blobs/bin/5caeb97f32c7f31e1029eebdf31131f879f781bb5e3a225206a646710d83fd75.bin +0 -0
  225. package/corpus/handwritten/blobs/bin/5d1131e42a045083225105b640ff72e02c7f353ee6285545ac264d01bea26b1b.bin +0 -0
  226. package/corpus/handwritten/blobs/bin/5d80b30eee9f8342a92f6756fd0d84fb9d2d2ce994d222627641e584ad45d2a8.bin +0 -0
  227. package/corpus/handwritten/blobs/bin/5e0f9f7f2a85abe11a0a61ede853c9b9942b4494c3eb9943785cf6ae221e40e3.bin +0 -0
  228. package/corpus/handwritten/blobs/bin/5fdc5485343bba8201185c9bae862ad8618498ab5ce63b53514e4e0226fa7bdb.bin +0 -0
  229. package/corpus/handwritten/blobs/bin/6623dcb0b31c9ca0be342f6dca6b9e607ec3c12ff82068fa6030c142c2df77f7.bin +0 -0
  230. package/corpus/handwritten/blobs/bin/6887131a04175edbd1989aa95e8749d1703e7f2d0b8464e85f6bad28d6964125.bin +0 -0
  231. package/corpus/handwritten/blobs/bin/6cf89771d998486cad9049e6f4fc177d742a18ad79fafa4596814ff9d3cf1952.bin +0 -0
  232. package/corpus/handwritten/blobs/bin/74bbb0fc219e8476cd5550014a357ee18abc981ff3fe787ae3e60d4593705ec5.bin +0 -0
  233. package/corpus/handwritten/blobs/bin/76784a7f519ac43ce113a0c9365881839b75f66f96aa009fe8d3c8ab539ef283.bin +0 -0
  234. package/corpus/handwritten/blobs/bin/79a2f693ee2da546bb551f8b641b9c3affd2b8bfb5632ed7f417daba9d900af9.bin +0 -0
  235. package/corpus/handwritten/blobs/bin/7b593b0f9eefb957fb9d58b316d9836971203038d7c8127284bba44ccb3090bb.bin +0 -0
  236. package/corpus/handwritten/blobs/bin/7bb8e518ca5606de78972a6c648b57623f8bc12d7e06b4bbf43c60ac419a9bbd.bin +0 -0
  237. package/corpus/handwritten/blobs/bin/7c6133f3350147257fa501f41269cb77cb11d8ed96d351e873333b079cee524a.bin +0 -0
  238. package/corpus/handwritten/blobs/bin/7f5acf1893828995256f5b2c54948f80ba21e53de72db26ea72ce2479f5b0682.bin +0 -0
  239. package/corpus/handwritten/blobs/bin/836516253cf0f3e6e79537609fdbe6331c8c5c974f9ec4d3fbe4a7db48cf123d.bin +0 -0
  240. package/corpus/handwritten/blobs/bin/89900344f82d5c1474d2a163f8d29903447bac64e9c9775123ef499be70c2380.bin +0 -0
  241. package/corpus/handwritten/blobs/bin/95d76a9273c3edd98b3643c54e2e7989800bdcaf6f815230ef09f601e760330f.bin +0 -0
  242. package/corpus/handwritten/blobs/bin/a7b5a5fe053a38c93eed899bde5051cddd80e0a3f3c82b6fd814869097f0944b.bin +0 -0
  243. package/corpus/handwritten/blobs/bin/b29be84df0bfd1bc97a1464fd5ea068130947bfed3328e167640c81326eb45d7.bin +0 -0
  244. package/corpus/handwritten/blobs/bin/b6518dc352be03332a256f1cd9d1149da262fe6829e87ba43364f19c687ca7c9.bin +0 -0
  245. package/corpus/handwritten/blobs/bin/b7edb8095beeb158adb61ae3caa1653773757afbcd8fb2764c94b975a43fe9e2.bin +0 -0
  246. package/corpus/handwritten/blobs/bin/b86d617ae7fa397df51ff7af87cd89fa113ac19abd3840ea8f3a086d6c82905c.bin +0 -0
  247. package/corpus/handwritten/blobs/bin/bb860b5c67ee7f2fafd67588822152228d6f6c9de1231123eeafa4844732b18b.bin +0 -0
  248. package/corpus/handwritten/blobs/bin/bf8c3971bbb224075d488ffa9cfc20e322c61f9ca0c59c356838415f6778014b.bin +0 -0
  249. package/corpus/handwritten/blobs/bin/c2edd52ee14ebdc9fcc01d38c15d6ab3379df7a20098c260c546551898959cd1.bin +0 -0
  250. package/corpus/handwritten/blobs/bin/c3de13c551c5b45270143dcbb9fc9a31651f6012355823c0709c2fe6cafda940.bin +0 -0
  251. package/corpus/handwritten/blobs/bin/c57a8d9da18b1289afd16de00dd1ec75027048b8dcf7dd218da36bc3276ff035.bin +0 -0
  252. package/corpus/handwritten/blobs/bin/cc2975c9dea4c31b1bf380623a8f44059423004653f9cae4f603d374174323b7.bin +0 -0
  253. package/corpus/handwritten/blobs/bin/d476abba2e1c63ad3c7527617559173484ee837a5be2744d968466d5527c286b.bin +0 -0
  254. package/corpus/handwritten/blobs/bin/db242f89115c878cf0c3b976a1647e9cdeb6a1a51813b1dacaf1188715603294.bin +0 -0
  255. package/corpus/handwritten/blobs/bin/dcc4b9b3bc4ca777d11c494ae5478f17ad7cf2efa18dcba30def872d55355bc3.bin +0 -0
  256. package/corpus/handwritten/blobs/bin/dd99da483f385327d6b8319d6e2e9000b580280069353718aa0fda2230707e8b.bin +0 -0
  257. package/corpus/handwritten/blobs/bin/dfc139dba26f1789e16f72602e654636f2d99bcd41e3f10454da74b3a6a64dda.bin +0 -0
  258. package/corpus/handwritten/blobs/bin/e15ab3cc9f60657321cfe8d9751e086f025734f4e7068271e0baf6066a686f18.bin +0 -0
  259. package/corpus/handwritten/blobs/bin/e16a83a71213db6f804ce1d53981a2308062752c85c440022d9eeb7605fd37c8.bin +0 -0
  260. package/corpus/handwritten/blobs/bin/e7355876487f660ac9f25c9d9dfcd66eaf432e1e1669eb89d12ce8267a8d3e86.bin +0 -0
  261. package/corpus/handwritten/blobs/bin/e81a632e2da0f6a4d801f18aadfe2c6e640401cc1178935a9099ebb8e3af6cc1.bin +0 -0
  262. package/corpus/handwritten/blobs/bin/f0721c60d0b1046579d8c587fac8482a70822f0b39a85f9acc0cfc31f82b7dd2.bin +0 -0
  263. package/corpus/handwritten/blobs/bin/f301cf574de6d84030f839098ca44705dca115f9d3e4ee848e0b35fff3deaf77.bin +0 -0
  264. package/corpus/handwritten/blobs/bin/f7797f295a7570c437bf7020a1ddf208fea2a7aab595333320a6396c1608d360.bin +0 -0
  265. package/corpus/handwritten/blobs/glb/08de0bb2439ac812adef528b4b073bdb954bbeada972a2f3afb1757bd0540396.glb +0 -0
  266. package/corpus/handwritten/blobs/glb/153681171c35d2898569324e21ebe734b8418d4122833618a1e64ea326be1e5e.glb +0 -0
  267. package/corpus/handwritten/blobs/glb/1df5ce0b6cae72ec4cf3c41510681ba70ebb474f9745d536ebd4f03e8fc82de9.glb +0 -0
  268. package/corpus/handwritten/blobs/glb/262031e2fa710bd8d586eafce1019ca1434a2170e407567741aac1d99fc9c5ab.glb +0 -0
  269. package/corpus/handwritten/blobs/glb/27466efb180fb5b5074b40e424bd0b8d78f7ff0f5f3663748e014daeeeb5bedd.glb +0 -0
  270. package/corpus/handwritten/blobs/glb/2d2f6d00a14c89a4efb7f679b371118f564f258797ed8b8b42baf4ae60902ea6.glb +0 -0
  271. package/corpus/handwritten/blobs/glb/31f327d215ed7ef422e2169172f3869769e9816c9da979616844081e74f2eb09.glb +0 -0
  272. package/corpus/handwritten/blobs/glb/3bfe0e9ca18077ffee9c284ef40fed9f2fc354f7495612c785a6f980b5966559.glb +0 -0
  273. package/corpus/handwritten/blobs/glb/3db43042b3eeb1dee7ce9de1cc00322cefc348aa18c37d168b0858e6af6ca7a4.glb +0 -0
  274. package/corpus/handwritten/blobs/glb/46460a50da44fb8e792b48a646ec9ce025bb309d315dbcf67d2e9598591750de.glb +0 -0
  275. package/corpus/handwritten/blobs/glb/4902213556fedaf269fba6f0f195e424b2e49973ab45dcb8b69e34d253d9d8ff.glb +0 -0
  276. package/corpus/handwritten/blobs/glb/4dda463c9cd4bf339e5611871d4ba2fe16fe1487389a88b2888e96bc55e45d93.glb +0 -0
  277. package/corpus/handwritten/blobs/glb/4ed23469bd2b6b73183564cfc80a1ebcd0ffe2666a90a556752af0ca147fd2f7.glb +0 -0
  278. package/corpus/handwritten/blobs/glb/4fe74a1bed6b67129885b90cfcae01b5ca82e23e6d40507e280f02fca7fda54f.glb +0 -0
  279. package/corpus/handwritten/blobs/glb/50521bb3a50cc7199d324a0b25bc167c2e9d69770cb500490428efefc81ce3ea.glb +0 -0
  280. package/corpus/handwritten/blobs/glb/5ecca36d1e503edc092af0ef42f139cdcad99b8c2008318eb6ad337023d57296.glb +0 -0
  281. package/corpus/handwritten/blobs/glb/60fc036925852568cdb1b9fb85218dc43a8bf2ed86d3971a221ad942ece203a7.glb +0 -0
  282. package/corpus/handwritten/blobs/glb/611633cee0e5822b744486e6dff5414ad5b159eaabffe1c0ba0bb68be794bfa1.glb +0 -0
  283. package/corpus/handwritten/blobs/glb/67c7f983a0bcb9f84425378acac121a53f30795dce3181643bc1b763d0ae80b5.glb +0 -0
  284. package/corpus/handwritten/blobs/glb/6ecc0d307030943727484b49b1872643479c55ccc92252fca06e9e3cbe98fa90.glb +0 -0
  285. package/corpus/handwritten/blobs/glb/774b366df4de56cb6f9e3c904f02ec98016ac2ec489dc9e214b09220fca2f8e5.glb +0 -0
  286. package/corpus/handwritten/blobs/glb/785bae514ffc029e611d602259db7d37cbef589409a0814b9d37175d8b6c0a45.glb +0 -0
  287. package/corpus/handwritten/blobs/glb/79e79524efb2830e90af3c945c5b36ef07c1a38f2da2958112203a99eac52a16.glb +0 -0
  288. package/corpus/handwritten/blobs/glb/7bebdcdaf0be30d9f8d21bde72af68c32d825d12dc668f48109223ed7ff71c9f.glb +0 -0
  289. package/corpus/handwritten/blobs/glb/7d8b5ec9326a11362b3f9fa3409cb59d11b99f549cc304319c63c1ec55cbf5ab.glb +0 -0
  290. package/corpus/handwritten/blobs/glb/82e886f826315e4bf962363165fadadd3d93f85132c1909095045e0a7ccc0b34.glb +0 -0
  291. package/corpus/handwritten/blobs/glb/84b4ef190c3994ae7ca1b1f7a936526d1d20ad7deac13f949e3fe6bb7ba139ed.glb +0 -0
  292. package/corpus/handwritten/blobs/glb/85b7153e943fbe8c659bd6e4b323511dc6f6e2c7a3a1185e7a9a29ea6ddfdfa6.glb +0 -0
  293. package/corpus/handwritten/blobs/glb/85cf2d2be91cedbaf454ca42ad53c0c17b311088528d274695dbcea490d6c684.glb +0 -0
  294. package/corpus/handwritten/blobs/glb/8662b4cdc626c61a45e63f71dc866746c083cd0d4644b817a373105f936a7047.glb +0 -0
  295. package/corpus/handwritten/blobs/glb/8a4d33bfbb17d865e5deb0a0bdf3de67fc2312950a7568ed2635c22fbe4b1ecf.glb +0 -0
  296. package/corpus/handwritten/blobs/glb/8b11171d41c9027411ca8b87797d9ec70355471bdd3a247c114c49b8b781bbd9.glb +0 -0
  297. package/corpus/handwritten/blobs/glb/9026e1c4f0250832b69a989e69fe3071e5cad72adfe9c22ce11c409b18bb3357.glb +0 -0
  298. package/corpus/handwritten/blobs/glb/945b946f17b6393ea040230641c3083678bb6ab42e1d7239aeb9c950d0e7d5bb.glb +0 -0
  299. package/corpus/handwritten/blobs/glb/9afab455d603f1f8a38074c5a6cbed26d7d7f2cfd8a531820bd165d4b37399ee.glb +0 -0
  300. package/corpus/handwritten/blobs/glb/a6d702fb1be1095517625bfb2a2383f5f9638775059fd7e0d093d2044651b848.glb +0 -0
  301. package/corpus/handwritten/blobs/glb/aae479c2f99848998a1b499bbcad815d971349c2442bc363786aef63baad4337.glb +0 -0
  302. package/corpus/handwritten/blobs/glb/b155bd41f260d5303e293d691b657e0fb9b9c8b2f8aa589a0187061baa033eb7.glb +0 -0
  303. package/corpus/handwritten/blobs/glb/b1e8b770d99e8ca4396f21fd512f632c587149fc13db69deba388f702a46982f.glb +0 -0
  304. package/corpus/handwritten/blobs/glb/b382c318a5baac35da59a7b99ebaad6992e30c4bac327e85851ce0b2f89aa58b.glb +0 -0
  305. package/corpus/handwritten/blobs/glb/ba4478198696802808262af9bbfc224fe37e24e3f8c13de91debc87d3e1a9d41.glb +0 -0
  306. package/corpus/handwritten/blobs/glb/baf02cd967d1bf3c6a2ae878f4ca4ed34d0c39302ca2b8b6e3560a4e87b5c16f.glb +0 -0
  307. package/corpus/handwritten/blobs/glb/bc14dd152815ea6ed39458dcf89f2d69173d61d6e2b57be99d31ce2da64ccf67.glb +0 -0
  308. package/corpus/handwritten/blobs/glb/bc4e4d3bcf7ace855183efec0fbf242d444a32714d8b2fd8a45fa7b539ef2c73.glb +0 -0
  309. package/corpus/handwritten/blobs/glb/bc53475e2aa2fc9c2c0574b36a449fd57259c462d771e2b360def5c338d37c26.glb +0 -0
  310. package/corpus/handwritten/blobs/glb/c35d9e50f392c29f2587e3a6eb4f21143ba08e48d76a53b9de62d3b5be46c1a5.glb +0 -0
  311. package/corpus/handwritten/blobs/glb/c6911e059d3ac6aea75bc0ad3dd8b220704bfbba8ba98b57705e7aa3ecbe0050.glb +0 -0
  312. package/corpus/handwritten/blobs/glb/c84d88b6ed878490bcf9fa985b5e6a7a683de8ee7808ee4151a3b6a898fbe4f2.glb +0 -0
  313. package/corpus/handwritten/blobs/glb/c9d5d02ef0e38ac2898d3e6ecbc2ea0a6d2bd04531118550ab54b5e83293d7ec.glb +0 -0
  314. package/corpus/handwritten/blobs/glb/cd9d04e361e4c3d0aeb82f8682d71114ff8318b8fc4980bccee3c5e5c16afc27.glb +0 -0
  315. package/corpus/handwritten/blobs/glb/d32499928422a0cd1a32b1afaeacc31d2d84d74876f6805b36218dc04402a921.glb +0 -0
  316. package/corpus/handwritten/blobs/glb/dc7ea629fcddeba445599d73a5d721f4d5004e056c3c140baa3e6817393c6462.glb +0 -0
  317. package/corpus/handwritten/blobs/glb/dce79b59c85ca5a7f9fc25e585d253b15558f8f5d8497a76923c9071601de8b1.glb +0 -0
  318. package/corpus/handwritten/blobs/glb/e7fa1b02bae6c8d19ace0e8db44810beab9a1be9f8172d5816324760267d6d11.glb +0 -0
  319. package/corpus/handwritten/blobs/glb/eb664feed0fdcc3ac73cecbe737109994fe5dfad8a33997de88598965fa936ba.glb +0 -0
  320. package/corpus/handwritten/blobs/glb/ec6a771ca852b0b69e55a12df9d347384d01e611c8c6151ea771910f1601605d.glb +0 -0
  321. package/corpus/handwritten/blobs/glb/ede05013f575b4216d2b4b3f8a14d611ef28756f952f702bb169529c8ab02eff.glb +0 -0
  322. package/corpus/handwritten/blobs/glb/fec21fa96950340a1a031b31b37407468361ab0a7645c683e0d7773c18591a26.glb +0 -0
  323. package/corpus/handwritten/blobs/glb/ff21ea082bb00b01006900e7dbbb85220f31f45c144405c840a70872f9e09cb9.glb +0 -0
  324. package/corpus/handwritten/blobs/image/248fe9601e921305ffb35421414bc5f03e9f1b3dba15bf9b5c3387d8f255da17.png +0 -0
  325. package/corpus/handwritten/blobs/image/4b47420aff1ded28c9c6cf1eb92d6e2d7b01d057f2654654405445ff8d562e55.webp +0 -0
  326. package/corpus/handwritten/blobs/image/5dbc818ed0be692e6ba3df87898fd623280a2686eed5a538333e1325764b238d.png +0 -0
  327. package/corpus/handwritten/blobs/image/d5ae692911bbc2b60b5fdde239b70aad4ce9be0d7665c4a91b438de6077e21e3.jpg +0 -0
  328. package/corpus/handwritten/blobs/ktx2/df0dd2e8adc1d9479148bb198cb750471df454680cf0c9ffd6dc85d6262ed676.ktx2 +0 -0
  329. package/corpus/handwritten/blobs/wasm/ecc886d8bbebcf190298ff9162b6bb364f2125606f5bdc8cc220ea28044f96ea.wasm +0 -0
  330. package/corpus/handwritten/cook.json +1 -0
  331. package/corpus/handwritten/mounts/shardfiles/blender-template/discovery.json +1 -0
  332. package/corpus/handwritten/sections/actors/creatures.json +1 -0
  333. package/corpus/handwritten/sections/actors/crowds.json +1 -0
  334. package/corpus/handwritten/sections/actors/species.json +1 -0
  335. package/corpus/handwritten/sections/audio/audio.json +1 -0
  336. package/corpus/handwritten/sections/client/plan.json +1 -0
  337. package/corpus/handwritten/sections/combat/encounters.json +1 -0
  338. package/corpus/handwritten/sections/combat/items.json +1 -0
  339. package/corpus/handwritten/sections/combat/strikes.json +1 -0
  340. package/corpus/handwritten/sections/economy/ledger.json +1 -0
  341. package/corpus/handwritten/sections/economy/loot.json +1 -0
  342. package/corpus/handwritten/sections/look/look.json +1 -0
  343. package/corpus/handwritten/sections/look/map.json +1 -0
  344. package/corpus/handwritten/sections/look/materials.json +1 -0
  345. package/corpus/handwritten/sections/quests/quests.json +1 -0
  346. package/corpus/handwritten/sections/sim/client-scripts.json +1 -0
  347. package/corpus/handwritten/sections/sim/hooks.json +1 -0
  348. package/corpus/handwritten/sections/sim/plumbing.json +1 -0
  349. package/corpus/handwritten/sections/sim/sim.json +1 -0
  350. package/corpus/handwritten/sections/state/migrations.json +1 -0
  351. package/corpus/handwritten/sections/state/state.json +1 -0
  352. package/corpus/handwritten/sections/ui/card.json +1 -0
  353. package/corpus/handwritten/sections/ui/compendium.json +1 -0
  354. package/corpus/handwritten/sections/ui/level.json +1 -0
  355. package/corpus/handwritten/sections/ui/ui.json +1 -0
  356. package/corpus/handwritten/sections/world/collision.json +1 -0
  357. package/corpus/handwritten/sections/world/days.json +1 -0
  358. package/corpus/handwritten/sections/world/edge.json +1 -0
  359. package/corpus/handwritten/sections/world/movers.json +1 -0
  360. package/corpus/handwritten/sections/world/navigation.json +1 -0
  361. package/corpus/handwritten/sections/world/props.json +1 -0
  362. package/corpus/handwritten/sections/world/spawn.json +1 -0
  363. package/corpus/handwritten/sections/world/terrain.json +1 -0
  364. package/corpus/handwritten/sections/world/tiles.json +1 -0
  365. package/corpus/handwritten/sections/world/traversal.json +1 -0
  366. package/corpus/handwritten/sections/world/water.json +1 -0
  367. package/corpus/handwritten/sections/world/weather.json +1 -0
  368. package/corpus/handwritten/shard.json +1 -0
  369. package/corpus/handwritten/validation.json +1 -0
  370. package/package.json +504 -2
  371. package/packages/wire/src/net-command.ts +150 -0
  372. package/src/cli/bin.mjs +9 -0
  373. package/src/cli/main.ts +148 -0
  374. package/src/cli/pack.ts +262 -0
  375. package/src/cli/validate.ts +210 -0
  376. package/src/cli/version.ts +13 -0
  377. package/src/format/aacIndex.ts +160 -0
  378. package/src/format/accent.ts +35 -0
  379. package/src/format/achievementCounters.ts +22 -0
  380. package/src/format/actorMoves.ts +615 -0
  381. package/src/format/actorProjectionV2.ts +93 -0
  382. package/src/format/admissionControl.ts +66 -0
  383. package/src/format/admissionLate.ts +22 -0
  384. package/src/format/admissionLimits.ts +11 -0
  385. package/src/format/admissionServer.ts +30 -0
  386. package/src/format/ambientLife.ts +123 -0
  387. package/src/format/arenaRoomDocument.ts +114 -0
  388. package/src/format/arenaScriptRows.ts +107 -0
  389. package/src/format/arenaView.ts +30 -0
  390. package/src/format/assetAdmission.ts +279 -0
  391. package/src/format/audio-measure.ts +184 -0
  392. package/src/format/audio-mp4.ts +234 -0
  393. package/src/format/audio-rules.ts +271 -0
  394. package/src/format/audio-waiver.ts +55 -0
  395. package/src/format/audio.ts +463 -0
  396. package/src/format/audioBank.ts +37 -0
  397. package/src/format/audioProfiles.ts +501 -0
  398. package/src/format/audioRouting.ts +67 -0
  399. package/src/format/audioScene.ts +342 -0
  400. package/src/format/bakedTerrainBytes.ts +35 -0
  401. package/src/format/bakedTerrainSampling.ts +66 -0
  402. package/src/format/bakedTiles.ts +407 -0
  403. package/src/format/binarySource.ts +32 -0
  404. package/src/format/bodySlots.ts +90 -0
  405. package/src/format/bossEncounter.ts +354 -0
  406. package/src/format/bossProfiles.ts +709 -0
  407. package/src/format/bossSocketRig.ts +92 -0
  408. package/src/format/bowVariantRows.ts +68 -0
  409. package/src/format/brains.ts +252 -0
  410. package/src/format/budget.ts +214 -0
  411. package/src/format/buildings.ts +496 -0
  412. package/src/format/builtIndexes.ts +26 -0
  413. package/src/format/catalogueEconomy.ts +65 -0
  414. package/src/format/caveInterior.ts +225 -0
  415. package/src/format/cellBounds.ts +47 -0
  416. package/src/format/cellField.ts +98 -0
  417. package/src/format/chapterDirector.ts +193 -0
  418. package/src/format/clientChannels.ts +450 -0
  419. package/src/format/clientCues.ts +34 -0
  420. package/src/format/clientNative.ts +358 -0
  421. package/src/format/clientOwnership.ts +43 -0
  422. package/src/format/clientPlan.ts +306 -0
  423. package/src/format/clientScripts.ts +116 -0
  424. package/src/format/clientState.ts +273 -0
  425. package/src/format/clientTrails.ts +56 -0
  426. package/src/format/collectionDisplay.ts +232 -0
  427. package/src/format/colourFunction.ts +44 -0
  428. package/src/format/colourLut.ts +4 -0
  429. package/src/format/commonsCosts.ts +28 -0
  430. package/src/format/compendiumRows.ts +151 -0
  431. package/src/format/compendiumSketches.ts +23 -0
  432. package/src/format/completion.ts +83 -0
  433. package/src/format/contentBounds.ts +76 -0
  434. package/src/format/contentCost.ts +50 -0
  435. package/src/format/contracts.ts +305 -0
  436. package/src/format/cook-data.ts +148 -0
  437. package/src/format/cook-preparation.ts +241 -0
  438. package/src/format/coverAppearance.ts +53 -0
  439. package/src/format/creatures.ts +175 -0
  440. package/src/format/crowdPresentation.ts +87 -0
  441. package/src/format/crowds.ts +46 -0
  442. package/src/format/cueDirector.ts +134 -0
  443. package/src/format/dayCycle.ts +28 -0
  444. package/src/format/dayLook.ts +44 -0
  445. package/src/format/decisionBindings.ts +80 -0
  446. package/src/format/decisionPublication.ts +35 -0
  447. package/src/format/decisionScripts.ts +327 -0
  448. package/src/format/declaredQuestPage.ts +101 -0
  449. package/src/format/deviceMemoryCost.ts +50 -0
  450. package/src/format/director.ts +52 -0
  451. package/src/format/directorProduct.ts +27 -0
  452. package/src/format/directorStages.ts +165 -0
  453. package/src/format/directorWhen.ts +78 -0
  454. package/src/format/discoveryValues.ts +416 -0
  455. package/src/format/easedFields.ts +48 -0
  456. package/src/format/edgeProfiles.ts +40 -0
  457. package/src/format/eliteContinuation.ts +110 -0
  458. package/src/format/eliteEntryRows.ts +351 -0
  459. package/src/format/eliteFeature.ts +605 -0
  460. package/src/format/eliteScripts.ts +60 -0
  461. package/src/format/encounterRows.ts +1030 -0
  462. package/src/format/encounters.ts +65 -0
  463. package/src/format/engine-music.ts +42 -0
  464. package/src/format/entryClearance.ts +86 -0
  465. package/src/format/entryCoverage.ts +61 -0
  466. package/src/format/entryGeometry.ts +56 -0
  467. package/src/format/entryLanding.ts +83 -0
  468. package/src/format/entryReads.ts +45 -0
  469. package/src/format/entrywayAssets.ts +33 -0
  470. package/src/format/entryways.ts +58 -0
  471. package/src/format/exchange.ts +25 -0
  472. package/src/format/explorerCatalogue.ts +312 -0
  473. package/src/format/feature-sides.ts +233 -0
  474. package/src/format/fieldPresentation.ts +62 -0
  475. package/src/format/figures.ts +437 -0
  476. package/src/format/findsCatalogue.ts +67 -0
  477. package/src/format/fixedDraws.ts +24 -0
  478. package/src/format/flyers.ts +226 -0
  479. package/src/format/forestNativeInputs.ts +37 -0
  480. package/src/format/forestPage.ts +285 -0
  481. package/src/format/forestWeather.ts +333 -0
  482. package/src/format/geometryPack.ts +136 -0
  483. package/src/format/glbBuffers.ts +77 -0
  484. package/src/format/glbCost.ts +212 -0
  485. package/src/format/glbImages.ts +95 -0
  486. package/src/format/glbTriangles.ts +95 -0
  487. package/src/format/graphArmsRows.ts +200 -0
  488. package/src/format/grapple.ts +123 -0
  489. package/src/format/grazers.ts +164 -0
  490. package/src/format/grid-catalogue.ts +247 -0
  491. package/src/format/gridReadiness.ts +49 -0
  492. package/src/format/groupBrains.ts +249 -0
  493. package/src/format/heldArms.ts +576 -0
  494. package/src/format/heldEquipment.ts +78 -0
  495. package/src/format/heldFinishes.ts +415 -0
  496. package/src/format/heldGear.ts +68 -0
  497. package/src/format/heldJianDocument.ts +75 -0
  498. package/src/format/heldMelee.ts +866 -0
  499. package/src/format/heldView.ts +26 -0
  500. package/src/format/heldWeaponDocuments.ts +36 -0
  501. package/src/format/herdShelter.ts +58 -0
  502. package/src/format/hooks.ts +45 -0
  503. package/src/format/immutable.ts +59 -0
  504. package/src/format/inputDeclarations.ts +157 -0
  505. package/src/format/islandLibrary.ts +51 -0
  506. package/src/format/items.ts +229 -0
  507. package/src/format/json.ts +143 -0
  508. package/src/format/keyedSky.ts +314 -0
  509. package/src/format/kitFigure.ts +68 -0
  510. package/src/format/ktx2Cost.ts +47 -0
  511. package/src/format/ledger.ts +56 -0
  512. package/src/format/liftApproach.ts +75 -0
  513. package/src/format/liftRider.ts +10 -0
  514. package/src/format/lightEmitters.ts +105 -0
  515. package/src/format/lights.ts +135 -0
  516. package/src/format/limbCollision.ts +136 -0
  517. package/src/format/limbPopulation.ts +33 -0
  518. package/src/format/limbRig.ts +202 -0
  519. package/src/format/loadout.ts +156 -0
  520. package/src/format/look-light.ts +153 -0
  521. package/src/format/lootBag.ts +145 -0
  522. package/src/format/lootEconomy.ts +235 -0
  523. package/src/format/materialFamilies.ts +565 -0
  524. package/src/format/materialGraph.ts +1220 -0
  525. package/src/format/materials.ts +449 -0
  526. package/src/format/memoryAdmission.ts +84 -0
  527. package/src/format/memoryGates.json +7 -0
  528. package/src/format/meshCollision.ts +56 -0
  529. package/src/format/meshCollisionAssets.ts +19 -0
  530. package/src/format/meshCollisionBytes.ts +102 -0
  531. package/src/format/meshEntryways.ts +54 -0
  532. package/src/format/meshopt-decoder.wasm +0 -0
  533. package/src/format/meshopt-module.ts +177 -0
  534. package/src/format/meshopt-static.mjs +11 -0
  535. package/src/format/meshopt-wasm.ts +61 -0
  536. package/src/format/migrations.ts +209 -0
  537. package/src/format/minimap.ts +1052 -0
  538. package/src/format/mixedPopulation.ts +222 -0
  539. package/src/format/modes.ts +304 -0
  540. package/src/format/mountedSpecimenRows.ts +64 -0
  541. package/src/format/moverLifecycle.ts +34 -0
  542. package/src/format/moverMotion.ts +271 -0
  543. package/src/format/movers.ts +224 -0
  544. package/src/format/namedJsonContracts.ts +423 -0
  545. package/src/format/nativeActors.ts +45 -0
  546. package/src/format/nativeAssembly.ts +141 -0
  547. package/src/format/nativeGround.ts +37 -0
  548. package/src/format/nativeGroundAssets.ts +35 -0
  549. package/src/format/nativeItems.ts +184 -0
  550. package/src/format/nativePhysics.ts +140 -0
  551. package/src/format/nativeQuestComposition.ts +398 -0
  552. package/src/format/nativeRiding.ts +103 -0
  553. package/src/format/nativeRuntimePlan.ts +89 -0
  554. package/src/format/navigation.ts +99 -0
  555. package/src/format/navigationBytes.ts +111 -0
  556. package/src/format/nearPlaceholder.ts +111 -0
  557. package/src/format/nearPlaceholderAssets.ts +23 -0
  558. package/src/format/netCommand.ts +11 -0
  559. package/src/format/npcs.ts +546 -0
  560. package/src/format/outputAddress.ts +11 -0
  561. package/src/format/outputDownload.ts +34 -0
  562. package/src/format/outputFields.ts +123 -0
  563. package/src/format/outputIndex.ts +352 -0
  564. package/src/format/overdraw.ts +41 -0
  565. package/src/format/pageLife.ts +303 -0
  566. package/src/format/pagePreparation.ts +60 -0
  567. package/src/format/paintedLook.ts +55 -0
  568. package/src/format/paintedResources.ts +158 -0
  569. package/src/format/panelTemplate.ts +139 -0
  570. package/src/format/placeholderSource.ts +209 -0
  571. package/src/format/platformDataSections.ts +146 -0
  572. package/src/format/platformFileFamilies.ts +299 -0
  573. package/src/format/plumbing.ts +165 -0
  574. package/src/format/populationEnvironment.ts +210 -0
  575. package/src/format/populationKeeper.ts +163 -0
  576. package/src/format/populationProjection.ts +496 -0
  577. package/src/format/populationRespawn.ts +48 -0
  578. package/src/format/populationRoster.ts +158 -0
  579. package/src/format/portalFloor.ts +56 -0
  580. package/src/format/portalLink.ts +112 -0
  581. package/src/format/portalLinkAssets.ts +42 -0
  582. package/src/format/portalRide.ts +22 -0
  583. package/src/format/postGraphDocument.ts +36 -0
  584. package/src/format/postGraphLook.ts +477 -0
  585. package/src/format/postStack.ts +114 -0
  586. package/src/format/practiceCourseRows.ts +466 -0
  587. package/src/format/preflight.ts +155 -0
  588. package/src/format/presentation.ts +33 -0
  589. package/src/format/product-audio.ts +76 -0
  590. package/src/format/product-reads.ts +178 -0
  591. package/src/format/product-stream-admit.ts +100 -0
  592. package/src/format/product-stream-assets.ts +493 -0
  593. package/src/format/product-stream-facts.ts +208 -0
  594. package/src/format/product-stream-miss.ts +12 -0
  595. package/src/format/product-stream-node.ts +47 -0
  596. package/src/format/product-stream-packs.ts +242 -0
  597. package/src/format/product-stream-rows.ts +202 -0
  598. package/src/format/product-stream-tar.ts +192 -0
  599. package/src/format/product-stream.ts +284 -0
  600. package/src/format/product.ts +358 -0
  601. package/src/format/productValidation.ts +205 -0
  602. package/src/format/propMaterials.ts +254 -0
  603. package/src/format/props.ts +137 -0
  604. package/src/format/questContinuation.ts +42 -0
  605. package/src/format/questFigures.ts +227 -0
  606. package/src/format/questGraph.ts +30 -0
  607. package/src/format/questHost.ts +314 -0
  608. package/src/format/questInteractionSource.ts +57 -0
  609. package/src/format/questInteractions.ts +642 -0
  610. package/src/format/questPageComposition.ts +92 -0
  611. package/src/format/questPageFacets.ts +121 -0
  612. package/src/format/questRuntime.ts +118 -0
  613. package/src/format/questSteps.ts +182 -0
  614. package/src/format/questStory.ts +512 -0
  615. package/src/format/questStoryBindings.ts +43 -0
  616. package/src/format/questWorld.ts +36 -0
  617. package/src/format/quests.ts +333 -0
  618. package/src/format/rainPresentation.ts +131 -0
  619. package/src/format/rangedPage.ts +117 -0
  620. package/src/format/receipt-cost.ts +71 -0
  621. package/src/format/registeredJson.ts +530 -0
  622. package/src/format/returnProgramDocument.ts +40 -0
  623. package/src/format/returnProjectionV2.ts +84 -0
  624. package/src/format/riding.ts +377 -0
  625. package/src/format/riggedHulls.ts +160 -0
  626. package/src/format/roamingBossProjection.ts +178 -0
  627. package/src/format/roamingCombat.ts +22 -0
  628. package/src/format/ropeDeckSite.ts +148 -0
  629. package/src/format/rows.ts +86 -0
  630. package/src/format/runtime.ts +38 -0
  631. package/src/format/runtimeBinds.ts +49 -0
  632. package/src/format/runtimeCost.ts +80 -0
  633. package/src/format/runtimeSpawns.ts +73 -0
  634. package/src/format/scalarChannel.ts +38 -0
  635. package/src/format/scaledPost.ts +27 -0
  636. package/src/format/scaledPostContract.ts +51 -0
  637. package/src/format/sceneBuffers.ts +122 -0
  638. package/src/format/sceneDraws.ts +89 -0
  639. package/src/format/sceneDressing.ts +247 -0
  640. package/src/format/sceneInstances.ts +192 -0
  641. package/src/format/sceneMotion.ts +122 -0
  642. package/src/format/sceneRefs.ts +71 -0
  643. package/src/format/sceneSources.ts +730 -0
  644. package/src/format/script-side-grandfather.ts +62 -0
  645. package/src/format/script-sides.ts +289 -0
  646. package/src/format/scriptAbi.ts +14 -0
  647. package/src/format/scriptAbiV1.ts +56 -0
  648. package/src/format/scriptActionsV2.ts +101 -0
  649. package/src/format/scriptAdmission.ts +165 -0
  650. package/src/format/scriptAdmissionV2.ts +126 -0
  651. package/src/format/scriptContract.ts +170 -0
  652. package/src/format/scriptFuelV2.ts +124 -0
  653. package/src/format/scriptGroupBankV2.ts +54 -0
  654. package/src/format/scriptGroupStepV2.ts +165 -0
  655. package/src/format/scriptInputStateV2.ts +52 -0
  656. package/src/format/scriptLimits.ts +5 -0
  657. package/src/format/scriptMemoryV2.ts +17 -0
  658. package/src/format/scriptModuleV2.ts +116 -0
  659. package/src/format/scriptObservationColumnsV2.ts +226 -0
  660. package/src/format/scriptQueriesV2.ts +164 -0
  661. package/src/format/scriptQueryStateV2.ts +40 -0
  662. package/src/format/scriptRngV2.ts +52 -0
  663. package/src/format/scriptWireV2.ts +106 -0
  664. package/src/format/scripts.ts +31 -0
  665. package/src/format/sections.ts +140 -0
  666. package/src/format/shardSchema.ts +632 -0
  667. package/src/format/shardSections.ts +383 -0
  668. package/src/format/sketch.ts +79 -0
  669. package/src/format/skin-materials.ts +172 -0
  670. package/src/format/skinAssets.ts +107 -0
  671. package/src/format/skinData.ts +110 -0
  672. package/src/format/skinLayers.ts +90 -0
  673. package/src/format/skins.ts +37 -0
  674. package/src/format/socketLift.ts +58 -0
  675. package/src/format/socketLiftAssets.ts +81 -0
  676. package/src/format/socketRigCreature.ts +66 -0
  677. package/src/format/sourceResidency.ts +16 -0
  678. package/src/format/spawnCombat.ts +26 -0
  679. package/src/format/spawnScriptV2.ts +145 -0
  680. package/src/format/spawnScripts.ts +229 -0
  681. package/src/format/spawnTables.ts +46 -0
  682. package/src/format/spawnView.ts +26 -0
  683. package/src/format/speciesActorsFile.ts +86 -0
  684. package/src/format/speciesBookRows.ts +84 -0
  685. package/src/format/speciesBrain.ts +96 -0
  686. package/src/format/speciesLooks.ts +1021 -0
  687. package/src/format/speciesPrograms.ts +97 -0
  688. package/src/format/speciesScripts.ts +45 -0
  689. package/src/format/specimenCatalogue.ts +94 -0
  690. package/src/format/splatTerrain.ts +192 -0
  691. package/src/format/standalone-catalogue.ts +144 -0
  692. package/src/format/standaloneControl.ts +44 -0
  693. package/src/format/state.ts +61 -0
  694. package/src/format/stateLineage.ts +71 -0
  695. package/src/format/stealth.ts +106 -0
  696. package/src/format/stillImage.ts +135 -0
  697. package/src/format/streamedCover.ts +105 -0
  698. package/src/format/surfaceLooks.ts +50 -0
  699. package/src/format/tar-fields.ts +54 -0
  700. package/src/format/tar-paths.ts +103 -0
  701. package/src/format/tar-source.ts +13 -0
  702. package/src/format/tar-write.ts +152 -0
  703. package/src/format/tar.ts +203 -0
  704. package/src/format/targets.ts +217 -0
  705. package/src/format/terrain.ts +241 -0
  706. package/src/format/terrainTileBytes.ts +104 -0
  707. package/src/format/tierSelection.ts +195 -0
  708. package/src/format/toonLighting.ts +32 -0
  709. package/src/format/toonLook.ts +332 -0
  710. package/src/format/trail.ts +17 -0
  711. package/src/format/traversal.ts +13 -0
  712. package/src/format/treeSetRows.ts +93 -0
  713. package/src/format/ui.ts +90 -0
  714. package/src/format/uiStrings.ts +17 -0
  715. package/src/format/uniformRows.ts +31 -0
  716. package/src/format/upload-wire.ts +184 -0
  717. package/src/format/validationReceipt.ts +142 -0
  718. package/src/format/version.ts +9 -0
  719. package/src/format/vertexWear.ts +45 -0
  720. package/src/format/viewProgram.ts +329 -0
  721. package/src/format/voicePatches.ts +47 -0
  722. package/src/format/water.ts +247 -0
  723. package/src/format/waterWaves.ts +7 -0
  724. package/src/format/waterWorld.ts +34 -0
  725. package/src/format/weaponProfiles.ts +1315 -0
  726. package/src/format/weatherBundle.ts +36 -0
  727. package/src/format/weatherEffects.ts +78 -0
  728. package/src/format/weatherProgram.ts +422 -0
  729. package/src/format/wildlifePopulation.ts +210 -0
  730. package/src/format/wireLimits.ts +9 -0
  731. package/src/format/worldAssembly.ts +104 -0
  732. package/src/format/worldEntry.ts +151 -0
  733. package/src/format/worldPhysics.ts +292 -0
  734. package/src/format/worldSceneBatch.ts +106 -0
  735. package/src/format/worldSceneModels.ts +79 -0
  736. package/src/format/worldScenePages.ts +89 -0
  737. package/src/format/worldScenePlacement.ts +191 -0
  738. package/src/format/worldSceneSlabs.ts +43 -0
  739. package/src/format/worldSceneSurface.ts +113 -0
  740. package/src/format/worldSceneWeld.ts +702 -0
  741. package/src/format/worldScenes.ts +184 -0
  742. package/src/format/worldTargets.ts +111 -0
  743. package/src/format/worldUpdates.ts +229 -0
  744. package/src/hook/format-hook.d.mts +2 -0
  745. package/src/hook/format-hook.mjs +47 -0
  746. package/README.md +0 -8
@@ -0,0 +1,53 @@
1
+ import * as v from 'valibot';
2
+ import { isJsonData } from './json.ts';
3
+
4
+ const identifier = v.pipe(v.string(), v.minLength(1), v.maxLength(256));
5
+ const finite = v.pipe(v.number(), v.finite(), v.minValue(-1e6), v.maxValue(1e6));
6
+ const unit = v.pipe(finite, v.minValue(0), v.maxValue(1));
7
+ const texture = v.strictObject({ url: identifier, srgb: v.boolean(), repeat: v.boolean() });
8
+ /** Client-only appearance rows for fixed and streamed instance fields. They
9
+ * describe materials and numeric vertex channels, never placement or culling. */
10
+ export const CoverAppearanceSchema: v.GenericSchema<CoverAppearanceRowInput, CoverAppearanceRow> = v.pipe(v.unknown(), v.check(isJsonData, 'Cover appearance requires plain JSON'),
11
+ v.strictObject({ textures: v.optional(v.record(identifier, texture), {}),
12
+ kinds: v.pipe(v.array(v.strictObject({ id: identifier, graph: identifier, texture: v.exactOptional(identifier), name: v.exactOptional(identifier),
13
+ attributes: v.optional(v.pipe(v.record(v.pipe(identifier, v.regex(/^a[A-Z][a-zA-Z0-9]*$/u)), finite), v.maxEntries(32)), {}), shadow: v.optional(v.boolean(), false),
14
+ properties: v.optional(v.strictObject({ alphaTest: v.exactOptional(unit), roughness: v.exactOptional(unit),
15
+ polygonOffset: v.exactOptional(v.boolean()), polygonOffsetFactor: v.exactOptional(finite), polygonOffsetUnits: v.exactOptional(finite) }), {}) })), v.maxLength(64)),
16
+ params: v.optional(v.strictObject({ viewer: v.exactOptional(identifier), shift: v.exactOptional(identifier), sunTint: v.exactOptional(identifier) }), {}) }),
17
+ v.check(row => new Set(row.kinds.map(kind => kind.id)).size === row.kinds.length
18
+ && row.kinds.every(kind => kind.texture === undefined || row.textures[kind.texture] !== undefined)
19
+ && Object.keys(row.textures).length <= 64, 'Unique kinds and declared bounded textures'));
20
+
21
+ /** Refuse executable values and missing textures at publication and client intake. */
22
+ export function parseCoverAppearance(input: unknown): CoverAppearanceRow { return v.parse(CoverAppearanceSchema, input); }
23
+
24
+ /** Admitted data contracts, independent of validator implementation metadata. */
25
+ export type CoverAppearanceRowInput = unknown;
26
+ interface CoverAppearanceRowFields {
27
+ textures: Record<string, {
28
+ url: string;
29
+ srgb: boolean;
30
+ repeat: boolean;
31
+ }>;
32
+ kinds: ({
33
+ id: string;
34
+ graph: string;
35
+ texture?: string;
36
+ name?: string;
37
+ attributes: Record<string, number>;
38
+ shadow: boolean;
39
+ properties: {
40
+ alphaTest?: number;
41
+ roughness?: number;
42
+ polygonOffset?: boolean;
43
+ polygonOffsetFactor?: number;
44
+ polygonOffsetUnits?: number;
45
+ };
46
+ })[];
47
+ params: {
48
+ viewer?: string;
49
+ shift?: string;
50
+ sunTint?: string;
51
+ };
52
+ }
53
+ export type CoverAppearanceRow = { [Key in keyof CoverAppearanceRowFields]: CoverAppearanceRowFields[Key] };
@@ -0,0 +1,175 @@
1
+ import * as v from 'valibot';
2
+ import { ReturnProgramSchema } from './namedJsonContracts.ts';
3
+ import { NativeRidingSchema } from './nativeRiding.ts';
4
+ import { isJsonData } from './json.ts';
5
+ import { StalkerSchema, GuardianPatternsSchema, SkirmisherSchema, GuardianSchema, PerchHunterSchema, ScriptBrainSchema } from './brains.ts';
6
+ import { GroupBrainSchema, groupBrainRules, GuardedHerdGuestSchema, GroupGuestBindingSchema } from './groupBrains.ts';
7
+ import { RamGrazerSchema, ChallengeGrazerSchema, GrazerSchema } from './grazers.ts';
8
+ import { DiverSchema, OrbitDiverSchema, PatrolDiverSchema, BurstFlyerSchema } from './flyers.ts';
9
+
10
+ const id = v.pipe(v.string(), v.regex(/^[a-z][a-z0-9.:-]*$/u), v.maxLength(128));
11
+ const finite = v.pipe(v.number(), v.finite());
12
+ const radius = v.pipe(finite, v.minValue(0), v.maxValue(500));
13
+ const speed = v.pipe(finite, v.minValue(0), v.maxValue(15));
14
+ const ticks = v.pipe(finite, v.integer(), v.minValue(1), v.maxValue(36000));
15
+ const coord = v.pipe(finite, v.minValue(-250), v.maxValue(250));
16
+ const brain = v.pipe(v.strictObject({ id, kind: v.literal('pursue'), awareRadius: radius, leashRadius: radius, speed, returnSpeed: speed, stopDistance: radius,
17
+ turnRate: v.pipe(finite, v.minValue(0), v.maxValue(30)), thinkDivisor: v.pipe(ticks, v.check((n) => 60 % n === 0, 'brain divisor divides 60')), attackCooldownTicks: ticks, wanderRadius: radius, wanderEveryTicks: ticks }),
18
+ v.check((b) => b.stopDistance <= b.awareRadius && b.awareRadius <= b.leashRadius && b.wanderRadius <= b.leashRadius, 'ordered brain radii'));
19
+ /** One authored body's home; never inferred from a species or another actor. */
20
+ export const CreatureHomeSchema: v.GenericSchema<ShardCreatureHomeInput, ShardCreatureHome> = v.strictObject({ x: coord, y: coord, z: coord, r: v.pipe(radius, v.minValue(Number.MIN_VALUE)) });
21
+ /** Bounded per-spawn home overriding a flyer's catalogue home or supplying its ram boundary. */
22
+
23
+ const memoryKey = v.pipe(v.string(), v.regex(/^[a-zA-Z][a-zA-Z0-9._-]{0,63}$/u),
24
+ v.check(key => !['constructor', 'prototype', '__proto__'].includes(key), 'safe memory key'));
25
+ const memoryTest = v.picklist(['truthy', 'falsy']);
26
+ /** Ordered actor-memory contact gates; the owning body retains its attack phase and save fields. */
27
+ export const CreatureMemoryActionsSchema: v.GenericSchema<CreatureMemoryActionsRowsInput, CreatureMemoryActionsRows> = v.strictObject({ stateKey: memoryKey,
28
+ states: v.pipe(v.array(memoryKey), v.minLength(1), v.maxLength(32)),
29
+ actions: v.pipe(v.array(v.strictObject({ state: v.pipe(finite, v.integer(), v.minValue(0), v.maxValue(31)),
30
+ phase: v.pipe(finite, v.minValue(0), v.maxValue(1)), strike: id,
31
+ once: v.strictObject({ key: memoryKey, value: finite, test: v.picklist(['falsy', 'not-value']) }),
32
+ when: v.exactOptional(v.strictObject({ key: memoryKey, test: memoryTest })),
33
+ damage: v.exactOptional(v.literal('charge')),
34
+ radiusScale: v.exactOptional(v.strictObject({ minimum: radius, factor: v.pipe(finite, v.minValue(0), v.maxValue(10)) })),
35
+ sound: v.exactOptional(v.pipe(v.string(), v.minLength(1), v.maxLength(128))) })), v.maxLength(16)),
36
+ });
37
+ /** Immutable contact/action recipe, resolved against the admitted strike catalogue. */
38
+ type MemoryActions = v.InferOutput<typeof CreatureMemoryActionsSchema>;
39
+ export type CreatureMemoryActions = Omit<MemoryActions, 'states' | 'actions'> & {
40
+ readonly states: readonly string[]; readonly actions: readonly MemoryActions['actions'][number][] };
41
+
42
+ /** Explicit native body authority; decisions never infer flight, contact origin or an attack grant. */
43
+ export const CreatureBodyRecipeSchema: v.GenericSchema<CreatureBodyRecipeRowsInput, CreatureBodyRecipeRows> = v.strictObject({
44
+ actions: v.exactOptional(CreatureMemoryActionsSchema),
45
+ /** Presentation depth on the same body: smoothstep from/to using normalized admitted actor memory. */
46
+ offset: v.exactOptional(v.strictObject({ field: memoryKey, from: coord, to: coord })),
47
+ kind: v.literal('animal'), motion: v.picklist(['ground', 'flight']),
48
+ attack: v.picklist(['keeper', 'unlimited']), stunned: v.picklist(['none', 'look-hold']),
49
+ contact: v.variant('kind', [
50
+ v.strictObject({ kind: v.literal('environment'), halfArc: v.pipe(finite, v.minValue(0), v.maxValue(Math.PI)) }),
51
+ v.strictObject({ kind: v.literal('actor'), halfArc: v.pipe(finite, v.minValue(0), v.maxValue(Math.PI)), move: v.pipe(v.string(), v.regex(/^[a-z][A-Za-z0-9._:-]*$/u), v.maxLength(128)) }),
52
+ ]),
53
+ });
54
+ /** Serializable selection of the native motor and the exact existing creature-contact protocol. */
55
+ export type CreatureBodyRecipe = Omit<v.InferOutput<typeof CreatureBodyRecipeSchema>, 'actions'> & { readonly actions?: CreatureMemoryActions };
56
+ const phase = v.pipe(finite, v.minValue(-2 * Math.PI), v.maxValue(2 * Math.PI));
57
+ const spawn = v.strictObject({ phaseOffset: v.optional(phase), home: v.optional(CreatureHomeSchema), id, species: id, variant: id, brain: v.nullable(id), strike: v.nullable(id), seed: v.pipe(finite, v.integer(), v.minValue(0), v.maxValue(0xffffffff)), scale: v.pipe(finite, v.minValue(0.1), v.maxValue(10)), at: v.tuple([coord, coord, coord]), yaw: finite });
58
+ /** Pure-data creature archetypes and stable spawn layouts, expanded before the local sim boots. */
59
+ export const CreaturesSchema: v.GenericSchema<ShardCreaturesInput, ShardCreatures> = v.pipe(v.strictObject({ brains: v.pipe(v.array(v.variant('kind', [brain, SkirmisherSchema, GuardianSchema, PerchHunterSchema, ScriptBrainSchema, RamGrazerSchema, ChallengeGrazerSchema, OrbitDiverSchema, PatrolDiverSchema, BurstFlyerSchema, GrazerSchema, DiverSchema, GuardianPatternsSchema, StalkerSchema])), v.maxLength(64)), groups: v.optional(v.pipe(v.array(GroupBrainSchema), v.maxLength(64)), []), spawns: v.pipe(v.array(spawn), v.maxLength(10000)) }),
60
+ v.check((c) => creatureRules(c).length === 0, 'creature reference rules'));
61
+ /** Validated brain parameters and spawn layout, with no rig or runtime closure. */
62
+
63
+ /** Unique ids and brain references; species and strikes are resolved against the loader's declared catalogues. */
64
+ export function creatureRules(content: { brains: readonly { id: string; kind?: string; pattern?: string }[]; groups?: readonly { id: string; members: readonly string[] }[]; spawns: readonly { id: string; brain: string | null; home?: unknown; phaseOffset?: unknown }[] }): string[] {
65
+ const errors: string[] = [], brains = new Set(content.brains.map((b) => b.id));
66
+ if (brains.size !== content.brains.length) errors.push('unique brain ids');
67
+ for (const group of content.groups ?? []) { if (brains.has(group.id)) errors.push('unique controller ids'); brains.add(group.id); }
68
+ if (new Set(content.spawns.map((s) => s.id)).size !== content.spawns.length) errors.push('unique spawn ids');
69
+ if (content.spawns.some((s) => s.brain !== null && !brains.has(s.brain))) errors.push('declared spawn brain');
70
+ for (const body of content.spawns) {
71
+ const policy = content.brains.find(row => row.id === body.brain);
72
+ if (body.phaseOffset !== undefined && !(policy?.kind === 'challenge-grazer'
73
+ || (policy?.kind === 'grazer' && policy.pattern === 'circle-challenge'))) errors.push('declared per-body circle phase policy');
74
+ if (body.home === undefined) continue;
75
+ if (policy === undefined || !(policy.kind === 'ram-grazer' || policy.kind === 'orbit-diver'
76
+ || policy.kind === 'patrol-diver' || policy.kind === 'burst-flyer' || policy.kind === 'diver'
77
+ || (policy.kind === 'grazer' && policy.pattern === 'wander-ram'))) errors.push('declared per-body home policy');
78
+ }
79
+ errors.push(...groupBrainRules(content.groups ?? [], content.spawns, content.brains.map((row) => row.id)));
80
+ return errors;
81
+ }
82
+
83
+ const strikeFinite = v.pipe(v.number(), v.finite(), v.minValue(-10000000), v.maxValue(10000000));
84
+ const strikeNonnegative = v.pipe(strikeFinite, v.minValue(0));
85
+ const strikePositive = v.pipe(strikeNonnegative, v.check(n => n > 0, 'positive number'));
86
+ const strikeId = v.pipe(v.string(), v.regex(/^[a-z][a-zA-Z0-9.:-]*$/u), v.maxLength(128));
87
+ const strikeAngle = v.pipe(strikeNonnegative, v.maxValue(Math.PI));
88
+ const strikeShape = v.variant('kind', [
89
+ v.strictObject({ kind: v.literal('arc'), radius: strikeNonnegative, halfAngle: strikeAngle, yawOffset: v.exactOptional(strikeFinite) }),
90
+ v.strictObject({ kind: v.literal('lane'), length: strikeNonnegative, width: strikePositive }),
91
+ v.pipe(v.strictObject({ kind: v.literal('ring'), inner: strikeFinite, outer: strikeFinite }), v.check(r => r.inner <= r.outer, 'ordered ring')),
92
+ v.strictObject({ kind: v.literal('wedge'), length: strikeNonnegative, halfAngle: strikeAngle }),
93
+ v.strictObject({ kind: v.literal('point'), radius: strikeNonnegative, exclusive: v.exactOptional(v.boolean()) }),
94
+ v.strictObject({ kind: v.literal('sphere'), radius: strikeNonnegative }),
95
+ ]);
96
+ const strikeWeight = v.variant('kind', [
97
+ v.strictObject({ kind: v.literal('constant'), value: strikeFinite }),
98
+ v.strictObject({ kind: v.literal('horizontal-distance'), above: strikeNonnegative, far: strikeFinite, near: strikeFinite }),
99
+ ]);
100
+ const strikeTag = v.custom<`${string}.${string}`>(value => typeof value === 'string' && value.length <= 128 && /^[a-z][a-zA-Z0-9.-]*\.[a-zA-Z0-9.*-]+$/u.test(value));
101
+ /** Full native strike data, including its finite score program; no author callback is admitted. */
102
+ export const CreatureStrikeSchema: v.StrictObjectSchema<{ readonly id: v.GenericSchema<CreatureStrikeRowsInput['id'], CreatureStrikeRows['id']>; readonly shape: v.GenericSchema<CreatureStrikeRowsInput['shape'], CreatureStrikeRows['shape']>; readonly windup: v.GenericSchema<CreatureStrikeRowsInput['windup'], CreatureStrikeRows['windup']>; readonly active: v.GenericSchema<CreatureStrikeRowsInput['active'], CreatureStrikeRows['active']>; readonly recover: v.GenericSchema<CreatureStrikeRowsInput['recover'], CreatureStrikeRows['recover']>; readonly cooldown: v.GenericSchema<CreatureStrikeRowsInput['cooldown'], CreatureStrikeRows['cooldown']>; readonly range: v.GenericSchema<CreatureStrikeRowsInput['range'], CreatureStrikeRows['range']>; readonly damage: v.GenericSchema<CreatureStrikeRowsInput['damage'], CreatureStrikeRows['damage']>; readonly tags: v.SchemaWithPipe<readonly [v.ArraySchema<v.GenericSchema<CreatureStrikeRowsInput['tags'][number], CreatureStrikeRows['tags'][number]>, undefined>, v.MaxLengthAction<CreatureStrikeRows['tags'], 32, undefined>]>; readonly weight: v.GenericSchema<CreatureStrikeRowsInput['weight'], CreatureStrikeRows['weight']>; readonly units: v.ExactOptionalSchema<v.GenericSchema<Exclude<CreatureStrikeRowsInput['units'], undefined>, Exclude<CreatureStrikeRows['units'], undefined>>, undefined>; readonly alternatives: v.ExactOptionalSchema<v.GenericSchema<Exclude<CreatureStrikeRowsInput['alternatives'], undefined>, Exclude<CreatureStrikeRows['alternatives'], undefined>>, undefined>; readonly motion: v.ExactOptionalSchema<v.GenericSchema<Exclude<CreatureStrikeRowsInput['motion'], undefined>, Exclude<CreatureStrikeRows['motion'], undefined>>, undefined>; readonly eligibility: v.ExactOptionalSchema<v.GenericSchema<Exclude<CreatureStrikeRowsInput['eligibility'], undefined>, Exclude<CreatureStrikeRows['eligibility'], undefined>>, undefined>; }, undefined> = v.strictObject({
103
+ id: strikeId, shape: strikeShape, windup: strikeNonnegative, active: strikeNonnegative, recover: strikeNonnegative, cooldown: strikeNonnegative,
104
+ range: v.nullable(strikeNonnegative), damage: strikeNonnegative, tags: v.pipe(v.array(strikeTag), v.maxLength(32)), weight: strikeWeight,
105
+ units: v.exactOptional(v.picklist(['world', 'actor'])), alternatives: v.exactOptional(v.pipe(v.array(strikeShape), v.maxLength(16))),
106
+ motion: v.exactOptional(v.strictObject({ speed: v.exactOptional(strikeNonnegative), delay: v.exactOptional(strikeNonnegative),
107
+ track: v.exactOptional(v.picklist(['none', 'lead', 'follow'])), overshoot: v.exactOptional(strikeFinite), skid: v.exactOptional(strikeNonnegative) })),
108
+ eligibility: v.exactOptional(v.strictObject({ maxDy: v.exactOptional(strikeNonnegative), jumpDodges: v.exactOptional(v.boolean()) })),
109
+ });
110
+
111
+ /** Plain native strike catalogue; names are unique across the whole section. */
112
+ export const CreatureStrikesSchema: v.GenericSchema<CreatureStrikesInput, CreatureStrikes> = v.pipe(v.unknown(), v.check(isJsonData, 'plain JSON strike data'),
113
+ v.array(CreatureStrikeSchema), v.maxLength(256),
114
+ v.check(rows => new Set(rows.map(row => row.id)).size === rows.length, 'unique strike ids'));
115
+ /** Admitted native strike rows, retaining world/actor units and motion laws. */
116
+
117
+ /** Read an entire actors/strikes section before resolving decision handles. */
118
+ export function readCreatureStrikes(input: unknown): CreatureStrikes { return v.parse(CreatureStrikesSchema, input); }
119
+
120
+ /** An admitted programme and finite group binding; no callback or second owner. */
121
+ const groupGuest=v.strictObject({program:ReturnProgramSchema,binding:GuardedHerdGuestSchema});
122
+
123
+ /** Ordered native group setup. A delay projection can consume its own declared
124
+ * entropy between groups; adoption names a real actor outside the initial herd. */
125
+ export const NativeGroupRowsSchema: v.GenericSchema<NativeGroupRowsInput, NativeGroupRows> = v.strictObject({
126
+ id, herds: id, tokens: id, bounds: v.tuple([coord, coord, coord, coord]), owned: v.pipe(v.array(id), v.maxLength(64)),
127
+ contacts: v.strictObject({ pack: CreatureStrikeSchema, herd: CreatureStrikeSchema }),
128
+ steps: v.pipe(v.array(v.variant('kind', [
129
+ v.strictObject({ kind: v.literal('group'), row: GroupBrainSchema, adopt: v.nullable(id), guest:v.exactOptional(groupGuest) }),
130
+ v.strictObject({ kind: v.literal('delay'), program: ReturnProgramSchema, signal: v.pipe(v.string(), v.minLength(1), v.maxLength(128)), channel: id }),
131
+ ])), v.maxLength(17)),
132
+ });
133
+
134
+ /** Native population knockback tuning, shared by page and renderer-free bodies. */
135
+ const knockdownEntries={speed:v.pipe(finite,v.minValue(0)),min:v.pipe(finite,v.minValue(0)),max:v.pipe(finite,v.minValue(0)),seconds:v.pipe(finite,v.minValue(0))};
136
+ interface PageGroupRows { pack: v.InferOutput<typeof GroupBrainSchema>; herd: v.InferOutput<typeof GroupBrainSchema>; contacts: { pack: CreatureStrikeRows; herd: CreatureStrikeRows; }; world: v.InferOutput<typeof NativeRidingSchema.entries.world>; wind: { x: number; z: number; strength: number; }; prey: string; damage: v.InferOutput<typeof ReturnProgramSchema>; packGuest?: { program: v.InferOutput<typeof ReturnProgramSchema>; binding: v.InferOutput<typeof GroupGuestBindingSchema>; }; guest?: { program: v.InferOutput<typeof ReturnProgramSchema>; binding: v.InferOutput<typeof GuardedHerdGuestSchema>; }; effects?: PopulationEffectsRows; }
137
+ /** A species' body measurements (a `rows` species row's `dims`), in metres: body bone height, body capsule half-length
138
+ * and radius, head hit-sphere radius, front leg rest length, foot rest (x, z) per leg, and body half-width. Shards name it
139
+ * from here, not engine's `entities/species/registry` (SHARD-COMPAT SI3). */
140
+ interface AnimalDims { bodyY: number; bodyHalfLen: number; bodyRadius: number; headRadius: number; legLen: number; feet: ([number, number])[]; halfWidth: number; }
141
+ export const PopulationKnockdownSchema: v.GenericSchema<PopulationKnockdownRowsInput, PopulationKnockdownRows> = v.pipe(v.strictObject(knockdownEntries),v.check(row=>row.min<=row.max));
142
+ /** Native population notices and knockdown effects; no authored event handlers. */
143
+ export const PopulationEffectsSchema: v.GenericSchema<PopulationEffectsRowsInput, PopulationEffectsRows> = v.strictObject({
144
+ notices:v.pipe(v.array(v.strictObject({signal:id,text:v.pipe(v.string(),v.minLength(1),v.maxLength(256)),every:v.pipe(finite,v.minValue(0))})),v.maxLength(32),v.check(rows=>new Set(rows.map(row=>row.signal)).size===rows.length)),
145
+ knockdown:v.pipe(v.strictObject({...knockdownEntries,text:v.pipe(v.string(),v.minLength(1),v.maxLength(256)),every:v.pipe(finite,v.minValue(0))}),v.check(row=>row.min<=row.max)),
146
+ });
147
+ /** Client population groups use the same admitted brains and contact rows. */
148
+ export const PageGroupRowsSchema: v.GenericSchema<PageGroupRowsInput, PageGroupRows> = v.strictObject({
149
+ pack: GroupBrainSchema,herd: GroupBrainSchema,contacts: v.strictObject({ pack: CreatureStrikeSchema,herd: CreatureStrikeSchema }),
150
+ world: NativeRidingSchema.entries.world,wind: v.strictObject({ x: finite,z: finite,strength: finite }),
151
+ prey: id,damage: ReturnProgramSchema,packGuest:v.exactOptional(v.strictObject({program:ReturnProgramSchema,binding:GroupGuestBindingSchema})),guest:v.exactOptional(groupGuest),effects:v.exactOptional(PopulationEffectsSchema),
152
+ });
153
+
154
+ /** Admitted creature data independent of validator implementation metadata. */
155
+ export type ShardCreatureHomeInput = ShardCreatureHome;
156
+ export interface ShardCreatureHome { x: number; y: number; z: number; r: number; }
157
+ export type CreatureMemoryActionsRowsInput = CreatureMemoryActionsRows;
158
+ export interface CreatureMemoryActionsRows { stateKey: string; states: (string)[]; actions: ({ state: number; phase: number; strike: string; once: { key: string; value: number; test: 'falsy' | 'not-value'; }; when?: { key: string; test: 'truthy' | 'falsy'; }; damage?: 'charge'; radiusScale?: { minimum: number; factor: number; }; sound?: string; })[]; }
159
+ export interface CreatureBodyRecipeRowsInput { actions?: CreatureMemoryActionsRowsInput; offset?: { field: string; from: number; to: number; }; kind: 'animal'; motion: 'ground' | 'flight'; attack: 'keeper' | 'unlimited'; stunned: 'none' | 'look-hold'; contact: ({ kind: 'environment'; halfArc: number; }) | ({ kind: 'actor'; halfArc: number; move: string; }); }
160
+ export interface CreatureBodyRecipeRows { actions?: CreatureMemoryActionsRows; offset?: { field: string; from: number; to: number; }; kind: 'animal'; motion: 'ground' | 'flight'; attack: 'keeper' | 'unlimited'; stunned: 'none' | 'look-hold'; contact: ({ kind: 'environment'; halfArc: number; }) | ({ kind: 'actor'; halfArc: number; move: string; }); }
161
+ // oxlint-disable-next-line typescript/consistent-type-definitions -- Valibot's readonly defaults need the alias's implicit dictionary compatibility.
162
+ export type ShardCreaturesInput = { brains: (({ id: string; kind: 'pursue'; awareRadius: number; leashRadius: number; speed: number; returnSpeed: number; stopDistance: number; turnRate: number; thinkDivisor: number; attackCooldownTicks: number; wanderRadius: number; wanderEveryTicks: number; }) | (v.InferInput<typeof SkirmisherSchema>) | (v.InferInput<typeof GuardianSchema>) | (v.InferInput<typeof PerchHunterSchema>) | (v.InferInput<typeof ScriptBrainSchema>) | (v.InferInput<typeof RamGrazerSchema>) | (v.InferInput<typeof ChallengeGrazerSchema>) | (v.InferInput<typeof OrbitDiverSchema>) | (v.InferInput<typeof PatrolDiverSchema>) | (v.InferInput<typeof BurstFlyerSchema>) | (v.InferInput<typeof GrazerSchema>) | (v.InferInput<typeof DiverSchema>) | (v.InferInput<typeof GuardianPatternsSchema>) | (v.InferInput<typeof StalkerSchema>))[]; groups?: (v.InferInput<typeof GroupBrainSchema>)[] | undefined; spawns: ({ phaseOffset?: number | undefined; home?: ShardCreatureHomeInput | undefined; id: string; species: string; variant: string; brain: (string) | null; strike: (string) | null; seed: number; scale: number; at: [number, number, number]; yaw: number; })[]; };
163
+ export interface ShardCreatures { brains: (({ id: string; kind: 'pursue'; awareRadius: number; leashRadius: number; speed: number; returnSpeed: number; stopDistance: number; turnRate: number; thinkDivisor: number; attackCooldownTicks: number; wanderRadius: number; wanderEveryTicks: number; }) | (v.InferOutput<typeof SkirmisherSchema>) | (v.InferOutput<typeof GuardianSchema>) | (v.InferOutput<typeof PerchHunterSchema>) | (v.InferOutput<typeof ScriptBrainSchema>) | (v.InferOutput<typeof RamGrazerSchema>) | (v.InferOutput<typeof ChallengeGrazerSchema>) | (v.InferOutput<typeof OrbitDiverSchema>) | (v.InferOutput<typeof PatrolDiverSchema>) | (v.InferOutput<typeof BurstFlyerSchema>) | (v.InferOutput<typeof GrazerSchema>) | (v.InferOutput<typeof DiverSchema>) | (v.InferOutput<typeof GuardianPatternsSchema>) | (v.InferOutput<typeof StalkerSchema>))[]; groups: (v.InferOutput<typeof GroupBrainSchema>)[]; spawns: ({ phaseOffset?: number | undefined; home?: ShardCreatureHome | undefined; id: string; species: string; variant: string; brain: (string) | null; strike: (string) | null; seed: number; scale: number; at: [number, number, number]; yaw: number; })[]; }
164
+ export type CreatureStrikeRowsInput = CreatureStrikeRows;
165
+ export interface CreatureStrikeRows { id: string; shape: ({ kind: 'arc'; radius: number; halfAngle: number; yawOffset?: number; }) | ({ kind: 'lane'; length: number; width: number; }) | ({ kind: 'ring'; inner: number; outer: number; }) | ({ kind: 'wedge'; length: number; halfAngle: number; }) | ({ kind: 'point'; radius: number; exclusive?: boolean; }) | ({ kind: 'sphere'; radius: number; }); windup: number; active: number; recover: number; cooldown: number; range: (number) | null; damage: number; tags: (`${string}.${string}`)[]; weight: ({ kind: 'constant'; value: number; }) | ({ kind: 'horizontal-distance'; above: number; far: number; near: number; }); units?: 'world' | 'actor'; alternatives?: (({ kind: 'arc'; radius: number; halfAngle: number; yawOffset?: number; }) | ({ kind: 'lane'; length: number; width: number; }) | ({ kind: 'ring'; inner: number; outer: number; }) | ({ kind: 'wedge'; length: number; halfAngle: number; }) | ({ kind: 'point'; radius: number; exclusive?: boolean; }) | ({ kind: 'sphere'; radius: number; }))[]; motion?: { speed?: number; delay?: number; track?: 'none' | 'lead' | 'follow'; overshoot?: number; skid?: number; }; eligibility?: { maxDy?: number; jumpDodges?: boolean; }; }
166
+ export type CreatureStrikesInput = unknown;
167
+ export type CreatureStrikes = (CreatureStrikeRows)[];
168
+ export interface NativeGroupRowsInput { id: string; herds: string; tokens: string; bounds: [number, number, number, number]; owned: (string)[]; contacts: { pack: CreatureStrikeRowsInput; herd: CreatureStrikeRowsInput; }; steps: (({ kind: 'group'; row: v.InferInput<typeof GroupBrainSchema>; adopt: (string) | null; guest?: { program: v.InferInput<typeof ReturnProgramSchema>; binding: v.InferInput<typeof GuardedHerdGuestSchema>; }; }) | ({ kind: 'delay'; program: v.InferInput<typeof ReturnProgramSchema>; signal: string; channel: string; }))[]; }
169
+ export interface NativeGroupRows { id: string; herds: string; tokens: string; bounds: [number, number, number, number]; owned: (string)[]; contacts: { pack: CreatureStrikeRows; herd: CreatureStrikeRows; }; steps: (({ kind: 'group'; row: v.InferOutput<typeof GroupBrainSchema>; adopt: (string) | null; guest?: { program: v.InferOutput<typeof ReturnProgramSchema>; binding: v.InferOutput<typeof GuardedHerdGuestSchema>; }; }) | ({ kind: 'delay'; program: v.InferOutput<typeof ReturnProgramSchema>; signal: string; channel: string; }))[]; }
170
+ export type PopulationKnockdownRowsInput = PopulationKnockdownRows;
171
+ export interface PopulationKnockdownRows { speed: number; min: number; max: number; seconds: number; }
172
+ export type PopulationEffectsRowsInput = PopulationEffectsRows;
173
+ export interface PopulationEffectsRows { notices: ({ signal: string; text: string; every: number; })[]; knockdown: { text: string; every: number; } & { speed: number; min: number; max: number; seconds: number; }; }
174
+ export interface PageGroupRowsInput { pack: v.InferInput<typeof GroupBrainSchema>; herd: v.InferInput<typeof GroupBrainSchema>; contacts: { pack: CreatureStrikeRowsInput; herd: CreatureStrikeRowsInput; }; world: v.InferInput<typeof NativeRidingSchema.entries.world>; wind: { x: number; z: number; strength: number; }; prey: string; damage: v.InferInput<typeof ReturnProgramSchema>; packGuest?: { program: v.InferInput<typeof ReturnProgramSchema>; binding: v.InferInput<typeof GroupGuestBindingSchema>; }; guest?: { program: v.InferInput<typeof ReturnProgramSchema>; binding: v.InferInput<typeof GuardedHerdGuestSchema>; }; effects?: PopulationEffectsRowsInput; }
175
+ export type { AnimalDims, PageGroupRows };
@@ -0,0 +1,87 @@
1
+ import * as v from 'valibot';
2
+ import { ActorProjectionStepV2Schema } from './actorProjectionV2.ts';
3
+
4
+ const number = v.pipe(v.number(), v.finite()), positive = v.pipe(number,v.minValue(0));
5
+ const triple = v.tuple([number,number,number]);
6
+ /** Numeric presentation only: shared rigid-joint gait, weighted skin and crowd tint. */
7
+ export const CrowdPresentationSchema: v.GenericSchema<CrowdPresentationRowsInput, CrowdPresentationRows> = v.object({ name: v.pipe(v.string(),v.minLength(1),v.maxLength(96)),
8
+ attributes: v.tuple([v.pipe(v.string(),v.regex(/^[a-zA-Z_][a-zA-Z0-9_]*$/u))]),
9
+ wool: v.pipe(v.array(triple),v.minLength(1),v.maxLength(32)),
10
+ hits: v.pipe(v.array(triple),v.minLength(1),v.maxLength(16)),preyY: number,feetY: number,cullRadius: positive,
11
+ motion: v.object({ walk: v.tuple([number,positive]),
12
+ joints: v.pipe(v.array(v.tuple([number,number,number,number,number,number,number])),v.minLength(1),v.maxLength(64)),
13
+ movingBob: v.tuple([number,positive,number]),idleBob: v.tuple([number,number]),movingAt: positive,
14
+ deathPivot: triple,deathAngle: number,tint: v.tuple([number,number]),
15
+ }),
16
+ });
17
+
18
+
19
+
20
+ /** A crowd guardian projects native threat, straggler and player observations. */
21
+ export const CrowdGuardSchema: v.GenericSchema<CrowdGuardRowsInput, CrowdGuardRows> = v.strictObject({projection:ActorProjectionStepV2Schema});
22
+
23
+ /** Admitted data contracts, independent of validator implementation metadata. */
24
+ export type CrowdPresentationRowsInput = CrowdPresentationRows;
25
+ interface CrowdPresentationRowsFields {
26
+ name: string;
27
+ attributes: [
28
+ string
29
+ ];
30
+ wool: ([
31
+ number,
32
+ number,
33
+ number
34
+ ])[];
35
+ hits: ([
36
+ number,
37
+ number,
38
+ number
39
+ ])[];
40
+ preyY: number;
41
+ feetY: number;
42
+ cullRadius: number;
43
+ motion: {
44
+ walk: [
45
+ number,
46
+ number
47
+ ];
48
+ joints: ([
49
+ number,
50
+ number,
51
+ number,
52
+ number,
53
+ number,
54
+ number,
55
+ number
56
+ ])[];
57
+ movingBob: [
58
+ number,
59
+ number,
60
+ number
61
+ ];
62
+ idleBob: [
63
+ number,
64
+ number
65
+ ];
66
+ movingAt: number;
67
+ deathPivot: [
68
+ number,
69
+ number,
70
+ number
71
+ ];
72
+ deathAngle: number;
73
+ tint: [
74
+ number,
75
+ number
76
+ ];
77
+ };
78
+ }
79
+ export type CrowdPresentationRows = { [Key in keyof CrowdPresentationRowsFields]: CrowdPresentationRowsFields[Key] };
80
+ interface CrowdGuardRowsInputFields {
81
+ projection: v.InferInput<typeof ActorProjectionStepV2Schema>;
82
+ }
83
+ export type CrowdGuardRowsInput = { [Key in keyof CrowdGuardRowsInputFields]: CrowdGuardRowsInputFields[Key] };
84
+ interface CrowdGuardRowsFields {
85
+ projection: v.InferOutput<typeof ActorProjectionStepV2Schema>;
86
+ }
87
+ export type CrowdGuardRows = { [Key in keyof CrowdGuardRowsFields]: CrowdGuardRowsFields[Key] };
@@ -0,0 +1,46 @@
1
+ import * as v from 'valibot';
2
+ import { isJsonData } from './json.ts';
3
+
4
+ const key = v.pipe(v.string(), v.regex(/^[a-z][a-z0-9.:-]*$/u), v.maxLength(128));
5
+ const finite = v.pipe(v.number(), v.finite());
6
+ const coordinate = v.pipe(finite, v.minValue(-100000), v.maxValue(100000));
7
+ const speed = v.pipe(finite, v.minValue(0), v.maxValue(15));
8
+
9
+ /** Ordered instanced flock declaration; terrain, native view, prey and distance scheduling remain trusted ports. */
10
+ export const FlockSchema: v.GenericSchema<ShardFlockInput, ShardFlock> = v.strictObject({
11
+ id: key, kind: v.literal('flock'), x: coordinate, z: coordinate,
12
+ count: v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(256)),
13
+ seed: v.pipe(v.number(), v.integer(), v.minValue(0), v.maxValue(0xffffffff)),
14
+ range: v.pipe(finite, v.minValue(8), v.maxValue(500)), runSpeed: speed, walkSpeed: speed, grazeStep: speed,
15
+ bleatCue: v.pipe(v.string(), v.regex(/^[a-z][a-z0-9_.:-]*$/u), v.maxLength(128)),
16
+ });
17
+ /** Admitted flock tuning, stable crowd identity and ordered member count. */
18
+
19
+ /** Refuse malformed tuning before constructing a native view or consuming setup randomness. */
20
+ export function parseFlock(data: unknown): ShardFlock { return v.parse(FlockSchema, data); }
21
+
22
+ /** Native combat projection over a crowd member; no per-hit content handler. */
23
+ export const CrowdWeaponTargetSchema: v.GenericSchema<CrowdWeaponTargetRowsInput, CrowdWeaponTargetRows> = v.pipe(v.unknown(),v.check(isJsonData),v.strictObject({kind:key,damage:v.pipe(finite,v.minValue(0))}));
24
+
25
+ /** Admitted data contracts, independent of validator implementation metadata. */
26
+ export type ShardFlockInput = ShardFlock;
27
+ interface ShardFlockFields {
28
+ id: string;
29
+ kind: 'flock';
30
+ x: number;
31
+ z: number;
32
+ count: number;
33
+ seed: number;
34
+ range: number;
35
+ runSpeed: number;
36
+ walkSpeed: number;
37
+ grazeStep: number;
38
+ bleatCue: string;
39
+ }
40
+ export type ShardFlock = { [Key in keyof ShardFlockFields]: ShardFlockFields[Key] };
41
+ export type CrowdWeaponTargetRowsInput = unknown;
42
+ interface CrowdWeaponTargetRowsFields {
43
+ kind: string;
44
+ damage: number;
45
+ }
46
+ export type CrowdWeaponTargetRows = { [Key in keyof CrowdWeaponTargetRowsFields]: CrowdWeaponTargetRowsFields[Key] };
@@ -0,0 +1,134 @@
1
+ import * as v from 'valibot';
2
+
3
+ const id = v.pipe(v.string(), v.minLength(1), v.maxLength(128));
4
+ const cue = v.pipe(id, v.regex(/^cue\.[a-zA-Z0-9.-]+$/));
5
+ const real = v.pipe(v.number(), v.minValue(-10000), v.maxValue(10000));
6
+ const vector = v.tuple([real, real, real]);
7
+ const vfxTarget = v.variant('kind', [
8
+ v.strictObject({ kind: v.literal('impact'), material: v.picklist(['sand', 'wood', 'shell', 'sparks', 'dirt', 'stone']),
9
+ count: v.pipe(v.number(), v.integer(), v.minValue(0), v.maxValue(128)), reverse: v.boolean(), offset: vector }),
10
+ v.strictObject({ kind: v.literal('field'), field: id, ahead: real, offset: vector }),
11
+ /** `count` points from a declared spray: horizontal speed up to `speed` (scatter ± 70 %), `up` and `push` along the cue's
12
+ * direction, life and size ± 40 %, `colour` (linear, may exceed 1) ± `jitter`, started within `spread` of the point */
13
+ v.strictObject({ kind: v.literal('spray'), spray: id, count: v.pipe(v.number(), v.integer(), v.minValue(0), v.maxValue(128)),
14
+ speed: real, up: real, push: real, life: v.pipe(real, v.minValue(0.01)), size: v.pipe(real, v.minValue(0)), colour: vector, jitter: real, spread: real,
15
+ flags: v.pipe(v.array(v.picklist(['gravity', 'bounce', 'grow', 'rise'])), v.maxLength(4)), offset: vector }),
16
+ ]);
17
+ /** A spray: one pooled point draw in its `look`, a points look graph the shard lends (attributes `aSize`, `aAlpha`,
18
+ * `aColor`; params `scale`, the point scale, and, when `lit`, `light`, the scene light 0 … 1; its blend is the graph's).
19
+ * Alpha is min(1, k × fade[0]) × min(1, (1 − k) × fade[1] + fade[2]) over its life k = 1 … 0. */
20
+ const sprayRow = v.strictObject({ id, capacity: v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(2048)), lit: v.boolean(),
21
+ renderOrder: v.pipe(v.number(), v.integer(), v.minValue(0), v.maxValue(64)), fade: vector, look: id });
22
+ /** Cue rows schedule existing sound cues and native VFX targets in declaration
23
+ * order. Fields are prepared from declared libraries, never shard hooks. */
24
+ export const CueDirectorWireSchema: v.GenericSchema<CueDirectorWireRowsInput, CueDirectorWireRows> = v.strictObject({ version: v.literal(1),
25
+ fields: v.pipe(v.array(v.strictObject({ id, library: id, look: id, name: id, shape: v.picklist(['point', 'streak', 'flake']),
26
+ count: v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(8192)),
27
+ palette: v.exactOptional(v.pipe(v.array(v.pipe(v.number(), v.integer(), v.minValue(0), v.maxValue(0xffffff))), v.minLength(1), v.maxLength(64))),
28
+ life: v.exactOptional(v.pipe(real, v.minValue(0.001))),
29
+ place: v.exactOptional(v.strictObject({ at: vector, aim: vector })),
30
+ })), v.maxLength(64)),
31
+ sprays: v.exactOptional(v.pipe(v.array(sprayRow), v.maxLength(8))),
32
+ rows: v.pipe(v.array(v.strictObject({ id: cue, sound: v.exactOptional(cue), soundPhase: v.exactOptional(id),
33
+ delay: v.exactOptional(v.pipe(real, v.minValue(0), v.maxValue(60))),
34
+ vfx: v.pipe(v.array(vfxTarget), v.maxLength(16)),
35
+ })), v.maxLength(128)),
36
+ });
37
+ /** Native admission additionally validates identities and field dependencies. */
38
+ export const CueDirectorSchema: v.GenericSchema<CueDirectorRowsInput, CueDirectorRows> = v.pipe(CueDirectorWireSchema, v.check(rows => new Set(rows.rows.map(row => row.id)).size === rows.rows.length
39
+ && new Set(rows.fields.map(field => field.id)).size === rows.fields.length
40
+ && new Set(rows.sprays?.map(row => row.id)).size === (rows.sprays?.length ?? 0)
41
+ && rows.rows.every(row => row.vfx.every(target => target.kind === 'impact' || (target.kind === 'field' ? rows.fields.some(field => field.id === target.field && field.life !== undefined)
42
+ : rows.sprays?.some(declared => declared.id === target.spray) === true))), 'Unique cues and live burst fields'));
43
+
44
+
45
+ /** Admitted data contracts, independent of validator implementation metadata. */
46
+ export type CueDirectorWireRowsInput = CueDirectorWireRows;
47
+ interface CueDirectorWireRowsFields {
48
+ version: 1;
49
+ fields: ({
50
+ id: string;
51
+ library: string;
52
+ look: string;
53
+ name: string;
54
+ shape: 'point' | 'streak' | 'flake';
55
+ count: number;
56
+ palette?: (number)[];
57
+ life?: number;
58
+ place?: {
59
+ at: [
60
+ number,
61
+ number,
62
+ number
63
+ ];
64
+ aim: [
65
+ number,
66
+ number,
67
+ number
68
+ ];
69
+ };
70
+ })[];
71
+ sprays?: ({
72
+ id: string;
73
+ capacity: number;
74
+ lit: boolean;
75
+ renderOrder: number;
76
+ fade: [
77
+ number,
78
+ number,
79
+ number
80
+ ];
81
+ look: string;
82
+ })[];
83
+ rows: ({
84
+ id: string;
85
+ sound?: string;
86
+ soundPhase?: string;
87
+ delay?: number;
88
+ vfx: (({
89
+ kind: 'impact';
90
+ material: 'sand' | 'wood' | 'shell' | 'sparks' | 'dirt' | 'stone';
91
+ count: number;
92
+ reverse: boolean;
93
+ offset: [
94
+ number,
95
+ number,
96
+ number
97
+ ];
98
+ }) | ({
99
+ kind: 'field';
100
+ field: string;
101
+ ahead: number;
102
+ offset: [
103
+ number,
104
+ number,
105
+ number
106
+ ];
107
+ }) | ({
108
+ kind: 'spray';
109
+ spray: string;
110
+ count: number;
111
+ speed: number;
112
+ up: number;
113
+ push: number;
114
+ life: number;
115
+ size: number;
116
+ colour: [
117
+ number,
118
+ number,
119
+ number
120
+ ];
121
+ jitter: number;
122
+ spread: number;
123
+ flags: ('gravity' | 'bounce' | 'grow' | 'rise')[];
124
+ offset: [
125
+ number,
126
+ number,
127
+ number
128
+ ];
129
+ }))[];
130
+ })[];
131
+ }
132
+ export type CueDirectorWireRows = { [Key in keyof CueDirectorWireRowsFields]: CueDirectorWireRowsFields[Key] };
133
+ export type CueDirectorRowsInput = CueDirectorWireRowsInput;
134
+ export type CueDirectorRows = CueDirectorWireRows;
@@ -0,0 +1,28 @@
1
+ /**
2
+ * The day clock's pure row contracts (DS1.1): the named parts of a day, a schedule segment and a clock row as plain
3
+ * data, the part of the engine's `DayCycleSpec` (`@wildshard/engine/world/dayCycle`) a shard declares in its `data/`.
4
+ * The clock's law is `@wildshard/engine/sim/dayClock`; sun paths, look keys and curves stay engine-side functions.
5
+ */
6
+
7
+ /** The named parts of a day, in order. */
8
+ export type DayClockPhase = 'dawn' | 'day' | 'golden' | 'dusk' | 'night';
9
+ /** One schedule segment: the phase, its hours [from, to) (to may pass 24) and its real-time minutes. */
10
+ export interface DayClockSegment { phase: DayClockPhase; from: number; to: number; minutes: number }
11
+
12
+ /**
13
+ * A day clock as a row: its schedule, its start in its units, the units (a uniform 'phase' clock or a scheduled 'hour'
14
+ * clock), the sun's arc (its highest elevation and its azimuth offset, degrees), the fixed time picks and the light
15
+ * presets (each a value in the clock's units), the day's share of a phase clock and whether a pin also pauses it.
16
+ */
17
+ export interface DayClockRow {
18
+ readonly schedule: readonly DayClockSegment[];
19
+ readonly start: number;
20
+ /** Uniform clocks retain phase arithmetic; scheduled clocks retain hour arithmetic. */
21
+ readonly units: 'phase' | 'hour';
22
+ readonly sun: { readonly maxElevation: number; readonly azimuthOffset: number };
23
+ readonly fixed: Readonly<Record<'midday' | 'golden' | 'sunset' | 'night', number>>;
24
+ readonly presets: Readonly<Record<'dawn' | 'noon' | 'dusk' | 'night', number>>;
25
+ readonly dayFraction?: number;
26
+ /** Phase clocks historically pin once per frame; hour clocks also pause. */
27
+ readonly pauseOnPin?: boolean;
28
+ }
@@ -0,0 +1,44 @@
1
+ import type { DayClockRow, DayClockSegment } from './dayCycle.ts';
2
+
3
+ type Range = readonly [number, number];
4
+ /** A preset's fields: each a colour, a number, a name, or a nested group. */
5
+ export interface DayLookSchema { readonly [field: string]: 'colour' | 'number' | 'name' | DayLookSchema }
6
+ /** A colour as data: an sRGB hex number, or linear RGB. */
7
+ export type DayLookColour = number | readonly [number, number, number];
8
+ /** A preset as data. */
9
+ export type DayLookRow<S extends DayLookSchema> = {
10
+ readonly [K in keyof S]: S[K] extends 'colour' ? DayLookColour : S[K] extends 'number' ? number : S[K] extends 'name' ? string : S[K] extends DayLookSchema ? DayLookRow<S[K]> : never;
11
+ };
12
+
13
+ type NumberField<S extends DayLookSchema> = { [K in keyof S]: S[K] extends 'number' ? K : never }[keyof S] & string;
14
+ /** Numeric preset fields that supply optional day curves. */
15
+ export interface DayClockReads<S extends DayLookSchema> {
16
+ readonly dusk?: NumberField<S>;
17
+ readonly lamps?: NumberField<S>;
18
+ }
19
+
20
+ /** A keyed day clock's row: the shard's own row type extends this. */
21
+ export interface DayClockStyle<S extends DayLookSchema> {
22
+ /** the day's share of the cycle (sunset's phase) */
23
+ readonly dayFraction: number;
24
+ /** the start phase when nothing pins one */
25
+ readonly start: number;
26
+ readonly schedule: readonly DayClockSegment[];
27
+ /** Settings ▸ Time of day's picks → the phase they park the clock at */
28
+ readonly fixed: DayClockRow['fixed'];
29
+ /** the engine's named light presets → phase */
30
+ readonly namedPhases: DayClockRow['presets'];
31
+ /** `?tod=` names → phase (a number always works) */
32
+ readonly phases?: Readonly<Record<string, number>>;
33
+ readonly presets: Readonly<Record<string, DayLookRow<S>>>;
34
+ /** keyframes over the phase (sorted; wraps 1 → 0): a phase and the preset it holds */
35
+ readonly frames: readonly (readonly [number, string])[];
36
+ readonly sun: { readonly rise: number; readonly sweep: number; readonly noon: number; readonly nightRise: number; readonly nightSweep: number; readonly nadir: number };
37
+ readonly moon: { readonly rise: number; readonly sweep: number; readonly base: number; readonly arc: number };
38
+ readonly night: { readonly eve?: { readonly span: Range; readonly height: number }; readonly rise: Range; readonly fall: Range };
39
+ readonly fade: { readonly sunY: Range; readonly moonIn: Range; readonly moonOut: Range };
40
+ /** the dusk curve from the sun's height (1 → 0 over these heights, never under the night); otherwise the selected dusk field */
41
+ readonly dusk?: Range;
42
+ /** the dawn curve: its phase and the distance window it fades over (none: 0) */
43
+ readonly dawn?: { readonly at: number; readonly width: Range };
44
+ }