@sharpee/world-model 0.9.60-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +61 -0
- package/dist/behaviors/attack.d.ts +52 -0
- package/dist/behaviors/attack.d.ts.map +1 -0
- package/dist/behaviors/attack.js +161 -0
- package/dist/behaviors/attack.js.map +1 -0
- package/dist/behaviors/behavior.d.ts +67 -0
- package/dist/behaviors/behavior.d.ts.map +1 -0
- package/dist/behaviors/behavior.js +80 -0
- package/dist/behaviors/behavior.js.map +1 -0
- package/dist/behaviors/index.d.ts +21 -0
- package/dist/behaviors/index.d.ts.map +1 -0
- package/dist/behaviors/index.js +39 -0
- package/dist/behaviors/index.js.map +1 -0
- package/dist/capabilities/capability-behavior.d.ts +112 -0
- package/dist/capabilities/capability-behavior.d.ts.map +1 -0
- package/dist/capabilities/capability-behavior.js +9 -0
- package/dist/capabilities/capability-behavior.js.map +1 -0
- package/dist/capabilities/capability-defaults.d.ts +67 -0
- package/dist/capabilities/capability-defaults.d.ts.map +1 -0
- package/dist/capabilities/capability-defaults.js +81 -0
- package/dist/capabilities/capability-defaults.js.map +1 -0
- package/dist/capabilities/capability-helpers.d.ts +76 -0
- package/dist/capabilities/capability-helpers.d.ts.map +1 -0
- package/dist/capabilities/capability-helpers.js +112 -0
- package/dist/capabilities/capability-helpers.js.map +1 -0
- package/dist/capabilities/capability-registry.d.ts +115 -0
- package/dist/capabilities/capability-registry.d.ts.map +1 -0
- package/dist/capabilities/capability-registry.js +136 -0
- package/dist/capabilities/capability-registry.js.map +1 -0
- package/dist/capabilities/entity-builder.d.ts +79 -0
- package/dist/capabilities/entity-builder.d.ts.map +1 -0
- package/dist/capabilities/entity-builder.js +116 -0
- package/dist/capabilities/entity-builder.js.map +1 -0
- package/dist/capabilities/index.d.ts +13 -0
- package/dist/capabilities/index.d.ts.map +1 -0
- package/dist/capabilities/index.js +40 -0
- package/dist/capabilities/index.js.map +1 -0
- package/dist/capabilities/types.d.ts +35 -0
- package/dist/capabilities/types.d.ts.map +1 -0
- package/dist/capabilities/types.js +16 -0
- package/dist/capabilities/types.js.map +1 -0
- package/dist/commands/command-types.d.ts +30 -0
- package/dist/commands/command-types.d.ts.map +1 -0
- package/dist/commands/command-types.js +6 -0
- package/dist/commands/command-types.js.map +1 -0
- package/dist/commands/index.d.ts +7 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +23 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/parsed-command.d.ts +204 -0
- package/dist/commands/parsed-command.d.ts.map +1 -0
- package/dist/commands/parsed-command.js +25 -0
- package/dist/commands/parsed-command.js.map +1 -0
- package/dist/commands/validated-command.d.ts +52 -0
- package/dist/commands/validated-command.d.ts.map +1 -0
- package/dist/commands/validated-command.js +8 -0
- package/dist/commands/validated-command.js.map +1 -0
- package/dist/constants/action-failures.d.ts +54 -0
- package/dist/constants/action-failures.d.ts.map +1 -0
- package/dist/constants/action-failures.js +68 -0
- package/dist/constants/action-failures.js.map +1 -0
- package/dist/constants/directions.d.ts +32 -0
- package/dist/constants/directions.d.ts.map +1 -0
- package/dist/constants/directions.js +53 -0
- package/dist/constants/directions.js.map +1 -0
- package/dist/constants/if-events.d.ts +5 -0
- package/dist/constants/if-events.d.ts.map +1 -0
- package/dist/constants/if-events.js +10 -0
- package/dist/constants/if-events.js.map +1 -0
- package/dist/constants/index.d.ts +9 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/constants/index.js +25 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/entities/entity-store.d.ts +66 -0
- package/dist/entities/entity-store.d.ts.map +1 -0
- package/dist/entities/entity-store.js +116 -0
- package/dist/entities/entity-store.js.map +1 -0
- package/dist/entities/entity-types.d.ts +40 -0
- package/dist/entities/entity-types.d.ts.map +1 -0
- package/dist/entities/entity-types.js +56 -0
- package/dist/entities/entity-types.js.map +1 -0
- package/dist/entities/if-entity.d.ts +259 -0
- package/dist/entities/if-entity.d.ts.map +1 -0
- package/dist/entities/if-entity.js +498 -0
- package/dist/entities/if-entity.js.map +1 -0
- package/dist/entities/index.d.ts +5 -0
- package/dist/entities/index.d.ts.map +1 -0
- package/dist/entities/index.js +13 -0
- package/dist/entities/index.js.map +1 -0
- package/dist/events/types.d.ts +45 -0
- package/dist/events/types.d.ts.map +1 -0
- package/dist/events/types.js +9 -0
- package/dist/events/types.js.map +1 -0
- package/dist/examples/event-handler-registration.d.ts +14 -0
- package/dist/examples/event-handler-registration.d.ts.map +1 -0
- package/dist/examples/event-handler-registration.js +158 -0
- package/dist/examples/event-handler-registration.js.map +1 -0
- package/dist/extensions/base-extension.d.ts +69 -0
- package/dist/extensions/base-extension.d.ts.map +1 -0
- package/dist/extensions/base-extension.js +83 -0
- package/dist/extensions/base-extension.js.map +1 -0
- package/dist/extensions/index.d.ts +11 -0
- package/dist/extensions/index.d.ts.map +1 -0
- package/dist/extensions/index.js +39 -0
- package/dist/extensions/index.js.map +1 -0
- package/dist/extensions/loader.d.ts +52 -0
- package/dist/extensions/loader.d.ts.map +1 -0
- package/dist/extensions/loader.js +177 -0
- package/dist/extensions/loader.js.map +1 -0
- package/dist/extensions/manager.d.ts +68 -0
- package/dist/extensions/manager.d.ts.map +1 -0
- package/dist/extensions/manager.js +164 -0
- package/dist/extensions/manager.js.map +1 -0
- package/dist/extensions/registry.d.ts +100 -0
- package/dist/extensions/registry.d.ts.map +1 -0
- package/dist/extensions/registry.js +193 -0
- package/dist/extensions/registry.js.map +1 -0
- package/dist/extensions/types.d.ts +226 -0
- package/dist/extensions/types.d.ts.map +1 -0
- package/dist/extensions/types.js +28 -0
- package/dist/extensions/types.js.map +1 -0
- package/dist/index.d.ts +39 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +68 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces/command-executor.d.ts +17 -0
- package/dist/interfaces/command-executor.d.ts.map +1 -0
- package/dist/interfaces/command-executor.js +6 -0
- package/dist/interfaces/command-executor.js.map +1 -0
- package/dist/interfaces/command-processor.d.ts +17 -0
- package/dist/interfaces/command-processor.d.ts.map +1 -0
- package/dist/interfaces/command-processor.js +6 -0
- package/dist/interfaces/command-processor.js.map +1 -0
- package/dist/interfaces/command-validator.d.ts +17 -0
- package/dist/interfaces/command-validator.d.ts.map +1 -0
- package/dist/interfaces/command-validator.js +6 -0
- package/dist/interfaces/command-validator.js.map +1 -0
- package/dist/interfaces/index.d.ts +8 -0
- package/dist/interfaces/index.d.ts.map +1 -0
- package/dist/interfaces/index.js +24 -0
- package/dist/interfaces/index.js.map +1 -0
- package/dist/interfaces/language-provider.d.ts +86 -0
- package/dist/interfaces/language-provider.d.ts.map +1 -0
- package/dist/interfaces/language-provider.js +14 -0
- package/dist/interfaces/language-provider.js.map +1 -0
- package/dist/interfaces/parser.d.ts +16 -0
- package/dist/interfaces/parser.d.ts.map +1 -0
- package/dist/interfaces/parser.js +6 -0
- package/dist/interfaces/parser.js.map +1 -0
- package/dist/scope/index.d.ts +8 -0
- package/dist/scope/index.d.ts.map +1 -0
- package/dist/scope/index.js +24 -0
- package/dist/scope/index.js.map +1 -0
- package/dist/scope/scope-evaluator.d.ts +58 -0
- package/dist/scope/scope-evaluator.d.ts.map +1 -0
- package/dist/scope/scope-evaluator.js +207 -0
- package/dist/scope/scope-evaluator.js.map +1 -0
- package/dist/scope/scope-registry.d.ts +59 -0
- package/dist/scope/scope-registry.d.ts.map +1 -0
- package/dist/scope/scope-registry.js +182 -0
- package/dist/scope/scope-registry.js.map +1 -0
- package/dist/scope/scope-rule.d.ts +86 -0
- package/dist/scope/scope-rule.d.ts.map +1 -0
- package/dist/scope/scope-rule.js +7 -0
- package/dist/scope/scope-rule.js.map +1 -0
- package/dist/services/ScopeService.d.ts +8 -0
- package/dist/services/ScopeService.d.ts.map +1 -0
- package/dist/services/ScopeService.js +19 -0
- package/dist/services/ScopeService.js.map +1 -0
- package/dist/services/index.d.ts +2 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +6 -0
- package/dist/services/index.js.map +1 -0
- package/dist/test-structure.d.ts +3 -0
- package/dist/test-structure.d.ts.map +1 -0
- package/dist/test-structure.js +26 -0
- package/dist/test-structure.js.map +1 -0
- package/dist/traits/actor/actorBehavior.d.ts +121 -0
- package/dist/traits/actor/actorBehavior.d.ts.map +1 -0
- package/dist/traits/actor/actorBehavior.js +288 -0
- package/dist/traits/actor/actorBehavior.js.map +1 -0
- package/dist/traits/actor/actorTrait.d.ts +158 -0
- package/dist/traits/actor/actorTrait.d.ts.map +1 -0
- package/dist/traits/actor/actorTrait.js +152 -0
- package/dist/traits/actor/actorTrait.js.map +1 -0
- package/dist/traits/actor/index.d.ts +3 -0
- package/dist/traits/actor/index.d.ts.map +1 -0
- package/dist/traits/actor/index.js +11 -0
- package/dist/traits/actor/index.js.map +1 -0
- package/dist/traits/all-traits.d.ts +95 -0
- package/dist/traits/all-traits.d.ts.map +1 -0
- package/dist/traits/all-traits.js +178 -0
- package/dist/traits/all-traits.js.map +1 -0
- package/dist/traits/attached/attachedTrait.d.ts +61 -0
- package/dist/traits/attached/attachedTrait.d.ts.map +1 -0
- package/dist/traits/attached/attachedTrait.js +36 -0
- package/dist/traits/attached/attachedTrait.js.map +1 -0
- package/dist/traits/attached/index.d.ts +2 -0
- package/dist/traits/attached/index.d.ts.map +1 -0
- package/dist/traits/attached/index.js +18 -0
- package/dist/traits/attached/index.js.map +1 -0
- package/dist/traits/breakable/breakableBehavior.d.ts +43 -0
- package/dist/traits/breakable/breakableBehavior.d.ts.map +1 -0
- package/dist/traits/breakable/breakableBehavior.js +70 -0
- package/dist/traits/breakable/breakableBehavior.js.map +1 -0
- package/dist/traits/breakable/breakableTrait.d.ts +22 -0
- package/dist/traits/breakable/breakableTrait.d.ts.map +1 -0
- package/dist/traits/breakable/breakableTrait.js +25 -0
- package/dist/traits/breakable/breakableTrait.js.map +1 -0
- package/dist/traits/breakable/index.d.ts +3 -0
- package/dist/traits/breakable/index.d.ts.map +1 -0
- package/dist/traits/breakable/index.js +8 -0
- package/dist/traits/breakable/index.js.map +1 -0
- package/dist/traits/button/buttonTrait.d.ts +53 -0
- package/dist/traits/button/buttonTrait.d.ts.map +1 -0
- package/dist/traits/button/buttonTrait.js +36 -0
- package/dist/traits/button/buttonTrait.js.map +1 -0
- package/dist/traits/button/index.d.ts +2 -0
- package/dist/traits/button/index.d.ts.map +1 -0
- package/dist/traits/button/index.js +18 -0
- package/dist/traits/button/index.js.map +1 -0
- package/dist/traits/climbable/climbableBehavior.d.ts +37 -0
- package/dist/traits/climbable/climbableBehavior.d.ts.map +1 -0
- package/dist/traits/climbable/climbableBehavior.js +70 -0
- package/dist/traits/climbable/climbableBehavior.js.map +1 -0
- package/dist/traits/climbable/climbableTrait.d.ts +31 -0
- package/dist/traits/climbable/climbableTrait.d.ts.map +1 -0
- package/dist/traits/climbable/climbableTrait.js +47 -0
- package/dist/traits/climbable/climbableTrait.js.map +1 -0
- package/dist/traits/climbable/index.d.ts +6 -0
- package/dist/traits/climbable/index.d.ts.map +1 -0
- package/dist/traits/climbable/index.js +22 -0
- package/dist/traits/climbable/index.js.map +1 -0
- package/dist/traits/clothing/clothingTrait.d.ts +58 -0
- package/dist/traits/clothing/clothingTrait.d.ts.map +1 -0
- package/dist/traits/clothing/clothingTrait.js +78 -0
- package/dist/traits/clothing/clothingTrait.js.map +1 -0
- package/dist/traits/clothing/index.d.ts +2 -0
- package/dist/traits/clothing/index.d.ts.map +1 -0
- package/dist/traits/clothing/index.js +19 -0
- package/dist/traits/clothing/index.js.map +1 -0
- package/dist/traits/combatant/combatantBehavior.d.ts +70 -0
- package/dist/traits/combatant/combatantBehavior.d.ts.map +1 -0
- package/dist/traits/combatant/combatantBehavior.js +155 -0
- package/dist/traits/combatant/combatantBehavior.js.map +1 -0
- package/dist/traits/combatant/combatantTrait.d.ts +98 -0
- package/dist/traits/combatant/combatantTrait.d.ts.map +1 -0
- package/dist/traits/combatant/combatantTrait.js +122 -0
- package/dist/traits/combatant/combatantTrait.js.map +1 -0
- package/dist/traits/combatant/index.d.ts +3 -0
- package/dist/traits/combatant/index.d.ts.map +1 -0
- package/dist/traits/combatant/index.js +8 -0
- package/dist/traits/combatant/index.js.map +1 -0
- package/dist/traits/container/container-utils.d.ts +39 -0
- package/dist/traits/container/container-utils.d.ts.map +1 -0
- package/dist/traits/container/container-utils.js +72 -0
- package/dist/traits/container/container-utils.js.map +1 -0
- package/dist/traits/container/containerBehavior.d.ts +94 -0
- package/dist/traits/container/containerBehavior.d.ts.map +1 -0
- package/dist/traits/container/containerBehavior.js +256 -0
- package/dist/traits/container/containerBehavior.js.map +1 -0
- package/dist/traits/container/containerTrait.d.ts +30 -0
- package/dist/traits/container/containerTrait.d.ts.map +1 -0
- package/dist/traits/container/containerTrait.js +45 -0
- package/dist/traits/container/containerTrait.js.map +1 -0
- package/dist/traits/container/index.d.ts +4 -0
- package/dist/traits/container/index.d.ts.map +1 -0
- package/dist/traits/container/index.js +14 -0
- package/dist/traits/container/index.js.map +1 -0
- package/dist/traits/destructible/destructibleBehavior.d.ts +57 -0
- package/dist/traits/destructible/destructibleBehavior.d.ts.map +1 -0
- package/dist/traits/destructible/destructibleBehavior.js +145 -0
- package/dist/traits/destructible/destructibleBehavior.js.map +1 -0
- package/dist/traits/destructible/destructibleTrait.d.ts +49 -0
- package/dist/traits/destructible/destructibleTrait.d.ts.map +1 -0
- package/dist/traits/destructible/destructibleTrait.js +43 -0
- package/dist/traits/destructible/destructibleTrait.js.map +1 -0
- package/dist/traits/destructible/index.d.ts +3 -0
- package/dist/traits/destructible/index.d.ts.map +1 -0
- package/dist/traits/destructible/index.js +8 -0
- package/dist/traits/destructible/index.js.map +1 -0
- package/dist/traits/door/doorBehavior.d.ts +42 -0
- package/dist/traits/door/doorBehavior.d.ts.map +1 -0
- package/dist/traits/door/doorBehavior.js +76 -0
- package/dist/traits/door/doorBehavior.js.map +1 -0
- package/dist/traits/door/doorTrait.d.ts +19 -0
- package/dist/traits/door/doorTrait.d.ts.map +1 -0
- package/dist/traits/door/doorTrait.js +33 -0
- package/dist/traits/door/doorTrait.js.map +1 -0
- package/dist/traits/door/index.d.ts +3 -0
- package/dist/traits/door/index.d.ts.map +1 -0
- package/dist/traits/door/index.js +9 -0
- package/dist/traits/door/index.js.map +1 -0
- package/dist/traits/edible/edibleBehavior.d.ts +63 -0
- package/dist/traits/edible/edibleBehavior.d.ts.map +1 -0
- package/dist/traits/edible/edibleBehavior.js +157 -0
- package/dist/traits/edible/edibleBehavior.js.map +1 -0
- package/dist/traits/edible/edibleTrait.d.ts +57 -0
- package/dist/traits/edible/edibleTrait.d.ts.map +1 -0
- package/dist/traits/edible/edibleTrait.js +51 -0
- package/dist/traits/edible/edibleTrait.js.map +1 -0
- package/dist/traits/edible/index.d.ts +3 -0
- package/dist/traits/edible/index.d.ts.map +1 -0
- package/dist/traits/edible/index.js +20 -0
- package/dist/traits/edible/index.js.map +1 -0
- package/dist/traits/enterable/enterableTrait.d.ts +33 -0
- package/dist/traits/enterable/enterableTrait.d.ts.map +1 -0
- package/dist/traits/enterable/enterableTrait.js +38 -0
- package/dist/traits/enterable/enterableTrait.js.map +1 -0
- package/dist/traits/enterable/index.d.ts +5 -0
- package/dist/traits/enterable/index.d.ts.map +1 -0
- package/dist/traits/enterable/index.js +21 -0
- package/dist/traits/enterable/index.js.map +1 -0
- package/dist/traits/equipped/equippedTrait.d.ts +46 -0
- package/dist/traits/equipped/equippedTrait.d.ts.map +1 -0
- package/dist/traits/equipped/equippedTrait.js +34 -0
- package/dist/traits/equipped/equippedTrait.js.map +1 -0
- package/dist/traits/equipped/index.d.ts +2 -0
- package/dist/traits/equipped/index.d.ts.map +1 -0
- package/dist/traits/equipped/index.js +6 -0
- package/dist/traits/equipped/index.js.map +1 -0
- package/dist/traits/exit/exitBehavior.d.ts +51 -0
- package/dist/traits/exit/exitBehavior.d.ts.map +1 -0
- package/dist/traits/exit/exitBehavior.js +231 -0
- package/dist/traits/exit/exitBehavior.js.map +1 -0
- package/dist/traits/exit/exitTrait.d.ts +41 -0
- package/dist/traits/exit/exitTrait.d.ts.map +1 -0
- package/dist/traits/exit/exitTrait.js +75 -0
- package/dist/traits/exit/exitTrait.js.map +1 -0
- package/dist/traits/exit/index.d.ts +3 -0
- package/dist/traits/exit/index.d.ts.map +1 -0
- package/dist/traits/exit/index.js +9 -0
- package/dist/traits/exit/index.js.map +1 -0
- package/dist/traits/identity/identityBehavior.d.ts +64 -0
- package/dist/traits/identity/identityBehavior.d.ts.map +1 -0
- package/dist/traits/identity/identityBehavior.js +154 -0
- package/dist/traits/identity/identityBehavior.js.map +1 -0
- package/dist/traits/identity/identityTrait.d.ts +70 -0
- package/dist/traits/identity/identityTrait.d.ts.map +1 -0
- package/dist/traits/identity/identityTrait.js +79 -0
- package/dist/traits/identity/identityTrait.js.map +1 -0
- package/dist/traits/identity/index.d.ts +3 -0
- package/dist/traits/identity/index.d.ts.map +1 -0
- package/dist/traits/identity/index.js +20 -0
- package/dist/traits/identity/index.js.map +1 -0
- package/dist/traits/implementations.d.ts +51 -0
- package/dist/traits/implementations.d.ts.map +1 -0
- package/dist/traits/implementations.js +145 -0
- package/dist/traits/implementations.js.map +1 -0
- package/dist/traits/index.d.ts +36 -0
- package/dist/traits/index.d.ts.map +1 -0
- package/dist/traits/index.js +62 -0
- package/dist/traits/index.js.map +1 -0
- package/dist/traits/light-source/index.d.ts +3 -0
- package/dist/traits/light-source/index.d.ts.map +1 -0
- package/dist/traits/light-source/index.js +9 -0
- package/dist/traits/light-source/index.js.map +1 -0
- package/dist/traits/light-source/lightSourceBehavior.d.ts +57 -0
- package/dist/traits/light-source/lightSourceBehavior.d.ts.map +1 -0
- package/dist/traits/light-source/lightSourceBehavior.js +135 -0
- package/dist/traits/light-source/lightSourceBehavior.js.map +1 -0
- package/dist/traits/light-source/lightSourceTrait.d.ts +28 -0
- package/dist/traits/light-source/lightSourceTrait.d.ts.map +1 -0
- package/dist/traits/light-source/lightSourceTrait.js +37 -0
- package/dist/traits/light-source/lightSourceTrait.js.map +1 -0
- package/dist/traits/lockable/index.d.ts +3 -0
- package/dist/traits/lockable/index.d.ts.map +1 -0
- package/dist/traits/lockable/index.js +20 -0
- package/dist/traits/lockable/index.js.map +1 -0
- package/dist/traits/lockable/lockableBehavior.d.ts +88 -0
- package/dist/traits/lockable/lockableBehavior.d.ts.map +1 -0
- package/dist/traits/lockable/lockableBehavior.js +196 -0
- package/dist/traits/lockable/lockableBehavior.js.map +1 -0
- package/dist/traits/lockable/lockableTrait.d.ts +59 -0
- package/dist/traits/lockable/lockableTrait.d.ts.map +1 -0
- package/dist/traits/lockable/lockableTrait.js +50 -0
- package/dist/traits/lockable/lockableTrait.js.map +1 -0
- package/dist/traits/moveable-scenery/index.d.ts +2 -0
- package/dist/traits/moveable-scenery/index.d.ts.map +1 -0
- package/dist/traits/moveable-scenery/index.js +18 -0
- package/dist/traits/moveable-scenery/index.js.map +1 -0
- package/dist/traits/moveable-scenery/moveableSceneryTrait.d.ts +69 -0
- package/dist/traits/moveable-scenery/moveableSceneryTrait.d.ts.map +1 -0
- package/dist/traits/moveable-scenery/moveableSceneryTrait.js +43 -0
- package/dist/traits/moveable-scenery/moveableSceneryTrait.js.map +1 -0
- package/dist/traits/npc/index.d.ts +5 -0
- package/dist/traits/npc/index.d.ts.map +1 -0
- package/dist/traits/npc/index.js +9 -0
- package/dist/traits/npc/index.js.map +1 -0
- package/dist/traits/npc/npcTrait.d.ts +128 -0
- package/dist/traits/npc/npcTrait.d.ts.map +1 -0
- package/dist/traits/npc/npcTrait.js +180 -0
- package/dist/traits/npc/npcTrait.js.map +1 -0
- package/dist/traits/openable/index.d.ts +3 -0
- package/dist/traits/openable/index.d.ts.map +1 -0
- package/dist/traits/openable/index.js +20 -0
- package/dist/traits/openable/index.js.map +1 -0
- package/dist/traits/openable/openableBehavior.d.ts +64 -0
- package/dist/traits/openable/openableBehavior.d.ts.map +1 -0
- package/dist/traits/openable/openableBehavior.js +109 -0
- package/dist/traits/openable/openableBehavior.js.map +1 -0
- package/dist/traits/openable/openableTrait.d.ts +46 -0
- package/dist/traits/openable/openableTrait.d.ts.map +1 -0
- package/dist/traits/openable/openableTrait.js +42 -0
- package/dist/traits/openable/openableTrait.js.map +1 -0
- package/dist/traits/portable/portableTrait.d.ts +26 -0
- package/dist/traits/portable/portableTrait.d.ts.map +1 -0
- package/dist/traits/portable/portableTrait.js +35 -0
- package/dist/traits/portable/portableTrait.js.map +1 -0
- package/dist/traits/pullable/index.d.ts +2 -0
- package/dist/traits/pullable/index.d.ts.map +1 -0
- package/dist/traits/pullable/index.js +18 -0
- package/dist/traits/pullable/index.js.map +1 -0
- package/dist/traits/pullable/pullableTrait.d.ts +81 -0
- package/dist/traits/pullable/pullableTrait.d.ts.map +1 -0
- package/dist/traits/pullable/pullableTrait.js +44 -0
- package/dist/traits/pullable/pullableTrait.js.map +1 -0
- package/dist/traits/pushable/index.d.ts +2 -0
- package/dist/traits/pushable/index.d.ts.map +1 -0
- package/dist/traits/pushable/index.js +18 -0
- package/dist/traits/pushable/index.js.map +1 -0
- package/dist/traits/pushable/pushableTrait.d.ts +81 -0
- package/dist/traits/pushable/pushableTrait.d.ts.map +1 -0
- package/dist/traits/pushable/pushableTrait.js +44 -0
- package/dist/traits/pushable/pushableTrait.js.map +1 -0
- package/dist/traits/readable/index.d.ts +3 -0
- package/dist/traits/readable/index.d.ts.map +1 -0
- package/dist/traits/readable/index.js +9 -0
- package/dist/traits/readable/index.js.map +1 -0
- package/dist/traits/readable/readableBehavior.d.ts +42 -0
- package/dist/traits/readable/readableBehavior.d.ts.map +1 -0
- package/dist/traits/readable/readableBehavior.js +174 -0
- package/dist/traits/readable/readableBehavior.js.map +1 -0
- package/dist/traits/readable/readableTrait.d.ts +37 -0
- package/dist/traits/readable/readableTrait.d.ts.map +1 -0
- package/dist/traits/readable/readableTrait.js +51 -0
- package/dist/traits/readable/readableTrait.js.map +1 -0
- package/dist/traits/register-all.d.ts +10 -0
- package/dist/traits/register-all.d.ts.map +1 -0
- package/dist/traits/register-all.js +19 -0
- package/dist/traits/register-all.js.map +1 -0
- package/dist/traits/room/index.d.ts +9 -0
- package/dist/traits/room/index.d.ts.map +1 -0
- package/dist/traits/room/index.js +14 -0
- package/dist/traits/room/index.js.map +1 -0
- package/dist/traits/room/roomBehavior.d.ts +87 -0
- package/dist/traits/room/roomBehavior.d.ts.map +1 -0
- package/dist/traits/room/roomBehavior.js +232 -0
- package/dist/traits/room/roomBehavior.js.map +1 -0
- package/dist/traits/room/roomTrait.d.ts +87 -0
- package/dist/traits/room/roomTrait.d.ts.map +1 -0
- package/dist/traits/room/roomTrait.js +59 -0
- package/dist/traits/room/roomTrait.js.map +1 -0
- package/dist/traits/scenery/index.d.ts +3 -0
- package/dist/traits/scenery/index.d.ts.map +1 -0
- package/dist/traits/scenery/index.js +9 -0
- package/dist/traits/scenery/index.js.map +1 -0
- package/dist/traits/scenery/sceneryBehavior.d.ts +21 -0
- package/dist/traits/scenery/sceneryBehavior.d.ts.map +1 -0
- package/dist/traits/scenery/sceneryBehavior.js +42 -0
- package/dist/traits/scenery/sceneryBehavior.js.map +1 -0
- package/dist/traits/scenery/sceneryTrait.d.ts +30 -0
- package/dist/traits/scenery/sceneryTrait.d.ts.map +1 -0
- package/dist/traits/scenery/sceneryTrait.js +39 -0
- package/dist/traits/scenery/sceneryTrait.js.map +1 -0
- package/dist/traits/supporter/index.d.ts +3 -0
- package/dist/traits/supporter/index.d.ts.map +1 -0
- package/dist/traits/supporter/index.js +9 -0
- package/dist/traits/supporter/index.js.map +1 -0
- package/dist/traits/supporter/supporterBehavior.d.ts +83 -0
- package/dist/traits/supporter/supporterBehavior.d.ts.map +1 -0
- package/dist/traits/supporter/supporterBehavior.js +210 -0
- package/dist/traits/supporter/supporterBehavior.js.map +1 -0
- package/dist/traits/supporter/supporterTrait.d.ts +26 -0
- package/dist/traits/supporter/supporterTrait.d.ts.map +1 -0
- package/dist/traits/supporter/supporterTrait.js +30 -0
- package/dist/traits/supporter/supporterTrait.js.map +1 -0
- package/dist/traits/switchable/index.d.ts +3 -0
- package/dist/traits/switchable/index.d.ts.map +1 -0
- package/dist/traits/switchable/index.js +20 -0
- package/dist/traits/switchable/index.js.map +1 -0
- package/dist/traits/switchable/switchableBehavior.d.ts +73 -0
- package/dist/traits/switchable/switchableBehavior.d.ts.map +1 -0
- package/dist/traits/switchable/switchableBehavior.js +191 -0
- package/dist/traits/switchable/switchableBehavior.js.map +1 -0
- package/dist/traits/switchable/switchableTrait.d.ts +61 -0
- package/dist/traits/switchable/switchableTrait.d.ts.map +1 -0
- package/dist/traits/switchable/switchableTrait.js +52 -0
- package/dist/traits/switchable/switchableTrait.js.map +1 -0
- package/dist/traits/trait-types.d.ts +81 -0
- package/dist/traits/trait-types.d.ts.map +1 -0
- package/dist/traits/trait-types.js +146 -0
- package/dist/traits/trait-types.js.map +1 -0
- package/dist/traits/trait.d.ts +42 -0
- package/dist/traits/trait.d.ts.map +1 -0
- package/dist/traits/trait.js +42 -0
- package/dist/traits/trait.js.map +1 -0
- package/dist/traits/vehicle/index.d.ts +6 -0
- package/dist/traits/vehicle/index.d.ts.map +1 -0
- package/dist/traits/vehicle/index.js +22 -0
- package/dist/traits/vehicle/index.js.map +1 -0
- package/dist/traits/vehicle/vehicleBehavior.d.ts +62 -0
- package/dist/traits/vehicle/vehicleBehavior.d.ts.map +1 -0
- package/dist/traits/vehicle/vehicleBehavior.js +145 -0
- package/dist/traits/vehicle/vehicleBehavior.js.map +1 -0
- package/dist/traits/vehicle/vehicleTrait.d.ts +77 -0
- package/dist/traits/vehicle/vehicleTrait.d.ts.map +1 -0
- package/dist/traits/vehicle/vehicleTrait.js +92 -0
- package/dist/traits/vehicle/vehicleTrait.js.map +1 -0
- package/dist/traits/weapon/index.d.ts +3 -0
- package/dist/traits/weapon/index.d.ts.map +1 -0
- package/dist/traits/weapon/index.js +8 -0
- package/dist/traits/weapon/index.js.map +1 -0
- package/dist/traits/weapon/weaponBehavior.d.ts +47 -0
- package/dist/traits/weapon/weaponBehavior.d.ts.map +1 -0
- package/dist/traits/weapon/weaponBehavior.js +106 -0
- package/dist/traits/weapon/weaponBehavior.js.map +1 -0
- package/dist/traits/weapon/weaponTrait.d.ts +67 -0
- package/dist/traits/weapon/weaponTrait.d.ts.map +1 -0
- package/dist/traits/weapon/weaponTrait.js +60 -0
- package/dist/traits/weapon/weaponTrait.js.map +1 -0
- package/dist/traits/wearable/index.d.ts +3 -0
- package/dist/traits/wearable/index.d.ts.map +1 -0
- package/dist/traits/wearable/index.js +20 -0
- package/dist/traits/wearable/index.js.map +1 -0
- package/dist/traits/wearable/wearableBehavior.d.ts +64 -0
- package/dist/traits/wearable/wearableBehavior.d.ts.map +1 -0
- package/dist/traits/wearable/wearableBehavior.js +142 -0
- package/dist/traits/wearable/wearableBehavior.js.map +1 -0
- package/dist/traits/wearable/wearableTrait.d.ts +54 -0
- package/dist/traits/wearable/wearableTrait.d.ts.map +1 -0
- package/dist/traits/wearable/wearableTrait.js +53 -0
- package/dist/traits/wearable/wearableTrait.js.map +1 -0
- package/dist/utils/event-utils.d.ts +30 -0
- package/dist/utils/event-utils.d.ts.map +1 -0
- package/dist/utils/event-utils.js +33 -0
- package/dist/utils/event-utils.js.map +1 -0
- package/dist/world/AuthorModel.d.ts +151 -0
- package/dist/world/AuthorModel.d.ts.map +1 -0
- package/dist/world/AuthorModel.js +416 -0
- package/dist/world/AuthorModel.js.map +1 -0
- package/dist/world/SharedDataStore.d.ts +24 -0
- package/dist/world/SharedDataStore.d.ts.map +1 -0
- package/dist/world/SharedDataStore.js +50 -0
- package/dist/world/SharedDataStore.js.map +1 -0
- package/dist/world/SpatialIndex.d.ts +16 -0
- package/dist/world/SpatialIndex.d.ts.map +1 -0
- package/dist/world/SpatialIndex.js +117 -0
- package/dist/world/SpatialIndex.js.map +1 -0
- package/dist/world/VisibilityBehavior.d.ts +83 -0
- package/dist/world/VisibilityBehavior.d.ts.map +1 -0
- package/dist/world/VisibilityBehavior.js +484 -0
- package/dist/world/VisibilityBehavior.js.map +1 -0
- package/dist/world/WorldModel.d.ts +270 -0
- package/dist/world/WorldModel.d.ts.map +1 -0
- package/dist/world/WorldModel.js +1028 -0
- package/dist/world/WorldModel.js.map +1 -0
- package/dist/world/capabilities.d.ts +36 -0
- package/dist/world/capabilities.d.ts.map +1 -0
- package/dist/world/capabilities.js +18 -0
- package/dist/world/capabilities.js.map +1 -0
- package/dist/world/index.d.ts +7 -0
- package/dist/world/index.d.ts.map +1 -0
- package/dist/world/index.js +21 -0
- package/dist/world/index.js.map +1 -0
- package/package.json +67 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Capability Defaults (ADR-090 Extension)
|
|
3
|
+
*
|
|
4
|
+
* Global configuration for how capabilities are resolved when multiple
|
|
5
|
+
* entities claim the same capability. Stories can override per-registration.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Resolution strategy when multiple entities claim the same capability.
|
|
9
|
+
*/
|
|
10
|
+
export type CapabilityResolution = 'first-wins' | 'any-blocks' | 'all-must-pass' | 'highest-priority';
|
|
11
|
+
/**
|
|
12
|
+
* How the capability validation result affects the action.
|
|
13
|
+
*/
|
|
14
|
+
export type CapabilityMode = 'blocking' | 'advisory' | 'chain';
|
|
15
|
+
/**
|
|
16
|
+
* Configuration for a capability.
|
|
17
|
+
*/
|
|
18
|
+
export interface CapabilityConfig {
|
|
19
|
+
/** How to resolve multiple entities claiming this capability */
|
|
20
|
+
resolution: CapabilityResolution;
|
|
21
|
+
/** How validation result affects the action */
|
|
22
|
+
mode: CapabilityMode;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Define default configuration for a capability.
|
|
26
|
+
*
|
|
27
|
+
* Called during platform or story initialization to set how a capability
|
|
28
|
+
* should behave when multiple entities claim it.
|
|
29
|
+
*
|
|
30
|
+
* @param capabilityId - The capability ID (e.g., 'if.scope.visible', 'if.action.taking')
|
|
31
|
+
* @param config - Partial config, missing values use defaults
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```typescript
|
|
35
|
+
* // Visibility should block if ANY entity says it's hidden
|
|
36
|
+
* defineCapabilityDefaults('if.scope.visible', {
|
|
37
|
+
* resolution: 'any-blocks',
|
|
38
|
+
* mode: 'blocking'
|
|
39
|
+
* });
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
export declare function defineCapabilityDefaults(capabilityId: string, config: Partial<CapabilityConfig>): void;
|
|
43
|
+
/**
|
|
44
|
+
* Get configuration for a capability.
|
|
45
|
+
*
|
|
46
|
+
* Returns the registered config or defaults if not registered.
|
|
47
|
+
*
|
|
48
|
+
* @param capabilityId - The capability ID
|
|
49
|
+
* @returns The capability configuration
|
|
50
|
+
*/
|
|
51
|
+
export declare function getCapabilityConfig(capabilityId: string): CapabilityConfig;
|
|
52
|
+
/**
|
|
53
|
+
* Check if a capability has explicit defaults defined.
|
|
54
|
+
*
|
|
55
|
+
* @param capabilityId - The capability ID
|
|
56
|
+
* @returns true if defaults have been defined
|
|
57
|
+
*/
|
|
58
|
+
export declare function hasCapabilityDefaults(capabilityId: string): boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Clear all capability defaults (for testing).
|
|
61
|
+
*/
|
|
62
|
+
export declare function clearCapabilityDefaults(): void;
|
|
63
|
+
/**
|
|
64
|
+
* Get all defined capability defaults (for debugging/introspection).
|
|
65
|
+
*/
|
|
66
|
+
export declare function getAllCapabilityDefaults(): Map<string, CapabilityConfig>;
|
|
67
|
+
//# sourceMappingURL=capability-defaults.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capability-defaults.d.ts","sourceRoot":"","sources":["../../src/capabilities/capability-defaults.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAC5B,YAAY,GACZ,YAAY,GACZ,eAAe,GACf,kBAAkB,CAAC;AAEvB;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB,UAAU,GACV,UAAU,GACV,OAAO,CAAC;AAEZ;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,gEAAgE;IAChE,UAAU,EAAE,oBAAoB,CAAC;IACjC,+CAA+C;IAC/C,IAAI,EAAE,cAAc,CAAC;CACtB;AAeD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,wBAAwB,CACtC,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAChC,IAAI,CAKN;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,gBAAgB,CAE1E;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAEnE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAExE"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Capability Defaults (ADR-090 Extension)
|
|
4
|
+
*
|
|
5
|
+
* Global configuration for how capabilities are resolved when multiple
|
|
6
|
+
* entities claim the same capability. Stories can override per-registration.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.defineCapabilityDefaults = defineCapabilityDefaults;
|
|
10
|
+
exports.getCapabilityConfig = getCapabilityConfig;
|
|
11
|
+
exports.hasCapabilityDefaults = hasCapabilityDefaults;
|
|
12
|
+
exports.clearCapabilityDefaults = clearCapabilityDefaults;
|
|
13
|
+
exports.getAllCapabilityDefaults = getAllCapabilityDefaults;
|
|
14
|
+
/**
|
|
15
|
+
* Default configuration used when no specific config is defined.
|
|
16
|
+
*/
|
|
17
|
+
const DEFAULT_CONFIG = {
|
|
18
|
+
resolution: 'first-wins',
|
|
19
|
+
mode: 'blocking'
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Registry of capability configurations.
|
|
23
|
+
*/
|
|
24
|
+
const capabilityDefaults = new Map();
|
|
25
|
+
/**
|
|
26
|
+
* Define default configuration for a capability.
|
|
27
|
+
*
|
|
28
|
+
* Called during platform or story initialization to set how a capability
|
|
29
|
+
* should behave when multiple entities claim it.
|
|
30
|
+
*
|
|
31
|
+
* @param capabilityId - The capability ID (e.g., 'if.scope.visible', 'if.action.taking')
|
|
32
|
+
* @param config - Partial config, missing values use defaults
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```typescript
|
|
36
|
+
* // Visibility should block if ANY entity says it's hidden
|
|
37
|
+
* defineCapabilityDefaults('if.scope.visible', {
|
|
38
|
+
* resolution: 'any-blocks',
|
|
39
|
+
* mode: 'blocking'
|
|
40
|
+
* });
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
function defineCapabilityDefaults(capabilityId, config) {
|
|
44
|
+
capabilityDefaults.set(capabilityId, {
|
|
45
|
+
resolution: config.resolution ?? DEFAULT_CONFIG.resolution,
|
|
46
|
+
mode: config.mode ?? DEFAULT_CONFIG.mode
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Get configuration for a capability.
|
|
51
|
+
*
|
|
52
|
+
* Returns the registered config or defaults if not registered.
|
|
53
|
+
*
|
|
54
|
+
* @param capabilityId - The capability ID
|
|
55
|
+
* @returns The capability configuration
|
|
56
|
+
*/
|
|
57
|
+
function getCapabilityConfig(capabilityId) {
|
|
58
|
+
return capabilityDefaults.get(capabilityId) ?? { ...DEFAULT_CONFIG };
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Check if a capability has explicit defaults defined.
|
|
62
|
+
*
|
|
63
|
+
* @param capabilityId - The capability ID
|
|
64
|
+
* @returns true if defaults have been defined
|
|
65
|
+
*/
|
|
66
|
+
function hasCapabilityDefaults(capabilityId) {
|
|
67
|
+
return capabilityDefaults.has(capabilityId);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Clear all capability defaults (for testing).
|
|
71
|
+
*/
|
|
72
|
+
function clearCapabilityDefaults() {
|
|
73
|
+
capabilityDefaults.clear();
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Get all defined capability defaults (for debugging/introspection).
|
|
77
|
+
*/
|
|
78
|
+
function getAllCapabilityDefaults() {
|
|
79
|
+
return new Map(capabilityDefaults);
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=capability-defaults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capability-defaults.js","sourceRoot":"","sources":["../../src/capabilities/capability-defaults.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AA4DH,4DAQC;AAUD,kDAEC;AAQD,sDAEC;AAKD,0DAEC;AAKD,4DAEC;AA3ED;;GAEG;AACH,MAAM,cAAc,GAAqB;IACvC,UAAU,EAAE,YAAY;IACxB,IAAI,EAAE,UAAU;CACjB,CAAC;AAEF;;GAEG;AACH,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAA4B,CAAC;AAE/D;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAgB,wBAAwB,CACtC,YAAoB,EACpB,MAAiC;IAEjC,kBAAkB,CAAC,GAAG,CAAC,YAAY,EAAE;QACnC,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,cAAc,CAAC,UAAU;QAC1D,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,cAAc,CAAC,IAAI;KACzC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,mBAAmB,CAAC,YAAoB;IACtD,OAAO,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,cAAc,EAAE,CAAC;AACvE,CAAC;AAED;;;;;GAKG;AACH,SAAgB,qBAAqB,CAAC,YAAoB;IACxD,OAAO,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,SAAgB,uBAAuB;IACrC,kBAAkB,CAAC,KAAK,EAAE,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,SAAgB,wBAAwB;IACtC,OAAO,IAAI,GAAG,CAAC,kBAAkB,CAAC,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Capability Helpers (ADR-090)
|
|
3
|
+
*
|
|
4
|
+
* Helper functions for working with trait capabilities.
|
|
5
|
+
* Used by capability-dispatch actions to find and check capabilities.
|
|
6
|
+
*/
|
|
7
|
+
import { ITrait } from '../traits/trait';
|
|
8
|
+
import { IFEntity } from '../entities';
|
|
9
|
+
/**
|
|
10
|
+
* Find a trait on the entity that declares the given capability.
|
|
11
|
+
*
|
|
12
|
+
* Entity resolution (which entity "lower X" refers to) is handled
|
|
13
|
+
* by the parser using scope math. Once resolved to a specific entity,
|
|
14
|
+
* this function finds the trait that handles the action.
|
|
15
|
+
*
|
|
16
|
+
* @param entity - The entity to search
|
|
17
|
+
* @param actionId - The action ID (capability) to find
|
|
18
|
+
* @returns The trait that claims the capability, or undefined
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* const trait = findTraitWithCapability(basket, 'if.action.lowering');
|
|
23
|
+
* if (trait) {
|
|
24
|
+
* const behavior = getBehaviorForCapability(trait, 'if.action.lowering');
|
|
25
|
+
* // ... dispatch to behavior
|
|
26
|
+
* }
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export declare function findTraitWithCapability(entity: IFEntity, actionId: string): ITrait | undefined;
|
|
30
|
+
/**
|
|
31
|
+
* Check if an entity has any trait claiming a capability.
|
|
32
|
+
*
|
|
33
|
+
* @param entity - The entity to check
|
|
34
|
+
* @param actionId - The action ID (capability) to check for
|
|
35
|
+
* @returns True if entity has a trait with this capability
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```typescript
|
|
39
|
+
* if (hasCapability(entity, 'if.action.lowering')) {
|
|
40
|
+
* // Entity can be lowered
|
|
41
|
+
* }
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export declare function hasCapability(entity: IFEntity, actionId: string): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Get all capabilities declared by an entity's traits.
|
|
47
|
+
*
|
|
48
|
+
* @param entity - The entity to inspect
|
|
49
|
+
* @returns Array of action IDs the entity can handle
|
|
50
|
+
*/
|
|
51
|
+
export declare function getEntityCapabilities(entity: IFEntity): string[];
|
|
52
|
+
/**
|
|
53
|
+
* Type guard to check if a trait has a specific capability.
|
|
54
|
+
*
|
|
55
|
+
* @param trait - The trait to check
|
|
56
|
+
* @param actionId - The action ID to check for
|
|
57
|
+
* @param traitType - Optional: specific trait class to narrow to
|
|
58
|
+
* @returns True if trait has the capability (and is of specified type)
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```typescript
|
|
62
|
+
* if (traitHasCapability(trait, 'if.action.lowering', BasketElevatorTrait)) {
|
|
63
|
+
* // trait is narrowed to BasketElevatorTrait
|
|
64
|
+
* console.log(trait.position);
|
|
65
|
+
* }
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
export declare function traitHasCapability<T extends ITrait>(trait: ITrait, actionId: string, traitType?: new (...args: any[]) => T): trait is T;
|
|
69
|
+
/**
|
|
70
|
+
* Find all traits on an entity that have capabilities.
|
|
71
|
+
*
|
|
72
|
+
* @param entity - The entity to inspect
|
|
73
|
+
* @returns Array of traits that declare at least one capability
|
|
74
|
+
*/
|
|
75
|
+
export declare function getCapableTraits(entity: IFEntity): ITrait[];
|
|
76
|
+
//# sourceMappingURL=capability-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capability-helpers.d.ts","sourceRoot":"","sources":["../../src/capabilities/capability-helpers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAqB,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,QAAQ,EAChB,QAAQ,EAAE,MAAM,GACf,MAAM,GAAG,SAAS,CAQpB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEzE;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,EAAE,CAWhE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,EACjD,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GACpC,KAAK,IAAI,CAAC,CAQZ;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,EAAE,CAK3D"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Capability Helpers (ADR-090)
|
|
4
|
+
*
|
|
5
|
+
* Helper functions for working with trait capabilities.
|
|
6
|
+
* Used by capability-dispatch actions to find and check capabilities.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.findTraitWithCapability = findTraitWithCapability;
|
|
10
|
+
exports.hasCapability = hasCapability;
|
|
11
|
+
exports.getEntityCapabilities = getEntityCapabilities;
|
|
12
|
+
exports.traitHasCapability = traitHasCapability;
|
|
13
|
+
exports.getCapableTraits = getCapableTraits;
|
|
14
|
+
/**
|
|
15
|
+
* Find a trait on the entity that declares the given capability.
|
|
16
|
+
*
|
|
17
|
+
* Entity resolution (which entity "lower X" refers to) is handled
|
|
18
|
+
* by the parser using scope math. Once resolved to a specific entity,
|
|
19
|
+
* this function finds the trait that handles the action.
|
|
20
|
+
*
|
|
21
|
+
* @param entity - The entity to search
|
|
22
|
+
* @param actionId - The action ID (capability) to find
|
|
23
|
+
* @returns The trait that claims the capability, or undefined
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```typescript
|
|
27
|
+
* const trait = findTraitWithCapability(basket, 'if.action.lowering');
|
|
28
|
+
* if (trait) {
|
|
29
|
+
* const behavior = getBehaviorForCapability(trait, 'if.action.lowering');
|
|
30
|
+
* // ... dispatch to behavior
|
|
31
|
+
* }
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
function findTraitWithCapability(entity, actionId) {
|
|
35
|
+
for (const trait of entity.traits.values()) {
|
|
36
|
+
const traitClass = trait.constructor;
|
|
37
|
+
if (traitClass.capabilities?.includes(actionId)) {
|
|
38
|
+
return trait;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Check if an entity has any trait claiming a capability.
|
|
45
|
+
*
|
|
46
|
+
* @param entity - The entity to check
|
|
47
|
+
* @param actionId - The action ID (capability) to check for
|
|
48
|
+
* @returns True if entity has a trait with this capability
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```typescript
|
|
52
|
+
* if (hasCapability(entity, 'if.action.lowering')) {
|
|
53
|
+
* // Entity can be lowered
|
|
54
|
+
* }
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
function hasCapability(entity, actionId) {
|
|
58
|
+
return findTraitWithCapability(entity, actionId) !== undefined;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Get all capabilities declared by an entity's traits.
|
|
62
|
+
*
|
|
63
|
+
* @param entity - The entity to inspect
|
|
64
|
+
* @returns Array of action IDs the entity can handle
|
|
65
|
+
*/
|
|
66
|
+
function getEntityCapabilities(entity) {
|
|
67
|
+
const capabilities = [];
|
|
68
|
+
for (const trait of entity.traits.values()) {
|
|
69
|
+
const traitClass = trait.constructor;
|
|
70
|
+
if (traitClass.capabilities) {
|
|
71
|
+
capabilities.push(...traitClass.capabilities);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return capabilities;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Type guard to check if a trait has a specific capability.
|
|
78
|
+
*
|
|
79
|
+
* @param trait - The trait to check
|
|
80
|
+
* @param actionId - The action ID to check for
|
|
81
|
+
* @param traitType - Optional: specific trait class to narrow to
|
|
82
|
+
* @returns True if trait has the capability (and is of specified type)
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* ```typescript
|
|
86
|
+
* if (traitHasCapability(trait, 'if.action.lowering', BasketElevatorTrait)) {
|
|
87
|
+
* // trait is narrowed to BasketElevatorTrait
|
|
88
|
+
* console.log(trait.position);
|
|
89
|
+
* }
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
function traitHasCapability(trait, actionId, traitType) {
|
|
93
|
+
const traitClass = trait.constructor;
|
|
94
|
+
const hasAction = traitClass.capabilities?.includes(actionId) ?? false;
|
|
95
|
+
if (traitType) {
|
|
96
|
+
return hasAction && trait instanceof traitType;
|
|
97
|
+
}
|
|
98
|
+
return hasAction;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Find all traits on an entity that have capabilities.
|
|
102
|
+
*
|
|
103
|
+
* @param entity - The entity to inspect
|
|
104
|
+
* @returns Array of traits that declare at least one capability
|
|
105
|
+
*/
|
|
106
|
+
function getCapableTraits(entity) {
|
|
107
|
+
return Array.from(entity.traits.values()).filter(trait => {
|
|
108
|
+
const traitClass = trait.constructor;
|
|
109
|
+
return traitClass.capabilities && traitClass.capabilities.length > 0;
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=capability-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capability-helpers.js","sourceRoot":"","sources":["../../src/capabilities/capability-helpers.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAyBH,0DAWC;AAgBD,sCAEC;AAQD,sDAWC;AAkBD,gDAYC;AAQD,4CAKC;AA/GD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,SAAgB,uBAAuB,CACrC,MAAgB,EAChB,QAAgB;IAEhB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QAC3C,MAAM,UAAU,GAAG,KAAK,CAAC,WAAgC,CAAC;QAC1D,IAAI,UAAU,CAAC,YAAY,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAgB,aAAa,CAAC,MAAgB,EAAE,QAAgB;IAC9D,OAAO,uBAAuB,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,SAAS,CAAC;AACjE,CAAC;AAED;;;;;GAKG;AACH,SAAgB,qBAAqB,CAAC,MAAgB;IACpD,MAAM,YAAY,GAAa,EAAE,CAAC;IAElC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QAC3C,MAAM,UAAU,GAAG,KAAK,CAAC,WAAgC,CAAC;QAC1D,IAAI,UAAU,CAAC,YAAY,EAAE,CAAC;YAC5B,YAAY,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,kBAAkB,CAChC,KAAa,EACb,QAAgB,EAChB,SAAqC;IAErC,MAAM,UAAU,GAAG,KAAK,CAAC,WAAgC,CAAC;IAC1D,MAAM,SAAS,GAAG,UAAU,CAAC,YAAY,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC;IAEvE,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,SAAS,IAAI,KAAK,YAAY,SAAS,CAAC;IACjD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,gBAAgB,CAAC,MAAgB;IAC/C,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;QACvD,MAAM,UAAU,GAAG,KAAK,CAAC,WAAgC,CAAC;QAC1D,OAAO,UAAU,CAAC,YAAY,IAAI,UAAU,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Capability Registry (ADR-090)
|
|
3
|
+
*
|
|
4
|
+
* Registry for trait-behavior bindings. Stories register behaviors
|
|
5
|
+
* for their traits, and the dispatch system looks them up at runtime.
|
|
6
|
+
*/
|
|
7
|
+
import { ITrait } from '../traits/trait';
|
|
8
|
+
import { CapabilityBehavior } from './capability-behavior';
|
|
9
|
+
import { CapabilityResolution, CapabilityMode } from './capability-defaults';
|
|
10
|
+
/**
|
|
11
|
+
* Options for registering a capability behavior.
|
|
12
|
+
*/
|
|
13
|
+
export interface BehaviorRegistrationOptions<T extends ITrait = ITrait> {
|
|
14
|
+
/** Priority for resolution (higher = checked first). Default: 0 */
|
|
15
|
+
priority?: number;
|
|
16
|
+
/** Override global resolution strategy for this binding */
|
|
17
|
+
resolution?: CapabilityResolution;
|
|
18
|
+
/** Override global mode for this binding */
|
|
19
|
+
mode?: CapabilityMode;
|
|
20
|
+
/** Optional runtime validation */
|
|
21
|
+
validateBinding?: (trait: T) => boolean;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Binding between a trait type, capability, and behavior.
|
|
25
|
+
*/
|
|
26
|
+
export interface TraitBehaviorBinding<T extends ITrait = ITrait> {
|
|
27
|
+
/** Trait type identifier */
|
|
28
|
+
traitType: string;
|
|
29
|
+
/** Action ID (capability) this binding handles */
|
|
30
|
+
capability: string;
|
|
31
|
+
/** The behavior that handles this trait+capability */
|
|
32
|
+
behavior: CapabilityBehavior;
|
|
33
|
+
/** Priority for resolution (higher = checked first) */
|
|
34
|
+
priority: number;
|
|
35
|
+
/** Override resolution strategy (undefined = use global default) */
|
|
36
|
+
resolution?: CapabilityResolution;
|
|
37
|
+
/** Override mode (undefined = use global default) */
|
|
38
|
+
mode?: CapabilityMode;
|
|
39
|
+
/** Optional runtime validation */
|
|
40
|
+
validateBinding?: (trait: T) => boolean;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Register a behavior for a trait+capability combination.
|
|
44
|
+
*
|
|
45
|
+
* Stories call this to register their behaviors during initialization.
|
|
46
|
+
* Each trait+capability pair can only have one behavior registered.
|
|
47
|
+
*
|
|
48
|
+
* @param traitType - The trait type identifier (e.g., 'dungeo.trait.basket_elevator')
|
|
49
|
+
* @param capability - The action ID (e.g., 'if.action.lowering')
|
|
50
|
+
* @param behavior - The behavior implementation
|
|
51
|
+
* @param options - Optional configuration (priority, resolution override, mode override)
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* ```typescript
|
|
55
|
+
* // Basic registration (uses global defaults)
|
|
56
|
+
* registerCapabilityBehavior(
|
|
57
|
+
* BasketElevatorTrait.type,
|
|
58
|
+
* 'if.action.lowering',
|
|
59
|
+
* BasketLoweringBehavior
|
|
60
|
+
* );
|
|
61
|
+
*
|
|
62
|
+
* // With priority and overrides
|
|
63
|
+
* registerCapabilityBehavior(
|
|
64
|
+
* TrollAxeTrait.type,
|
|
65
|
+
* 'if.action.taking',
|
|
66
|
+
* TrollAxeTakingBehavior,
|
|
67
|
+
* { priority: 100, resolution: 'any-blocks' }
|
|
68
|
+
* );
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
export declare function registerCapabilityBehavior<T extends ITrait>(traitType: string, capability: string, behavior: CapabilityBehavior, options?: BehaviorRegistrationOptions<T>): void;
|
|
72
|
+
/**
|
|
73
|
+
* Get behavior for a trait instance and capability.
|
|
74
|
+
*
|
|
75
|
+
* Called by capability-dispatch actions to find the right behavior.
|
|
76
|
+
*
|
|
77
|
+
* @param trait - The trait instance
|
|
78
|
+
* @param capability - The action ID
|
|
79
|
+
* @returns The behavior, or undefined if not registered
|
|
80
|
+
*/
|
|
81
|
+
export declare function getBehaviorForCapability(trait: ITrait, capability: string): CapabilityBehavior | undefined;
|
|
82
|
+
/**
|
|
83
|
+
* Get the full binding for a trait instance and capability.
|
|
84
|
+
*
|
|
85
|
+
* Includes priority and configuration overrides. Used by dispatch helper
|
|
86
|
+
* for resolution logic.
|
|
87
|
+
*
|
|
88
|
+
* @param trait - The trait instance
|
|
89
|
+
* @param capability - The action ID
|
|
90
|
+
* @returns The binding, or undefined if not registered
|
|
91
|
+
*/
|
|
92
|
+
export declare function getBehaviorBinding(trait: ITrait, capability: string): TraitBehaviorBinding | undefined;
|
|
93
|
+
/**
|
|
94
|
+
* Check if a behavior is registered for a trait+capability.
|
|
95
|
+
*
|
|
96
|
+
* @param traitType - The trait type identifier
|
|
97
|
+
* @param capability - The action ID
|
|
98
|
+
*/
|
|
99
|
+
export declare function hasCapabilityBehavior(traitType: string, capability: string): boolean;
|
|
100
|
+
/**
|
|
101
|
+
* Unregister a behavior (primarily for testing).
|
|
102
|
+
*
|
|
103
|
+
* @param traitType - The trait type identifier
|
|
104
|
+
* @param capability - The action ID
|
|
105
|
+
*/
|
|
106
|
+
export declare function unregisterCapabilityBehavior(traitType: string, capability: string): void;
|
|
107
|
+
/**
|
|
108
|
+
* Clear all registered behaviors (for testing).
|
|
109
|
+
*/
|
|
110
|
+
export declare function clearCapabilityRegistry(): void;
|
|
111
|
+
/**
|
|
112
|
+
* Get all registered bindings (for debugging/introspection).
|
|
113
|
+
*/
|
|
114
|
+
export declare function getAllCapabilityBindings(): Map<string, TraitBehaviorBinding>;
|
|
115
|
+
//# sourceMappingURL=capability-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capability-registry.d.ts","sourceRoot":"","sources":["../../src/capabilities/capability-registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAqB,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE7E;;GAEG;AACH,MAAM,WAAW,2BAA2B,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IACpE,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAClC,4CAA4C;IAC5C,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,kCAAkC;IAClC,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IAC7D,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,UAAU,EAAE,MAAM,CAAC;IACnB,sDAAsD;IACtD,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,uDAAuD;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAClC,qDAAqD;IACrD,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,kCAAkC;IAClC,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC;CACzC;AAcD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,0BAA0B,CAAC,CAAC,SAAS,MAAM,EACzD,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,CAAC,EAAE,2BAA2B,CAAC,CAAC,CAAC,GACvC,IAAI,CAkBN;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,GACjB,kBAAkB,GAAG,SAAS,CAGhC;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,GACjB,oBAAoB,GAAG,SAAS,CAiBlC;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAEpF;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAExF;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAE5E"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Capability Registry (ADR-090)
|
|
4
|
+
*
|
|
5
|
+
* Registry for trait-behavior bindings. Stories register behaviors
|
|
6
|
+
* for their traits, and the dispatch system looks them up at runtime.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.registerCapabilityBehavior = registerCapabilityBehavior;
|
|
10
|
+
exports.getBehaviorForCapability = getBehaviorForCapability;
|
|
11
|
+
exports.getBehaviorBinding = getBehaviorBinding;
|
|
12
|
+
exports.hasCapabilityBehavior = hasCapabilityBehavior;
|
|
13
|
+
exports.unregisterCapabilityBehavior = unregisterCapabilityBehavior;
|
|
14
|
+
exports.clearCapabilityRegistry = clearCapabilityRegistry;
|
|
15
|
+
exports.getAllCapabilityBindings = getAllCapabilityBindings;
|
|
16
|
+
/**
|
|
17
|
+
* Registry storage: key = `${traitType}:${capability}`
|
|
18
|
+
*/
|
|
19
|
+
const behaviorRegistry = new Map();
|
|
20
|
+
/**
|
|
21
|
+
* Generate registry key for trait+capability combination.
|
|
22
|
+
*/
|
|
23
|
+
function registryKey(traitType, capability) {
|
|
24
|
+
return `${traitType}:${capability}`;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Register a behavior for a trait+capability combination.
|
|
28
|
+
*
|
|
29
|
+
* Stories call this to register their behaviors during initialization.
|
|
30
|
+
* Each trait+capability pair can only have one behavior registered.
|
|
31
|
+
*
|
|
32
|
+
* @param traitType - The trait type identifier (e.g., 'dungeo.trait.basket_elevator')
|
|
33
|
+
* @param capability - The action ID (e.g., 'if.action.lowering')
|
|
34
|
+
* @param behavior - The behavior implementation
|
|
35
|
+
* @param options - Optional configuration (priority, resolution override, mode override)
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```typescript
|
|
39
|
+
* // Basic registration (uses global defaults)
|
|
40
|
+
* registerCapabilityBehavior(
|
|
41
|
+
* BasketElevatorTrait.type,
|
|
42
|
+
* 'if.action.lowering',
|
|
43
|
+
* BasketLoweringBehavior
|
|
44
|
+
* );
|
|
45
|
+
*
|
|
46
|
+
* // With priority and overrides
|
|
47
|
+
* registerCapabilityBehavior(
|
|
48
|
+
* TrollAxeTrait.type,
|
|
49
|
+
* 'if.action.taking',
|
|
50
|
+
* TrollAxeTakingBehavior,
|
|
51
|
+
* { priority: 100, resolution: 'any-blocks' }
|
|
52
|
+
* );
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
function registerCapabilityBehavior(traitType, capability, behavior, options) {
|
|
56
|
+
const key = registryKey(traitType, capability);
|
|
57
|
+
if (behaviorRegistry.has(key)) {
|
|
58
|
+
throw new Error(`Behavior already registered for trait "${traitType}" and capability "${capability}"`);
|
|
59
|
+
}
|
|
60
|
+
behaviorRegistry.set(key, {
|
|
61
|
+
traitType,
|
|
62
|
+
capability,
|
|
63
|
+
behavior,
|
|
64
|
+
priority: options?.priority ?? 0,
|
|
65
|
+
resolution: options?.resolution,
|
|
66
|
+
mode: options?.mode,
|
|
67
|
+
validateBinding: options?.validateBinding
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Get behavior for a trait instance and capability.
|
|
72
|
+
*
|
|
73
|
+
* Called by capability-dispatch actions to find the right behavior.
|
|
74
|
+
*
|
|
75
|
+
* @param trait - The trait instance
|
|
76
|
+
* @param capability - The action ID
|
|
77
|
+
* @returns The behavior, or undefined if not registered
|
|
78
|
+
*/
|
|
79
|
+
function getBehaviorForCapability(trait, capability) {
|
|
80
|
+
const binding = getBehaviorBinding(trait, capability);
|
|
81
|
+
return binding?.behavior;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Get the full binding for a trait instance and capability.
|
|
85
|
+
*
|
|
86
|
+
* Includes priority and configuration overrides. Used by dispatch helper
|
|
87
|
+
* for resolution logic.
|
|
88
|
+
*
|
|
89
|
+
* @param trait - The trait instance
|
|
90
|
+
* @param capability - The action ID
|
|
91
|
+
* @returns The binding, or undefined if not registered
|
|
92
|
+
*/
|
|
93
|
+
function getBehaviorBinding(trait, capability) {
|
|
94
|
+
const traitType = trait.constructor.type;
|
|
95
|
+
const key = registryKey(traitType, capability);
|
|
96
|
+
const binding = behaviorRegistry.get(key);
|
|
97
|
+
if (!binding) {
|
|
98
|
+
return undefined;
|
|
99
|
+
}
|
|
100
|
+
// Runtime validation if provided
|
|
101
|
+
if (binding.validateBinding && !binding.validateBinding(trait)) {
|
|
102
|
+
throw new Error(`Behavior validation failed for trait "${traitType}", capability "${capability}"`);
|
|
103
|
+
}
|
|
104
|
+
return binding;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Check if a behavior is registered for a trait+capability.
|
|
108
|
+
*
|
|
109
|
+
* @param traitType - The trait type identifier
|
|
110
|
+
* @param capability - The action ID
|
|
111
|
+
*/
|
|
112
|
+
function hasCapabilityBehavior(traitType, capability) {
|
|
113
|
+
return behaviorRegistry.has(registryKey(traitType, capability));
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Unregister a behavior (primarily for testing).
|
|
117
|
+
*
|
|
118
|
+
* @param traitType - The trait type identifier
|
|
119
|
+
* @param capability - The action ID
|
|
120
|
+
*/
|
|
121
|
+
function unregisterCapabilityBehavior(traitType, capability) {
|
|
122
|
+
behaviorRegistry.delete(registryKey(traitType, capability));
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Clear all registered behaviors (for testing).
|
|
126
|
+
*/
|
|
127
|
+
function clearCapabilityRegistry() {
|
|
128
|
+
behaviorRegistry.clear();
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Get all registered bindings (for debugging/introspection).
|
|
132
|
+
*/
|
|
133
|
+
function getAllCapabilityBindings() {
|
|
134
|
+
return new Map(behaviorRegistry);
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=capability-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capability-registry.js","sourceRoot":"","sources":["../../src/capabilities/capability-registry.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAiFH,gEAuBC;AAWD,4DAMC;AAYD,gDAoBC;AAQD,sDAEC;AAQD,oEAEC;AAKD,0DAEC;AAKD,4DAEC;AAnJD;;GAEG;AACH,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAgC,CAAC;AAEjE;;GAEG;AACH,SAAS,WAAW,CAAC,SAAiB,EAAE,UAAkB;IACxD,OAAO,GAAG,SAAS,IAAI,UAAU,EAAE,CAAC;AACtC,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,SAAgB,0BAA0B,CACxC,SAAiB,EACjB,UAAkB,EAClB,QAA4B,EAC5B,OAAwC;IAExC,MAAM,GAAG,GAAG,WAAW,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAE/C,IAAI,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACb,0CAA0C,SAAS,qBAAqB,UAAU,GAAG,CACtF,CAAC;IACJ,CAAC;IAED,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE;QACxB,SAAS;QACT,UAAU;QACV,QAAQ;QACR,QAAQ,EAAE,OAAO,EAAE,QAAQ,IAAI,CAAC;QAChC,UAAU,EAAE,OAAO,EAAE,UAAU;QAC/B,IAAI,EAAE,OAAO,EAAE,IAAI;QACnB,eAAe,EAAE,OAAO,EAAE,eAA2D;KACtF,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,wBAAwB,CACtC,KAAa,EACb,UAAkB;IAElB,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACtD,OAAO,OAAO,EAAE,QAAQ,CAAC;AAC3B,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,kBAAkB,CAChC,KAAa,EACb,UAAkB;IAElB,MAAM,SAAS,GAAI,KAAK,CAAC,WAAiC,CAAC,IAAI,CAAC;IAChE,MAAM,GAAG,GAAG,WAAW,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAE1C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,iCAAiC;IACjC,IAAI,OAAO,CAAC,eAAe,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,KAAK,CACb,yCAAyC,SAAS,kBAAkB,UAAU,GAAG,CAClF,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,qBAAqB,CAAC,SAAiB,EAAE,UAAkB;IACzE,OAAO,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;AAClE,CAAC;AAED;;;;;GAKG;AACH,SAAgB,4BAA4B,CAAC,SAAiB,EAAE,UAAkB;IAChF,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,SAAgB,uBAAuB;IACrC,gBAAgB,CAAC,KAAK,EAAE,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,SAAgB,wBAAwB;IACtC,OAAO,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAC;AACnC,CAAC"}
|