@sharpee/stdlib 0.9.105 → 0.9.107

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  # @sharpee/stdlib
2
2
 
3
- Standard library for the Sharpee IF Platform - 43 standard IF actions with four-phase pattern (validate/execute/report/blocked).
3
+ Standard library for the Sharpee IF Platform - 48 standard IF actions with four-phase pattern (validate/execute/report/blocked).
4
4
 
5
5
  ## Overview
6
6
 
@@ -100,9 +100,9 @@ interface Action {
100
100
  }
101
101
  ```
102
102
 
103
- ### Available Actions (43 Total)
103
+ ### Available Actions (48 Total)
104
104
 
105
- **Movement**: going, entering, exiting
105
+ **Movement**: going, entering, exiting, climbing
106
106
  **Manipulation**: taking, dropping, putting, inserting, removing, giving, throwing
107
107
  **Containers/Doors**: opening, closing, locking, unlocking
108
108
  **Examination**: looking, examining, searching, reading
@@ -111,7 +111,7 @@ interface Action {
111
111
  **Wearables**: wearing, taking off
112
112
  **Consumables**: eating, drinking
113
113
  **Senses**: touching, smelling, listening
114
- **Meta**: inventory, score, help, save, restore, restart, quit, undo, wait, about, sleep
114
+ **Meta**: inventory, score, help, save, restore, restart, quit, undo, again, wait, about, version, sleep
115
115
 
116
116
  ## Language System
117
117
 
@@ -1 +1 @@
1
- {"version":3,"file":"closing.d.ts","sourceRoot":"","sources":["../../../../../../../../repos/sharpee/packages/stdlib/src/actions/standard/closing/closing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,MAAM,EAAmC,MAAM,sBAAsB,CAAC;AAU/E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAcrD,eAAO,MAAM,aAAa,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,cAAc,CAAA;CA+N9D,CAAC"}
1
+ {"version":3,"file":"closing.d.ts","sourceRoot":"","sources":["../../../../../../../../repos/sharpee/packages/stdlib/src/actions/standard/closing/closing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,MAAM,EAAmC,MAAM,sBAAsB,CAAC;AAU/E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAgBrD,eAAO,MAAM,aAAa,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,cAAc,CAAA;CA+O9D,CAAC"}
@@ -65,18 +65,21 @@ exports.closingAction = {
65
65
  }
66
66
  // Check for interceptor on the target entity (ADR-118)
67
67
  const interceptorResult = (0, world_model_1.getInterceptorForAction)(noun, constants_1.IFActions.CLOSING);
68
- if (interceptorResult) {
69
- const { interceptor } = interceptorResult;
70
- const interceptorData = {};
71
- if (interceptor.preValidate) {
72
- const result = interceptor.preValidate(noun, context.world, context.player.id, interceptorData);
73
- if (result !== null && !result.valid) {
74
- return {
75
- valid: false,
76
- error: result.error,
77
- params: result.params
78
- };
79
- }
68
+ const interceptor = interceptorResult?.interceptor;
69
+ const interceptorData = {};
70
+ // Store for later phases (blocked needs access to onBlocked)
71
+ const sharedData = getClosingSharedData(context);
72
+ sharedData.interceptor = interceptor;
73
+ sharedData.interceptorData = interceptorData;
74
+ // === PRE-VALIDATE HOOK ===
75
+ if (interceptor?.preValidate) {
76
+ const result = interceptor.preValidate(noun, context.world, context.player.id, interceptorData);
77
+ if (result !== null && !result.valid) {
78
+ return {
79
+ valid: false,
80
+ error: result.error,
81
+ params: result.params
82
+ };
80
83
  }
81
84
  }
82
85
  // Check scope - must be able to reach the target
@@ -202,6 +205,16 @@ exports.closingAction = {
202
205
  */
203
206
  blocked(context, result) {
204
207
  const noun = context.command.directObject?.entity;
208
+ // === ON-BLOCKED HOOK ===
209
+ const sharedData = getClosingSharedData(context);
210
+ const interceptor = sharedData.interceptor;
211
+ const interceptorData = sharedData.interceptorData || {};
212
+ if (interceptor?.onBlocked && noun && result.error) {
213
+ const customEffects = interceptor.onBlocked(noun, context.world, context.player.id, result.error, interceptorData);
214
+ if (customEffects !== null) {
215
+ return customEffects.map(effect => context.event(effect.type, effect.payload));
216
+ }
217
+ }
205
218
  const error = result.error || '';
206
219
  // If error already contains dots (e.g., story interceptor ID), use as-is; otherwise prefix with action ID
207
220
  const messageId = error.includes('.') ? error : `${context.action.id}.${error}`;
@@ -1 +1 @@
1
- {"version":3,"file":"closing.js","sourceRoot":"","sources":["../../../../../../../../../repos/sharpee/packages/stdlib/src/actions/standard/closing/closing.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;AAIH,sDAAgJ;AAChJ,iEAA0D;AAC1D,+CAA4C;AAC5C,iDAAkD;AAClD,yDAAqD;AAKrD,gDAAkD;AASlD,SAAS,oBAAoB,CAAC,OAAsB;IAClD,OAAO,OAAO,CAAC,UAA+B,CAAC;AACjD,CAAC;AAEY,QAAA,aAAa,GAA0C;IAClE,EAAE,EAAE,qBAAS,CAAC,OAAO;IAErB,qDAAqD;IACrD,YAAY,EAAE;QACZ,MAAM,EAAE,kBAAU,CAAC,SAAS;KAC7B;IAED,2CAA2C;IAC3C,kBAAkB,EAAE;QAClB,KAAK,EAAE,uBAAS,CAAC,QAAQ;QACzB,SAAS,EAAE,SAAS;QACpB,WAAW,EAAE,UAAU;KACxB;IAED,6CAA6C;IAC7C,eAAe,EAAE,KAAK;IAEtB,gBAAgB,EAAE;QAChB,WAAW;QACX,cAAc;QACd,gBAAgB;QAChB,QAAQ;QACR,YAAY;QACZ,kBAAkB;KACnB;IACD,QAAQ,EAAE;QACR,oBAAoB,EAAE,IAAI;QAC1B,sBAAsB,EAAE,KAAK;QAC7B,iBAAiB,EAAE,kBAAU,CAAC,SAAS;KACxC;IACD,KAAK,EAAE,wBAAwB;IAE/B;;;OAGG;IACH,QAAQ,CAAC,OAAsB;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,kCAAe,CAAC,SAAS;aACjC,CAAC;QACJ,CAAC;QAED,uDAAuD;QACvD,MAAM,iBAAiB,GAAG,IAAA,qCAAuB,EAAC,IAAI,EAAE,qBAAS,CAAC,OAAO,CAAC,CAAC;QAC3E,IAAI,iBAAiB,EAAE,CAAC;YACtB,MAAM,EAAE,WAAW,EAAE,GAAG,iBAAiB,CAAC;YAC1C,MAAM,eAAe,GAA0B,EAAE,CAAC;YAElD,IAAI,WAAW,CAAC,WAAW,EAAE,CAAC;gBAC5B,MAAM,MAAM,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC;gBAChG,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;oBACrC,OAAO;wBACL,KAAK,EAAE,KAAK;wBACZ,KAAK,EAAE,MAAM,CAAC,KAAK;wBACnB,MAAM,EAAE,MAAM,CAAC,MAAM;qBACtB,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAED,iDAAiD;QACjD,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,kBAAU,CAAC,SAAS,CAAC,CAAC;QACpE,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;YACnB,OAAO,UAAU,CAAC,KAAM,CAAC;QAC3B,CAAC;QAED,+DAA+D;QAC/D,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,uBAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClC,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,kCAAe,CAAC,YAAY;gBACnC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;aAC5B,CAAC;QACJ,CAAC;QAED,gDAAgD;QAChD,IAAI,CAAC,8BAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACrC,4CAA4C;YAC5C,IAAI,CAAC,8BAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnC,OAAO;oBACL,KAAK,EAAE,KAAK;oBACZ,KAAK,EAAE,kCAAe,CAAC,cAAc;oBACrC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;iBAC5B,CAAC;YACJ,CAAC;YACD,qDAAqD;YACrD,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,kCAAe,CAAC,gBAAgB;gBACvC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;aAC5B,CAAC;QACJ,CAAC;QAED,6CAA6C;QAC7C,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,2BAAa,CAAC,CAAC;QACnD,MAAM,cAAc,GAAG,aAAoD,CAAC;QAC5E,IAAI,cAAc,EAAE,iBAAiB,EAAE,CAAC;YACtC,MAAM,WAAW,GAAG,cAAc,CAAC,iBAA4C,CAAC;YAChF,IAAI,WAAW,CAAC,WAAW,EAAE,CAAC;gBAC5B,OAAO;oBACL,KAAK,EAAE,KAAK;oBACZ,KAAK,EAAE,kCAAe,CAAC,gBAAgB;oBACvC,MAAM,EAAE;wBACN,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,QAAQ,EAAE,WAAW,CAAC,WAAW;qBAClC;iBACF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACzB,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAC,OAAsB;QAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,YAAa,CAAC,MAAO,CAAC;QAEnD,mCAAmC;QACnC,MAAM,MAAM,GAAiB,8BAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE1D,iDAAiD;QACjD,MAAM,UAAU,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;QACjD,UAAU,CAAC,WAAW,GAAG,MAAM,CAAC;IAClC,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,OAAsB;QAC3B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,YAAa,CAAC,MAAO,CAAC;QACnD,MAAM,UAAU,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,UAAU,CAAC,WAA2B,CAAC;QAEtD,MAAM,MAAM,GAAqB,EAAE,CAAC;QAEpC,gDAAgD;QAChD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE;YAClC,QAAQ,EAAE,IAAI,CAAC,EAAE;YACjB,UAAU,EAAE,IAAI,CAAC,IAAI;YACrB,aAAa,EAAE,MAAM,CAAC,YAAY;YAClC,KAAK,EAAE,MAAM,CAAC,UAAU;SACzB,CAAC,CAAC,CAAC;QAEJ,0CAA0C;QAC1C,MAAM,SAAS,GAAG,IAAA,mCAAc,EAAC,+BAAgB,EAAE,OAAO,CAAC,CAAC;QAE5D,mDAAmD;QACnD,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,uBAAS,CAAC,SAAS,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,uBAAS,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,uBAAS,CAAC,SAAS,CAAC,CAAC;QAElD,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,IAAI,WAAW,GAAa,EAAE,CAAC;QAE/B,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACpD,WAAW,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;YAClC,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC;YAChC,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9C,CAAC;QAED,kEAAkE;QAClE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE;YAC3C,uDAAuD;YACvD,SAAS,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,kCAAe,CAAC,MAAM,EAAE;YAC3D,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;YAC3B,8CAA8C;YAC9C,GAAG,SAAS;YACZ,QAAQ,EAAE,IAAI,CAAC,EAAE;YACjB,UAAU,EAAE,IAAI,CAAC,IAAI;YACrB,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE;YAC1B,WAAW,EAAE,IAAI,CAAC,EAAE;YACpB,aAAa,EAAE,IAAI,CAAC,IAAI;YACxB,WAAW;YACX,MAAM;YACN,WAAW;YACX,WAAW;YACX,aAAa;YACb,WAAW;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC,CAAC,CAAC;QAEJ,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAC,OAAsB,EAAE,MAAwB;QACtD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC;QAClD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;QACjC,0GAA0G;QAC1G,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,KAAK,EAAE,CAAC;QAEhF,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE;gBAC9C,iBAAiB;gBACjB,SAAS;gBACT,MAAM,EAAE;oBACN,GAAG,MAAM,CAAC,MAAM;oBAChB,IAAI,EAAE,IAAI,EAAE,IAAI;iBACjB;gBACD,cAAc;gBACd,QAAQ,EAAE,IAAI,EAAE,EAAE;gBAClB,UAAU,EAAE,IAAI,EAAE,IAAI;gBACtB,MAAM,EAAE,MAAM,CAAC,KAAK;aACrB,CAAC,CAAC,CAAC;IACN,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"closing.js","sourceRoot":"","sources":["../../../../../../../../../repos/sharpee/packages/stdlib/src/actions/standard/closing/closing.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"opening.d.ts","sourceRoot":"","sources":["../../../../../../../../repos/sharpee/packages/stdlib/src/actions/standard/opening/opening.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,MAAM,EAAmC,MAAM,sBAAsB,CAAC;AAM/E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAQrD,eAAO,MAAM,aAAa,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,cAAc,CAAA;CA4L9D,CAAC"}
1
+ {"version":3,"file":"opening.d.ts","sourceRoot":"","sources":["../../../../../../../../repos/sharpee/packages/stdlib/src/actions/standard/opening/opening.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,MAAM,EAAmC,MAAM,sBAAsB,CAAC;AAM/E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAoBrD,eAAO,MAAM,aAAa,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,cAAc,CAAA;CA4M9D,CAAC"}
@@ -17,6 +17,9 @@ const world_model_1 = require("../../../../world-model/index.js");
17
17
  const constants_1 = require("../../constants");
18
18
  const types_1 = require("../../../scope/types");
19
19
  const opening_messages_1 = require("./opening-messages");
20
+ function getOpeningSharedData(context) {
21
+ return context.sharedData;
22
+ }
20
23
  exports.openingAction = {
21
24
  id: constants_1.IFActions.OPENING,
22
25
  // Default scope requirements for this action's slots
@@ -55,18 +58,21 @@ exports.openingAction = {
55
58
  }
56
59
  // Check for interceptor on the target entity (ADR-118)
57
60
  const interceptorResult = (0, world_model_1.getInterceptorForAction)(noun, constants_1.IFActions.OPENING);
58
- if (interceptorResult) {
59
- const { interceptor } = interceptorResult;
60
- const interceptorData = {};
61
- if (interceptor.preValidate) {
62
- const result = interceptor.preValidate(noun, context.world, context.player.id, interceptorData);
63
- if (result !== null && !result.valid) {
64
- return {
65
- valid: false,
66
- error: result.error,
67
- params: result.params
68
- };
69
- }
61
+ const interceptor = interceptorResult?.interceptor;
62
+ const interceptorData = {};
63
+ // Store for later phases (blocked needs access to onBlocked)
64
+ const sharedData = getOpeningSharedData(context);
65
+ sharedData.interceptor = interceptor;
66
+ sharedData.interceptorData = interceptorData;
67
+ // === PRE-VALIDATE HOOK ===
68
+ if (interceptor?.preValidate) {
69
+ const result = interceptor.preValidate(noun, context.world, context.player.id, interceptorData);
70
+ if (result !== null && !result.valid) {
71
+ return {
72
+ valid: false,
73
+ error: result.error,
74
+ params: result.params
75
+ };
70
76
  }
71
77
  }
72
78
  // Check scope - must be able to reach the target
@@ -163,6 +169,16 @@ exports.openingAction = {
163
169
  */
164
170
  blocked(context, result) {
165
171
  const noun = context.command.directObject?.entity;
172
+ // === ON-BLOCKED HOOK ===
173
+ const sharedData = getOpeningSharedData(context);
174
+ const interceptor = sharedData.interceptor;
175
+ const interceptorData = sharedData.interceptorData || {};
176
+ if (interceptor?.onBlocked && noun && result.error) {
177
+ const customEffects = interceptor.onBlocked(noun, context.world, context.player.id, result.error, interceptorData);
178
+ if (customEffects !== null) {
179
+ return customEffects.map(effect => context.event(effect.type, effect.payload));
180
+ }
181
+ }
166
182
  const error = result.error || '';
167
183
  // If error already contains dots (e.g., story interceptor ID), use as-is; otherwise prefix with action ID
168
184
  const messageId = error.includes('.') ? error : `${context.action.id}.${error}`;
@@ -1 +1 @@
1
- {"version":3,"file":"opening.js","sourceRoot":"","sources":["../../../../../../../../../repos/sharpee/packages/stdlib/src/actions/standard/opening/opening.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"opening.js","sourceRoot":"","sources":["../../../../../../../../../repos/sharpee/packages/stdlib/src/actions/standard/opening/opening.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Character model message IDs (ADR-141)
3
+ *
4
+ * Semantic message IDs for character state change events.
5
+ * Actual text is provided by the language layer.
6
+ *
7
+ * Public interface: CharacterMessages const, CharacterMessageId type.
8
+ * Owner context: stdlib / npc
9
+ */
10
+ /**
11
+ * Message IDs for character model state change events.
12
+ *
13
+ * These are emitted as observable behavior events when an NPC's
14
+ * cognitive or emotional state changes. Silent by default — authors
15
+ * opt in per NPC to surface them to the player.
16
+ */
17
+ export declare const CharacterMessages: {
18
+ readonly LUCIDITY_SHIFT: "npc.character.lucidity_shift";
19
+ readonly LUCIDITY_BASELINE_RESTORED: "npc.character.lucidity_baseline_restored";
20
+ readonly HALLUCINATION_ONSET: "npc.character.hallucination_onset";
21
+ readonly MOOD_CHANGED: "npc.character.mood_changed";
22
+ readonly THREAT_CHANGED: "npc.character.threat_changed";
23
+ readonly DISPOSITION_CHANGED: "npc.character.disposition_changed";
24
+ readonly FACT_LEARNED: "npc.character.fact_learned";
25
+ };
26
+ /**
27
+ * Type for character model message IDs.
28
+ */
29
+ export type CharacterMessageId = (typeof CharacterMessages)[keyof typeof CharacterMessages];
30
+ //# sourceMappingURL=character-messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"character-messages.d.ts","sourceRoot":"","sources":["../../../../../../repos/sharpee/packages/stdlib/src/npc/character-messages.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;CAmBpB,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,CAAC"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ /**
3
+ * Character model message IDs (ADR-141)
4
+ *
5
+ * Semantic message IDs for character state change events.
6
+ * Actual text is provided by the language layer.
7
+ *
8
+ * Public interface: CharacterMessages const, CharacterMessageId type.
9
+ * Owner context: stdlib / npc
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.CharacterMessages = void 0;
13
+ /**
14
+ * Message IDs for character model state change events.
15
+ *
16
+ * These are emitted as observable behavior events when an NPC's
17
+ * cognitive or emotional state changes. Silent by default — authors
18
+ * opt in per NPC to surface them to the player.
19
+ */
20
+ exports.CharacterMessages = {
21
+ // Lucidity transitions
22
+ LUCIDITY_SHIFT: 'npc.character.lucidity_shift',
23
+ LUCIDITY_BASELINE_RESTORED: 'npc.character.lucidity_baseline_restored',
24
+ // Cognitive events
25
+ HALLUCINATION_ONSET: 'npc.character.hallucination_onset',
26
+ // Mood changes
27
+ MOOD_CHANGED: 'npc.character.mood_changed',
28
+ // Threat changes
29
+ THREAT_CHANGED: 'npc.character.threat_changed',
30
+ // Disposition changes
31
+ DISPOSITION_CHANGED: 'npc.character.disposition_changed',
32
+ // Knowledge
33
+ FACT_LEARNED: 'npc.character.fact_learned',
34
+ };
35
+ //# sourceMappingURL=character-messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"character-messages.js","sourceRoot":"","sources":["../../../../../../../repos/sharpee/packages/stdlib/src/npc/character-messages.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAEH;;;;;;GAMG;AACU,QAAA,iBAAiB,GAAG;IAC/B,uBAAuB;IACvB,cAAc,EAAE,8BAA8B;IAC9C,0BAA0B,EAAE,0CAA0C;IAEtE,mBAAmB;IACnB,mBAAmB,EAAE,mCAAmC;IAExD,eAAe;IACf,YAAY,EAAE,4BAA4B;IAE1C,iBAAiB;IACjB,cAAc,EAAE,8BAA8B;IAE9C,sBAAsB;IACtB,mBAAmB,EAAE,mCAAmC;IAExD,YAAY;IACZ,YAAY,EAAE,4BAA4B;CAClC,CAAC"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Character observation handler (ADR-141)
3
+ *
4
+ * Processes events witnessed by NPCs through the cognitive profile filter
5
+ * and updates character model state accordingly.
6
+ *
7
+ * Public interface: observeEvent(), DefaultStateTransitions.
8
+ * Owner context: stdlib / npc
9
+ */
10
+ import { ISemanticEvent, EntityId } from "../../core/index";
11
+ import { IFEntity, WorldModel, CharacterModelTrait } from "../../world-model/index";
12
+ /** A default state transition triggered by an event type. */
13
+ export interface StateTransitionRule {
14
+ /** Event type pattern to match (exact string match). */
15
+ eventType: string;
16
+ /** Threat delta when this event is observed. */
17
+ threatDelta?: number;
18
+ /** Mood valence delta. */
19
+ moodValenceDelta?: number;
20
+ /** Mood arousal delta. */
21
+ moodArousalDelta?: number;
22
+ /**
23
+ * Disposition delta toward the event's actor.
24
+ * Only applied when the event has an actor entity.
25
+ */
26
+ dispositionDelta?: number;
27
+ }
28
+ /**
29
+ * Default state transition rules.
30
+ *
31
+ * Stories can override by providing their own rules array
32
+ * to observeEvent(). These are sensible defaults per ADR-141:
33
+ * violence increases threat, gifts improve disposition, etc.
34
+ */
35
+ export declare const DefaultStateTransitions: StateTransitionRule[];
36
+ /**
37
+ * Filter an event through the NPC's cognitive profile.
38
+ *
39
+ * @param trait - The NPC's CharacterModelTrait
40
+ * @param event - The incoming event
41
+ * @returns 'pass' if the event should be processed, 'miss' if filtered out,
42
+ * 'amplify' if the event should be processed with heightened impact
43
+ */
44
+ export declare function filterPerception(trait: CharacterModelTrait, event: ISemanticEvent): 'pass' | 'miss' | 'amplify';
45
+ /**
46
+ * Inject hallucinated facts for an NPC with augmented perception.
47
+ *
48
+ * Only injects when the NPC's current lucidity state matches
49
+ * the perceived event's `when` condition.
50
+ *
51
+ * @param trait - The NPC's CharacterModelTrait
52
+ * @param npcId - The NPC entity ID
53
+ * @param turn - Current turn number
54
+ * @returns Array of hallucination events (may be empty)
55
+ */
56
+ export declare function injectHallucinations(trait: CharacterModelTrait, npcId: EntityId, turn: number): ISemanticEvent[];
57
+ /**
58
+ * Process an event observed by an NPC through the character model.
59
+ *
60
+ * 1. Checks for CharacterModelTrait (returns early if absent — opt-in).
61
+ * 2. Filters event through cognitive profile perception mode.
62
+ * 3. Adds witnessed fact to knowledge.
63
+ * 4. Applies default state transition rules.
64
+ * 5. Checks lucidity triggers.
65
+ * 6. Injects hallucinated facts (augmented perception).
66
+ * 7. Emits observable behavior events for state changes.
67
+ *
68
+ * @param npc - The NPC entity
69
+ * @param event - The observed event
70
+ * @param world - The world model
71
+ * @param turn - Current turn number
72
+ * @param rules - State transition rules (defaults to DefaultStateTransitions)
73
+ * @returns Array of observable behavior events emitted by state changes
74
+ */
75
+ export declare function observeEvent(npc: IFEntity, event: ISemanticEvent, world: WorldModel, turn: number, rules?: StateTransitionRule[]): ISemanticEvent[];
76
+ //# sourceMappingURL=character-observer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"character-observer.d.ts","sourceRoot":"","sources":["../../../../../../repos/sharpee/packages/stdlib/src/npc/character-observer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EACL,QAAQ,EACR,UAAU,EAEV,mBAAmB,EAGpB,MAAM,sBAAsB,CAAC;AAO9B,6DAA6D;AAC7D,MAAM,WAAW,mBAAmB;IAClC,wDAAwD;IACxD,SAAS,EAAE,MAAM,CAAC;IAClB,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0BAA0B;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,0BAA0B;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,EAAE,mBAAmB,EAcxD,CAAC;AA0BF;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,mBAAmB,EAC1B,KAAK,EAAE,cAAc,GACpB,MAAM,GAAG,MAAM,GAAG,SAAS,CA4B7B;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,mBAAmB,EAC1B,KAAK,EAAE,QAAQ,EACf,IAAI,EAAE,MAAM,GACX,cAAc,EAAE,CAoBlB;AAMD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,QAAQ,EACb,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,MAAM,EACZ,KAAK,GAAE,mBAAmB,EAA4B,GACrD,cAAc,EAAE,CA+FlB"}
@@ -0,0 +1,207 @@
1
+ "use strict";
2
+ /**
3
+ * Character observation handler (ADR-141)
4
+ *
5
+ * Processes events witnessed by NPCs through the cognitive profile filter
6
+ * and updates character model state accordingly.
7
+ *
8
+ * Public interface: observeEvent(), DefaultStateTransitions.
9
+ * Owner context: stdlib / npc
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.DefaultStateTransitions = void 0;
13
+ exports.filterPerception = filterPerception;
14
+ exports.injectHallucinations = injectHallucinations;
15
+ exports.observeEvent = observeEvent;
16
+ const world_model_1 = require("../../world-model/index.js");
17
+ const character_messages_1 = require("./character-messages");
18
+ /**
19
+ * Default state transition rules.
20
+ *
21
+ * Stories can override by providing their own rules array
22
+ * to observeEvent(). These are sensible defaults per ADR-141:
23
+ * violence increases threat, gifts improve disposition, etc.
24
+ */
25
+ exports.DefaultStateTransitions = [
26
+ // Violence
27
+ { eventType: 'npc.attacked', threatDelta: 30, moodValenceDelta: -0.3, moodArousalDelta: 0.3 },
28
+ { eventType: 'if.action.attacking', threatDelta: 20, moodValenceDelta: -0.2, moodArousalDelta: 0.2 },
29
+ { eventType: 'npc.killed', threatDelta: 40, moodValenceDelta: -0.5, moodArousalDelta: 0.4 },
30
+ // Kindness
31
+ { eventType: 'if.action.giving', dispositionDelta: 10, moodValenceDelta: 0.1 },
32
+ // Theft
33
+ { eventType: 'if.action.taking', dispositionDelta: -5 },
34
+ // Speech
35
+ { eventType: 'npc.spoke', moodArousalDelta: 0.05 },
36
+ ];
37
+ // ---------------------------------------------------------------------------
38
+ // Event creation helper
39
+ // ---------------------------------------------------------------------------
40
+ let eventCounter = 0;
41
+ function createCharacterEvent(type, npcId, data) {
42
+ return {
43
+ id: `char_${++eventCounter}_${Date.now()}`,
44
+ type,
45
+ timestamp: Date.now(),
46
+ entities: { actor: npcId },
47
+ data,
48
+ };
49
+ }
50
+ // ---------------------------------------------------------------------------
51
+ // Perception filter
52
+ // ---------------------------------------------------------------------------
53
+ /**
54
+ * Filter an event through the NPC's cognitive profile.
55
+ *
56
+ * @param trait - The NPC's CharacterModelTrait
57
+ * @param event - The incoming event
58
+ * @returns 'pass' if the event should be processed, 'miss' if filtered out,
59
+ * 'amplify' if the event should be processed with heightened impact
60
+ */
61
+ function filterPerception(trait, event) {
62
+ const mode = trait.cognitiveProfile.perception;
63
+ if (mode === 'accurate')
64
+ return 'pass';
65
+ if (mode === 'filtered') {
66
+ const filters = trait.perceptionFilters;
67
+ if (!filters)
68
+ return 'pass';
69
+ const eventType = event.type;
70
+ const eventTags = event.tags ?? [];
71
+ const allTokens = [eventType, ...eventTags];
72
+ // Check misses
73
+ for (const pattern of filters.misses) {
74
+ if (allTokens.some(t => t.includes(pattern)))
75
+ return 'miss';
76
+ }
77
+ // Check amplifies
78
+ for (const pattern of filters.amplifies) {
79
+ if (allTokens.some(t => t.includes(pattern)))
80
+ return 'amplify';
81
+ }
82
+ return 'pass';
83
+ }
84
+ // augmented — events pass through; hallucinations are injected separately
85
+ return 'pass';
86
+ }
87
+ // ---------------------------------------------------------------------------
88
+ // Hallucination injection
89
+ // ---------------------------------------------------------------------------
90
+ /**
91
+ * Inject hallucinated facts for an NPC with augmented perception.
92
+ *
93
+ * Only injects when the NPC's current lucidity state matches
94
+ * the perceived event's `when` condition.
95
+ *
96
+ * @param trait - The NPC's CharacterModelTrait
97
+ * @param npcId - The NPC entity ID
98
+ * @param turn - Current turn number
99
+ * @returns Array of hallucination events (may be empty)
100
+ */
101
+ function injectHallucinations(trait, npcId, turn) {
102
+ if (trait.cognitiveProfile.perception !== 'augmented')
103
+ return [];
104
+ const events = [];
105
+ for (const [topic, perceived] of Object.entries(trait.perceivedEvents)) {
106
+ if (trait.currentLucidityState === perceived.when) {
107
+ // Only inject once — don't re-hallucinate known facts
108
+ if (!trait.knows(topic)) {
109
+ trait.addFact(topic, 'hallucinated', 'certain', turn);
110
+ events.push(createCharacterEvent(character_messages_1.CharacterMessages.HALLUCINATION_ONSET, npcId, { topic, content: perceived.content }));
111
+ }
112
+ }
113
+ }
114
+ return events;
115
+ }
116
+ // ---------------------------------------------------------------------------
117
+ // Main observation handler
118
+ // ---------------------------------------------------------------------------
119
+ /**
120
+ * Process an event observed by an NPC through the character model.
121
+ *
122
+ * 1. Checks for CharacterModelTrait (returns early if absent — opt-in).
123
+ * 2. Filters event through cognitive profile perception mode.
124
+ * 3. Adds witnessed fact to knowledge.
125
+ * 4. Applies default state transition rules.
126
+ * 5. Checks lucidity triggers.
127
+ * 6. Injects hallucinated facts (augmented perception).
128
+ * 7. Emits observable behavior events for state changes.
129
+ *
130
+ * @param npc - The NPC entity
131
+ * @param event - The observed event
132
+ * @param world - The world model
133
+ * @param turn - Current turn number
134
+ * @param rules - State transition rules (defaults to DefaultStateTransitions)
135
+ * @returns Array of observable behavior events emitted by state changes
136
+ */
137
+ function observeEvent(npc, event, world, turn, rules = exports.DefaultStateTransitions) {
138
+ const trait = npc.get(world_model_1.TraitType.CHARACTER_MODEL);
139
+ if (!trait)
140
+ return [];
141
+ const emittedEvents = [];
142
+ // 1. Perception filter
143
+ const perception = filterPerception(trait, event);
144
+ if (perception === 'miss')
145
+ return [];
146
+ const amplify = perception === 'amplify' ? 2.0 : 1.0;
147
+ // 2. Add witnessed fact
148
+ const factTopic = event.type;
149
+ if (!trait.knows(factTopic)) {
150
+ trait.addFact(factTopic, 'witnessed', 'certain', turn);
151
+ emittedEvents.push(createCharacterEvent(character_messages_1.CharacterMessages.FACT_LEARNED, npc.id, { topic: factTopic, source: 'witnessed' }));
152
+ }
153
+ // 3. Apply state transition rules
154
+ const previousMood = trait.getMood();
155
+ const previousThreat = trait.getThreat();
156
+ for (const rule of rules) {
157
+ if (rule.eventType !== event.type)
158
+ continue;
159
+ if (rule.threatDelta) {
160
+ trait.adjustThreat(rule.threatDelta * amplify);
161
+ }
162
+ if (rule.moodValenceDelta) {
163
+ trait.adjustMood(rule.moodValenceDelta * amplify, 0);
164
+ }
165
+ if (rule.moodArousalDelta) {
166
+ trait.adjustMood(0, rule.moodArousalDelta * amplify);
167
+ }
168
+ if (rule.dispositionDelta && event.entities.actor) {
169
+ trait.adjustDisposition(event.entities.actor, rule.dispositionDelta * amplify);
170
+ }
171
+ }
172
+ // Emit mood change event if mood word changed
173
+ const newMood = trait.getMood();
174
+ if (newMood !== previousMood) {
175
+ emittedEvents.push(createCharacterEvent(character_messages_1.CharacterMessages.MOOD_CHANGED, npc.id, { from: previousMood, to: newMood }));
176
+ }
177
+ // Emit threat change event if threat word changed
178
+ const newThreat = trait.getThreat();
179
+ if (newThreat !== previousThreat) {
180
+ emittedEvents.push(createCharacterEvent(character_messages_1.CharacterMessages.THREAT_CHANGED, npc.id, { from: previousThreat, to: newThreat }));
181
+ }
182
+ // 4. Check lucidity triggers
183
+ if (trait.lucidityConfig) {
184
+ const previousState = trait.currentLucidityState;
185
+ for (const [triggerName, trigger] of Object.entries(trait.lucidityConfig.triggers)) {
186
+ // Trigger names can reference event types or predicate names
187
+ if (event.type === triggerName || (trait.hasPredicate(triggerName) && trait.evaluate(triggerName))) {
188
+ if (trigger.transition === 'immediate') {
189
+ trait.enterLucidityState(trigger.target);
190
+ }
191
+ // 'next turn' transitions are handled by lucidity decay / tick processing
192
+ // We store them as pending for the next tick cycle
193
+ if (trigger.transition === 'next turn' && trait.currentLucidityState !== trigger.target) {
194
+ trait.enterLucidityState(trigger.target);
195
+ }
196
+ }
197
+ }
198
+ if (trait.currentLucidityState !== previousState) {
199
+ emittedEvents.push(createCharacterEvent(character_messages_1.CharacterMessages.LUCIDITY_SHIFT, npc.id, { from: previousState, to: trait.currentLucidityState }));
200
+ }
201
+ }
202
+ // 5. Inject hallucinations (augmented perception)
203
+ const hallucinationEvents = injectHallucinations(trait, npc.id, turn);
204
+ emittedEvents.push(...hallucinationEvents);
205
+ return emittedEvents;
206
+ }
207
+ //# sourceMappingURL=character-observer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"character-observer.js","sourceRoot":"","sources":["../../../../../../../repos/sharpee/packages/stdlib/src/npc/character-observer.ts"],"names":[],"mappings":"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"}
package/npc/index.d.ts CHANGED
@@ -5,6 +5,9 @@
5
5
  */
6
6
  export * from './types';
7
7
  export * from './npc-messages';
8
- export { NpcService, createNpcService, registerNpcCombatResolver, clearNpcCombatResolver, type INpcService, type NpcCombatResolver, } from './npc-service';
8
+ export * from './character-messages';
9
+ export { NpcService, createNpcService, registerNpcCombatResolver, clearNpcCombatResolver, type INpcService, type NpcCombatResolver, type NpcTickContext, type NpcTickPhase, } from './npc-service';
10
+ export { observeEvent, filterPerception, injectHallucinations, DefaultStateTransitions, type StateTransitionRule, } from './character-observer';
11
+ export { processLucidityDecay, enterLucidityWindow, DECAY_RATE_TURNS, } from './lucidity-decay';
9
12
  export { guardBehavior, passiveBehavior, createWandererBehavior, createFollowerBehavior, createPatrolBehavior, } from './behaviors';
10
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../repos/sharpee/packages/stdlib/src/npc/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,cAAc,SAAS,CAAC;AAGxB,cAAc,gBAAgB,CAAC;AAG/B,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,yBAAyB,EACzB,sBAAsB,EACtB,KAAK,WAAW,EAChB,KAAK,iBAAiB,GACvB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,aAAa,EACb,eAAe,EACf,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../repos/sharpee/packages/stdlib/src/npc/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,cAAc,SAAS,CAAC;AAGxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AAGrC,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,yBAAyB,EACzB,sBAAsB,EACtB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,YAAY,GAClB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,uBAAuB,EACvB,KAAK,mBAAmB,GACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,aAAa,EACb,eAAe,EACf,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,aAAa,CAAC"}
package/npc/index.js CHANGED
@@ -19,17 +19,28 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
19
19
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
20
20
  };
21
21
  Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.createPatrolBehavior = exports.createFollowerBehavior = exports.createWandererBehavior = exports.passiveBehavior = exports.guardBehavior = exports.clearNpcCombatResolver = exports.registerNpcCombatResolver = exports.createNpcService = exports.NpcService = void 0;
22
+ exports.createPatrolBehavior = exports.createFollowerBehavior = exports.createWandererBehavior = exports.passiveBehavior = exports.guardBehavior = exports.DECAY_RATE_TURNS = exports.enterLucidityWindow = exports.processLucidityDecay = exports.DefaultStateTransitions = exports.injectHallucinations = exports.filterPerception = exports.observeEvent = exports.clearNpcCombatResolver = exports.registerNpcCombatResolver = exports.createNpcService = exports.NpcService = void 0;
23
23
  // Types
24
24
  __exportStar(require("./types"), exports);
25
25
  // Message IDs
26
26
  __exportStar(require("./npc-messages"), exports);
27
+ __exportStar(require("./character-messages"), exports);
27
28
  // Service
28
29
  var npc_service_1 = require("./npc-service");
29
30
  Object.defineProperty(exports, "NpcService", { enumerable: true, get: function () { return npc_service_1.NpcService; } });
30
31
  Object.defineProperty(exports, "createNpcService", { enumerable: true, get: function () { return npc_service_1.createNpcService; } });
31
32
  Object.defineProperty(exports, "registerNpcCombatResolver", { enumerable: true, get: function () { return npc_service_1.registerNpcCombatResolver; } });
32
33
  Object.defineProperty(exports, "clearNpcCombatResolver", { enumerable: true, get: function () { return npc_service_1.clearNpcCombatResolver; } });
34
+ // Character model observation and lucidity (ADR-141)
35
+ var character_observer_1 = require("./character-observer");
36
+ Object.defineProperty(exports, "observeEvent", { enumerable: true, get: function () { return character_observer_1.observeEvent; } });
37
+ Object.defineProperty(exports, "filterPerception", { enumerable: true, get: function () { return character_observer_1.filterPerception; } });
38
+ Object.defineProperty(exports, "injectHallucinations", { enumerable: true, get: function () { return character_observer_1.injectHallucinations; } });
39
+ Object.defineProperty(exports, "DefaultStateTransitions", { enumerable: true, get: function () { return character_observer_1.DefaultStateTransitions; } });
40
+ var lucidity_decay_1 = require("./lucidity-decay");
41
+ Object.defineProperty(exports, "processLucidityDecay", { enumerable: true, get: function () { return lucidity_decay_1.processLucidityDecay; } });
42
+ Object.defineProperty(exports, "enterLucidityWindow", { enumerable: true, get: function () { return lucidity_decay_1.enterLucidityWindow; } });
43
+ Object.defineProperty(exports, "DECAY_RATE_TURNS", { enumerable: true, get: function () { return lucidity_decay_1.DECAY_RATE_TURNS; } });
33
44
  // Standard behaviors
34
45
  var behaviors_1 = require("./behaviors");
35
46
  Object.defineProperty(exports, "guardBehavior", { enumerable: true, get: function () { return behaviors_1.guardBehavior; } });
package/npc/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../repos/sharpee/packages/stdlib/src/npc/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;AAEH,QAAQ;AACR,0CAAwB;AAExB,cAAc;AACd,iDAA+B;AAE/B,UAAU;AACV,6CAOuB;AANrB,yGAAA,UAAU,OAAA;AACV,+GAAA,gBAAgB,OAAA;AAChB,wHAAA,yBAAyB,OAAA;AACzB,qHAAA,sBAAsB,OAAA;AAKxB,qBAAqB;AACrB,yCAMqB;AALnB,0GAAA,aAAa,OAAA;AACb,4GAAA,eAAe,OAAA;AACf,mHAAA,sBAAsB,OAAA;AACtB,mHAAA,sBAAsB,OAAA;AACtB,iHAAA,oBAAoB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../repos/sharpee/packages/stdlib/src/npc/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;AAEH,QAAQ;AACR,0CAAwB;AAExB,cAAc;AACd,iDAA+B;AAC/B,uDAAqC;AAErC,UAAU;AACV,6CASuB;AARrB,yGAAA,UAAU,OAAA;AACV,+GAAA,gBAAgB,OAAA;AAChB,wHAAA,yBAAyB,OAAA;AACzB,qHAAA,sBAAsB,OAAA;AAOxB,qDAAqD;AACrD,2DAM8B;AAL5B,kHAAA,YAAY,OAAA;AACZ,sHAAA,gBAAgB,OAAA;AAChB,0HAAA,oBAAoB,OAAA;AACpB,6HAAA,uBAAuB,OAAA;AAGzB,mDAI0B;AAHxB,sHAAA,oBAAoB,OAAA;AACpB,qHAAA,mBAAmB,OAAA;AACnB,kHAAA,gBAAgB,OAAA;AAGlB,qBAAqB;AACrB,yCAMqB;AALnB,0GAAA,aAAa,OAAA;AACb,4GAAA,eAAe,OAAA;AACf,mHAAA,sBAAsB,OAAA;AACtB,mHAAA,sBAAsB,OAAA;AACtB,iHAAA,oBAAoB,OAAA"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Lucidity decay processing (ADR-141)
3
+ *
4
+ * End-of-turn processing for NPC lucidity windows.
5
+ * When an NPC is in a lucid window with no sustaining trigger active,
6
+ * lucidity decays and eventually returns to baseline.
7
+ *
8
+ * Public interface: processLucidityDecay(), DECAY_RATE_TURNS.
9
+ * Owner context: stdlib / npc
10
+ */
11
+ import { ISemanticEvent } from "../../core/index";
12
+ import { IFEntity, WorldModel, CharacterModelTrait, DecayRate } from "../../world-model/index";
13
+ /**
14
+ * Maps decay rate words to number of turns before baseline is restored.
15
+ * These are the window durations when no sustaining trigger is active.
16
+ */
17
+ export declare const DECAY_RATE_TURNS: Record<DecayRate, number>;
18
+ /**
19
+ * Process end-of-turn lucidity decay for a single NPC.
20
+ *
21
+ * If the NPC has a CharacterModelTrait with an active lucidity window,
22
+ * decrements the window counter. When it reaches zero, the cognitive
23
+ * profile returns to baseline and a LUCIDITY_BASELINE_RESTORED event
24
+ * is emitted.
25
+ *
26
+ * If no lucidity config or no active window, returns empty array.
27
+ *
28
+ * @param npc - The NPC entity
29
+ * @param world - The world model (unused in current impl, reserved for future)
30
+ * @param turn - Current turn number (unused in current impl, reserved for future)
31
+ * @returns Array of events emitted (baseline restored, or empty)
32
+ */
33
+ export declare function processLucidityDecay(npc: IFEntity, world: WorldModel, turn: number): ISemanticEvent[];
34
+ /**
35
+ * Initialize a lucidity window with the appropriate turn count
36
+ * based on the NPC's configured decay rate.
37
+ *
38
+ * Call this when entering a lucidity state via a trigger, so the
39
+ * window has the correct duration based on decayRate.
40
+ *
41
+ * @param trait - The NPC's CharacterModelTrait
42
+ * @param targetState - The lucidity state to enter
43
+ */
44
+ export declare function enterLucidityWindow(trait: CharacterModelTrait, targetState: string): void;
45
+ //# sourceMappingURL=lucidity-decay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lucidity-decay.d.ts","sourceRoot":"","sources":["../../../../../../repos/sharpee/packages/stdlib/src/npc/lucidity-decay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,cAAc,EAAY,MAAM,eAAe,CAAC;AACzD,OAAO,EACL,QAAQ,EACR,UAAU,EAEV,mBAAmB,EACnB,SAAS,EACV,MAAM,sBAAsB,CAAC;AAO9B;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAItD,CAAC;AA0BF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,QAAQ,EACb,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,MAAM,GACX,cAAc,EAAE,CAsBlB;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,mBAAmB,EAC1B,WAAW,EAAE,MAAM,GAClB,IAAI,CAQN"}
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ /**
3
+ * Lucidity decay processing (ADR-141)
4
+ *
5
+ * End-of-turn processing for NPC lucidity windows.
6
+ * When an NPC is in a lucid window with no sustaining trigger active,
7
+ * lucidity decays and eventually returns to baseline.
8
+ *
9
+ * Public interface: processLucidityDecay(), DECAY_RATE_TURNS.
10
+ * Owner context: stdlib / npc
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.DECAY_RATE_TURNS = void 0;
14
+ exports.processLucidityDecay = processLucidityDecay;
15
+ exports.enterLucidityWindow = enterLucidityWindow;
16
+ const world_model_1 = require("../../world-model/index.js");
17
+ const character_messages_1 = require("./character-messages");
18
+ // ---------------------------------------------------------------------------
19
+ // Decay rate mapping
20
+ // ---------------------------------------------------------------------------
21
+ /**
22
+ * Maps decay rate words to number of turns before baseline is restored.
23
+ * These are the window durations when no sustaining trigger is active.
24
+ */
25
+ exports.DECAY_RATE_TURNS = {
26
+ slow: 8,
27
+ moderate: 4,
28
+ fast: 2,
29
+ };
30
+ // ---------------------------------------------------------------------------
31
+ // Event helper
32
+ // ---------------------------------------------------------------------------
33
+ let decayEventCounter = 0;
34
+ function createDecayEvent(type, npcId, data) {
35
+ return {
36
+ id: `decay_${++decayEventCounter}_${Date.now()}`,
37
+ type,
38
+ timestamp: Date.now(),
39
+ entities: { actor: npcId },
40
+ data,
41
+ };
42
+ }
43
+ // ---------------------------------------------------------------------------
44
+ // Main decay function
45
+ // ---------------------------------------------------------------------------
46
+ /**
47
+ * Process end-of-turn lucidity decay for a single NPC.
48
+ *
49
+ * If the NPC has a CharacterModelTrait with an active lucidity window,
50
+ * decrements the window counter. When it reaches zero, the cognitive
51
+ * profile returns to baseline and a LUCIDITY_BASELINE_RESTORED event
52
+ * is emitted.
53
+ *
54
+ * If no lucidity config or no active window, returns empty array.
55
+ *
56
+ * @param npc - The NPC entity
57
+ * @param world - The world model (unused in current impl, reserved for future)
58
+ * @param turn - Current turn number (unused in current impl, reserved for future)
59
+ * @returns Array of events emitted (baseline restored, or empty)
60
+ */
61
+ function processLucidityDecay(npc, world, turn) {
62
+ const trait = npc.get(world_model_1.TraitType.CHARACTER_MODEL);
63
+ if (!trait)
64
+ return [];
65
+ if (!trait.lucidityConfig)
66
+ return [];
67
+ // No active window
68
+ if (trait.lucidityWindowTurns <= 0)
69
+ return [];
70
+ const previousState = trait.currentLucidityState;
71
+ const expired = trait.decayLucidity();
72
+ if (expired) {
73
+ return [
74
+ createDecayEvent(character_messages_1.CharacterMessages.LUCIDITY_BASELINE_RESTORED, npc.id, { from: previousState, to: trait.currentLucidityState }),
75
+ ];
76
+ }
77
+ return [];
78
+ }
79
+ /**
80
+ * Initialize a lucidity window with the appropriate turn count
81
+ * based on the NPC's configured decay rate.
82
+ *
83
+ * Call this when entering a lucidity state via a trigger, so the
84
+ * window has the correct duration based on decayRate.
85
+ *
86
+ * @param trait - The NPC's CharacterModelTrait
87
+ * @param targetState - The lucidity state to enter
88
+ */
89
+ function enterLucidityWindow(trait, targetState) {
90
+ if (!trait.lucidityConfig) {
91
+ trait.enterLucidityState(targetState);
92
+ return;
93
+ }
94
+ const turns = exports.DECAY_RATE_TURNS[trait.lucidityConfig.decayRate];
95
+ trait.enterLucidityState(targetState, turns);
96
+ }
97
+ //# sourceMappingURL=lucidity-decay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lucidity-decay.js","sourceRoot":"","sources":["../../../../../../../repos/sharpee/packages/stdlib/src/npc/lucidity-decay.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AAiEH,oDA0BC;AAYD,kDAWC;AA/GD,sDAM8B;AAC9B,6DAAyD;AAEzD,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E;;;GAGG;AACU,QAAA,gBAAgB,GAA8B;IACzD,IAAI,EAAE,CAAC;IACP,QAAQ,EAAE,CAAC;IACX,IAAI,EAAE,CAAC;CACR,CAAC;AAEF,8EAA8E;AAC9E,eAAe;AACf,8EAA8E;AAE9E,IAAI,iBAAiB,GAAG,CAAC,CAAC;AAE1B,SAAS,gBAAgB,CACvB,IAAY,EACZ,KAAe,EACf,IAA6B;IAE7B,OAAO;QACL,EAAE,EAAE,SAAS,EAAE,iBAAiB,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE;QAChD,IAAI;QACJ,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,QAAQ,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;QAC1B,IAAI;KACL,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E;;;;;;;;;;;;;;GAcG;AACH,SAAgB,oBAAoB,CAClC,GAAa,EACb,KAAiB,EACjB,IAAY;IAEZ,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,uBAAS,CAAC,eAAe,CAAoC,CAAC;IACpF,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,IAAI,CAAC,KAAK,CAAC,cAAc;QAAE,OAAO,EAAE,CAAC;IAErC,mBAAmB;IACnB,IAAI,KAAK,CAAC,mBAAmB,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAE9C,MAAM,aAAa,GAAG,KAAK,CAAC,oBAAoB,CAAC;IACjD,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;IAEtC,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO;YACL,gBAAgB,CACd,sCAAiB,CAAC,0BAA0B,EAC5C,GAAG,CAAC,EAAE,EACN,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,KAAK,CAAC,oBAAoB,EAAE,CACxD;SACF,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,mBAAmB,CACjC,KAA0B,EAC1B,WAAmB;IAEnB,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;QAC1B,KAAK,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;QACtC,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG,wBAAgB,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAC/D,KAAK,CAAC,kBAAkB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AAC/C,CAAC"}
@@ -6,6 +6,11 @@
6
6
  import { ISemanticEvent, EntityId, SeededRandom } from "../../core/index";
7
7
  import { IFEntity, WorldModel } from "../../world-model/index";
8
8
  import { NpcBehavior } from './types';
9
+ /**
10
+ * A tick phase handler that runs during NPC turn processing.
11
+ * Registered by higher-level packages (e.g., @sharpee/character).
12
+ */
13
+ export type NpcTickPhase = (npcs: IFEntity[], context: NpcTickContext) => ISemanticEvent[];
9
14
  /**
10
15
  * NPC Combat Resolver function type.
11
16
  *
@@ -47,6 +52,8 @@ export interface INpcService {
47
52
  removeBehavior(id: string): void;
48
53
  /** Get a behavior by ID */
49
54
  getBehavior(id: string): NpcBehavior | undefined;
55
+ /** Register a tick phase handler (ADR-142/144/145/146) */
56
+ registerTickPhase(name: string, handler: NpcTickPhase): void;
50
57
  /** Execute the NPC turn phase */
51
58
  tick(context: NpcTickContext): ISemanticEvent[];
52
59
  /** Notify NPCs that player entered a room */
@@ -63,9 +70,18 @@ export interface INpcService {
63
70
  */
64
71
  export declare class NpcService implements INpcService {
65
72
  private behaviors;
73
+ private readonly tickPhases;
66
74
  registerBehavior(behavior: NpcBehavior): void;
67
75
  removeBehavior(id: string): void;
68
76
  getBehavior(id: string): NpcBehavior | undefined;
77
+ /**
78
+ * Register a tick phase handler (ADR-142/144/145/146).
79
+ * Phases run in registration order after behavior onTurn processing.
80
+ *
81
+ * @param name - Phase name for debugging
82
+ * @param handler - Function called with active NPCs and tick context
83
+ */
84
+ registerTickPhase(name: string, handler: NpcTickPhase): void;
69
85
  /**
70
86
  * Execute the NPC turn phase
71
87
  */
@@ -1 +1 @@
1
- {"version":3,"file":"npc-service.d.ts","sourceRoot":"","sources":["../../../../../../repos/sharpee/packages/stdlib/src/npc/npc-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"npc-service.d.ts","sourceRoot":"","sources":["../../../../../../repos/sharpee/packages/stdlib/src/npc/npc-service.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@ exports.clearNpcCombatResolver = clearNpcCombatResolver;
11
11
  exports.createNpcService = createNpcService;
12
12
  const world_model_1 = require("../../world-model/index.js");
13
13
  const npc_messages_1 = require("./npc-messages");
14
+ const lucidity_decay_1 = require("./lucidity-decay");
14
15
  /**
15
16
  * Module-level NPC combat resolver. Set via registerNpcCombatResolver().
16
17
  * Uses globalThis to share across module boundaries (same pattern as interceptor registry).
@@ -59,6 +60,7 @@ function createEvent(type, data, npcId) {
59
60
  */
60
61
  class NpcService {
61
62
  behaviors = new Map();
63
+ tickPhases = [];
62
64
  registerBehavior(behavior) {
63
65
  this.behaviors.set(behavior.id, behavior);
64
66
  }
@@ -68,6 +70,16 @@ class NpcService {
68
70
  getBehavior(id) {
69
71
  return this.behaviors.get(id);
70
72
  }
73
+ /**
74
+ * Register a tick phase handler (ADR-142/144/145/146).
75
+ * Phases run in registration order after behavior onTurn processing.
76
+ *
77
+ * @param name - Phase name for debugging
78
+ * @param handler - Function called with active NPCs and tick context
79
+ */
80
+ registerTickPhase(name, handler) {
81
+ this.tickPhases.push({ name, handler });
82
+ }
71
83
  /**
72
84
  * Execute the NPC turn phase
73
85
  */
@@ -91,6 +103,16 @@ class NpcService {
91
103
  const actions = behavior.onTurn(npcContext);
92
104
  const actionEvents = this.executeActions(npc, actions, world, random);
93
105
  events.push(...actionEvents);
106
+ // Process lucidity decay for NPCs with character model (ADR-141)
107
+ if (npc.has(world_model_1.TraitType.CHARACTER_MODEL)) {
108
+ const decayEvents = (0, lucidity_decay_1.processLucidityDecay)(npc, world, turn);
109
+ events.push(...decayEvents);
110
+ }
111
+ }
112
+ // Registered tick phases (ADR-142/144/145/146)
113
+ for (const phase of this.tickPhases) {
114
+ const phaseEvents = phase.handler(npcs, context);
115
+ events.push(...phaseEvents);
94
116
  }
95
117
  return events;
96
118
  }
@@ -1 +1 @@
1
- {"version":3,"file":"npc-service.js","sourceRoot":"","sources":["../../../../../../../repos/sharpee/packages/stdlib/src/npc/npc-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"npc-service.js","sourceRoot":"","sources":["../../../../../../../repos/sharpee/packages/stdlib/src/npc/npc-service.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sharpee/stdlib",
3
- "version": "0.9.105",
3
+ "version": "0.9.107",
4
4
  "description": "Standard library for Sharpee IF Platform - actions, commands, and game mechanics",
5
5
  "main": "./index.js",
6
6
  "types": "./index.d.ts",
@@ -12,11 +12,11 @@
12
12
  }
13
13
  },
14
14
  "dependencies": {
15
- "@sharpee/core": "^0.9.105",
16
- "@sharpee/if-domain": "^0.9.105",
17
- "@sharpee/if-services": "^0.9.105",
18
- "@sharpee/lang-en-us": "^0.9.105",
19
- "@sharpee/world-model": "^0.9.105"
15
+ "@sharpee/core": "^0.9.107",
16
+ "@sharpee/if-domain": "^0.9.107",
17
+ "@sharpee/if-services": "^0.9.107",
18
+ "@sharpee/lang-en-us": "^0.9.107",
19
+ "@sharpee/world-model": "^0.9.107"
20
20
  },
21
21
  "keywords": [
22
22
  "interactive-fiction",