@sharpee/stdlib 3.0.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 (287) 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 -52
  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 +35 -48
  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 +122 -132
  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/opening/opening-messages.d.ts +3 -0
  143. package/actions/standard/opening/opening-messages.d.ts.map +1 -1
  144. package/actions/standard/opening/opening-messages.js +4 -0
  145. package/actions/standard/opening/opening-messages.js.map +1 -1
  146. package/actions/standard/opening/opening.d.ts +8 -0
  147. package/actions/standard/opening/opening.d.ts.map +1 -1
  148. package/actions/standard/opening/opening.js +73 -59
  149. package/actions/standard/opening/opening.js.map +1 -1
  150. package/actions/standard/pulling/pulling.d.ts +9 -0
  151. package/actions/standard/pulling/pulling.d.ts.map +1 -1
  152. package/actions/standard/pulling/pulling.js +40 -2
  153. package/actions/standard/pulling/pulling.js.map +1 -1
  154. package/actions/standard/pushing/pushing-types.d.ts +3 -6
  155. package/actions/standard/pushing/pushing-types.d.ts.map +1 -1
  156. package/actions/standard/pushing/pushing-types.js +3 -1
  157. package/actions/standard/pushing/pushing-types.js.map +1 -1
  158. package/actions/standard/pushing/pushing.d.ts +14 -5
  159. package/actions/standard/pushing/pushing.d.ts.map +1 -1
  160. package/actions/standard/pushing/pushing.js +51 -71
  161. package/actions/standard/pushing/pushing.js.map +1 -1
  162. package/actions/standard/putting/putting-types.d.ts +10 -21
  163. package/actions/standard/putting/putting-types.d.ts.map +1 -1
  164. package/actions/standard/putting/putting-types.js +0 -1
  165. package/actions/standard/putting/putting-types.js.map +1 -1
  166. package/actions/standard/putting/putting.d.ts +10 -0
  167. package/actions/standard/putting/putting.d.ts.map +1 -1
  168. package/actions/standard/putting/putting.js +133 -151
  169. package/actions/standard/putting/putting.js.map +1 -1
  170. package/actions/standard/reading/reading.d.ts +6 -0
  171. package/actions/standard/reading/reading.d.ts.map +1 -1
  172. package/actions/standard/reading/reading.js +36 -52
  173. package/actions/standard/reading/reading.js.map +1 -1
  174. package/actions/standard/removing/removing-types.d.ts +10 -16
  175. package/actions/standard/removing/removing-types.d.ts.map +1 -1
  176. package/actions/standard/removing/removing-types.js.map +1 -1
  177. package/actions/standard/removing/removing.d.ts +13 -0
  178. package/actions/standard/removing/removing.d.ts.map +1 -1
  179. package/actions/standard/removing/removing.js +147 -88
  180. package/actions/standard/removing/removing.js.map +1 -1
  181. package/actions/standard/searching/searching.d.ts +10 -0
  182. package/actions/standard/searching/searching.d.ts.map +1 -1
  183. package/actions/standard/searching/searching.js +44 -8
  184. package/actions/standard/searching/searching.js.map +1 -1
  185. package/actions/standard/showing/showing.d.ts +14 -0
  186. package/actions/standard/showing/showing.d.ts.map +1 -1
  187. package/actions/standard/showing/showing.js +62 -2
  188. package/actions/standard/showing/showing.js.map +1 -1
  189. package/actions/standard/smelling/smelling.d.ts +10 -0
  190. package/actions/standard/smelling/smelling.d.ts.map +1 -1
  191. package/actions/standard/smelling/smelling.js +41 -2
  192. package/actions/standard/smelling/smelling.js.map +1 -1
  193. package/actions/standard/switching_off/switching_off.d.ts +11 -1
  194. package/actions/standard/switching_off/switching_off.d.ts.map +1 -1
  195. package/actions/standard/switching_off/switching_off.js +44 -4
  196. package/actions/standard/switching_off/switching_off.js.map +1 -1
  197. package/actions/standard/switching_on/switching_on.d.ts +14 -5
  198. package/actions/standard/switching_on/switching_on.d.ts.map +1 -1
  199. package/actions/standard/switching_on/switching_on.js +45 -57
  200. package/actions/standard/switching_on/switching_on.js.map +1 -1
  201. package/actions/standard/taking/taking-types.d.ts +14 -36
  202. package/actions/standard/taking/taking-types.d.ts.map +1 -1
  203. package/actions/standard/taking/taking-types.js.map +1 -1
  204. package/actions/standard/taking/taking.d.ts +11 -0
  205. package/actions/standard/taking/taking.d.ts.map +1 -1
  206. package/actions/standard/taking/taking.js +102 -148
  207. package/actions/standard/taking/taking.js.map +1 -1
  208. package/actions/standard/taking_off/taking-off.d.ts +6 -0
  209. package/actions/standard/taking_off/taking-off.d.ts.map +1 -1
  210. package/actions/standard/taking_off/taking-off.js +57 -21
  211. package/actions/standard/taking_off/taking-off.js.map +1 -1
  212. package/actions/standard/talking/talking.d.ts +15 -0
  213. package/actions/standard/talking/talking.d.ts.map +1 -1
  214. package/actions/standard/talking/talking.js +52 -3
  215. package/actions/standard/talking/talking.js.map +1 -1
  216. package/actions/standard/telling/index.d.ts +5 -0
  217. package/actions/standard/telling/index.d.ts.map +1 -0
  218. package/actions/standard/telling/index.js +10 -0
  219. package/actions/standard/telling/index.js.map +1 -0
  220. package/actions/standard/telling/telling.d.ts +25 -0
  221. package/actions/standard/telling/telling.d.ts.map +1 -0
  222. package/actions/standard/telling/telling.js +114 -0
  223. package/actions/standard/telling/telling.js.map +1 -0
  224. package/actions/standard/throwing/throwing.d.ts +11 -0
  225. package/actions/standard/throwing/throwing.d.ts.map +1 -1
  226. package/actions/standard/throwing/throwing.js +69 -70
  227. package/actions/standard/throwing/throwing.js.map +1 -1
  228. package/actions/standard/tool-shared.d.ts +38 -0
  229. package/actions/standard/tool-shared.d.ts.map +1 -0
  230. package/actions/standard/tool-shared.js +74 -0
  231. package/actions/standard/tool-shared.js.map +1 -0
  232. package/actions/standard/touching/touching.d.ts +9 -0
  233. package/actions/standard/touching/touching.d.ts.map +1 -1
  234. package/actions/standard/touching/touching.js +40 -4
  235. package/actions/standard/touching/touching.js.map +1 -1
  236. package/actions/standard/turning/index.d.ts +5 -0
  237. package/actions/standard/turning/index.d.ts.map +1 -0
  238. package/actions/standard/turning/index.js +9 -0
  239. package/actions/standard/turning/index.js.map +1 -0
  240. package/actions/standard/turning/turning.d.ts +17 -0
  241. package/actions/standard/turning/turning.d.ts.map +1 -0
  242. package/actions/standard/turning/turning.js +25 -0
  243. package/actions/standard/turning/turning.js.map +1 -0
  244. package/actions/standard/unlocking/unlocking.d.ts +9 -0
  245. package/actions/standard/unlocking/unlocking.d.ts.map +1 -1
  246. package/actions/standard/unlocking/unlocking.js +62 -3
  247. package/actions/standard/unlocking/unlocking.js.map +1 -1
  248. package/actions/standard/wearing/wearing.d.ts +11 -1
  249. package/actions/standard/wearing/wearing.d.ts.map +1 -1
  250. package/actions/standard/wearing/wearing.js +57 -12
  251. package/actions/standard/wearing/wearing.js.map +1 -1
  252. package/channels/standard.d.ts +13 -10
  253. package/channels/standard.d.ts.map +1 -1
  254. package/channels/standard.js +14 -10
  255. package/channels/standard.js.map +1 -1
  256. package/death/deadly-room-transformer.d.ts +37 -0
  257. package/death/deadly-room-transformer.d.ts.map +1 -0
  258. package/death/deadly-room-transformer.js +79 -0
  259. package/death/deadly-room-transformer.js.map +1 -0
  260. package/death/index.d.ts +18 -0
  261. package/death/index.d.ts.map +1 -0
  262. package/death/index.js +28 -0
  263. package/death/index.js.map +1 -0
  264. package/death/kill-player.d.ts +49 -0
  265. package/death/kill-player.d.ts.map +1 -0
  266. package/death/kill-player.js +55 -0
  267. package/death/kill-player.js.map +1 -0
  268. package/death/player-death-events.d.ts +40 -0
  269. package/death/player-death-events.d.ts.map +1 -0
  270. package/death/player-death-events.js +27 -0
  271. package/death/player-death-events.js.map +1 -0
  272. package/death/probabilistic-death.d.ts +23 -0
  273. package/death/probabilistic-death.d.ts.map +1 -0
  274. package/death/probabilistic-death.js +27 -0
  275. package/death/probabilistic-death.js.map +1 -0
  276. package/index.d.ts +1 -0
  277. package/index.d.ts.map +1 -1
  278. package/index.js +1 -0
  279. package/index.js.map +1 -1
  280. package/npc/behaviors.d.ts.map +1 -1
  281. package/npc/behaviors.js +9 -8
  282. package/npc/behaviors.js.map +1 -1
  283. package/npc/npc-service.d.ts +8 -0
  284. package/npc/npc-service.d.ts.map +1 -1
  285. package/npc/npc-service.js +19 -18
  286. package/npc/npc-service.js.map +1 -1
  287. package/package.json +7 -7
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+ /**
3
+ * Wired-action registry (ADR-228 D5).
4
+ *
5
+ * The descriptor table: every standard action's `ActionLifecycleDescriptor`,
6
+ * collected in one place, plus the set of interceptor-consulting action ids
7
+ * derived mechanically from it. The table IS the source of truth — an action
8
+ * is "wired" iff its descriptor appears here, and the id set is never
9
+ * hand-maintained. Consumers (the Chord story-loader's load-time fail-fast,
10
+ * tooling, tests) read the derived set to decide whether an interceptor
11
+ * registered under a given action id will ever be consulted.
12
+ *
13
+ * Public interface: `actionLifecycleDescriptors`,
14
+ * `interceptorConsultingActionIds`.
15
+ * Owner: stdlib standard-action infrastructure (ADR-228).
16
+ *
17
+ * NOTE: this module is deliberately NOT exported from `./index.ts` (the
18
+ * lifecycle barrel) — actions import that barrel, and this module imports
19
+ * the actions, so routing it through the barrel would create an import
20
+ * cycle. It is exported from the actions barrel (`../index.ts`) instead.
21
+ */
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ exports.interceptorConsultingActionIds = exports.actionLifecycleDescriptors = void 0;
24
+ const asking_1 = require("../standard/asking/asking");
25
+ const attacking_1 = require("../standard/attacking/attacking");
26
+ const climbing_1 = require("../standard/climbing/climbing");
27
+ const closing_1 = require("../standard/closing/closing");
28
+ const digging_1 = require("../standard/digging/digging");
29
+ const cutting_1 = require("../standard/cutting/cutting");
30
+ const drinking_1 = require("../standard/drinking/drinking");
31
+ const dropping_1 = require("../standard/dropping/dropping");
32
+ const eating_1 = require("../standard/eating/eating");
33
+ const entering_1 = require("../standard/entering/entering");
34
+ const examining_1 = require("../standard/examining/examining");
35
+ const exiting_1 = require("../standard/exiting/exiting");
36
+ const giving_1 = require("../standard/giving/giving");
37
+ const going_1 = require("../standard/going/going");
38
+ const hiding_1 = require("../standard/hiding/hiding");
39
+ const inserting_1 = require("../standard/inserting/inserting");
40
+ const listening_1 = require("../standard/listening/listening");
41
+ const locking_1 = require("../standard/locking/locking");
42
+ const opening_1 = require("../standard/opening/opening");
43
+ const pulling_1 = require("../standard/pulling/pulling");
44
+ const pushing_1 = require("../standard/pushing/pushing");
45
+ const putting_1 = require("../standard/putting/putting");
46
+ const reading_1 = require("../standard/reading/reading");
47
+ const removing_1 = require("../standard/removing/removing");
48
+ const searching_1 = require("../standard/searching/searching");
49
+ const showing_1 = require("../standard/showing/showing");
50
+ const smelling_1 = require("../standard/smelling/smelling");
51
+ const switching_off_1 = require("../standard/switching_off/switching_off");
52
+ const switching_on_1 = require("../standard/switching_on/switching_on");
53
+ const taking_1 = require("../standard/taking/taking");
54
+ const taking_off_1 = require("../standard/taking_off/taking-off");
55
+ const talking_1 = require("../standard/talking/talking");
56
+ const telling_1 = require("../standard/telling/telling");
57
+ const throwing_1 = require("../standard/throwing/throwing");
58
+ const touching_1 = require("../standard/touching/touching");
59
+ const unlocking_1 = require("../standard/unlocking/unlocking");
60
+ const wearing_1 = require("../standard/wearing/wearing");
61
+ /**
62
+ * The descriptor table: all 37 entity-keyed standard actions (33 per
63
+ * ADR-228 Consequences + cutting per ADR-230 D3c + digging + asking/telling per
64
+ * ADR-230 Phase 6). Structural exemptions
65
+ * (no entity to key on: about, waiting, looking, … and the full-delegation
66
+ * capability actions lowering/raising) are absent by design — see ADR-228
67
+ * Context.
68
+ */
69
+ exports.actionLifecycleDescriptors = Object.freeze([
70
+ asking_1.askingLifecycle,
71
+ attacking_1.attackingLifecycle,
72
+ climbing_1.climbingLifecycle,
73
+ closing_1.closingLifecycle,
74
+ cutting_1.cuttingLifecycle,
75
+ digging_1.diggingLifecycle,
76
+ drinking_1.drinkingLifecycle,
77
+ dropping_1.droppingLifecycle,
78
+ eating_1.eatingLifecycle,
79
+ entering_1.enteringLifecycle,
80
+ examining_1.examiningLifecycle,
81
+ exiting_1.exitingLifecycle,
82
+ giving_1.givingLifecycle,
83
+ going_1.goingLifecycle,
84
+ hiding_1.hidingLifecycle,
85
+ inserting_1.insertingLifecycle,
86
+ listening_1.listeningLifecycle,
87
+ locking_1.lockingLifecycle,
88
+ opening_1.openingLifecycle,
89
+ pulling_1.pullingLifecycle,
90
+ pushing_1.pushingLifecycle,
91
+ putting_1.puttingLifecycle,
92
+ reading_1.readingLifecycle,
93
+ removing_1.removingLifecycle,
94
+ searching_1.searchingLifecycle,
95
+ showing_1.showingLifecycle,
96
+ smelling_1.smellingLifecycle,
97
+ switching_off_1.switchingOffLifecycle,
98
+ switching_on_1.switchingOnLifecycle,
99
+ taking_1.takingLifecycle,
100
+ taking_off_1.takingOffLifecycle,
101
+ talking_1.talkingLifecycle,
102
+ telling_1.tellingLifecycle,
103
+ throwing_1.throwingLifecycle,
104
+ touching_1.touchingLifecycle,
105
+ unlocking_1.unlockingLifecycle,
106
+ wearing_1.wearingLifecycle
107
+ ]);
108
+ // Invariant: one descriptor per action — a duplicate primary id means two
109
+ // actions claim the same lifecycle surface (a copy-paste bug), so fail at
110
+ // module load rather than letting the registry lie.
111
+ {
112
+ const seen = new Set();
113
+ for (const descriptor of exports.actionLifecycleDescriptors) {
114
+ if (seen.has(descriptor.actionId)) {
115
+ throw new Error(`Duplicate lifecycle descriptor for ${descriptor.actionId} in the wired-action registry (ADR-228 D5)`);
116
+ }
117
+ seen.add(descriptor.actionId);
118
+ }
119
+ }
120
+ /**
121
+ * Every action id under which some wired action consults interceptors —
122
+ * the union of all descriptors' slot actionIds (mechanically derived; the
123
+ * both-ids delegation seams of ADR-228 D6 and implicit-entity ids like
124
+ * `if.action.entering_room` fall out of the slots, not a hand-kept list).
125
+ * An interceptor registered under an id NOT in this set will never fire.
126
+ */
127
+ exports.interceptorConsultingActionIds = new Set(exports.actionLifecycleDescriptors.flatMap((descriptor) => descriptor.slots.flatMap((slot) => slot.actionIds)));
128
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../../../../../../repos/sharpee_v2/packages/stdlib/src/actions/lifecycle/registry.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;;AAIH,sDAA4D;AAC5D,+DAAqE;AACrE,4DAAkE;AAClE,yDAA+D;AAC/D,yDAA+D;AAC/D,yDAA+D;AAC/D,4DAAkE;AAClE,4DAAkE;AAClE,sDAA4D;AAC5D,4DAAkE;AAClE,+DAAqE;AACrE,yDAA+D;AAC/D,sDAA4D;AAC5D,mDAAyD;AACzD,sDAA4D;AAC5D,+DAAqE;AACrE,+DAAqE;AACrE,yDAA+D;AAC/D,yDAA+D;AAC/D,yDAA+D;AAC/D,yDAA+D;AAC/D,yDAA+D;AAC/D,yDAA+D;AAC/D,4DAAkE;AAClE,+DAAqE;AACrE,yDAA+D;AAC/D,4DAAkE;AAClE,2EAAgF;AAChF,wEAA6E;AAC7E,sDAA4D;AAC5D,kEAAuE;AACvE,yDAA+D;AAC/D,yDAA+D;AAC/D,4DAAkE;AAClE,4DAAkE;AAClE,+DAAqE;AACrE,yDAA+D;AAE/D;;;;;;;GAOG;AACU,QAAA,0BAA0B,GAAyC,MAAM,CAAC,MAAM,CAAC;IAC5F,wBAAe;IACf,8BAAkB;IAClB,4BAAiB;IACjB,0BAAgB;IAChB,0BAAgB;IAChB,0BAAgB;IAChB,4BAAiB;IACjB,4BAAiB;IACjB,wBAAe;IACf,4BAAiB;IACjB,8BAAkB;IAClB,0BAAgB;IAChB,wBAAe;IACf,sBAAc;IACd,wBAAe;IACf,8BAAkB;IAClB,8BAAkB;IAClB,0BAAgB;IAChB,0BAAgB;IAChB,0BAAgB;IAChB,0BAAgB;IAChB,0BAAgB;IAChB,0BAAgB;IAChB,4BAAiB;IACjB,8BAAkB;IAClB,0BAAgB;IAChB,4BAAiB;IACjB,qCAAqB;IACrB,mCAAoB;IACpB,wBAAe;IACf,+BAAkB;IAClB,0BAAgB;IAChB,0BAAgB;IAChB,4BAAiB;IACjB,4BAAiB;IACjB,8BAAkB;IAClB,0BAAgB;CACjB,CAAC,CAAC;AAEH,0EAA0E;AAC1E,0EAA0E;AAC1E,oDAAoD;AACpD,CAAC;IACC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,UAAU,IAAI,kCAA0B,EAAE,CAAC;QACpD,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CACb,sCAAsC,UAAU,CAAC,QAAQ,4CAA4C,CACtG,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACU,QAAA,8BAA8B,GAAwB,IAAI,GAAG,CACxE,kCAA0B,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,CAChD,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CACnD,CACF,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Asking action (ADR-230 Phase 6, sketch ruling 4) — minimal interceptable
3
+ * ASK :recipient ABOUT :topic.
4
+ *
5
+ * ASK is a core IF verb players constantly try, but there is no platform
6
+ * conversation system yet: this action validates the social preconditions
7
+ * and reports a helpful default ("I don't know anything about that") that
8
+ * per-entity interceptors (or a future conversation extension) override.
9
+ * No world mutation, ever.
10
+ *
11
+ * Four-phase pattern; interceptor consultation through the shared
12
+ * lifecycle engine (ADR-228) via `askingLifecycle`.
13
+ */
14
+ import { Action } from '../../enhanced-types';
15
+ import { ActionMetadata } from '../../../validation';
16
+ import { ActionLifecycleDescriptor } from '../../lifecycle';
17
+ /**
18
+ * Interceptor surface (ADR-228): the person asked is the only consultable
19
+ * entity of an ASK command.
20
+ */
21
+ export declare const askingLifecycle: ActionLifecycleDescriptor;
22
+ export declare const askingAction: Action & {
23
+ metadata: ActionMetadata;
24
+ };
25
+ //# sourceMappingURL=asking.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asking.d.ts","sourceRoot":"","sources":["../../../../../../../../../repos/sharpee_v2/packages/stdlib/src/actions/standard/asking/asking.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,MAAM,EAAmC,MAAM,sBAAsB,CAAC;AAI/E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,EACL,yBAAyB,EAQ1B,MAAM,iBAAiB,CAAC;AAEzB;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,yBAS7B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,cAAc,CAAA;CAoF7D,CAAC"}
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ /**
3
+ * Asking action (ADR-230 Phase 6, sketch ruling 4) — minimal interceptable
4
+ * ASK :recipient ABOUT :topic.
5
+ *
6
+ * ASK is a core IF verb players constantly try, but there is no platform
7
+ * conversation system yet: this action validates the social preconditions
8
+ * and reports a helpful default ("I don't know anything about that") that
9
+ * per-entity interceptors (or a future conversation extension) override.
10
+ * No world mutation, ever.
11
+ *
12
+ * Four-phase pattern; interceptor consultation through the shared
13
+ * lifecycle engine (ADR-228) via `askingLifecycle`.
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.askingAction = exports.askingLifecycle = void 0;
17
+ const world_model_1 = require("@sharpee/world-model");
18
+ const constants_1 = require("../../constants");
19
+ const types_1 = require("../../../scope/types");
20
+ const utils_1 = require("../../../utils");
21
+ const lifecycle_1 = require("../../lifecycle");
22
+ /**
23
+ * Interceptor surface (ADR-228): the person asked is the only consultable
24
+ * entity of an ASK command.
25
+ */
26
+ exports.askingLifecycle = {
27
+ actionId: constants_1.IFActions.ASKING,
28
+ slots: [
29
+ {
30
+ id: 'target',
31
+ actionIds: [constants_1.IFActions.ASKING],
32
+ resolve: (ctx) => ctx.command.directObject?.entity
33
+ }
34
+ ]
35
+ };
36
+ exports.askingAction = {
37
+ id: constants_1.IFActions.ASKING,
38
+ requiredMessages: ['no_target', 'not_visible', 'too_far', 'not_actor', 'unknown_topic'],
39
+ group: 'social',
40
+ metadata: {
41
+ requiresDirectObject: true,
42
+ requiresIndirectObject: false,
43
+ directObjectScope: types_1.ScopeLevel.AWARE
44
+ },
45
+ validate(context) {
46
+ const target = context.command.directObject?.entity;
47
+ if (!target) {
48
+ return { valid: false, error: 'no_target' };
49
+ }
50
+ const state = (0, lifecycle_1.resolveLifecycle)(context, exports.askingLifecycle);
51
+ const preVeto = (0, lifecycle_1.runPreValidate)(context, state);
52
+ if (preVeto)
53
+ return preVeto;
54
+ if (!context.canSee(target)) {
55
+ return { valid: false, error: 'not_visible' };
56
+ }
57
+ if (context.world.getLocation(target.id) !== context.world.getLocation(context.player.id)) {
58
+ return { valid: false, error: 'too_far' };
59
+ }
60
+ if (!target.has(world_model_1.TraitType.ACTOR)) {
61
+ return { valid: false, error: 'not_actor', params: { target: (0, utils_1.nounPhraseFor)(target) } };
62
+ }
63
+ const postVeto = (0, lifecycle_1.runPostValidate)(context, state);
64
+ if (postVeto)
65
+ return postVeto;
66
+ return { valid: true };
67
+ },
68
+ execute(context) {
69
+ // No world mutation — asking is pure conversation surface.
70
+ const state = (0, lifecycle_1.getLifecycleState)(context);
71
+ if (state)
72
+ (0, lifecycle_1.runPostExecute)(context, state);
73
+ },
74
+ blocked(context, result) {
75
+ const target = context.command.directObject?.entity;
76
+ const error = result.error || '';
77
+ const messageId = error.includes('.') ? error : `${context.action.id}.${error}`;
78
+ const events = [
79
+ context.event('if.event.ask_blocked', {
80
+ blocked: true,
81
+ messageId,
82
+ params: { ...result.params, target: target ? (0, utils_1.nounPhraseFor)(target) : undefined },
83
+ reason: result.error,
84
+ targetId: target?.id,
85
+ targetName: target?.name
86
+ })
87
+ ];
88
+ if (result.error) {
89
+ const state = (0, lifecycle_1.getLifecycleState)(context);
90
+ if (state)
91
+ (0, lifecycle_1.runOnBlocked)(context, state, events, 'if.event.ask_blocked', result.error);
92
+ }
93
+ return events;
94
+ },
95
+ report(context) {
96
+ const target = context.command.directObject.entity;
97
+ const topic = context.command.indirectObject?.parsed?.text ??
98
+ context.command.parsed?.structure?.extras?.topic;
99
+ const events = [
100
+ context.event('if.event.asked', {
101
+ messageId: `${context.action.id}.unknown_topic`,
102
+ params: { target: (0, utils_1.nounPhraseFor)(target), topic },
103
+ targetId: target.id,
104
+ targetName: target.name,
105
+ topic
106
+ })
107
+ ];
108
+ const state = (0, lifecycle_1.getLifecycleState)(context);
109
+ if (state)
110
+ (0, lifecycle_1.runPostReport)(context, state, events, 'if.event.asked');
111
+ return events;
112
+ }
113
+ };
114
+ //# sourceMappingURL=asking.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asking.js","sourceRoot":"","sources":["../../../../../../../../../repos/sharpee_v2/packages/stdlib/src/actions/standard/asking/asking.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Asking action (ADR-230 Phase 6) — public exports.
3
+ */
4
+ export { askingAction, askingLifecycle } from './asking';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../../repos/sharpee_v2/packages/stdlib/src/actions/standard/asking/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.askingLifecycle = exports.askingAction = void 0;
4
+ /**
5
+ * Asking action (ADR-230 Phase 6) — public exports.
6
+ */
7
+ var asking_1 = require("./asking");
8
+ Object.defineProperty(exports, "askingAction", { enumerable: true, get: function () { return asking_1.askingAction; } });
9
+ Object.defineProperty(exports, "askingLifecycle", { enumerable: true, get: function () { return asking_1.askingLifecycle; } });
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../../repos/sharpee_v2/packages/stdlib/src/actions/standard/asking/index.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,mCAAyD;AAAhD,sGAAA,YAAY,OAAA;AAAE,yGAAA,eAAe,OAAA"}
@@ -14,6 +14,20 @@
14
14
  */
15
15
  import { Action } from '../../enhanced-types';
16
16
  import { ActionMetadata } from '../../../validation';
17
+ import { ActionLifecycleDescriptor } from '../../lifecycle';
18
+ /**
19
+ * Interceptor surface (ADR-228): the attacked target AND the wielded
20
+ * weapon/instrument are consulted (the weapon was the audit's dead
21
+ * second-entity surface). Only an explicitly-commanded weapon resolves —
22
+ * a weapon inferred from inventory during execute is not a command entity
23
+ * and gets no consultation.
24
+ *
25
+ * Special contract (D7.3, declared — not a comment): for combatant
26
+ * targets, the TARGET consultation's postExecute REPLACES the action's
27
+ * standard combat resolution. The action seeds the consultation's
28
+ * sharedData with weapon/verb context and reads attackResult back.
29
+ */
30
+ export declare const attackingLifecycle: ActionLifecycleDescriptor;
17
31
  export declare const attackingAction: Action & {
18
32
  metadata: ActionMetadata;
19
33
  };
@@ -1 +1 @@
1
- {"version":3,"file":"attacking.d.ts","sourceRoot":"","sources":["../../../../../../../../../repos/sharpee_v2/packages/stdlib/src/actions/standard/attacking/attacking.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,MAAM,EAAmC,MAAM,sBAAsB,CAAC;AAe/E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAiBrD,eAAO,MAAM,eAAe,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,cAAc,CAAA;CAidhE,CAAC"}
1
+ {"version":3,"file":"attacking.d.ts","sourceRoot":"","sources":["../../../../../../../../../repos/sharpee_v2/packages/stdlib/src/actions/standard/attacking/attacking.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,MAAM,EAAmC,MAAM,sBAAsB,CAAC;AAa/E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAIrD,OAAO,EACL,yBAAyB,EAU1B,MAAM,iBAAiB,CAAC;AAEzB;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,kBAAkB,EAAE,yBAsBhC,CAAC;AAWF,eAAO,MAAM,eAAe,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,cAAc,CAAA;CA4chE,CAAC"}