@sharpee/world-model 0.9.65-beta → 0.9.67-beta

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 (912) hide show
  1. package/{dist-npm/annotations → annotations}/index.d.ts +0 -0
  2. package/annotations/index.d.ts.map +1 -0
  3. package/{dist-npm/annotations → annotations}/index.js +0 -0
  4. package/annotations/index.js.map +1 -0
  5. package/{dist-npm/annotations → annotations}/types.d.ts +0 -0
  6. package/annotations/types.d.ts.map +1 -0
  7. package/{dist-npm/annotations → annotations}/types.js +0 -0
  8. package/annotations/types.js.map +1 -0
  9. package/behaviors/attack.d.ts +52 -0
  10. package/behaviors/attack.d.ts.map +1 -0
  11. package/{dist-npm/behaviors → behaviors}/attack.js +0 -0
  12. package/behaviors/attack.js.map +1 -0
  13. package/{dist-npm/behaviors → behaviors}/behavior.d.ts +0 -0
  14. package/behaviors/behavior.d.ts.map +1 -0
  15. package/{dist-npm/behaviors → behaviors}/behavior.js +0 -0
  16. package/behaviors/behavior.js.map +1 -0
  17. package/{dist-npm/behaviors → behaviors}/index.d.ts +0 -0
  18. package/behaviors/index.d.ts.map +1 -0
  19. package/{dist-npm/behaviors → behaviors}/index.js +0 -0
  20. package/behaviors/index.js.map +1 -0
  21. package/{dist-npm/capabilities → capabilities}/action-interceptor.d.ts +0 -0
  22. package/capabilities/action-interceptor.d.ts.map +1 -0
  23. package/{dist-npm/capabilities → capabilities}/action-interceptor.js +0 -0
  24. package/capabilities/action-interceptor.js.map +1 -0
  25. package/{dist-npm/capabilities → capabilities}/capability-behavior.d.ts +0 -0
  26. package/capabilities/capability-behavior.d.ts.map +1 -0
  27. package/{dist-npm/capabilities → capabilities}/capability-behavior.js +0 -0
  28. package/capabilities/capability-behavior.js.map +1 -0
  29. package/{dist-npm/capabilities → capabilities}/capability-defaults.d.ts +0 -0
  30. package/capabilities/capability-defaults.d.ts.map +1 -0
  31. package/{dist-npm/capabilities → capabilities}/capability-defaults.js +0 -0
  32. package/capabilities/capability-defaults.js.map +1 -0
  33. package/{dist-npm/capabilities → capabilities}/capability-helpers.d.ts +0 -0
  34. package/capabilities/capability-helpers.d.ts.map +1 -0
  35. package/{dist-npm/capabilities → capabilities}/capability-helpers.js +0 -0
  36. package/capabilities/capability-helpers.js.map +1 -0
  37. package/{dist-npm/capabilities → capabilities}/capability-registry.d.ts +0 -0
  38. package/capabilities/capability-registry.d.ts.map +1 -0
  39. package/{dist-npm/capabilities → capabilities}/capability-registry.js +0 -0
  40. package/capabilities/capability-registry.js.map +1 -0
  41. package/{dist-npm/capabilities → capabilities}/entity-builder.d.ts +0 -0
  42. package/capabilities/entity-builder.d.ts.map +1 -0
  43. package/{dist-npm/capabilities → capabilities}/entity-builder.js +0 -0
  44. package/capabilities/entity-builder.js.map +1 -0
  45. package/{dist-npm/capabilities → capabilities}/index.d.ts +0 -0
  46. package/capabilities/index.d.ts.map +1 -0
  47. package/{dist-npm/capabilities → capabilities}/index.js +0 -0
  48. package/capabilities/index.js.map +1 -0
  49. package/{dist-npm/capabilities → capabilities}/interceptor-helpers.d.ts +0 -0
  50. package/capabilities/interceptor-helpers.d.ts.map +1 -0
  51. package/{dist-npm/capabilities → capabilities}/interceptor-helpers.js +0 -0
  52. package/capabilities/interceptor-helpers.js.map +1 -0
  53. package/{dist-npm/capabilities → capabilities}/interceptor-registry.d.ts +0 -0
  54. package/capabilities/interceptor-registry.d.ts.map +1 -0
  55. package/{dist-npm/capabilities → capabilities}/interceptor-registry.js +0 -0
  56. package/capabilities/interceptor-registry.js.map +1 -0
  57. package/{dist-npm/capabilities → capabilities}/types.d.ts +0 -0
  58. package/capabilities/types.d.ts.map +1 -0
  59. package/{dist-npm/capabilities → capabilities}/types.js +0 -0
  60. package/capabilities/types.js.map +1 -0
  61. package/{dist-npm/commands → commands}/command-types.d.ts +0 -0
  62. package/commands/command-types.d.ts.map +1 -0
  63. package/{dist-npm/commands → commands}/command-types.js +0 -0
  64. package/commands/command-types.js.map +1 -0
  65. package/{dist-npm/commands → commands}/index.d.ts +0 -0
  66. package/commands/index.d.ts.map +1 -0
  67. package/{dist-npm/commands → commands}/index.js +0 -0
  68. package/commands/index.js.map +1 -0
  69. package/{dist-npm/commands → commands}/parsed-command.d.ts +0 -0
  70. package/commands/parsed-command.d.ts.map +1 -0
  71. package/{dist-npm/commands → commands}/parsed-command.js +0 -0
  72. package/commands/parsed-command.js.map +1 -0
  73. package/{dist-npm/commands → commands}/validated-command.d.ts +0 -0
  74. package/commands/validated-command.d.ts.map +1 -0
  75. package/{dist-npm/commands → commands}/validated-command.js +0 -0
  76. package/commands/validated-command.js.map +1 -0
  77. package/{dist-npm/constants → constants}/action-failures.d.ts +0 -0
  78. package/constants/action-failures.d.ts.map +1 -0
  79. package/{dist-npm/constants → constants}/action-failures.js +0 -0
  80. package/constants/action-failures.js.map +1 -0
  81. package/{dist-npm/constants → constants}/directions.d.ts +0 -0
  82. package/constants/directions.d.ts.map +1 -0
  83. package/{dist-npm/constants → constants}/directions.js +0 -0
  84. package/constants/directions.js.map +1 -0
  85. package/constants/if-events.d.ts +5 -0
  86. package/constants/if-events.d.ts.map +1 -0
  87. package/constants/if-events.js +10 -0
  88. package/constants/if-events.js.map +1 -0
  89. package/{dist-npm/constants → constants}/index.d.ts +0 -0
  90. package/constants/index.d.ts.map +1 -0
  91. package/{dist-npm/constants → constants}/index.js +0 -0
  92. package/constants/index.js.map +1 -0
  93. package/{dist-npm/entities → entities}/entity-store.d.ts +0 -0
  94. package/entities/entity-store.d.ts.map +1 -0
  95. package/{dist-npm/entities → entities}/entity-store.js +0 -0
  96. package/entities/entity-store.js.map +1 -0
  97. package/{dist-npm/entities → entities}/entity-types.d.ts +0 -0
  98. package/entities/entity-types.d.ts.map +1 -0
  99. package/{dist-npm/entities → entities}/entity-types.js +0 -0
  100. package/entities/entity-types.js.map +1 -0
  101. package/entities/if-entity.d.ts +314 -0
  102. package/entities/if-entity.d.ts.map +1 -0
  103. package/{dist-npm/entities → entities}/if-entity.js +0 -0
  104. package/entities/if-entity.js.map +1 -0
  105. package/{dist-npm/entities → entities}/index.d.ts +0 -0
  106. package/entities/index.d.ts.map +1 -0
  107. package/{dist-npm/entities → entities}/index.js +0 -0
  108. package/entities/index.js.map +1 -0
  109. package/events/types.d.ts +45 -0
  110. package/events/types.d.ts.map +1 -0
  111. package/{dist-npm/events → events}/types.js +0 -0
  112. package/events/types.js.map +1 -0
  113. package/{dist-npm/examples → examples}/event-handler-registration.d.ts +0 -0
  114. package/examples/event-handler-registration.d.ts.map +1 -0
  115. package/{dist-npm/examples → examples}/event-handler-registration.js +0 -0
  116. package/examples/event-handler-registration.js.map +1 -0
  117. package/{dist-npm/extensions → extensions}/base-extension.d.ts +0 -0
  118. package/extensions/base-extension.d.ts.map +1 -0
  119. package/{dist-npm/extensions → extensions}/base-extension.js +0 -0
  120. package/extensions/base-extension.js.map +1 -0
  121. package/{dist-npm/extensions → extensions}/index.d.ts +0 -0
  122. package/extensions/index.d.ts.map +1 -0
  123. package/{dist-npm/extensions → extensions}/index.js +0 -0
  124. package/extensions/index.js.map +1 -0
  125. package/{dist-npm/extensions → extensions}/loader.d.ts +0 -0
  126. package/extensions/loader.d.ts.map +1 -0
  127. package/{dist-npm/extensions → extensions}/loader.js +0 -0
  128. package/extensions/loader.js.map +1 -0
  129. package/{dist-npm/extensions → extensions}/manager.d.ts +0 -0
  130. package/extensions/manager.d.ts.map +1 -0
  131. package/{dist-npm/extensions → extensions}/manager.js +0 -0
  132. package/extensions/manager.js.map +1 -0
  133. package/{dist-npm/extensions → extensions}/registry.d.ts +0 -0
  134. package/extensions/registry.d.ts.map +1 -0
  135. package/{dist-npm/extensions → extensions}/registry.js +0 -0
  136. package/extensions/registry.js.map +1 -0
  137. package/{dist-npm/extensions → extensions}/types.d.ts +0 -0
  138. package/extensions/types.d.ts.map +1 -0
  139. package/{dist-npm/extensions → extensions}/types.js +0 -0
  140. package/extensions/types.js.map +1 -0
  141. package/{dist-npm/index.d.ts → index.d.ts} +0 -0
  142. package/index.d.ts.map +1 -0
  143. package/{dist-npm/index.js → index.js} +0 -0
  144. package/index.js.map +1 -0
  145. package/interfaces/command-executor.d.ts +17 -0
  146. package/interfaces/command-executor.d.ts.map +1 -0
  147. package/{dist-npm/interfaces → interfaces}/command-executor.js +0 -0
  148. package/interfaces/command-executor.js.map +1 -0
  149. package/interfaces/command-processor.d.ts +17 -0
  150. package/interfaces/command-processor.d.ts.map +1 -0
  151. package/{dist-npm/interfaces → interfaces}/command-processor.js +0 -0
  152. package/interfaces/command-processor.js.map +1 -0
  153. package/interfaces/command-validator.d.ts +17 -0
  154. package/interfaces/command-validator.d.ts.map +1 -0
  155. package/{dist-npm/interfaces → interfaces}/command-validator.js +0 -0
  156. package/interfaces/command-validator.js.map +1 -0
  157. package/{dist-npm/interfaces → interfaces}/index.d.ts +0 -0
  158. package/interfaces/index.d.ts.map +1 -0
  159. package/{dist-npm/interfaces → interfaces}/index.js +0 -0
  160. package/interfaces/index.js.map +1 -0
  161. package/{dist-npm/interfaces → interfaces}/language-provider.d.ts +0 -0
  162. package/interfaces/language-provider.d.ts.map +1 -0
  163. package/{dist-npm/interfaces → interfaces}/language-provider.js +0 -0
  164. package/interfaces/language-provider.js.map +1 -0
  165. package/{dist-npm/interfaces → interfaces}/parser.d.ts +0 -0
  166. package/interfaces/parser.d.ts.map +1 -0
  167. package/{dist-npm/interfaces → interfaces}/parser.js +0 -0
  168. package/interfaces/parser.js.map +1 -0
  169. package/package.json +6 -33
  170. package/{dist-npm/scope → scope}/index.d.ts +0 -0
  171. package/scope/index.d.ts.map +1 -0
  172. package/{dist-npm/scope → scope}/index.js +0 -0
  173. package/scope/index.js.map +1 -0
  174. package/{dist-npm/scope → scope}/scope-evaluator.d.ts +0 -0
  175. package/scope/scope-evaluator.d.ts.map +1 -0
  176. package/{dist-npm/scope → scope}/scope-evaluator.js +0 -0
  177. package/scope/scope-evaluator.js.map +1 -0
  178. package/{dist-npm/scope → scope}/scope-registry.d.ts +0 -0
  179. package/scope/scope-registry.d.ts.map +1 -0
  180. package/{dist-npm/scope → scope}/scope-registry.js +0 -0
  181. package/scope/scope-registry.js.map +1 -0
  182. package/{dist-npm/scope → scope}/scope-rule.d.ts +0 -0
  183. package/scope/scope-rule.d.ts.map +1 -0
  184. package/{dist-npm/scope → scope}/scope-rule.js +0 -0
  185. package/scope/scope-rule.js.map +1 -0
  186. package/{dist-npm/services → services}/ScopeService.d.ts +0 -0
  187. package/services/ScopeService.d.ts.map +1 -0
  188. package/{dist-npm/services → services}/ScopeService.js +0 -0
  189. package/services/ScopeService.js.map +1 -0
  190. package/{dist-npm/services → services}/index.d.ts +0 -0
  191. package/services/index.d.ts.map +1 -0
  192. package/{dist-npm/services → services}/index.js +0 -0
  193. package/services/index.js.map +1 -0
  194. package/{dist-npm/test-structure.d.ts → test-structure.d.ts} +0 -0
  195. package/test-structure.d.ts.map +1 -0
  196. package/{dist-npm/test-structure.js → test-structure.js} +0 -0
  197. package/test-structure.js.map +1 -0
  198. package/traits/actor/actorBehavior.d.ts +121 -0
  199. package/traits/actor/actorBehavior.d.ts.map +1 -0
  200. package/{dist-npm/traits → traits}/actor/actorBehavior.js +0 -0
  201. package/traits/actor/actorBehavior.js.map +1 -0
  202. package/{dist-npm/traits → traits}/actor/actorTrait.d.ts +0 -0
  203. package/traits/actor/actorTrait.d.ts.map +1 -0
  204. package/{dist-npm/traits → traits}/actor/actorTrait.js +0 -0
  205. package/traits/actor/actorTrait.js.map +1 -0
  206. package/{dist-npm/traits → traits}/actor/index.d.ts +0 -0
  207. package/traits/actor/index.d.ts.map +1 -0
  208. package/{dist-npm/traits → traits}/actor/index.js +0 -0
  209. package/traits/actor/index.js.map +1 -0
  210. package/{dist-npm/traits → traits}/all-traits.d.ts +0 -0
  211. package/traits/all-traits.d.ts.map +1 -0
  212. package/{dist-npm/traits → traits}/all-traits.js +0 -0
  213. package/traits/all-traits.js.map +1 -0
  214. package/{dist-npm/traits → traits}/attached/attachedTrait.d.ts +0 -0
  215. package/traits/attached/attachedTrait.d.ts.map +1 -0
  216. package/{dist-npm/traits → traits}/attached/attachedTrait.js +0 -0
  217. package/traits/attached/attachedTrait.js.map +1 -0
  218. package/{dist-npm/traits → traits}/attached/index.d.ts +0 -0
  219. package/traits/attached/index.d.ts.map +1 -0
  220. package/{dist-npm/traits → traits}/attached/index.js +0 -0
  221. package/traits/attached/index.js.map +1 -0
  222. package/traits/breakable/breakableBehavior.d.ts +43 -0
  223. package/traits/breakable/breakableBehavior.d.ts.map +1 -0
  224. package/{dist-npm/traits → traits}/breakable/breakableBehavior.js +0 -0
  225. package/traits/breakable/breakableBehavior.js.map +1 -0
  226. package/{dist-npm/traits → traits}/breakable/breakableTrait.d.ts +0 -0
  227. package/traits/breakable/breakableTrait.d.ts.map +1 -0
  228. package/{dist-npm/traits → traits}/breakable/breakableTrait.js +0 -0
  229. package/traits/breakable/breakableTrait.js.map +1 -0
  230. package/{dist-npm/traits → traits}/breakable/index.d.ts +0 -0
  231. package/traits/breakable/index.d.ts.map +1 -0
  232. package/{dist-npm/traits → traits}/breakable/index.js +0 -0
  233. package/traits/breakable/index.js.map +1 -0
  234. package/{dist-npm/traits → traits}/button/buttonTrait.d.ts +0 -0
  235. package/traits/button/buttonTrait.d.ts.map +1 -0
  236. package/{dist-npm/traits → traits}/button/buttonTrait.js +0 -0
  237. package/traits/button/buttonTrait.js.map +1 -0
  238. package/{dist-npm/traits → traits}/button/index.d.ts +0 -0
  239. package/traits/button/index.d.ts.map +1 -0
  240. package/{dist-npm/traits → traits}/button/index.js +0 -0
  241. package/traits/button/index.js.map +1 -0
  242. package/{dist-npm/traits → traits}/climbable/climbableBehavior.d.ts +0 -0
  243. package/traits/climbable/climbableBehavior.d.ts.map +1 -0
  244. package/{dist-npm/traits → traits}/climbable/climbableBehavior.js +0 -0
  245. package/traits/climbable/climbableBehavior.js.map +1 -0
  246. package/{dist-npm/traits → traits}/climbable/climbableTrait.d.ts +0 -0
  247. package/traits/climbable/climbableTrait.d.ts.map +1 -0
  248. package/{dist-npm/traits → traits}/climbable/climbableTrait.js +0 -0
  249. package/traits/climbable/climbableTrait.js.map +1 -0
  250. package/{dist-npm/traits → traits}/climbable/index.d.ts +0 -0
  251. package/traits/climbable/index.d.ts.map +1 -0
  252. package/{dist-npm/traits → traits}/climbable/index.js +0 -0
  253. package/traits/climbable/index.js.map +1 -0
  254. package/{dist-npm/traits → traits}/clothing/clothingTrait.d.ts +0 -0
  255. package/traits/clothing/clothingTrait.d.ts.map +1 -0
  256. package/{dist-npm/traits → traits}/clothing/clothingTrait.js +0 -0
  257. package/traits/clothing/clothingTrait.js.map +1 -0
  258. package/{dist-npm/traits → traits}/clothing/index.d.ts +0 -0
  259. package/traits/clothing/index.d.ts.map +1 -0
  260. package/{dist-npm/traits → traits}/clothing/index.js +0 -0
  261. package/traits/clothing/index.js.map +1 -0
  262. package/traits/combatant/combatantBehavior.d.ts +70 -0
  263. package/traits/combatant/combatantBehavior.d.ts.map +1 -0
  264. package/{dist-npm/traits → traits}/combatant/combatantBehavior.js +0 -0
  265. package/traits/combatant/combatantBehavior.js.map +1 -0
  266. package/{dist-npm/traits → traits}/combatant/combatantTrait.d.ts +0 -0
  267. package/traits/combatant/combatantTrait.d.ts.map +1 -0
  268. package/{dist-npm/traits → traits}/combatant/combatantTrait.js +0 -0
  269. package/traits/combatant/combatantTrait.js.map +1 -0
  270. package/{dist-npm/traits → traits}/combatant/index.d.ts +0 -0
  271. package/traits/combatant/index.d.ts.map +1 -0
  272. package/{dist-npm/traits → traits}/combatant/index.js +0 -0
  273. package/traits/combatant/index.js.map +1 -0
  274. package/{dist-npm/traits → traits}/container/container-utils.d.ts +0 -0
  275. package/traits/container/container-utils.d.ts.map +1 -0
  276. package/{dist-npm/traits → traits}/container/container-utils.js +0 -0
  277. package/traits/container/container-utils.js.map +1 -0
  278. package/{dist-npm/traits → traits}/container/containerBehavior.d.ts +0 -0
  279. package/traits/container/containerBehavior.d.ts.map +1 -0
  280. package/{dist-npm/traits → traits}/container/containerBehavior.js +0 -0
  281. package/traits/container/containerBehavior.js.map +1 -0
  282. package/{dist-npm/traits → traits}/container/containerTrait.d.ts +0 -0
  283. package/traits/container/containerTrait.d.ts.map +1 -0
  284. package/{dist-npm/traits → traits}/container/containerTrait.js +0 -0
  285. package/traits/container/containerTrait.js.map +1 -0
  286. package/{dist-npm/traits → traits}/container/index.d.ts +0 -0
  287. package/traits/container/index.d.ts.map +1 -0
  288. package/{dist-npm/traits → traits}/container/index.js +0 -0
  289. package/traits/container/index.js.map +1 -0
  290. package/traits/destructible/destructibleBehavior.d.ts +57 -0
  291. package/traits/destructible/destructibleBehavior.d.ts.map +1 -0
  292. package/{dist-npm/traits → traits}/destructible/destructibleBehavior.js +0 -0
  293. package/traits/destructible/destructibleBehavior.js.map +1 -0
  294. package/{dist-npm/traits → traits}/destructible/destructibleTrait.d.ts +0 -0
  295. package/traits/destructible/destructibleTrait.d.ts.map +1 -0
  296. package/{dist-npm/traits → traits}/destructible/destructibleTrait.js +0 -0
  297. package/traits/destructible/destructibleTrait.js.map +1 -0
  298. package/{dist-npm/traits → traits}/destructible/index.d.ts +0 -0
  299. package/traits/destructible/index.d.ts.map +1 -0
  300. package/{dist-npm/traits → traits}/destructible/index.js +0 -0
  301. package/traits/destructible/index.js.map +1 -0
  302. package/{dist-npm/traits → traits}/door/doorBehavior.d.ts +0 -0
  303. package/traits/door/doorBehavior.d.ts.map +1 -0
  304. package/{dist-npm/traits → traits}/door/doorBehavior.js +0 -0
  305. package/traits/door/doorBehavior.js.map +1 -0
  306. package/{dist-npm/traits → traits}/door/doorTrait.d.ts +0 -0
  307. package/traits/door/doorTrait.d.ts.map +1 -0
  308. package/{dist-npm/traits → traits}/door/doorTrait.js +0 -0
  309. package/traits/door/doorTrait.js.map +1 -0
  310. package/{dist-npm/traits → traits}/door/index.d.ts +0 -0
  311. package/traits/door/index.d.ts.map +1 -0
  312. package/{dist-npm/traits → traits}/door/index.js +0 -0
  313. package/traits/door/index.js.map +1 -0
  314. package/traits/edible/edibleBehavior.d.ts +63 -0
  315. package/traits/edible/edibleBehavior.d.ts.map +1 -0
  316. package/traits/edible/edibleBehavior.js +157 -0
  317. package/traits/edible/edibleBehavior.js.map +1 -0
  318. package/{dist-npm/traits → traits}/edible/edibleTrait.d.ts +0 -0
  319. package/traits/edible/edibleTrait.d.ts.map +1 -0
  320. package/{dist-npm/traits → traits}/edible/edibleTrait.js +0 -0
  321. package/traits/edible/edibleTrait.js.map +1 -0
  322. package/{dist-npm/traits → traits}/edible/index.d.ts +0 -0
  323. package/traits/edible/index.d.ts.map +1 -0
  324. package/{dist-npm/traits → traits}/edible/index.js +0 -0
  325. package/traits/edible/index.js.map +1 -0
  326. package/{dist-npm/traits → traits}/enterable/enterableTrait.d.ts +0 -0
  327. package/traits/enterable/enterableTrait.d.ts.map +1 -0
  328. package/{dist-npm/traits → traits}/enterable/enterableTrait.js +0 -0
  329. package/traits/enterable/enterableTrait.js.map +1 -0
  330. package/{dist-npm/traits → traits}/enterable/index.d.ts +0 -0
  331. package/traits/enterable/index.d.ts.map +1 -0
  332. package/{dist-npm/traits → traits}/enterable/index.js +0 -0
  333. package/traits/enterable/index.js.map +1 -0
  334. package/{dist-npm/traits → traits}/equipped/equippedTrait.d.ts +0 -0
  335. package/traits/equipped/equippedTrait.d.ts.map +1 -0
  336. package/{dist-npm/traits → traits}/equipped/equippedTrait.js +0 -0
  337. package/traits/equipped/equippedTrait.js.map +1 -0
  338. package/{dist-npm/traits → traits}/equipped/index.d.ts +0 -0
  339. package/traits/equipped/index.d.ts.map +1 -0
  340. package/{dist-npm/traits → traits}/equipped/index.js +0 -0
  341. package/traits/equipped/index.js.map +1 -0
  342. package/traits/exit/exitBehavior.d.ts +51 -0
  343. package/traits/exit/exitBehavior.d.ts.map +1 -0
  344. package/traits/exit/exitBehavior.js +231 -0
  345. package/traits/exit/exitBehavior.js.map +1 -0
  346. package/{dist-npm/traits → traits}/exit/exitTrait.d.ts +0 -0
  347. package/traits/exit/exitTrait.d.ts.map +1 -0
  348. package/{dist-npm/traits → traits}/exit/exitTrait.js +0 -0
  349. package/traits/exit/exitTrait.js.map +1 -0
  350. package/{dist-npm/traits → traits}/exit/index.d.ts +0 -0
  351. package/traits/exit/index.d.ts.map +1 -0
  352. package/{dist-npm/traits → traits}/exit/index.js +0 -0
  353. package/traits/exit/index.js.map +1 -0
  354. package/{dist-npm/traits → traits}/identity/identityBehavior.d.ts +0 -0
  355. package/traits/identity/identityBehavior.d.ts.map +1 -0
  356. package/{dist-npm/traits → traits}/identity/identityBehavior.js +0 -0
  357. package/traits/identity/identityBehavior.js.map +1 -0
  358. package/{dist-npm/traits → traits}/identity/identityTrait.d.ts +0 -0
  359. package/traits/identity/identityTrait.d.ts.map +1 -0
  360. package/{dist-npm/traits → traits}/identity/identityTrait.js +0 -0
  361. package/traits/identity/identityTrait.js.map +1 -0
  362. package/{dist-npm/traits → traits}/identity/index.d.ts +0 -0
  363. package/traits/identity/index.d.ts.map +1 -0
  364. package/{dist-npm/traits → traits}/identity/index.js +0 -0
  365. package/traits/identity/index.js.map +1 -0
  366. package/{dist-npm/traits → traits}/implementations.d.ts +0 -0
  367. package/traits/implementations.d.ts.map +1 -0
  368. package/{dist-npm/traits → traits}/implementations.js +0 -0
  369. package/traits/implementations.js.map +1 -0
  370. package/{dist-npm/traits → traits}/index.d.ts +0 -0
  371. package/traits/index.d.ts.map +1 -0
  372. package/{dist-npm/traits → traits}/index.js +0 -0
  373. package/traits/index.js.map +1 -0
  374. package/{dist-npm/traits → traits}/light-source/index.d.ts +0 -0
  375. package/traits/light-source/index.d.ts.map +1 -0
  376. package/{dist-npm/traits → traits}/light-source/index.js +0 -0
  377. package/traits/light-source/index.js.map +1 -0
  378. package/{dist-npm/traits → traits}/light-source/lightSourceBehavior.d.ts +0 -0
  379. package/traits/light-source/lightSourceBehavior.d.ts.map +1 -0
  380. package/{dist-npm/traits → traits}/light-source/lightSourceBehavior.js +0 -0
  381. package/traits/light-source/lightSourceBehavior.js.map +1 -0
  382. package/{dist-npm/traits → traits}/light-source/lightSourceTrait.d.ts +0 -0
  383. package/traits/light-source/lightSourceTrait.d.ts.map +1 -0
  384. package/{dist-npm/traits → traits}/light-source/lightSourceTrait.js +0 -0
  385. package/traits/light-source/lightSourceTrait.js.map +1 -0
  386. package/{dist-npm/traits → traits}/lockable/index.d.ts +0 -0
  387. package/traits/lockable/index.d.ts.map +1 -0
  388. package/{dist-npm/traits → traits}/lockable/index.js +0 -0
  389. package/traits/lockable/index.js.map +1 -0
  390. package/traits/lockable/lockableBehavior.d.ts +88 -0
  391. package/traits/lockable/lockableBehavior.d.ts.map +1 -0
  392. package/{dist-npm/traits → traits}/lockable/lockableBehavior.js +0 -0
  393. package/traits/lockable/lockableBehavior.js.map +1 -0
  394. package/traits/lockable/lockableTrait.d.ts +59 -0
  395. package/traits/lockable/lockableTrait.d.ts.map +1 -0
  396. package/{dist-npm/traits → traits}/lockable/lockableTrait.js +0 -0
  397. package/traits/lockable/lockableTrait.js.map +1 -0
  398. package/{dist-npm/traits → traits}/moveable-scenery/index.d.ts +0 -0
  399. package/traits/moveable-scenery/index.d.ts.map +1 -0
  400. package/{dist-npm/traits → traits}/moveable-scenery/index.js +0 -0
  401. package/traits/moveable-scenery/index.js.map +1 -0
  402. package/{dist-npm/traits → traits}/moveable-scenery/moveableSceneryTrait.d.ts +0 -0
  403. package/traits/moveable-scenery/moveableSceneryTrait.d.ts.map +1 -0
  404. package/{dist-npm/traits → traits}/moveable-scenery/moveableSceneryTrait.js +0 -0
  405. package/traits/moveable-scenery/moveableSceneryTrait.js.map +1 -0
  406. package/{dist-npm/traits → traits}/npc/index.d.ts +0 -0
  407. package/traits/npc/index.d.ts.map +1 -0
  408. package/{dist-npm/traits → traits}/npc/index.js +0 -0
  409. package/traits/npc/index.js.map +1 -0
  410. package/traits/npc/npcTrait.d.ts +128 -0
  411. package/traits/npc/npcTrait.d.ts.map +1 -0
  412. package/{dist-npm/traits → traits}/npc/npcTrait.js +0 -0
  413. package/traits/npc/npcTrait.js.map +1 -0
  414. package/{dist-npm/traits → traits}/openable/index.d.ts +0 -0
  415. package/traits/openable/index.d.ts.map +1 -0
  416. package/{dist-npm/traits → traits}/openable/index.js +0 -0
  417. package/traits/openable/index.js.map +1 -0
  418. package/{dist-npm/traits → traits}/openable/openableBehavior.d.ts +0 -0
  419. package/traits/openable/openableBehavior.d.ts.map +1 -0
  420. package/{dist-npm/traits → traits}/openable/openableBehavior.js +0 -0
  421. package/traits/openable/openableBehavior.js.map +1 -0
  422. package/{dist-npm/traits → traits}/openable/openableTrait.d.ts +0 -0
  423. package/traits/openable/openableTrait.d.ts.map +1 -0
  424. package/{dist-npm/traits → traits}/openable/openableTrait.js +0 -0
  425. package/traits/openable/openableTrait.js.map +1 -0
  426. package/{dist-npm/traits → traits}/pullable/index.d.ts +0 -0
  427. package/traits/pullable/index.d.ts.map +1 -0
  428. package/{dist-npm/traits → traits}/pullable/index.js +0 -0
  429. package/traits/pullable/index.js.map +1 -0
  430. package/{dist-npm/traits → traits}/pullable/pullableTrait.d.ts +0 -0
  431. package/traits/pullable/pullableTrait.d.ts.map +1 -0
  432. package/{dist-npm/traits → traits}/pullable/pullableTrait.js +0 -0
  433. package/traits/pullable/pullableTrait.js.map +1 -0
  434. package/{dist-npm/traits → traits}/pushable/index.d.ts +0 -0
  435. package/traits/pushable/index.d.ts.map +1 -0
  436. package/{dist-npm/traits → traits}/pushable/index.js +0 -0
  437. package/traits/pushable/index.js.map +1 -0
  438. package/{dist-npm/traits → traits}/pushable/pushableTrait.d.ts +0 -0
  439. package/traits/pushable/pushableTrait.d.ts.map +1 -0
  440. package/{dist-npm/traits → traits}/pushable/pushableTrait.js +0 -0
  441. package/traits/pushable/pushableTrait.js.map +1 -0
  442. package/{dist-npm/traits → traits}/readable/index.d.ts +0 -0
  443. package/traits/readable/index.d.ts.map +1 -0
  444. package/{dist-npm/traits → traits}/readable/index.js +0 -0
  445. package/traits/readable/index.js.map +1 -0
  446. package/traits/readable/readableBehavior.d.ts +42 -0
  447. package/traits/readable/readableBehavior.d.ts.map +1 -0
  448. package/traits/readable/readableBehavior.js +174 -0
  449. package/traits/readable/readableBehavior.js.map +1 -0
  450. package/{dist-npm/traits → traits}/readable/readableTrait.d.ts +0 -0
  451. package/traits/readable/readableTrait.d.ts.map +1 -0
  452. package/{dist-npm/traits → traits}/readable/readableTrait.js +0 -0
  453. package/traits/readable/readableTrait.js.map +1 -0
  454. package/{dist-npm/traits → traits}/register-all.d.ts +0 -0
  455. package/traits/register-all.d.ts.map +1 -0
  456. package/{dist-npm/traits → traits}/register-all.js +0 -0
  457. package/traits/register-all.js.map +1 -0
  458. package/{dist-npm/traits → traits}/room/index.d.ts +0 -0
  459. package/traits/room/index.d.ts.map +1 -0
  460. package/{dist-npm/traits → traits}/room/index.js +0 -0
  461. package/traits/room/index.js.map +1 -0
  462. package/traits/room/roomBehavior.d.ts +87 -0
  463. package/traits/room/roomBehavior.d.ts.map +1 -0
  464. package/{dist-npm/traits → traits}/room/roomBehavior.js +0 -0
  465. package/traits/room/roomBehavior.js.map +1 -0
  466. package/{dist-npm/traits → traits}/room/roomTrait.d.ts +0 -0
  467. package/traits/room/roomTrait.d.ts.map +1 -0
  468. package/{dist-npm/traits → traits}/room/roomTrait.js +0 -0
  469. package/traits/room/roomTrait.js.map +1 -0
  470. package/{dist-npm/traits → traits}/scenery/index.d.ts +0 -0
  471. package/traits/scenery/index.d.ts.map +1 -0
  472. package/{dist-npm/traits → traits}/scenery/index.js +0 -0
  473. package/traits/scenery/index.js.map +1 -0
  474. package/{dist-npm/traits → traits}/scenery/sceneryBehavior.d.ts +0 -0
  475. package/traits/scenery/sceneryBehavior.d.ts.map +1 -0
  476. package/{dist-npm/traits → traits}/scenery/sceneryBehavior.js +0 -0
  477. package/traits/scenery/sceneryBehavior.js.map +1 -0
  478. package/{dist-npm/traits → traits}/scenery/sceneryTrait.d.ts +0 -0
  479. package/traits/scenery/sceneryTrait.d.ts.map +1 -0
  480. package/{dist-npm/traits → traits}/scenery/sceneryTrait.js +0 -0
  481. package/traits/scenery/sceneryTrait.js.map +1 -0
  482. package/{dist-npm/traits → traits}/story-info/index.d.ts +0 -0
  483. package/traits/story-info/index.d.ts.map +1 -0
  484. package/{dist-npm/traits → traits}/story-info/index.js +0 -0
  485. package/traits/story-info/index.js.map +1 -0
  486. package/{dist-npm/traits → traits}/story-info/storyInfoTrait.d.ts +0 -0
  487. package/traits/story-info/storyInfoTrait.d.ts.map +1 -0
  488. package/{dist-npm/traits → traits}/story-info/storyInfoTrait.js +0 -0
  489. package/traits/story-info/storyInfoTrait.js.map +1 -0
  490. package/{dist-npm/traits → traits}/supporter/index.d.ts +0 -0
  491. package/traits/supporter/index.d.ts.map +1 -0
  492. package/{dist-npm/traits → traits}/supporter/index.js +0 -0
  493. package/traits/supporter/index.js.map +1 -0
  494. package/{dist-npm/traits → traits}/supporter/supporterBehavior.d.ts +0 -0
  495. package/traits/supporter/supporterBehavior.d.ts.map +1 -0
  496. package/{dist-npm/traits → traits}/supporter/supporterBehavior.js +0 -0
  497. package/traits/supporter/supporterBehavior.js.map +1 -0
  498. package/{dist-npm/traits → traits}/supporter/supporterTrait.d.ts +0 -0
  499. package/traits/supporter/supporterTrait.d.ts.map +1 -0
  500. package/{dist-npm/traits → traits}/supporter/supporterTrait.js +0 -0
  501. package/traits/supporter/supporterTrait.js.map +1 -0
  502. package/{dist-npm/traits → traits}/switchable/index.d.ts +0 -0
  503. package/traits/switchable/index.d.ts.map +1 -0
  504. package/{dist-npm/traits → traits}/switchable/index.js +0 -0
  505. package/traits/switchable/index.js.map +1 -0
  506. package/traits/switchable/switchableBehavior.d.ts +73 -0
  507. package/traits/switchable/switchableBehavior.d.ts.map +1 -0
  508. package/{dist-npm/traits → traits}/switchable/switchableBehavior.js +0 -0
  509. package/traits/switchable/switchableBehavior.js.map +1 -0
  510. package/{dist-npm/traits → traits}/switchable/switchableTrait.d.ts +0 -0
  511. package/traits/switchable/switchableTrait.d.ts.map +1 -0
  512. package/{dist-npm/traits → traits}/switchable/switchableTrait.js +0 -0
  513. package/traits/switchable/switchableTrait.js.map +1 -0
  514. package/{dist-npm/traits → traits}/trait-types.d.ts +0 -0
  515. package/traits/trait-types.d.ts.map +1 -0
  516. package/{dist-npm/traits → traits}/trait-types.js +0 -0
  517. package/traits/trait-types.js.map +1 -0
  518. package/{dist-npm/traits → traits}/trait.d.ts +0 -0
  519. package/traits/trait.d.ts.map +1 -0
  520. package/{dist-npm/traits → traits}/trait.js +0 -0
  521. package/traits/trait.js.map +1 -0
  522. package/{dist-npm/traits → traits}/vehicle/index.d.ts +0 -0
  523. package/traits/vehicle/index.d.ts.map +1 -0
  524. package/{dist-npm/traits → traits}/vehicle/index.js +0 -0
  525. package/traits/vehicle/index.js.map +1 -0
  526. package/{dist-npm/traits → traits}/vehicle/vehicleBehavior.d.ts +0 -0
  527. package/traits/vehicle/vehicleBehavior.d.ts.map +1 -0
  528. package/{dist-npm/traits → traits}/vehicle/vehicleBehavior.js +0 -0
  529. package/traits/vehicle/vehicleBehavior.js.map +1 -0
  530. package/{dist-npm/traits → traits}/vehicle/vehicleTrait.d.ts +0 -0
  531. package/traits/vehicle/vehicleTrait.d.ts.map +1 -0
  532. package/{dist-npm/traits → traits}/vehicle/vehicleTrait.js +0 -0
  533. package/traits/vehicle/vehicleTrait.js.map +1 -0
  534. package/{dist-npm/traits → traits}/weapon/index.d.ts +0 -0
  535. package/traits/weapon/index.d.ts.map +1 -0
  536. package/{dist-npm/traits → traits}/weapon/index.js +0 -0
  537. package/traits/weapon/index.js.map +1 -0
  538. package/{dist-npm/traits → traits}/weapon/weaponBehavior.d.ts +0 -0
  539. package/traits/weapon/weaponBehavior.d.ts.map +1 -0
  540. package/{dist-npm/traits → traits}/weapon/weaponBehavior.js +0 -0
  541. package/traits/weapon/weaponBehavior.js.map +1 -0
  542. package/{dist-npm/traits → traits}/weapon/weaponTrait.d.ts +0 -0
  543. package/traits/weapon/weaponTrait.d.ts.map +1 -0
  544. package/{dist-npm/traits → traits}/weapon/weaponTrait.js +0 -0
  545. package/traits/weapon/weaponTrait.js.map +1 -0
  546. package/{dist-npm/traits → traits}/wearable/index.d.ts +0 -0
  547. package/traits/wearable/index.d.ts.map +1 -0
  548. package/{dist-npm/traits → traits}/wearable/index.js +0 -0
  549. package/traits/wearable/index.js.map +1 -0
  550. package/{dist-npm/traits → traits}/wearable/wearableBehavior.d.ts +0 -0
  551. package/traits/wearable/wearableBehavior.d.ts.map +1 -0
  552. package/{dist-npm/traits → traits}/wearable/wearableBehavior.js +0 -0
  553. package/traits/wearable/wearableBehavior.js.map +1 -0
  554. package/{dist-npm/traits → traits}/wearable/wearableTrait.d.ts +0 -0
  555. package/traits/wearable/wearableTrait.d.ts.map +1 -0
  556. package/{dist-npm/traits → traits}/wearable/wearableTrait.js +0 -0
  557. package/traits/wearable/wearableTrait.js.map +1 -0
  558. package/utils/event-utils.d.ts +30 -0
  559. package/utils/event-utils.d.ts.map +1 -0
  560. package/utils/event-utils.js +33 -0
  561. package/utils/event-utils.js.map +1 -0
  562. package/{dist-npm/world → world}/AuthorModel.d.ts +0 -0
  563. package/world/AuthorModel.d.ts.map +1 -0
  564. package/{dist-npm/world → world}/AuthorModel.js +0 -0
  565. package/world/AuthorModel.js.map +1 -0
  566. package/{dist-npm/world → world}/SharedDataStore.d.ts +0 -0
  567. package/world/SharedDataStore.d.ts.map +1 -0
  568. package/{dist-npm/world → world}/SharedDataStore.js +0 -0
  569. package/world/SharedDataStore.js.map +1 -0
  570. package/{dist-npm/world → world}/SpatialIndex.d.ts +0 -0
  571. package/world/SpatialIndex.d.ts.map +1 -0
  572. package/{dist-npm/world → world}/SpatialIndex.js +0 -0
  573. package/world/SpatialIndex.js.map +1 -0
  574. package/{dist-npm/world → world}/VisibilityBehavior.d.ts +0 -0
  575. package/world/VisibilityBehavior.d.ts.map +1 -0
  576. package/{dist-npm/world → world}/VisibilityBehavior.js +0 -0
  577. package/world/VisibilityBehavior.js.map +1 -0
  578. package/world/WorldModel.d.ts +301 -0
  579. package/world/WorldModel.d.ts.map +1 -0
  580. package/world/WorldModel.js +1085 -0
  581. package/world/WorldModel.js.map +1 -0
  582. package/{dist-npm/world → world}/capabilities.d.ts +0 -0
  583. package/world/capabilities.d.ts.map +1 -0
  584. package/{dist-npm/world → world}/capabilities.js +0 -0
  585. package/world/capabilities.js.map +1 -0
  586. package/world/index.d.ts +7 -0
  587. package/world/index.d.ts.map +1 -0
  588. package/world/index.js +21 -0
  589. package/world/index.js.map +1 -0
  590. package/dist-npm/annotations/index.d.ts.map +0 -1
  591. package/dist-npm/annotations/index.js.map +0 -1
  592. package/dist-npm/annotations/types.d.ts.map +0 -1
  593. package/dist-npm/annotations/types.js.map +0 -1
  594. package/dist-npm/behaviors/attack.d.ts +0 -52
  595. package/dist-npm/behaviors/attack.d.ts.map +0 -1
  596. package/dist-npm/behaviors/attack.js.map +0 -1
  597. package/dist-npm/behaviors/behavior.d.ts.map +0 -1
  598. package/dist-npm/behaviors/behavior.js.map +0 -1
  599. package/dist-npm/behaviors/index.d.ts.map +0 -1
  600. package/dist-npm/behaviors/index.js.map +0 -1
  601. package/dist-npm/capabilities/action-interceptor.d.ts.map +0 -1
  602. package/dist-npm/capabilities/action-interceptor.js.map +0 -1
  603. package/dist-npm/capabilities/capability-behavior.d.ts.map +0 -1
  604. package/dist-npm/capabilities/capability-behavior.js.map +0 -1
  605. package/dist-npm/capabilities/capability-defaults.d.ts.map +0 -1
  606. package/dist-npm/capabilities/capability-defaults.js.map +0 -1
  607. package/dist-npm/capabilities/capability-helpers.d.ts.map +0 -1
  608. package/dist-npm/capabilities/capability-helpers.js.map +0 -1
  609. package/dist-npm/capabilities/capability-registry.d.ts.map +0 -1
  610. package/dist-npm/capabilities/capability-registry.js.map +0 -1
  611. package/dist-npm/capabilities/entity-builder.d.ts.map +0 -1
  612. package/dist-npm/capabilities/entity-builder.js.map +0 -1
  613. package/dist-npm/capabilities/index.d.ts.map +0 -1
  614. package/dist-npm/capabilities/index.js.map +0 -1
  615. package/dist-npm/capabilities/interceptor-helpers.d.ts.map +0 -1
  616. package/dist-npm/capabilities/interceptor-helpers.js.map +0 -1
  617. package/dist-npm/capabilities/interceptor-registry.d.ts.map +0 -1
  618. package/dist-npm/capabilities/interceptor-registry.js.map +0 -1
  619. package/dist-npm/capabilities/types.d.ts.map +0 -1
  620. package/dist-npm/capabilities/types.js.map +0 -1
  621. package/dist-npm/commands/command-types.d.ts.map +0 -1
  622. package/dist-npm/commands/command-types.js.map +0 -1
  623. package/dist-npm/commands/index.d.ts.map +0 -1
  624. package/dist-npm/commands/index.js.map +0 -1
  625. package/dist-npm/commands/parsed-command.d.ts.map +0 -1
  626. package/dist-npm/commands/parsed-command.js.map +0 -1
  627. package/dist-npm/commands/validated-command.d.ts.map +0 -1
  628. package/dist-npm/commands/validated-command.js.map +0 -1
  629. package/dist-npm/constants/action-failures.d.ts.map +0 -1
  630. package/dist-npm/constants/action-failures.js.map +0 -1
  631. package/dist-npm/constants/directions.d.ts.map +0 -1
  632. package/dist-npm/constants/directions.js.map +0 -1
  633. package/dist-npm/constants/if-events.d.ts +0 -5
  634. package/dist-npm/constants/if-events.d.ts.map +0 -1
  635. package/dist-npm/constants/if-events.js +0 -10
  636. package/dist-npm/constants/if-events.js.map +0 -1
  637. package/dist-npm/constants/index.d.ts.map +0 -1
  638. package/dist-npm/constants/index.js.map +0 -1
  639. package/dist-npm/entities/entity-store.d.ts.map +0 -1
  640. package/dist-npm/entities/entity-store.js.map +0 -1
  641. package/dist-npm/entities/entity-types.d.ts.map +0 -1
  642. package/dist-npm/entities/entity-types.js.map +0 -1
  643. package/dist-npm/entities/if-entity.d.ts +0 -314
  644. package/dist-npm/entities/if-entity.d.ts.map +0 -1
  645. package/dist-npm/entities/if-entity.js.map +0 -1
  646. package/dist-npm/entities/index.d.ts.map +0 -1
  647. package/dist-npm/entities/index.js.map +0 -1
  648. package/dist-npm/events/types.d.ts +0 -45
  649. package/dist-npm/events/types.d.ts.map +0 -1
  650. package/dist-npm/events/types.js.map +0 -1
  651. package/dist-npm/examples/event-handler-registration.d.ts.map +0 -1
  652. package/dist-npm/examples/event-handler-registration.js.map +0 -1
  653. package/dist-npm/extensions/base-extension.d.ts.map +0 -1
  654. package/dist-npm/extensions/base-extension.js.map +0 -1
  655. package/dist-npm/extensions/index.d.ts.map +0 -1
  656. package/dist-npm/extensions/index.js.map +0 -1
  657. package/dist-npm/extensions/loader.d.ts.map +0 -1
  658. package/dist-npm/extensions/loader.js.map +0 -1
  659. package/dist-npm/extensions/manager.d.ts.map +0 -1
  660. package/dist-npm/extensions/manager.js.map +0 -1
  661. package/dist-npm/extensions/registry.d.ts.map +0 -1
  662. package/dist-npm/extensions/registry.js.map +0 -1
  663. package/dist-npm/extensions/types.d.ts.map +0 -1
  664. package/dist-npm/extensions/types.js.map +0 -1
  665. package/dist-npm/index.d.ts.map +0 -1
  666. package/dist-npm/index.js.map +0 -1
  667. package/dist-npm/interfaces/command-executor.d.ts +0 -17
  668. package/dist-npm/interfaces/command-executor.d.ts.map +0 -1
  669. package/dist-npm/interfaces/command-executor.js.map +0 -1
  670. package/dist-npm/interfaces/command-processor.d.ts +0 -17
  671. package/dist-npm/interfaces/command-processor.d.ts.map +0 -1
  672. package/dist-npm/interfaces/command-processor.js.map +0 -1
  673. package/dist-npm/interfaces/command-validator.d.ts +0 -17
  674. package/dist-npm/interfaces/command-validator.d.ts.map +0 -1
  675. package/dist-npm/interfaces/command-validator.js.map +0 -1
  676. package/dist-npm/interfaces/index.d.ts.map +0 -1
  677. package/dist-npm/interfaces/index.js.map +0 -1
  678. package/dist-npm/interfaces/language-provider.d.ts.map +0 -1
  679. package/dist-npm/interfaces/language-provider.js.map +0 -1
  680. package/dist-npm/interfaces/parser.d.ts.map +0 -1
  681. package/dist-npm/interfaces/parser.js.map +0 -1
  682. package/dist-npm/scope/index.d.ts.map +0 -1
  683. package/dist-npm/scope/index.js.map +0 -1
  684. package/dist-npm/scope/scope-evaluator.d.ts.map +0 -1
  685. package/dist-npm/scope/scope-evaluator.js.map +0 -1
  686. package/dist-npm/scope/scope-registry.d.ts.map +0 -1
  687. package/dist-npm/scope/scope-registry.js.map +0 -1
  688. package/dist-npm/scope/scope-rule.d.ts.map +0 -1
  689. package/dist-npm/scope/scope-rule.js.map +0 -1
  690. package/dist-npm/services/ScopeService.d.ts.map +0 -1
  691. package/dist-npm/services/ScopeService.js.map +0 -1
  692. package/dist-npm/services/index.d.ts.map +0 -1
  693. package/dist-npm/services/index.js.map +0 -1
  694. package/dist-npm/test-structure.d.ts.map +0 -1
  695. package/dist-npm/test-structure.js.map +0 -1
  696. package/dist-npm/traits/actor/actorBehavior.d.ts +0 -121
  697. package/dist-npm/traits/actor/actorBehavior.d.ts.map +0 -1
  698. package/dist-npm/traits/actor/actorBehavior.js.map +0 -1
  699. package/dist-npm/traits/actor/actorTrait.d.ts.map +0 -1
  700. package/dist-npm/traits/actor/actorTrait.js.map +0 -1
  701. package/dist-npm/traits/actor/index.d.ts.map +0 -1
  702. package/dist-npm/traits/actor/index.js.map +0 -1
  703. package/dist-npm/traits/all-traits.d.ts.map +0 -1
  704. package/dist-npm/traits/all-traits.js.map +0 -1
  705. package/dist-npm/traits/attached/attachedTrait.d.ts.map +0 -1
  706. package/dist-npm/traits/attached/attachedTrait.js.map +0 -1
  707. package/dist-npm/traits/attached/index.d.ts.map +0 -1
  708. package/dist-npm/traits/attached/index.js.map +0 -1
  709. package/dist-npm/traits/breakable/breakableBehavior.d.ts +0 -43
  710. package/dist-npm/traits/breakable/breakableBehavior.d.ts.map +0 -1
  711. package/dist-npm/traits/breakable/breakableBehavior.js.map +0 -1
  712. package/dist-npm/traits/breakable/breakableTrait.d.ts.map +0 -1
  713. package/dist-npm/traits/breakable/breakableTrait.js.map +0 -1
  714. package/dist-npm/traits/breakable/index.d.ts.map +0 -1
  715. package/dist-npm/traits/breakable/index.js.map +0 -1
  716. package/dist-npm/traits/button/buttonTrait.d.ts.map +0 -1
  717. package/dist-npm/traits/button/buttonTrait.js.map +0 -1
  718. package/dist-npm/traits/button/index.d.ts.map +0 -1
  719. package/dist-npm/traits/button/index.js.map +0 -1
  720. package/dist-npm/traits/climbable/climbableBehavior.d.ts.map +0 -1
  721. package/dist-npm/traits/climbable/climbableBehavior.js.map +0 -1
  722. package/dist-npm/traits/climbable/climbableTrait.d.ts.map +0 -1
  723. package/dist-npm/traits/climbable/climbableTrait.js.map +0 -1
  724. package/dist-npm/traits/climbable/index.d.ts.map +0 -1
  725. package/dist-npm/traits/climbable/index.js.map +0 -1
  726. package/dist-npm/traits/clothing/clothingTrait.d.ts.map +0 -1
  727. package/dist-npm/traits/clothing/clothingTrait.js.map +0 -1
  728. package/dist-npm/traits/clothing/index.d.ts.map +0 -1
  729. package/dist-npm/traits/clothing/index.js.map +0 -1
  730. package/dist-npm/traits/combatant/combatantBehavior.d.ts +0 -70
  731. package/dist-npm/traits/combatant/combatantBehavior.d.ts.map +0 -1
  732. package/dist-npm/traits/combatant/combatantBehavior.js.map +0 -1
  733. package/dist-npm/traits/combatant/combatantTrait.d.ts.map +0 -1
  734. package/dist-npm/traits/combatant/combatantTrait.js.map +0 -1
  735. package/dist-npm/traits/combatant/index.d.ts.map +0 -1
  736. package/dist-npm/traits/combatant/index.js.map +0 -1
  737. package/dist-npm/traits/container/container-utils.d.ts.map +0 -1
  738. package/dist-npm/traits/container/container-utils.js.map +0 -1
  739. package/dist-npm/traits/container/containerBehavior.d.ts.map +0 -1
  740. package/dist-npm/traits/container/containerBehavior.js.map +0 -1
  741. package/dist-npm/traits/container/containerTrait.d.ts.map +0 -1
  742. package/dist-npm/traits/container/containerTrait.js.map +0 -1
  743. package/dist-npm/traits/container/index.d.ts.map +0 -1
  744. package/dist-npm/traits/container/index.js.map +0 -1
  745. package/dist-npm/traits/destructible/destructibleBehavior.d.ts +0 -57
  746. package/dist-npm/traits/destructible/destructibleBehavior.d.ts.map +0 -1
  747. package/dist-npm/traits/destructible/destructibleBehavior.js.map +0 -1
  748. package/dist-npm/traits/destructible/destructibleTrait.d.ts.map +0 -1
  749. package/dist-npm/traits/destructible/destructibleTrait.js.map +0 -1
  750. package/dist-npm/traits/destructible/index.d.ts.map +0 -1
  751. package/dist-npm/traits/destructible/index.js.map +0 -1
  752. package/dist-npm/traits/door/doorBehavior.d.ts.map +0 -1
  753. package/dist-npm/traits/door/doorBehavior.js.map +0 -1
  754. package/dist-npm/traits/door/doorTrait.d.ts.map +0 -1
  755. package/dist-npm/traits/door/doorTrait.js.map +0 -1
  756. package/dist-npm/traits/door/index.d.ts.map +0 -1
  757. package/dist-npm/traits/door/index.js.map +0 -1
  758. package/dist-npm/traits/edible/edibleBehavior.d.ts +0 -63
  759. package/dist-npm/traits/edible/edibleBehavior.d.ts.map +0 -1
  760. package/dist-npm/traits/edible/edibleBehavior.js +0 -157
  761. package/dist-npm/traits/edible/edibleBehavior.js.map +0 -1
  762. package/dist-npm/traits/edible/edibleTrait.d.ts.map +0 -1
  763. package/dist-npm/traits/edible/edibleTrait.js.map +0 -1
  764. package/dist-npm/traits/edible/index.d.ts.map +0 -1
  765. package/dist-npm/traits/edible/index.js.map +0 -1
  766. package/dist-npm/traits/enterable/enterableTrait.d.ts.map +0 -1
  767. package/dist-npm/traits/enterable/enterableTrait.js.map +0 -1
  768. package/dist-npm/traits/enterable/index.d.ts.map +0 -1
  769. package/dist-npm/traits/enterable/index.js.map +0 -1
  770. package/dist-npm/traits/equipped/equippedTrait.d.ts.map +0 -1
  771. package/dist-npm/traits/equipped/equippedTrait.js.map +0 -1
  772. package/dist-npm/traits/equipped/index.d.ts.map +0 -1
  773. package/dist-npm/traits/equipped/index.js.map +0 -1
  774. package/dist-npm/traits/exit/exitBehavior.d.ts +0 -51
  775. package/dist-npm/traits/exit/exitBehavior.d.ts.map +0 -1
  776. package/dist-npm/traits/exit/exitBehavior.js +0 -231
  777. package/dist-npm/traits/exit/exitBehavior.js.map +0 -1
  778. package/dist-npm/traits/exit/exitTrait.d.ts.map +0 -1
  779. package/dist-npm/traits/exit/exitTrait.js.map +0 -1
  780. package/dist-npm/traits/exit/index.d.ts.map +0 -1
  781. package/dist-npm/traits/exit/index.js.map +0 -1
  782. package/dist-npm/traits/identity/identityBehavior.d.ts.map +0 -1
  783. package/dist-npm/traits/identity/identityBehavior.js.map +0 -1
  784. package/dist-npm/traits/identity/identityTrait.d.ts.map +0 -1
  785. package/dist-npm/traits/identity/identityTrait.js.map +0 -1
  786. package/dist-npm/traits/identity/index.d.ts.map +0 -1
  787. package/dist-npm/traits/identity/index.js.map +0 -1
  788. package/dist-npm/traits/implementations.d.ts.map +0 -1
  789. package/dist-npm/traits/implementations.js.map +0 -1
  790. package/dist-npm/traits/index.d.ts.map +0 -1
  791. package/dist-npm/traits/index.js.map +0 -1
  792. package/dist-npm/traits/light-source/index.d.ts.map +0 -1
  793. package/dist-npm/traits/light-source/index.js.map +0 -1
  794. package/dist-npm/traits/light-source/lightSourceBehavior.d.ts.map +0 -1
  795. package/dist-npm/traits/light-source/lightSourceBehavior.js.map +0 -1
  796. package/dist-npm/traits/light-source/lightSourceTrait.d.ts.map +0 -1
  797. package/dist-npm/traits/light-source/lightSourceTrait.js.map +0 -1
  798. package/dist-npm/traits/lockable/index.d.ts.map +0 -1
  799. package/dist-npm/traits/lockable/index.js.map +0 -1
  800. package/dist-npm/traits/lockable/lockableBehavior.d.ts +0 -88
  801. package/dist-npm/traits/lockable/lockableBehavior.d.ts.map +0 -1
  802. package/dist-npm/traits/lockable/lockableBehavior.js.map +0 -1
  803. package/dist-npm/traits/lockable/lockableTrait.d.ts +0 -59
  804. package/dist-npm/traits/lockable/lockableTrait.d.ts.map +0 -1
  805. package/dist-npm/traits/lockable/lockableTrait.js.map +0 -1
  806. package/dist-npm/traits/moveable-scenery/index.d.ts.map +0 -1
  807. package/dist-npm/traits/moveable-scenery/index.js.map +0 -1
  808. package/dist-npm/traits/moveable-scenery/moveableSceneryTrait.d.ts.map +0 -1
  809. package/dist-npm/traits/moveable-scenery/moveableSceneryTrait.js.map +0 -1
  810. package/dist-npm/traits/npc/index.d.ts.map +0 -1
  811. package/dist-npm/traits/npc/index.js.map +0 -1
  812. package/dist-npm/traits/npc/npcTrait.d.ts +0 -128
  813. package/dist-npm/traits/npc/npcTrait.d.ts.map +0 -1
  814. package/dist-npm/traits/npc/npcTrait.js.map +0 -1
  815. package/dist-npm/traits/openable/index.d.ts.map +0 -1
  816. package/dist-npm/traits/openable/index.js.map +0 -1
  817. package/dist-npm/traits/openable/openableBehavior.d.ts.map +0 -1
  818. package/dist-npm/traits/openable/openableBehavior.js.map +0 -1
  819. package/dist-npm/traits/openable/openableTrait.d.ts.map +0 -1
  820. package/dist-npm/traits/openable/openableTrait.js.map +0 -1
  821. package/dist-npm/traits/pullable/index.d.ts.map +0 -1
  822. package/dist-npm/traits/pullable/index.js.map +0 -1
  823. package/dist-npm/traits/pullable/pullableTrait.d.ts.map +0 -1
  824. package/dist-npm/traits/pullable/pullableTrait.js.map +0 -1
  825. package/dist-npm/traits/pushable/index.d.ts.map +0 -1
  826. package/dist-npm/traits/pushable/index.js.map +0 -1
  827. package/dist-npm/traits/pushable/pushableTrait.d.ts.map +0 -1
  828. package/dist-npm/traits/pushable/pushableTrait.js.map +0 -1
  829. package/dist-npm/traits/readable/index.d.ts.map +0 -1
  830. package/dist-npm/traits/readable/index.js.map +0 -1
  831. package/dist-npm/traits/readable/readableBehavior.d.ts +0 -42
  832. package/dist-npm/traits/readable/readableBehavior.d.ts.map +0 -1
  833. package/dist-npm/traits/readable/readableBehavior.js +0 -174
  834. package/dist-npm/traits/readable/readableBehavior.js.map +0 -1
  835. package/dist-npm/traits/readable/readableTrait.d.ts.map +0 -1
  836. package/dist-npm/traits/readable/readableTrait.js.map +0 -1
  837. package/dist-npm/traits/register-all.d.ts.map +0 -1
  838. package/dist-npm/traits/register-all.js.map +0 -1
  839. package/dist-npm/traits/room/index.d.ts.map +0 -1
  840. package/dist-npm/traits/room/index.js.map +0 -1
  841. package/dist-npm/traits/room/roomBehavior.d.ts +0 -87
  842. package/dist-npm/traits/room/roomBehavior.d.ts.map +0 -1
  843. package/dist-npm/traits/room/roomBehavior.js.map +0 -1
  844. package/dist-npm/traits/room/roomTrait.d.ts.map +0 -1
  845. package/dist-npm/traits/room/roomTrait.js.map +0 -1
  846. package/dist-npm/traits/scenery/index.d.ts.map +0 -1
  847. package/dist-npm/traits/scenery/index.js.map +0 -1
  848. package/dist-npm/traits/scenery/sceneryBehavior.d.ts.map +0 -1
  849. package/dist-npm/traits/scenery/sceneryBehavior.js.map +0 -1
  850. package/dist-npm/traits/scenery/sceneryTrait.d.ts.map +0 -1
  851. package/dist-npm/traits/scenery/sceneryTrait.js.map +0 -1
  852. package/dist-npm/traits/story-info/index.d.ts.map +0 -1
  853. package/dist-npm/traits/story-info/index.js.map +0 -1
  854. package/dist-npm/traits/story-info/storyInfoTrait.d.ts.map +0 -1
  855. package/dist-npm/traits/story-info/storyInfoTrait.js.map +0 -1
  856. package/dist-npm/traits/supporter/index.d.ts.map +0 -1
  857. package/dist-npm/traits/supporter/index.js.map +0 -1
  858. package/dist-npm/traits/supporter/supporterBehavior.d.ts.map +0 -1
  859. package/dist-npm/traits/supporter/supporterBehavior.js.map +0 -1
  860. package/dist-npm/traits/supporter/supporterTrait.d.ts.map +0 -1
  861. package/dist-npm/traits/supporter/supporterTrait.js.map +0 -1
  862. package/dist-npm/traits/switchable/index.d.ts.map +0 -1
  863. package/dist-npm/traits/switchable/index.js.map +0 -1
  864. package/dist-npm/traits/switchable/switchableBehavior.d.ts +0 -73
  865. package/dist-npm/traits/switchable/switchableBehavior.d.ts.map +0 -1
  866. package/dist-npm/traits/switchable/switchableBehavior.js.map +0 -1
  867. package/dist-npm/traits/switchable/switchableTrait.d.ts.map +0 -1
  868. package/dist-npm/traits/switchable/switchableTrait.js.map +0 -1
  869. package/dist-npm/traits/trait-types.d.ts.map +0 -1
  870. package/dist-npm/traits/trait-types.js.map +0 -1
  871. package/dist-npm/traits/trait.d.ts.map +0 -1
  872. package/dist-npm/traits/trait.js.map +0 -1
  873. package/dist-npm/traits/vehicle/index.d.ts.map +0 -1
  874. package/dist-npm/traits/vehicle/index.js.map +0 -1
  875. package/dist-npm/traits/vehicle/vehicleBehavior.d.ts.map +0 -1
  876. package/dist-npm/traits/vehicle/vehicleBehavior.js.map +0 -1
  877. package/dist-npm/traits/vehicle/vehicleTrait.d.ts.map +0 -1
  878. package/dist-npm/traits/vehicle/vehicleTrait.js.map +0 -1
  879. package/dist-npm/traits/weapon/index.d.ts.map +0 -1
  880. package/dist-npm/traits/weapon/index.js.map +0 -1
  881. package/dist-npm/traits/weapon/weaponBehavior.d.ts.map +0 -1
  882. package/dist-npm/traits/weapon/weaponBehavior.js.map +0 -1
  883. package/dist-npm/traits/weapon/weaponTrait.d.ts.map +0 -1
  884. package/dist-npm/traits/weapon/weaponTrait.js.map +0 -1
  885. package/dist-npm/traits/wearable/index.d.ts.map +0 -1
  886. package/dist-npm/traits/wearable/index.js.map +0 -1
  887. package/dist-npm/traits/wearable/wearableBehavior.d.ts.map +0 -1
  888. package/dist-npm/traits/wearable/wearableBehavior.js.map +0 -1
  889. package/dist-npm/traits/wearable/wearableTrait.d.ts.map +0 -1
  890. package/dist-npm/traits/wearable/wearableTrait.js.map +0 -1
  891. package/dist-npm/utils/event-utils.d.ts +0 -30
  892. package/dist-npm/utils/event-utils.d.ts.map +0 -1
  893. package/dist-npm/utils/event-utils.js +0 -33
  894. package/dist-npm/utils/event-utils.js.map +0 -1
  895. package/dist-npm/world/AuthorModel.d.ts.map +0 -1
  896. package/dist-npm/world/AuthorModel.js.map +0 -1
  897. package/dist-npm/world/SharedDataStore.d.ts.map +0 -1
  898. package/dist-npm/world/SharedDataStore.js.map +0 -1
  899. package/dist-npm/world/SpatialIndex.d.ts.map +0 -1
  900. package/dist-npm/world/SpatialIndex.js.map +0 -1
  901. package/dist-npm/world/VisibilityBehavior.d.ts.map +0 -1
  902. package/dist-npm/world/VisibilityBehavior.js.map +0 -1
  903. package/dist-npm/world/WorldModel.d.ts +0 -301
  904. package/dist-npm/world/WorldModel.d.ts.map +0 -1
  905. package/dist-npm/world/WorldModel.js +0 -1085
  906. package/dist-npm/world/WorldModel.js.map +0 -1
  907. package/dist-npm/world/capabilities.d.ts.map +0 -1
  908. package/dist-npm/world/capabilities.js.map +0 -1
  909. package/dist-npm/world/index.d.ts +0 -7
  910. package/dist-npm/world/index.d.ts.map +0 -1
  911. package/dist-npm/world/index.js +0 -21
  912. package/dist-npm/world/index.js.map +0 -1
@@ -0,0 +1,1085 @@
1
+ "use strict";
2
+ // WorldModel.ts - Core world model interface and implementation for Sharpee IF Platform
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.WorldModel = void 0;
5
+ const if_entity_1 = require("../entities/if-entity");
6
+ const entity_types_1 = require("../entities/entity-types");
7
+ const trait_types_1 = require("../traits/trait-types");
8
+ const room_1 = require("../traits/room");
9
+ const roomBehavior_1 = require("../traits/room/roomBehavior");
10
+ const container_1 = require("../traits/container");
11
+ const supporter_1 = require("../traits/supporter");
12
+ const actor_1 = require("../traits/actor");
13
+ const door_1 = require("../traits/door");
14
+ const scenery_1 = require("../traits/scenery");
15
+ const identityTrait_1 = require("../traits/identity/identityTrait");
16
+ const openableTrait_1 = require("../traits/openable/openableTrait");
17
+ const lockableTrait_1 = require("../traits/lockable/lockableTrait");
18
+ const directions_1 = require("../constants/directions");
19
+ const SpatialIndex_1 = require("./SpatialIndex");
20
+ const VisibilityBehavior_1 = require("./VisibilityBehavior");
21
+ const container_utils_1 = require("../traits/container/container-utils");
22
+ const if_domain_1 = require("../src/index.js");
23
+ const scope_registry_1 = require("../scope/scope-registry");
24
+ const scope_evaluator_1 = require("../scope/scope-evaluator");
25
+ // Type prefixes for entity ID generation
26
+ const TYPE_PREFIXES = {
27
+ 'room': 'r',
28
+ 'door': 'd',
29
+ 'item': 'i',
30
+ 'actor': 'a',
31
+ 'container': 'c',
32
+ 'supporter': 's',
33
+ 'scenery': 'y',
34
+ 'exit': 'e',
35
+ 'object': 'o' // default
36
+ };
37
+ class WorldModel {
38
+ entities = new Map();
39
+ state = {};
40
+ playerId;
41
+ spatialIndex;
42
+ config;
43
+ capabilities = {};
44
+ // ID generation
45
+ idCounters = new Map();
46
+ // Event sourcing support
47
+ eventHandlers = new Map();
48
+ eventValidators = new Map();
49
+ eventPreviewers = new Map();
50
+ appliedEvents = [];
51
+ eventProcessorWiring = null;
52
+ maxEventHistory = 1000; // Configurable limit
53
+ // Event chaining support (ADR-094)
54
+ eventChains = new Map();
55
+ platformEvents;
56
+ // Scope system
57
+ scopeRegistry;
58
+ scopeEvaluator;
59
+ // Vocabulary system (ADR-082)
60
+ grammarVocabularyProvider;
61
+ constructor(config = {}, platformEvents) {
62
+ this.config = {
63
+ enableSpatialIndex: true,
64
+ maxDepth: 10,
65
+ strictMode: false,
66
+ ...config
67
+ };
68
+ this.spatialIndex = new SpatialIndex_1.SpatialIndex();
69
+ this.platformEvents = platformEvents;
70
+ // Initialize scope system
71
+ this.scopeRegistry = new scope_registry_1.ScopeRegistry();
72
+ this.scopeEvaluator = new scope_evaluator_1.ScopeEvaluator(this.scopeRegistry);
73
+ // Initialize vocabulary system (ADR-082)
74
+ this.grammarVocabularyProvider = new if_domain_1.GrammarVocabularyProvider();
75
+ // Register default scope rules
76
+ this.registerDefaultScopeRules();
77
+ }
78
+ // Platform event emission helper
79
+ emitPlatformEvent(type, data) {
80
+ if (this.platformEvents) {
81
+ this.platformEvents.addEvent({
82
+ id: `world_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`,
83
+ timestamp: Date.now(),
84
+ type: `platform.world.${type}`,
85
+ entities: {},
86
+ data: {
87
+ subsystem: 'world',
88
+ ...data
89
+ },
90
+ tags: ['platform', 'world', 'debug'],
91
+ priority: 0,
92
+ narrate: false
93
+ });
94
+ }
95
+ }
96
+ // Capability Management
97
+ registerCapability(name, registration = {}) {
98
+ if (this.capabilities[name]) {
99
+ if (this.config.strictMode) {
100
+ throw new Error(`Capability '${name}' is already registered`);
101
+ }
102
+ return;
103
+ }
104
+ // Initialize capability with schema and initial data
105
+ const initialData = {};
106
+ // Apply schema defaults
107
+ if (registration.schema) {
108
+ for (const [field, fieldDef] of Object.entries(registration.schema)) {
109
+ if (fieldDef.default !== undefined) {
110
+ initialData[field] = fieldDef.default;
111
+ }
112
+ }
113
+ }
114
+ // Override with provided initial data
115
+ if (registration.initialData) {
116
+ Object.assign(initialData, registration.initialData);
117
+ }
118
+ this.capabilities[name] = {
119
+ data: initialData,
120
+ schema: registration.schema
121
+ };
122
+ }
123
+ updateCapability(name, updates) {
124
+ const capability = this.capabilities[name];
125
+ if (!capability) {
126
+ if (this.config.strictMode) {
127
+ throw new Error(`Capability '${name}' is not registered`);
128
+ }
129
+ return;
130
+ }
131
+ // Validate updates against schema if present
132
+ if (capability.schema) {
133
+ for (const [field, value] of Object.entries(updates)) {
134
+ const fieldDef = capability.schema[field];
135
+ if (fieldDef) {
136
+ // Basic type validation
137
+ const actualType = Array.isArray(value) ? 'array' : typeof value;
138
+ if (actualType !== fieldDef.type && value !== null && value !== undefined) {
139
+ if (this.config.strictMode) {
140
+ throw new Error(`Invalid type for capability '${name}' field '${field}': expected ${fieldDef.type}, got ${actualType}`);
141
+ }
142
+ }
143
+ }
144
+ }
145
+ }
146
+ // Apply updates
147
+ Object.assign(capability.data, updates);
148
+ }
149
+ getCapability(name) {
150
+ return this.capabilities[name]?.data;
151
+ }
152
+ hasCapability(name) {
153
+ return name in this.capabilities;
154
+ }
155
+ // ID Generation
156
+ generateId(type) {
157
+ const prefix = TYPE_PREFIXES[type] || TYPE_PREFIXES['object'];
158
+ const counter = this.idCounters.get(prefix) || 0;
159
+ // Increment counter
160
+ const nextCounter = counter + 1;
161
+ // Check for overflow (base36 with 2 chars = 1296 max)
162
+ if (nextCounter > 1295) {
163
+ throw new Error(`ID overflow for type '${type}' (prefix '${prefix}'). Maximum 1296 entities per type.`);
164
+ }
165
+ this.idCounters.set(prefix, nextCounter);
166
+ // Convert to base36 and pad to 2 characters
167
+ const base36 = nextCounter.toString(36).padStart(2, '0');
168
+ return `${prefix}${base36}`;
169
+ }
170
+ // Entity Management
171
+ createEntity(displayName, type = 'object') {
172
+ // Validate entity type
173
+ if (!(0, entity_types_1.isEntityType)(type)) {
174
+ throw new Error(`Unknown entity type: '${type}'. Valid types are: ${Object.values(entity_types_1.EntityType).join(', ')}`);
175
+ }
176
+ // Generate ID based on type
177
+ const id = this.generateId(type);
178
+ const entity = new if_entity_1.IFEntity(id, type, {
179
+ attributes: {
180
+ displayName: displayName,
181
+ name: displayName, // For compatibility
182
+ entityType: type
183
+ }
184
+ });
185
+ // Add to entity map
186
+ this.entities.set(id, entity);
187
+ return entity;
188
+ }
189
+ /**
190
+ * Create an entity with type safety and automatic trait assignment
191
+ * @param type The entity type (from EntityType constants)
192
+ * @returns The created entity with appropriate default traits
193
+ */
194
+ createEntityWithTraits(type) {
195
+ const id = this.generateId(type);
196
+ const entity = new if_entity_1.IFEntity(id, type);
197
+ // Auto-add appropriate default trait based on type
198
+ switch (type) {
199
+ case entity_types_1.EntityType.ROOM:
200
+ entity.add(new room_1.RoomTrait({}));
201
+ break;
202
+ case entity_types_1.EntityType.CONTAINER:
203
+ entity.add(new container_1.ContainerTrait());
204
+ break;
205
+ case entity_types_1.EntityType.SUPPORTER:
206
+ entity.add(new supporter_1.SupporterTrait());
207
+ break;
208
+ case entity_types_1.EntityType.ACTOR:
209
+ entity.add(new actor_1.ActorTrait());
210
+ break;
211
+ case entity_types_1.EntityType.DOOR:
212
+ // Door trait requires room1 and room2 to be set
213
+ // These must be configured after creation when room IDs are known
214
+ break;
215
+ case entity_types_1.EntityType.SCENERY:
216
+ entity.add(new scenery_1.SceneryTrait());
217
+ break;
218
+ // ITEM, OBJECT, and EXIT don't need special traits by default
219
+ }
220
+ // Add to entity map
221
+ this.entities.set(id, entity);
222
+ return entity;
223
+ }
224
+ getEntity(id) {
225
+ return this.entities.get(id);
226
+ }
227
+ hasEntity(id) {
228
+ return this.entities.has(id);
229
+ }
230
+ removeEntity(id) {
231
+ const entity = this.entities.get(id);
232
+ if (!entity)
233
+ return false;
234
+ // Remove from spatial index
235
+ this.spatialIndex.remove(id);
236
+ // Remove from any containers
237
+ const location = this.getLocation(id);
238
+ if (location) {
239
+ this.moveEntity(id, null);
240
+ }
241
+ // Remove entity
242
+ return this.entities.delete(id);
243
+ }
244
+ getAllEntities() {
245
+ return Array.from(this.entities.values());
246
+ }
247
+ updateEntity(entityId, updater) {
248
+ const entity = this.getEntity(entityId);
249
+ if (!entity) {
250
+ if (this.config.strictMode) {
251
+ throw new Error(`Cannot update non-existent entity: ${entityId}`);
252
+ }
253
+ return;
254
+ }
255
+ // Call the updater - entity is mutable so changes happen in place
256
+ updater(entity);
257
+ // Future: Could emit change events here for reactive systems
258
+ // this.emitChange({ type: 'entity-updated', entityId });
259
+ }
260
+ // Spatial Management
261
+ getLocation(entityId) {
262
+ return this.spatialIndex.getParent(entityId);
263
+ }
264
+ getContents(containerId, options = {}) {
265
+ const contents = this.spatialIndex.getChildren(containerId);
266
+ let entities = contents
267
+ .map(id => this.getEntity(id))
268
+ .filter((e) => e !== undefined);
269
+ if (options.visibleOnly) {
270
+ // Filter to only visible entities
271
+ entities = entities.filter(e => {
272
+ const scenery = e.getTrait(trait_types_1.TraitType.SCENERY);
273
+ return !scenery || scenery.visible !== false;
274
+ });
275
+ }
276
+ if (!options.includeWorn) {
277
+ // Filter out worn items (check both WEARABLE and CLOTHING traits)
278
+ entities = entities.filter(e => {
279
+ const wearable = e.getTrait(trait_types_1.TraitType.WEARABLE);
280
+ const clothing = e.getTrait(trait_types_1.TraitType.CLOTHING);
281
+ const wornFromWearable = wearable && wearable.isWorn;
282
+ const wornFromClothing = clothing && clothing.isWorn;
283
+ return !(wornFromWearable || wornFromClothing);
284
+ });
285
+ }
286
+ return entities;
287
+ }
288
+ moveEntity(entityId, targetId) {
289
+ if (!this.canMoveEntity(entityId, targetId)) {
290
+ this.emitPlatformEvent('move_entity_failed', {
291
+ entityId,
292
+ targetId,
293
+ reason: 'cannot_move'
294
+ });
295
+ return false;
296
+ }
297
+ // Remove from current location
298
+ const currentLocation = this.getLocation(entityId);
299
+ if (currentLocation) {
300
+ this.spatialIndex.removeChild(currentLocation, entityId);
301
+ }
302
+ // Add to new location
303
+ if (targetId) {
304
+ this.spatialIndex.addChild(targetId, entityId);
305
+ }
306
+ // Emit platform event
307
+ this.emitPlatformEvent('entity_moved', {
308
+ entityId,
309
+ fromLocation: currentLocation,
310
+ toLocation: targetId
311
+ });
312
+ return true;
313
+ }
314
+ canMoveEntity(entityId, targetId) {
315
+ const entity = this.getEntity(entityId);
316
+ if (!entity)
317
+ return false;
318
+ // Can always remove from world
319
+ if (targetId === null)
320
+ return true;
321
+ const target = this.getEntity(targetId);
322
+ if (!target)
323
+ return false;
324
+ // Check for containment loops
325
+ if (this.wouldCreateLoop(entityId, targetId)) {
326
+ return false;
327
+ }
328
+ // Check if target can contain - using our new utility
329
+ if (!(0, container_utils_1.canContain)(target)) {
330
+ return false;
331
+ }
332
+ // Check container constraints
333
+ if (target.hasTrait(trait_types_1.TraitType.CONTAINER) && target.hasTrait(trait_types_1.TraitType.OPENABLE)) {
334
+ const openable = target.getTrait(trait_types_1.TraitType.OPENABLE);
335
+ if (openable && !openable.isOpen) {
336
+ return false;
337
+ }
338
+ }
339
+ return true;
340
+ }
341
+ getContainingRoom(entityId) {
342
+ let current = entityId;
343
+ let depth = 0;
344
+ while (current && depth < this.config.maxDepth) {
345
+ const parent = this.getLocation(current);
346
+ if (!parent)
347
+ return undefined;
348
+ const parentEntity = this.getEntity(parent);
349
+ if (parentEntity?.hasTrait(trait_types_1.TraitType.ROOM)) {
350
+ return parentEntity;
351
+ }
352
+ current = parent;
353
+ depth++;
354
+ }
355
+ return undefined;
356
+ }
357
+ getAllContents(entityId, options = {}) {
358
+ const result = [];
359
+ const visited = new Set();
360
+ const traverse = (id, depth = 0, isRoot = false) => {
361
+ if (visited.has(id) || depth > this.config.maxDepth)
362
+ return;
363
+ visited.add(id);
364
+ // For the root entity, use the provided options
365
+ // For recursive calls, always include worn items to get complete contents
366
+ const contentsOptions = isRoot ? {
367
+ visibleOnly: options.visibleOnly,
368
+ includeWorn: options.includeWorn
369
+ } : {
370
+ visibleOnly: options.visibleOnly,
371
+ includeWorn: true // Always include worn items when recursing
372
+ };
373
+ const contents = this.getContents(id, contentsOptions);
374
+ result.push(...contents);
375
+ if (options.recursive) {
376
+ contents.forEach(item => traverse(item.id, depth + 1, false));
377
+ }
378
+ };
379
+ traverse(entityId, 0, true);
380
+ return result;
381
+ }
382
+ // World State Management
383
+ getState() {
384
+ return { ...this.state };
385
+ }
386
+ setState(state) {
387
+ this.state = { ...state };
388
+ }
389
+ getStateValue(key) {
390
+ return this.state[key];
391
+ }
392
+ setStateValue(key, value) {
393
+ this.state[key] = value;
394
+ }
395
+ // Query Operations
396
+ findByTrait(traitType) {
397
+ return this.findWhere(e => e.hasTrait(traitType));
398
+ }
399
+ findByType(entityType) {
400
+ return this.findWhere(e => e.type === entityType);
401
+ }
402
+ findWhere(predicate) {
403
+ return Array.from(this.entities.values()).filter(predicate);
404
+ }
405
+ // Scope methods moved to end of class to use new scope system
406
+ // Relationship Queries
407
+ relationships = new Map();
408
+ getRelated(entityId, relationshipType) {
409
+ const entityRels = this.relationships.get(entityId);
410
+ if (!entityRels)
411
+ return [];
412
+ const related = entityRels.get(relationshipType);
413
+ return related ? Array.from(related) : [];
414
+ }
415
+ areRelated(entity1Id, entity2Id, relationshipType) {
416
+ const related = this.getRelated(entity1Id, relationshipType);
417
+ return related.includes(entity2Id);
418
+ }
419
+ addRelationship(entity1Id, entity2Id, relationshipType) {
420
+ // Ensure entities exist
421
+ if (!this.hasEntity(entity1Id) || !this.hasEntity(entity2Id)) {
422
+ if (this.config.strictMode) {
423
+ throw new Error('Cannot add relationship between non-existent entities');
424
+ }
425
+ return;
426
+ }
427
+ // Add forward relationship
428
+ if (!this.relationships.has(entity1Id)) {
429
+ this.relationships.set(entity1Id, new Map());
430
+ }
431
+ const entityRels = this.relationships.get(entity1Id);
432
+ if (!entityRels.has(relationshipType)) {
433
+ entityRels.set(relationshipType, new Set());
434
+ }
435
+ entityRels.get(relationshipType).add(entity2Id);
436
+ }
437
+ removeRelationship(entity1Id, entity2Id, relationshipType) {
438
+ const entityRels = this.relationships.get(entity1Id);
439
+ if (!entityRels)
440
+ return;
441
+ const related = entityRels.get(relationshipType);
442
+ if (related) {
443
+ related.delete(entity2Id);
444
+ if (related.size === 0) {
445
+ entityRels.delete(relationshipType);
446
+ }
447
+ }
448
+ if (entityRels.size === 0) {
449
+ this.relationships.delete(entity1Id);
450
+ }
451
+ }
452
+ // Utility Methods
453
+ getTotalWeight(entityId) {
454
+ const entity = this.getEntity(entityId);
455
+ if (!entity)
456
+ return 0;
457
+ let weight = entity.weight || 0;
458
+ // Add weight of all contents
459
+ const contents = this.getAllContents(entityId, { recursive: true });
460
+ for (const item of contents) {
461
+ weight += item.weight || 0;
462
+ }
463
+ return weight;
464
+ }
465
+ wouldCreateLoop(entityId, targetId) {
466
+ if (entityId === targetId)
467
+ return true;
468
+ let current = targetId;
469
+ const visited = new Set();
470
+ while (current) {
471
+ if (visited.has(current))
472
+ return false; // Already checked this path
473
+ if (current === entityId)
474
+ return true; // Found a loop
475
+ visited.add(current);
476
+ current = this.getLocation(current) || '';
477
+ }
478
+ return false;
479
+ }
480
+ findPath(fromRoomId, toRoomId) {
481
+ if (fromRoomId === toRoomId)
482
+ return [];
483
+ const fromRoom = this.getEntity(fromRoomId);
484
+ const toRoom = this.getEntity(toRoomId);
485
+ if (!fromRoom?.hasTrait(trait_types_1.TraitType.ROOM) || !toRoom?.hasTrait(trait_types_1.TraitType.ROOM)) {
486
+ return null;
487
+ }
488
+ // Simple BFS pathfinding
489
+ const queue = [{ roomId: fromRoomId, path: [] }];
490
+ const visited = new Set();
491
+ while (queue.length > 0) {
492
+ const { roomId, path } = queue.shift();
493
+ if (visited.has(roomId))
494
+ continue;
495
+ visited.add(roomId);
496
+ // Get exits from this room
497
+ const room = this.getEntity(roomId);
498
+ if (!room)
499
+ continue;
500
+ const exits = room.getTrait(trait_types_1.TraitType.ROOM)?.exits || {};
501
+ for (const [direction, exitInfo] of Object.entries(exits)) {
502
+ let targetRoom;
503
+ let pathElement;
504
+ if (typeof exitInfo === 'string') {
505
+ // Simple string - treat as direct room connection
506
+ targetRoom = exitInfo;
507
+ pathElement = exitInfo; // For now, use room ID as path element
508
+ }
509
+ else if (typeof exitInfo === 'object') {
510
+ // ExitInfo object
511
+ if (exitInfo.via) {
512
+ // Has a door/exit entity
513
+ const exitEntity = this.getEntity(exitInfo.via);
514
+ if (!exitEntity)
515
+ continue;
516
+ pathElement = exitInfo.via;
517
+ // Get destination based on entity type
518
+ if (exitEntity.hasTrait(trait_types_1.TraitType.DOOR)) {
519
+ const door = exitEntity.getTrait(trait_types_1.TraitType.DOOR);
520
+ targetRoom = door?.room1 === roomId ? door?.room2 : door?.room1;
521
+ }
522
+ else if (exitEntity.hasTrait(trait_types_1.TraitType.EXIT)) {
523
+ targetRoom = exitEntity.getTrait(trait_types_1.TraitType.EXIT)?.to;
524
+ }
525
+ else {
526
+ // Not a valid door/exit entity
527
+ continue;
528
+ }
529
+ }
530
+ else if (exitInfo.destination) {
531
+ // Direct room connection
532
+ targetRoom = exitInfo.destination;
533
+ pathElement = targetRoom; // Use room ID as path element
534
+ }
535
+ }
536
+ if (!targetRoom || !pathElement)
537
+ continue;
538
+ if (targetRoom === toRoomId) {
539
+ // Found the destination - return path
540
+ // For direct connections, return empty array (no doors to pass through)
541
+ if (pathElement === targetRoom && path.length === 0) {
542
+ return [];
543
+ }
544
+ return [...path, pathElement];
545
+ }
546
+ if (!visited.has(targetRoom)) {
547
+ // For direct connections, don't add room ID to path
548
+ const newPath = pathElement === targetRoom ? path : [...path, pathElement];
549
+ queue.push({ roomId: targetRoom, path: newPath });
550
+ }
551
+ }
552
+ }
553
+ return null;
554
+ }
555
+ getPlayer() {
556
+ return this.playerId ? this.getEntity(this.playerId) : undefined;
557
+ }
558
+ setPlayer(entityId) {
559
+ if (!this.hasEntity(entityId)) {
560
+ throw new Error(`Cannot set player to non-existent entity: ${entityId}`);
561
+ }
562
+ this.playerId = entityId;
563
+ }
564
+ // Persistence
565
+ toJSON() {
566
+ const data = {
567
+ entities: Array.from(this.entities.entries()).map(([id, entity]) => ({
568
+ id,
569
+ entity: entity.toJSON()
570
+ })),
571
+ state: this.state,
572
+ playerId: this.playerId,
573
+ spatialIndex: this.spatialIndex.toJSON(),
574
+ relationships: Array.from(this.relationships.entries()).map(([entityId, rels]) => ({
575
+ entityId,
576
+ relationships: Array.from(rels.entries()).map(([type, related]) => ({
577
+ type,
578
+ related: Array.from(related)
579
+ }))
580
+ })),
581
+ // Add ID system data
582
+ idCounters: Array.from(this.idCounters.entries()),
583
+ // Add capabilities
584
+ capabilities: Object.entries(this.capabilities).map(([name, cap]) => ({
585
+ name,
586
+ data: cap.data,
587
+ schema: cap.schema
588
+ }))
589
+ };
590
+ return JSON.stringify(data, null, 2);
591
+ }
592
+ loadJSON(json) {
593
+ const data = JSON.parse(json);
594
+ // Clear current state
595
+ this.clear();
596
+ // Restore entities
597
+ for (const { id, entity } of data.entities) {
598
+ const newEntity = if_entity_1.IFEntity.fromJSON(entity);
599
+ this.entities.set(id, newEntity);
600
+ }
601
+ // Restore state
602
+ this.state = data.state || {};
603
+ this.playerId = data.playerId;
604
+ // Restore spatial index
605
+ if (data.spatialIndex) {
606
+ this.spatialIndex.loadJSON(data.spatialIndex);
607
+ }
608
+ // Restore relationships
609
+ if (data.relationships) {
610
+ for (const { entityId, relationships } of data.relationships) {
611
+ const entityRels = new Map();
612
+ for (const { type, related } of relationships) {
613
+ entityRels.set(type, new Set(related));
614
+ }
615
+ this.relationships.set(entityId, entityRels);
616
+ }
617
+ }
618
+ // Restore ID system data
619
+ if (data.idCounters) {
620
+ this.idCounters = new Map(data.idCounters);
621
+ }
622
+ else {
623
+ // Rebuild ID counters from existing entities for backward compatibility
624
+ this.rebuildIdCounters();
625
+ }
626
+ // Restore capabilities
627
+ if (data.capabilities) {
628
+ for (const { name, data: capData, schema } of data.capabilities) {
629
+ this.capabilities[name] = {
630
+ data: capData,
631
+ schema
632
+ };
633
+ }
634
+ }
635
+ }
636
+ clear() {
637
+ this.entities.clear();
638
+ this.state = {};
639
+ this.playerId = undefined;
640
+ this.spatialIndex.clear();
641
+ this.relationships.clear();
642
+ this.appliedEvents = [];
643
+ this.idCounters.clear();
644
+ this.capabilities = {};
645
+ this.grammarVocabularyProvider.clear();
646
+ this.eventChains.clear();
647
+ }
648
+ // Event Sourcing Implementation
649
+ registerEventHandler(eventType, handler) {
650
+ this.eventHandlers.set(eventType, handler);
651
+ // If already connected to EventProcessor, wire this handler immediately (ADR-086)
652
+ if (this.eventProcessorWiring) {
653
+ this.wireHandlerToProcessor(eventType, handler);
654
+ }
655
+ }
656
+ unregisterEventHandler(eventType) {
657
+ this.eventHandlers.delete(eventType);
658
+ // Note: We don't unregister from EventProcessor as it doesn't support removal by type
659
+ // Handlers will still be called but won't find the handler in eventHandlers
660
+ }
661
+ registerEventValidator(eventType, validator) {
662
+ this.eventValidators.set(eventType, validator);
663
+ }
664
+ registerEventPreviewer(eventType, previewer) {
665
+ this.eventPreviewers.set(eventType, previewer);
666
+ }
667
+ /**
668
+ * Connect this WorldModel to the engine's EventProcessor (ADR-086).
669
+ * Wires all existing handlers and chains, and enables automatic wiring for future ones.
670
+ */
671
+ connectEventProcessor(wiring) {
672
+ this.eventProcessorWiring = wiring;
673
+ // Wire all existing handlers
674
+ for (const [eventType, handler] of this.eventHandlers) {
675
+ this.wireHandlerToProcessor(eventType, handler);
676
+ }
677
+ // Wire all existing chains (ADR-094)
678
+ for (const triggerType of this.eventChains.keys()) {
679
+ this.wireChainToProcessor(triggerType);
680
+ }
681
+ }
682
+ /**
683
+ * Adapt a WorldModel handler to EventProcessor signature and register it.
684
+ */
685
+ wireHandlerToProcessor(eventType, handler) {
686
+ if (!this.eventProcessorWiring)
687
+ return;
688
+ // Adapt the handler: WorldModel handlers return void, EventProcessor expects Effect[]
689
+ const adaptedHandler = (event) => {
690
+ handler(event, this);
691
+ return [];
692
+ };
693
+ this.eventProcessorWiring.registerHandler(eventType, adaptedHandler);
694
+ }
695
+ /**
696
+ * Register an event chain handler (ADR-094).
697
+ * Chain handlers produce new events when a trigger event occurs.
698
+ */
699
+ chainEvent(triggerType, handler, options = {}) {
700
+ const { mode = 'cascade', key, priority = 100 } = options;
701
+ const registration = { handler, key, priority };
702
+ if (!this.eventChains.has(triggerType)) {
703
+ this.eventChains.set(triggerType, []);
704
+ }
705
+ const chains = this.eventChains.get(triggerType);
706
+ if (mode === 'override') {
707
+ // Replace all existing chains
708
+ this.eventChains.set(triggerType, [registration]);
709
+ }
710
+ else if (key) {
711
+ // Replace chain with same key, or add
712
+ const existingIndex = chains.findIndex(c => c.key === key);
713
+ if (existingIndex >= 0) {
714
+ chains[existingIndex] = registration;
715
+ }
716
+ else {
717
+ chains.push(registration);
718
+ }
719
+ }
720
+ else {
721
+ // Cascade - just add
722
+ chains.push(registration);
723
+ }
724
+ // Sort by priority (lower = earlier)
725
+ chains.sort((a, b) => a.priority - b.priority);
726
+ // Wire to EventProcessor if connected
727
+ if (this.eventProcessorWiring) {
728
+ this.wireChainToProcessor(triggerType);
729
+ }
730
+ }
731
+ /**
732
+ * Wire chains for a trigger type to the EventProcessor.
733
+ * Chain handlers return events to be emitted.
734
+ */
735
+ wireChainToProcessor(triggerType) {
736
+ if (!this.eventProcessorWiring)
737
+ return;
738
+ // Register a handler that invokes all chains and returns EmitEffect objects
739
+ // The event processor expects Effect[] not ISemanticEvent[]
740
+ this.eventProcessorWiring.registerHandler(triggerType, (event) => {
741
+ const chainedEvents = this.executeChains(triggerType, event);
742
+ // Wrap each event as an EmitEffect
743
+ return chainedEvents.map(e => ({ type: 'emit', event: e }));
744
+ });
745
+ }
746
+ /**
747
+ * Execute all chains for a trigger type and collect their events.
748
+ */
749
+ executeChains(triggerType, event) {
750
+ const chains = this.eventChains.get(triggerType) || [];
751
+ const results = [];
752
+ // Get chain metadata from trigger event's data (ADR-094)
753
+ const triggerData = (event.data || {});
754
+ const currentDepth = triggerData._chainDepth || 0;
755
+ const transactionId = triggerData._transactionId;
756
+ for (const chain of chains) {
757
+ const chainedEvents = chain.handler(event, this);
758
+ if (chainedEvents) {
759
+ const eventsArray = Array.isArray(chainedEvents) ? chainedEvents : [chainedEvents];
760
+ // Add chain metadata to each event
761
+ for (const chainedEvent of eventsArray) {
762
+ const newDepth = currentDepth + 1;
763
+ // Safety: prevent infinite loops (max depth 10)
764
+ if (newDepth > 10) {
765
+ console.warn(`Chain depth exceeded for ${chainedEvent.type}, skipping`);
766
+ continue;
767
+ }
768
+ // Ensure the event has required fields and add chain metadata to data
769
+ const existingData = (chainedEvent.data || {});
770
+ const enrichedEvent = {
771
+ id: chainedEvent.id || `chain-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`,
772
+ type: chainedEvent.type,
773
+ timestamp: chainedEvent.timestamp || Date.now(),
774
+ entities: chainedEvent.entities || {},
775
+ data: {
776
+ ...existingData,
777
+ _chainedFrom: event.type,
778
+ _chainSourceId: event.id,
779
+ _chainDepth: newDepth,
780
+ // Pass through transactionId from trigger event (ADR-094)
781
+ // Engine assigns this at action start; chained events inherit it
782
+ ...(transactionId ? { _transactionId: transactionId } : {})
783
+ }
784
+ };
785
+ results.push(enrichedEvent);
786
+ }
787
+ }
788
+ }
789
+ return results;
790
+ }
791
+ applyEvent(event) {
792
+ // First validate if we can apply this event
793
+ if (!this.canApplyEvent(event)) {
794
+ throw new Error(`Cannot apply event of type '${event.type}': validation failed`);
795
+ }
796
+ // Look up handler for this event type
797
+ const handler = this.eventHandlers.get(event.type);
798
+ if (!handler) {
799
+ // No handler registered - event is recorded but has no effect
800
+ // Silent when no handler - this is a valid use case
801
+ }
802
+ else {
803
+ // Apply the event through the handler
804
+ handler(event, this);
805
+ }
806
+ // Record the event in history
807
+ this.appliedEvents.push(event);
808
+ // Trim history if it exceeds the limit
809
+ if (this.appliedEvents.length > this.maxEventHistory) {
810
+ this.appliedEvents = this.appliedEvents.slice(-this.maxEventHistory);
811
+ }
812
+ }
813
+ canApplyEvent(event) {
814
+ // Check if there's a validator for this event type
815
+ const validator = this.eventValidators.get(event.type);
816
+ // If no validator registered, assume event is valid
817
+ if (!validator) {
818
+ return true;
819
+ }
820
+ // Run the validator
821
+ return validator(event, this);
822
+ }
823
+ previewEvent(event) {
824
+ // Check if there's a previewer for this event type
825
+ const previewer = this.eventPreviewers.get(event.type);
826
+ // If no previewer registered, return empty array
827
+ if (!previewer) {
828
+ return [];
829
+ }
830
+ // Run the previewer
831
+ return previewer(event, this);
832
+ }
833
+ getAppliedEvents() {
834
+ return [...this.appliedEvents];
835
+ }
836
+ getEventsSince(timestamp) {
837
+ return this.appliedEvents.filter(event => event.timestamp > timestamp);
838
+ }
839
+ clearEventHistory() {
840
+ this.appliedEvents = [];
841
+ }
842
+ // Rebuild ID counters by analyzing existing entities
843
+ rebuildIdCounters() {
844
+ // Clear counters
845
+ this.idCounters.clear();
846
+ // Find the highest ID for each prefix
847
+ for (const entity of this.entities.values()) {
848
+ const id = entity.id;
849
+ if (id.length >= 3) {
850
+ const prefix = id[0];
851
+ const numPart = id.substring(1);
852
+ // Parse the numeric part (base36)
853
+ const num = parseInt(numPart, 36);
854
+ if (!isNaN(num)) {
855
+ const currentMax = this.idCounters.get(prefix) || 0;
856
+ if (num > currentMax) {
857
+ this.idCounters.set(prefix, num);
858
+ }
859
+ }
860
+ }
861
+ }
862
+ }
863
+ // Get the data store for sharing with AuthorModel
864
+ getDataStore() {
865
+ // Return a reference to the WorldModel's internal state
866
+ // AuthorModel will share these same objects
867
+ return {
868
+ entities: this.entities,
869
+ spatialIndex: this.spatialIndex,
870
+ state: this.state,
871
+ playerId: this.playerId,
872
+ relationships: this.relationships,
873
+ idCounters: this.idCounters,
874
+ capabilities: this.capabilities
875
+ };
876
+ }
877
+ // Scope Management Methods
878
+ getScopeRegistry() {
879
+ return this.scopeRegistry;
880
+ }
881
+ // Vocabulary Management (ADR-082)
882
+ getGrammarVocabularyProvider() {
883
+ return this.grammarVocabularyProvider;
884
+ }
885
+ addScopeRule(rule) {
886
+ this.scopeRegistry.addRule(rule);
887
+ this.emitPlatformEvent('scope_rule_added', {
888
+ ruleId: rule.id,
889
+ fromLocations: rule.fromLocations,
890
+ forActions: rule.forActions
891
+ });
892
+ }
893
+ removeScopeRule(ruleId) {
894
+ const removed = this.scopeRegistry.removeRule(ruleId);
895
+ if (removed) {
896
+ this.emitPlatformEvent('scope_rule_removed', { ruleId });
897
+ }
898
+ return removed;
899
+ }
900
+ evaluateScope(actorId, actionId) {
901
+ const actor = this.getEntity(actorId);
902
+ if (!actor) {
903
+ console.warn('evaluateScope: No actor found for ID:', actorId);
904
+ return [];
905
+ }
906
+ const currentLocation = this.getLocation(actorId);
907
+ if (!currentLocation) {
908
+ console.warn('evaluateScope: No location found for actor:', actorId);
909
+ return [];
910
+ }
911
+ const context = {
912
+ world: this,
913
+ actorId,
914
+ actionId,
915
+ currentLocation
916
+ };
917
+ const result = this.scopeEvaluator.evaluate(context);
918
+ return Array.from(result.entityIds);
919
+ }
920
+ /**
921
+ * Register default scope rules for standard visibility
922
+ */
923
+ registerDefaultScopeRules() {
924
+ // Basic visibility rule - entities in same room
925
+ this.addScopeRule({
926
+ id: 'default_room_visibility',
927
+ fromLocations: '*',
928
+ includeEntities: (context) => {
929
+ const room = this.getEntity(context.currentLocation);
930
+ if (!room) {
931
+ console.warn('No room found for location:', context.currentLocation);
932
+ return [];
933
+ }
934
+ // Get all entities in the room
935
+ const contents = this.getContents(context.currentLocation);
936
+ const entityIds = contents.map(e => e.id);
937
+ // Add the room itself
938
+ entityIds.push(context.currentLocation);
939
+ // Add nested contents (in containers, on supporters)
940
+ for (const entity of contents) {
941
+ const nested = this.getAllContents(entity.id);
942
+ entityIds.push(...nested.map(e => e.id));
943
+ }
944
+ return entityIds;
945
+ },
946
+ priority: 50,
947
+ source: 'core'
948
+ });
949
+ // Carried items are always in scope
950
+ this.addScopeRule({
951
+ id: 'default_inventory_visibility',
952
+ fromLocations: '*',
953
+ includeEntities: (context) => {
954
+ const carried = this.getContents(context.actorId);
955
+ const entityIds = carried.map(e => e.id);
956
+ // Add nested contents of carried items
957
+ for (const entity of carried) {
958
+ const nested = this.getAllContents(entity.id);
959
+ entityIds.push(...nested.map(e => e.id));
960
+ }
961
+ return entityIds;
962
+ },
963
+ priority: 100,
964
+ source: 'core'
965
+ });
966
+ }
967
+ /**
968
+ * Get physically visible entities using VisibilityBehavior (line-of-sight)
969
+ *
970
+ * Returns entities that can actually be seen by the observer based on:
971
+ * - Physical location (must be in same room)
972
+ * - Container state (can't see inside closed opaque containers)
973
+ * - Lighting conditions (limited visibility in darkness)
974
+ * - Scenery visibility flags
975
+ *
976
+ * This is for perception and display purposes. For command resolution,
977
+ * use getInScope() instead which includes entities that can be referenced
978
+ * even if not visible.
979
+ *
980
+ * @param observerId - The entity doing the observing
981
+ * @returns Array of entities that are physically visible
982
+ */
983
+ getVisible(observerId) {
984
+ const observer = this.getEntity(observerId);
985
+ if (!observer)
986
+ return [];
987
+ return VisibilityBehavior_1.VisibilityBehavior.getVisible(observer, this);
988
+ }
989
+ /**
990
+ * Get entities in scope for command resolution using the scope system
991
+ *
992
+ * Returns entities that can be referenced in commands, including:
993
+ * - All entities in the current room
994
+ * - Items in containers (even closed ones)
995
+ * - Carried items and their contents
996
+ * - Entities made available by scope rules (e.g., through windows)
997
+ *
998
+ * This is for parser/command resolution. For physical visibility,
999
+ * use getVisible() instead.
1000
+ *
1001
+ * @param observerId - The entity whose scope to evaluate
1002
+ * @returns Array of entities that can be referenced in commands
1003
+ */
1004
+ getInScope(observerId) {
1005
+ const entityIds = this.evaluateScope(observerId);
1006
+ return entityIds
1007
+ .map(id => this.getEntity(id))
1008
+ .filter((e) => e !== undefined);
1009
+ }
1010
+ /**
1011
+ * Check if observer can physically see target (line-of-sight)
1012
+ *
1013
+ * Uses VisibilityBehavior to determine if target is visible based on:
1014
+ * - Physical location
1015
+ * - Container state
1016
+ * - Lighting conditions
1017
+ *
1018
+ * This is for perception checks. To check if an entity can be
1019
+ * referenced in commands, check if it's in getInScope() instead.
1020
+ *
1021
+ * @param observerId - The entity doing the observing
1022
+ * @param targetId - The entity being observed
1023
+ * @returns true if observer can see target
1024
+ */
1025
+ canSee(observerId, targetId) {
1026
+ const observer = this.getEntity(observerId);
1027
+ const target = this.getEntity(targetId);
1028
+ if (!observer || !target)
1029
+ return false;
1030
+ return VisibilityBehavior_1.VisibilityBehavior.canSee(observer, target, this);
1031
+ }
1032
+ // ========== Convenience Creators ==========
1033
+ /**
1034
+ * Create a bidirectional connection between two rooms.
1035
+ * Sets exits in both directions (e.g. NORTH on room1, SOUTH on room2).
1036
+ */
1037
+ connectRooms(room1Id, room2Id, direction) {
1038
+ const room1 = this.getEntity(room1Id);
1039
+ const room2 = this.getEntity(room2Id);
1040
+ if (!room1 || !room2) {
1041
+ throw new Error(`connectRooms: both rooms must exist (${room1Id}, ${room2Id})`);
1042
+ }
1043
+ const opposite = (0, directions_1.getOppositeDirection)(direction);
1044
+ roomBehavior_1.RoomBehavior.setExit(room1, direction, room2Id);
1045
+ roomBehavior_1.RoomBehavior.setExit(room2, opposite, room1Id);
1046
+ }
1047
+ /**
1048
+ * Create a door entity and wire it into both rooms' exit data.
1049
+ * The door is placed in room1 spatially (for scope resolution).
1050
+ */
1051
+ createDoor(displayName, opts) {
1052
+ const room1 = this.getEntity(opts.room1Id);
1053
+ const room2 = this.getEntity(opts.room2Id);
1054
+ if (!room1 || !room2) {
1055
+ throw new Error(`createDoor: both rooms must exist (${opts.room1Id}, ${opts.room2Id})`);
1056
+ }
1057
+ const door = this.createEntity(displayName, entity_types_1.EntityType.DOOR);
1058
+ door.add(new identityTrait_1.IdentityTrait({
1059
+ name: displayName,
1060
+ aliases: opts.aliases,
1061
+ description: opts.description,
1062
+ }));
1063
+ door.add(new door_1.DoorTrait({
1064
+ room1: opts.room1Id,
1065
+ room2: opts.room2Id,
1066
+ }));
1067
+ door.add(new scenery_1.SceneryTrait());
1068
+ door.add(new openableTrait_1.OpenableTrait({ isOpen: opts.isOpen ?? false }));
1069
+ if (opts.isLocked !== undefined || opts.keyId) {
1070
+ door.add(new lockableTrait_1.LockableTrait({
1071
+ isLocked: opts.isLocked ?? true,
1072
+ ...(opts.keyId ? { requiredKey: opts.keyId } : {}),
1073
+ }));
1074
+ }
1075
+ // Wire exits through the door
1076
+ const opposite = (0, directions_1.getOppositeDirection)(opts.direction);
1077
+ roomBehavior_1.RoomBehavior.setExit(room1, opts.direction, opts.room2Id, door.id);
1078
+ roomBehavior_1.RoomBehavior.setExit(room2, opposite, opts.room1Id, door.id);
1079
+ // Place door in room1 for scope resolution
1080
+ this.moveEntity(door.id, opts.room1Id);
1081
+ return door;
1082
+ }
1083
+ }
1084
+ exports.WorldModel = WorldModel;
1085
+ //# sourceMappingURL=WorldModel.js.map