@sharpee/stdlib 2.2.0 → 3.1.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 (299) hide show
  1. package/actions/base/snapshot-utils.js +2 -2
  2. package/actions/base/snapshot-utils.js.map +1 -1
  3. package/actions/constants.d.ts +2 -0
  4. package/actions/constants.d.ts.map +1 -1
  5. package/actions/constants.js +3 -0
  6. package/actions/constants.js.map +1 -1
  7. package/actions/index.d.ts +2 -0
  8. package/actions/index.d.ts.map +1 -1
  9. package/actions/index.js +6 -0
  10. package/actions/index.js.map +1 -1
  11. package/actions/lifecycle/descriptor.d.ts +111 -0
  12. package/actions/lifecycle/descriptor.d.ts.map +1 -0
  13. package/actions/lifecycle/descriptor.js +22 -0
  14. package/actions/lifecycle/descriptor.js.map +1 -0
  15. package/actions/lifecycle/index.d.ts +14 -0
  16. package/actions/lifecycle/index.d.ts.map +1 -0
  17. package/actions/lifecycle/index.js +27 -0
  18. package/actions/lifecycle/index.js.map +1 -0
  19. package/actions/lifecycle/lifecycle-engine.d.ts +173 -0
  20. package/actions/lifecycle/lifecycle-engine.d.ts.map +1 -0
  21. package/actions/lifecycle/lifecycle-engine.js +247 -0
  22. package/actions/lifecycle/lifecycle-engine.js.map +1 -0
  23. package/actions/lifecycle/multi-object-lifecycle.d.ts +105 -0
  24. package/actions/lifecycle/multi-object-lifecycle.d.ts.map +1 -0
  25. package/actions/lifecycle/multi-object-lifecycle.js +136 -0
  26. package/actions/lifecycle/multi-object-lifecycle.js.map +1 -0
  27. package/actions/lifecycle/registry.d.ts +39 -0
  28. package/actions/lifecycle/registry.d.ts.map +1 -0
  29. package/actions/lifecycle/registry.js +128 -0
  30. package/actions/lifecycle/registry.js.map +1 -0
  31. package/actions/standard/asking/asking.d.ts +25 -0
  32. package/actions/standard/asking/asking.d.ts.map +1 -0
  33. package/actions/standard/asking/asking.js +114 -0
  34. package/actions/standard/asking/asking.js.map +1 -0
  35. package/actions/standard/asking/index.d.ts +5 -0
  36. package/actions/standard/asking/index.d.ts.map +1 -0
  37. package/actions/standard/asking/index.js +10 -0
  38. package/actions/standard/asking/index.js.map +1 -0
  39. package/actions/standard/attacking/attacking.d.ts +14 -0
  40. package/actions/standard/attacking/attacking.d.ts.map +1 -1
  41. package/actions/standard/attacking/attacking.js +138 -94
  42. package/actions/standard/attacking/attacking.js.map +1 -1
  43. package/actions/standard/attacking/index.d.ts +1 -1
  44. package/actions/standard/attacking/index.d.ts.map +1 -1
  45. package/actions/standard/attacking/index.js +2 -1
  46. package/actions/standard/attacking/index.js.map +1 -1
  47. package/actions/standard/climbing/climbing.d.ts +10 -0
  48. package/actions/standard/climbing/climbing.d.ts.map +1 -1
  49. package/actions/standard/climbing/climbing.js +51 -11
  50. package/actions/standard/climbing/climbing.js.map +1 -1
  51. package/actions/standard/closing/closing.d.ts +6 -0
  52. package/actions/standard/closing/closing.d.ts.map +1 -1
  53. package/actions/standard/closing/closing.js +37 -31
  54. package/actions/standard/closing/closing.js.map +1 -1
  55. package/actions/standard/cutting/cutting-messages.d.ts +17 -0
  56. package/actions/standard/cutting/cutting-messages.d.ts.map +1 -0
  57. package/actions/standard/cutting/cutting-messages.js +22 -0
  58. package/actions/standard/cutting/cutting-messages.js.map +1 -0
  59. package/actions/standard/cutting/cutting.d.ts +35 -0
  60. package/actions/standard/cutting/cutting.d.ts.map +1 -0
  61. package/actions/standard/cutting/cutting.js +228 -0
  62. package/actions/standard/cutting/cutting.js.map +1 -0
  63. package/actions/standard/cutting/index.d.ts +7 -0
  64. package/actions/standard/cutting/index.d.ts.map +1 -0
  65. package/actions/standard/cutting/index.js +12 -0
  66. package/actions/standard/cutting/index.js.map +1 -0
  67. package/actions/standard/deadly-room-death/deadly-room-death.d.ts +16 -0
  68. package/actions/standard/deadly-room-death/deadly-room-death.d.ts.map +1 -0
  69. package/actions/standard/deadly-room-death/deadly-room-death.js +44 -0
  70. package/actions/standard/deadly-room-death/deadly-room-death.js.map +1 -0
  71. package/actions/standard/deadly-room-death/index.d.ts +2 -0
  72. package/actions/standard/deadly-room-death/index.d.ts.map +1 -0
  73. package/actions/standard/deadly-room-death/index.js +6 -0
  74. package/actions/standard/deadly-room-death/index.js.map +1 -0
  75. package/actions/standard/digging/digging-messages.d.ts +17 -0
  76. package/actions/standard/digging/digging-messages.d.ts.map +1 -0
  77. package/actions/standard/digging/digging-messages.js +22 -0
  78. package/actions/standard/digging/digging-messages.js.map +1 -0
  79. package/actions/standard/digging/digging.d.ts +35 -0
  80. package/actions/standard/digging/digging.d.ts.map +1 -0
  81. package/actions/standard/digging/digging.js +228 -0
  82. package/actions/standard/digging/digging.js.map +1 -0
  83. package/actions/standard/digging/index.d.ts +7 -0
  84. package/actions/standard/digging/index.d.ts.map +1 -0
  85. package/actions/standard/digging/index.js +12 -0
  86. package/actions/standard/digging/index.js.map +1 -0
  87. package/actions/standard/drinking/drinking.d.ts +9 -0
  88. package/actions/standard/drinking/drinking.d.ts.map +1 -1
  89. package/actions/standard/drinking/drinking.js +40 -2
  90. package/actions/standard/drinking/drinking.js.map +1 -1
  91. package/actions/standard/dropping/dropping-types.d.ts +10 -18
  92. package/actions/standard/dropping/dropping-types.d.ts.map +1 -1
  93. package/actions/standard/dropping/dropping-types.js.map +1 -1
  94. package/actions/standard/dropping/dropping.d.ts +6 -0
  95. package/actions/standard/dropping/dropping.d.ts.map +1 -1
  96. package/actions/standard/dropping/dropping.js +86 -108
  97. package/actions/standard/dropping/dropping.js.map +1 -1
  98. package/actions/standard/eating/eating.d.ts +9 -0
  99. package/actions/standard/eating/eating.d.ts.map +1 -1
  100. package/actions/standard/eating/eating.js +40 -2
  101. package/actions/standard/eating/eating.js.map +1 -1
  102. package/actions/standard/entering/entering.d.ts +14 -5
  103. package/actions/standard/entering/entering.d.ts.map +1 -1
  104. package/actions/standard/entering/entering.js +45 -67
  105. package/actions/standard/entering/entering.js.map +1 -1
  106. package/actions/standard/examining/examining.d.ts +6 -0
  107. package/actions/standard/examining/examining.d.ts.map +1 -1
  108. package/actions/standard/examining/examining.js +39 -3
  109. package/actions/standard/examining/examining.js.map +1 -1
  110. package/actions/standard/exiting/exiting.d.ts +6 -0
  111. package/actions/standard/exiting/exiting.d.ts.map +1 -1
  112. package/actions/standard/exiting/exiting.js +54 -3
  113. package/actions/standard/exiting/exiting.js.map +1 -1
  114. package/actions/standard/giving/giving.d.ts +21 -0
  115. package/actions/standard/giving/giving.d.ts.map +1 -1
  116. package/actions/standard/giving/giving.js +78 -2
  117. package/actions/standard/giving/giving.js.map +1 -1
  118. package/actions/standard/going/going.d.ts +10 -16
  119. package/actions/standard/going/going.d.ts.map +1 -1
  120. package/actions/standard/going/going.js +134 -140
  121. package/actions/standard/going/going.js.map +1 -1
  122. package/actions/standard/hiding/hiding.d.ts +10 -1
  123. package/actions/standard/hiding/hiding.d.ts.map +1 -1
  124. package/actions/standard/hiding/hiding.js +43 -4
  125. package/actions/standard/hiding/hiding.js.map +1 -1
  126. package/actions/standard/index.d.ts +5 -0
  127. package/actions/standard/index.d.ts.map +1 -1
  128. package/actions/standard/index.js +19 -4
  129. package/actions/standard/index.js.map +1 -1
  130. package/actions/standard/inserting/inserting.d.ts +12 -0
  131. package/actions/standard/inserting/inserting.d.ts.map +1 -1
  132. package/actions/standard/inserting/inserting.js +70 -5
  133. package/actions/standard/inserting/inserting.js.map +1 -1
  134. package/actions/standard/listening/listening.d.ts +12 -1
  135. package/actions/standard/listening/listening.d.ts.map +1 -1
  136. package/actions/standard/listening/listening.js +45 -4
  137. package/actions/standard/listening/listening.js.map +1 -1
  138. package/actions/standard/locking/locking.d.ts +9 -0
  139. package/actions/standard/locking/locking.d.ts.map +1 -1
  140. package/actions/standard/locking/locking.js +62 -3
  141. package/actions/standard/locking/locking.js.map +1 -1
  142. package/actions/standard/looking/index.d.ts +1 -0
  143. package/actions/standard/looking/index.d.ts.map +1 -1
  144. package/actions/standard/looking/index.js +5 -1
  145. package/actions/standard/looking/index.js.map +1 -1
  146. package/actions/standard/looking/snippet-gate-registry.d.ts +55 -0
  147. package/actions/standard/looking/snippet-gate-registry.d.ts.map +1 -0
  148. package/actions/standard/looking/snippet-gate-registry.js +63 -0
  149. package/actions/standard/looking/snippet-gate-registry.js.map +1 -0
  150. package/actions/standard/looking/snippet-resolver.d.ts +9 -3
  151. package/actions/standard/looking/snippet-resolver.d.ts.map +1 -1
  152. package/actions/standard/looking/snippet-resolver.js +75 -4
  153. package/actions/standard/looking/snippet-resolver.js.map +1 -1
  154. package/actions/standard/opening/opening-messages.d.ts +3 -0
  155. package/actions/standard/opening/opening-messages.d.ts.map +1 -1
  156. package/actions/standard/opening/opening-messages.js +4 -0
  157. package/actions/standard/opening/opening-messages.js.map +1 -1
  158. package/actions/standard/opening/opening.d.ts +8 -0
  159. package/actions/standard/opening/opening.d.ts.map +1 -1
  160. package/actions/standard/opening/opening.js +73 -39
  161. package/actions/standard/opening/opening.js.map +1 -1
  162. package/actions/standard/pulling/pulling.d.ts +9 -0
  163. package/actions/standard/pulling/pulling.d.ts.map +1 -1
  164. package/actions/standard/pulling/pulling.js +40 -2
  165. package/actions/standard/pulling/pulling.js.map +1 -1
  166. package/actions/standard/pushing/pushing-types.d.ts +3 -6
  167. package/actions/standard/pushing/pushing-types.d.ts.map +1 -1
  168. package/actions/standard/pushing/pushing-types.js +3 -1
  169. package/actions/standard/pushing/pushing-types.js.map +1 -1
  170. package/actions/standard/pushing/pushing.d.ts +14 -5
  171. package/actions/standard/pushing/pushing.d.ts.map +1 -1
  172. package/actions/standard/pushing/pushing.js +51 -71
  173. package/actions/standard/pushing/pushing.js.map +1 -1
  174. package/actions/standard/putting/putting-types.d.ts +10 -21
  175. package/actions/standard/putting/putting-types.d.ts.map +1 -1
  176. package/actions/standard/putting/putting-types.js +0 -1
  177. package/actions/standard/putting/putting-types.js.map +1 -1
  178. package/actions/standard/putting/putting.d.ts +10 -0
  179. package/actions/standard/putting/putting.d.ts.map +1 -1
  180. package/actions/standard/putting/putting.js +133 -151
  181. package/actions/standard/putting/putting.js.map +1 -1
  182. package/actions/standard/reading/reading.d.ts +6 -0
  183. package/actions/standard/reading/reading.d.ts.map +1 -1
  184. package/actions/standard/reading/reading.js +39 -3
  185. package/actions/standard/reading/reading.js.map +1 -1
  186. package/actions/standard/removing/removing-types.d.ts +10 -16
  187. package/actions/standard/removing/removing-types.d.ts.map +1 -1
  188. package/actions/standard/removing/removing-types.js.map +1 -1
  189. package/actions/standard/removing/removing.d.ts +13 -0
  190. package/actions/standard/removing/removing.d.ts.map +1 -1
  191. package/actions/standard/removing/removing.js +147 -88
  192. package/actions/standard/removing/removing.js.map +1 -1
  193. package/actions/standard/searching/searching.d.ts +10 -0
  194. package/actions/standard/searching/searching.d.ts.map +1 -1
  195. package/actions/standard/searching/searching.js +44 -8
  196. package/actions/standard/searching/searching.js.map +1 -1
  197. package/actions/standard/showing/showing.d.ts +14 -0
  198. package/actions/standard/showing/showing.d.ts.map +1 -1
  199. package/actions/standard/showing/showing.js +62 -2
  200. package/actions/standard/showing/showing.js.map +1 -1
  201. package/actions/standard/smelling/smelling.d.ts +10 -0
  202. package/actions/standard/smelling/smelling.d.ts.map +1 -1
  203. package/actions/standard/smelling/smelling.js +41 -2
  204. package/actions/standard/smelling/smelling.js.map +1 -1
  205. package/actions/standard/switching_off/switching_off.d.ts +11 -1
  206. package/actions/standard/switching_off/switching_off.d.ts.map +1 -1
  207. package/actions/standard/switching_off/switching_off.js +44 -4
  208. package/actions/standard/switching_off/switching_off.js.map +1 -1
  209. package/actions/standard/switching_on/switching_on.d.ts +14 -5
  210. package/actions/standard/switching_on/switching_on.d.ts.map +1 -1
  211. package/actions/standard/switching_on/switching_on.js +45 -57
  212. package/actions/standard/switching_on/switching_on.js.map +1 -1
  213. package/actions/standard/taking/taking-types.d.ts +14 -32
  214. package/actions/standard/taking/taking-types.d.ts.map +1 -1
  215. package/actions/standard/taking/taking-types.js.map +1 -1
  216. package/actions/standard/taking/taking.d.ts +11 -0
  217. package/actions/standard/taking/taking.d.ts.map +1 -1
  218. package/actions/standard/taking/taking.js +107 -111
  219. package/actions/standard/taking/taking.js.map +1 -1
  220. package/actions/standard/taking_off/taking-off.d.ts +6 -0
  221. package/actions/standard/taking_off/taking-off.d.ts.map +1 -1
  222. package/actions/standard/taking_off/taking-off.js +57 -21
  223. package/actions/standard/taking_off/taking-off.js.map +1 -1
  224. package/actions/standard/talking/talking.d.ts +15 -0
  225. package/actions/standard/talking/talking.d.ts.map +1 -1
  226. package/actions/standard/talking/talking.js +52 -3
  227. package/actions/standard/talking/talking.js.map +1 -1
  228. package/actions/standard/telling/index.d.ts +5 -0
  229. package/actions/standard/telling/index.d.ts.map +1 -0
  230. package/actions/standard/telling/index.js +10 -0
  231. package/actions/standard/telling/index.js.map +1 -0
  232. package/actions/standard/telling/telling.d.ts +25 -0
  233. package/actions/standard/telling/telling.d.ts.map +1 -0
  234. package/actions/standard/telling/telling.js +114 -0
  235. package/actions/standard/telling/telling.js.map +1 -0
  236. package/actions/standard/throwing/throwing.d.ts +11 -0
  237. package/actions/standard/throwing/throwing.d.ts.map +1 -1
  238. package/actions/standard/throwing/throwing.js +69 -70
  239. package/actions/standard/throwing/throwing.js.map +1 -1
  240. package/actions/standard/tool-shared.d.ts +38 -0
  241. package/actions/standard/tool-shared.d.ts.map +1 -0
  242. package/actions/standard/tool-shared.js +74 -0
  243. package/actions/standard/tool-shared.js.map +1 -0
  244. package/actions/standard/touching/touching.d.ts +9 -0
  245. package/actions/standard/touching/touching.d.ts.map +1 -1
  246. package/actions/standard/touching/touching.js +40 -4
  247. package/actions/standard/touching/touching.js.map +1 -1
  248. package/actions/standard/turning/index.d.ts +5 -0
  249. package/actions/standard/turning/index.d.ts.map +1 -0
  250. package/actions/standard/turning/index.js +9 -0
  251. package/actions/standard/turning/index.js.map +1 -0
  252. package/actions/standard/turning/turning.d.ts +17 -0
  253. package/actions/standard/turning/turning.d.ts.map +1 -0
  254. package/actions/standard/turning/turning.js +25 -0
  255. package/actions/standard/turning/turning.js.map +1 -0
  256. package/actions/standard/unlocking/unlocking.d.ts +9 -0
  257. package/actions/standard/unlocking/unlocking.d.ts.map +1 -1
  258. package/actions/standard/unlocking/unlocking.js +62 -3
  259. package/actions/standard/unlocking/unlocking.js.map +1 -1
  260. package/actions/standard/wearing/wearing.d.ts +11 -1
  261. package/actions/standard/wearing/wearing.d.ts.map +1 -1
  262. package/actions/standard/wearing/wearing.js +57 -12
  263. package/actions/standard/wearing/wearing.js.map +1 -1
  264. package/channels/standard.d.ts +13 -10
  265. package/channels/standard.d.ts.map +1 -1
  266. package/channels/standard.js +14 -10
  267. package/channels/standard.js.map +1 -1
  268. package/death/deadly-room-transformer.d.ts +37 -0
  269. package/death/deadly-room-transformer.d.ts.map +1 -0
  270. package/death/deadly-room-transformer.js +79 -0
  271. package/death/deadly-room-transformer.js.map +1 -0
  272. package/death/index.d.ts +18 -0
  273. package/death/index.d.ts.map +1 -0
  274. package/death/index.js +28 -0
  275. package/death/index.js.map +1 -0
  276. package/death/kill-player.d.ts +49 -0
  277. package/death/kill-player.d.ts.map +1 -0
  278. package/death/kill-player.js +55 -0
  279. package/death/kill-player.js.map +1 -0
  280. package/death/player-death-events.d.ts +40 -0
  281. package/death/player-death-events.d.ts.map +1 -0
  282. package/death/player-death-events.js +27 -0
  283. package/death/player-death-events.js.map +1 -0
  284. package/death/probabilistic-death.d.ts +23 -0
  285. package/death/probabilistic-death.d.ts.map +1 -0
  286. package/death/probabilistic-death.js +27 -0
  287. package/death/probabilistic-death.js.map +1 -0
  288. package/index.d.ts +1 -0
  289. package/index.d.ts.map +1 -1
  290. package/index.js +1 -0
  291. package/index.js.map +1 -1
  292. package/npc/behaviors.d.ts.map +1 -1
  293. package/npc/behaviors.js +9 -8
  294. package/npc/behaviors.js.map +1 -1
  295. package/npc/npc-service.d.ts +8 -0
  296. package/npc/npc-service.d.ts.map +1 -1
  297. package/npc/npc-service.js +19 -18
  298. package/npc/npc-service.js.map +1 -1
  299. package/package.json +7 -7
@@ -5,18 +5,36 @@
5
5
  * This action handles entering objects that have the ENTRY trait or
6
6
  * are containers/supporters marked as enterable.
7
7
  *
8
- * Uses four-phase pattern with interceptor support (ADR-118):
9
- * 1. validate: preValidate hook standard checks postValidate hook
10
- * 2. execute: standard mutation postExecute hook
11
- * 3. blocked: onBlocked hook (if validation failed)
12
- * 4. report: standard events → postReport hook (additional effects)
8
+ * Uses four-phase pattern:
9
+ * 1. validate: Check target exists and can be entered
10
+ * 2. execute: Move the actor into the target
11
+ * 3. blocked: Generate error events when validation fails
12
+ * 4. report: Generate success events
13
+ *
14
+ * Interceptor consultation (ADR-118) runs through the shared lifecycle
15
+ * engine (ADR-228) via `enteringLifecycle` — no hand-rolled hook plumbing.
13
16
  */
14
17
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.enteringAction = void 0;
18
+ exports.enteringAction = exports.enteringLifecycle = void 0;
16
19
  const world_model_1 = require("@sharpee/world-model");
17
20
  const constants_1 = require("../../constants");
18
21
  const entering_messages_1 = require("./entering-messages");
19
22
  const utils_1 = require("../../../utils");
23
+ const lifecycle_1 = require("../../lifecycle");
24
+ /**
25
+ * Interceptor surface (ADR-228): the entered target is the only
26
+ * consultable entity of an ENTER command.
27
+ */
28
+ exports.enteringLifecycle = {
29
+ actionId: constants_1.IFActions.ENTERING,
30
+ slots: [
31
+ {
32
+ id: 'target',
33
+ actionIds: [constants_1.IFActions.ENTERING],
34
+ resolve: (ctx) => ctx.command.directObject?.entity
35
+ }
36
+ ]
37
+ };
20
38
  function getEnteringSharedData(context) {
21
39
  return context.sharedData;
22
40
  }
@@ -41,7 +59,6 @@ exports.enteringAction = {
41
59
  validate(context) {
42
60
  const actor = context.player;
43
61
  const target = context.command.directObject?.entity;
44
- const sharedData = getEnteringSharedData(context);
45
62
  // Validate target
46
63
  if (!target) {
47
64
  return {
@@ -49,25 +66,10 @@ exports.enteringAction = {
49
66
  error: entering_messages_1.EnteringMessages.NO_TARGET
50
67
  };
51
68
  }
52
- // Check for interceptor on the target entity (ADR-118)
53
- const interceptorResult = context.world.getInterceptorForAction(target, constants_1.IFActions.ENTERING);
54
- const interceptor = interceptorResult?.interceptor;
55
- const interceptorData = {};
56
- // Store for later phases
57
- sharedData.interceptor = interceptor;
58
- sharedData.interceptorData = interceptorData;
59
- // === PRE-VALIDATE HOOK ===
60
- // Called before standard validation - can block early
61
- if (interceptor?.preValidate) {
62
- const result = interceptor.preValidate(target, context.world, actor.id, interceptorData);
63
- if (result !== null) {
64
- return {
65
- valid: result.valid,
66
- error: result.error,
67
- params: result.params
68
- };
69
- }
70
- }
69
+ const state = (0, lifecycle_1.resolveLifecycle)(context, exports.enteringLifecycle);
70
+ const preVeto = (0, lifecycle_1.runPreValidate)(context, state);
71
+ if (preVeto)
72
+ return preVeto;
71
73
  // Check scope - must be able to reach the target
72
74
  const scopeCheck = context.requireScope(target, types_1.ScopeLevel.REACHABLE);
73
75
  if (!scopeCheck.ok) {
@@ -98,18 +100,10 @@ exports.enteringAction = {
98
100
  params: { container: (0, utils_1.nounPhraseFor)(target) }
99
101
  };
100
102
  }
101
- // === POST-VALIDATE HOOK ===
102
- // Called after standard validation passes - can add entity-specific conditions
103
- if (interceptor?.postValidate) {
104
- const result = interceptor.postValidate(target, context.world, actor.id, interceptorData);
105
- if (result !== null) {
106
- return {
107
- valid: result.valid,
108
- error: result.error,
109
- params: result.params
110
- };
111
- }
112
- }
103
+ // Canonical placement (ADR-228): postValidate runs after ALL standard validation
104
+ const postVeto = (0, lifecycle_1.runPostValidate)(context, state);
105
+ if (postVeto)
106
+ return postVeto;
113
107
  return { valid: true };
114
108
  },
115
109
  /**
@@ -134,13 +128,9 @@ exports.enteringAction = {
134
128
  preposition
135
129
  };
136
130
  sharedData.enteringState = state;
137
- // === POST-EXECUTE HOOK ===
138
- // Called after standard execution - can perform additional mutations
139
- const interceptor = sharedData.interceptor;
140
- const interceptorData = sharedData.interceptorData || {};
141
- if (interceptor?.postExecute) {
142
- interceptor.postExecute(target, context.world, actor.id, interceptorData);
143
- }
131
+ const lifecycleState = (0, lifecycle_1.getLifecycleState)(context);
132
+ if (lifecycleState)
133
+ (0, lifecycle_1.runPostExecute)(context, lifecycleState);
144
134
  },
145
135
  /**
146
136
  * Report events after successful entering
@@ -172,15 +162,9 @@ exports.enteringAction = {
172
162
  fromLocation: state.fromLocation,
173
163
  preposition: state.preposition
174
164
  })];
175
- // === POST-REPORT HOOK ===
176
- // Apply interceptor's override (replaces if.event.entered.messageId)
177
- // and/or emit (additional events). See ISSUE-074.
178
- const interceptor = sharedData.interceptor;
179
- const interceptorData = sharedData.interceptorData || {};
180
- if (interceptor?.postReport && target) {
181
- const result = interceptor.postReport(target, context.world, context.player.id, interceptorData);
182
- (0, world_model_1.applyInterceptorReportResult)(events, 'if.event.entered', result, context);
183
- }
165
+ const lifecycleState = (0, lifecycle_1.getLifecycleState)(context);
166
+ if (lifecycleState)
167
+ (0, lifecycle_1.runPostReport)(context, lifecycleState, events, 'if.event.entered');
184
168
  return events;
185
169
  },
186
170
  /**
@@ -189,20 +173,8 @@ exports.enteringAction = {
189
173
  */
190
174
  blocked(context, result) {
191
175
  const target = context.command.directObject?.entity;
192
- const sharedData = getEnteringSharedData(context);
193
- // === ON-BLOCKED HOOK ===
194
- // Called when action is blocked - can provide custom blocked handling
195
- const interceptor = sharedData.interceptor;
196
- const interceptorData = sharedData.interceptorData || {};
197
- if (interceptor?.onBlocked && target && result.error) {
198
- const customEffects = interceptor.onBlocked(target, context.world, context.player.id, result.error, interceptorData);
199
- if (customEffects !== null) {
200
- // Interceptor provided custom blocked effects
201
- return customEffects.map(effect => context.event(effect.type, effect.payload));
202
- }
203
- }
204
176
  // Standard blocked handling — params carry EntityInfo (ADR-158)
205
- return [context.event('if.event.entered', {
177
+ const events = [context.event('if.event.entered', {
206
178
  blocked: true,
207
179
  messageId: `${context.action.id}.${result.error}`,
208
180
  params: { place: target ? (0, utils_1.nounPhraseFor)(target) : undefined, ...result.params },
@@ -210,6 +182,12 @@ exports.enteringAction = {
210
182
  targetId: target?.id,
211
183
  targetName: target?.name
212
184
  })];
185
+ if (result.error) {
186
+ const lifecycleState = (0, lifecycle_1.getLifecycleState)(context);
187
+ if (lifecycleState)
188
+ (0, lifecycle_1.runOnBlocked)(context, lifecycleState, events, 'if.event.entered', result.error);
189
+ }
190
+ return events;
213
191
  },
214
192
  metadata: {
215
193
  requiresDirectObject: true,
@@ -1 +1 @@
1
- {"version":3,"file":"entering.js","sourceRoot":"","sources":["../../../../../../../../../repos/sharpee_v2/packages/stdlib/src/actions/standard/entering/entering.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entering.js","sourceRoot":"","sources":["../../../../../../../../../repos/sharpee_v2/packages/stdlib/src/actions/standard/entering/entering.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,12 @@
12
12
  */
13
13
  import { Action } from '../../enhanced-types';
14
14
  import { ActionMetadata } from '../../../validation';
15
+ import { ActionLifecycleDescriptor } from '../../lifecycle';
16
+ /**
17
+ * Interceptor surface (ADR-228): the examined target is the only
18
+ * consultable entity of an EXAMINE command.
19
+ */
20
+ export declare const examiningLifecycle: ActionLifecycleDescriptor;
15
21
  export declare const examiningAction: Action & {
16
22
  metadata: ActionMetadata;
17
23
  };
@@ -1 +1 @@
1
- {"version":3,"file":"examining.d.ts","sourceRoot":"","sources":["../../../../../../../../../repos/sharpee_v2/packages/stdlib/src/actions/standard/examining/examining.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,MAAM,EAAmC,MAAM,sBAAsB,CAAC;AAG/E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAYrD,eAAO,MAAM,eAAe,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,cAAc,CAAA;CAwHhE,CAAC"}
1
+ {"version":3,"file":"examining.d.ts","sourceRoot":"","sources":["../../../../../../../../../repos/sharpee_v2/packages/stdlib/src/actions/standard/examining/examining.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,MAAM,EAAmC,MAAM,sBAAsB,CAAC;AAG/E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAMrD,OAAO,EACL,yBAAyB,EAQ1B,MAAM,iBAAiB,CAAC;AAEzB;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,yBAShC,CAAC;AAOF,eAAO,MAAM,eAAe,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,cAAc,CAAA;CA6IhE,CAAC"}
@@ -12,12 +12,27 @@
12
12
  * 4. blocked: Generate error events when validation fails
13
13
  */
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.examiningAction = void 0;
15
+ exports.examiningAction = exports.examiningLifecycle = void 0;
16
16
  const constants_1 = require("../../constants");
17
17
  const types_1 = require("../../../scope/types");
18
18
  const emit_illustrations_1 = require("../../helpers/emit-illustrations");
19
19
  const data_builder_types_1 = require("../../data-builder-types");
20
20
  const world_model_1 = require("@sharpee/world-model");
21
+ const lifecycle_1 = require("../../lifecycle");
22
+ /**
23
+ * Interceptor surface (ADR-228): the examined target is the only
24
+ * consultable entity of an EXAMINE command.
25
+ */
26
+ exports.examiningLifecycle = {
27
+ actionId: constants_1.IFActions.EXAMINING,
28
+ slots: [
29
+ {
30
+ id: 'target',
31
+ actionIds: [constants_1.IFActions.EXAMINING],
32
+ resolve: (ctx) => ctx.command.directObject?.entity
33
+ }
34
+ ]
35
+ };
21
36
  // Import our data builder
22
37
  const examining_data_1 = require("./examining-data");
23
38
  const examining_messages_1 = require("./examining-messages");
@@ -54,6 +69,10 @@ exports.examiningAction = {
54
69
  error: examining_messages_1.ExaminingMessages.NO_TARGET
55
70
  };
56
71
  }
72
+ const state = (0, lifecycle_1.resolveLifecycle)(context, exports.examiningLifecycle);
73
+ const preVeto = (0, lifecycle_1.runPreValidate)(context, state);
74
+ if (preVeto)
75
+ return preVeto;
57
76
  // Check scope - must be able to see the target (unless examining yourself)
58
77
  if (noun.id !== actor.id) {
59
78
  const scopeCheck = context.requireScope(noun, types_1.ScopeLevel.VISIBLE);
@@ -61,11 +80,19 @@ exports.examiningAction = {
61
80
  return scopeCheck.error;
62
81
  }
63
82
  }
83
+ // Canonical placement (ADR-228): postValidate runs after ALL standard validation
84
+ const postVeto = (0, lifecycle_1.runPostValidate)(context, state);
85
+ if (postVeto)
86
+ return postVeto;
64
87
  // Valid - all event data will be built in report()
65
88
  return { valid: true };
66
89
  },
67
90
  execute(context) {
68
- // No mutations - examining is a read-only action
91
+ // No standard mutations - examining is a read-only action.
92
+ // Interceptor postExecute hooks may still mutate (ADR-228).
93
+ const state = (0, lifecycle_1.getLifecycleState)(context);
94
+ if (state)
95
+ (0, lifecycle_1.runPostExecute)(context, state);
69
96
  },
70
97
  report(context) {
71
98
  // report() is only called on success - validation passed
@@ -101,12 +128,15 @@ exports.examiningAction = {
101
128
  isContentsMessage: true
102
129
  }));
103
130
  }
131
+ const state = (0, lifecycle_1.getLifecycleState)(context);
132
+ if (state)
133
+ (0, lifecycle_1.runPostReport)(context, state, events, 'if.event.examined');
104
134
  return events;
105
135
  },
106
136
  blocked(context, result) {
107
137
  // blocked() is called when validation fails
108
138
  const noun = context.command.directObject?.entity;
109
- return [context.event('if.event.examined', {
139
+ const events = [context.event('if.event.examined', {
110
140
  blocked: true,
111
141
  messageId: `${context.action.id}.${result.error}`,
112
142
  // params carry EntityInfo for the formatter chain (ADR-158);
@@ -116,6 +146,12 @@ exports.examiningAction = {
116
146
  targetId: noun?.id,
117
147
  targetName: noun?.name
118
148
  })];
149
+ if (result.error) {
150
+ const state = (0, lifecycle_1.getLifecycleState)(context);
151
+ if (state)
152
+ (0, lifecycle_1.runOnBlocked)(context, state, events, 'if.event.examined', result.error);
153
+ }
154
+ return events;
119
155
  },
120
156
  group: "observation",
121
157
  metadata: {
@@ -1 +1 @@
1
- {"version":3,"file":"examining.js","sourceRoot":"","sources":["../../../../../../../../../repos/sharpee_v2/packages/stdlib/src/actions/standard/examining/examining.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"examining.js","sourceRoot":"","sources":["../../../../../../../../../repos/sharpee_v2/packages/stdlib/src/actions/standard/examining/examining.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;AAIH,+CAA4C;AAE5C,gDAAkD;AAElD,yEAAqE;AACrE,iEAA0D;AAC1D,sDAAuD;AACvD,+CASyB;AAEzB;;;GAGG;AACU,QAAA,kBAAkB,GAA8B;IAC3D,QAAQ,EAAE,qBAAS,CAAC,SAAS;IAC7B,KAAK,EAAE;QACL;YACE,EAAE,EAAE,QAAQ;YACZ,SAAS,EAAE,CAAC,qBAAS,CAAC,SAAS,CAAC;YAChC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM;SACnD;KACF;CACF,CAAC;AAEF,0BAA0B;AAC1B,qDAAoF;AACpF,6DAAyD;AACzD,0CAA+C;AAElC,QAAA,eAAe,GAA0C;IACpE,EAAE,EAAE,qBAAS,CAAC,SAAS;IAEvB,qDAAqD;IACrD,YAAY,EAAE;QACZ,MAAM,EAAE,kBAAU,CAAC,OAAO;KAC3B;IAED,gBAAgB,EAAE;QAChB,WAAW;QACX,aAAa;QACb,UAAU;QACV,eAAe;QACf,oBAAoB;QACpB,oBAAoB;QACpB,mBAAmB;QACnB,qBAAqB;QACrB,mBAAmB;QACnB,eAAe;QACf,eAAe;QACf,iBAAiB;QACjB,aAAa;QACb,mBAAmB;KACpB;IAED,QAAQ,CAAC,OAAsB;QAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC;QAElD,4BAA4B;QAC5B,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,sCAAiB,CAAC,SAAS;aACnC,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAG,IAAA,4BAAgB,EAAC,OAAO,EAAE,0BAAkB,CAAC,CAAC;QAC5D,MAAM,OAAO,GAAG,IAAA,0BAAc,EAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC/C,IAAI,OAAO;YAAE,OAAO,OAAO,CAAC;QAE5B,2EAA2E;QAC3E,IAAI,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,EAAE,CAAC;YACzB,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,kBAAU,CAAC,OAAO,CAAC,CAAC;YAClE,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;gBACnB,OAAO,UAAU,CAAC,KAAM,CAAC;YAC3B,CAAC;QACH,CAAC;QAED,iFAAiF;QACjF,MAAM,QAAQ,GAAG,IAAA,2BAAe,EAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACjD,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAE9B,mDAAmD;QACnD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACzB,CAAC;IAED,OAAO,CAAC,OAAsB;QAC5B,2DAA2D;QAC3D,4DAA4D;QAC5D,MAAM,KAAK,GAAG,IAAA,6BAAiB,EAAC,OAAO,CAAC,CAAC;QACzC,IAAI,KAAK;YAAE,IAAA,0BAAc,EAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,CAAC,OAAsB;QAC3B,yDAAyD;QACzD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,YAAa,CAAC,MAAO,CAAC;QAEnD,wCAAwC;QACxC,MAAM,SAAS,GAAG,IAAA,mCAAc,EAAC,oCAAmB,EAAE,OAAO,CAAC,CAAC;QAE/D,uCAAuC;QACvC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,IAAA,4CAA2B,EAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAE5F,8EAA8E;QAC9E,2EAA2E;QAC3E,+EAA+E;QAC/E,8EAA8E;QAC9E,MAAM,aAAa,GAAG,IAAA,6BAAe,EAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAkC,CAAC,SAAS,GAAG;gBAC9C,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;aACjE,CAAC;QACJ,CAAC;QAED,2EAA2E;QAC3E,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE;YACvD,SAAS,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,SAAS,EAAE;YAC9C,MAAM;YACN,GAAG,SAAS;SACb,CAAC,CAAC;QACH,MAAM,MAAM,GAAqB,CAAC,aAAa,CAAC,CAAC;QAEjD,6DAA6D;QAC7D,MAAM,CAAC,IAAI,CAAC,GAAG,IAAA,sCAAiB,EAAC,IAAI,EAAE,YAAY,EAAE,aAAa,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;QAEjF,oEAAoE;QACpE,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE;gBAC7C,SAAS,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,eAAe,CAAC,SAAS,EAAE;gBAC9D,MAAM,EAAE,eAAe,CAAC,MAAM;gBAC9B,iBAAiB,EAAE,IAAI;aACxB,CAAC,CAAC,CAAC;QACN,CAAC;QAED,MAAM,KAAK,GAAG,IAAA,6BAAiB,EAAC,OAAO,CAAC,CAAC;QACzC,IAAI,KAAK;YAAE,IAAA,yBAAa,EAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAC;QAEtE,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,CAAC,OAAsB,EAAE,MAAwB;QACtD,4CAA4C;QAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC;QAElD,MAAM,MAAM,GAAqB,CAAC,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE;gBACnE,OAAO,EAAE,IAAI;gBACb,SAAS,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,KAAK,EAAE;gBACjD,6DAA6D;gBAC7D,8CAA8C;gBAC9C,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,IAAA,qBAAa,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE;gBAC5E,MAAM,EAAE,MAAM,CAAC,KAAK;gBACpB,QAAQ,EAAE,IAAI,EAAE,EAAE;gBAClB,UAAU,EAAE,IAAI,EAAE,IAAI;aACvB,CAAC,CAAC,CAAC;QAEJ,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,IAAA,6BAAiB,EAAC,OAAO,CAAC,CAAC;YACzC,IAAI,KAAK;gBAAE,IAAA,wBAAY,EAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QACrF,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,EAAE,aAAa;IAEpB,QAAQ,EAAE;QACR,oBAAoB,EAAE,IAAI;QAC1B,sBAAsB,EAAE,KAAK;QAC7B,iBAAiB,EAAE,kBAAU,CAAC,OAAO;KACtC;CACF,CAAC"}
@@ -4,6 +4,12 @@
4
4
  * This action handles exiting objects that the actor is currently inside/on.
5
5
  */
6
6
  import { Action } from '../../enhanced-types';
7
+ import { ActionLifecycleDescriptor } from '../../lifecycle';
8
+ /**
9
+ * Interceptor surface (ADR-228): the container/supporter being exited —
10
+ * `on exiting it` on a boat, cage, or bed fires here.
11
+ */
12
+ export declare const exitingLifecycle: ActionLifecycleDescriptor;
7
13
  import { ActionMetadata } from '../../../validation';
8
14
  export declare const exitingAction: Action & {
9
15
  metadata: ActionMetadata;
@@ -1 +1 @@
1
- {"version":3,"file":"exiting.d.ts","sourceRoot":"","sources":["../../../../../../../../../repos/sharpee_v2/packages/stdlib/src/actions/standard/exiting/exiting.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAA0D,MAAM,sBAAsB,CAAC;AA6BtG,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrD,eAAO,MAAM,aAAa,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,cAAc,CAAA;CAmJ9D,CAAC"}
1
+ {"version":3,"file":"exiting.d.ts","sourceRoot":"","sources":["../../../../../../../../../repos/sharpee_v2/packages/stdlib/src/actions/standard/exiting/exiting.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAA0D,MAAM,sBAAsB,CAAC;AAWtG,OAAO,EACL,yBAAyB,EAQ1B,MAAM,iBAAiB,CAAC;AAgBzB;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,yBAS9B,CAAC;AAoBF,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrD,eAAO,MAAM,aAAa,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,cAAc,CAAA;CA0K9D,CAAC"}
@@ -5,11 +5,41 @@
5
5
  * This action handles exiting objects that the actor is currently inside/on.
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.exitingAction = void 0;
8
+ exports.exitingAction = exports.exitingLifecycle = void 0;
9
9
  const world_model_1 = require("@sharpee/world-model");
10
10
  const constants_1 = require("../../constants");
11
11
  const exiting_messages_1 = require("./exiting-messages");
12
12
  const utils_1 = require("../../../utils");
13
+ const lifecycle_1 = require("../../lifecycle");
14
+ /**
15
+ * The enterable the actor is currently inside/on — exiting's affected
16
+ * entity is never a parsed object (EXIT takes no noun), so it resolves
17
+ * implicitly from the actor's location (ADR-228 D3 implicit-entity slot).
18
+ * Resolves undefined when the actor is directly in a room.
19
+ */
20
+ function resolveCurrentContainer(context) {
21
+ const currentLocation = context.world.getLocation(context.player.id);
22
+ if (!currentLocation)
23
+ return undefined;
24
+ const container = context.world.getEntity(currentLocation);
25
+ if (!container || container.has(world_model_1.TraitType.ROOM))
26
+ return undefined;
27
+ return container;
28
+ }
29
+ /**
30
+ * Interceptor surface (ADR-228): the container/supporter being exited —
31
+ * `on exiting it` on a boat, cage, or bed fires here.
32
+ */
33
+ exports.exitingLifecycle = {
34
+ actionId: constants_1.IFActions.EXITING,
35
+ slots: [
36
+ {
37
+ id: 'container',
38
+ actionIds: [constants_1.IFActions.EXITING],
39
+ resolve: resolveCurrentContainer
40
+ }
41
+ ]
42
+ };
13
43
  function getExitingSharedData(context) {
14
44
  return context.sharedData;
15
45
  }
@@ -28,6 +58,10 @@ exports.exitingAction = {
28
58
  validate(context) {
29
59
  const actor = context.player;
30
60
  const currentLocation = context.world.getLocation(actor.id);
61
+ const state = (0, lifecycle_1.resolveLifecycle)(context, exports.exitingLifecycle);
62
+ const preVeto = (0, lifecycle_1.runPreValidate)(context, state);
63
+ if (preVeto)
64
+ return preVeto;
31
65
  if (!currentLocation) {
32
66
  return {
33
67
  valid: false,
@@ -68,6 +102,10 @@ exports.exitingAction = {
68
102
  };
69
103
  }
70
104
  }
105
+ // Canonical placement (ADR-228): postValidate runs after ALL standard validation
106
+ const postVeto = (0, lifecycle_1.runPostValidate)(context, state);
107
+ if (postVeto)
108
+ return postVeto;
71
109
  return { valid: true };
72
110
  },
73
111
  /**
@@ -98,6 +136,9 @@ exports.exitingAction = {
98
136
  };
99
137
  const sharedData = getExitingSharedData(context);
100
138
  sharedData.exitingState = state;
139
+ const lifecycleState = (0, lifecycle_1.getLifecycleState)(context);
140
+ if (lifecycleState)
141
+ (0, lifecycle_1.runPostExecute)(context, lifecycleState);
101
142
  },
102
143
  /**
103
144
  * Report phase - generates events after successful execution
@@ -120,7 +161,7 @@ exports.exitingAction = {
120
161
  // params carry EntityInfo for the formatter chain (ADR-158);
121
162
  // re-derive from the entity since it's available via context.world.
122
163
  const fromEntity = context.world.getEntity(state.fromLocation);
123
- return [context.event('if.event.exited', {
164
+ const events = [context.event('if.event.exited', {
124
165
  messageId: `${context.action.id}.exited`,
125
166
  params: { place: fromEntity ? (0, utils_1.nounPhraseFor)(fromEntity) : { name: state.fromLocationName } },
126
167
  fromLocation: state.fromLocation,
@@ -128,18 +169,28 @@ exports.exitingAction = {
128
169
  toLocation: state.toLocation,
129
170
  preposition: state.preposition
130
171
  })];
172
+ const lifecycleState = (0, lifecycle_1.getLifecycleState)(context);
173
+ if (lifecycleState)
174
+ (0, lifecycle_1.runPostReport)(context, lifecycleState, events, 'if.event.exited');
175
+ return events;
131
176
  },
132
177
  /**
133
178
  * Generate events when validation fails
134
179
  * Called instead of execute/report when validate returns invalid
135
180
  */
136
181
  blocked(context, result) {
137
- return [context.event('if.event.exited', {
182
+ const events = [context.event('if.event.exited', {
138
183
  blocked: true,
139
184
  messageId: `${context.action.id}.${result.error}`,
140
185
  params: result.params || {},
141
186
  reason: result.error
142
187
  })];
188
+ if (result.error) {
189
+ const state = (0, lifecycle_1.getLifecycleState)(context);
190
+ if (state)
191
+ (0, lifecycle_1.runOnBlocked)(context, state, events, 'if.event.exited', result.error);
192
+ }
193
+ return events;
143
194
  },
144
195
  metadata: {
145
196
  requiresDirectObject: false,
@@ -1 +1 @@
1
- {"version":3,"file":"exiting.js","sourceRoot":"","sources":["../../../../../../../../../repos/sharpee_v2/packages/stdlib/src/actions/standard/exiting/exiting.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exiting.js","sourceRoot":"","sources":["../../../../../../../../../repos/sharpee_v2/packages/stdlib/src/actions/standard/exiting/exiting.ts"],"names":[],"mappings":"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"}
@@ -9,9 +9,30 @@
9
9
  * 2. execute: Transfer item, store result in sharedData
10
10
  * 3. blocked: Generate events when validation fails
11
11
  * 4. report: Generate success events from sharedData
12
+ *
13
+ * Interceptor consultation (ADR-118) runs through the shared lifecycle
14
+ * engine (ADR-228) via `givingLifecycle` — no hand-rolled hook plumbing.
12
15
  */
13
16
  import { Action } from '../../enhanced-types';
14
17
  import { ActionMetadata } from '../../../validation';
18
+ import { ActionLifecycleDescriptor } from '../../lifecycle';
19
+ /**
20
+ * Interceptor surface (ADR-228): BOTH the given item and the recipient
21
+ * are consulted (D3-B published order: direct object first), each side's
22
+ * sharedData seeded with the other entity's identity (D3 sub-ruling —
23
+ * symmetric context, same shape as putting's descriptor).
24
+ *
25
+ * Item-side limitation (ADR-118 hook audit): before this wiring the item
26
+ * side was fully dead — no validate-phase block was possible; giving's
27
+ * only story seam was the recipient's execute-phase-only ADR-090
28
+ * capability behavior (see execute() below). The item slot is declared
29
+ * anyway per the Phase-5 ruling — documenting the limitation beats
30
+ * silently omitting the slot. Note also: when an ADR-090 capability
31
+ * behavior handles the give, report() is delegated to it and no
32
+ * `if.event.given` primary event exists for a postReport override to
33
+ * target (the engine's defensive warn fires instead; `emit` still works).
34
+ */
35
+ export declare const givingLifecycle: ActionLifecycleDescriptor;
15
36
  export declare const givingAction: Action & {
16
37
  metadata: ActionMetadata;
17
38
  };
@@ -1 +1 @@
1
- {"version":3,"file":"giving.d.ts","sourceRoot":"","sources":["../../../../../../../../../repos/sharpee_v2/packages/stdlib/src/actions/standard/giving/giving.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,MAAM,EAAmC,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAwCrD,eAAO,MAAM,YAAY,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,cAAc,CAAA;CA2Q7D,CAAC"}
1
+ {"version":3,"file":"giving.d.ts","sourceRoot":"","sources":["../../../../../../../../../repos/sharpee_v2/packages/stdlib/src/actions/standard/giving/giving.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,MAAM,EAAmC,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAerD,OAAO,EACL,yBAAyB,EAQ1B,MAAM,iBAAiB,CAAC;AAEzB;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,eAAe,EAAE,yBA0B7B,CAAC;AA0BF,eAAO,MAAM,YAAY,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,cAAc,CAAA;CAuS7D,CAAC"}