@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.
- package/action-context-factory.d.ts +10 -2
- package/action-context-factory.d.ts.map +1 -1
- package/action-context-factory.js +29 -5
- package/action-context-factory.js.map +1 -1
- package/command-executor.d.ts +2 -1
- package/command-executor.d.ts.map +1 -1
- package/command-executor.js +3 -3
- package/command-executor.js.map +1 -1
- package/game-engine.d.ts +87 -4
- package/game-engine.d.ts.map +1 -1
- package/game-engine.js +250 -9
- package/game-engine.js.map +1 -1
- package/index.d.ts +1 -0
- package/index.d.ts.map +1 -1
- package/index.js +2 -0
- package/index.js.map +1 -1
- package/package.json +13 -12
- package/prose-pipeline/assemble.d.ts +77 -0
- package/prose-pipeline/assemble.d.ts.map +1 -0
- package/prose-pipeline/assemble.js +96 -0
- package/prose-pipeline/assemble.js.map +1 -0
- package/prose-pipeline/decorations/index.d.ts +18 -0
- package/prose-pipeline/decorations/index.d.ts.map +1 -0
- package/prose-pipeline/decorations/index.js +24 -0
- package/prose-pipeline/decorations/index.js.map +1 -0
- package/prose-pipeline/decorations/parser.d.ts +34 -0
- package/prose-pipeline/decorations/parser.d.ts.map +1 -0
- package/prose-pipeline/decorations/parser.js +177 -0
- package/prose-pipeline/decorations/parser.js.map +1 -0
- package/prose-pipeline/decorations/platform-vocabulary.d.ts +27 -0
- package/prose-pipeline/decorations/platform-vocabulary.d.ts.map +1 -0
- package/prose-pipeline/decorations/platform-vocabulary.js +65 -0
- package/prose-pipeline/decorations/platform-vocabulary.js.map +1 -0
- package/prose-pipeline/decorations/resolver.d.ts +28 -0
- package/prose-pipeline/decorations/resolver.d.ts.map +1 -0
- package/prose-pipeline/decorations/resolver.js +39 -0
- package/prose-pipeline/decorations/resolver.js.map +1 -0
- package/prose-pipeline/decorations/types.d.ts +16 -0
- package/prose-pipeline/decorations/types.d.ts.map +1 -0
- package/prose-pipeline/decorations/types.js +17 -0
- package/prose-pipeline/decorations/types.js.map +1 -0
- package/prose-pipeline/handlers/about.d.ts +31 -0
- package/prose-pipeline/handlers/about.d.ts.map +1 -0
- package/prose-pipeline/handlers/about.js +50 -0
- package/prose-pipeline/handlers/about.js.map +1 -0
- package/prose-pipeline/handlers/audibility.d.ts +46 -0
- package/prose-pipeline/handlers/audibility.d.ts.map +1 -0
- package/prose-pipeline/handlers/audibility.js +79 -0
- package/prose-pipeline/handlers/audibility.js.map +1 -0
- package/prose-pipeline/handlers/banner.d.ts +44 -0
- package/prose-pipeline/handlers/banner.d.ts.map +1 -0
- package/prose-pipeline/handlers/banner.js +88 -0
- package/prose-pipeline/handlers/banner.js.map +1 -0
- package/prose-pipeline/handlers/client-query.d.ts +22 -0
- package/prose-pipeline/handlers/client-query.d.ts.map +1 -0
- package/prose-pipeline/handlers/client-query.js +55 -0
- package/prose-pipeline/handlers/client-query.js.map +1 -0
- package/prose-pipeline/handlers/command-failed.d.ts +24 -0
- package/prose-pipeline/handlers/command-failed.d.ts.map +1 -0
- package/prose-pipeline/handlers/command-failed.js +46 -0
- package/prose-pipeline/handlers/command-failed.js.map +1 -0
- package/prose-pipeline/handlers/domain-message.d.ts +31 -0
- package/prose-pipeline/handlers/domain-message.d.ts.map +1 -0
- package/prose-pipeline/handlers/domain-message.js +66 -0
- package/prose-pipeline/handlers/domain-message.js.map +1 -0
- package/prose-pipeline/handlers/game.d.ts +31 -0
- package/prose-pipeline/handlers/game.d.ts.map +1 -0
- package/prose-pipeline/handlers/game.js +35 -0
- package/prose-pipeline/handlers/game.js.map +1 -0
- package/prose-pipeline/handlers/generic.d.ts +27 -0
- package/prose-pipeline/handlers/generic.d.ts.map +1 -0
- package/prose-pipeline/handlers/generic.js +67 -0
- package/prose-pipeline/handlers/generic.js.map +1 -0
- package/prose-pipeline/handlers/help.d.ts +21 -0
- package/prose-pipeline/handlers/help.d.ts.map +1 -0
- package/prose-pipeline/handlers/help.js +68 -0
- package/prose-pipeline/handlers/help.js.map +1 -0
- package/prose-pipeline/handlers/implicit-take.d.ts +20 -0
- package/prose-pipeline/handlers/implicit-take.d.ts.map +1 -0
- package/prose-pipeline/handlers/implicit-take.js +26 -0
- package/prose-pipeline/handlers/implicit-take.js.map +1 -0
- package/prose-pipeline/handlers/index.d.ts +24 -0
- package/prose-pipeline/handlers/index.d.ts.map +1 -0
- package/prose-pipeline/handlers/index.js +40 -0
- package/prose-pipeline/handlers/index.js.map +1 -0
- package/prose-pipeline/handlers/revealed.d.ts +24 -0
- package/prose-pipeline/handlers/revealed.d.ts.map +1 -0
- package/prose-pipeline/handlers/revealed.js +54 -0
- package/prose-pipeline/handlers/revealed.js.map +1 -0
- package/prose-pipeline/handlers/room.d.ts +25 -0
- package/prose-pipeline/handlers/room.d.ts.map +1 -0
- package/prose-pipeline/handlers/room.js +78 -0
- package/prose-pipeline/handlers/room.js.map +1 -0
- package/prose-pipeline/handlers/types.d.ts +47 -0
- package/prose-pipeline/handlers/types.d.ts.map +1 -0
- package/prose-pipeline/handlers/types.js +15 -0
- package/prose-pipeline/handlers/types.js.map +1 -0
- package/prose-pipeline/index.d.ts +20 -0
- package/prose-pipeline/index.d.ts.map +1 -0
- package/prose-pipeline/index.js +50 -0
- package/prose-pipeline/index.js.map +1 -0
- package/prose-pipeline/pipeline.d.ts +58 -0
- package/prose-pipeline/pipeline.d.ts.map +1 -0
- package/prose-pipeline/pipeline.js +120 -0
- package/prose-pipeline/pipeline.js.map +1 -0
- package/prose-pipeline/stages/filter.d.ts +26 -0
- package/prose-pipeline/stages/filter.d.ts.map +1 -0
- package/prose-pipeline/stages/filter.js +38 -0
- package/prose-pipeline/stages/filter.js.map +1 -0
- package/prose-pipeline/stages/index.d.ts +13 -0
- package/prose-pipeline/stages/index.d.ts.map +1 -0
- package/prose-pipeline/stages/index.js +19 -0
- package/prose-pipeline/stages/index.js.map +1 -0
- package/prose-pipeline/stages/sort.d.ts +38 -0
- package/prose-pipeline/stages/sort.d.ts.map +1 -0
- package/prose-pipeline/stages/sort.js +94 -0
- package/prose-pipeline/stages/sort.js.map +1 -0
- package/prose-pipeline/types.d.ts +45 -0
- package/prose-pipeline/types.d.ts.map +1 -0
- package/prose-pipeline/types.js +23 -0
- package/prose-pipeline/types.js.map +1 -0
- package/save-restore-service.d.ts +17 -23
- package/save-restore-service.d.ts.map +1 -1
- package/save-restore-service.js +79 -138
- package/save-restore-service.js.map +1 -1
- package/sound/dispatcher.d.ts +75 -0
- package/sound/dispatcher.d.ts.map +1 -0
- package/sound/dispatcher.js +122 -0
- package/sound/dispatcher.js.map +1 -0
- package/sound/index.d.ts +26 -0
- package/sound/index.d.ts.map +1 -0
- package/sound/index.js +34 -0
- package/sound/index.js.map +1 -0
- package/sound/propagation.d.ts +69 -0
- package/sound/propagation.d.ts.map +1 -0
- package/sound/propagation.js +219 -0
- package/sound/propagation.js.map +1 -0
- package/story.d.ts +28 -1
- package/story.d.ts.map +1 -1
- package/story.js.map +1 -1
- package/test-helpers/mock-prose-pipeline.d.ts +22 -0
- package/test-helpers/mock-prose-pipeline.d.ts.map +1 -0
- package/test-helpers/mock-prose-pipeline.js +56 -0
- package/test-helpers/mock-prose-pipeline.js.map +1 -0
- package/types.d.ts +14 -0
- 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
|
|
2
|
+
* Save/Restore Service — manages game state persistence and undo.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
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
|
|
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"}
|
package/save-restore-service.js
CHANGED
|
@@ -1,15 +1,74 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* Save/Restore Service
|
|
3
|
+
* Save/Restore Service — manages game state persistence and undo.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
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
|
|
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
|
-
|
|
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:
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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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"}
|