@sharpee/world-model 3.1.0 → 3.5.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 (629) 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 -21
  12. package/behaviors/index.d.ts.map +1 -1
  13. package/behaviors/index.js +33 -33
  14. package/behaviors/index.js.map +1 -1
  15. package/capabilities/action-interceptor.d.ts +3 -3
  16. package/capabilities/action-interceptor.d.ts.map +1 -1
  17. package/capabilities/capability-behavior.d.ts +3 -3
  18. package/capabilities/capability-behavior.d.ts.map +1 -1
  19. package/capabilities/capability-binding.d.ts +3 -3
  20. package/capabilities/capability-binding.d.ts.map +1 -1
  21. package/capabilities/capability-helpers.d.ts +2 -2
  22. package/capabilities/capability-helpers.d.ts.map +1 -1
  23. package/capabilities/entity-builder.d.ts +2 -2
  24. package/capabilities/entity-builder.d.ts.map +1 -1
  25. package/capabilities/index.d.ts +9 -9
  26. package/capabilities/index.d.ts.map +1 -1
  27. package/capabilities/index.js +26 -26
  28. package/capabilities/index.js.map +1 -1
  29. package/capabilities/interceptor-binding.d.ts +2 -2
  30. package/capabilities/interceptor-binding.d.ts.map +1 -1
  31. package/capabilities/interceptor-helpers.d.ts +2 -2
  32. package/capabilities/interceptor-helpers.d.ts.map +1 -1
  33. package/commands/command-types.d.ts +2 -2
  34. package/commands/command-types.d.ts.map +1 -1
  35. package/commands/index.d.ts +3 -3
  36. package/commands/index.d.ts.map +1 -1
  37. package/commands/index.js +3 -3
  38. package/commands/index.js.map +1 -1
  39. package/commands/parsed-command.d.ts +13 -0
  40. package/commands/parsed-command.d.ts.map +1 -1
  41. package/commands/validated-command.d.ts +16 -2
  42. package/commands/validated-command.d.ts.map +1 -1
  43. package/constants/index.d.ts +3 -3
  44. package/constants/index.d.ts.map +1 -1
  45. package/constants/index.js +3 -3
  46. package/constants/index.js.map +1 -1
  47. package/entities/entity-store.d.ts +1 -1
  48. package/entities/entity-store.d.ts.map +1 -1
  49. package/entities/entity-store.js +2 -2
  50. package/entities/entity-store.js.map +1 -1
  51. package/entities/if-entity.d.ts +3 -3
  52. package/entities/if-entity.d.ts.map +1 -1
  53. package/entities/if-entity.js +38 -34
  54. package/entities/if-entity.js.map +1 -1
  55. package/entities/index.d.ts +6 -6
  56. package/entities/index.d.ts.map +1 -1
  57. package/entities/index.js +10 -10
  58. package/entities/index.js.map +1 -1
  59. package/entities/trait-rehydrator.d.ts +43 -0
  60. package/entities/trait-rehydrator.d.ts.map +1 -0
  61. package/entities/trait-rehydrator.js +45 -0
  62. package/entities/trait-rehydrator.js.map +1 -0
  63. package/entities/wall-entity.d.ts +2 -2
  64. package/entities/wall-entity.d.ts.map +1 -1
  65. package/entities/wall-entity.js +2 -2
  66. package/entities/wall-entity.js.map +1 -1
  67. package/examples/event-handler-registration.d.ts +1 -1
  68. package/examples/event-handler-registration.d.ts.map +1 -1
  69. package/examples/event-handler-registration.js +24 -24
  70. package/examples/event-handler-registration.js.map +1 -1
  71. package/extensions/base-extension.d.ts +3 -3
  72. package/extensions/base-extension.d.ts.map +1 -1
  73. package/extensions/index.d.ts +4 -4
  74. package/extensions/index.d.ts.map +1 -1
  75. package/extensions/index.js +11 -11
  76. package/extensions/index.js.map +1 -1
  77. package/extensions/loader.d.ts +1 -1
  78. package/extensions/loader.d.ts.map +1 -1
  79. package/extensions/loader.js +2 -2
  80. package/extensions/loader.js.map +1 -1
  81. package/extensions/manager.d.ts +1 -1
  82. package/extensions/manager.d.ts.map +1 -1
  83. package/extensions/manager.js +2 -2
  84. package/extensions/manager.js.map +1 -1
  85. package/extensions/registry.d.ts +2 -2
  86. package/extensions/registry.d.ts.map +1 -1
  87. package/extensions/registry.js +4 -4
  88. package/extensions/registry.js.map +1 -1
  89. package/extensions/types.d.ts +2 -2
  90. package/extensions/types.d.ts.map +1 -1
  91. package/index.d.ts +58 -59
  92. package/index.d.ts.map +1 -1
  93. package/index.js +62 -63
  94. package/index.js.map +1 -1
  95. package/interfaces/command-executor.d.ts +1 -1
  96. package/interfaces/command-executor.d.ts.map +1 -1
  97. package/interfaces/command-processor.d.ts +1 -1
  98. package/interfaces/command-processor.d.ts.map +1 -1
  99. package/interfaces/command-validator.d.ts +1 -1
  100. package/interfaces/command-validator.d.ts.map +1 -1
  101. package/interfaces/index.d.ts +4 -4
  102. package/interfaces/index.d.ts.map +1 -1
  103. package/interfaces/index.js +4 -4
  104. package/interfaces/index.js.map +1 -1
  105. package/interfaces/parser.d.ts +1 -1
  106. package/interfaces/parser.d.ts.map +1 -1
  107. package/package.json +3 -3
  108. package/scope/index.d.ts +3 -3
  109. package/scope/index.d.ts.map +1 -1
  110. package/scope/index.js +3 -3
  111. package/scope/index.js.map +1 -1
  112. package/scope/scope-evaluator.d.ts +2 -2
  113. package/scope/scope-evaluator.d.ts.map +1 -1
  114. package/scope/scope-registry.d.ts +1 -1
  115. package/scope/scope-registry.d.ts.map +1 -1
  116. package/state-adjectives.d.ts +1 -1
  117. package/state-adjectives.d.ts.map +1 -1
  118. package/state-adjectives.js +5 -5
  119. package/state-adjectives.js.map +1 -1
  120. package/state-clauses.d.ts +1 -1
  121. package/state-clauses.d.ts.map +1 -1
  122. package/state-clauses.js +5 -5
  123. package/state-clauses.js.map +1 -1
  124. package/test-structure.d.ts +1 -1
  125. package/test-structure.d.ts.map +1 -1
  126. package/test-structure.js +7 -7
  127. package/test-structure.js.map +1 -1
  128. package/traits/acoustic/acousticDampenerTrait.d.ts +1 -1
  129. package/traits/acoustic/acousticDampenerTrait.d.ts.map +1 -1
  130. package/traits/acoustic/acousticDampenerTrait.js +3 -3
  131. package/traits/acoustic/acousticDampenerTrait.js.map +1 -1
  132. package/traits/acoustic/acousticTrait.d.ts +1 -1
  133. package/traits/acoustic/acousticTrait.d.ts.map +1 -1
  134. package/traits/acoustic/acousticTrait.js +3 -3
  135. package/traits/acoustic/acousticTrait.js.map +1 -1
  136. package/traits/acoustic/index.d.ts +2 -2
  137. package/traits/acoustic/index.d.ts.map +1 -1
  138. package/traits/acoustic/index.js +5 -5
  139. package/traits/acoustic/index.js.map +1 -1
  140. package/traits/actor/actorBehavior.d.ts +4 -4
  141. package/traits/actor/actorBehavior.d.ts.map +1 -1
  142. package/traits/actor/actorBehavior.js +38 -34
  143. package/traits/actor/actorBehavior.js.map +1 -1
  144. package/traits/actor/actorTrait.d.ts +1 -1
  145. package/traits/actor/actorTrait.d.ts.map +1 -1
  146. package/traits/actor/actorTrait.js +3 -3
  147. package/traits/actor/actorTrait.js.map +1 -1
  148. package/traits/actor/index.d.ts +2 -2
  149. package/traits/actor/index.d.ts.map +1 -1
  150. package/traits/actor/index.js +6 -6
  151. package/traits/actor/index.js.map +1 -1
  152. package/traits/all-traits.d.ts +30 -33
  153. package/traits/all-traits.d.ts.map +1 -1
  154. package/traits/all-traits.js +56 -62
  155. package/traits/all-traits.js.map +1 -1
  156. package/traits/attached/attachedTrait.d.ts +1 -1
  157. package/traits/attached/attachedTrait.d.ts.map +1 -1
  158. package/traits/attached/attachedTrait.js +3 -3
  159. package/traits/attached/attachedTrait.js.map +1 -1
  160. package/traits/attached/index.d.ts +1 -1
  161. package/traits/attached/index.d.ts.map +1 -1
  162. package/traits/attached/index.js +1 -1
  163. package/traits/attached/index.js.map +1 -1
  164. package/traits/breakable/breakableBehavior.d.ts +3 -3
  165. package/traits/breakable/breakableBehavior.d.ts.map +1 -1
  166. package/traits/breakable/breakableBehavior.js +10 -10
  167. package/traits/breakable/breakableBehavior.js.map +1 -1
  168. package/traits/breakable/breakableTrait.d.ts +1 -1
  169. package/traits/breakable/breakableTrait.d.ts.map +1 -1
  170. package/traits/breakable/index.d.ts +2 -2
  171. package/traits/breakable/index.d.ts.map +1 -1
  172. package/traits/breakable/index.js +4 -4
  173. package/traits/breakable/index.js.map +1 -1
  174. package/traits/button/buttonTrait.d.ts +1 -1
  175. package/traits/button/buttonTrait.d.ts.map +1 -1
  176. package/traits/button/buttonTrait.js +3 -3
  177. package/traits/button/buttonTrait.js.map +1 -1
  178. package/traits/button/index.d.ts +1 -1
  179. package/traits/button/index.d.ts.map +1 -1
  180. package/traits/button/index.js +1 -1
  181. package/traits/button/index.js.map +1 -1
  182. package/traits/character-model/characterModelTrait.d.ts +2 -2
  183. package/traits/character-model/characterModelTrait.d.ts.map +1 -1
  184. package/traits/character-model/characterModelTrait.js +16 -16
  185. package/traits/character-model/characterModelTrait.js.map +1 -1
  186. package/traits/character-model/index.d.ts +2 -2
  187. package/traits/character-model/index.d.ts.map +1 -1
  188. package/traits/character-model/index.js +3 -3
  189. package/traits/character-model/index.js.map +1 -1
  190. package/traits/climbable/climbableBehavior.d.ts +1 -1
  191. package/traits/climbable/climbableBehavior.d.ts.map +1 -1
  192. package/traits/climbable/climbableBehavior.js +9 -9
  193. package/traits/climbable/climbableBehavior.js.map +1 -1
  194. package/traits/climbable/climbableTrait.d.ts +1 -1
  195. package/traits/climbable/climbableTrait.d.ts.map +1 -1
  196. package/traits/climbable/climbableTrait.js +4 -4
  197. package/traits/climbable/climbableTrait.js.map +1 -1
  198. package/traits/climbable/index.d.ts +2 -2
  199. package/traits/climbable/index.d.ts.map +1 -1
  200. package/traits/climbable/index.js +2 -2
  201. package/traits/climbable/index.js.map +1 -1
  202. package/traits/clothing/clothingTrait.d.ts +2 -2
  203. package/traits/clothing/clothingTrait.d.ts.map +1 -1
  204. package/traits/clothing/clothingTrait.js +3 -3
  205. package/traits/clothing/clothingTrait.js.map +1 -1
  206. package/traits/clothing/index.d.ts +1 -1
  207. package/traits/clothing/index.d.ts.map +1 -1
  208. package/traits/clothing/index.js +1 -1
  209. package/traits/clothing/index.js.map +1 -1
  210. package/traits/combatant/combatantBehavior.d.ts +3 -3
  211. package/traits/combatant/combatantBehavior.d.ts.map +1 -1
  212. package/traits/combatant/combatantBehavior.js +26 -26
  213. package/traits/combatant/combatantBehavior.js.map +1 -1
  214. package/traits/combatant/combatantTrait.d.ts +1 -1
  215. package/traits/combatant/combatantTrait.d.ts.map +1 -1
  216. package/traits/combatant/index.d.ts +2 -2
  217. package/traits/combatant/index.d.ts.map +1 -1
  218. package/traits/combatant/index.js +4 -4
  219. package/traits/combatant/index.js.map +1 -1
  220. package/traits/concealment/concealedStateTrait.d.ts +3 -3
  221. package/traits/concealment/concealedStateTrait.d.ts.map +1 -1
  222. package/traits/concealment/concealedStateTrait.js +2 -2
  223. package/traits/concealment/concealedStateTrait.js.map +1 -1
  224. package/traits/concealment/concealedVisibilityBehavior.d.ts +2 -2
  225. package/traits/concealment/concealedVisibilityBehavior.d.ts.map +1 -1
  226. package/traits/concealment/concealedVisibilityBehavior.js +3 -3
  227. package/traits/concealment/concealedVisibilityBehavior.js.map +1 -1
  228. package/traits/concealment/concealmentTrait.d.ts +1 -1
  229. package/traits/concealment/concealmentTrait.d.ts.map +1 -1
  230. package/traits/concealment/index.d.ts +3 -3
  231. package/traits/concealment/index.d.ts.map +1 -1
  232. package/traits/concealment/index.js +3 -3
  233. package/traits/concealment/index.js.map +1 -1
  234. package/traits/container/container-utils.d.ts +2 -2
  235. package/traits/container/container-utils.d.ts.map +1 -1
  236. package/traits/container/container-utils.js +14 -14
  237. package/traits/container/container-utils.js.map +1 -1
  238. package/traits/container/containerBehavior.d.ts +7 -2
  239. package/traits/container/containerBehavior.d.ts.map +1 -1
  240. package/traits/container/containerBehavior.js +26 -26
  241. package/traits/container/containerBehavior.js.map +1 -1
  242. package/traits/container/containerTrait.d.ts +1 -1
  243. package/traits/container/containerTrait.d.ts.map +1 -1
  244. package/traits/container/containerTrait.js +3 -3
  245. package/traits/container/containerTrait.js.map +1 -1
  246. package/traits/container/index.d.ts +3 -3
  247. package/traits/container/index.d.ts.map +1 -1
  248. package/traits/container/index.js +9 -9
  249. package/traits/container/index.js.map +1 -1
  250. package/traits/cuttable/cuttableBehavior.d.ts +2 -2
  251. package/traits/cuttable/cuttableBehavior.d.ts.map +1 -1
  252. package/traits/cuttable/cuttableBehavior.js +6 -6
  253. package/traits/cuttable/cuttableBehavior.js.map +1 -1
  254. package/traits/cuttable/cuttableTrait.d.ts +1 -1
  255. package/traits/cuttable/cuttableTrait.d.ts.map +1 -1
  256. package/traits/cuttable/cuttableTrait.js +3 -3
  257. package/traits/cuttable/cuttableTrait.js.map +1 -1
  258. package/traits/cuttable/index.d.ts +2 -2
  259. package/traits/cuttable/index.d.ts.map +1 -1
  260. package/traits/cuttable/index.js +2 -2
  261. package/traits/cuttable/index.js.map +1 -1
  262. package/traits/deadly-room/deadlyRoomBehavior.d.ts +2 -2
  263. package/traits/deadly-room/deadlyRoomBehavior.d.ts.map +1 -1
  264. package/traits/deadly-room/deadlyRoomBehavior.js +4 -4
  265. package/traits/deadly-room/deadlyRoomBehavior.js.map +1 -1
  266. package/traits/deadly-room/deadlyRoomTrait.d.ts +1 -1
  267. package/traits/deadly-room/deadlyRoomTrait.d.ts.map +1 -1
  268. package/traits/deadly-room/index.d.ts +2 -2
  269. package/traits/deadly-room/index.d.ts.map +1 -1
  270. package/traits/deadly-room/index.js +4 -4
  271. package/traits/deadly-room/index.js.map +1 -1
  272. package/traits/destructible/destructibleBehavior.d.ts +3 -3
  273. package/traits/destructible/destructibleBehavior.d.ts.map +1 -1
  274. package/traits/destructible/destructibleBehavior.js +12 -12
  275. package/traits/destructible/destructibleBehavior.js.map +1 -1
  276. package/traits/destructible/destructibleTrait.d.ts +1 -1
  277. package/traits/destructible/destructibleTrait.d.ts.map +1 -1
  278. package/traits/destructible/index.d.ts +2 -2
  279. package/traits/destructible/index.d.ts.map +1 -1
  280. package/traits/destructible/index.js +4 -4
  281. package/traits/destructible/index.js.map +1 -1
  282. package/traits/diggable/diggableBehavior.d.ts +2 -2
  283. package/traits/diggable/diggableBehavior.d.ts.map +1 -1
  284. package/traits/diggable/diggableBehavior.js +6 -6
  285. package/traits/diggable/diggableBehavior.js.map +1 -1
  286. package/traits/diggable/diggableTrait.d.ts +1 -1
  287. package/traits/diggable/diggableTrait.d.ts.map +1 -1
  288. package/traits/diggable/diggableTrait.js +3 -3
  289. package/traits/diggable/diggableTrait.js.map +1 -1
  290. package/traits/diggable/index.d.ts +2 -2
  291. package/traits/diggable/index.d.ts.map +1 -1
  292. package/traits/diggable/index.js +2 -2
  293. package/traits/diggable/index.js.map +1 -1
  294. package/traits/door/doorBehavior.d.ts +2 -2
  295. package/traits/door/doorBehavior.d.ts.map +1 -1
  296. package/traits/door/doorBehavior.js +11 -11
  297. package/traits/door/doorBehavior.js.map +1 -1
  298. package/traits/door/doorTrait.d.ts +1 -1
  299. package/traits/door/doorTrait.d.ts.map +1 -1
  300. package/traits/door/doorTrait.js +3 -3
  301. package/traits/door/doorTrait.js.map +1 -1
  302. package/traits/door/index.d.ts +2 -2
  303. package/traits/door/index.d.ts.map +1 -1
  304. package/traits/door/index.js +4 -4
  305. package/traits/door/index.js.map +1 -1
  306. package/traits/edible/edibleBehavior.d.ts +3 -3
  307. package/traits/edible/edibleBehavior.d.ts.map +1 -1
  308. package/traits/edible/edibleBehavior.js +20 -20
  309. package/traits/edible/edibleBehavior.js.map +1 -1
  310. package/traits/edible/edibleTrait.d.ts +1 -1
  311. package/traits/edible/edibleTrait.d.ts.map +1 -1
  312. package/traits/edible/edibleTrait.js +3 -3
  313. package/traits/edible/edibleTrait.js.map +1 -1
  314. package/traits/edible/index.d.ts +2 -2
  315. package/traits/edible/index.d.ts.map +1 -1
  316. package/traits/edible/index.js +2 -2
  317. package/traits/edible/index.js.map +1 -1
  318. package/traits/enterable/enterableTrait.d.ts +1 -1
  319. package/traits/enterable/enterableTrait.d.ts.map +1 -1
  320. package/traits/enterable/enterableTrait.js +4 -4
  321. package/traits/enterable/enterableTrait.js.map +1 -1
  322. package/traits/enterable/index.d.ts +1 -1
  323. package/traits/enterable/index.d.ts.map +1 -1
  324. package/traits/enterable/index.js +1 -1
  325. package/traits/enterable/index.js.map +1 -1
  326. package/traits/equipped/equippedTrait.d.ts +1 -1
  327. package/traits/equipped/equippedTrait.d.ts.map +1 -1
  328. package/traits/equipped/index.d.ts +1 -1
  329. package/traits/equipped/index.d.ts.map +1 -1
  330. package/traits/equipped/index.js +2 -2
  331. package/traits/equipped/index.js.map +1 -1
  332. package/traits/exit/exitBehavior.d.ts +2 -2
  333. package/traits/exit/exitBehavior.d.ts.map +1 -1
  334. package/traits/exit/exitBehavior.js +27 -27
  335. package/traits/exit/exitBehavior.js.map +1 -1
  336. package/traits/exit/exitTrait.d.ts +1 -1
  337. package/traits/exit/exitTrait.d.ts.map +1 -1
  338. package/traits/exit/exitTrait.js +3 -3
  339. package/traits/exit/exitTrait.js.map +1 -1
  340. package/traits/exit/index.d.ts +2 -2
  341. package/traits/exit/index.d.ts.map +1 -1
  342. package/traits/exit/index.js +4 -4
  343. package/traits/exit/index.js.map +1 -1
  344. package/traits/health/healthBehavior.d.ts +2 -2
  345. package/traits/health/healthBehavior.d.ts.map +1 -1
  346. package/traits/health/healthBehavior.js +4 -4
  347. package/traits/health/healthBehavior.js.map +1 -1
  348. package/traits/health/healthTrait.d.ts +1 -1
  349. package/traits/health/healthTrait.d.ts.map +1 -1
  350. package/traits/health/index.d.ts +2 -2
  351. package/traits/health/index.d.ts.map +1 -1
  352. package/traits/health/index.js +4 -4
  353. package/traits/health/index.js.map +1 -1
  354. package/traits/identity/identityBehavior.d.ts +2 -2
  355. package/traits/identity/identityBehavior.d.ts.map +1 -1
  356. package/traits/identity/identityBehavior.js +16 -16
  357. package/traits/identity/identityBehavior.js.map +1 -1
  358. package/traits/identity/identityTrait.d.ts +8 -1
  359. package/traits/identity/identityTrait.d.ts.map +1 -1
  360. package/traits/identity/identityTrait.js +10 -3
  361. package/traits/identity/identityTrait.js.map +1 -1
  362. package/traits/identity/index.d.ts +3 -2
  363. package/traits/identity/index.d.ts.map +1 -1
  364. package/traits/identity/index.js +3 -2
  365. package/traits/identity/index.js.map +1 -1
  366. package/traits/identity/name-vocabulary.d.ts +31 -0
  367. package/traits/identity/name-vocabulary.d.ts.map +1 -0
  368. package/traits/identity/name-vocabulary.js +57 -0
  369. package/traits/identity/name-vocabulary.js.map +1 -0
  370. package/traits/implementations.d.ts +65 -42
  371. package/traits/implementations.d.ts.map +1 -1
  372. package/traits/implementations.js +163 -129
  373. package/traits/implementations.js.map +1 -1
  374. package/traits/index.d.ts +47 -48
  375. package/traits/index.d.ts.map +1 -1
  376. package/traits/index.js +47 -48
  377. package/traits/index.js.map +1 -1
  378. package/traits/light-source/index.d.ts +2 -2
  379. package/traits/light-source/index.d.ts.map +1 -1
  380. package/traits/light-source/index.js +4 -4
  381. package/traits/light-source/index.js.map +1 -1
  382. package/traits/light-source/lightSourceBehavior.d.ts +2 -2
  383. package/traits/light-source/lightSourceBehavior.d.ts.map +1 -1
  384. package/traits/light-source/lightSourceBehavior.js +16 -16
  385. package/traits/light-source/lightSourceBehavior.js.map +1 -1
  386. package/traits/light-source/lightSourceTrait.d.ts +1 -1
  387. package/traits/light-source/lightSourceTrait.d.ts.map +1 -1
  388. package/traits/light-source/lightSourceTrait.js +3 -3
  389. package/traits/light-source/lightSourceTrait.js.map +1 -1
  390. package/traits/listener/index.d.ts +1 -1
  391. package/traits/listener/index.d.ts.map +1 -1
  392. package/traits/listener/index.js +2 -2
  393. package/traits/listener/index.js.map +1 -1
  394. package/traits/listener/listenerTrait.d.ts +1 -1
  395. package/traits/listener/listenerTrait.d.ts.map +1 -1
  396. package/traits/listener/listenerTrait.js +3 -3
  397. package/traits/listener/listenerTrait.js.map +1 -1
  398. package/traits/lockable/index.d.ts +2 -2
  399. package/traits/lockable/index.d.ts.map +1 -1
  400. package/traits/lockable/index.js +2 -2
  401. package/traits/lockable/index.js.map +1 -1
  402. package/traits/lockable/lockableBehavior.d.ts +2 -2
  403. package/traits/lockable/lockableBehavior.d.ts.map +1 -1
  404. package/traits/lockable/lockableBehavior.js +19 -19
  405. package/traits/lockable/lockableBehavior.js.map +1 -1
  406. package/traits/lockable/lockableTrait.d.ts +1 -1
  407. package/traits/lockable/lockableTrait.d.ts.map +1 -1
  408. package/traits/lockable/lockableTrait.js +3 -3
  409. package/traits/lockable/lockableTrait.js.map +1 -1
  410. package/traits/moveable-scenery/index.d.ts +1 -1
  411. package/traits/moveable-scenery/index.d.ts.map +1 -1
  412. package/traits/moveable-scenery/index.js +1 -1
  413. package/traits/moveable-scenery/index.js.map +1 -1
  414. package/traits/moveable-scenery/moveableSceneryTrait.d.ts +1 -1
  415. package/traits/moveable-scenery/moveableSceneryTrait.d.ts.map +1 -1
  416. package/traits/moveable-scenery/moveableSceneryTrait.js +3 -3
  417. package/traits/moveable-scenery/moveableSceneryTrait.js.map +1 -1
  418. package/traits/npc/index.d.ts +1 -1
  419. package/traits/npc/index.d.ts.map +1 -1
  420. package/traits/npc/index.js +2 -2
  421. package/traits/npc/index.js.map +1 -1
  422. package/traits/npc/npcTrait.d.ts +1 -1
  423. package/traits/npc/npcTrait.d.ts.map +1 -1
  424. package/traits/obstructor-protocol.d.ts +3 -3
  425. package/traits/obstructor-protocol.d.ts.map +1 -1
  426. package/traits/open-inventory/index.d.ts +1 -1
  427. package/traits/open-inventory/index.d.ts.map +1 -1
  428. package/traits/open-inventory/index.js +2 -2
  429. package/traits/open-inventory/index.js.map +1 -1
  430. package/traits/open-inventory/openInventoryTrait.d.ts +1 -1
  431. package/traits/open-inventory/openInventoryTrait.d.ts.map +1 -1
  432. package/traits/open-inventory/openInventoryTrait.js +3 -3
  433. package/traits/open-inventory/openInventoryTrait.js.map +1 -1
  434. package/traits/openable/index.d.ts +2 -2
  435. package/traits/openable/index.d.ts.map +1 -1
  436. package/traits/openable/index.js +2 -2
  437. package/traits/openable/index.js.map +1 -1
  438. package/traits/openable/openableBehavior.d.ts +2 -2
  439. package/traits/openable/openableBehavior.d.ts.map +1 -1
  440. package/traits/openable/openableBehavior.js +13 -13
  441. package/traits/openable/openableBehavior.js.map +1 -1
  442. package/traits/openable/openableTrait.d.ts +1 -1
  443. package/traits/openable/openableTrait.d.ts.map +1 -1
  444. package/traits/openable/openableTrait.js +3 -3
  445. package/traits/openable/openableTrait.js.map +1 -1
  446. package/traits/pullable/index.d.ts +1 -1
  447. package/traits/pullable/index.d.ts.map +1 -1
  448. package/traits/pullable/index.js +1 -1
  449. package/traits/pullable/index.js.map +1 -1
  450. package/traits/pullable/pullableTrait.d.ts +1 -1
  451. package/traits/pullable/pullableTrait.d.ts.map +1 -1
  452. package/traits/pullable/pullableTrait.js +3 -3
  453. package/traits/pullable/pullableTrait.js.map +1 -1
  454. package/traits/pushable/index.d.ts +1 -1
  455. package/traits/pushable/index.d.ts.map +1 -1
  456. package/traits/pushable/index.js +1 -1
  457. package/traits/pushable/index.js.map +1 -1
  458. package/traits/pushable/pushableTrait.d.ts +1 -1
  459. package/traits/pushable/pushableTrait.d.ts.map +1 -1
  460. package/traits/pushable/pushableTrait.js +3 -3
  461. package/traits/pushable/pushableTrait.js.map +1 -1
  462. package/traits/readable/index.d.ts +2 -2
  463. package/traits/readable/index.d.ts.map +1 -1
  464. package/traits/readable/index.js +4 -4
  465. package/traits/readable/index.js.map +1 -1
  466. package/traits/readable/readableBehavior.d.ts +1 -1
  467. package/traits/readable/readableBehavior.d.ts.map +1 -1
  468. package/traits/readable/readableBehavior.js +10 -10
  469. package/traits/readable/readableBehavior.js.map +1 -1
  470. package/traits/readable/readableTrait.d.ts +1 -1
  471. package/traits/readable/readableTrait.d.ts.map +1 -1
  472. package/traits/readable/readableTrait.js +3 -3
  473. package/traits/readable/readableTrait.js.map +1 -1
  474. package/traits/region/index.d.ts +1 -1
  475. package/traits/region/index.d.ts.map +1 -1
  476. package/traits/region/index.js +2 -2
  477. package/traits/region/index.js.map +1 -1
  478. package/traits/region/regionTrait.d.ts +1 -1
  479. package/traits/region/regionTrait.d.ts.map +1 -1
  480. package/traits/region/regionTrait.js +3 -3
  481. package/traits/region/regionTrait.js.map +1 -1
  482. package/traits/room/index.d.ts +2 -2
  483. package/traits/room/index.d.ts.map +1 -1
  484. package/traits/room/index.js +4 -4
  485. package/traits/room/index.js.map +1 -1
  486. package/traits/room/roomBehavior.d.ts +4 -4
  487. package/traits/room/roomBehavior.d.ts.map +1 -1
  488. package/traits/room/roomBehavior.js +25 -25
  489. package/traits/room/roomBehavior.js.map +1 -1
  490. package/traits/room/roomTrait.d.ts +2 -2
  491. package/traits/room/roomTrait.d.ts.map +1 -1
  492. package/traits/room/roomTrait.js +3 -3
  493. package/traits/room/roomTrait.js.map +1 -1
  494. package/traits/scene/index.d.ts +1 -1
  495. package/traits/scene/index.d.ts.map +1 -1
  496. package/traits/scene/index.js +2 -2
  497. package/traits/scene/index.js.map +1 -1
  498. package/traits/scene/sceneTrait.d.ts +1 -1
  499. package/traits/scene/sceneTrait.d.ts.map +1 -1
  500. package/traits/scene/sceneTrait.js +3 -3
  501. package/traits/scene/sceneTrait.js.map +1 -1
  502. package/traits/scenery/index.d.ts +2 -2
  503. package/traits/scenery/index.d.ts.map +1 -1
  504. package/traits/scenery/index.js +4 -4
  505. package/traits/scenery/index.js.map +1 -1
  506. package/traits/scenery/sceneryBehavior.d.ts +1 -1
  507. package/traits/scenery/sceneryBehavior.d.ts.map +1 -1
  508. package/traits/scenery/sceneryBehavior.js +5 -5
  509. package/traits/scenery/sceneryBehavior.js.map +1 -1
  510. package/traits/scenery/sceneryTrait.d.ts +1 -1
  511. package/traits/scenery/sceneryTrait.d.ts.map +1 -1
  512. package/traits/scenery/sceneryTrait.js +3 -3
  513. package/traits/scenery/sceneryTrait.js.map +1 -1
  514. package/traits/story-info/index.d.ts +1 -1
  515. package/traits/story-info/index.d.ts.map +1 -1
  516. package/traits/story-info/index.js +2 -2
  517. package/traits/story-info/index.js.map +1 -1
  518. package/traits/story-info/storyInfoTrait.d.ts +1 -1
  519. package/traits/story-info/storyInfoTrait.d.ts.map +1 -1
  520. package/traits/supporter/index.d.ts +2 -2
  521. package/traits/supporter/index.d.ts.map +1 -1
  522. package/traits/supporter/index.js +4 -4
  523. package/traits/supporter/index.js.map +1 -1
  524. package/traits/supporter/supporterBehavior.d.ts +3 -3
  525. package/traits/supporter/supporterBehavior.d.ts.map +1 -1
  526. package/traits/supporter/supporterBehavior.js +15 -15
  527. package/traits/supporter/supporterBehavior.js.map +1 -1
  528. package/traits/supporter/supporterTrait.d.ts +1 -1
  529. package/traits/supporter/supporterTrait.d.ts.map +1 -1
  530. package/traits/supporter/supporterTrait.js +3 -3
  531. package/traits/supporter/supporterTrait.js.map +1 -1
  532. package/traits/switchable/index.d.ts +2 -2
  533. package/traits/switchable/index.d.ts.map +1 -1
  534. package/traits/switchable/index.js +2 -2
  535. package/traits/switchable/index.js.map +1 -1
  536. package/traits/switchable/switchableBehavior.d.ts +2 -2
  537. package/traits/switchable/switchableBehavior.d.ts.map +1 -1
  538. package/traits/switchable/switchableBehavior.js +18 -18
  539. package/traits/switchable/switchableBehavior.js.map +1 -1
  540. package/traits/switchable/switchableTrait.d.ts +1 -1
  541. package/traits/switchable/switchableTrait.d.ts.map +1 -1
  542. package/traits/switchable/switchableTrait.js +3 -3
  543. package/traits/switchable/switchableTrait.js.map +1 -1
  544. package/traits/trait-types.d.ts +0 -1
  545. package/traits/trait-types.d.ts.map +1 -1
  546. package/traits/trait-types.js +0 -2
  547. package/traits/trait-types.js.map +1 -1
  548. package/traits/trait.d.ts +1 -1
  549. package/traits/trait.d.ts.map +1 -1
  550. package/traits/vehicle/index.d.ts +2 -2
  551. package/traits/vehicle/index.d.ts.map +1 -1
  552. package/traits/vehicle/index.js +2 -2
  553. package/traits/vehicle/index.js.map +1 -1
  554. package/traits/vehicle/vehicleBehavior.d.ts +2 -2
  555. package/traits/vehicle/vehicleBehavior.d.ts.map +1 -1
  556. package/traits/vehicle/vehicleBehavior.js +7 -7
  557. package/traits/vehicle/vehicleBehavior.js.map +1 -1
  558. package/traits/vehicle/vehicleTrait.d.ts +1 -1
  559. package/traits/vehicle/vehicleTrait.d.ts.map +1 -1
  560. package/traits/vehicle/vehicleTrait.js +4 -4
  561. package/traits/vehicle/vehicleTrait.js.map +1 -1
  562. package/traits/weapon/index.d.ts +2 -2
  563. package/traits/weapon/index.d.ts.map +1 -1
  564. package/traits/weapon/index.js +4 -4
  565. package/traits/weapon/index.js.map +1 -1
  566. package/traits/weapon/weaponBehavior.d.ts +11 -4
  567. package/traits/weapon/weaponBehavior.d.ts.map +1 -1
  568. package/traits/weapon/weaponBehavior.js +24 -19
  569. package/traits/weapon/weaponBehavior.js.map +1 -1
  570. package/traits/weapon/weaponTrait.d.ts +1 -1
  571. package/traits/weapon/weaponTrait.d.ts.map +1 -1
  572. package/traits/wearable/index.d.ts +2 -2
  573. package/traits/wearable/index.d.ts.map +1 -1
  574. package/traits/wearable/index.js +2 -2
  575. package/traits/wearable/index.js.map +1 -1
  576. package/traits/wearable/wearableBehavior.d.ts +1 -1
  577. package/traits/wearable/wearableBehavior.d.ts.map +1 -1
  578. package/traits/wearable/wearableBehavior.js +11 -11
  579. package/traits/wearable/wearableBehavior.js.map +1 -1
  580. package/traits/wearable/wearableTrait.d.ts +1 -1
  581. package/traits/wearable/wearableTrait.d.ts.map +1 -1
  582. package/traits/wearable/wearableTrait.js +3 -3
  583. package/traits/wearable/wearableTrait.js.map +1 -1
  584. package/world/AuthorModel.d.ts +28 -17
  585. package/world/AuthorModel.d.ts.map +1 -1
  586. package/world/AuthorModel.js +31 -4
  587. package/world/AuthorModel.js.map +1 -1
  588. package/world/ScoreLedger.d.ts +75 -3
  589. package/world/ScoreLedger.d.ts.map +1 -1
  590. package/world/ScoreLedger.js +77 -3
  591. package/world/ScoreLedger.js.map +1 -1
  592. package/world/SharedDataStore.d.ts +2 -2
  593. package/world/SharedDataStore.d.ts.map +1 -1
  594. package/world/SharedDataStore.js +2 -2
  595. package/world/SharedDataStore.js.map +1 -1
  596. package/world/VisibilityBehavior.d.ts +59 -3
  597. package/world/VisibilityBehavior.d.ts.map +1 -1
  598. package/world/VisibilityBehavior.js +192 -100
  599. package/world/VisibilityBehavior.js.map +1 -1
  600. package/world/WorldEventSystem.d.ts +1 -1
  601. package/world/WorldEventSystem.d.ts.map +1 -1
  602. package/world/WorldModel.d.ts +75 -18
  603. package/world/WorldModel.d.ts.map +1 -1
  604. package/world/WorldModel.js +179 -113
  605. package/world/WorldModel.js.map +1 -1
  606. package/world/WorldSerializer.d.ts +4 -4
  607. package/world/WorldSerializer.d.ts.map +1 -1
  608. package/world/WorldSerializer.js +2 -2
  609. package/world/WorldSerializer.js.map +1 -1
  610. package/world/band.d.ts +22 -0
  611. package/world/band.d.ts.map +1 -0
  612. package/world/band.js +36 -0
  613. package/world/band.js.map +1 -0
  614. package/world/default-trait-registry.d.ts +1 -1
  615. package/world/default-trait-registry.d.ts.map +1 -1
  616. package/world/default-trait-registry.js +3 -3
  617. package/world/default-trait-registry.js.map +1 -1
  618. package/world/index.d.ts +10 -9
  619. package/world/index.d.ts.map +1 -1
  620. package/world/index.js +20 -16
  621. package/world/index.js.map +1 -1
  622. package/world/wall-creation.d.ts +2 -2
  623. package/world/wall-creation.d.ts.map +1 -1
  624. package/world/wall-creation.js +6 -6
  625. package/world/wall-creation.js.map +1 -1
  626. package/world/wall-validation.d.ts +2 -2
  627. package/world/wall-validation.d.ts.map +1 -1
  628. package/world/wall-validation.js +3 -3
  629. package/world/wall-validation.js.map +1 -1
@@ -2,10 +2,11 @@
2
2
  * ScoreLedger — score tracking subsystem for WorldModel.
3
3
  *
4
4
  * Public interface: award, revoke, has, getTotal, getEntries, setMax, getMax,
5
+ * setRanks, getRanks, getRank, setScoringEnabled, isScoringEnabled,
5
6
  * toJSON, fromJSON, clear.
6
7
  *
7
- * Owner context: packages/world-model (ADR-129). Extracted from WorldModel
8
- * to isolate scoring concerns and simplify serialization.
8
+ * Owner context: packages/world-model (ADR-129, ADR-260). Extracted from
9
+ * WorldModel to isolate scoring concerns and simplify serialization.
9
10
  */
10
11
  /**
11
12
  * A single score entry in the ledger.
@@ -15,8 +16,26 @@ export interface ScoreEntry {
15
16
  points: number;
16
17
  description: string;
17
18
  }
19
+ /**
20
+ * A rung on the rank ladder (ADR-260 D2).
21
+ *
22
+ * `threshold` is **absolute points, never a percentage of max**: a change to
23
+ * maxScore must never move a rank boundary. Dungeo raises its ceiling from 616
24
+ * to 650 mid-game when the thief dies; under percentage thresholds that call
25
+ * would silently demote a player who earned nothing and lost nothing.
26
+ */
27
+ export interface RankDefinition {
28
+ id: string;
29
+ name: string;
30
+ threshold: number;
31
+ }
18
32
  /**
19
33
  * Serialized shape of the score ledger for persistence.
34
+ *
35
+ * Ranks are deliberately absent: they are configuration installed by the
36
+ * story's scoring registration at load, not gameplay state (ADR-260 D2).
37
+ * Keeping this shape fixed also means saves written before ADR-260 load
38
+ * unchanged.
20
39
  */
21
40
  export interface ScoreLedgerData {
22
41
  scoreLedger: ScoreEntry[];
@@ -29,6 +48,8 @@ export interface ScoreLedgerData {
29
48
  export declare class ScoreLedger {
30
49
  private ledger;
31
50
  private maxScore;
51
+ private ranks;
52
+ private scoringEnabled;
32
53
  /**
33
54
  * Award points for an achievement. Returns false if already awarded.
34
55
  *
@@ -76,6 +97,53 @@ export declare class ScoreLedger {
76
97
  * @returns Maximum score value
77
98
  */
78
99
  getMax(): number;
100
+ /**
101
+ * Install the rank ladder (ADR-260 D2).
102
+ *
103
+ * Sorted ascending on receipt so callers need not sort. An empty array is
104
+ * legal and means "scoring on, no ladder". Two rungs sharing a threshold is
105
+ * a caller error: silently keeping one would make the resolved rank depend
106
+ * on array order.
107
+ *
108
+ * @param ranks - The ladder, in any order
109
+ * @throws if two rungs share a threshold
110
+ */
111
+ setRanks(ranks: RankDefinition[]): void;
112
+ /**
113
+ * Get the installed rank ladder, ascending by threshold.
114
+ *
115
+ * @returns The ladder (defensive copy)
116
+ */
117
+ getRanks(): RankDefinition[];
118
+ /**
119
+ * Get the current rank — the highest rung whose threshold the total score
120
+ * has reached.
121
+ *
122
+ * **Derived on every call, never stored** (ADR-260 D2): a stored rank can
123
+ * drift from the stored score across a revoke, a maxScore change, or a
124
+ * save/restore. The ladder is a banded scalar over the score, so the lookup
125
+ * is `bandOf` (ADR-262 D1) — the same primitive every continuous meter uses.
126
+ *
127
+ * @returns The current rank, or undefined when no ladder is installed or
128
+ * the score is below every rung
129
+ */
130
+ getRank(): RankDefinition | undefined;
131
+ /**
132
+ * Mark scoring as installed. Called by a scoring registration
133
+ * (`registerScoring`, ADR-260 D5), not by gameplay.
134
+ *
135
+ * @param enabled - Whether scoring is installed
136
+ */
137
+ setScoringEnabled(enabled: boolean): void;
138
+ /**
139
+ * Whether a scoring registration has installed itself.
140
+ *
141
+ * Default false. Enablement is the registration, not the ladder — an empty
142
+ * ladder still counts as enabled.
143
+ *
144
+ * @returns true once a scoring registration has run
145
+ */
146
+ isScoringEnabled(): boolean;
79
147
  /**
80
148
  * Serialize the ledger for persistence.
81
149
  *
@@ -89,7 +157,11 @@ export declare class ScoreLedger {
89
157
  */
90
158
  fromJSON(data: Partial<ScoreLedgerData>): void;
91
159
  /**
92
- * Reset the ledger to empty state.
160
+ * Reset gameplay state to empty.
161
+ *
162
+ * The rank ladder and the enabled flag survive (ADR-260 D2): both are story
163
+ * configuration installed at load, and clearing gameplay state must not
164
+ * uninstall them.
93
165
  */
94
166
  clear(): void;
95
167
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ScoreLedger.d.ts","sourceRoot":"","sources":["../../../../../../../repos/sharpee_v2/packages/world-model/src/world/ScoreLedger.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,QAAQ,CAAa;IAE7B;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO;IAQ/D;;;;;OAKG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAO3B;;;;;OAKG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIxB;;;;OAIG;IACH,QAAQ,IAAI,MAAM;IAQlB;;;;OAIG;IACH,UAAU,IAAI,UAAU,EAAE;IAI1B;;;;OAIG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIzB;;;;OAIG;IACH,MAAM,IAAI,MAAM;IAIhB;;;;OAIG;IACH,MAAM,IAAI,eAAe;IAOzB;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI;IAS9C;;OAEG;IACH,KAAK,IAAI,IAAI;CAId"}
1
+ {"version":3,"file":"ScoreLedger.d.ts","sourceRoot":"","sources":["../../../../../../../repos/sharpee_v2/packages/world-model/src/world/ScoreLedger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,KAAK,CAAwB;IACrC,OAAO,CAAC,cAAc,CAAkB;IAExC;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO;IAQ/D;;;;;OAKG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAO3B;;;;;OAKG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIxB;;;;OAIG;IACH,QAAQ,IAAI,MAAM;IAQlB;;;;OAIG;IACH,UAAU,IAAI,UAAU,EAAE;IAI1B;;;;OAIG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIzB;;;;OAIG;IACH,MAAM,IAAI,MAAM;IAIhB;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,IAAI;IAcvC;;;;OAIG;IACH,QAAQ,IAAI,cAAc,EAAE;IAI5B;;;;;;;;;;;OAWG;IACH,OAAO,IAAI,cAAc,GAAG,SAAS;IAKrC;;;;;OAKG;IACH,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIzC;;;;;;;OAOG;IACH,gBAAgB,IAAI,OAAO;IAI3B;;;;OAIG;IACH,MAAM,IAAI,eAAe;IAOzB;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI;IAS9C;;;;;;OAMG;IACH,KAAK,IAAI,IAAI;CAId"}
@@ -3,13 +3,15 @@
3
3
  * ScoreLedger — score tracking subsystem for WorldModel.
4
4
  *
5
5
  * Public interface: award, revoke, has, getTotal, getEntries, setMax, getMax,
6
+ * setRanks, getRanks, getRank, setScoringEnabled, isScoringEnabled,
6
7
  * toJSON, fromJSON, clear.
7
8
  *
8
- * Owner context: packages/world-model (ADR-129). Extracted from WorldModel
9
- * to isolate scoring concerns and simplify serialization.
9
+ * Owner context: packages/world-model (ADR-129, ADR-260). Extracted from
10
+ * WorldModel to isolate scoring concerns and simplify serialization.
10
11
  */
11
12
  Object.defineProperty(exports, "__esModule", { value: true });
12
13
  exports.ScoreLedger = void 0;
14
+ const band_js_1 = require("./band.js");
13
15
  /**
14
16
  * Tracks score entries awarded during gameplay.
15
17
  * Each entry has a unique ID to prevent double-awards and support revocation.
@@ -17,6 +19,8 @@ exports.ScoreLedger = void 0;
17
19
  class ScoreLedger {
18
20
  ledger = [];
19
21
  maxScore = 0;
22
+ ranks = [];
23
+ scoringEnabled = false;
20
24
  /**
21
25
  * Award points for an achievement. Returns false if already awarded.
22
26
  *
@@ -90,6 +94,72 @@ class ScoreLedger {
90
94
  getMax() {
91
95
  return this.maxScore;
92
96
  }
97
+ /**
98
+ * Install the rank ladder (ADR-260 D2).
99
+ *
100
+ * Sorted ascending on receipt so callers need not sort. An empty array is
101
+ * legal and means "scoring on, no ladder". Two rungs sharing a threshold is
102
+ * a caller error: silently keeping one would make the resolved rank depend
103
+ * on array order.
104
+ *
105
+ * @param ranks - The ladder, in any order
106
+ * @throws if two rungs share a threshold
107
+ */
108
+ setRanks(ranks) {
109
+ const seen = new Set();
110
+ for (const rank of ranks) {
111
+ if (seen.has(rank.threshold)) {
112
+ throw new Error(`Duplicate rank threshold ${rank.threshold} (rank "${rank.id}"): ` +
113
+ `two rungs sharing a threshold make the resolved rank depend on array order`);
114
+ }
115
+ seen.add(rank.threshold);
116
+ }
117
+ this.ranks = [...ranks].sort((a, b) => a.threshold - b.threshold);
118
+ }
119
+ /**
120
+ * Get the installed rank ladder, ascending by threshold.
121
+ *
122
+ * @returns The ladder (defensive copy)
123
+ */
124
+ getRanks() {
125
+ return [...this.ranks];
126
+ }
127
+ /**
128
+ * Get the current rank — the highest rung whose threshold the total score
129
+ * has reached.
130
+ *
131
+ * **Derived on every call, never stored** (ADR-260 D2): a stored rank can
132
+ * drift from the stored score across a revoke, a maxScore change, or a
133
+ * save/restore. The ladder is a banded scalar over the score, so the lookup
134
+ * is `bandOf` (ADR-262 D1) — the same primitive every continuous meter uses.
135
+ *
136
+ * @returns The current rank, or undefined when no ladder is installed or
137
+ * the score is below every rung
138
+ */
139
+ getRank() {
140
+ const index = (0, band_js_1.bandOf)(this.getTotal(), this.ranks.map(r => r.threshold));
141
+ return index < 0 ? undefined : this.ranks[index];
142
+ }
143
+ /**
144
+ * Mark scoring as installed. Called by a scoring registration
145
+ * (`registerScoring`, ADR-260 D5), not by gameplay.
146
+ *
147
+ * @param enabled - Whether scoring is installed
148
+ */
149
+ setScoringEnabled(enabled) {
150
+ this.scoringEnabled = enabled;
151
+ }
152
+ /**
153
+ * Whether a scoring registration has installed itself.
154
+ *
155
+ * Default false. Enablement is the registration, not the ladder — an empty
156
+ * ladder still counts as enabled.
157
+ *
158
+ * @returns true once a scoring registration has run
159
+ */
160
+ isScoringEnabled() {
161
+ return this.scoringEnabled;
162
+ }
93
163
  /**
94
164
  * Serialize the ledger for persistence.
95
165
  *
@@ -115,7 +185,11 @@ class ScoreLedger {
115
185
  }
116
186
  }
117
187
  /**
118
- * Reset the ledger to empty state.
188
+ * Reset gameplay state to empty.
189
+ *
190
+ * The rank ladder and the enabled flag survive (ADR-260 D2): both are story
191
+ * configuration installed at load, and clearing gameplay state must not
192
+ * uninstall them.
119
193
  */
120
194
  clear() {
121
195
  this.ledger = [];
@@ -1 +1 @@
1
- {"version":3,"file":"ScoreLedger.js","sourceRoot":"","sources":["../../../../../../../repos/sharpee_v2/packages/world-model/src/world/ScoreLedger.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAmBH;;;GAGG;AACH,MAAa,WAAW;IACd,MAAM,GAAiB,EAAE,CAAC;IAC1B,QAAQ,GAAW,CAAC,CAAC;IAE7B;;;;;;;OAOG;IACH,KAAK,CAAC,EAAU,EAAE,MAAc,EAAE,WAAmB;QACnD,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YACvC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,EAAU;QACf,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACpD,IAAI,GAAG,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED;;;;OAIG;IACH,QAAQ;QACN,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC;QACxB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;OAIG;IACH,UAAU;QACR,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,GAAW;QAChB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;IACtB,CAAC;IAED;;;;OAIG;IACH,MAAM;QACJ,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;;;OAIG;IACH,MAAM;QACJ,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,MAAM;YACxB,aAAa,EAAE,IAAI,CAAC,QAAQ;SAC7B,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,QAAQ,CAAC,IAA8B;QACrC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;QACjC,CAAC;QACD,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACrC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC;QACrC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;IACpB,CAAC;CACF;AApHD,kCAoHC"}
1
+ {"version":3,"file":"ScoreLedger.js","sourceRoot":"","sources":["../../../../../../../repos/sharpee_v2/packages/world-model/src/world/ScoreLedger.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AAEH,uCAAmC;AAsCnC;;;GAGG;AACH,MAAa,WAAW;IACd,MAAM,GAAiB,EAAE,CAAC;IAC1B,QAAQ,GAAW,CAAC,CAAC;IACrB,KAAK,GAAqB,EAAE,CAAC;IAC7B,cAAc,GAAY,KAAK,CAAC;IAExC;;;;;;;OAOG;IACH,KAAK,CAAC,EAAU,EAAE,MAAc,EAAE,WAAmB;QACnD,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YACvC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,EAAU;QACf,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACpD,IAAI,GAAG,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED;;;;OAIG;IACH,QAAQ;QACN,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC;QACxB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;OAIG;IACH,UAAU;QACR,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,GAAW;QAChB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;IACtB,CAAC;IAED;;;;OAIG;IACH,MAAM;QACJ,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,KAAuB;QAC9B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CACb,4BAA4B,IAAI,CAAC,SAAS,WAAW,IAAI,CAAC,EAAE,MAAM;oBAClE,4EAA4E,CAC7E,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;IACpE,CAAC;IAED;;;;OAIG;IACH,QAAQ;QACN,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED;;;;;;;;;;;OAWG;IACH,OAAO;QACL,MAAM,KAAK,GAAG,IAAA,gBAAM,EAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QACxE,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC;IAED;;;;;OAKG;IACH,iBAAiB,CAAC,OAAgB;QAChC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;IAChC,CAAC;IAED;;;;;;;OAOG;IACH,gBAAgB;QACd,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED;;;;OAIG;IACH,MAAM;QACJ,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,MAAM;YACxB,aAAa,EAAE,IAAI,CAAC,QAAQ;SAC7B,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,QAAQ,CAAC,IAA8B;QACrC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;QACjC,CAAC;QACD,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACrC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC;QACrC,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,KAAK;QACH,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;IACpB,CAAC;CACF;AAnMD,kCAmMC"}
@@ -1,5 +1,5 @@
1
- import { IFEntity } from '../entities/if-entity';
2
- import { SpatialIndex } from './SpatialIndex';
1
+ import { IFEntity } from '../entities/if-entity.js';
2
+ import { SpatialIndex } from './SpatialIndex.js';
3
3
  /**
4
4
  * Wrapper class that holds references to shared state between WorldModel and AuthorModel.
5
5
  * This ensures that changes made by one model are visible to the other.
@@ -1 +1 @@
1
- {"version":3,"file":"SharedDataStore.d.ts","sourceRoot":"","sources":["../../../../../../../repos/sharpee_v2/packages/world-model/src/world/SharedDataStore.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C;;;GAGG;AACH,qBAAa,eAAe;IAC1B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChC,YAAY,EAAE,YAAY,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACrD,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;;IAa9B,IAAI,QAAQ,IAAI,MAAM,GAAG,SAAS,CAEjC;IAED,IAAI,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAErC;IAED;;OAEG;IACH,KAAK,IAAI,IAAI;CAUd"}
1
+ {"version":3,"file":"SharedDataStore.d.ts","sourceRoot":"","sources":["../../../../../../../repos/sharpee_v2/packages/world-model/src/world/SharedDataStore.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD;;;GAGG;AACH,qBAAa,eAAe;IAC1B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChC,YAAY,EAAE,YAAY,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACrD,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;;IAa9B,IAAI,QAAQ,IAAI,MAAM,GAAG,SAAS,CAEjC;IAED,IAAI,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAErC;IAED;;OAEG;IACH,KAAK,IAAI,IAAI;CAUd"}
@@ -2,7 +2,7 @@
2
2
  // SharedDataStore.ts - Shared state wrapper for WorldModel and AuthorModel
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.SharedDataStore = void 0;
5
- const SpatialIndex_1 = require("./SpatialIndex");
5
+ const SpatialIndex_js_1 = require("./SpatialIndex.js");
6
6
  /**
7
7
  * Wrapper class that holds references to shared state between WorldModel and AuthorModel.
8
8
  * This ensures that changes made by one model are visible to the other.
@@ -18,7 +18,7 @@ class SharedDataStore {
18
18
  idToName;
19
19
  constructor() {
20
20
  this.entities = new Map();
21
- this.spatialIndex = new SpatialIndex_1.SpatialIndex();
21
+ this.spatialIndex = new SpatialIndex_js_1.SpatialIndex();
22
22
  this.state = {};
23
23
  this._playerId = undefined;
24
24
  this.relationships = new Map();
@@ -1 +1 @@
1
- {"version":3,"file":"SharedDataStore.js","sourceRoot":"","sources":["../../../../../../../repos/sharpee_v2/packages/world-model/src/world/SharedDataStore.ts"],"names":[],"mappings":";AAAA,2EAA2E;;;AAG3E,iDAA8C;AAE9C;;;GAGG;AACH,MAAa,eAAe;IAC1B,QAAQ,CAAwB;IAChC,YAAY,CAAe;IAC3B,KAAK,CAAsB;IACnB,SAAS,CAAU;IAC3B,aAAa,CAAwC;IACrD,UAAU,CAAsB;IAChC,QAAQ,CAAsB;IAC9B,QAAQ,CAAsB;IAE9B;QACE,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;QAC1B,IAAI,CAAC,YAAY,GAAG,IAAI,2BAAY,EAAE,CAAC;QACvC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,EAAE,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;IAC5B,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAI,QAAQ,CAAC,KAAyB;QACpC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;CACF;AA1CD,0CA0CC"}
1
+ {"version":3,"file":"SharedDataStore.js","sourceRoot":"","sources":["../../../../../../../repos/sharpee_v2/packages/world-model/src/world/SharedDataStore.ts"],"names":[],"mappings":";AAAA,2EAA2E;;;AAG3E,uDAAiD;AAEjD;;;GAGG;AACH,MAAa,eAAe;IAC1B,QAAQ,CAAwB;IAChC,YAAY,CAAe;IAC3B,KAAK,CAAsB;IACnB,SAAS,CAAU;IAC3B,aAAa,CAAwC;IACrD,UAAU,CAAsB;IAChC,QAAQ,CAAsB;IAC9B,QAAQ,CAAsB;IAE9B;QACE,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;QAC1B,IAAI,CAAC,YAAY,GAAG,IAAI,8BAAY,EAAE,CAAC;QACvC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,EAAE,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;IAC5B,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAI,QAAQ,CAAC,KAAyB;QACpC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;CACF;AA1CD,0CA0CC"}
@@ -1,13 +1,27 @@
1
- import { Behavior } from '../behaviors/behavior';
2
- import { IFEntity } from '../entities/if-entity';
3
- import { WorldModel } from './WorldModel';
1
+ import { Behavior } from '../behaviors/behavior.js';
2
+ import { IFEntity } from '../entities/if-entity.js';
3
+ import { WorldModel } from './WorldModel.js';
4
4
  /**
5
5
  * Standard capability ID for visibility control.
6
6
  * Entities can claim this capability to control their own visibility.
7
7
  */
8
8
  export declare const VISIBILITY_CAPABILITY = "if.scope.visible";
9
+ /**
10
+ * ADR-240 evaluator key for a room's derived darkness (`dark.<roomId>`).
11
+ * Owned by this read point; registrars (e.g. the story-loader's
12
+ * `dark while` conditions) build the key with this function, never by
13
+ * hand — the string is constructed in exactly two places, both pinned.
14
+ */
15
+ export declare function darkKey(roomId: string): string;
9
16
  export declare class VisibilityBehavior extends Behavior {
10
17
  static requiredTraits: never[];
18
+ /**
19
+ * The live answer to "does this room require light?" (ADR-240): a
20
+ * registered `dark.<roomId>` evaluator is authoritative (point-of-use
21
+ * truth, never stale); with nothing registered, the stamped trait
22
+ * fact applies unchanged (static `dark`, hand-written TS stories).
23
+ */
24
+ private static roomRequiresLight;
11
25
  /**
12
26
  * Determines if a room is effectively dark (no usable light sources).
13
27
  * This is the single source of truth for darkness checking.
@@ -31,6 +45,29 @@ export declare class VisibilityBehavior extends Behavior {
31
45
  * 3. Default to lit (e.g., glowing gems, phosphorescent moss)
32
46
  */
33
47
  private static isLightActive;
48
+ /**
49
+ * Whether an entity is still concealed (hidden until SEARCH or a game event
50
+ * reveals it). This is the SINGLE shared definition of item concealment for
51
+ * visibility: scope resolution, LOOK, and EXAMINE must all consult it (here
52
+ * or via canSee/getVisible/getVisibleContents), never re-derive it.
53
+ *
54
+ * @param entity - The entity to check (safe on entities without IdentityTrait)
55
+ * @returns true if the entity carries IdentityTrait with concealed === true
56
+ */
57
+ static isConcealed(entity: IFEntity): boolean;
58
+ /**
59
+ * The single per-entity listing filter shared by every visibility path
60
+ * (room contents, container/supporter contents): excludes still-concealed
61
+ * entities, scenery marked invisible, and entities whose visibility
62
+ * capability vetoes being seen.
63
+ *
64
+ * @param entity - The candidate entity
65
+ * @param world - The world model
66
+ * @param observerId - The observer (or container proxy) id passed to a
67
+ * visibility-capability behavior's validate
68
+ * @returns true if the entity may appear in a visible-entity listing
69
+ */
70
+ private static isListable;
34
71
  /**
35
72
  * Determines if an observer can see a target entity
36
73
  */
@@ -39,6 +76,25 @@ export declare class VisibilityBehavior extends Behavior {
39
76
  * Gets all entities visible to an observer
40
77
  */
41
78
  static getVisible(observer: IFEntity, world: WorldModel): IFEntity[];
79
+ /**
80
+ * The direct contents of a container/supporter/actor that could appear in a
81
+ * visible listing: applies the same per-entity filter as getVisible
82
+ * (concealed, invisible scenery, visibility-capability veto) to
83
+ * `getContents(id)` (worn items included by default, ADR-247).
84
+ *
85
+ * Does NOT check whether the container's inside is exposed (closed opaque
86
+ * container) — callers listing contents have already established that, and
87
+ * addVisibleContents keeps that gate itself.
88
+ *
89
+ * This is the shared read for LOOK's and EXAMINE's contents listings — a
90
+ * still-concealed item stays out of both until SEARCH reveals it, by the
91
+ * same definition scope resolution uses.
92
+ *
93
+ * @param container - The container/supporter/actor whose contents to list
94
+ * @param world - The world model
95
+ * @returns the listable direct contents
96
+ */
97
+ static getVisibleContents(container: IFEntity, world: WorldModel): IFEntity[];
42
98
  /**
43
99
  * Recursively adds visible contents of a container/supporter/actor
44
100
  */
@@ -1 +1 @@
1
- {"version":3,"file":"VisibilityBehavior.d.ts","sourceRoot":"","sources":["../../../../../../../repos/sharpee_v2/packages/world-model/src/world/VisibilityBehavior.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAY1C;;;GAGG;AACH,eAAO,MAAM,qBAAqB,qBAAqB,CAAC;AAExD,qBAAa,kBAAmB,SAAQ,QAAQ;IAC9C,MAAM,CAAC,cAAc,UAAM;IAE3B;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO;IAQzD;;;;;;;;OAQG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAiB5B;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO;IAkE/E;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,GAAG,QAAQ,EAAE;IAsGpE;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IA2DjC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAmB7B;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IA0CrC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAI3B;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAI7B;;;OAGG;IACH,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO;IAwB9D;;;;;;;;;OASG;IACH,MAAM,CAAC,sBAAsB,CAC3B,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,UAAU,GAChB;QAAE,QAAQ,EAAE,QAAQ,CAAC;QAAC,kBAAkB,EAAE,QAAQ,GAAG,IAAI,CAAA;KAAE;CAmD/D"}
1
+ {"version":3,"file":"VisibilityBehavior.d.ts","sourceRoot":"","sources":["../../../../../../../repos/sharpee_v2/packages/world-model/src/world/VisibilityBehavior.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAa7C;;;GAGG;AACH,eAAO,MAAM,qBAAqB,qBAAqB,CAAC;AAExD;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,qBAAa,kBAAmB,SAAQ,QAAQ;IAC9C,MAAM,CAAC,cAAc,UAAM;IAE3B;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAOhC;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO;IAOzD;;;;;;;;OAQG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAiB5B;;;;;;;;OAQG;IACH,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO;IAI7C;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,MAAM,CAAC,UAAU;IA2BzB;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO;IAoF/E;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,GAAG,QAAQ,EAAE;IA8FpE;;;;;;;;;;;;;;;;;OAiBG;IACH,MAAM,CAAC,kBAAkB,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,GAAG,QAAQ,EAAE;IAQ7E;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAuCjC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAmB7B;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IA0CrC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAI3B;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAI7B;;;OAGG;IACH,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO;IA6B9D;;;;;;;;;OASG;IACH,MAAM,CAAC,sBAAsB,CAC3B,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,UAAU,GAChB;QAAE,QAAQ,EAAE,QAAQ,CAAC;QAAC,kBAAkB,EAAE,QAAQ,GAAG,IAAI,CAAA;KAAE;CAmD/D"}