@sharpee/world-model 0.9.99 → 0.9.102

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sharpee/world-model",
3
- "version": "0.9.99",
3
+ "version": "0.9.102",
4
4
  "description": "World model for Sharpee IF platform - entities, traits, and behaviors",
5
5
  "main": "./index.js",
6
6
  "types": "./index.d.ts",
@@ -12,8 +12,8 @@
12
12
  }
13
13
  },
14
14
  "dependencies": {
15
- "@sharpee/core": "^0.9.99",
16
- "@sharpee/if-domain": "^0.9.99"
15
+ "@sharpee/core": "^0.9.102",
16
+ "@sharpee/if-domain": "^0.9.102"
17
17
  },
18
18
  "keywords": [
19
19
  "interactive-fiction",
@@ -0,0 +1,96 @@
1
+ /**
2
+ * ScoreLedger — score tracking subsystem for WorldModel.
3
+ *
4
+ * Public interface: award, revoke, has, getTotal, getEntries, setMax, getMax,
5
+ * toJSON, fromJSON, clear.
6
+ *
7
+ * Owner context: packages/world-model (ADR-129). Extracted from WorldModel
8
+ * to isolate scoring concerns and simplify serialization.
9
+ */
10
+ /**
11
+ * A single score entry in the ledger.
12
+ */
13
+ export interface ScoreEntry {
14
+ id: string;
15
+ points: number;
16
+ description: string;
17
+ }
18
+ /**
19
+ * Serialized shape of the score ledger for persistence.
20
+ */
21
+ export interface ScoreLedgerData {
22
+ scoreLedger: ScoreEntry[];
23
+ scoreMaxScore: number;
24
+ }
25
+ /**
26
+ * Tracks score entries awarded during gameplay.
27
+ * Each entry has a unique ID to prevent double-awards and support revocation.
28
+ */
29
+ export declare class ScoreLedger {
30
+ private ledger;
31
+ private maxScore;
32
+ /**
33
+ * Award points for an achievement. Returns false if already awarded.
34
+ *
35
+ * @param id - Unique identifier for this score entry
36
+ * @param points - Points to award
37
+ * @param description - Human-readable description
38
+ * @returns true if awarded, false if id was already in the ledger
39
+ */
40
+ award(id: string, points: number, description: string): boolean;
41
+ /**
42
+ * Revoke a previously awarded score entry.
43
+ *
44
+ * @param id - The entry ID to revoke
45
+ * @returns true if revoked, false if not found
46
+ */
47
+ revoke(id: string): boolean;
48
+ /**
49
+ * Check if a score entry has been awarded.
50
+ *
51
+ * @param id - The entry ID to check
52
+ * @returns true if the entry exists in the ledger
53
+ */
54
+ has(id: string): boolean;
55
+ /**
56
+ * Get the total score (sum of all entry points).
57
+ *
58
+ * @returns Total points across all entries
59
+ */
60
+ getTotal(): number;
61
+ /**
62
+ * Get a copy of all score entries.
63
+ *
64
+ * @returns Array of score entries (defensive copy)
65
+ */
66
+ getEntries(): ScoreEntry[];
67
+ /**
68
+ * Set the maximum possible score.
69
+ *
70
+ * @param max - Maximum score value
71
+ */
72
+ setMax(max: number): void;
73
+ /**
74
+ * Get the maximum possible score.
75
+ *
76
+ * @returns Maximum score value
77
+ */
78
+ getMax(): number;
79
+ /**
80
+ * Serialize the ledger for persistence.
81
+ *
82
+ * @returns Serializable data object
83
+ */
84
+ toJSON(): ScoreLedgerData;
85
+ /**
86
+ * Restore the ledger from serialized data.
87
+ *
88
+ * @param data - Previously serialized ledger data
89
+ */
90
+ fromJSON(data: Partial<ScoreLedgerData>): void;
91
+ /**
92
+ * Reset the ledger to empty state.
93
+ */
94
+ clear(): void;
95
+ }
96
+ //# sourceMappingURL=ScoreLedger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScoreLedger.d.ts","sourceRoot":"","sources":["../../../../../../repos/sharpee/packages/world-model/src/world/ScoreLedger.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,QAAQ,CAAa;IAE7B;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO;IAQ/D;;;;;OAKG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAO3B;;;;;OAKG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIxB;;;;OAIG;IACH,QAAQ,IAAI,MAAM;IAQlB;;;;OAIG;IACH,UAAU,IAAI,UAAU,EAAE;IAI1B;;;;OAIG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIzB;;;;OAIG;IACH,MAAM,IAAI,MAAM;IAIhB;;;;OAIG;IACH,MAAM,IAAI,eAAe;IAOzB;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI;IAS9C;;OAEG;IACH,KAAK,IAAI,IAAI;CAId"}
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+ /**
3
+ * ScoreLedger — score tracking subsystem for WorldModel.
4
+ *
5
+ * Public interface: award, revoke, has, getTotal, getEntries, setMax, getMax,
6
+ * toJSON, fromJSON, clear.
7
+ *
8
+ * Owner context: packages/world-model (ADR-129). Extracted from WorldModel
9
+ * to isolate scoring concerns and simplify serialization.
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ScoreLedger = void 0;
13
+ /**
14
+ * Tracks score entries awarded during gameplay.
15
+ * Each entry has a unique ID to prevent double-awards and support revocation.
16
+ */
17
+ class ScoreLedger {
18
+ ledger = [];
19
+ maxScore = 0;
20
+ /**
21
+ * Award points for an achievement. Returns false if already awarded.
22
+ *
23
+ * @param id - Unique identifier for this score entry
24
+ * @param points - Points to award
25
+ * @param description - Human-readable description
26
+ * @returns true if awarded, false if id was already in the ledger
27
+ */
28
+ award(id, points, description) {
29
+ if (this.ledger.some(e => e.id === id)) {
30
+ return false;
31
+ }
32
+ this.ledger.push({ id, points, description });
33
+ return true;
34
+ }
35
+ /**
36
+ * Revoke a previously awarded score entry.
37
+ *
38
+ * @param id - The entry ID to revoke
39
+ * @returns true if revoked, false if not found
40
+ */
41
+ revoke(id) {
42
+ const idx = this.ledger.findIndex(e => e.id === id);
43
+ if (idx < 0)
44
+ return false;
45
+ this.ledger.splice(idx, 1);
46
+ return true;
47
+ }
48
+ /**
49
+ * Check if a score entry has been awarded.
50
+ *
51
+ * @param id - The entry ID to check
52
+ * @returns true if the entry exists in the ledger
53
+ */
54
+ has(id) {
55
+ return this.ledger.some(e => e.id === id);
56
+ }
57
+ /**
58
+ * Get the total score (sum of all entry points).
59
+ *
60
+ * @returns Total points across all entries
61
+ */
62
+ getTotal() {
63
+ let total = 0;
64
+ for (const entry of this.ledger) {
65
+ total += entry.points;
66
+ }
67
+ return total;
68
+ }
69
+ /**
70
+ * Get a copy of all score entries.
71
+ *
72
+ * @returns Array of score entries (defensive copy)
73
+ */
74
+ getEntries() {
75
+ return [...this.ledger];
76
+ }
77
+ /**
78
+ * Set the maximum possible score.
79
+ *
80
+ * @param max - Maximum score value
81
+ */
82
+ setMax(max) {
83
+ this.maxScore = max;
84
+ }
85
+ /**
86
+ * Get the maximum possible score.
87
+ *
88
+ * @returns Maximum score value
89
+ */
90
+ getMax() {
91
+ return this.maxScore;
92
+ }
93
+ /**
94
+ * Serialize the ledger for persistence.
95
+ *
96
+ * @returns Serializable data object
97
+ */
98
+ toJSON() {
99
+ return {
100
+ scoreLedger: this.ledger,
101
+ scoreMaxScore: this.maxScore,
102
+ };
103
+ }
104
+ /**
105
+ * Restore the ledger from serialized data.
106
+ *
107
+ * @param data - Previously serialized ledger data
108
+ */
109
+ fromJSON(data) {
110
+ if (data.scoreLedger) {
111
+ this.ledger = data.scoreLedger;
112
+ }
113
+ if (data.scoreMaxScore !== undefined) {
114
+ this.maxScore = data.scoreMaxScore;
115
+ }
116
+ }
117
+ /**
118
+ * Reset the ledger to empty state.
119
+ */
120
+ clear() {
121
+ this.ledger = [];
122
+ this.maxScore = 0;
123
+ }
124
+ }
125
+ exports.ScoreLedger = ScoreLedger;
126
+ //# sourceMappingURL=ScoreLedger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScoreLedger.js","sourceRoot":"","sources":["../../../../../../../repos/sharpee/packages/world-model/src/world/ScoreLedger.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAmBH;;;GAGG;AACH,MAAa,WAAW;IACd,MAAM,GAAiB,EAAE,CAAC;IAC1B,QAAQ,GAAW,CAAC,CAAC;IAE7B;;;;;;;OAOG;IACH,KAAK,CAAC,EAAU,EAAE,MAAc,EAAE,WAAmB;QACnD,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YACvC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,EAAU;QACf,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACpD,IAAI,GAAG,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED;;;;OAIG;IACH,QAAQ;QACN,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC;QACxB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;OAIG;IACH,UAAU;QACR,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,GAAW;QAChB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;IACtB,CAAC;IAED;;;;OAIG;IACH,MAAM;QACJ,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;;;OAIG;IACH,MAAM;QACJ,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,MAAM;YACxB,aAAa,EAAE,IAAI,CAAC,QAAQ;SAC7B,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,QAAQ,CAAC,IAA8B;QACrC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;QACjC,CAAC;QACD,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACrC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC;QACrC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;IACpB,CAAC;CACF;AApHD,kCAoHC"}
@@ -0,0 +1,186 @@
1
+ /**
2
+ * WorldEventSystem — event registration, chaining, validation, and history
3
+ * for WorldModel.
4
+ *
5
+ * Public interface: registerEventHandler, unregisterEventHandler,
6
+ * registerEventValidator, registerEventPreviewer, connectEventProcessor,
7
+ * chainEvent, applyEvent, canApplyEvent, previewEvent, getAppliedEvents,
8
+ * getEventsSince, clearEventHistory, preserveChains, restoreChains, clear.
9
+ *
10
+ * Owner context: packages/world-model (ADR-086, ADR-094). Extracted from
11
+ * WorldModel to isolate event concerns.
12
+ */
13
+ import { ISemanticEvent } from "../../core/index";
14
+ import { WorldChange, IEventProcessorWiring } from "../../if-domain/index";
15
+ import type { IWorldModel } from './WorldModel';
16
+ /** Handler invoked when an event is applied to the world */
17
+ export type EventHandler = (event: ISemanticEvent, world: IWorldModel) => void;
18
+ /** Validator that determines whether an event can be applied */
19
+ export type EventValidator = (event: ISemanticEvent, world: IWorldModel) => boolean;
20
+ /** Previewer that returns predicted world changes without applying */
21
+ export type EventPreviewer = (event: ISemanticEvent, world: IWorldModel) => WorldChange[];
22
+ /**
23
+ * Chain handler — returns events to emit (or null/empty to skip).
24
+ * Unlike regular event handlers, chain handlers produce new events.
25
+ */
26
+ export type EventChainHandler = (event: ISemanticEvent, world: IWorldModel) => ISemanticEvent | ISemanticEvent[] | null | undefined | void;
27
+ /**
28
+ * Options for chain registration.
29
+ */
30
+ export interface ChainEventOptions {
31
+ /**
32
+ * How to handle existing chains for this trigger:
33
+ * - 'cascade' (default): Add to existing chains, all fire
34
+ * - 'override': Replace ALL existing chains for this trigger
35
+ */
36
+ mode?: 'cascade' | 'override';
37
+ /**
38
+ * Unique key for this chain. Chains with same key replace each other.
39
+ * Useful for stdlib to define replaceable defaults.
40
+ */
41
+ key?: string;
42
+ /**
43
+ * Priority for ordering when multiple chains fire (lower = earlier).
44
+ * Default: 100
45
+ */
46
+ priority?: number;
47
+ }
48
+ /**
49
+ * Internal chain registration record.
50
+ */
51
+ interface ChainRegistration {
52
+ handler: EventChainHandler;
53
+ key?: string;
54
+ priority: number;
55
+ }
56
+ /**
57
+ * Manages all event-related state and logic for WorldModel.
58
+ *
59
+ * Handlers, validators, previewers, and chain handlers are registered here.
60
+ * The world reference is set after construction via setWorldRef() so that
61
+ * handlers receive the correct IWorldModel when invoked.
62
+ */
63
+ export declare class WorldEventSystem {
64
+ private worldRef;
65
+ private eventHandlers;
66
+ private eventValidators;
67
+ private eventPreviewers;
68
+ private appliedEvents;
69
+ private eventProcessorWiring;
70
+ private maxEventHistory;
71
+ private eventChains;
72
+ /**
73
+ * Set the world reference used when invoking handlers.
74
+ * Called by WorldModel after construction.
75
+ *
76
+ * @param world - The IWorldModel instance handlers will receive
77
+ */
78
+ setWorldRef(world: IWorldModel): void;
79
+ private getWorld;
80
+ /**
81
+ * Register an event handler for a specific event type.
82
+ *
83
+ * @param eventType - The event type string to handle
84
+ * @param handler - Handler function receiving the event and world
85
+ */
86
+ registerEventHandler(eventType: string, handler: EventHandler): void;
87
+ /**
88
+ * Unregister the handler for a specific event type.
89
+ *
90
+ * @param eventType - The event type to unregister
91
+ */
92
+ unregisterEventHandler(eventType: string): void;
93
+ /**
94
+ * Register a validator for a specific event type.
95
+ *
96
+ * @param eventType - The event type to validate
97
+ * @param validator - Validator function returning true if event is valid
98
+ */
99
+ registerEventValidator(eventType: string, validator: EventValidator): void;
100
+ /**
101
+ * Register a previewer for a specific event type.
102
+ *
103
+ * @param eventType - The event type to preview
104
+ * @param previewer - Previewer function returning predicted changes
105
+ */
106
+ registerEventPreviewer(eventType: string, previewer: EventPreviewer): void;
107
+ /**
108
+ * Connect to the engine's EventProcessor.
109
+ * Wires all existing handlers and chains, and enables automatic wiring
110
+ * for future registrations.
111
+ *
112
+ * @param wiring - The EventProcessor wiring interface
113
+ */
114
+ connectEventProcessor(wiring: IEventProcessorWiring): void;
115
+ private wireHandlerToProcessor;
116
+ /**
117
+ * Register an event chain handler.
118
+ * Chain handlers produce new events when a trigger event occurs.
119
+ *
120
+ * @param triggerType - The event type that triggers this chain
121
+ * @param handler - Function that returns new events to emit
122
+ * @param options - Chain registration options (mode, key, priority)
123
+ */
124
+ chainEvent(triggerType: string, handler: EventChainHandler, options?: ChainEventOptions): void;
125
+ private wireChainToProcessor;
126
+ private executeChains;
127
+ /**
128
+ * Apply an event to the world. Validates first, then invokes the handler
129
+ * and records the event in history.
130
+ *
131
+ * @param event - The event to apply
132
+ * @throws Error if validation fails
133
+ */
134
+ applyEvent(event: ISemanticEvent): void;
135
+ /**
136
+ * Check if an event can be applied (runs the validator if registered).
137
+ *
138
+ * @param event - The event to validate
139
+ * @returns true if the event is valid or no validator is registered
140
+ */
141
+ canApplyEvent(event: ISemanticEvent): boolean;
142
+ /**
143
+ * Preview the changes an event would cause without applying it.
144
+ *
145
+ * @param event - The event to preview
146
+ * @returns Array of predicted world changes
147
+ */
148
+ previewEvent(event: ISemanticEvent): WorldChange[];
149
+ /**
150
+ * Get all applied events (defensive copy).
151
+ *
152
+ * @returns Array of all events in history
153
+ */
154
+ getAppliedEvents(): ISemanticEvent[];
155
+ /**
156
+ * Get events applied since a given timestamp.
157
+ *
158
+ * @param timestamp - The cutoff timestamp
159
+ * @returns Events with timestamp greater than the cutoff
160
+ */
161
+ getEventsSince(timestamp: number): ISemanticEvent[];
162
+ /**
163
+ * Clear the event history.
164
+ */
165
+ clearEventHistory(): void;
166
+ /**
167
+ * Snapshot the current event chains (code registrations, not serialized).
168
+ * Used by WorldModel.loadJSON to preserve chains across restore.
169
+ *
170
+ * @returns A snapshot of the chain map
171
+ */
172
+ preserveChains(): Map<string, ChainRegistration[]>;
173
+ /**
174
+ * Restore previously preserved chains.
175
+ *
176
+ * @param chains - Chain snapshot from preserveChains()
177
+ */
178
+ restoreChains(chains: Map<string, ChainRegistration[]>): void;
179
+ /**
180
+ * Reset all runtime event state. Does not clear handler/validator/previewer
181
+ * registrations (those are code registrations, not runtime state).
182
+ */
183
+ clear(): void;
184
+ }
185
+ export {};
186
+ //# sourceMappingURL=WorldEventSystem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorldEventSystem.d.ts","sourceRoot":"","sources":["../../../../../../repos/sharpee/packages/world-model/src/world/WorldEventSystem.ts"],"names":[],"mappings":"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"}