@sharpee/story-loader 3.0.0 → 3.3.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/chain-map.d.ts +40 -0
- package/chain-map.d.ts.map +1 -0
- package/chain-map.js +39 -0
- package/chain-map.js.map +1 -0
- package/evaluator.d.ts +16 -0
- package/evaluator.d.ts.map +1 -1
- package/evaluator.js +59 -23
- package/evaluator.js.map +1 -1
- package/event-contract.d.ts +18 -0
- package/event-contract.d.ts.map +1 -1
- package/event-contract.js +28 -1
- package/event-contract.js.map +1 -1
- package/event-id-map.d.ts +42 -0
- package/event-id-map.d.ts.map +1 -0
- package/event-id-map.js +62 -0
- package/event-id-map.js.map +1 -0
- package/extension-registry.d.ts +54 -0
- package/extension-registry.d.ts.map +1 -0
- package/extension-registry.js +70 -0
- package/extension-registry.js.map +1 -0
- package/index.d.ts +9 -7
- package/index.d.ts.map +1 -1
- package/index.js +28 -25
- package/index.js.map +1 -1
- package/loader.d.ts +132 -5
- package/loader.d.ts.map +1 -1
- package/loader.js +1008 -109
- package/loader.js.map +1 -1
- package/message-alias-map.d.ts +25 -0
- package/message-alias-map.d.ts.map +1 -0
- package/message-alias-map.js +836 -0
- package/message-alias-map.js.map +1 -0
- package/package.json +11 -9
- package/phrasebook-data.d.ts +27 -0
- package/phrasebook-data.d.ts.map +1 -0
- package/phrasebook-data.js +6 -0
- package/phrasebook-data.js.map +1 -0
- package/runtime.d.ts +158 -19
- package/runtime.d.ts.map +1 -1
- package/runtime.js +846 -169
- package/runtime.js.map +1 -1
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { WorldModel } from '@sharpee/world-model';
|
|
2
|
+
/**
|
|
3
|
+
* Where one Chord `with`-field lands on the platform: the target trait and
|
|
4
|
+
* its field name, plus how the config value converts. `boolean` accepts the
|
|
5
|
+
* words `true`/`false` (anything else is a LoadError); `fraction` divides a
|
|
6
|
+
* Chord percentage by 100 (reserved for the NPC routes, Phase 2).
|
|
7
|
+
*/
|
|
8
|
+
export interface FieldRoute {
|
|
9
|
+
trait: 'combatant' | 'health' | 'weapon';
|
|
10
|
+
field: string;
|
|
11
|
+
convert: 'number' | 'boolean';
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* `combatant`/`weapon` field routing (ADR-215 combat spelling). Exported so
|
|
15
|
+
* the manifest-conformance test can assert every chord-manifest key has a
|
|
16
|
+
* route AND every route's field exists on the real trait — the drift gate.
|
|
17
|
+
* Note the ADR-226 split: `health`/`max-health` route to the REQUIRED
|
|
18
|
+
* HealthTrait (auto-attached), never to CombatantTrait.
|
|
19
|
+
*/
|
|
20
|
+
export declare const COMBAT_FIELD_ROUTES: ReadonlyMap<string, FieldRoute>;
|
|
21
|
+
/**
|
|
22
|
+
* NpcTrait routing for the CORE NPC behavior adjectives (ADR-215 Q4 —
|
|
23
|
+
* always on, no `use`). Behavior-factory params (`move-chance`,
|
|
24
|
+
* `immediate`, `route`, `loop`, `wait-turns`) are NOT trait fields — they
|
|
25
|
+
* configure the per-entity behavior instance at engine-ready and are
|
|
26
|
+
* proven by the REAL-PATH tests, not this table.
|
|
27
|
+
*/
|
|
28
|
+
export interface NpcFieldRoute {
|
|
29
|
+
field: string;
|
|
30
|
+
convert: 'boolean' | 'rooms';
|
|
31
|
+
}
|
|
32
|
+
export declare const NPC_FIELD_ROUTES: ReadonlyMap<string, NpcFieldRoute>;
|
|
33
|
+
/** The five core behavior adjectives (stdlib's standard NPC library). */
|
|
34
|
+
export declare const NPC_BEHAVIOR_ADJECTIVES: ReadonlySet<string>;
|
|
35
|
+
/** One trusted extension's runtime registration surface (ADR-215's three-part contract). */
|
|
36
|
+
export interface ExtensionRegistration {
|
|
37
|
+
/** World-side registration (interceptors, resolvers) run at load. */
|
|
38
|
+
registerWorld?: (world: WorldModel) => void;
|
|
39
|
+
/**
|
|
40
|
+
* Engine plugin registration (TurnPlugin instances) — reserved for
|
|
41
|
+
* `state-machines` (Phase 3); runs alongside the scheduler's wiring.
|
|
42
|
+
*/
|
|
43
|
+
registerPlugin?: (registry: {
|
|
44
|
+
register(plugin: unknown): void;
|
|
45
|
+
}) => void;
|
|
46
|
+
/**
|
|
47
|
+
* Channel + renderer registration (ADR-215's third contribution part) —
|
|
48
|
+
* reserved slot, filled in by Phase 6.
|
|
49
|
+
*/
|
|
50
|
+
registerChannels?: (registry: unknown) => void;
|
|
51
|
+
}
|
|
52
|
+
/** `use` name → its trusted, runtime-bundled registration. Fixed set — growing it is a grammar change. */
|
|
53
|
+
export declare const EXTENSION_REGISTRY: ReadonlyMap<string, ExtensionRegistration>;
|
|
54
|
+
//# sourceMappingURL=extension-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension-registry.d.ts","sourceRoot":"","sources":["../../../../../../repos/sharpee_v2/packages/story-loader/src/extension-registry.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,QAAQ,GAAG,SAAS,CAAC;CAC/B;AAED;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,CAiB9D,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC;CAC9B;AAED,eAAO,MAAM,gBAAgB,EAAE,WAAW,CAAC,MAAM,EAAE,aAAa,CAK9D,CAAC;AAEH,yEAAyE;AACzE,eAAO,MAAM,uBAAuB,EAAE,WAAW,CAAC,MAAM,CAMtD,CAAC;AAEH,4FAA4F;AAC5F,MAAM,WAAW,qBAAqB;IACpC,qEAAqE;IACrE,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IAC5C;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE;QAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAA;KAAE,KAAK,IAAI,CAAC;IACzE;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;CAChD;AAED,0GAA0G;AAC1G,eAAO,MAAM,kBAAkB,EAAE,WAAW,CAAC,MAAM,EAAE,qBAAqB,CAOxE,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EXTENSION_REGISTRY = exports.NPC_BEHAVIOR_ADJECTIVES = exports.NPC_FIELD_ROUTES = exports.COMBAT_FIELD_ROUTES = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* extension-registry.ts — the trusted runtime extension registry (ADR-215).
|
|
6
|
+
*
|
|
7
|
+
* Purpose: the MAPPINGS half of the names-vs-mappings split — the fixed,
|
|
8
|
+
* runtime-bundled set of extensions a story's `use <name>` may resolve to,
|
|
9
|
+
* each entry carrying its world-side registration and its adjective→trait
|
|
10
|
+
* field routing. Because every entry ships with the runtime and no author
|
|
11
|
+
* code crosses the boundary, a `use`-only story stays pure IR. An unknown
|
|
12
|
+
* `use` name is a LoadError (the compiler's manifest gate catches it first;
|
|
13
|
+
* this is the rogue-IR backstop). The chord-side manifest registry
|
|
14
|
+
* (@sharpee/chord EXTENSION_MANIFESTS) must carry exactly these names — the
|
|
15
|
+
* manifest-conformance test pins the two together.
|
|
16
|
+
*
|
|
17
|
+
* Public interface: EXTENSION_REGISTRY, ExtensionRegistration,
|
|
18
|
+
* COMBAT_FIELD_ROUTES, FieldRoute.
|
|
19
|
+
* Owner context: @sharpee/story-loader (language-neutral IR consumer).
|
|
20
|
+
*/
|
|
21
|
+
const ext_basic_combat_1 = require("@sharpee/ext-basic-combat");
|
|
22
|
+
/**
|
|
23
|
+
* `combatant`/`weapon` field routing (ADR-215 combat spelling). Exported so
|
|
24
|
+
* the manifest-conformance test can assert every chord-manifest key has a
|
|
25
|
+
* route AND every route's field exists on the real trait — the drift gate.
|
|
26
|
+
* Note the ADR-226 split: `health`/`max-health` route to the REQUIRED
|
|
27
|
+
* HealthTrait (auto-attached), never to CombatantTrait.
|
|
28
|
+
*/
|
|
29
|
+
exports.COMBAT_FIELD_ROUTES = new Map([
|
|
30
|
+
['health', { trait: 'health', field: 'health', convert: 'number' }],
|
|
31
|
+
['max-health', { trait: 'health', field: 'maxHealth', convert: 'number' }],
|
|
32
|
+
['skill', { trait: 'combatant', field: 'skill', convert: 'number' }],
|
|
33
|
+
['base-damage', { trait: 'combatant', field: 'baseDamage', convert: 'number' }],
|
|
34
|
+
['armor', { trait: 'combatant', field: 'armor', convert: 'number' }],
|
|
35
|
+
['attack-power', { trait: 'combatant', field: 'attackPower', convert: 'number' }],
|
|
36
|
+
['defense', { trait: 'combatant', field: 'defense', convert: 'number' }],
|
|
37
|
+
['experience-value', { trait: 'combatant', field: 'experienceValue', convert: 'number' }],
|
|
38
|
+
['hostile', { trait: 'combatant', field: 'hostile', convert: 'boolean' }],
|
|
39
|
+
['can-retaliate', { trait: 'combatant', field: 'canRetaliate', convert: 'boolean' }],
|
|
40
|
+
['drops-inventory', { trait: 'combatant', field: 'dropsInventory', convert: 'boolean' }],
|
|
41
|
+
['is-undead', { trait: 'combatant', field: 'isUndead', convert: 'boolean' }],
|
|
42
|
+
['damage', { trait: 'weapon', field: 'damage', convert: 'number' }],
|
|
43
|
+
['skill-bonus', { trait: 'weapon', field: 'skillBonus', convert: 'number' }],
|
|
44
|
+
['is-blessed', { trait: 'weapon', field: 'isBlessed', convert: 'boolean' }],
|
|
45
|
+
['glows-near-danger', { trait: 'weapon', field: 'glowsNearDanger', convert: 'boolean' }],
|
|
46
|
+
]);
|
|
47
|
+
exports.NPC_FIELD_ROUTES = new Map([
|
|
48
|
+
['can-move', { field: 'canMove', convert: 'boolean' }],
|
|
49
|
+
['announces-movement', { field: 'announcesMovement', convert: 'boolean' }],
|
|
50
|
+
['allowed-rooms', { field: 'allowedRooms', convert: 'rooms' }],
|
|
51
|
+
['forbidden-rooms', { field: 'forbiddenRooms', convert: 'rooms' }],
|
|
52
|
+
]);
|
|
53
|
+
/** The five core behavior adjectives (stdlib's standard NPC library). */
|
|
54
|
+
exports.NPC_BEHAVIOR_ADJECTIVES = new Set([
|
|
55
|
+
'guard',
|
|
56
|
+
'passive',
|
|
57
|
+
'wanderer',
|
|
58
|
+
'follower',
|
|
59
|
+
'patrol',
|
|
60
|
+
]);
|
|
61
|
+
/** `use` name → its trusted, runtime-bundled registration. Fixed set — growing it is a grammar change. */
|
|
62
|
+
exports.EXTENSION_REGISTRY = new Map([
|
|
63
|
+
['combat', { registerWorld: (world) => (0, ext_basic_combat_1.registerBasicCombat)(world) }],
|
|
64
|
+
// state-machines registers engine-side (onEngineReady): the plugin
|
|
65
|
+
// instance must be kept to lower `define machine` blocks into its
|
|
66
|
+
// registry, so its wiring lives with the loader's engine hook. The
|
|
67
|
+
// entry exists so the `use` gate knows the name.
|
|
68
|
+
['state-machines', {}],
|
|
69
|
+
]);
|
|
70
|
+
//# sourceMappingURL=extension-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension-registry.js","sourceRoot":"","sources":["../../../../../../repos/sharpee_v2/packages/story-loader/src/extension-registry.ts"],"names":[],"mappings":"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"}
|
package/index.d.ts
CHANGED
|
@@ -14,11 +14,13 @@
|
|
|
14
14
|
* (world-model, helpers, engine, if-domain, core); nothing platform depends
|
|
15
15
|
* on it (ADR-210 Direction rule).
|
|
16
16
|
*/
|
|
17
|
-
export { LoadError } from './errors';
|
|
18
|
-
export { EVENT_TRIGGERS, EVENT_PAYLOAD_FIELDS } from './event-contract';
|
|
19
|
-
export { HATCH_CONTEXT_VERSION, stagingRenderContext, findChordLiteral } from './hatch-context';
|
|
20
|
-
export { ChordDataTrait, ChordDetailTrait, ChordStory, createStory, StoryLoaderOptions } from './loader';
|
|
21
|
-
export { Evaluator, EvalContext, EntityIdResolver } from './evaluator';
|
|
22
|
-
export { ChordRuntime, ChordBehaviorTrait } from './runtime';
|
|
23
|
-
export {
|
|
17
|
+
export { LoadError } from './errors.js';
|
|
18
|
+
export { EVENT_TRIGGERS, EVENT_PAYLOAD_FIELDS, REGION_EVENT_TRIGGERS } from './event-contract.js';
|
|
19
|
+
export { HATCH_CONTEXT_VERSION, stagingRenderContext, findChordLiteral } from './hatch-context.js';
|
|
20
|
+
export { ChordDataTrait, ChordDetailTrait, ChordStory, createStory, StoryLoaderOptions } from './loader.js';
|
|
21
|
+
export { Evaluator, EvalContext, EntityIdResolver } from './evaluator.js';
|
|
22
|
+
export { ChordRuntime, ChordBehaviorTrait } from './runtime.js';
|
|
23
|
+
export { PHRASEBOOK_DATA } from './phrasebook-data.js';
|
|
24
|
+
export type { PhrasebookData } from './phrasebook-data.js';
|
|
25
|
+
export { CHORD_OCCURRENCE_PREFIX, CHORD_RNG_KEY, CHORD_STATE_PREFIX, CHORD_TRAIT_PREFIX, } from './state-keys.js';
|
|
24
26
|
//# sourceMappingURL=index.d.ts.map
|
package/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../repos/sharpee_v2/packages/story-loader/src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../repos/sharpee_v2/packages/story-loader/src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAClG,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACnG,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAC5G,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EACL,uBAAuB,EACvB,aAAa,EACb,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC"}
|
package/index.js
CHANGED
|
@@ -16,29 +16,32 @@
|
|
|
16
16
|
* on it (ADR-210 Direction rule).
|
|
17
17
|
*/
|
|
18
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
-
exports.CHORD_TRAIT_PREFIX = exports.CHORD_STATE_PREFIX = exports.CHORD_RNG_KEY = exports.CHORD_OCCURRENCE_PREFIX = exports.ChordBehaviorTrait = exports.ChordRuntime = exports.Evaluator = exports.createStory = exports.ChordStory = exports.ChordDetailTrait = exports.ChordDataTrait = exports.findChordLiteral = exports.stagingRenderContext = exports.HATCH_CONTEXT_VERSION = exports.EVENT_PAYLOAD_FIELDS = exports.EVENT_TRIGGERS = exports.LoadError = void 0;
|
|
20
|
-
var
|
|
21
|
-
Object.defineProperty(exports, "LoadError", { enumerable: true, get: function () { return
|
|
22
|
-
var
|
|
23
|
-
Object.defineProperty(exports, "EVENT_TRIGGERS", { enumerable: true, get: function () { return
|
|
24
|
-
Object.defineProperty(exports, "EVENT_PAYLOAD_FIELDS", { enumerable: true, get: function () { return
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
Object.defineProperty(exports, "
|
|
28
|
-
Object.defineProperty(exports, "
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
Object.defineProperty(exports, "
|
|
32
|
-
Object.defineProperty(exports, "
|
|
33
|
-
Object.defineProperty(exports, "
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
Object.defineProperty(exports, "
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
Object.defineProperty(exports, "
|
|
42
|
-
|
|
43
|
-
Object.defineProperty(exports, "
|
|
19
|
+
exports.CHORD_TRAIT_PREFIX = exports.CHORD_STATE_PREFIX = exports.CHORD_RNG_KEY = exports.CHORD_OCCURRENCE_PREFIX = exports.PHRASEBOOK_DATA = exports.ChordBehaviorTrait = exports.ChordRuntime = exports.Evaluator = exports.createStory = exports.ChordStory = exports.ChordDetailTrait = exports.ChordDataTrait = exports.findChordLiteral = exports.stagingRenderContext = exports.HATCH_CONTEXT_VERSION = exports.REGION_EVENT_TRIGGERS = exports.EVENT_PAYLOAD_FIELDS = exports.EVENT_TRIGGERS = exports.LoadError = void 0;
|
|
20
|
+
var errors_js_1 = require("./errors.js");
|
|
21
|
+
Object.defineProperty(exports, "LoadError", { enumerable: true, get: function () { return errors_js_1.LoadError; } });
|
|
22
|
+
var event_contract_js_1 = require("./event-contract.js");
|
|
23
|
+
Object.defineProperty(exports, "EVENT_TRIGGERS", { enumerable: true, get: function () { return event_contract_js_1.EVENT_TRIGGERS; } });
|
|
24
|
+
Object.defineProperty(exports, "EVENT_PAYLOAD_FIELDS", { enumerable: true, get: function () { return event_contract_js_1.EVENT_PAYLOAD_FIELDS; } });
|
|
25
|
+
Object.defineProperty(exports, "REGION_EVENT_TRIGGERS", { enumerable: true, get: function () { return event_contract_js_1.REGION_EVENT_TRIGGERS; } });
|
|
26
|
+
var hatch_context_js_1 = require("./hatch-context.js");
|
|
27
|
+
Object.defineProperty(exports, "HATCH_CONTEXT_VERSION", { enumerable: true, get: function () { return hatch_context_js_1.HATCH_CONTEXT_VERSION; } });
|
|
28
|
+
Object.defineProperty(exports, "stagingRenderContext", { enumerable: true, get: function () { return hatch_context_js_1.stagingRenderContext; } });
|
|
29
|
+
Object.defineProperty(exports, "findChordLiteral", { enumerable: true, get: function () { return hatch_context_js_1.findChordLiteral; } });
|
|
30
|
+
var loader_js_1 = require("./loader.js");
|
|
31
|
+
Object.defineProperty(exports, "ChordDataTrait", { enumerable: true, get: function () { return loader_js_1.ChordDataTrait; } });
|
|
32
|
+
Object.defineProperty(exports, "ChordDetailTrait", { enumerable: true, get: function () { return loader_js_1.ChordDetailTrait; } });
|
|
33
|
+
Object.defineProperty(exports, "ChordStory", { enumerable: true, get: function () { return loader_js_1.ChordStory; } });
|
|
34
|
+
Object.defineProperty(exports, "createStory", { enumerable: true, get: function () { return loader_js_1.createStory; } });
|
|
35
|
+
var evaluator_js_1 = require("./evaluator.js");
|
|
36
|
+
Object.defineProperty(exports, "Evaluator", { enumerable: true, get: function () { return evaluator_js_1.Evaluator; } });
|
|
37
|
+
var runtime_js_1 = require("./runtime.js");
|
|
38
|
+
Object.defineProperty(exports, "ChordRuntime", { enumerable: true, get: function () { return runtime_js_1.ChordRuntime; } });
|
|
39
|
+
Object.defineProperty(exports, "ChordBehaviorTrait", { enumerable: true, get: function () { return runtime_js_1.ChordBehaviorTrait; } });
|
|
40
|
+
var phrasebook_data_js_1 = require("./phrasebook-data.js");
|
|
41
|
+
Object.defineProperty(exports, "PHRASEBOOK_DATA", { enumerable: true, get: function () { return phrasebook_data_js_1.PHRASEBOOK_DATA; } });
|
|
42
|
+
var state_keys_js_1 = require("./state-keys.js");
|
|
43
|
+
Object.defineProperty(exports, "CHORD_OCCURRENCE_PREFIX", { enumerable: true, get: function () { return state_keys_js_1.CHORD_OCCURRENCE_PREFIX; } });
|
|
44
|
+
Object.defineProperty(exports, "CHORD_RNG_KEY", { enumerable: true, get: function () { return state_keys_js_1.CHORD_RNG_KEY; } });
|
|
45
|
+
Object.defineProperty(exports, "CHORD_STATE_PREFIX", { enumerable: true, get: function () { return state_keys_js_1.CHORD_STATE_PREFIX; } });
|
|
46
|
+
Object.defineProperty(exports, "CHORD_TRAIT_PREFIX", { enumerable: true, get: function () { return state_keys_js_1.CHORD_TRAIT_PREFIX; } });
|
|
44
47
|
//# sourceMappingURL=index.js.map
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../repos/sharpee_v2/packages/story-loader/src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;AAEH,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../repos/sharpee_v2/packages/story-loader/src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;AAEH,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAClB,yDAAkG;AAAzF,mHAAA,cAAc,OAAA;AAAE,yHAAA,oBAAoB,OAAA;AAAE,0HAAA,qBAAqB,OAAA;AACpE,uDAAmG;AAA1F,yHAAA,qBAAqB,OAAA;AAAE,wHAAA,oBAAoB,OAAA;AAAE,oHAAA,gBAAgB,OAAA;AACtE,yCAA4G;AAAnG,2GAAA,cAAc,OAAA;AAAE,6GAAA,gBAAgB,OAAA;AAAE,uGAAA,UAAU,OAAA;AAAE,wGAAA,WAAW,OAAA;AAClE,+CAA0E;AAAjE,yGAAA,SAAS,OAAA;AAClB,2CAAgE;AAAvD,0GAAA,YAAY,OAAA;AAAE,gHAAA,kBAAkB,OAAA;AACzC,2DAAuD;AAA9C,qHAAA,eAAe,OAAA;AAExB,iDAKyB;AAJvB,wHAAA,uBAAuB,OAAA;AACvB,8GAAA,aAAa,OAAA;AACb,mHAAA,kBAAkB,OAAA;AAClB,mHAAA,kBAAkB,OAAA"}
|
package/loader.d.ts
CHANGED
|
@@ -21,12 +21,12 @@
|
|
|
21
21
|
* platform reads it today (dual-mode, ADR-107).
|
|
22
22
|
*/
|
|
23
23
|
import { StoryIR } from '@sharpee/chord';
|
|
24
|
-
import type { Phrase } from '@sharpee/if-domain';
|
|
24
|
+
import type { IChannelRegistry, Phrase } from '@sharpee/if-domain';
|
|
25
25
|
import type { ISemanticEvent } from '@sharpee/core';
|
|
26
26
|
import type { LanguageProvider, PhraseProducer, StoryEndingKind } from '@sharpee/if-domain';
|
|
27
27
|
import type { CustomVocabulary, Story, StoryConfig } from '@sharpee/engine';
|
|
28
|
-
import {
|
|
29
|
-
import { ChordRuntime } from './runtime';
|
|
28
|
+
import { IFEntity, IParsedCommand, ITrait, WorldModel, type EventChainHandler } from '@sharpee/world-model';
|
|
29
|
+
import { ChordRuntime } from './runtime.js';
|
|
30
30
|
/**
|
|
31
31
|
* Marker trait for entities carrying loader-compiled `detail` providers
|
|
32
32
|
* (Z3b): the one state-clause contributor registered per load looks up the
|
|
@@ -84,14 +84,33 @@ export declare class ChordStory implements Story {
|
|
|
84
84
|
readonly producers: Map<string, PhraseProducer>;
|
|
85
85
|
/** Bound `define action X from` hatches: four-phase Action objects by name. */
|
|
86
86
|
readonly boundActions: Map<string, unknown>;
|
|
87
|
-
/** Bound `define
|
|
88
|
-
readonly
|
|
87
|
+
/** Bound `define chain X from` hatches (ADR-094): EventChainHandlers by chain alias. */
|
|
88
|
+
readonly boundChains: Map<string, EventChainHandler>;
|
|
89
89
|
/** The turn-by-turn runtime (rules, on-clauses, derived properties). */
|
|
90
90
|
readonly runtime: ChordRuntime;
|
|
91
91
|
/** The condition evaluator — shared with the runtime; Z2 gate thunks close over it. */
|
|
92
92
|
private readonly evaluator;
|
|
93
93
|
/** IR entity ID → world entity ID (populated by initializeWorld/createPlayer). */
|
|
94
94
|
private readonly worldIds;
|
|
95
|
+
/**
|
|
96
|
+
* Trait-config entity references awaiting world-id resolution (ADR-230
|
|
97
|
+
* D3c / Phase 9a): `cuttable with tool the knife`, `lockable with key the
|
|
98
|
+
* brass key` may name entities built AFTER their owner, so trait fields
|
|
99
|
+
* are stamped once every entity exists — config values are NEVER left as
|
|
100
|
+
* raw display-name strings.
|
|
101
|
+
*/
|
|
102
|
+
private readonly pendingEntityRefs;
|
|
103
|
+
/** Resolve a trait-config entity NAME to an IR entity and queue the
|
|
104
|
+
* world-id application (throws LoadError when nothing matches). */
|
|
105
|
+
private entityRefFor;
|
|
106
|
+
/**
|
|
107
|
+
* Deadly exits (ADR-227): world room id → DIRECTION → derived
|
|
108
|
+
* cause/messageId (both the phrase key). Lowered in `onEngineReady` to ONE
|
|
109
|
+
* pre-validate command transformer redirecting to the platform's generic
|
|
110
|
+
* deadly-death action — a deadly exit need not exist in the room graph, so
|
|
111
|
+
* no destination-resolved interceptor could ever fire.
|
|
112
|
+
*/
|
|
113
|
+
private readonly deadlyExits;
|
|
95
114
|
/** World entity ID → IR entity ID (state lookups in the evaluator). */
|
|
96
115
|
private readonly irIds;
|
|
97
116
|
private world;
|
|
@@ -135,7 +154,32 @@ export declare class ChordStory implements Story {
|
|
|
135
154
|
register(plugin: unknown): void;
|
|
136
155
|
};
|
|
137
156
|
registerSlotEntry?(entry: ChordSlotEntry): void;
|
|
157
|
+
registerParsedCommandTransformer?(t: (parsed: IParsedCommand, world: WorldModel) => IParsedCommand): void;
|
|
158
|
+
getClientCapabilities?(): object;
|
|
138
159
|
}): void;
|
|
160
|
+
/**
|
|
161
|
+
* ADR-216 custom channels + ADR-215's third contribution part: every
|
|
162
|
+
* `define channel` lowers to a real IOChannel (JSON data projection —
|
|
163
|
+
* the turn's last event of the declared type, `take` fields projected
|
|
164
|
+
* from its data), and every `use`d extension gets its reserved
|
|
165
|
+
* `registerChannels` slot invoked (no bundled extension registers one
|
|
166
|
+
* today — the leg is live but unexercised; a novel renderer would ship
|
|
167
|
+
* there, keeping stories pure IR). The engine invokes this hook once at
|
|
168
|
+
* start (`Story.registerChannels`, engine/src/game-engine.ts).
|
|
169
|
+
*
|
|
170
|
+
* ADR-241 D4: family channels (`define ambient`/`define layer`, plus
|
|
171
|
+
* the implied `main` bed) register through stdlib's family builders —
|
|
172
|
+
* `ambient:<word>` / `image:<word>` ids, capability gates inherited
|
|
173
|
+
* from the builders (`sound` / `images`). Data channels are untouched.
|
|
174
|
+
*/
|
|
175
|
+
registerChannels(registry: IChannelRegistry): void;
|
|
176
|
+
/**
|
|
177
|
+
* The deadly-exit command transformer (ADR-227). Redirects `going
|
|
178
|
+
* <deadly-direction>` from a room with declared deadly exits to
|
|
179
|
+
* `DEADLY_ROOM_DEATH_ACTION_ID`, threading the phrase-derived
|
|
180
|
+
* cause/messageId through extras. Pass-through otherwise.
|
|
181
|
+
*/
|
|
182
|
+
private buildDeadlyExitTransformer;
|
|
139
183
|
/**
|
|
140
184
|
* Z3 `present` channel → ADR-212 slot entries. One `registerSlotEntry`
|
|
141
185
|
* call per authoring entity: `slotKey: 'here'`, owner = the entity,
|
|
@@ -162,8 +206,82 @@ export declare class ChordStory implements Story {
|
|
|
162
206
|
* ending event (Prerequisite 3). The caller (rule evaluator) emits it.
|
|
163
207
|
*/
|
|
164
208
|
triggerEnding(world: WorldModel, ending: StoryEndingKind, messageId?: string): ISemanticEvent;
|
|
209
|
+
/** Region IR id → parent region IR id (the parent's `containing` lists the child — ADR-236 D3). */
|
|
210
|
+
private readonly regionParents;
|
|
211
|
+
/**
|
|
212
|
+
* Region entities in parent-first order, filling `regionParents` on the
|
|
213
|
+
* way (ADR-236 D3). The compiler's cycle gate guarantees the walk ends; a
|
|
214
|
+
* cycle here means rogue IR and is a LoadError, never a hang.
|
|
215
|
+
*/
|
|
216
|
+
private regionsInParentFirstOrder;
|
|
165
217
|
private buildEntity;
|
|
218
|
+
/**
|
|
219
|
+
* ADR-231 D5a: map each accepted `starts <state>` initializer to the
|
|
220
|
+
* paired trait's initial-value field (locked→isLocked:true, closed→
|
|
221
|
+
* isOpen:false, on→isOn:true, …). Runs AFTER trait composition (the
|
|
222
|
+
* adjective-composed traits, ADR-231 D5b: there are no builder pre-adds
|
|
223
|
+
* left) — so a declared initializer always wins over any
|
|
224
|
+
* trait default. Only the trait boolean is set; the state adjective
|
|
225
|
+
* itself is never stored story state (the shadow-state ratchet).
|
|
226
|
+
* The analyzer's pairing gate guarantees the trait is present; a missing
|
|
227
|
+
* trait here is a defect, reported as a LoadError, never a silent skip.
|
|
228
|
+
*/
|
|
229
|
+
private applyStartsStates;
|
|
230
|
+
/**
|
|
231
|
+
* Resolve trait-config entity references (`with tool X`, `with key X`)
|
|
232
|
+
* to world entity ids (ADR-230 D3c / Phase 9a) — runs once, after every
|
|
233
|
+
* entity is built.
|
|
234
|
+
*/
|
|
235
|
+
private resolvePendingEntityRefs;
|
|
236
|
+
/**
|
|
237
|
+
* ADR-230 D3c load-time check (PIN 3, dual-surface re-pin, 2026-07-17):
|
|
238
|
+
* every cuttable entity must register exactly ONE cut implementation —
|
|
239
|
+
* an `on cutting it` clause (entity- or trait-level, loads as an
|
|
240
|
+
* ADR-228 interceptor) or an ADR-090 capability behavior for
|
|
241
|
+
* `if.action.cutting` (TS/hatch surface). Zero implementations would
|
|
242
|
+
* silently no-op at runtime; two would double-fire (ADR-228 D6 spirit).
|
|
243
|
+
* Chord surfaces are counted from the IR (precise per entity); the
|
|
244
|
+
* capability surface from the live world.
|
|
245
|
+
*/
|
|
246
|
+
private checkCuttableImplementations;
|
|
166
247
|
private applyTraitAdjectives;
|
|
248
|
+
/**
|
|
249
|
+
* Per-entity NPC behavior configs stashed at composition time and
|
|
250
|
+
* registered with the NPC service at engine-ready (world ids exist by
|
|
251
|
+
* then, so patrol routes resolve). guard/passive use the plugin's
|
|
252
|
+
* pre-registered behaviors; the factory-built three get per-entity ids.
|
|
253
|
+
*/
|
|
254
|
+
private readonly npcBehaviors;
|
|
255
|
+
/**
|
|
256
|
+
* ADR-215 Q4 core NPC routing: compose NpcTrait from a behavior
|
|
257
|
+
* adjective — behaviorId (`guard`/`passive` built-in; factory behaviors
|
|
258
|
+
* get `chord.npc.<id>`), movement defaults (movement behaviors default
|
|
259
|
+
* `canMove: true`), boolean fields via NPC_FIELD_ROUTES, and room-list
|
|
260
|
+
* fields (`allowed-rooms`/`forbidden-rooms`) filled through the shared
|
|
261
|
+
* pending-entity-ref mechanism once every entity exists.
|
|
262
|
+
*/
|
|
263
|
+
private applyNpcAdjective;
|
|
264
|
+
/**
|
|
265
|
+
* Build one per-entity NPC behavior instance from its stashed config
|
|
266
|
+
* (engine-ready time — world ids exist). Chord percentages convert to
|
|
267
|
+
* the platform's fractions here (`move-chance 50` → 0.5).
|
|
268
|
+
*/
|
|
269
|
+
private buildNpcBehavior;
|
|
270
|
+
/**
|
|
271
|
+
* Lower one `define machine` onto the ADR-119 shapes: platform id
|
|
272
|
+
* `chord.machine.<slug>`, role bindings as `$<role>` entries (world
|
|
273
|
+
* ids), action triggers on `if.action.<gerund>`, Chord conditions as
|
|
274
|
+
* custom guards over the shared evaluator, Chord bodies as one custom
|
|
275
|
+
* effect each through the runtime's statement executor.
|
|
276
|
+
*/
|
|
277
|
+
private buildMachineDefinition;
|
|
278
|
+
/**
|
|
279
|
+
* ADR-215 combat routing: compose `combatant` (CombatantTrait + the
|
|
280
|
+
* REQUIRED HealthTrait per ADR-226 — health/max-health route THERE) or
|
|
281
|
+
* `weapon` (WeaponTrait) from a composition's `with`-fields, via the
|
|
282
|
+
* exported COMBAT_FIELD_ROUTES table the manifest-conformance test pins.
|
|
283
|
+
*/
|
|
284
|
+
private applyCombatAdjective;
|
|
167
285
|
/**
|
|
168
286
|
* Initial values for a `define trait` instance: declared `starts`
|
|
169
287
|
* defaults overlaid by the composition's `with` config. Entity-name
|
|
@@ -220,6 +338,15 @@ export declare class ChordStory implements Story {
|
|
|
220
338
|
*/
|
|
221
339
|
private compileDetailChannels;
|
|
222
340
|
private phraseText;
|
|
341
|
+
/**
|
|
342
|
+
* Evaluate a channel's `return` construct (ADR-253 D1) against an event's
|
|
343
|
+
* payload to produce the channel's value:
|
|
344
|
+
* - `field` → the raw field value (may be a non-string);
|
|
345
|
+
* - `text` → the template with each `(slot)` replaced by its event field;
|
|
346
|
+
* - `phrase` → the named phrase's first-variant text, its `(slot)`s likewise
|
|
347
|
+
* filled from the event payload (locale-aware via `phraseText`).
|
|
348
|
+
*/
|
|
349
|
+
private evaluateChannelReturn;
|
|
223
350
|
}
|
|
224
351
|
/**
|
|
225
352
|
* Structural slice of `GameEngine.registerSlotEntry`'s entry (ADR-212 §1) —
|
package/loader.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../../../../repos/sharpee_v2/packages/story-loader/src/loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../../../../repos/sharpee_v2/packages/story-loader/src/loader.ts"],"names":[],"mappings":"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"}
|