@sharpee/engine 0.9.111 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. package/action-context-factory.d.ts +10 -2
  2. package/action-context-factory.d.ts.map +1 -1
  3. package/action-context-factory.js +29 -5
  4. package/action-context-factory.js.map +1 -1
  5. package/command-executor.d.ts +2 -1
  6. package/command-executor.d.ts.map +1 -1
  7. package/command-executor.js +3 -3
  8. package/command-executor.js.map +1 -1
  9. package/game-engine.d.ts +87 -4
  10. package/game-engine.d.ts.map +1 -1
  11. package/game-engine.js +250 -9
  12. package/game-engine.js.map +1 -1
  13. package/index.d.ts +1 -0
  14. package/index.d.ts.map +1 -1
  15. package/index.js +2 -0
  16. package/index.js.map +1 -1
  17. package/package.json +13 -12
  18. package/prose-pipeline/assemble.d.ts +77 -0
  19. package/prose-pipeline/assemble.d.ts.map +1 -0
  20. package/prose-pipeline/assemble.js +96 -0
  21. package/prose-pipeline/assemble.js.map +1 -0
  22. package/prose-pipeline/decorations/index.d.ts +18 -0
  23. package/prose-pipeline/decorations/index.d.ts.map +1 -0
  24. package/prose-pipeline/decorations/index.js +24 -0
  25. package/prose-pipeline/decorations/index.js.map +1 -0
  26. package/prose-pipeline/decorations/parser.d.ts +34 -0
  27. package/prose-pipeline/decorations/parser.d.ts.map +1 -0
  28. package/prose-pipeline/decorations/parser.js +177 -0
  29. package/prose-pipeline/decorations/parser.js.map +1 -0
  30. package/prose-pipeline/decorations/platform-vocabulary.d.ts +27 -0
  31. package/prose-pipeline/decorations/platform-vocabulary.d.ts.map +1 -0
  32. package/prose-pipeline/decorations/platform-vocabulary.js +65 -0
  33. package/prose-pipeline/decorations/platform-vocabulary.js.map +1 -0
  34. package/prose-pipeline/decorations/resolver.d.ts +28 -0
  35. package/prose-pipeline/decorations/resolver.d.ts.map +1 -0
  36. package/prose-pipeline/decorations/resolver.js +39 -0
  37. package/prose-pipeline/decorations/resolver.js.map +1 -0
  38. package/prose-pipeline/decorations/types.d.ts +16 -0
  39. package/prose-pipeline/decorations/types.d.ts.map +1 -0
  40. package/prose-pipeline/decorations/types.js +17 -0
  41. package/prose-pipeline/decorations/types.js.map +1 -0
  42. package/prose-pipeline/handlers/about.d.ts +31 -0
  43. package/prose-pipeline/handlers/about.d.ts.map +1 -0
  44. package/prose-pipeline/handlers/about.js +50 -0
  45. package/prose-pipeline/handlers/about.js.map +1 -0
  46. package/prose-pipeline/handlers/audibility.d.ts +46 -0
  47. package/prose-pipeline/handlers/audibility.d.ts.map +1 -0
  48. package/prose-pipeline/handlers/audibility.js +79 -0
  49. package/prose-pipeline/handlers/audibility.js.map +1 -0
  50. package/prose-pipeline/handlers/banner.d.ts +44 -0
  51. package/prose-pipeline/handlers/banner.d.ts.map +1 -0
  52. package/prose-pipeline/handlers/banner.js +88 -0
  53. package/prose-pipeline/handlers/banner.js.map +1 -0
  54. package/prose-pipeline/handlers/client-query.d.ts +22 -0
  55. package/prose-pipeline/handlers/client-query.d.ts.map +1 -0
  56. package/prose-pipeline/handlers/client-query.js +55 -0
  57. package/prose-pipeline/handlers/client-query.js.map +1 -0
  58. package/prose-pipeline/handlers/command-failed.d.ts +24 -0
  59. package/prose-pipeline/handlers/command-failed.d.ts.map +1 -0
  60. package/prose-pipeline/handlers/command-failed.js +46 -0
  61. package/prose-pipeline/handlers/command-failed.js.map +1 -0
  62. package/prose-pipeline/handlers/domain-message.d.ts +31 -0
  63. package/prose-pipeline/handlers/domain-message.d.ts.map +1 -0
  64. package/prose-pipeline/handlers/domain-message.js +66 -0
  65. package/prose-pipeline/handlers/domain-message.js.map +1 -0
  66. package/prose-pipeline/handlers/game.d.ts +31 -0
  67. package/prose-pipeline/handlers/game.d.ts.map +1 -0
  68. package/prose-pipeline/handlers/game.js +35 -0
  69. package/prose-pipeline/handlers/game.js.map +1 -0
  70. package/prose-pipeline/handlers/generic.d.ts +27 -0
  71. package/prose-pipeline/handlers/generic.d.ts.map +1 -0
  72. package/prose-pipeline/handlers/generic.js +67 -0
  73. package/prose-pipeline/handlers/generic.js.map +1 -0
  74. package/prose-pipeline/handlers/help.d.ts +21 -0
  75. package/prose-pipeline/handlers/help.d.ts.map +1 -0
  76. package/prose-pipeline/handlers/help.js +68 -0
  77. package/prose-pipeline/handlers/help.js.map +1 -0
  78. package/prose-pipeline/handlers/implicit-take.d.ts +20 -0
  79. package/prose-pipeline/handlers/implicit-take.d.ts.map +1 -0
  80. package/prose-pipeline/handlers/implicit-take.js +26 -0
  81. package/prose-pipeline/handlers/implicit-take.js.map +1 -0
  82. package/prose-pipeline/handlers/index.d.ts +24 -0
  83. package/prose-pipeline/handlers/index.d.ts.map +1 -0
  84. package/prose-pipeline/handlers/index.js +40 -0
  85. package/prose-pipeline/handlers/index.js.map +1 -0
  86. package/prose-pipeline/handlers/revealed.d.ts +24 -0
  87. package/prose-pipeline/handlers/revealed.d.ts.map +1 -0
  88. package/prose-pipeline/handlers/revealed.js +54 -0
  89. package/prose-pipeline/handlers/revealed.js.map +1 -0
  90. package/prose-pipeline/handlers/room.d.ts +25 -0
  91. package/prose-pipeline/handlers/room.d.ts.map +1 -0
  92. package/prose-pipeline/handlers/room.js +78 -0
  93. package/prose-pipeline/handlers/room.js.map +1 -0
  94. package/prose-pipeline/handlers/types.d.ts +47 -0
  95. package/prose-pipeline/handlers/types.d.ts.map +1 -0
  96. package/prose-pipeline/handlers/types.js +15 -0
  97. package/prose-pipeline/handlers/types.js.map +1 -0
  98. package/prose-pipeline/index.d.ts +20 -0
  99. package/prose-pipeline/index.d.ts.map +1 -0
  100. package/prose-pipeline/index.js +50 -0
  101. package/prose-pipeline/index.js.map +1 -0
  102. package/prose-pipeline/pipeline.d.ts +58 -0
  103. package/prose-pipeline/pipeline.d.ts.map +1 -0
  104. package/prose-pipeline/pipeline.js +120 -0
  105. package/prose-pipeline/pipeline.js.map +1 -0
  106. package/prose-pipeline/stages/filter.d.ts +26 -0
  107. package/prose-pipeline/stages/filter.d.ts.map +1 -0
  108. package/prose-pipeline/stages/filter.js +38 -0
  109. package/prose-pipeline/stages/filter.js.map +1 -0
  110. package/prose-pipeline/stages/index.d.ts +13 -0
  111. package/prose-pipeline/stages/index.d.ts.map +1 -0
  112. package/prose-pipeline/stages/index.js +19 -0
  113. package/prose-pipeline/stages/index.js.map +1 -0
  114. package/prose-pipeline/stages/sort.d.ts +38 -0
  115. package/prose-pipeline/stages/sort.d.ts.map +1 -0
  116. package/prose-pipeline/stages/sort.js +94 -0
  117. package/prose-pipeline/stages/sort.js.map +1 -0
  118. package/prose-pipeline/types.d.ts +45 -0
  119. package/prose-pipeline/types.d.ts.map +1 -0
  120. package/prose-pipeline/types.js +23 -0
  121. package/prose-pipeline/types.js.map +1 -0
  122. package/save-restore-service.d.ts +17 -23
  123. package/save-restore-service.d.ts.map +1 -1
  124. package/save-restore-service.js +79 -138
  125. package/save-restore-service.js.map +1 -1
  126. package/sound/dispatcher.d.ts +75 -0
  127. package/sound/dispatcher.d.ts.map +1 -0
  128. package/sound/dispatcher.js +122 -0
  129. package/sound/dispatcher.js.map +1 -0
  130. package/sound/index.d.ts +26 -0
  131. package/sound/index.d.ts.map +1 -0
  132. package/sound/index.js +34 -0
  133. package/sound/index.js.map +1 -0
  134. package/sound/propagation.d.ts +69 -0
  135. package/sound/propagation.d.ts.map +1 -0
  136. package/sound/propagation.js +219 -0
  137. package/sound/propagation.js.map +1 -0
  138. package/story.d.ts +28 -1
  139. package/story.d.ts.map +1 -1
  140. package/story.js.map +1 -1
  141. package/test-helpers/mock-prose-pipeline.d.ts +22 -0
  142. package/test-helpers/mock-prose-pipeline.d.ts.map +1 -0
  143. package/test-helpers/mock-prose-pipeline.js +56 -0
  144. package/test-helpers/mock-prose-pipeline.js.map +1 -0
  145. package/types.d.ts +14 -0
  146. package/types.d.ts.map +1 -1
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Event sorting stage — orders events within a turn for correct prose
3
+ * sequence: lifecycle first, then per-transaction implicit-take →
4
+ * room-description → action.* → others, finally by chain depth.
5
+ *
6
+ * Public interface: `sortEventsForProse`, `getChainMetadata`. Used
7
+ * internally by the prose pipeline as the second per-turn stage,
8
+ * after filtering.
9
+ *
10
+ * Owner context: `@sharpee/engine` — internal prose pipeline.
11
+ *
12
+ * @see ADR-094 Event Chaining (preserved; the sort responsibility
13
+ * ports from `@sharpee/text-service`)
14
+ * @see ADR-174 §Engine-internal prose pipeline
15
+ */
16
+ import type { ISemanticEvent } from "../../../core/index";
17
+ /**
18
+ * Event data with chain metadata (ADR-094).
19
+ */
20
+ interface ChainMetadata {
21
+ _transactionId?: string;
22
+ _chainDepth?: number;
23
+ _chainedFrom?: string;
24
+ _chainSourceId?: string;
25
+ }
26
+ /**
27
+ * Sort events for correct prose order within transactions.
28
+ *
29
+ * Stable sort — preserves cross-transaction order while applying
30
+ * within-transaction rules.
31
+ */
32
+ export declare function sortEventsForProse(events: ISemanticEvent[]): ISemanticEvent[];
33
+ /**
34
+ * Extract chain metadata from event data.
35
+ */
36
+ export declare function getChainMetadata(event: ISemanticEvent): ChainMetadata;
37
+ export {};
38
+ //# sourceMappingURL=sort.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sort.d.ts","sourceRoot":"","sources":["../../../../../../../repos/sharpee/packages/engine/src/prose-pipeline/stages/sort.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD;;GAEG;AACH,UAAU,aAAa;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAUD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE,CAgD7E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,GAAG,aAAa,CAQrE"}
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ /**
3
+ * Event sorting stage — orders events within a turn for correct prose
4
+ * sequence: lifecycle first, then per-transaction implicit-take →
5
+ * room-description → action.* → others, finally by chain depth.
6
+ *
7
+ * Public interface: `sortEventsForProse`, `getChainMetadata`. Used
8
+ * internally by the prose pipeline as the second per-turn stage,
9
+ * after filtering.
10
+ *
11
+ * Owner context: `@sharpee/engine` — internal prose pipeline.
12
+ *
13
+ * @see ADR-094 Event Chaining (preserved; the sort responsibility
14
+ * ports from `@sharpee/text-service`)
15
+ * @see ADR-174 §Engine-internal prose pipeline
16
+ */
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.sortEventsForProse = sortEventsForProse;
19
+ exports.getChainMetadata = getChainMetadata;
20
+ const LIFECYCLE_EVENTS = new Set([
21
+ 'game.started',
22
+ 'game.starting',
23
+ 'game.loading',
24
+ 'game.loaded',
25
+ 'game.initialized',
26
+ ]);
27
+ /**
28
+ * Sort events for correct prose order within transactions.
29
+ *
30
+ * Stable sort — preserves cross-transaction order while applying
31
+ * within-transaction rules.
32
+ */
33
+ function sortEventsForProse(events) {
34
+ return [...events].sort((a, b) => {
35
+ const aData = a.data;
36
+ const bData = b.data;
37
+ const aTxnId = aData?._transactionId;
38
+ const bTxnId = bData?._transactionId;
39
+ // Game lifecycle events come first, before everything.
40
+ // Ensures the banner displays before the first room description.
41
+ // Note: matches specific lifecycle events only, NOT game.message.
42
+ const aIsGameLifecycle = LIFECYCLE_EVENTS.has(a.type);
43
+ const bIsGameLifecycle = LIFECYCLE_EVENTS.has(b.type);
44
+ if (aIsGameLifecycle && !bIsGameLifecycle)
45
+ return -1;
46
+ if (!aIsGameLifecycle && bIsGameLifecycle)
47
+ return 1;
48
+ // Different transactions or no transaction: maintain original order.
49
+ if (aTxnId !== bTxnId)
50
+ return 0;
51
+ // Implicit take events come first, before the main action result:
52
+ // "first taking the X" before "X reads:..."
53
+ const aIsImplicitTake = a.type === 'if.event.implicit_take';
54
+ const bIsImplicitTake = b.type === 'if.event.implicit_take';
55
+ if (aIsImplicitTake && !bIsImplicitTake)
56
+ return -1;
57
+ if (!aIsImplicitTake && bIsImplicitTake)
58
+ return 1;
59
+ // Room description before action.success (for contents list):
60
+ // "Room Name\nDescription" before "You see X here."
61
+ const aIsRoomDesc = a.type === 'if.event.room.description' ||
62
+ a.type === 'if.event.room_description';
63
+ const bIsRoomDesc = b.type === 'if.event.room.description' ||
64
+ b.type === 'if.event.room_description';
65
+ if (aIsRoomDesc && !bIsRoomDesc)
66
+ return -1;
67
+ if (!aIsRoomDesc && bIsRoomDesc)
68
+ return 1;
69
+ // Within transaction: action.* first (after room description).
70
+ const aIsAction = a.type.startsWith('action.');
71
+ const bIsAction = b.type.startsWith('action.');
72
+ if (aIsAction && !bIsAction)
73
+ return -1;
74
+ if (!aIsAction && bIsAction)
75
+ return 1;
76
+ // Then by chain depth (lower depth first).
77
+ const aDepth = aData?._chainDepth ?? 0;
78
+ const bDepth = bData?._chainDepth ?? 0;
79
+ return aDepth - bDepth;
80
+ });
81
+ }
82
+ /**
83
+ * Extract chain metadata from event data.
84
+ */
85
+ function getChainMetadata(event) {
86
+ const data = event.data;
87
+ return {
88
+ _transactionId: data?._transactionId,
89
+ _chainDepth: data?._chainDepth,
90
+ _chainedFrom: data?._chainedFrom,
91
+ _chainSourceId: data?._chainSourceId,
92
+ };
93
+ }
94
+ //# sourceMappingURL=sort.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sort.js","sourceRoot":"","sources":["../../../../../../../../repos/sharpee/packages/engine/src/prose-pipeline/stages/sort.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Prose pipeline service interface — engine-internal home for the
3
+ * `ITextService` contract.
4
+ *
5
+ * Per ADR-174, the responsibility for translating events into blocks
6
+ * moves into `@sharpee/engine`. The transitional `ITextService` name
7
+ * is preserved here so engine code already typed against it (the
8
+ * three `processTurn` call sites in `game-engine.ts` and the
9
+ * `getTextService` / `setTextService` accessors) can keep compiling
10
+ * during sub-phase 1.6's import swap. A follow-up cleanup may rename
11
+ * this to `IProsePipeline` once the legacy alias is no longer
12
+ * imported anywhere.
13
+ *
14
+ * Public interface: `ITextService`. Implemented by `ProsePipeline`
15
+ * (and by `MockProsePipeline` in tests).
16
+ *
17
+ * Owner context: `@sharpee/engine` — internal prose pipeline.
18
+ *
19
+ * @see ADR-174 §Internal interfaces
20
+ */
21
+ import type { ISemanticEvent } from "../../core/index";
22
+ import type { ITextBlock } from "../../text-blocks/index";
23
+ /**
24
+ * Per-turn prose translator.
25
+ *
26
+ * Stateless transformer: takes the events emitted during a turn,
27
+ * returns the structured `ITextBlock[]` the channel layer hands off
28
+ * to renderers. Engine constructs an implementation once during
29
+ * `setStory()` and calls `processTurn` per turn (and per
30
+ * meta-command / restart).
31
+ */
32
+ export interface ITextService {
33
+ /**
34
+ * Process turn events and produce TextBlocks.
35
+ *
36
+ * Called by Engine after each turn completes — and again on the
37
+ * meta-command path (restart, restore) where the same per-turn
38
+ * shape applies.
39
+ *
40
+ * @param events All events from this turn, including chained ones.
41
+ * @returns Blocks in render order.
42
+ */
43
+ processTurn(events: ISemanticEvent[]): ITextBlock[];
44
+ }
45
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../repos/sharpee/packages/engine/src/prose-pipeline/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;;;;;;GAQG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;;;;;;OASG;IACH,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,UAAU,EAAE,CAAC;CACrD"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ /**
3
+ * Prose pipeline service interface — engine-internal home for the
4
+ * `ITextService` contract.
5
+ *
6
+ * Per ADR-174, the responsibility for translating events into blocks
7
+ * moves into `@sharpee/engine`. The transitional `ITextService` name
8
+ * is preserved here so engine code already typed against it (the
9
+ * three `processTurn` call sites in `game-engine.ts` and the
10
+ * `getTextService` / `setTextService` accessors) can keep compiling
11
+ * during sub-phase 1.6's import swap. A follow-up cleanup may rename
12
+ * this to `IProsePipeline` once the legacy alias is no longer
13
+ * imported anywhere.
14
+ *
15
+ * Public interface: `ITextService`. Implemented by `ProsePipeline`
16
+ * (and by `MockProsePipeline` in tests).
17
+ *
18
+ * Owner context: `@sharpee/engine` — internal prose pipeline.
19
+ *
20
+ * @see ADR-174 §Internal interfaces
21
+ */
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../../repos/sharpee/packages/engine/src/prose-pipeline/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG"}
@@ -1,8 +1,22 @@
1
1
  /**
2
- * Save/Restore Service - Manages game state persistence and undo
2
+ * Save/Restore Service manages game state persistence and undo.
3
3
  *
4
- * Extracted from GameEngine as part of Phase 4 remediation.
5
- * Handles save/restore data creation, undo snapshots, and serialization.
4
+ * Public interface: {@link SaveRestoreService} class `createSaveData`,
5
+ * `loadSaveData`, plus undo helpers (`createUndoSnapshot`, `undo`,
6
+ * `canUndo`, `getUndoLevels`, `clearUndoSnapshots`).
7
+ *
8
+ * Bounded context: `@sharpee/engine` runtime. Every Sharpee host (CLI,
9
+ * platform-browser, multi-user sandbox) routes saves through this
10
+ * service.
11
+ *
12
+ * Save format v2.0.0 (one-shot cutover from v1.0.0; v1 saves rejected):
13
+ * - `IEngineState.worldSnapshot` carries the verbatim
14
+ * `WorldModel.toJSON()` output, gzipped, then base64-encoded for
15
+ * JSON-safety. Hydration: base64-decode → gunzip → `world.loadJSON()`.
16
+ * - This replaces v1's partial `spatialIndex` serializer, which
17
+ * captured only entity traits + room contents and silently dropped
18
+ * the ScoreLedger, capabilities, world state values, relationships,
19
+ * ID counters, and sub-container containment.
6
20
  */
7
21
  import { WorldModel } from "../world-model/index";
8
22
  import { ISaveData, ISerializedTurn, ISemanticEventSource } from "../core/index";
@@ -85,14 +99,6 @@ export declare class SaveRestoreService {
85
99
  * Deserialize event data, handling function markers
86
100
  */
87
101
  private deserializeEventData;
88
- /**
89
- * Serialize spatial index (world state)
90
- */
91
- private serializeSpatialIndex;
92
- /**
93
- * Deserialize spatial index
94
- */
95
- private deserializeSpatialIndex;
96
102
  /**
97
103
  * Serialize turn history
98
104
  */
@@ -105,18 +111,6 @@ export declare class SaveRestoreService {
105
111
  * Serialize parser state
106
112
  */
107
113
  private serializeParserState;
108
- /**
109
- * Serialize a trait
110
- */
111
- private serializeTrait;
112
- /**
113
- * Deserialize a trait
114
- */
115
- private deserializeTrait;
116
- /**
117
- * Extract connections from a location entity
118
- */
119
- private extractConnections;
120
114
  }
121
115
  /**
122
116
  * Create a save/restore service instance
@@ -1 +1 @@
1
- {"version":3,"file":"save-restore-service.d.ts","sourceRoot":"","sources":["../../../../../repos/sharpee/packages/engine/src/save-restore-service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,UAAU,EAIX,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,SAAS,EAQT,eAAe,EAEf,oBAAoB,EAErB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,IAAI,UAAU,CAAC;IACvB,UAAU,IAAI,WAAW,CAAC;IAC1B,QAAQ,IAAI,KAAK,GAAG,SAAS,CAAC;IAC9B,cAAc,IAAI,oBAAoB,CAAC;IACvC,iBAAiB,IAAI,cAAc,CAAC;IACpC,SAAS,IAAI,OAAO,GAAG,SAAS,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAE7B,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,iBAAiB,CAAgB;IACzC,OAAO,CAAC,gBAAgB,CAAS;gBAErB,MAAM,CAAC,EAAE,UAAU;IAI/B;;OAEG;IACH,kBAAkB,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAiBhE;;;OAGG;IACH,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAehD;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACH,kBAAkB,IAAI,IAAI;IAK1B;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,yBAAyB,GAAG,SAAS;IAwC9D;;;OAGG;IACH,YAAY,CACV,QAAQ,EAAE,SAAS,EACnB,QAAQ,EAAE,yBAAyB,GAClC;QACD,WAAW,EAAE,oBAAoB,CAAC;QAClC,WAAW,EAAE,MAAM,CAAC;KACrB;IAqCD;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAe5B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA6B1B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAgB9B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAwB5B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAyC7B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAoC/B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAe5B;;OAEG;IACH,sBAAsB,CACpB,KAAK,EAAE,eAAe,EAAE,EACxB,WAAW,EAAE,oBAAoB,GAChC,UAAU,EAAE;IAoBf;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAU5B;;OAEG;IACH,OAAO,CAAC,cAAc;IAOtB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAOxB;;OAEG;IACH,OAAO,CAAC,kBAAkB;CA0C3B;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,kBAAkB,CAEhF"}
1
+ {"version":3,"file":"save-restore-service.d.ts","sourceRoot":"","sources":["../../../../../repos/sharpee/packages/engine/src/save-restore-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAIH,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EACL,SAAS,EAIT,eAAe,EAEf,oBAAoB,EAErB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AA0DhC;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,IAAI,UAAU,CAAC;IACvB,UAAU,IAAI,WAAW,CAAC;IAC1B,QAAQ,IAAI,KAAK,GAAG,SAAS,CAAC;IAC9B,cAAc,IAAI,oBAAoB,CAAC;IACvC,iBAAiB,IAAI,cAAc,CAAC;IACpC,SAAS,IAAI,OAAO,GAAG,SAAS,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAE7B,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,iBAAiB,CAAgB;IACzC,OAAO,CAAC,gBAAgB,CAAS;gBAErB,MAAM,CAAC,EAAE,UAAU;IAI/B;;OAEG;IACH,kBAAkB,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAiBhE;;;OAGG;IACH,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAehD;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACH,kBAAkB,IAAI,IAAI;IAK1B;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,yBAAyB,GAAG,SAAS;IAwC9D;;;OAGG;IACH,YAAY,CACV,QAAQ,EAAE,SAAS,EACnB,QAAQ,EAAE,yBAAyB,GAClC;QACD,WAAW,EAAE,oBAAoB,CAAC;QAClC,WAAW,EAAE,MAAM,CAAC;KACrB;IA4CD;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAe5B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA6B1B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAgB9B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAwB5B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAe5B;;OAEG;IACH,sBAAsB,CACpB,KAAK,EAAE,eAAe,EAAE,EACxB,WAAW,EAAE,oBAAoB,GAChC,UAAU,EAAE;IAoBf;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAU7B;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,kBAAkB,CAEhF"}
@@ -1,15 +1,74 @@
1
1
  "use strict";
2
2
  /**
3
- * Save/Restore Service - Manages game state persistence and undo
3
+ * Save/Restore Service manages game state persistence and undo.
4
4
  *
5
- * Extracted from GameEngine as part of Phase 4 remediation.
6
- * Handles save/restore data creation, undo snapshots, and serialization.
5
+ * Public interface: {@link SaveRestoreService} class `createSaveData`,
6
+ * `loadSaveData`, plus undo helpers (`createUndoSnapshot`, `undo`,
7
+ * `canUndo`, `getUndoLevels`, `clearUndoSnapshots`).
8
+ *
9
+ * Bounded context: `@sharpee/engine` runtime. Every Sharpee host (CLI,
10
+ * platform-browser, multi-user sandbox) routes saves through this
11
+ * service.
12
+ *
13
+ * Save format v2.0.0 (one-shot cutover from v1.0.0; v1 saves rejected):
14
+ * - `IEngineState.worldSnapshot` carries the verbatim
15
+ * `WorldModel.toJSON()` output, gzipped, then base64-encoded for
16
+ * JSON-safety. Hydration: base64-decode → gunzip → `world.loadJSON()`.
17
+ * - This replaces v1's partial `spatialIndex` serializer, which
18
+ * captured only entity traits + room contents and silently dropped
19
+ * the ScoreLedger, capabilities, world state values, relationships,
20
+ * ID counters, and sub-container containment.
7
21
  */
8
22
  Object.defineProperty(exports, "__esModule", { value: true });
9
23
  exports.SaveRestoreService = void 0;
10
24
  exports.createSaveRestoreService = createSaveRestoreService;
11
- const world_model_1 = require("../world-model/index.js");
25
+ const fflate_1 = require("fflate");
12
26
  const core_1 = require("../core/index.js");
27
+ /**
28
+ * Save format version. Bumped from `1.0.0` → `2.0.0` when the partial
29
+ * `spatialIndex` serializer was replaced with the full `worldSnapshot`
30
+ * (gzipped `WorldModel.toJSON()`). v1 saves are rejected — they are
31
+ * known-broken (drop score / capabilities / state values / relationships)
32
+ * and the codebase is greenfield, so no migration shim ships.
33
+ */
34
+ const SAVE_FORMAT_VERSION = '2.0.0';
35
+ /**
36
+ * Encode a `Uint8Array` to a base64 string. Chunked to stay under the
37
+ * call-argument limit on `String.fromCharCode.apply` for snapshots in
38
+ * the hundreds of KB.
39
+ */
40
+ function uint8ToBase64(bytes) {
41
+ const CHUNK = 0x8000;
42
+ let binary = '';
43
+ for (let i = 0; i < bytes.length; i += CHUNK) {
44
+ const slice = bytes.subarray(i, i + CHUNK);
45
+ binary += String.fromCharCode.apply(null, slice);
46
+ }
47
+ return btoa(binary);
48
+ }
49
+ /** Decode a base64 string to a `Uint8Array`. Inverse of `uint8ToBase64`. */
50
+ function base64ToUint8(b64) {
51
+ const binary = atob(b64);
52
+ const out = new Uint8Array(binary.length);
53
+ for (let i = 0; i < binary.length; i++)
54
+ out[i] = binary.charCodeAt(i);
55
+ return out;
56
+ }
57
+ /**
58
+ * Compress a JSON string with gzip and base64-encode the result so it
59
+ * can ride the `ISaveData` JSON envelope without escaping.
60
+ */
61
+ function compressWorldSnapshot(json) {
62
+ return uint8ToBase64((0, fflate_1.gzipSync)((0, fflate_1.strToU8)(json)));
63
+ }
64
+ /**
65
+ * Inverse of {@link compressWorldSnapshot}. Throws if the snapshot is
66
+ * malformed (bad base64 or invalid gzip stream); the caller surfaces
67
+ * the failure rather than partially restoring.
68
+ */
69
+ function decompressWorldSnapshot(b64) {
70
+ return (0, fflate_1.strFromU8)((0, fflate_1.gunzipSync)(base64ToUint8(b64)));
71
+ }
13
72
  /**
14
73
  * Service for managing save/restore and undo functionality
15
74
  */
@@ -91,13 +150,13 @@ class SaveRestoreService {
91
150
  };
92
151
  const engineState = {
93
152
  eventSource: this.serializeEventSource(eventSource),
94
- spatialIndex: this.serializeSpatialIndex(world),
153
+ worldSnapshot: compressWorldSnapshot(world.toJSON()),
95
154
  turnHistory: this.serializeTurnHistory(context.history),
96
155
  parserState: this.serializeParserState(parser),
97
156
  pluginStates: pluginRegistry.getStates()
98
157
  };
99
158
  return {
100
- version: '1.0.0',
159
+ version: SAVE_FORMAT_VERSION,
101
160
  timestamp: Date.now(),
102
161
  metadata,
103
162
  engineState,
@@ -117,8 +176,9 @@ class SaveRestoreService {
117
176
  */
118
177
  loadSaveData(saveData, provider) {
119
178
  const story = provider.getStory();
120
- // Validate save compatibility
121
- if (saveData.version !== '1.0.0') {
179
+ // Validate save compatibility. v1 saves are rejected outright (no
180
+ // migration shim — see SAVE_FORMAT_VERSION docs above).
181
+ if (saveData.version !== SAVE_FORMAT_VERSION) {
122
182
  throw new Error(`Unsupported save version: ${saveData.version}`);
123
183
  }
124
184
  if (saveData.storyConfig?.id &&
@@ -126,16 +186,22 @@ class SaveRestoreService {
126
186
  saveData.storyConfig.id !== story.config.id) {
127
187
  throw new Error(`Save is for different story: ${saveData.storyConfig.id}`);
128
188
  }
129
- // Restore event source
189
+ // Restore event source.
130
190
  const eventSource = this.deserializeEventSource(saveData.engineState.eventSource);
131
- // Restore spatial index (world state)
191
+ // Restore world state. The full WorldModel state — entity traits,
192
+ // spatial containment graph, ScoreLedger, capabilities, state
193
+ // values, relationships, ID counters — rides the `worldSnapshot`
194
+ // field. `WorldModel.loadJSON` clears the existing world and
195
+ // rebuilds, so the fresh-engine entities created by `setStory` are
196
+ // replaced wholesale by the saved entities.
132
197
  const world = provider.getWorld();
133
- this.deserializeSpatialIndex(saveData.engineState.spatialIndex, world);
134
- // Restore plugin states if present (ADR-120)
198
+ world.loadJSON(decompressWorldSnapshot(saveData.engineState.worldSnapshot));
199
+ // Restore plugin states if present (ADR-120).
135
200
  if (saveData.engineState.pluginStates) {
136
201
  provider.getPluginRegistry().setStates(saveData.engineState.pluginStates);
137
202
  }
138
- // Clear undo snapshots after restore
203
+ // Clear undo snapshots after restore — they were taken against the
204
+ // pre-restore world and are no longer meaningful.
139
205
  this.clearUndoSnapshots();
140
206
  return {
141
207
  eventSource,
@@ -223,75 +289,6 @@ class SaveRestoreService {
223
289
  }
224
290
  return deserialized;
225
291
  }
226
- /**
227
- * Serialize spatial index (world state)
228
- */
229
- serializeSpatialIndex(world) {
230
- const entities = {};
231
- const locations = {};
232
- const relationships = {};
233
- // Serialize all entities
234
- for (const entity of world.getAllEntities()) {
235
- const traits = {};
236
- // Serialize each trait
237
- for (const [name, trait] of entity.traits) {
238
- traits[name] = this.serializeTrait(trait);
239
- }
240
- entities[entity.id] = {
241
- id: entity.id,
242
- traits,
243
- entityType: entity.constructor.name
244
- };
245
- }
246
- // Serialize locations and their contents
247
- const allLocations = world.getAllEntities().filter((e) => e.type === 'room' || e.type === 'location' || e.has('if.trait.room'));
248
- for (const location of allLocations) {
249
- const contents = world.getContents(location.id);
250
- locations[location.id] = {
251
- id: location.id,
252
- properties: {
253
- name: location.get(world_model_1.TraitType.IDENTITY)?.name || 'Unknown',
254
- description: location.get(world_model_1.TraitType.IDENTITY)?.description || ''
255
- },
256
- contents: contents.map((e) => e.id),
257
- connections: this.extractConnections(location, world)
258
- };
259
- }
260
- return { entities, locations, relationships };
261
- }
262
- /**
263
- * Deserialize spatial index
264
- */
265
- deserializeSpatialIndex(index, world) {
266
- // Note: Full deserialization would need to clear and recreate the world
267
- // For now, this restores entity traits and locations
268
- // Restore entity traits
269
- for (const [id, data] of Object.entries(index.entities)) {
270
- const entity = world.getEntity(id);
271
- if (entity) {
272
- // Restore traits
273
- for (const [name, traitData] of Object.entries(data.traits)) {
274
- const trait = this.deserializeTrait(name, traitData);
275
- if (trait) {
276
- // Remove existing trait if present, then add the restored one
277
- if (entity.has(name)) {
278
- entity.remove(name);
279
- }
280
- entity.add(trait);
281
- }
282
- }
283
- }
284
- }
285
- // Restore locations and contents
286
- for (const [locationId, data] of Object.entries(index.locations)) {
287
- for (const entityId of data.contents) {
288
- const entity = world.getEntity(entityId);
289
- if (entity) {
290
- world.moveEntity(entity.id, locationId);
291
- }
292
- }
293
- }
294
- }
295
292
  /**
296
293
  * Serialize turn history
297
294
  */
@@ -335,62 +332,6 @@ class SaveRestoreService {
335
332
  // For now, return empty object
336
333
  return {};
337
334
  }
338
- /**
339
- * Serialize a trait
340
- */
341
- serializeTrait(trait) {
342
- if (typeof trait === 'object' && trait !== null) {
343
- return { ...trait };
344
- }
345
- return trait;
346
- }
347
- /**
348
- * Deserialize a trait
349
- */
350
- deserializeTrait(name, data) {
351
- if (data && typeof data === 'object') {
352
- return { type: name, ...data };
353
- }
354
- return null;
355
- }
356
- /**
357
- * Extract connections from a location entity
358
- */
359
- extractConnections(location, world) {
360
- const connections = {};
361
- // Check for ROOM trait with exits
362
- const roomTrait = location.get('if.trait.room');
363
- if (roomTrait?.exits) {
364
- Object.entries(roomTrait.exits).forEach(([direction, exit]) => {
365
- if (exit.destination) {
366
- connections[direction] = exit.destination;
367
- }
368
- });
369
- }
370
- // Check for doors in this location
371
- const contents = world.getContents(location.id);
372
- contents.forEach((entity) => {
373
- const doorTrait = entity.get('if.trait.door');
374
- if (doorTrait) {
375
- const otherRoom = doorTrait.room1 === location.id ? doorTrait.room2 : doorTrait.room1;
376
- if (otherRoom) {
377
- // Try to determine direction from door name
378
- const name = entity.name?.toLowerCase() || '';
379
- if (name.includes('north'))
380
- connections.north = otherRoom;
381
- else if (name.includes('south'))
382
- connections.south = otherRoom;
383
- else if (name.includes('east'))
384
- connections.east = otherRoom;
385
- else if (name.includes('west'))
386
- connections.west = otherRoom;
387
- else
388
- connections.door = otherRoom;
389
- }
390
- }
391
- });
392
- return connections;
393
- }
394
335
  }
395
336
  exports.SaveRestoreService = SaveRestoreService;
396
337
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"save-restore-service.js","sourceRoot":"","sources":["../../../../../../repos/sharpee/packages/engine/src/save-restore-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"save-restore-service.js","sourceRoot":"","sources":["../../../../../../repos/sharpee/packages/engine/src/save-restore-service.ts"],"names":[],"mappings":"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"}