@sharpee/world-model 3.0.0 → 3.3.0

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 (631) hide show
  1. package/annotations/index.d.ts +1 -1
  2. package/annotations/index.d.ts.map +1 -1
  3. package/annotations/index.js +1 -1
  4. package/annotations/index.js.map +1 -1
  5. package/behaviors/attack.d.ts +21 -4
  6. package/behaviors/attack.d.ts.map +1 -1
  7. package/behaviors/attack.js +37 -33
  8. package/behaviors/attack.js.map +1 -1
  9. package/behaviors/behavior.d.ts +3 -3
  10. package/behaviors/behavior.d.ts.map +1 -1
  11. package/behaviors/index.d.ts +21 -20
  12. package/behaviors/index.d.ts.map +1 -1
  13. package/behaviors/index.js +35 -32
  14. package/behaviors/index.js.map +1 -1
  15. package/capabilities/action-interceptor.d.ts +96 -9
  16. package/capabilities/action-interceptor.d.ts.map +1 -1
  17. package/capabilities/action-interceptor.js +59 -2
  18. package/capabilities/action-interceptor.js.map +1 -1
  19. package/capabilities/capability-behavior.d.ts +3 -3
  20. package/capabilities/capability-behavior.d.ts.map +1 -1
  21. package/capabilities/capability-binding.d.ts +3 -3
  22. package/capabilities/capability-binding.d.ts.map +1 -1
  23. package/capabilities/capability-helpers.d.ts +2 -2
  24. package/capabilities/capability-helpers.d.ts.map +1 -1
  25. package/capabilities/entity-builder.d.ts +2 -2
  26. package/capabilities/entity-builder.d.ts.map +1 -1
  27. package/capabilities/index.d.ts +9 -9
  28. package/capabilities/index.d.ts.map +1 -1
  29. package/capabilities/index.js +27 -26
  30. package/capabilities/index.js.map +1 -1
  31. package/capabilities/interceptor-binding.d.ts +2 -2
  32. package/capabilities/interceptor-binding.d.ts.map +1 -1
  33. package/capabilities/interceptor-helpers.d.ts +2 -2
  34. package/capabilities/interceptor-helpers.d.ts.map +1 -1
  35. package/commands/command-types.d.ts +2 -2
  36. package/commands/command-types.d.ts.map +1 -1
  37. package/commands/index.d.ts +3 -3
  38. package/commands/index.d.ts.map +1 -1
  39. package/commands/index.js +3 -3
  40. package/commands/index.js.map +1 -1
  41. package/commands/parsed-command.d.ts +13 -0
  42. package/commands/parsed-command.d.ts.map +1 -1
  43. package/commands/validated-command.d.ts +16 -2
  44. package/commands/validated-command.d.ts.map +1 -1
  45. package/constants/index.d.ts +3 -3
  46. package/constants/index.d.ts.map +1 -1
  47. package/constants/index.js +3 -3
  48. package/constants/index.js.map +1 -1
  49. package/entities/entity-store.d.ts +1 -1
  50. package/entities/entity-store.d.ts.map +1 -1
  51. package/entities/entity-store.js +2 -2
  52. package/entities/entity-store.js.map +1 -1
  53. package/entities/if-entity.d.ts +3 -3
  54. package/entities/if-entity.d.ts.map +1 -1
  55. package/entities/if-entity.js +38 -34
  56. package/entities/if-entity.js.map +1 -1
  57. package/entities/index.d.ts +6 -6
  58. package/entities/index.d.ts.map +1 -1
  59. package/entities/index.js +10 -10
  60. package/entities/index.js.map +1 -1
  61. package/entities/trait-rehydrator.d.ts +43 -0
  62. package/entities/trait-rehydrator.d.ts.map +1 -0
  63. package/entities/trait-rehydrator.js +45 -0
  64. package/entities/trait-rehydrator.js.map +1 -0
  65. package/entities/wall-entity.d.ts +2 -2
  66. package/entities/wall-entity.d.ts.map +1 -1
  67. package/entities/wall-entity.js +2 -2
  68. package/entities/wall-entity.js.map +1 -1
  69. package/examples/event-handler-registration.d.ts +1 -1
  70. package/examples/event-handler-registration.d.ts.map +1 -1
  71. package/examples/event-handler-registration.js +24 -24
  72. package/examples/event-handler-registration.js.map +1 -1
  73. package/extensions/base-extension.d.ts +3 -3
  74. package/extensions/base-extension.d.ts.map +1 -1
  75. package/extensions/index.d.ts +4 -4
  76. package/extensions/index.d.ts.map +1 -1
  77. package/extensions/index.js +11 -11
  78. package/extensions/index.js.map +1 -1
  79. package/extensions/loader.d.ts +1 -1
  80. package/extensions/loader.d.ts.map +1 -1
  81. package/extensions/loader.js +2 -2
  82. package/extensions/loader.js.map +1 -1
  83. package/extensions/manager.d.ts +1 -1
  84. package/extensions/manager.d.ts.map +1 -1
  85. package/extensions/manager.js +2 -2
  86. package/extensions/manager.js.map +1 -1
  87. package/extensions/registry.d.ts +2 -2
  88. package/extensions/registry.d.ts.map +1 -1
  89. package/extensions/registry.js +4 -4
  90. package/extensions/registry.js.map +1 -1
  91. package/extensions/types.d.ts +2 -2
  92. package/extensions/types.d.ts.map +1 -1
  93. package/index.d.ts +58 -46
  94. package/index.d.ts.map +1 -1
  95. package/index.js +72 -50
  96. package/index.js.map +1 -1
  97. package/interfaces/command-executor.d.ts +1 -1
  98. package/interfaces/command-executor.d.ts.map +1 -1
  99. package/interfaces/command-processor.d.ts +1 -1
  100. package/interfaces/command-processor.d.ts.map +1 -1
  101. package/interfaces/command-validator.d.ts +1 -1
  102. package/interfaces/command-validator.d.ts.map +1 -1
  103. package/interfaces/index.d.ts +4 -4
  104. package/interfaces/index.d.ts.map +1 -1
  105. package/interfaces/index.js +4 -4
  106. package/interfaces/index.js.map +1 -1
  107. package/interfaces/parser.d.ts +1 -1
  108. package/interfaces/parser.d.ts.map +1 -1
  109. package/package.json +3 -3
  110. package/scope/index.d.ts +3 -3
  111. package/scope/index.d.ts.map +1 -1
  112. package/scope/index.js +3 -3
  113. package/scope/index.js.map +1 -1
  114. package/scope/scope-evaluator.d.ts +2 -2
  115. package/scope/scope-evaluator.d.ts.map +1 -1
  116. package/scope/scope-registry.d.ts +1 -1
  117. package/scope/scope-registry.d.ts.map +1 -1
  118. package/state-adjectives.d.ts +1 -1
  119. package/state-adjectives.d.ts.map +1 -1
  120. package/state-adjectives.js +5 -5
  121. package/state-adjectives.js.map +1 -1
  122. package/state-clauses.d.ts +1 -1
  123. package/state-clauses.d.ts.map +1 -1
  124. package/state-clauses.js +5 -5
  125. package/state-clauses.js.map +1 -1
  126. package/test-structure.d.ts +1 -1
  127. package/test-structure.d.ts.map +1 -1
  128. package/test-structure.js +7 -7
  129. package/test-structure.js.map +1 -1
  130. package/traits/acoustic/acousticDampenerTrait.d.ts +1 -1
  131. package/traits/acoustic/acousticDampenerTrait.d.ts.map +1 -1
  132. package/traits/acoustic/acousticDampenerTrait.js +3 -3
  133. package/traits/acoustic/acousticDampenerTrait.js.map +1 -1
  134. package/traits/acoustic/acousticTrait.d.ts +1 -1
  135. package/traits/acoustic/acousticTrait.d.ts.map +1 -1
  136. package/traits/acoustic/acousticTrait.js +3 -3
  137. package/traits/acoustic/acousticTrait.js.map +1 -1
  138. package/traits/acoustic/index.d.ts +2 -2
  139. package/traits/acoustic/index.d.ts.map +1 -1
  140. package/traits/acoustic/index.js +5 -5
  141. package/traits/acoustic/index.js.map +1 -1
  142. package/traits/actor/actorBehavior.d.ts +4 -4
  143. package/traits/actor/actorBehavior.d.ts.map +1 -1
  144. package/traits/actor/actorBehavior.js +38 -34
  145. package/traits/actor/actorBehavior.js.map +1 -1
  146. package/traits/actor/actorTrait.d.ts +1 -1
  147. package/traits/actor/actorTrait.d.ts.map +1 -1
  148. package/traits/actor/actorTrait.js +3 -3
  149. package/traits/actor/actorTrait.js.map +1 -1
  150. package/traits/actor/index.d.ts +2 -2
  151. package/traits/actor/index.d.ts.map +1 -1
  152. package/traits/actor/index.js +6 -6
  153. package/traits/actor/index.js.map +1 -1
  154. package/traits/all-traits.d.ts +30 -33
  155. package/traits/all-traits.d.ts.map +1 -1
  156. package/traits/all-traits.js +56 -62
  157. package/traits/all-traits.js.map +1 -1
  158. package/traits/attached/attachedTrait.d.ts +1 -1
  159. package/traits/attached/attachedTrait.d.ts.map +1 -1
  160. package/traits/attached/attachedTrait.js +3 -3
  161. package/traits/attached/attachedTrait.js.map +1 -1
  162. package/traits/attached/index.d.ts +1 -1
  163. package/traits/attached/index.d.ts.map +1 -1
  164. package/traits/attached/index.js +1 -1
  165. package/traits/attached/index.js.map +1 -1
  166. package/traits/breakable/breakableBehavior.d.ts +3 -3
  167. package/traits/breakable/breakableBehavior.d.ts.map +1 -1
  168. package/traits/breakable/breakableBehavior.js +10 -10
  169. package/traits/breakable/breakableBehavior.js.map +1 -1
  170. package/traits/breakable/breakableTrait.d.ts +1 -1
  171. package/traits/breakable/breakableTrait.d.ts.map +1 -1
  172. package/traits/breakable/index.d.ts +2 -2
  173. package/traits/breakable/index.d.ts.map +1 -1
  174. package/traits/breakable/index.js +4 -4
  175. package/traits/breakable/index.js.map +1 -1
  176. package/traits/button/buttonTrait.d.ts +1 -1
  177. package/traits/button/buttonTrait.d.ts.map +1 -1
  178. package/traits/button/buttonTrait.js +3 -3
  179. package/traits/button/buttonTrait.js.map +1 -1
  180. package/traits/button/index.d.ts +1 -1
  181. package/traits/button/index.d.ts.map +1 -1
  182. package/traits/button/index.js +1 -1
  183. package/traits/button/index.js.map +1 -1
  184. package/traits/character-model/characterModelTrait.d.ts +2 -2
  185. package/traits/character-model/characterModelTrait.d.ts.map +1 -1
  186. package/traits/character-model/characterModelTrait.js +16 -16
  187. package/traits/character-model/characterModelTrait.js.map +1 -1
  188. package/traits/character-model/index.d.ts +2 -2
  189. package/traits/character-model/index.d.ts.map +1 -1
  190. package/traits/character-model/index.js +3 -3
  191. package/traits/character-model/index.js.map +1 -1
  192. package/traits/climbable/climbableBehavior.d.ts +1 -1
  193. package/traits/climbable/climbableBehavior.d.ts.map +1 -1
  194. package/traits/climbable/climbableBehavior.js +9 -9
  195. package/traits/climbable/climbableBehavior.js.map +1 -1
  196. package/traits/climbable/climbableTrait.d.ts +1 -1
  197. package/traits/climbable/climbableTrait.d.ts.map +1 -1
  198. package/traits/climbable/climbableTrait.js +4 -4
  199. package/traits/climbable/climbableTrait.js.map +1 -1
  200. package/traits/climbable/index.d.ts +2 -2
  201. package/traits/climbable/index.d.ts.map +1 -1
  202. package/traits/climbable/index.js +2 -2
  203. package/traits/climbable/index.js.map +1 -1
  204. package/traits/clothing/clothingTrait.d.ts +2 -2
  205. package/traits/clothing/clothingTrait.d.ts.map +1 -1
  206. package/traits/clothing/clothingTrait.js +3 -3
  207. package/traits/clothing/clothingTrait.js.map +1 -1
  208. package/traits/clothing/index.d.ts +1 -1
  209. package/traits/clothing/index.d.ts.map +1 -1
  210. package/traits/clothing/index.js +1 -1
  211. package/traits/clothing/index.js.map +1 -1
  212. package/traits/combatant/combatantBehavior.d.ts +26 -21
  213. package/traits/combatant/combatantBehavior.d.ts.map +1 -1
  214. package/traits/combatant/combatantBehavior.js +58 -56
  215. package/traits/combatant/combatantBehavior.js.map +1 -1
  216. package/traits/combatant/combatantTrait.d.ts +15 -49
  217. package/traits/combatant/combatantTrait.d.ts.map +1 -1
  218. package/traits/combatant/combatantTrait.js +13 -80
  219. package/traits/combatant/combatantTrait.js.map +1 -1
  220. package/traits/combatant/index.d.ts +2 -2
  221. package/traits/combatant/index.d.ts.map +1 -1
  222. package/traits/combatant/index.js +4 -4
  223. package/traits/combatant/index.js.map +1 -1
  224. package/traits/concealment/concealedStateTrait.d.ts +3 -3
  225. package/traits/concealment/concealedStateTrait.d.ts.map +1 -1
  226. package/traits/concealment/concealedStateTrait.js +2 -2
  227. package/traits/concealment/concealedStateTrait.js.map +1 -1
  228. package/traits/concealment/concealedVisibilityBehavior.d.ts +2 -2
  229. package/traits/concealment/concealedVisibilityBehavior.d.ts.map +1 -1
  230. package/traits/concealment/concealedVisibilityBehavior.js +3 -3
  231. package/traits/concealment/concealedVisibilityBehavior.js.map +1 -1
  232. package/traits/concealment/concealmentTrait.d.ts +1 -1
  233. package/traits/concealment/concealmentTrait.d.ts.map +1 -1
  234. package/traits/concealment/index.d.ts +3 -3
  235. package/traits/concealment/index.d.ts.map +1 -1
  236. package/traits/concealment/index.js +3 -3
  237. package/traits/concealment/index.js.map +1 -1
  238. package/traits/container/container-utils.d.ts +2 -2
  239. package/traits/container/container-utils.d.ts.map +1 -1
  240. package/traits/container/container-utils.js +14 -14
  241. package/traits/container/container-utils.js.map +1 -1
  242. package/traits/container/containerBehavior.d.ts +7 -2
  243. package/traits/container/containerBehavior.d.ts.map +1 -1
  244. package/traits/container/containerBehavior.js +26 -26
  245. package/traits/container/containerBehavior.js.map +1 -1
  246. package/traits/container/containerTrait.d.ts +1 -1
  247. package/traits/container/containerTrait.d.ts.map +1 -1
  248. package/traits/container/containerTrait.js +3 -3
  249. package/traits/container/containerTrait.js.map +1 -1
  250. package/traits/container/index.d.ts +3 -3
  251. package/traits/container/index.d.ts.map +1 -1
  252. package/traits/container/index.js +9 -9
  253. package/traits/container/index.js.map +1 -1
  254. package/traits/cuttable/cuttableBehavior.d.ts +23 -0
  255. package/traits/cuttable/cuttableBehavior.d.ts.map +1 -0
  256. package/traits/cuttable/cuttableBehavior.js +39 -0
  257. package/traits/cuttable/cuttableBehavior.js.map +1 -0
  258. package/traits/cuttable/cuttableTrait.d.ts +37 -0
  259. package/traits/cuttable/cuttableTrait.d.ts.map +1 -0
  260. package/traits/cuttable/cuttableTrait.js +30 -0
  261. package/traits/cuttable/cuttableTrait.js.map +1 -0
  262. package/traits/cuttable/index.d.ts +3 -0
  263. package/traits/cuttable/index.d.ts.map +1 -0
  264. package/traits/cuttable/index.js +20 -0
  265. package/traits/cuttable/index.js.map +1 -0
  266. package/traits/deadly-room/deadlyRoomBehavior.d.ts +48 -0
  267. package/traits/deadly-room/deadlyRoomBehavior.d.ts.map +1 -0
  268. package/traits/deadly-room/deadlyRoomBehavior.js +59 -0
  269. package/traits/deadly-room/deadlyRoomBehavior.js.map +1 -0
  270. package/traits/deadly-room/deadlyRoomTrait.d.ts +51 -0
  271. package/traits/deadly-room/deadlyRoomTrait.d.ts.map +1 -0
  272. package/traits/deadly-room/deadlyRoomTrait.js +37 -0
  273. package/traits/deadly-room/deadlyRoomTrait.js.map +1 -0
  274. package/traits/deadly-room/index.d.ts +3 -0
  275. package/traits/deadly-room/index.d.ts.map +1 -0
  276. package/traits/deadly-room/index.js +8 -0
  277. package/traits/deadly-room/index.js.map +1 -0
  278. package/traits/destructible/destructibleBehavior.d.ts +3 -3
  279. package/traits/destructible/destructibleBehavior.d.ts.map +1 -1
  280. package/traits/destructible/destructibleBehavior.js +12 -12
  281. package/traits/destructible/destructibleBehavior.js.map +1 -1
  282. package/traits/destructible/destructibleTrait.d.ts +1 -1
  283. package/traits/destructible/destructibleTrait.d.ts.map +1 -1
  284. package/traits/destructible/index.d.ts +2 -2
  285. package/traits/destructible/index.d.ts.map +1 -1
  286. package/traits/destructible/index.js +4 -4
  287. package/traits/destructible/index.js.map +1 -1
  288. package/traits/diggable/diggableBehavior.d.ts +23 -0
  289. package/traits/diggable/diggableBehavior.d.ts.map +1 -0
  290. package/traits/diggable/diggableBehavior.js +39 -0
  291. package/traits/diggable/diggableBehavior.js.map +1 -0
  292. package/traits/diggable/diggableTrait.d.ts +37 -0
  293. package/traits/diggable/diggableTrait.d.ts.map +1 -0
  294. package/traits/diggable/diggableTrait.js +30 -0
  295. package/traits/diggable/diggableTrait.js.map +1 -0
  296. package/traits/diggable/index.d.ts +3 -0
  297. package/traits/diggable/index.d.ts.map +1 -0
  298. package/traits/diggable/index.js +20 -0
  299. package/traits/diggable/index.js.map +1 -0
  300. package/traits/door/doorBehavior.d.ts +2 -2
  301. package/traits/door/doorBehavior.d.ts.map +1 -1
  302. package/traits/door/doorBehavior.js +11 -11
  303. package/traits/door/doorBehavior.js.map +1 -1
  304. package/traits/door/doorTrait.d.ts +1 -1
  305. package/traits/door/doorTrait.d.ts.map +1 -1
  306. package/traits/door/doorTrait.js +3 -3
  307. package/traits/door/doorTrait.js.map +1 -1
  308. package/traits/door/index.d.ts +2 -2
  309. package/traits/door/index.d.ts.map +1 -1
  310. package/traits/door/index.js +4 -4
  311. package/traits/door/index.js.map +1 -1
  312. package/traits/edible/edibleBehavior.d.ts +3 -3
  313. package/traits/edible/edibleBehavior.d.ts.map +1 -1
  314. package/traits/edible/edibleBehavior.js +20 -20
  315. package/traits/edible/edibleBehavior.js.map +1 -1
  316. package/traits/edible/edibleTrait.d.ts +1 -1
  317. package/traits/edible/edibleTrait.d.ts.map +1 -1
  318. package/traits/edible/edibleTrait.js +3 -3
  319. package/traits/edible/edibleTrait.js.map +1 -1
  320. package/traits/edible/index.d.ts +2 -2
  321. package/traits/edible/index.d.ts.map +1 -1
  322. package/traits/edible/index.js +2 -2
  323. package/traits/edible/index.js.map +1 -1
  324. package/traits/enterable/enterableTrait.d.ts +1 -1
  325. package/traits/enterable/enterableTrait.d.ts.map +1 -1
  326. package/traits/enterable/enterableTrait.js +4 -4
  327. package/traits/enterable/enterableTrait.js.map +1 -1
  328. package/traits/enterable/index.d.ts +1 -1
  329. package/traits/enterable/index.d.ts.map +1 -1
  330. package/traits/enterable/index.js +1 -1
  331. package/traits/enterable/index.js.map +1 -1
  332. package/traits/equipped/equippedTrait.d.ts +1 -1
  333. package/traits/equipped/equippedTrait.d.ts.map +1 -1
  334. package/traits/equipped/index.d.ts +1 -1
  335. package/traits/equipped/index.d.ts.map +1 -1
  336. package/traits/equipped/index.js +2 -2
  337. package/traits/equipped/index.js.map +1 -1
  338. package/traits/exit/exitBehavior.d.ts +2 -2
  339. package/traits/exit/exitBehavior.d.ts.map +1 -1
  340. package/traits/exit/exitBehavior.js +27 -27
  341. package/traits/exit/exitBehavior.js.map +1 -1
  342. package/traits/exit/exitTrait.d.ts +1 -1
  343. package/traits/exit/exitTrait.d.ts.map +1 -1
  344. package/traits/exit/exitTrait.js +3 -3
  345. package/traits/exit/exitTrait.js.map +1 -1
  346. package/traits/exit/index.d.ts +2 -2
  347. package/traits/exit/index.d.ts.map +1 -1
  348. package/traits/exit/index.js +4 -4
  349. package/traits/exit/index.js.map +1 -1
  350. package/traits/health/healthBehavior.d.ts +66 -0
  351. package/traits/health/healthBehavior.d.ts.map +1 -0
  352. package/traits/health/healthBehavior.js +98 -0
  353. package/traits/health/healthBehavior.js.map +1 -0
  354. package/traits/health/healthTrait.d.ts +60 -0
  355. package/traits/health/healthTrait.d.ts.map +1 -0
  356. package/traits/health/healthTrait.js +49 -0
  357. package/traits/health/healthTrait.js.map +1 -0
  358. package/traits/health/index.d.ts +3 -0
  359. package/traits/health/index.d.ts.map +1 -0
  360. package/traits/health/index.js +8 -0
  361. package/traits/health/index.js.map +1 -0
  362. package/traits/identity/identityBehavior.d.ts +2 -2
  363. package/traits/identity/identityBehavior.d.ts.map +1 -1
  364. package/traits/identity/identityBehavior.js +16 -16
  365. package/traits/identity/identityBehavior.js.map +1 -1
  366. package/traits/identity/identityTrait.d.ts +8 -1
  367. package/traits/identity/identityTrait.d.ts.map +1 -1
  368. package/traits/identity/identityTrait.js +10 -3
  369. package/traits/identity/identityTrait.js.map +1 -1
  370. package/traits/identity/index.d.ts +3 -2
  371. package/traits/identity/index.d.ts.map +1 -1
  372. package/traits/identity/index.js +3 -2
  373. package/traits/identity/index.js.map +1 -1
  374. package/traits/identity/name-vocabulary.d.ts +31 -0
  375. package/traits/identity/name-vocabulary.d.ts.map +1 -0
  376. package/traits/identity/name-vocabulary.js +57 -0
  377. package/traits/identity/name-vocabulary.js.map +1 -0
  378. package/traits/implementations.d.ts +65 -38
  379. package/traits/implementations.d.ts.map +1 -1
  380. package/traits/implementations.js +165 -117
  381. package/traits/implementations.js.map +1 -1
  382. package/traits/index.d.ts +47 -44
  383. package/traits/index.d.ts.map +1 -1
  384. package/traits/index.js +48 -44
  385. package/traits/index.js.map +1 -1
  386. package/traits/light-source/index.d.ts +2 -2
  387. package/traits/light-source/index.d.ts.map +1 -1
  388. package/traits/light-source/index.js +4 -4
  389. package/traits/light-source/index.js.map +1 -1
  390. package/traits/light-source/lightSourceBehavior.d.ts +2 -2
  391. package/traits/light-source/lightSourceBehavior.d.ts.map +1 -1
  392. package/traits/light-source/lightSourceBehavior.js +16 -16
  393. package/traits/light-source/lightSourceBehavior.js.map +1 -1
  394. package/traits/light-source/lightSourceTrait.d.ts +1 -1
  395. package/traits/light-source/lightSourceTrait.d.ts.map +1 -1
  396. package/traits/light-source/lightSourceTrait.js +3 -3
  397. package/traits/light-source/lightSourceTrait.js.map +1 -1
  398. package/traits/listener/index.d.ts +1 -1
  399. package/traits/listener/index.d.ts.map +1 -1
  400. package/traits/listener/index.js +2 -2
  401. package/traits/listener/index.js.map +1 -1
  402. package/traits/listener/listenerTrait.d.ts +1 -1
  403. package/traits/listener/listenerTrait.d.ts.map +1 -1
  404. package/traits/listener/listenerTrait.js +3 -3
  405. package/traits/listener/listenerTrait.js.map +1 -1
  406. package/traits/lockable/index.d.ts +2 -2
  407. package/traits/lockable/index.d.ts.map +1 -1
  408. package/traits/lockable/index.js +2 -2
  409. package/traits/lockable/index.js.map +1 -1
  410. package/traits/lockable/lockableBehavior.d.ts +2 -2
  411. package/traits/lockable/lockableBehavior.d.ts.map +1 -1
  412. package/traits/lockable/lockableBehavior.js +19 -19
  413. package/traits/lockable/lockableBehavior.js.map +1 -1
  414. package/traits/lockable/lockableTrait.d.ts +1 -1
  415. package/traits/lockable/lockableTrait.d.ts.map +1 -1
  416. package/traits/lockable/lockableTrait.js +3 -3
  417. package/traits/lockable/lockableTrait.js.map +1 -1
  418. package/traits/moveable-scenery/index.d.ts +1 -1
  419. package/traits/moveable-scenery/index.d.ts.map +1 -1
  420. package/traits/moveable-scenery/index.js +1 -1
  421. package/traits/moveable-scenery/index.js.map +1 -1
  422. package/traits/moveable-scenery/moveableSceneryTrait.d.ts +1 -1
  423. package/traits/moveable-scenery/moveableSceneryTrait.d.ts.map +1 -1
  424. package/traits/moveable-scenery/moveableSceneryTrait.js +3 -3
  425. package/traits/moveable-scenery/moveableSceneryTrait.js.map +1 -1
  426. package/traits/npc/index.d.ts +1 -1
  427. package/traits/npc/index.d.ts.map +1 -1
  428. package/traits/npc/index.js +2 -2
  429. package/traits/npc/index.js.map +1 -1
  430. package/traits/npc/npcTrait.d.ts +6 -28
  431. package/traits/npc/npcTrait.d.ts.map +1 -1
  432. package/traits/npc/npcTrait.js +0 -38
  433. package/traits/npc/npcTrait.js.map +1 -1
  434. package/traits/obstructor-protocol.d.ts +3 -3
  435. package/traits/obstructor-protocol.d.ts.map +1 -1
  436. package/traits/open-inventory/index.d.ts +1 -1
  437. package/traits/open-inventory/index.d.ts.map +1 -1
  438. package/traits/open-inventory/index.js +2 -2
  439. package/traits/open-inventory/index.js.map +1 -1
  440. package/traits/open-inventory/openInventoryTrait.d.ts +1 -1
  441. package/traits/open-inventory/openInventoryTrait.d.ts.map +1 -1
  442. package/traits/open-inventory/openInventoryTrait.js +3 -3
  443. package/traits/open-inventory/openInventoryTrait.js.map +1 -1
  444. package/traits/openable/index.d.ts +2 -2
  445. package/traits/openable/index.d.ts.map +1 -1
  446. package/traits/openable/index.js +2 -2
  447. package/traits/openable/index.js.map +1 -1
  448. package/traits/openable/openableBehavior.d.ts +12 -2
  449. package/traits/openable/openableBehavior.d.ts.map +1 -1
  450. package/traits/openable/openableBehavior.js +32 -11
  451. package/traits/openable/openableBehavior.js.map +1 -1
  452. package/traits/openable/openableTrait.d.ts +8 -1
  453. package/traits/openable/openableTrait.d.ts.map +1 -1
  454. package/traits/openable/openableTrait.js +7 -3
  455. package/traits/openable/openableTrait.js.map +1 -1
  456. package/traits/pullable/index.d.ts +1 -1
  457. package/traits/pullable/index.d.ts.map +1 -1
  458. package/traits/pullable/index.js +1 -1
  459. package/traits/pullable/index.js.map +1 -1
  460. package/traits/pullable/pullableTrait.d.ts +1 -1
  461. package/traits/pullable/pullableTrait.d.ts.map +1 -1
  462. package/traits/pullable/pullableTrait.js +3 -3
  463. package/traits/pullable/pullableTrait.js.map +1 -1
  464. package/traits/pushable/index.d.ts +1 -1
  465. package/traits/pushable/index.d.ts.map +1 -1
  466. package/traits/pushable/index.js +1 -1
  467. package/traits/pushable/index.js.map +1 -1
  468. package/traits/pushable/pushableTrait.d.ts +1 -1
  469. package/traits/pushable/pushableTrait.d.ts.map +1 -1
  470. package/traits/pushable/pushableTrait.js +3 -3
  471. package/traits/pushable/pushableTrait.js.map +1 -1
  472. package/traits/readable/index.d.ts +2 -2
  473. package/traits/readable/index.d.ts.map +1 -1
  474. package/traits/readable/index.js +4 -4
  475. package/traits/readable/index.js.map +1 -1
  476. package/traits/readable/readableBehavior.d.ts +1 -1
  477. package/traits/readable/readableBehavior.d.ts.map +1 -1
  478. package/traits/readable/readableBehavior.js +10 -10
  479. package/traits/readable/readableBehavior.js.map +1 -1
  480. package/traits/readable/readableTrait.d.ts +1 -1
  481. package/traits/readable/readableTrait.d.ts.map +1 -1
  482. package/traits/readable/readableTrait.js +3 -3
  483. package/traits/readable/readableTrait.js.map +1 -1
  484. package/traits/region/index.d.ts +1 -1
  485. package/traits/region/index.d.ts.map +1 -1
  486. package/traits/region/index.js +2 -2
  487. package/traits/region/index.js.map +1 -1
  488. package/traits/region/regionTrait.d.ts +1 -1
  489. package/traits/region/regionTrait.d.ts.map +1 -1
  490. package/traits/region/regionTrait.js +3 -3
  491. package/traits/region/regionTrait.js.map +1 -1
  492. package/traits/room/index.d.ts +2 -2
  493. package/traits/room/index.d.ts.map +1 -1
  494. package/traits/room/index.js +4 -4
  495. package/traits/room/index.js.map +1 -1
  496. package/traits/room/roomBehavior.d.ts +4 -4
  497. package/traits/room/roomBehavior.d.ts.map +1 -1
  498. package/traits/room/roomBehavior.js +25 -25
  499. package/traits/room/roomBehavior.js.map +1 -1
  500. package/traits/room/roomTrait.d.ts +10 -5
  501. package/traits/room/roomTrait.d.ts.map +1 -1
  502. package/traits/room/roomTrait.js +5 -5
  503. package/traits/room/roomTrait.js.map +1 -1
  504. package/traits/scene/index.d.ts +1 -1
  505. package/traits/scene/index.d.ts.map +1 -1
  506. package/traits/scene/index.js +2 -2
  507. package/traits/scene/index.js.map +1 -1
  508. package/traits/scene/sceneTrait.d.ts +1 -1
  509. package/traits/scene/sceneTrait.d.ts.map +1 -1
  510. package/traits/scene/sceneTrait.js +3 -3
  511. package/traits/scene/sceneTrait.js.map +1 -1
  512. package/traits/scenery/index.d.ts +2 -2
  513. package/traits/scenery/index.d.ts.map +1 -1
  514. package/traits/scenery/index.js +4 -4
  515. package/traits/scenery/index.js.map +1 -1
  516. package/traits/scenery/sceneryBehavior.d.ts +1 -1
  517. package/traits/scenery/sceneryBehavior.d.ts.map +1 -1
  518. package/traits/scenery/sceneryBehavior.js +5 -5
  519. package/traits/scenery/sceneryBehavior.js.map +1 -1
  520. package/traits/scenery/sceneryTrait.d.ts +1 -1
  521. package/traits/scenery/sceneryTrait.d.ts.map +1 -1
  522. package/traits/scenery/sceneryTrait.js +3 -3
  523. package/traits/scenery/sceneryTrait.js.map +1 -1
  524. package/traits/story-info/index.d.ts +1 -1
  525. package/traits/story-info/index.d.ts.map +1 -1
  526. package/traits/story-info/index.js +2 -2
  527. package/traits/story-info/index.js.map +1 -1
  528. package/traits/story-info/storyInfoTrait.d.ts +1 -1
  529. package/traits/story-info/storyInfoTrait.d.ts.map +1 -1
  530. package/traits/supporter/index.d.ts +2 -2
  531. package/traits/supporter/index.d.ts.map +1 -1
  532. package/traits/supporter/index.js +4 -4
  533. package/traits/supporter/index.js.map +1 -1
  534. package/traits/supporter/supporterBehavior.d.ts +3 -3
  535. package/traits/supporter/supporterBehavior.d.ts.map +1 -1
  536. package/traits/supporter/supporterBehavior.js +15 -15
  537. package/traits/supporter/supporterBehavior.js.map +1 -1
  538. package/traits/supporter/supporterTrait.d.ts +1 -1
  539. package/traits/supporter/supporterTrait.d.ts.map +1 -1
  540. package/traits/supporter/supporterTrait.js +3 -3
  541. package/traits/supporter/supporterTrait.js.map +1 -1
  542. package/traits/switchable/index.d.ts +2 -2
  543. package/traits/switchable/index.d.ts.map +1 -1
  544. package/traits/switchable/index.js +2 -2
  545. package/traits/switchable/index.js.map +1 -1
  546. package/traits/switchable/switchableBehavior.d.ts +2 -2
  547. package/traits/switchable/switchableBehavior.d.ts.map +1 -1
  548. package/traits/switchable/switchableBehavior.js +18 -18
  549. package/traits/switchable/switchableBehavior.js.map +1 -1
  550. package/traits/switchable/switchableTrait.d.ts +1 -1
  551. package/traits/switchable/switchableTrait.d.ts.map +1 -1
  552. package/traits/switchable/switchableTrait.js +3 -3
  553. package/traits/switchable/switchableTrait.js.map +1 -1
  554. package/traits/trait-types.d.ts +4 -1
  555. package/traits/trait-types.d.ts.map +1 -1
  556. package/traits/trait-types.js +12 -2
  557. package/traits/trait-types.js.map +1 -1
  558. package/traits/trait.d.ts +1 -1
  559. package/traits/trait.d.ts.map +1 -1
  560. package/traits/vehicle/index.d.ts +2 -2
  561. package/traits/vehicle/index.d.ts.map +1 -1
  562. package/traits/vehicle/index.js +2 -2
  563. package/traits/vehicle/index.js.map +1 -1
  564. package/traits/vehicle/vehicleBehavior.d.ts +2 -2
  565. package/traits/vehicle/vehicleBehavior.d.ts.map +1 -1
  566. package/traits/vehicle/vehicleBehavior.js +7 -7
  567. package/traits/vehicle/vehicleBehavior.js.map +1 -1
  568. package/traits/vehicle/vehicleTrait.d.ts +1 -1
  569. package/traits/vehicle/vehicleTrait.d.ts.map +1 -1
  570. package/traits/vehicle/vehicleTrait.js +4 -4
  571. package/traits/vehicle/vehicleTrait.js.map +1 -1
  572. package/traits/weapon/index.d.ts +2 -2
  573. package/traits/weapon/index.d.ts.map +1 -1
  574. package/traits/weapon/index.js +4 -4
  575. package/traits/weapon/index.js.map +1 -1
  576. package/traits/weapon/weaponBehavior.d.ts +11 -4
  577. package/traits/weapon/weaponBehavior.d.ts.map +1 -1
  578. package/traits/weapon/weaponBehavior.js +24 -19
  579. package/traits/weapon/weaponBehavior.js.map +1 -1
  580. package/traits/weapon/weaponTrait.d.ts +1 -1
  581. package/traits/weapon/weaponTrait.d.ts.map +1 -1
  582. package/traits/wearable/index.d.ts +2 -2
  583. package/traits/wearable/index.d.ts.map +1 -1
  584. package/traits/wearable/index.js +2 -2
  585. package/traits/wearable/index.js.map +1 -1
  586. package/traits/wearable/wearableBehavior.d.ts +1 -1
  587. package/traits/wearable/wearableBehavior.d.ts.map +1 -1
  588. package/traits/wearable/wearableBehavior.js +11 -11
  589. package/traits/wearable/wearableBehavior.js.map +1 -1
  590. package/traits/wearable/wearableTrait.d.ts +1 -1
  591. package/traits/wearable/wearableTrait.d.ts.map +1 -1
  592. package/traits/wearable/wearableTrait.js +3 -3
  593. package/traits/wearable/wearableTrait.js.map +1 -1
  594. package/world/AuthorModel.d.ts +23 -17
  595. package/world/AuthorModel.d.ts.map +1 -1
  596. package/world/AuthorModel.js +15 -4
  597. package/world/AuthorModel.js.map +1 -1
  598. package/world/SharedDataStore.d.ts +2 -2
  599. package/world/SharedDataStore.d.ts.map +1 -1
  600. package/world/SharedDataStore.js +2 -2
  601. package/world/SharedDataStore.js.map +1 -1
  602. package/world/VisibilityBehavior.d.ts +60 -4
  603. package/world/VisibilityBehavior.d.ts.map +1 -1
  604. package/world/VisibilityBehavior.js +193 -101
  605. package/world/VisibilityBehavior.js.map +1 -1
  606. package/world/WorldEventSystem.d.ts +1 -1
  607. package/world/WorldEventSystem.d.ts.map +1 -1
  608. package/world/WorldModel.d.ts +65 -18
  609. package/world/WorldModel.d.ts.map +1 -1
  610. package/world/WorldModel.js +164 -114
  611. package/world/WorldModel.js.map +1 -1
  612. package/world/WorldSerializer.d.ts +4 -4
  613. package/world/WorldSerializer.d.ts.map +1 -1
  614. package/world/WorldSerializer.js +2 -2
  615. package/world/WorldSerializer.js.map +1 -1
  616. package/world/default-trait-registry.d.ts +1 -1
  617. package/world/default-trait-registry.d.ts.map +1 -1
  618. package/world/default-trait-registry.js +3 -3
  619. package/world/default-trait-registry.js.map +1 -1
  620. package/world/index.d.ts +9 -9
  621. package/world/index.d.ts.map +1 -1
  622. package/world/index.js +17 -16
  623. package/world/index.js.map +1 -1
  624. package/world/wall-creation.d.ts +2 -2
  625. package/world/wall-creation.d.ts.map +1 -1
  626. package/world/wall-creation.js +6 -6
  627. package/world/wall-creation.js.map +1 -1
  628. package/world/wall-validation.d.ts +2 -2
  629. package/world/wall-validation.d.ts.map +1 -1
  630. package/world/wall-validation.js +3 -3
  631. package/world/wall-validation.js.map +1 -1
@@ -2,37 +2,36 @@
2
2
  // WorldModel.ts - Core world model interface and implementation for Sharpee IF Platform
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
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 wall_creation_1 = require("./wall-creation");
8
- const trait_types_1 = require("../traits/trait-types");
9
- const room_1 = require("../traits/room");
10
- const roomBehavior_1 = require("../traits/room/roomBehavior");
11
- const regionTrait_1 = require("../traits/region/regionTrait");
12
- const sceneTrait_1 = require("../traits/scene/sceneTrait");
13
- const door_1 = require("../traits/door");
14
- const scenery_1 = require("../traits/scenery");
15
- const default_trait_registry_1 = require("./default-trait-registry");
16
- const identityTrait_1 = require("../traits/identity/identityTrait");
17
- const openableTrait_1 = require("../traits/openable/openableTrait");
18
- const lockableTrait_1 = require("../traits/lockable/lockableTrait");
19
- const wearableTrait_1 = require("../traits/wearable/wearableTrait");
20
- const clothingTrait_1 = require("../traits/clothing/clothingTrait");
21
- const exitTrait_1 = require("../traits/exit/exitTrait");
22
- const directions_1 = require("../constants/directions");
23
- const SpatialIndex_1 = require("./SpatialIndex");
24
- const VisibilityBehavior_1 = require("./VisibilityBehavior");
25
- const WorldSerializer_1 = require("./WorldSerializer");
26
- const container_utils_1 = require("../traits/container/container-utils");
27
- const capability_binding_1 = require("../capabilities/capability-binding");
28
- const interceptor_binding_1 = require("../capabilities/interceptor-binding");
5
+ const if_entity_js_1 = require("../entities/if-entity.js");
6
+ const entity_types_js_1 = require("../entities/entity-types.js");
7
+ const wall_creation_js_1 = require("./wall-creation.js");
8
+ const trait_types_js_1 = require("../traits/trait-types.js");
9
+ const index_js_1 = require("../traits/room/index.js");
10
+ const roomBehavior_js_1 = require("../traits/room/roomBehavior.js");
11
+ const regionTrait_js_1 = require("../traits/region/regionTrait.js");
12
+ const sceneTrait_js_1 = require("../traits/scene/sceneTrait.js");
13
+ const index_js_2 = require("../traits/door/index.js");
14
+ const index_js_3 = require("../traits/scenery/index.js");
15
+ const default_trait_registry_js_1 = require("./default-trait-registry.js");
16
+ const identityTrait_js_1 = require("../traits/identity/identityTrait.js");
17
+ const openableTrait_js_1 = require("../traits/openable/openableTrait.js");
18
+ const lockableTrait_js_1 = require("../traits/lockable/lockableTrait.js");
19
+ const wearableBehavior_js_1 = require("../traits/wearable/wearableBehavior.js");
20
+ const exitTrait_js_1 = require("../traits/exit/exitTrait.js");
21
+ const directions_js_1 = require("../constants/directions.js");
22
+ const SpatialIndex_js_1 = require("./SpatialIndex.js");
23
+ const VisibilityBehavior_js_1 = require("./VisibilityBehavior.js");
24
+ const WorldSerializer_js_1 = require("./WorldSerializer.js");
25
+ const container_utils_js_1 = require("../traits/container/container-utils.js");
26
+ const capability_binding_js_1 = require("../capabilities/capability-binding.js");
27
+ const interceptor_binding_js_1 = require("../capabilities/interceptor-binding.js");
29
28
  const if_domain_1 = require("@sharpee/if-domain");
30
- const scope_registry_1 = require("../scope/scope-registry");
31
- const scope_evaluator_1 = require("../scope/scope-evaluator");
29
+ const scope_registry_js_1 = require("../scope/scope-registry.js");
30
+ const scope_evaluator_js_1 = require("../scope/scope-evaluator.js");
32
31
  // Event system — extracted to WorldEventSystem.ts, re-exported for backward compat
33
- const WorldEventSystem_1 = require("./WorldEventSystem");
32
+ const WorldEventSystem_js_1 = require("./WorldEventSystem.js");
34
33
  // Score Ledger (ADR-129)
35
- const ScoreLedger_1 = require("./ScoreLedger");
34
+ const ScoreLedger_js_1 = require("./ScoreLedger.js");
36
35
  // Type prefixes for entity ID generation
37
36
  const TYPE_PREFIXES = {
38
37
  'room': 'r',
@@ -66,16 +65,22 @@ class WorldModel {
66
65
  // wiring re-established by story init, not save-game state). Distinct
67
66
  // from both maps above despite the shared "wiring" flavor.
68
67
  interceptorBindings = new Map();
68
+ /**
69
+ * ADR-240: the per-world evaluator registry — named world-evaluators
70
+ * consulted at point of use (live derived state; no cached derivations).
71
+ * Lives and dies with this WorldModel instance, like the binding maps.
72
+ */
73
+ evaluators = new Map();
69
74
  // Score Ledger (ADR-129)
70
- scoreLedger = new ScoreLedger_1.ScoreLedger();
75
+ scoreLedger = new ScoreLedger_js_1.ScoreLedger();
71
76
  // Scene condition closures (ADR-149) — not serialized
72
77
  sceneConditions = new Map();
73
78
  // ID generation
74
79
  idCounters = new Map();
75
80
  // Event system (ADR-086, ADR-094) — delegates to WorldEventSystem
76
- eventSystem = new WorldEventSystem_1.WorldEventSystem();
81
+ eventSystem = new WorldEventSystem_js_1.WorldEventSystem();
77
82
  // Persistence — delegates to WorldSerializer
78
- serializer = new WorldSerializer_1.WorldSerializer();
83
+ serializer = new WorldSerializer_js_1.WorldSerializer();
79
84
  platformEvents;
80
85
  // Scope system
81
86
  scopeRegistry;
@@ -89,12 +94,12 @@ class WorldModel {
89
94
  strictMode: false,
90
95
  ...config
91
96
  };
92
- this.spatialIndex = new SpatialIndex_1.SpatialIndex();
97
+ this.spatialIndex = new SpatialIndex_js_1.SpatialIndex();
93
98
  this.platformEvents = platformEvents;
94
99
  this.eventSystem.setWorldRef(this);
95
100
  // Initialize scope system
96
- this.scopeRegistry = new scope_registry_1.ScopeRegistry();
97
- this.scopeEvaluator = new scope_evaluator_1.RuleScopeEvaluator(this.scopeRegistry);
101
+ this.scopeRegistry = new scope_registry_js_1.ScopeRegistry();
102
+ this.scopeEvaluator = new scope_evaluator_js_1.RuleScopeEvaluator(this.scopeRegistry);
98
103
  // Initialize vocabulary system (ADR-082)
99
104
  this.grammarVocabularyProvider = new if_domain_1.GrammarVocabularyProvider();
100
105
  // Register default scope rules
@@ -195,7 +200,7 @@ class WorldModel {
195
200
  // Registration is idempotent: re-registering a (traitType, capability) key
196
201
  // overwrites the previous binding rather than throwing (AC-4).
197
202
  registerCapabilityBehavior(traitType, capability, behavior, options) {
198
- const key = (0, capability_binding_1.capabilityBindingKey)(traitType, capability);
203
+ const key = (0, capability_binding_js_1.capabilityBindingKey)(traitType, capability);
199
204
  this.capabilityBindings.set(key, {
200
205
  traitType,
201
206
  capability,
@@ -206,8 +211,18 @@ class WorldModel {
206
211
  validateBinding: options?.validateBinding
207
212
  });
208
213
  }
214
+ // Evaluator Registry (ADR-240 — live derived state). Same ownership model
215
+ // as the binding maps above: per-world, idempotent last-wins, never
216
+ // serialized (registrars re-register on every load).
217
+ registerEvaluator(key, fn) {
218
+ this.evaluators.set(key, fn);
219
+ }
220
+ evaluate(key) {
221
+ const fn = this.evaluators.get(key);
222
+ return fn ? fn(this) : undefined;
223
+ }
209
224
  getBehaviorBinding(traitType, capability) {
210
- return this.capabilityBindings.get((0, capability_binding_1.capabilityBindingKey)(traitType, capability));
225
+ return this.capabilityBindings.get((0, capability_binding_js_1.capabilityBindingKey)(traitType, capability));
211
226
  }
212
227
  getAllCapabilityBindings() {
213
228
  return this.capabilityBindings;
@@ -234,7 +249,7 @@ class WorldModel {
234
249
  // Registration is idempotent: re-registering a (traitType, actionId) key
235
250
  // overwrites the previous binding rather than throwing (AC-4).
236
251
  registerActionInterceptor(traitType, actionId, interceptor, options) {
237
- const key = (0, interceptor_binding_1.interceptorBindingKey)(traitType, actionId);
252
+ const key = (0, interceptor_binding_js_1.interceptorBindingKey)(traitType, actionId);
238
253
  this.interceptorBindings.set(key, {
239
254
  traitType,
240
255
  actionId,
@@ -248,7 +263,7 @@ class WorldModel {
248
263
  // a static constructor property across module copies).
249
264
  const candidates = [];
250
265
  for (const trait of entity.traits.values()) {
251
- const binding = this.interceptorBindings.get((0, interceptor_binding_1.interceptorBindingKey)(trait.type, actionId));
266
+ const binding = this.interceptorBindings.get((0, interceptor_binding_js_1.interceptorBindingKey)(trait.type, actionId));
252
267
  if (binding) {
253
268
  candidates.push({ trait, binding });
254
269
  }
@@ -268,7 +283,7 @@ class WorldModel {
268
283
  };
269
284
  }
270
285
  getInterceptorBinding(traitType, actionId) {
271
- return this.interceptorBindings.get((0, interceptor_binding_1.interceptorBindingKey)(traitType, actionId));
286
+ return this.interceptorBindings.get((0, interceptor_binding_js_1.interceptorBindingKey)(traitType, actionId));
272
287
  }
273
288
  getAllActionInterceptors() {
274
289
  return this.interceptorBindings;
@@ -291,12 +306,12 @@ class WorldModel {
291
306
  // Entity Management
292
307
  createEntity(displayName, type = 'object', opts) {
293
308
  // Validate entity type
294
- if (!(0, entity_types_1.isEntityType)(type)) {
295
- throw new Error(`Unknown entity type: '${type}'. Valid types are: ${Object.values(entity_types_1.EntityType).join(', ')}`);
309
+ if (!(0, entity_types_js_1.isEntityType)(type)) {
310
+ throw new Error(`Unknown entity type: '${type}'. Valid types are: ${Object.values(entity_types_js_1.EntityType).join(', ')}`);
296
311
  }
297
312
  // Generate ID based on type
298
313
  const id = this.generateId(type);
299
- const entity = new if_entity_1.IFEntity(id, type, {
314
+ const entity = new if_entity_js_1.IFEntity(id, type, {
300
315
  attributes: {
301
316
  displayName: displayName,
302
317
  name: displayName, // For compatibility
@@ -309,7 +324,7 @@ class WorldModel {
309
324
  // unless the caller opts out. Each factory yields a fresh instance; an author can
310
325
  // override later via add() (replace-on-same-type).
311
326
  if (opts?.defaultTraits !== false) {
312
- const factories = default_trait_registry_1.DEFAULT_TRAITS.get(type);
327
+ const factories = default_trait_registry_js_1.DEFAULT_TRAITS.get(type);
313
328
  if (factories) {
314
329
  for (const factory of factories) {
315
330
  entity.add(factory());
@@ -397,22 +412,25 @@ class WorldModel {
397
412
  if (options.visibleOnly) {
398
413
  // Filter to only visible entities
399
414
  entities = entities.filter(e => {
400
- const scenery = e.getTrait(scenery_1.SceneryTrait);
415
+ const scenery = e.getTrait(index_js_3.SceneryTrait);
401
416
  return !scenery || scenery.visible !== false;
402
417
  });
403
418
  }
404
- if (!options.includeWorn) {
405
- // Filter out worn items (check both WEARABLE and CLOTHING traits)
406
- entities = entities.filter(e => {
407
- const wearable = e.getTrait(wearableTrait_1.WearableTrait);
408
- const clothing = e.getTrait(clothingTrait_1.ClothingTrait);
409
- const wornFromWearable = wearable && wearable.isWorn;
410
- const wornFromClothing = clothing && clothing.isWorn;
411
- return !(wornFromWearable || wornFromClothing);
412
- });
413
- }
419
+ // ADR-247: worn items are contents — returned unconditionally. Callers
420
+ // needing the carried/worn split use getCarriedAndWorn(), not a filter.
414
421
  return entities;
415
422
  }
423
+ getCarriedAndWorn(holderId) {
424
+ // ADR-247: the one partition method. `carried` is held-not-worn (the
425
+ // old filtered-default semantics); `worn` is the worn subset. For a
426
+ // holder with no wearables, `worn` is empty.
427
+ const carried = [];
428
+ const worn = [];
429
+ for (const e of this.getContents(holderId)) {
430
+ (wearableBehavior_js_1.WearableBehavior.isWorn(e) ? worn : carried).push(e);
431
+ }
432
+ return { carried, worn };
433
+ }
416
434
  moveEntity(entityId, targetId) {
417
435
  if (!this.canMoveEntity(entityId, targetId)) {
418
436
  this.emitPlatformEvent('move_entity_failed', {
@@ -454,12 +472,12 @@ class WorldModel {
454
472
  return false;
455
473
  }
456
474
  // Check if target can contain - using our new utility
457
- if (!(0, container_utils_1.canContain)(target)) {
475
+ if (!(0, container_utils_js_1.canContain)(target)) {
458
476
  return false;
459
477
  }
460
478
  // Check container constraints
461
- if (target.hasTrait(trait_types_1.TraitType.CONTAINER) && target.hasTrait(trait_types_1.TraitType.OPENABLE)) {
462
- const openable = target.getTrait(openableTrait_1.OpenableTrait);
479
+ if (target.hasTrait(trait_types_js_1.TraitType.CONTAINER) && target.hasTrait(trait_types_js_1.TraitType.OPENABLE)) {
480
+ const openable = target.getTrait(openableTrait_js_1.OpenableTrait);
463
481
  if (openable && !openable.isOpen) {
464
482
  return false;
465
483
  }
@@ -474,7 +492,7 @@ class WorldModel {
474
492
  if (!parent)
475
493
  return undefined;
476
494
  const parentEntity = this.getEntity(parent);
477
- if (parentEntity?.hasTrait(trait_types_1.TraitType.ROOM)) {
495
+ if (parentEntity?.hasTrait(trait_types_js_1.TraitType.ROOM)) {
478
496
  return parentEntity;
479
497
  }
480
498
  current = parent;
@@ -489,16 +507,9 @@ class WorldModel {
489
507
  if (visited.has(id) || depth > this.config.maxDepth)
490
508
  return;
491
509
  visited.add(id);
492
- // For the root entity, use the provided options
493
- // For recursive calls, always include worn items to get complete contents
494
- const contentsOptions = isRoot ? {
495
- visibleOnly: options.visibleOnly,
496
- includeWorn: options.includeWorn
497
- } : {
498
- visibleOnly: options.visibleOnly,
499
- includeWorn: true // Always include worn items when recursing
500
- };
501
- const contents = this.getContents(id, contentsOptions);
510
+ // ADR-247: worn items are always included now, so root and recursive
511
+ // calls share one options shape (visibleOnly still varies by caller).
512
+ const contents = this.getContents(id, { visibleOnly: options.visibleOnly });
502
513
  result.push(...contents);
503
514
  if (options.recursive) {
504
515
  contents.forEach(item => traverse(item.id, depth + 1, false));
@@ -617,7 +628,7 @@ class WorldModel {
617
628
  return [];
618
629
  const fromRoom = this.getEntity(fromRoomId);
619
630
  const toRoom = this.getEntity(toRoomId);
620
- if (!fromRoom?.hasTrait(trait_types_1.TraitType.ROOM) || !toRoom?.hasTrait(trait_types_1.TraitType.ROOM)) {
631
+ if (!fromRoom?.hasTrait(trait_types_js_1.TraitType.ROOM) || !toRoom?.hasTrait(trait_types_js_1.TraitType.ROOM)) {
621
632
  return null;
622
633
  }
623
634
  // Simple BFS pathfinding
@@ -632,7 +643,7 @@ class WorldModel {
632
643
  const room = this.getEntity(roomId);
633
644
  if (!room)
634
645
  continue;
635
- const roomTrait = room.getTrait(room_1.RoomTrait);
646
+ const roomTrait = room.getTrait(index_js_1.RoomTrait);
636
647
  const exits = roomTrait?.exits || {};
637
648
  for (const [direction, exitInfo] of Object.entries(exits)) {
638
649
  let targetRoom;
@@ -651,12 +662,12 @@ class WorldModel {
651
662
  continue;
652
663
  pathElement = exitInfo.via;
653
664
  // Get destination based on entity type
654
- if (exitEntity.hasTrait(trait_types_1.TraitType.DOOR)) {
655
- const door = exitEntity.getTrait(door_1.DoorTrait);
665
+ if (exitEntity.hasTrait(trait_types_js_1.TraitType.DOOR)) {
666
+ const door = exitEntity.getTrait(index_js_2.DoorTrait);
656
667
  targetRoom = door?.room1 === roomId ? door?.room2 : door?.room1;
657
668
  }
658
- else if (exitEntity.hasTrait(trait_types_1.TraitType.EXIT)) {
659
- targetRoom = exitEntity.getTrait(exitTrait_1.ExitTrait)?.to;
669
+ else if (exitEntity.hasTrait(trait_types_js_1.TraitType.EXIT)) {
670
+ targetRoom = exitEntity.getTrait(exitTrait_js_1.ExitTrait)?.to;
660
671
  }
661
672
  else {
662
673
  // Not a valid door/exit entity
@@ -901,6 +912,22 @@ class WorldModel {
901
912
  priority: 100,
902
913
  source: 'core'
903
914
  });
915
+ // A door is present at BOTH of its rooms (ADR-234 AC-3; David's ruling
916
+ // 2026-07-18): referenceable from either side. Only the door enters
917
+ // scope this way — the far room and its contents never do.
918
+ this.addScopeRule({
919
+ id: 'default_door_visibility',
920
+ fromLocations: '*',
921
+ includeEntities: (context) => this.findByTrait(trait_types_js_1.TraitType.DOOR)
922
+ .filter((door) => {
923
+ const doorTrait = door.get(trait_types_js_1.TraitType.DOOR);
924
+ return doorTrait !== undefined
925
+ && (doorTrait.room1 === context.currentLocation || doorTrait.room2 === context.currentLocation);
926
+ })
927
+ .map((door) => door.id),
928
+ priority: 50,
929
+ source: 'core'
930
+ });
904
931
  }
905
932
  /**
906
933
  * Get physically visible entities using VisibilityBehavior (line-of-sight)
@@ -922,7 +949,7 @@ class WorldModel {
922
949
  const observer = this.getEntity(observerId);
923
950
  if (!observer)
924
951
  return [];
925
- return VisibilityBehavior_1.VisibilityBehavior.getVisible(observer, this);
952
+ return VisibilityBehavior_js_1.VisibilityBehavior.getVisible(observer, this);
926
953
  }
927
954
  /**
928
955
  * Get entities in scope for command resolution using the scope system
@@ -965,22 +992,49 @@ class WorldModel {
965
992
  const target = this.getEntity(targetId);
966
993
  if (!observer || !target)
967
994
  return false;
968
- return VisibilityBehavior_1.VisibilityBehavior.canSee(observer, target, this);
995
+ return VisibilityBehavior_js_1.VisibilityBehavior.canSee(observer, target, this);
969
996
  }
970
997
  // ========== Convenience Creators ==========
971
998
  /**
972
999
  * Create a bidirectional connection between two rooms.
973
1000
  * Sets exits in both directions (e.g. NORTH on room1, SOUTH on room2).
1001
+ *
1002
+ * With `doorId` (ADR-237 D4) this is the platform's one door-wiring
1003
+ * implementation: the door id is stamped on both exits (`via`) and the
1004
+ * door entity is placed in room1 for scope resolution. Throws if the id
1005
+ * resolves to no entity or to an entity without DoorTrait, or if the
1006
+ * trait's room pair disagrees with the rooms passed — the primitive owns
1007
+ * the invariant that DoorTrait and the exits never disagree.
974
1008
  */
975
- connectRooms(room1Id, room2Id, direction) {
1009
+ connectRooms(room1Id, room2Id, direction, doorId) {
976
1010
  const room1 = this.getEntity(room1Id);
977
1011
  const room2 = this.getEntity(room2Id);
978
1012
  if (!room1 || !room2) {
979
1013
  throw new Error(`connectRooms: both rooms must exist (${room1Id}, ${room2Id})`);
980
1014
  }
981
- const opposite = (0, directions_1.getOppositeDirection)(direction);
982
- roomBehavior_1.RoomBehavior.setExit(room1, direction, room2Id);
983
- roomBehavior_1.RoomBehavior.setExit(room2, opposite, room1Id);
1015
+ const opposite = (0, directions_js_1.getOppositeDirection)(direction);
1016
+ if (doorId === undefined) {
1017
+ roomBehavior_js_1.RoomBehavior.setExit(room1, direction, room2Id);
1018
+ roomBehavior_js_1.RoomBehavior.setExit(room2, opposite, room1Id);
1019
+ return;
1020
+ }
1021
+ const door = this.getEntity(doorId);
1022
+ if (!door) {
1023
+ throw new Error(`connectRooms: door must exist (${doorId})`);
1024
+ }
1025
+ const doorTrait = door.get(trait_types_js_1.TraitType.DOOR);
1026
+ if (!doorTrait) {
1027
+ throw new Error(`connectRooms: \`${doorId}\` has no DoorTrait — compose the trait before wiring`);
1028
+ }
1029
+ // DoorTrait's constructor requires both rooms, so the pair is always
1030
+ // pre-set: verify it names the rooms being wired (room1 = placement).
1031
+ if (doorTrait.room1 !== room1Id || doorTrait.room2 !== room2Id) {
1032
+ throw new Error(`connectRooms: DoorTrait on \`${doorId}\` connects (${doorTrait.room1}, ${doorTrait.room2}), not (${room1Id}, ${room2Id})`);
1033
+ }
1034
+ roomBehavior_js_1.RoomBehavior.setExit(room1, direction, room2Id, doorId);
1035
+ roomBehavior_js_1.RoomBehavior.setExit(room2, opposite, room1Id, doorId);
1036
+ // Place door in room1 for scope resolution
1037
+ this.moveEntity(doorId, room1Id);
984
1038
  }
985
1039
  /**
986
1040
  * Create a door entity and wire it into both rooms' exit data.
@@ -992,30 +1046,26 @@ class WorldModel {
992
1046
  if (!room1 || !room2) {
993
1047
  throw new Error(`createDoor: both rooms must exist (${opts.room1Id}, ${opts.room2Id})`);
994
1048
  }
995
- const door = this.createEntity(displayName, entity_types_1.EntityType.DOOR);
996
- door.add(new identityTrait_1.IdentityTrait({
1049
+ const door = this.createEntity(displayName, entity_types_js_1.EntityType.DOOR);
1050
+ door.add(new identityTrait_js_1.IdentityTrait({
997
1051
  name: displayName,
998
1052
  aliases: opts.aliases,
999
1053
  description: opts.description,
1000
1054
  }));
1001
- door.add(new door_1.DoorTrait({
1055
+ door.add(new index_js_2.DoorTrait({
1002
1056
  room1: opts.room1Id,
1003
1057
  room2: opts.room2Id,
1004
1058
  }));
1005
- door.add(new scenery_1.SceneryTrait());
1006
- door.add(new openableTrait_1.OpenableTrait({ isOpen: opts.isOpen ?? false }));
1059
+ door.add(new index_js_3.SceneryTrait());
1060
+ door.add(new openableTrait_js_1.OpenableTrait({ isOpen: opts.isOpen ?? false }));
1007
1061
  if (opts.isLocked !== undefined || opts.keyId) {
1008
- door.add(new lockableTrait_1.LockableTrait({
1062
+ door.add(new lockableTrait_js_1.LockableTrait({
1009
1063
  isLocked: opts.isLocked ?? true,
1010
- ...(opts.keyId ? { requiredKey: opts.keyId } : {}),
1064
+ ...(opts.keyId ? { keyId: opts.keyId } : {}),
1011
1065
  }));
1012
1066
  }
1013
- // Wire exits through the door
1014
- const opposite = (0, directions_1.getOppositeDirection)(opts.direction);
1015
- roomBehavior_1.RoomBehavior.setExit(room1, opts.direction, opts.room2Id, door.id);
1016
- roomBehavior_1.RoomBehavior.setExit(room2, opposite, opts.room1Id, door.id);
1017
- // Place door in room1 for scope resolution
1018
- this.moveEntity(door.id, opts.room1Id);
1067
+ // One wiring path (ADR-237 D4)
1068
+ this.connectRooms(opts.room1Id, opts.room2Id, opts.direction, door.id);
1019
1069
  return door;
1020
1070
  }
1021
1071
  // ── Wall Adjacency (ADR-173) ─────────────────────────────────────
@@ -1028,7 +1078,7 @@ class WorldModel {
1028
1078
  * @throws Error on any validation failure (per ADR-173 §"Rejection rules").
1029
1079
  */
1030
1080
  createWall(spec) {
1031
- return (0, wall_creation_1.createWall)(this.wallCreationSurface(), spec);
1081
+ return (0, wall_creation_js_1.createWall)(this.wallCreationSurface(), spec);
1032
1082
  }
1033
1083
  /**
1034
1084
  * Creates N walls between `from` and each room in `to` (ADR-173
@@ -1036,7 +1086,7 @@ class WorldModel {
1036
1086
  * on the K-th pair leaves walls 0..K-1 in the world.
1037
1087
  */
1038
1088
  createWalls(spec) {
1039
- return (0, wall_creation_1.createWalls)(this.wallCreationSurface(), spec);
1089
+ return (0, wall_creation_js_1.createWalls)(this.wallCreationSurface(), spec);
1040
1090
  }
1041
1091
  /**
1042
1092
  * Adapter exposing the narrow surface `wall-creation` requires
@@ -1046,7 +1096,7 @@ class WorldModel {
1046
1096
  return {
1047
1097
  getEntity: (id) => this.getEntity(id),
1048
1098
  getLocation: (entityId) => this.getLocation(entityId),
1049
- generateWallId: () => this.generateId(entity_types_1.EntityType.WALL),
1099
+ generateWallId: () => this.generateId(entity_types_js_1.EntityType.WALL),
1050
1100
  registerWall: (wall) => {
1051
1101
  this.entities.set(wall.id, wall);
1052
1102
  },
@@ -1068,14 +1118,14 @@ class WorldModel {
1068
1118
  if (options.parentRegionId && !this.hasEntity(options.parentRegionId)) {
1069
1119
  throw new Error(`createRegion: parent region '${options.parentRegionId}' not found`);
1070
1120
  }
1071
- const entity = new if_entity_1.IFEntity(id, entity_types_1.EntityType.REGION, {
1121
+ const entity = new if_entity_js_1.IFEntity(id, entity_types_js_1.EntityType.REGION, {
1072
1122
  attributes: {
1073
1123
  displayName: options.name,
1074
1124
  name: options.name,
1075
- entityType: entity_types_1.EntityType.REGION,
1125
+ entityType: entity_types_js_1.EntityType.REGION,
1076
1126
  },
1077
1127
  });
1078
- entity.add(new regionTrait_1.RegionTrait(options));
1128
+ entity.add(new regionTrait_js_1.RegionTrait(options));
1079
1129
  this.entities.set(id, entity);
1080
1130
  return entity;
1081
1131
  }
@@ -1091,7 +1141,7 @@ class WorldModel {
1091
1141
  if (!room) {
1092
1142
  throw new Error(`assignRoom: room '${roomId}' not found`);
1093
1143
  }
1094
- const roomTrait = room.get(trait_types_1.TraitType.ROOM);
1144
+ const roomTrait = room.get(trait_types_js_1.TraitType.ROOM);
1095
1145
  if (!roomTrait) {
1096
1146
  throw new Error(`assignRoom: entity '${roomId}' does not have RoomTrait`);
1097
1147
  }
@@ -1099,7 +1149,7 @@ class WorldModel {
1099
1149
  if (!region) {
1100
1150
  throw new Error(`assignRoom: region '${regionId}' not found`);
1101
1151
  }
1102
- if (!region.hasTrait(trait_types_1.TraitType.REGION)) {
1152
+ if (!region.hasTrait(trait_types_js_1.TraitType.REGION)) {
1103
1153
  throw new Error(`assignRoom: entity '${regionId}' is not a region`);
1104
1154
  }
1105
1155
  roomTrait.regionId = regionId;
@@ -1120,14 +1170,14 @@ class WorldModel {
1120
1170
  // If the entity is a room, use its regionId directly.
1121
1171
  // Otherwise, resolve the containing room.
1122
1172
  let roomRegionId;
1123
- if (entity.type === entity_types_1.EntityType.ROOM) {
1124
- roomRegionId = entity.get(trait_types_1.TraitType.ROOM)?.regionId;
1173
+ if (entity.type === entity_types_js_1.EntityType.ROOM) {
1174
+ roomRegionId = entity.get(trait_types_js_1.TraitType.ROOM)?.regionId;
1125
1175
  }
1126
1176
  else {
1127
1177
  const room = this.getContainingRoom(entityId);
1128
1178
  if (!room)
1129
1179
  return false;
1130
- roomRegionId = room.get(trait_types_1.TraitType.ROOM)?.regionId;
1180
+ roomRegionId = room.get(trait_types_js_1.TraitType.ROOM)?.regionId;
1131
1181
  }
1132
1182
  if (!roomRegionId)
1133
1183
  return false;
@@ -1146,10 +1196,10 @@ class WorldModel {
1146
1196
  const fromRoom = this.getEntity(fromRoomId);
1147
1197
  const toRoom = this.getEntity(toRoomId);
1148
1198
  const fromChain = fromRoom
1149
- ? this.getRegionAncestry(fromRoom.get(trait_types_1.TraitType.ROOM)?.regionId)
1199
+ ? this.getRegionAncestry(fromRoom.get(trait_types_js_1.TraitType.ROOM)?.regionId)
1150
1200
  : [];
1151
1201
  const toChain = toRoom
1152
- ? this.getRegionAncestry(toRoom.get(trait_types_1.TraitType.ROOM)?.regionId)
1202
+ ? this.getRegionAncestry(toRoom.get(trait_types_js_1.TraitType.ROOM)?.regionId)
1153
1203
  : [];
1154
1204
  // Convert to sets for fast lookup
1155
1205
  const fromSet = new Set(fromChain);
@@ -1176,7 +1226,7 @@ class WorldModel {
1176
1226
  const region = this.getEntity(currentId);
1177
1227
  if (!region)
1178
1228
  break;
1179
- const trait = region.get(trait_types_1.TraitType.REGION);
1229
+ const trait = region.get(trait_types_js_1.TraitType.REGION);
1180
1230
  if (!trait)
1181
1231
  break;
1182
1232
  chain.push(currentId);
@@ -1199,7 +1249,7 @@ class WorldModel {
1199
1249
  const region = this.getEntity(currentId);
1200
1250
  if (!region)
1201
1251
  return false;
1202
- const trait = region.get(trait_types_1.TraitType.REGION);
1252
+ const trait = region.get(trait_types_js_1.TraitType.REGION);
1203
1253
  if (!trait)
1204
1254
  return false;
1205
1255
  currentId = trait.parentRegionId;
@@ -1218,14 +1268,14 @@ class WorldModel {
1218
1268
  if (this.hasEntity(id)) {
1219
1269
  throw new Error(`createScene: entity '${id}' already exists`);
1220
1270
  }
1221
- const entity = new if_entity_1.IFEntity(id, entity_types_1.EntityType.SCENE, {
1271
+ const entity = new if_entity_js_1.IFEntity(id, entity_types_js_1.EntityType.SCENE, {
1222
1272
  attributes: {
1223
1273
  displayName: options.name,
1224
1274
  name: options.name,
1225
- entityType: entity_types_1.EntityType.SCENE,
1275
+ entityType: entity_types_js_1.EntityType.SCENE,
1226
1276
  },
1227
1277
  });
1228
- entity.add(new sceneTrait_1.SceneTrait({
1278
+ entity.add(new sceneTrait_js_1.SceneTrait({
1229
1279
  name: options.name,
1230
1280
  recurring: options.recurring,
1231
1281
  }));
@@ -1267,7 +1317,7 @@ class WorldModel {
1267
1317
  const entity = this.getEntity(sceneId);
1268
1318
  if (!entity)
1269
1319
  return false;
1270
- return entity.get(trait_types_1.TraitType.SCENE)?.state === 'active';
1320
+ return entity.get(trait_types_js_1.TraitType.SCENE)?.state === 'active';
1271
1321
  }
1272
1322
  /**
1273
1323
  * Returns true if the scene has reached the 'ended' state.
@@ -1280,7 +1330,7 @@ class WorldModel {
1280
1330
  const entity = this.getEntity(sceneId);
1281
1331
  if (!entity)
1282
1332
  return false;
1283
- return entity.get(trait_types_1.TraitType.SCENE)?.state === 'ended';
1333
+ return entity.get(trait_types_js_1.TraitType.SCENE)?.state === 'ended';
1284
1334
  }
1285
1335
  /**
1286
1336
  * Returns true if the scene has ever been active (beganAtTurn is set).
@@ -1291,7 +1341,7 @@ class WorldModel {
1291
1341
  const entity = this.getEntity(sceneId);
1292
1342
  if (!entity)
1293
1343
  return false;
1294
- return entity.get(trait_types_1.TraitType.SCENE)?.beganAtTurn !== undefined;
1344
+ return entity.get(trait_types_js_1.TraitType.SCENE)?.beganAtTurn !== undefined;
1295
1345
  }
1296
1346
  }
1297
1347
  exports.WorldModel = WorldModel;