@sharpee/story-loader 3.1.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.
@@ -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 { CHORD_OCCURRENCE_PREFIX, CHORD_RNG_KEY, CHORD_STATE_PREFIX, CHORD_TRAIT_PREFIX, } from './state-keys';
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,UAAU,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAChG,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AACzG,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EACL,uBAAuB,EACvB,aAAa,EACb,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,cAAc,CAAC"}
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 errors_1 = require("./errors");
21
- Object.defineProperty(exports, "LoadError", { enumerable: true, get: function () { return errors_1.LoadError; } });
22
- var event_contract_1 = require("./event-contract");
23
- Object.defineProperty(exports, "EVENT_TRIGGERS", { enumerable: true, get: function () { return event_contract_1.EVENT_TRIGGERS; } });
24
- Object.defineProperty(exports, "EVENT_PAYLOAD_FIELDS", { enumerable: true, get: function () { return event_contract_1.EVENT_PAYLOAD_FIELDS; } });
25
- var hatch_context_1 = require("./hatch-context");
26
- Object.defineProperty(exports, "HATCH_CONTEXT_VERSION", { enumerable: true, get: function () { return hatch_context_1.HATCH_CONTEXT_VERSION; } });
27
- Object.defineProperty(exports, "stagingRenderContext", { enumerable: true, get: function () { return hatch_context_1.stagingRenderContext; } });
28
- Object.defineProperty(exports, "findChordLiteral", { enumerable: true, get: function () { return hatch_context_1.findChordLiteral; } });
29
- var loader_1 = require("./loader");
30
- Object.defineProperty(exports, "ChordDataTrait", { enumerable: true, get: function () { return loader_1.ChordDataTrait; } });
31
- Object.defineProperty(exports, "ChordDetailTrait", { enumerable: true, get: function () { return loader_1.ChordDetailTrait; } });
32
- Object.defineProperty(exports, "ChordStory", { enumerable: true, get: function () { return loader_1.ChordStory; } });
33
- Object.defineProperty(exports, "createStory", { enumerable: true, get: function () { return loader_1.createStory; } });
34
- var evaluator_1 = require("./evaluator");
35
- Object.defineProperty(exports, "Evaluator", { enumerable: true, get: function () { return evaluator_1.Evaluator; } });
36
- var runtime_1 = require("./runtime");
37
- Object.defineProperty(exports, "ChordRuntime", { enumerable: true, get: function () { return runtime_1.ChordRuntime; } });
38
- Object.defineProperty(exports, "ChordBehaviorTrait", { enumerable: true, get: function () { return runtime_1.ChordBehaviorTrait; } });
39
- var state_keys_1 = require("./state-keys");
40
- Object.defineProperty(exports, "CHORD_OCCURRENCE_PREFIX", { enumerable: true, get: function () { return state_keys_1.CHORD_OCCURRENCE_PREFIX; } });
41
- Object.defineProperty(exports, "CHORD_RNG_KEY", { enumerable: true, get: function () { return state_keys_1.CHORD_RNG_KEY; } });
42
- Object.defineProperty(exports, "CHORD_STATE_PREFIX", { enumerable: true, get: function () { return state_keys_1.CHORD_STATE_PREFIX; } });
43
- Object.defineProperty(exports, "CHORD_TRAIT_PREFIX", { enumerable: true, get: function () { return state_keys_1.CHORD_TRAIT_PREFIX; } });
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,mCAAqC;AAA5B,mGAAA,SAAS,OAAA;AAClB,mDAAwE;AAA/D,gHAAA,cAAc,OAAA;AAAE,sHAAA,oBAAoB,OAAA;AAC7C,iDAAgG;AAAvF,sHAAA,qBAAqB,OAAA;AAAE,qHAAA,oBAAoB,OAAA;AAAE,iHAAA,gBAAgB,OAAA;AACtE,mCAAyG;AAAhG,wGAAA,cAAc,OAAA;AAAE,0GAAA,gBAAgB,OAAA;AAAE,oGAAA,UAAU,OAAA;AAAE,qGAAA,WAAW,OAAA;AAClE,yCAAuE;AAA9D,sGAAA,SAAS,OAAA;AAClB,qCAA6D;AAApD,uGAAA,YAAY,OAAA;AAAE,6GAAA,kBAAkB,OAAA;AACzC,2CAKsB;AAJpB,qHAAA,uBAAuB,OAAA;AACvB,2GAAA,aAAa,OAAA;AACb,gHAAA,kBAAkB,OAAA;AAClB,gHAAA,kBAAkB,OAAA"}
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 { CapabilityBehavior, IFEntity, IParsedCommand, ITrait, WorldModel } from '@sharpee/world-model';
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,8 +84,8 @@ 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 behavior X from` hatches: CapabilityBehaviors by name. */
88
- readonly boundBehaviors: Map<string, CapabilityBehavior>;
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. */
@@ -155,7 +155,24 @@ export declare class ChordStory implements Story {
155
155
  };
156
156
  registerSlotEntry?(entry: ChordSlotEntry): void;
157
157
  registerParsedCommandTransformer?(t: (parsed: IParsedCommand, world: WorldModel) => IParsedCommand): void;
158
+ getClientCapabilities?(): object;
158
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;
159
176
  /**
160
177
  * The deadly-exit command transformer (ADR-227). Redirects `going
161
178
  * <deadly-direction>` from a room with declared deadly exits to
@@ -189,7 +206,27 @@ export declare class ChordStory implements Story {
189
206
  * ending event (Prerequisite 3). The caller (rule evaluator) emits it.
190
207
  */
191
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;
192
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;
193
230
  /**
194
231
  * Resolve trait-config entity references (`with tool X`, `with key X`)
195
232
  * to world entity ids (ADR-230 D3c / Phase 9a) — runs once, after every
@@ -208,6 +245,43 @@ export declare class ChordStory implements Story {
208
245
  */
209
246
  private checkCuttableImplementations;
210
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;
211
285
  /**
212
286
  * Initial values for a `define trait` instance: declared `starts`
213
287
  * defaults overlaid by the composition's `with` config. Entity-name
@@ -264,6 +338,15 @@ export declare class ChordStory implements Story {
264
338
  */
265
339
  private compileDetailChannels;
266
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;
267
350
  }
268
351
  /**
269
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":"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"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../../../../repos/sharpee_v2/packages/story-loader/src/loader.ts"],"names":[],"mappings":"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"}