@sharpee/character 0.9.106 → 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.
Files changed (137) hide show
  1. package/apply.d.ts +29 -7
  2. package/apply.d.ts.map +1 -1
  3. package/apply.js +15 -7
  4. package/apply.js.map +1 -1
  5. package/character-builder.d.ts +67 -4
  6. package/character-builder.d.ts.map +1 -1
  7. package/character-builder.js +116 -7
  8. package/character-builder.js.map +1 -1
  9. package/conversation/acl.d.ts +62 -0
  10. package/conversation/acl.d.ts.map +1 -0
  11. package/conversation/acl.js +117 -0
  12. package/conversation/acl.js.map +1 -0
  13. package/conversation/builder.d.ts +247 -0
  14. package/conversation/builder.d.ts.map +1 -0
  15. package/conversation/builder.js +324 -0
  16. package/conversation/builder.js.map +1 -0
  17. package/conversation/constraint-evaluator.d.ts +147 -0
  18. package/conversation/constraint-evaluator.d.ts.map +1 -0
  19. package/conversation/constraint-evaluator.js +247 -0
  20. package/conversation/constraint-evaluator.js.map +1 -0
  21. package/conversation/conversation-messages.d.ts +56 -0
  22. package/conversation/conversation-messages.d.ts.map +1 -0
  23. package/conversation/conversation-messages.js +69 -0
  24. package/conversation/conversation-messages.js.map +1 -0
  25. package/conversation/dialogue-extension.d.ts +87 -0
  26. package/conversation/dialogue-extension.d.ts.map +1 -0
  27. package/conversation/dialogue-extension.js +302 -0
  28. package/conversation/dialogue-extension.js.map +1 -0
  29. package/conversation/dialogue-types.d.ts +71 -0
  30. package/conversation/dialogue-types.d.ts.map +1 -0
  31. package/conversation/dialogue-types.js +13 -0
  32. package/conversation/dialogue-types.js.map +1 -0
  33. package/conversation/index.d.ts +19 -0
  34. package/conversation/index.d.ts.map +1 -0
  35. package/conversation/index.js +37 -0
  36. package/conversation/index.js.map +1 -0
  37. package/conversation/lifecycle.d.ts +212 -0
  38. package/conversation/lifecycle.d.ts.map +1 -0
  39. package/conversation/lifecycle.js +348 -0
  40. package/conversation/lifecycle.js.map +1 -0
  41. package/conversation/response-types.d.ts +98 -0
  42. package/conversation/response-types.d.ts.map +1 -0
  43. package/conversation/response-types.js +30 -0
  44. package/conversation/response-types.js.map +1 -0
  45. package/conversation/topic-registry.d.ts +130 -0
  46. package/conversation/topic-registry.d.ts.map +1 -0
  47. package/conversation/topic-registry.js +187 -0
  48. package/conversation/topic-registry.js.map +1 -0
  49. package/goals/builder.d.ts +135 -0
  50. package/goals/builder.d.ts.map +1 -0
  51. package/goals/builder.js +193 -0
  52. package/goals/builder.js.map +1 -0
  53. package/goals/goal-activation.d.ts +99 -0
  54. package/goals/goal-activation.d.ts.map +1 -0
  55. package/goals/goal-activation.js +212 -0
  56. package/goals/goal-activation.js.map +1 -0
  57. package/goals/goal-types.d.ts +138 -0
  58. package/goals/goal-types.d.ts.map +1 -0
  59. package/goals/goal-types.js +20 -0
  60. package/goals/goal-types.js.map +1 -0
  61. package/goals/index.d.ts +15 -0
  62. package/goals/index.d.ts.map +1 -0
  63. package/goals/index.js +24 -0
  64. package/goals/index.js.map +1 -0
  65. package/goals/pathfinding.d.ts +67 -0
  66. package/goals/pathfinding.d.ts.map +1 -0
  67. package/goals/pathfinding.js +134 -0
  68. package/goals/pathfinding.js.map +1 -0
  69. package/goals/step-evaluator.d.ts +52 -0
  70. package/goals/step-evaluator.d.ts.map +1 -0
  71. package/goals/step-evaluator.js +153 -0
  72. package/goals/step-evaluator.js.map +1 -0
  73. package/index.d.ts +6 -1
  74. package/index.d.ts.map +1 -1
  75. package/index.js +60 -1
  76. package/index.js.map +1 -1
  77. package/influence/builder.d.ts +136 -0
  78. package/influence/builder.d.ts.map +1 -0
  79. package/influence/builder.js +198 -0
  80. package/influence/builder.js.map +1 -0
  81. package/influence/index.d.ts +16 -0
  82. package/influence/index.d.ts.map +1 -0
  83. package/influence/index.js +25 -0
  84. package/influence/index.js.map +1 -0
  85. package/influence/influence-duration.d.ts +82 -0
  86. package/influence/influence-duration.d.ts.map +1 -0
  87. package/influence/influence-duration.js +148 -0
  88. package/influence/influence-duration.js.map +1 -0
  89. package/influence/influence-evaluator.d.ts +55 -0
  90. package/influence/influence-evaluator.d.ts.map +1 -0
  91. package/influence/influence-evaluator.js +183 -0
  92. package/influence/influence-evaluator.js.map +1 -0
  93. package/influence/influence-messages.d.ts +30 -0
  94. package/influence/influence-messages.d.ts.map +1 -0
  95. package/influence/influence-messages.js +40 -0
  96. package/influence/influence-messages.js.map +1 -0
  97. package/influence/influence-types.d.ts +123 -0
  98. package/influence/influence-types.d.ts.map +1 -0
  99. package/influence/influence-types.js +12 -0
  100. package/influence/influence-types.js.map +1 -0
  101. package/influence/pc-influence.d.ts +38 -0
  102. package/influence/pc-influence.d.ts.map +1 -0
  103. package/influence/pc-influence.js +56 -0
  104. package/influence/pc-influence.js.map +1 -0
  105. package/package.json +4 -3
  106. package/propagation/builder.d.ts +47 -0
  107. package/propagation/builder.d.ts.map +1 -0
  108. package/propagation/builder.js +46 -0
  109. package/propagation/builder.js.map +1 -0
  110. package/propagation/fact-transfer.d.ts +47 -0
  111. package/propagation/fact-transfer.d.ts.map +1 -0
  112. package/propagation/fact-transfer.js +76 -0
  113. package/propagation/fact-transfer.js.map +1 -0
  114. package/propagation/index.d.ts +16 -0
  115. package/propagation/index.d.ts.map +1 -0
  116. package/propagation/index.js +28 -0
  117. package/propagation/index.js.map +1 -0
  118. package/propagation/propagation-evaluator.d.ts +53 -0
  119. package/propagation/propagation-evaluator.d.ts.map +1 -0
  120. package/propagation/propagation-evaluator.js +231 -0
  121. package/propagation/propagation-evaluator.js.map +1 -0
  122. package/propagation/propagation-messages.d.ts +30 -0
  123. package/propagation/propagation-messages.d.ts.map +1 -0
  124. package/propagation/propagation-messages.js +37 -0
  125. package/propagation/propagation-messages.js.map +1 -0
  126. package/propagation/propagation-types.d.ts +100 -0
  127. package/propagation/propagation-types.d.ts.map +1 -0
  128. package/propagation/propagation-types.js +68 -0
  129. package/propagation/propagation-types.js.map +1 -0
  130. package/propagation/visibility.d.ts +46 -0
  131. package/propagation/visibility.d.ts.map +1 -0
  132. package/propagation/visibility.js +79 -0
  133. package/propagation/visibility.js.map +1 -0
  134. package/tick-phases.d.ts +93 -0
  135. package/tick-phases.d.ts.map +1 -0
  136. package/tick-phases.js +433 -0
  137. package/tick-phases.js.map +1 -0
package/apply.d.ts CHANGED
@@ -1,25 +1,47 @@
1
1
  /**
2
- * Apply compiled character data to an entity (ADR-141)
2
+ * Apply compiled character data to an entity (ADR-141, 144, 145, 146)
3
3
  *
4
4
  * Convenience function that creates a CharacterModelTrait from compiled
5
5
  * builder output, registers custom predicates, and adds the trait to
6
- * the entity.
6
+ * the entity. Returns the trait plus any compiled configuration
7
+ * (propagation, goals, movement, influence) for the NPC service.
7
8
  *
8
- * Public interface: applyCharacter.
9
+ * Public interface: applyCharacter, AppliedCharacter.
9
10
  * Owner context: @sharpee/character
10
11
  */
11
12
  import { IFEntity, CharacterModelTrait } from "../world-model/index";
12
13
  import { CompiledCharacter } from './character-builder';
14
+ import { PropagationProfile } from './propagation/propagation-types';
15
+ import { GoalDef, MovementProfile } from './goals/goal-types';
16
+ import { InfluenceDef, ResistanceDef } from './influence/influence-types';
17
+ /**
18
+ * Result of applying a compiled character to an entity.
19
+ * Contains the trait plus any behavior configuration for the NPC service.
20
+ */
21
+ export interface AppliedCharacter {
22
+ /** The CharacterModelTrait added to the entity. */
23
+ trait: CharacterModelTrait;
24
+ /** Propagation profile (ADR-144), if defined. */
25
+ propagationProfile?: PropagationProfile;
26
+ /** Rich goal definitions (ADR-145), if defined. */
27
+ goalDefs?: GoalDef[];
28
+ /** Movement profile (ADR-145), if defined. */
29
+ movementProfile?: MovementProfile;
30
+ /** Influence definitions (ADR-146), if defined. */
31
+ influenceDefs?: InfluenceDef[];
32
+ /** Resistance definitions (ADR-146), if defined. */
33
+ resistanceDefs?: ResistanceDef[];
34
+ }
13
35
  /**
14
36
  * Apply a compiled character to an entity.
15
37
  *
16
38
  * Creates the CharacterModelTrait, registers custom predicates,
17
- * and adds the trait to the entity. Returns the trait for further
18
- * programmatic manipulation if needed.
39
+ * and adds the trait to the entity. Returns the trait plus any
40
+ * compiled behavior configuration for the NPC service.
19
41
  *
20
42
  * @param entity - The NPC entity to apply the character model to
21
43
  * @param compiled - Output of CharacterBuilder.compile()
22
- * @returns The created CharacterModelTrait instance
44
+ * @returns The trait and compiled behavior configuration
23
45
  */
24
- export declare function applyCharacter(entity: IFEntity, compiled: CompiledCharacter): CharacterModelTrait;
46
+ export declare function applyCharacter(entity: IFEntity, compiled: CompiledCharacter): AppliedCharacter;
25
47
  //# sourceMappingURL=apply.d.ts.map
package/apply.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../../../../repos/sharpee/packages/character/src/apply.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,QAAQ,EACR,mBAAmB,EACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,QAAQ,EAChB,QAAQ,EAAE,iBAAiB,GAC1B,mBAAmB,CAYrB"}
1
+ {"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../../../../repos/sharpee/packages/character/src/apply.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACL,QAAQ,EACR,mBAAmB,EACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE1E;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,mDAAmD;IACnD,KAAK,EAAE,mBAAmB,CAAC;IAE3B,iDAAiD;IACjD,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IAExC,mDAAmD;IACnD,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IAErB,8CAA8C;IAC9C,eAAe,CAAC,EAAE,eAAe,CAAC;IAElC,mDAAmD;IACnD,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;IAE/B,oDAAoD;IACpD,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;CAClC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,QAAQ,EAChB,QAAQ,EAAE,iBAAiB,GAC1B,gBAAgB,CAmBlB"}
package/apply.js CHANGED
@@ -1,12 +1,13 @@
1
1
  "use strict";
2
2
  /**
3
- * Apply compiled character data to an entity (ADR-141)
3
+ * Apply compiled character data to an entity (ADR-141, 144, 145, 146)
4
4
  *
5
5
  * Convenience function that creates a CharacterModelTrait from compiled
6
6
  * builder output, registers custom predicates, and adds the trait to
7
- * the entity.
7
+ * the entity. Returns the trait plus any compiled configuration
8
+ * (propagation, goals, movement, influence) for the NPC service.
8
9
  *
9
- * Public interface: applyCharacter.
10
+ * Public interface: applyCharacter, AppliedCharacter.
10
11
  * Owner context: @sharpee/character
11
12
  */
12
13
  Object.defineProperty(exports, "__esModule", { value: true });
@@ -16,12 +17,12 @@ const world_model_1 = require("../world-model/index.js");
16
17
  * Apply a compiled character to an entity.
17
18
  *
18
19
  * Creates the CharacterModelTrait, registers custom predicates,
19
- * and adds the trait to the entity. Returns the trait for further
20
- * programmatic manipulation if needed.
20
+ * and adds the trait to the entity. Returns the trait plus any
21
+ * compiled behavior configuration for the NPC service.
21
22
  *
22
23
  * @param entity - The NPC entity to apply the character model to
23
24
  * @param compiled - Output of CharacterBuilder.compile()
24
- * @returns The created CharacterModelTrait instance
25
+ * @returns The trait and compiled behavior configuration
25
26
  */
26
27
  function applyCharacter(entity, compiled) {
27
28
  const trait = new world_model_1.CharacterModelTrait(compiled.traitData);
@@ -31,6 +32,13 @@ function applyCharacter(entity, compiled) {
31
32
  }
32
33
  // Add trait to entity
33
34
  entity.add(trait);
34
- return trait;
35
+ return {
36
+ trait,
37
+ propagationProfile: compiled.propagationProfile,
38
+ goalDefs: compiled.goalDefs,
39
+ movementProfile: compiled.movementProfile,
40
+ influenceDefs: compiled.influenceDefs,
41
+ resistanceDefs: compiled.resistanceDefs,
42
+ };
35
43
  }
36
44
  //# sourceMappingURL=apply.js.map
package/apply.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../../../../repos/sharpee/packages/character/src/apply.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;AAmBH,wCAeC;AAhCD,sDAG8B;AAG9B;;;;;;;;;;GAUG;AACH,SAAgB,cAAc,CAC5B,MAAgB,EAChB,QAA2B;IAE3B,MAAM,KAAK,GAAG,IAAI,iCAAmB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAE1D,6BAA6B;IAC7B,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,QAAQ,CAAC,gBAAgB,EAAE,CAAC;QACnD,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,sBAAsB;IACtB,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAElB,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../../../../repos/sharpee/packages/character/src/apply.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;AA8CH,wCAsBC;AAlED,sDAG8B;AA8B9B;;;;;;;;;;GAUG;AACH,SAAgB,cAAc,CAC5B,MAAgB,EAChB,QAA2B;IAE3B,MAAM,KAAK,GAAG,IAAI,iCAAmB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAE1D,6BAA6B;IAC7B,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,QAAQ,CAAC,gBAAgB,EAAE,CAAC;QACnD,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,sBAAsB;IACtB,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAElB,OAAO;QACL,KAAK;QACL,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB;QAC/C,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,eAAe,EAAE,QAAQ,CAAC,eAAe;QACzC,aAAa,EAAE,QAAQ,CAAC,aAAa;QACrC,cAAc,EAAE,QAAQ,CAAC,cAAc;KACxC,CAAC;AACJ,CAAC"}
@@ -11,6 +11,12 @@
11
11
  import { PersonalityExpr, DispositionWord, Mood, ThreatLevel, CognitiveProfile, ConfidenceWord, LucidityConfig, PerceptionFilterConfig, PerceivedEvent, CharacterPredicate, ICharacterModelData } from "../world-model/index";
12
12
  import { CognitivePresetName } from './cognitive-presets';
13
13
  import { VocabularyExtension } from './vocabulary-extension';
14
+ import { PropagationProfile } from './propagation/propagation-types';
15
+ import { PropagationOptions } from './propagation/builder';
16
+ import { GoalDef, MovementProfile } from './goals/goal-types';
17
+ import { GoalBuilder } from './goals/builder';
18
+ import { InfluenceDef, ResistanceDef } from './influence/influence-types';
19
+ import { InfluenceBuilder } from './influence/builder';
14
20
  /** A compiled state mutation triggered by an event or condition. */
15
21
  export interface CompiledTrigger {
16
22
  triggerName: string;
@@ -126,6 +132,13 @@ export declare class CharacterBuilder {
126
132
  private _customPredicates;
127
133
  private _activeTriggerBuilder?;
128
134
  private _vocabExtension?;
135
+ private _propagationProfile?;
136
+ private _movementProfile?;
137
+ private readonly _goalDefs;
138
+ private _activeGoalBuilder?;
139
+ private readonly _influenceDefs;
140
+ private readonly _resistanceDefs;
141
+ private _activeInfluenceBuilder?;
129
142
  /**
130
143
  * Create a new character builder.
131
144
  *
@@ -203,13 +216,19 @@ export declare class CharacterBuilder {
203
216
  resistance?: 'none' | 'reinterprets' | 'ignores';
204
217
  }): CharacterBuilder;
205
218
  /**
206
- * Add a goal with priority.
219
+ * Define a goal with a fluent builder chain.
220
+ * Returns a GoalBuilder; call .done() to return to this builder.
221
+ *
222
+ * For simple goals (legacy compatibility), pass a numeric priority
223
+ * as the second argument.
207
224
  *
208
225
  * @param id - Goal identifier
209
- * @param priority - Numeric priority (higher = more important)
210
- * @returns this for chaining
226
+ * @param priority - Optional numeric priority (legacy shorthand)
227
+ * @returns GoalBuilder for fluent chaining, or this if priority provided
211
228
  */
212
- goal(id: string, priority: number): CharacterBuilder;
229
+ goal(id: string, priority?: number): GoalBuilder<CharacterBuilder> | CharacterBuilder;
230
+ /** @internal Finalize any pending goal builder that wasn't explicitly done(). */
231
+ private _finalizePendingGoalBuilder;
213
232
  /**
214
233
  * Configure lucidity windows.
215
234
  *
@@ -260,6 +279,40 @@ export declare class CharacterBuilder {
260
279
  * @returns this for chaining
261
280
  */
262
281
  withVocabulary(ext: VocabularyExtension): CharacterBuilder;
282
+ /**
283
+ * Define propagation behavior for this NPC.
284
+ *
285
+ * @param opts - Propagation profile options
286
+ * @returns this for chaining
287
+ */
288
+ propagation(opts: PropagationOptions): CharacterBuilder;
289
+ /**
290
+ * Define the NPC's movement profile — which rooms they know and can access.
291
+ *
292
+ * @param opts - Movement profile (knows, access)
293
+ * @returns this for chaining
294
+ */
295
+ movement(opts: MovementProfile): CharacterBuilder;
296
+ /**
297
+ * Define an influence this NPC exerts.
298
+ * Returns an InfluenceBuilder; call .done() to return to this builder.
299
+ *
300
+ * @param name - Author-defined influence name (e.g., 'seduction', 'intimidation')
301
+ * @returns InfluenceBuilder for fluent chaining
302
+ */
303
+ influence(name: string): InfluenceBuilder<CharacterBuilder>;
304
+ /**
305
+ * Declare resistance to an influence.
306
+ *
307
+ * @param influenceName - The influence name to resist
308
+ * @param opts - Optional except conditions for conditional vulnerability
309
+ * @returns this for chaining
310
+ */
311
+ resistsInfluence(influenceName: string, opts?: {
312
+ except: string[];
313
+ }): CharacterBuilder;
314
+ /** @internal Finalize any pending influence builder. */
315
+ private _finalizePendingInfluenceBuilder;
263
316
  /**
264
317
  * Compile the builder state into CharacterModelTrait constructor data,
265
318
  * compiled event handlers, and custom predicates.
@@ -278,5 +331,15 @@ export interface CompiledCharacter {
278
331
  triggers: CompiledTrigger[];
279
332
  /** Custom predicates to register on the trait after construction. */
280
333
  customPredicates: Map<string, CharacterPredicate>;
334
+ /** Propagation profile (ADR-144). */
335
+ propagationProfile?: PropagationProfile;
336
+ /** Movement profile (ADR-145). */
337
+ movementProfile?: MovementProfile;
338
+ /** Rich goal definitions (ADR-145). */
339
+ goalDefs?: GoalDef[];
340
+ /** Influence definitions (ADR-146). */
341
+ influenceDefs?: InfluenceDef[];
342
+ /** Resistance definitions (ADR-146). */
343
+ resistanceDefs?: ResistanceDef[];
281
344
  }
282
345
  //# sourceMappingURL=character-builder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"character-builder.d.ts","sourceRoot":"","sources":["../../../../../repos/sharpee/packages/character/src/character-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"character-builder.d.ts","sourceRoot":"","sources":["../../../../../repos/sharpee/packages/character/src/character-builder.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
13
13
  exports.CharacterBuilder = exports.TriggerBuilder = void 0;
14
14
  const world_model_1 = require("../world-model/index.js");
15
15
  const cognitive_presets_1 = require("./cognitive-presets");
16
+ const builder_1 = require("./propagation/builder");
17
+ const builder_2 = require("./goals/builder");
18
+ const builder_3 = require("./influence/builder");
16
19
  /**
17
20
  * Fluent chain for defining state transitions on triggers.
18
21
  *
@@ -136,6 +139,13 @@ class CharacterBuilder {
136
139
  _customPredicates = new Map();
137
140
  _activeTriggerBuilder;
138
141
  _vocabExtension;
142
+ _propagationProfile;
143
+ _movementProfile;
144
+ _goalDefs = [];
145
+ _activeGoalBuilder;
146
+ _influenceDefs = [];
147
+ _resistanceDefs = [];
148
+ _activeInfluenceBuilder;
139
149
  /**
140
150
  * Create a new character builder.
141
151
  *
@@ -283,18 +293,40 @@ class CharacterBuilder {
283
293
  return this;
284
294
  }
285
295
  // =========================================================================
286
- // Goals
296
+ // Goals (ADR-145)
287
297
  // =========================================================================
288
298
  /**
289
- * Add a goal with priority.
299
+ * Define a goal with a fluent builder chain.
300
+ * Returns a GoalBuilder; call .done() to return to this builder.
301
+ *
302
+ * For simple goals (legacy compatibility), pass a numeric priority
303
+ * as the second argument.
290
304
  *
291
305
  * @param id - Goal identifier
292
- * @param priority - Numeric priority (higher = more important)
293
- * @returns this for chaining
306
+ * @param priority - Optional numeric priority (legacy shorthand)
307
+ * @returns GoalBuilder for fluent chaining, or this if priority provided
294
308
  */
295
309
  goal(id, priority) {
296
- this._goals.set(id, priority);
297
- return this;
310
+ if (priority !== undefined) {
311
+ // Legacy shorthand: .goal(id, priority)
312
+ this._goals.set(id, priority);
313
+ return this;
314
+ }
315
+ // Finalize any pending goal builder
316
+ this._finalizePendingGoalBuilder();
317
+ const gb = new builder_2.GoalBuilder(id, this, (def) => {
318
+ this._goalDefs.push(def);
319
+ this._activeGoalBuilder = undefined;
320
+ });
321
+ this._activeGoalBuilder = gb;
322
+ return gb;
323
+ }
324
+ /** @internal Finalize any pending goal builder that wasn't explicitly done(). */
325
+ _finalizePendingGoalBuilder() {
326
+ if (this._activeGoalBuilder) {
327
+ this._goalDefs.push(this._activeGoalBuilder._buildDef());
328
+ this._activeGoalBuilder = undefined;
329
+ }
298
330
  }
299
331
  // =========================================================================
300
332
  // Lucidity
@@ -392,6 +424,76 @@ class CharacterBuilder {
392
424
  return this;
393
425
  }
394
426
  // =========================================================================
427
+ // Propagation (ADR-144)
428
+ // =========================================================================
429
+ /**
430
+ * Define propagation behavior for this NPC.
431
+ *
432
+ * @param opts - Propagation profile options
433
+ * @returns this for chaining
434
+ */
435
+ propagation(opts) {
436
+ this._propagationProfile = (0, builder_1.buildPropagationProfile)(opts);
437
+ return this;
438
+ }
439
+ // =========================================================================
440
+ // Movement (ADR-145)
441
+ // =========================================================================
442
+ /**
443
+ * Define the NPC's movement profile — which rooms they know and can access.
444
+ *
445
+ * @param opts - Movement profile (knows, access)
446
+ * @returns this for chaining
447
+ */
448
+ movement(opts) {
449
+ this._movementProfile = {
450
+ knows: opts.knows === 'all' ? 'all' : [...opts.knows],
451
+ access: opts.access === 'all' ? 'all' : [...opts.access],
452
+ };
453
+ return this;
454
+ }
455
+ // =========================================================================
456
+ // Influence (ADR-146)
457
+ // =========================================================================
458
+ /**
459
+ * Define an influence this NPC exerts.
460
+ * Returns an InfluenceBuilder; call .done() to return to this builder.
461
+ *
462
+ * @param name - Author-defined influence name (e.g., 'seduction', 'intimidation')
463
+ * @returns InfluenceBuilder for fluent chaining
464
+ */
465
+ influence(name) {
466
+ // Finalize any pending influence builder
467
+ this._finalizePendingInfluenceBuilder();
468
+ const ib = new builder_3.InfluenceBuilder(name, this, (def) => {
469
+ this._influenceDefs.push(def);
470
+ this._activeInfluenceBuilder = undefined;
471
+ });
472
+ this._activeInfluenceBuilder = ib;
473
+ return ib;
474
+ }
475
+ /**
476
+ * Declare resistance to an influence.
477
+ *
478
+ * @param influenceName - The influence name to resist
479
+ * @param opts - Optional except conditions for conditional vulnerability
480
+ * @returns this for chaining
481
+ */
482
+ resistsInfluence(influenceName, opts) {
483
+ this._resistanceDefs.push({
484
+ influenceName,
485
+ except: opts?.except ? [...opts.except] : undefined,
486
+ });
487
+ return this;
488
+ }
489
+ /** @internal Finalize any pending influence builder. */
490
+ _finalizePendingInfluenceBuilder() {
491
+ if (this._activeInfluenceBuilder) {
492
+ this._influenceDefs.push(this._activeInfluenceBuilder._buildDef());
493
+ this._activeInfluenceBuilder = undefined;
494
+ }
495
+ }
496
+ // =========================================================================
395
497
  // Compilation
396
498
  // =========================================================================
397
499
  /**
@@ -401,8 +503,10 @@ class CharacterBuilder {
401
503
  * @returns Compiled character data
402
504
  */
403
505
  compile() {
404
- // Finalize any pending trigger
506
+ // Finalize any pending trigger, goal, or influence builder
405
507
  this._finalizePendingTrigger();
508
+ this._finalizePendingGoalBuilder();
509
+ this._finalizePendingInfluenceBuilder();
406
510
  // Build personality record
407
511
  const personality = {};
408
512
  for (const [trait, value] of this._personality) {
@@ -468,6 +572,11 @@ class CharacterBuilder {
468
572
  traitData,
469
573
  triggers: [...this._triggers],
470
574
  customPredicates,
575
+ propagationProfile: this._propagationProfile,
576
+ movementProfile: this._movementProfile,
577
+ goalDefs: this._goalDefs.length > 0 ? [...this._goalDefs] : undefined,
578
+ influenceDefs: this._influenceDefs.length > 0 ? [...this._influenceDefs] : undefined,
579
+ resistanceDefs: this._resistanceDefs.length > 0 ? [...this._resistanceDefs] : undefined,
471
580
  };
472
581
  }
473
582
  }
@@ -1 +1 @@
1
- {"version":3,"file":"character-builder.js","sourceRoot":"","sources":["../../../../../../repos/sharpee/packages/character/src/character-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"character-builder.js","sourceRoot":"","sources":["../../../../../../repos/sharpee/packages/character/src/character-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Anti-corruption layer for conversation responses (ADR-142)
3
+ *
4
+ * Translates between the character model domain (ResponseCandidate,
5
+ * CharacterModelTrait) and the language layer domain (ResponseIntent,
6
+ * message IDs, mood variants). Neither side couples to the other's
7
+ * internal structure.
8
+ *
9
+ * Public interface: buildResponseIntent, selectMoodVariant,
10
+ * applyCognitiveColoring.
11
+ * Owner context: @sharpee/character / conversation
12
+ */
13
+ import { CharacterModelTrait, Mood, CognitiveProfile } from "../../world-model/index";
14
+ import { ResponseCandidate, ResponseIntent } from './response-types';
15
+ /**
16
+ * Build a ResponseIntent from a selected candidate and the NPC's
17
+ * current character state. This is the primary ACL function — it
18
+ * bridges the constraint evaluation result to the language layer.
19
+ *
20
+ * @param candidate - The selected response candidate
21
+ * @param topic - The resolved topic name
22
+ * @param npcTrait - The NPC's CharacterModelTrait
23
+ * @param context - Optional active conversation context label
24
+ * @returns A fully populated ResponseIntent
25
+ */
26
+ export declare function buildResponseIntent(candidate: ResponseCandidate, topic: string, npcTrait: CharacterModelTrait, context?: string): ResponseIntent;
27
+ /**
28
+ * Select a mood-specific message variant if one exists.
29
+ * Appends a mood suffix to the base message ID.
30
+ *
31
+ * The language layer registers variants like:
32
+ * 'murder-truth-full' (base)
33
+ * 'murder-truth-full.nervous' (mood variant)
34
+ * 'murder-truth-full.panicked' (mood variant)
35
+ *
36
+ * This function produces the variant key. The language layer
37
+ * falls back to the base if the variant isn't registered.
38
+ *
39
+ * @param baseMessageId - The author-assigned message ID
40
+ * @param mood - The NPC's current mood
41
+ * @returns The mood-suffixed message ID
42
+ */
43
+ export declare function selectMoodVariant(baseMessageId: string, mood: Mood): string;
44
+ /**
45
+ * Apply cognitive coloring to a response intent based on the NPC's
46
+ * cognitive profile. This modifies the intent to signal to the
47
+ * language layer how to render the text:
48
+ *
49
+ * - fragmented coherence → broken sentence patterns
50
+ * - drifting coherence → mid-sentence topic shifts
51
+ * - fractured selfModel → detached, third-person references
52
+ * - augmented perception → hallucinatory insertions
53
+ *
54
+ * The language layer uses the coherence field and additional markers
55
+ * on the intent to select the appropriate speech pattern.
56
+ *
57
+ * @param intent - The response intent to color
58
+ * @param profile - The NPC's cognitive profile
59
+ * @returns The colored response intent (may be the same object)
60
+ */
61
+ export declare function applyCognitiveColoring(intent: ResponseIntent, profile: CognitiveProfile): ResponseIntent;
62
+ //# sourceMappingURL=acl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acl.d.ts","sourceRoot":"","sources":["../../../../../../repos/sharpee/packages/character/src/conversation/acl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,mBAAmB,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAMrE;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,iBAAiB,EAC5B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,mBAAmB,EAC7B,OAAO,CAAC,EAAE,MAAM,GACf,cAAc,CA0BhB;AAMD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,CAK3E;AAMD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,gBAAgB,GACxB,cAAc,CAkBhB"}
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ /**
3
+ * Anti-corruption layer for conversation responses (ADR-142)
4
+ *
5
+ * Translates between the character model domain (ResponseCandidate,
6
+ * CharacterModelTrait) and the language layer domain (ResponseIntent,
7
+ * message IDs, mood variants). Neither side couples to the other's
8
+ * internal structure.
9
+ *
10
+ * Public interface: buildResponseIntent, selectMoodVariant,
11
+ * applyCognitiveColoring.
12
+ * Owner context: @sharpee/character / conversation
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.buildResponseIntent = buildResponseIntent;
16
+ exports.selectMoodVariant = selectMoodVariant;
17
+ exports.applyCognitiveColoring = applyCognitiveColoring;
18
+ // ---------------------------------------------------------------------------
19
+ // Response intent construction
20
+ // ---------------------------------------------------------------------------
21
+ /**
22
+ * Build a ResponseIntent from a selected candidate and the NPC's
23
+ * current character state. This is the primary ACL function — it
24
+ * bridges the constraint evaluation result to the language layer.
25
+ *
26
+ * @param candidate - The selected response candidate
27
+ * @param topic - The resolved topic name
28
+ * @param npcTrait - The NPC's CharacterModelTrait
29
+ * @param context - Optional active conversation context label
30
+ * @returns A fully populated ResponseIntent
31
+ */
32
+ function buildResponseIntent(candidate, topic, npcTrait, context) {
33
+ const mood = npcTrait.getMood();
34
+ const coherence = npcTrait.cognitiveProfile.coherence;
35
+ // Resolve params if present
36
+ let resolvedParams;
37
+ if (candidate.params) {
38
+ resolvedParams = {};
39
+ for (const [key, resolver] of Object.entries(candidate.params)) {
40
+ resolvedParams[key] = resolver();
41
+ }
42
+ }
43
+ // Build the base intent
44
+ const intent = {
45
+ action: candidate.action,
46
+ topic,
47
+ messageId: selectMoodVariant(candidate.messageId, mood),
48
+ mood,
49
+ coherence,
50
+ context,
51
+ params: resolvedParams,
52
+ };
53
+ // Apply cognitive coloring
54
+ return applyCognitiveColoring(intent, npcTrait.cognitiveProfile);
55
+ }
56
+ // ---------------------------------------------------------------------------
57
+ // Mood variant selection
58
+ // ---------------------------------------------------------------------------
59
+ /**
60
+ * Select a mood-specific message variant if one exists.
61
+ * Appends a mood suffix to the base message ID.
62
+ *
63
+ * The language layer registers variants like:
64
+ * 'murder-truth-full' (base)
65
+ * 'murder-truth-full.nervous' (mood variant)
66
+ * 'murder-truth-full.panicked' (mood variant)
67
+ *
68
+ * This function produces the variant key. The language layer
69
+ * falls back to the base if the variant isn't registered.
70
+ *
71
+ * @param baseMessageId - The author-assigned message ID
72
+ * @param mood - The NPC's current mood
73
+ * @returns The mood-suffixed message ID
74
+ */
75
+ function selectMoodVariant(baseMessageId, mood) {
76
+ // Calm is the default tone — no suffix needed
77
+ if (mood === 'calm')
78
+ return baseMessageId;
79
+ return `${baseMessageId}.${mood}`;
80
+ }
81
+ // ---------------------------------------------------------------------------
82
+ // Cognitive coloring
83
+ // ---------------------------------------------------------------------------
84
+ /**
85
+ * Apply cognitive coloring to a response intent based on the NPC's
86
+ * cognitive profile. This modifies the intent to signal to the
87
+ * language layer how to render the text:
88
+ *
89
+ * - fragmented coherence → broken sentence patterns
90
+ * - drifting coherence → mid-sentence topic shifts
91
+ * - fractured selfModel → detached, third-person references
92
+ * - augmented perception → hallucinatory insertions
93
+ *
94
+ * The language layer uses the coherence field and additional markers
95
+ * on the intent to select the appropriate speech pattern.
96
+ *
97
+ * @param intent - The response intent to color
98
+ * @param profile - The NPC's cognitive profile
99
+ * @returns The colored response intent (may be the same object)
100
+ */
101
+ function applyCognitiveColoring(intent, profile) {
102
+ // Coherence is already on the intent from buildResponseIntent.
103
+ // Additional cognitive effects are signaled through message ID suffixes
104
+ // that the language layer can check for.
105
+ // Fractured self-model: append marker so language layer can apply
106
+ // third-person detached speech patterns
107
+ if (profile.selfModel === 'fractured') {
108
+ intent.messageId = `${intent.messageId}#detached`;
109
+ }
110
+ // Augmented perception: append marker so language layer can insert
111
+ // hallucinatory details
112
+ if (profile.perception === 'augmented') {
113
+ intent.messageId = `${intent.messageId}#hallucinating`;
114
+ }
115
+ return intent;
116
+ }
117
+ //# sourceMappingURL=acl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acl.js","sourceRoot":"","sources":["../../../../../../../repos/sharpee/packages/character/src/conversation/acl.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;AAoBH,kDA+BC;AAsBD,8CAKC;AAuBD,wDAqBC;AArHD,8EAA8E;AAC9E,+BAA+B;AAC/B,8EAA8E;AAE9E;;;;;;;;;;GAUG;AACH,SAAgB,mBAAmB,CACjC,SAA4B,EAC5B,KAAa,EACb,QAA6B,EAC7B,OAAgB;IAEhB,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;IAChC,MAAM,SAAS,GAAG,QAAQ,CAAC,gBAAgB,CAAC,SAAS,CAAC;IAEtD,4BAA4B;IAC5B,IAAI,cAAmD,CAAC;IACxD,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;QACrB,cAAc,GAAG,EAAE,CAAC;QACpB,KAAK,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/D,cAAc,CAAC,GAAG,CAAC,GAAG,QAAQ,EAAE,CAAC;QACnC,CAAC;IACH,CAAC;IAED,wBAAwB;IACxB,MAAM,MAAM,GAAmB;QAC7B,MAAM,EAAE,SAAS,CAAC,MAAM;QACxB,KAAK;QACL,SAAS,EAAE,iBAAiB,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC;QACvD,IAAI;QACJ,SAAS;QACT,OAAO;QACP,MAAM,EAAE,cAAc;KACvB,CAAC;IAEF,2BAA2B;IAC3B,OAAO,sBAAsB,CAAC,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC;AACnE,CAAC;AAED,8EAA8E;AAC9E,yBAAyB;AACzB,8EAA8E;AAE9E;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,iBAAiB,CAAC,aAAqB,EAAE,IAAU;IACjE,8CAA8C;IAC9C,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,aAAa,CAAC;IAE1C,OAAO,GAAG,aAAa,IAAI,IAAI,EAAE,CAAC;AACpC,CAAC;AAED,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,sBAAsB,CACpC,MAAsB,EACtB,OAAyB;IAEzB,+DAA+D;IAC/D,wEAAwE;IACxE,yCAAyC;IAEzC,kEAAkE;IAClE,wCAAwC;IACxC,IAAI,OAAO,CAAC,SAAS,KAAK,WAAW,EAAE,CAAC;QACtC,MAAM,CAAC,SAAS,GAAG,GAAG,MAAM,CAAC,SAAS,WAAW,CAAC;IACpD,CAAC;IAED,mEAAmE;IACnE,wBAAwB;IACxB,IAAI,OAAO,CAAC,UAAU,KAAK,WAAW,EAAE,CAAC;QACvC,MAAM,CAAC,SAAS,GAAG,GAAG,MAAM,CAAC,SAAS,gBAAgB,CAAC;IACzD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}