@sharpee/engine 0.9.60-beta
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/LICENSE +21 -0
- package/README.md +328 -0
- package/dist/action-context-factory.d.ts +11 -0
- package/dist/action-context-factory.d.ts.map +1 -0
- package/dist/action-context-factory.js +258 -0
- package/dist/action-context-factory.js.map +1 -0
- package/dist/capability-dispatch-helper.d.ts +106 -0
- package/dist/capability-dispatch-helper.d.ts.map +1 -0
- package/dist/capability-dispatch-helper.js +269 -0
- package/dist/capability-dispatch-helper.js.map +1 -0
- package/dist/command-executor.d.ts +53 -0
- package/dist/command-executor.d.ts.map +1 -0
- package/dist/command-executor.js +329 -0
- package/dist/command-executor.js.map +1 -0
- package/dist/event-adapter.d.ts +44 -0
- package/dist/event-adapter.d.ts.map +1 -0
- package/dist/event-adapter.js +127 -0
- package/dist/event-adapter.js.map +1 -0
- package/dist/event-sequencer.d.ts +73 -0
- package/dist/event-sequencer.d.ts.map +1 -0
- package/dist/event-sequencer.js +134 -0
- package/dist/event-sequencer.js.map +1 -0
- package/dist/events/event-emitter.d.ts +34 -0
- package/dist/events/event-emitter.d.ts.map +1 -0
- package/dist/events/event-emitter.js +67 -0
- package/dist/events/event-emitter.js.map +1 -0
- package/dist/game-engine.d.ts +292 -0
- package/dist/game-engine.d.ts.map +1 -0
- package/dist/game-engine.js +1631 -0
- package/dist/game-engine.js.map +1 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +62 -0
- package/dist/index.js.map +1 -0
- package/dist/narrative/index.d.ts +5 -0
- package/dist/narrative/index.d.ts.map +1 -0
- package/dist/narrative/index.js +10 -0
- package/dist/narrative/index.js.map +1 -0
- package/dist/narrative/narrative-settings.d.ts +73 -0
- package/dist/narrative/narrative-settings.d.ts.map +1 -0
- package/dist/narrative/narrative-settings.js +28 -0
- package/dist/narrative/narrative-settings.js.map +1 -0
- package/dist/parser-interface.d.ts +77 -0
- package/dist/parser-interface.d.ts.map +1 -0
- package/dist/parser-interface.js +48 -0
- package/dist/parser-interface.js.map +1 -0
- package/dist/platform-operations.d.ts +83 -0
- package/dist/platform-operations.d.ts.map +1 -0
- package/dist/platform-operations.js +218 -0
- package/dist/platform-operations.js.map +1 -0
- package/dist/save-restore-service.d.ts +133 -0
- package/dist/save-restore-service.d.ts.map +1 -0
- package/dist/save-restore-service.js +446 -0
- package/dist/save-restore-service.js.map +1 -0
- package/dist/scheduler/index.d.ts +9 -0
- package/dist/scheduler/index.d.ts.map +1 -0
- package/dist/scheduler/index.js +25 -0
- package/dist/scheduler/index.js.map +1 -0
- package/dist/scheduler/scheduler-service.d.ts +75 -0
- package/dist/scheduler/scheduler-service.d.ts.map +1 -0
- package/dist/scheduler/scheduler-service.js +310 -0
- package/dist/scheduler/scheduler-service.js.map +1 -0
- package/dist/scheduler/seeded-random.d.ts +7 -0
- package/dist/scheduler/seeded-random.d.ts.map +1 -0
- package/dist/scheduler/seeded-random.js +11 -0
- package/dist/scheduler/seeded-random.js.map +1 -0
- package/dist/scheduler/types.d.ts +134 -0
- package/dist/scheduler/types.d.ts.map +1 -0
- package/dist/scheduler/types.js +9 -0
- package/dist/scheduler/types.js.map +1 -0
- package/dist/shared-data-keys.d.ts +53 -0
- package/dist/shared-data-keys.d.ts.map +1 -0
- package/dist/shared-data-keys.js +29 -0
- package/dist/shared-data-keys.js.map +1 -0
- package/dist/story.d.ts +211 -0
- package/dist/story.d.ts.map +1 -0
- package/dist/story.js +60 -0
- package/dist/story.js.map +1 -0
- package/dist/test-helpers/mock-text-service.d.ts +11 -0
- package/dist/test-helpers/mock-text-service.d.ts.map +1 -0
- package/dist/test-helpers/mock-text-service.js +47 -0
- package/dist/test-helpers/mock-text-service.js.map +1 -0
- package/dist/turn-event-processor.d.ts +89 -0
- package/dist/turn-event-processor.d.ts.map +1 -0
- package/dist/turn-event-processor.js +144 -0
- package/dist/turn-event-processor.js.map +1 -0
- package/dist/types.d.ts +214 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/dist/vocabulary-manager.d.ts +35 -0
- package/dist/vocabulary-manager.d.ts.map +1 -0
- package/dist/vocabulary-manager.js +74 -0
- package/dist/vocabulary-manager.js.map +1 -0
- package/package.json +70 -0
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Capability Dispatch Helper for Universal Dispatch
|
|
3
|
+
*
|
|
4
|
+
* Enables capability dispatch for ALL stdlib actions, not just specialized verbs.
|
|
5
|
+
* When an entity's trait declares a capability for an action, the trait's behavior
|
|
6
|
+
* handles the action instead of the stdlib default.
|
|
7
|
+
*
|
|
8
|
+
* This enables patterns like:
|
|
9
|
+
* - Troll blocking: TrollTrait handles 'if.action.going' to block passage
|
|
10
|
+
* - Custom containers: ChestTrait handles 'if.action.opening' for locked chest
|
|
11
|
+
* - Guardian items: AxeTrait handles 'if.action.taking' while troll guards it
|
|
12
|
+
*
|
|
13
|
+
* Resolution modes (ADR-090 extension):
|
|
14
|
+
* - first-wins: First entity with capability determines result
|
|
15
|
+
* - any-blocks: Any entity returning valid: false blocks
|
|
16
|
+
* - all-must-pass: All entities must return valid: true
|
|
17
|
+
* - highest-priority: Only highest priority entity is checked
|
|
18
|
+
*/
|
|
19
|
+
import { ISemanticEvent } from '@sharpee/core';
|
|
20
|
+
import { IFEntity, CapabilityBehavior, CapabilitySharedData, ITrait, CapabilityResolution } from '@sharpee/world-model';
|
|
21
|
+
import { ActionContext, ValidationResult } from '@sharpee/stdlib';
|
|
22
|
+
/**
|
|
23
|
+
* A single capability claim from an entity.
|
|
24
|
+
*/
|
|
25
|
+
export interface CapabilityClaim {
|
|
26
|
+
/** The entity making the claim */
|
|
27
|
+
entity: IFEntity;
|
|
28
|
+
/** The trait claiming the capability */
|
|
29
|
+
trait: ITrait;
|
|
30
|
+
/** The behavior to use */
|
|
31
|
+
behavior: CapabilityBehavior;
|
|
32
|
+
/** Priority for resolution ordering */
|
|
33
|
+
priority: number;
|
|
34
|
+
/** Resolution override from binding (if any) */
|
|
35
|
+
resolutionOverride?: CapabilityResolution;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Result of checking for capability dispatch.
|
|
39
|
+
*/
|
|
40
|
+
export interface CapabilityDispatchCheck {
|
|
41
|
+
/** Whether capability dispatch should be used */
|
|
42
|
+
shouldDispatch: boolean;
|
|
43
|
+
/** The trait claiming the capability (if found) - for single dispatch */
|
|
44
|
+
trait?: ITrait;
|
|
45
|
+
/** The behavior to use (if found) - for single dispatch */
|
|
46
|
+
behavior?: CapabilityBehavior;
|
|
47
|
+
/** The entity with the capability - for single dispatch */
|
|
48
|
+
entity?: IFEntity;
|
|
49
|
+
/** All claims found (for multi-entity resolution) */
|
|
50
|
+
claims?: CapabilityClaim[];
|
|
51
|
+
/** Resolution mode to use */
|
|
52
|
+
resolution?: CapabilityResolution;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Data stored for capability dispatch between phases.
|
|
56
|
+
*/
|
|
57
|
+
export interface CapabilityDispatchData {
|
|
58
|
+
trait: ITrait;
|
|
59
|
+
behavior: CapabilityBehavior;
|
|
60
|
+
entityId: string;
|
|
61
|
+
entityName: string;
|
|
62
|
+
sharedData: CapabilitySharedData;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Check if capability dispatch should be used for this action and target.
|
|
66
|
+
*
|
|
67
|
+
* @param actionId - The action being executed
|
|
68
|
+
* @param target - The target entity (directObject) - for backward compatibility
|
|
69
|
+
* @returns Check result with trait and behavior if dispatch should be used
|
|
70
|
+
*/
|
|
71
|
+
export declare function checkCapabilityDispatch(actionId: string, target: IFEntity | undefined): CapabilityDispatchCheck;
|
|
72
|
+
/**
|
|
73
|
+
* Check if capability dispatch should be used for this action across multiple entities.
|
|
74
|
+
*
|
|
75
|
+
* Collects all capability claims from the provided entities, sorts by priority,
|
|
76
|
+
* and returns the appropriate dispatch information based on resolution config.
|
|
77
|
+
*
|
|
78
|
+
* @param actionId - The action being executed
|
|
79
|
+
* @param entities - All entities involved in the action (directObject, indirectObject, etc.)
|
|
80
|
+
* @returns Check result with claims and resolution mode
|
|
81
|
+
*/
|
|
82
|
+
export declare function checkCapabilityDispatchMulti(actionId: string, entities: (IFEntity | undefined)[]): CapabilityDispatchCheck;
|
|
83
|
+
/**
|
|
84
|
+
* Execute capability dispatch validation phase.
|
|
85
|
+
*
|
|
86
|
+
* Handles resolution modes:
|
|
87
|
+
* - first-wins/highest-priority: Single behavior validates
|
|
88
|
+
* - any-blocks: All behaviors validate, any false blocks
|
|
89
|
+
* - all-must-pass: All behaviors must return true
|
|
90
|
+
*
|
|
91
|
+
* @returns ValidationResult with dispatch data if valid
|
|
92
|
+
*/
|
|
93
|
+
export declare function executeCapabilityValidate(check: CapabilityDispatchCheck, context: ActionContext): ValidationResult;
|
|
94
|
+
/**
|
|
95
|
+
* Execute capability dispatch execute phase.
|
|
96
|
+
*/
|
|
97
|
+
export declare function executeCapabilityExecute(context: ActionContext): void;
|
|
98
|
+
/**
|
|
99
|
+
* Execute capability dispatch report phase.
|
|
100
|
+
*/
|
|
101
|
+
export declare function executeCapabilityReport(context: ActionContext): ISemanticEvent[];
|
|
102
|
+
/**
|
|
103
|
+
* Execute capability dispatch blocked phase.
|
|
104
|
+
*/
|
|
105
|
+
export declare function executeCapabilityBlocked(context: ActionContext, result: ValidationResult, actionId: string): ISemanticEvent[];
|
|
106
|
+
//# sourceMappingURL=capability-dispatch-helper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capability-dispatch-helper.d.ts","sourceRoot":"","sources":["../src/capability-dispatch-helper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EACL,QAAQ,EAKR,kBAAkB,EAClB,oBAAoB,EAEpB,MAAM,EAEN,oBAAoB,EACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAU,aAAa,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,kCAAkC;IAClC,MAAM,EAAE,QAAQ,CAAC;IACjB,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,0BAA0B;IAC1B,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,kBAAkB,CAAC,EAAE,oBAAoB,CAAC;CAC3C;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,iDAAiD;IACjD,cAAc,EAAE,OAAO,CAAC;IACxB,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,2DAA2D;IAC3D,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,qDAAqD;IACrD,MAAM,CAAC,EAAE,eAAe,EAAE,CAAC;IAC3B,6BAA6B;IAC7B,UAAU,CAAC,EAAE,oBAAoB,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,oBAAoB,CAAC;CAClC;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,QAAQ,GAAG,SAAS,GAC3B,uBAAuB,CAOzB;AAED;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,CAAC,QAAQ,GAAG,SAAS,CAAC,EAAE,GACjC,uBAAuB,CAmEzB;AAYD;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,uBAAuB,EAC9B,OAAO,EAAE,aAAa,GACrB,gBAAgB,CAiGlB;AAuCD;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,aAAa,GACrB,IAAI,CAUN;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,aAAa,GACrB,cAAc,EAAE,CAgBlB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,gBAAgB,EACxB,QAAQ,EAAE,MAAM,GACf,cAAc,EAAE,CAyBlB"}
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Capability Dispatch Helper for Universal Dispatch
|
|
4
|
+
*
|
|
5
|
+
* Enables capability dispatch for ALL stdlib actions, not just specialized verbs.
|
|
6
|
+
* When an entity's trait declares a capability for an action, the trait's behavior
|
|
7
|
+
* handles the action instead of the stdlib default.
|
|
8
|
+
*
|
|
9
|
+
* This enables patterns like:
|
|
10
|
+
* - Troll blocking: TrollTrait handles 'if.action.going' to block passage
|
|
11
|
+
* - Custom containers: ChestTrait handles 'if.action.opening' for locked chest
|
|
12
|
+
* - Guardian items: AxeTrait handles 'if.action.taking' while troll guards it
|
|
13
|
+
*
|
|
14
|
+
* Resolution modes (ADR-090 extension):
|
|
15
|
+
* - first-wins: First entity with capability determines result
|
|
16
|
+
* - any-blocks: Any entity returning valid: false blocks
|
|
17
|
+
* - all-must-pass: All entities must return valid: true
|
|
18
|
+
* - highest-priority: Only highest priority entity is checked
|
|
19
|
+
*/
|
|
20
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
+
exports.checkCapabilityDispatch = checkCapabilityDispatch;
|
|
22
|
+
exports.checkCapabilityDispatchMulti = checkCapabilityDispatchMulti;
|
|
23
|
+
exports.executeCapabilityValidate = executeCapabilityValidate;
|
|
24
|
+
exports.executeCapabilityExecute = executeCapabilityExecute;
|
|
25
|
+
exports.executeCapabilityReport = executeCapabilityReport;
|
|
26
|
+
exports.executeCapabilityBlocked = executeCapabilityBlocked;
|
|
27
|
+
const world_model_1 = require("@sharpee/world-model");
|
|
28
|
+
/**
|
|
29
|
+
* Check if capability dispatch should be used for this action and target.
|
|
30
|
+
*
|
|
31
|
+
* @param actionId - The action being executed
|
|
32
|
+
* @param target - The target entity (directObject) - for backward compatibility
|
|
33
|
+
* @returns Check result with trait and behavior if dispatch should be used
|
|
34
|
+
*/
|
|
35
|
+
function checkCapabilityDispatch(actionId, target) {
|
|
36
|
+
if (!target) {
|
|
37
|
+
return { shouldDispatch: false };
|
|
38
|
+
}
|
|
39
|
+
// Use the multi-entity version with single entity
|
|
40
|
+
return checkCapabilityDispatchMulti(actionId, [target]);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Check if capability dispatch should be used for this action across multiple entities.
|
|
44
|
+
*
|
|
45
|
+
* Collects all capability claims from the provided entities, sorts by priority,
|
|
46
|
+
* and returns the appropriate dispatch information based on resolution config.
|
|
47
|
+
*
|
|
48
|
+
* @param actionId - The action being executed
|
|
49
|
+
* @param entities - All entities involved in the action (directObject, indirectObject, etc.)
|
|
50
|
+
* @returns Check result with claims and resolution mode
|
|
51
|
+
*/
|
|
52
|
+
function checkCapabilityDispatchMulti(actionId, entities) {
|
|
53
|
+
const validEntities = entities.filter((e) => e !== undefined);
|
|
54
|
+
if (validEntities.length === 0) {
|
|
55
|
+
return { shouldDispatch: false };
|
|
56
|
+
}
|
|
57
|
+
// Collect all claims
|
|
58
|
+
const claims = [];
|
|
59
|
+
for (const entity of validEntities) {
|
|
60
|
+
const trait = (0, world_model_1.findTraitWithCapability)(entity, actionId);
|
|
61
|
+
if (!trait)
|
|
62
|
+
continue;
|
|
63
|
+
const binding = (0, world_model_1.getBehaviorBinding)(trait, actionId);
|
|
64
|
+
if (!binding) {
|
|
65
|
+
// Trait claims capability but no behavior registered
|
|
66
|
+
console.warn(`Universal dispatch: trait "${trait.type}" claims "${actionId}" ` +
|
|
67
|
+
`but no behavior registered. Falling back to stdlib action.`);
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
claims.push({
|
|
71
|
+
entity,
|
|
72
|
+
trait,
|
|
73
|
+
behavior: binding.behavior,
|
|
74
|
+
priority: binding.priority,
|
|
75
|
+
resolutionOverride: binding.resolution
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
if (claims.length === 0) {
|
|
79
|
+
return { shouldDispatch: false };
|
|
80
|
+
}
|
|
81
|
+
// Sort by priority (highest first)
|
|
82
|
+
claims.sort((a, b) => b.priority - a.priority);
|
|
83
|
+
// Get resolution mode (use first binding override if present, else global config)
|
|
84
|
+
const firstOverride = claims.find(c => c.resolutionOverride)?.resolutionOverride;
|
|
85
|
+
const config = (0, world_model_1.getCapabilityConfig)(actionId);
|
|
86
|
+
const resolution = firstOverride ?? config.resolution;
|
|
87
|
+
// For single claim or first-wins/highest-priority, return simple result
|
|
88
|
+
if (claims.length === 1 || resolution === 'first-wins' || resolution === 'highest-priority') {
|
|
89
|
+
const primary = claims[0];
|
|
90
|
+
return {
|
|
91
|
+
shouldDispatch: true,
|
|
92
|
+
trait: primary.trait,
|
|
93
|
+
behavior: primary.behavior,
|
|
94
|
+
entity: primary.entity,
|
|
95
|
+
claims,
|
|
96
|
+
resolution
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
// For any-blocks or all-must-pass, return all claims for aggregate validation
|
|
100
|
+
return {
|
|
101
|
+
shouldDispatch: true,
|
|
102
|
+
trait: claims[0].trait,
|
|
103
|
+
behavior: claims[0].behavior,
|
|
104
|
+
entity: claims[0].entity,
|
|
105
|
+
claims,
|
|
106
|
+
resolution
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Convert capability effects to semantic events.
|
|
111
|
+
*/
|
|
112
|
+
function effectsToEvents(effects, context) {
|
|
113
|
+
return effects.map(effect => context.event(effect.type, effect.payload));
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Execute capability dispatch validation phase.
|
|
117
|
+
*
|
|
118
|
+
* Handles resolution modes:
|
|
119
|
+
* - first-wins/highest-priority: Single behavior validates
|
|
120
|
+
* - any-blocks: All behaviors validate, any false blocks
|
|
121
|
+
* - all-must-pass: All behaviors must return true
|
|
122
|
+
*
|
|
123
|
+
* @returns ValidationResult with dispatch data if valid
|
|
124
|
+
*/
|
|
125
|
+
function executeCapabilityValidate(check, context) {
|
|
126
|
+
const { trait, behavior, entity, claims, resolution } = check;
|
|
127
|
+
if (!trait || !behavior || !entity) {
|
|
128
|
+
return { valid: false, error: 'capability_dispatch_error' };
|
|
129
|
+
}
|
|
130
|
+
// Create sharedData for passing data between behavior phases
|
|
131
|
+
const sharedData = {};
|
|
132
|
+
// For first-wins or highest-priority (or single claim), just validate the primary
|
|
133
|
+
if (!claims || claims.length <= 1 || resolution === 'first-wins' || resolution === 'highest-priority') {
|
|
134
|
+
return validateSingleBehavior(entity, trait, behavior, context, sharedData);
|
|
135
|
+
}
|
|
136
|
+
// For any-blocks: validate all, return first failure
|
|
137
|
+
if (resolution === 'any-blocks') {
|
|
138
|
+
for (const claim of claims) {
|
|
139
|
+
const claimSharedData = {};
|
|
140
|
+
const result = claim.behavior.validate(claim.entity, context.world, context.player.id, claimSharedData);
|
|
141
|
+
if (!result.valid) {
|
|
142
|
+
// This claim blocks - use its error
|
|
143
|
+
const data = {
|
|
144
|
+
trait: claim.trait,
|
|
145
|
+
behavior: claim.behavior,
|
|
146
|
+
entityId: claim.entity.id,
|
|
147
|
+
entityName: claim.entity.name,
|
|
148
|
+
sharedData: claimSharedData
|
|
149
|
+
};
|
|
150
|
+
return {
|
|
151
|
+
valid: false,
|
|
152
|
+
error: result.error,
|
|
153
|
+
params: result.params,
|
|
154
|
+
data
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
// All passed - use primary for execute/report
|
|
159
|
+
const data = {
|
|
160
|
+
trait,
|
|
161
|
+
behavior,
|
|
162
|
+
entityId: entity.id,
|
|
163
|
+
entityName: entity.name,
|
|
164
|
+
sharedData
|
|
165
|
+
};
|
|
166
|
+
return { valid: true, data };
|
|
167
|
+
}
|
|
168
|
+
// For all-must-pass: same logic as any-blocks (any failure = overall failure)
|
|
169
|
+
if (resolution === 'all-must-pass') {
|
|
170
|
+
for (const claim of claims) {
|
|
171
|
+
const claimSharedData = {};
|
|
172
|
+
const result = claim.behavior.validate(claim.entity, context.world, context.player.id, claimSharedData);
|
|
173
|
+
if (!result.valid) {
|
|
174
|
+
const data = {
|
|
175
|
+
trait: claim.trait,
|
|
176
|
+
behavior: claim.behavior,
|
|
177
|
+
entityId: claim.entity.id,
|
|
178
|
+
entityName: claim.entity.name,
|
|
179
|
+
sharedData: claimSharedData
|
|
180
|
+
};
|
|
181
|
+
return {
|
|
182
|
+
valid: false,
|
|
183
|
+
error: result.error,
|
|
184
|
+
params: result.params,
|
|
185
|
+
data
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
const data = {
|
|
190
|
+
trait,
|
|
191
|
+
behavior,
|
|
192
|
+
entityId: entity.id,
|
|
193
|
+
entityName: entity.name,
|
|
194
|
+
sharedData
|
|
195
|
+
};
|
|
196
|
+
return { valid: true, data };
|
|
197
|
+
}
|
|
198
|
+
// Default: first-wins fallback
|
|
199
|
+
return validateSingleBehavior(entity, trait, behavior, context, sharedData);
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Validate a single behavior (helper for executeCapabilityValidate).
|
|
203
|
+
*/
|
|
204
|
+
function validateSingleBehavior(entity, trait, behavior, context, sharedData) {
|
|
205
|
+
const behaviorResult = behavior.validate(entity, context.world, context.player.id, sharedData);
|
|
206
|
+
const data = {
|
|
207
|
+
trait,
|
|
208
|
+
behavior,
|
|
209
|
+
entityId: entity.id,
|
|
210
|
+
entityName: entity.name,
|
|
211
|
+
sharedData
|
|
212
|
+
};
|
|
213
|
+
if (!behaviorResult.valid) {
|
|
214
|
+
return {
|
|
215
|
+
valid: false,
|
|
216
|
+
error: behaviorResult.error,
|
|
217
|
+
params: behaviorResult.params,
|
|
218
|
+
data
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
return { valid: true, data };
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Execute capability dispatch execute phase.
|
|
225
|
+
*/
|
|
226
|
+
function executeCapabilityExecute(context) {
|
|
227
|
+
const data = context.validationResult?.data;
|
|
228
|
+
const entity = context.command.directObject?.entity;
|
|
229
|
+
if (!entity || !data?.behavior) {
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
232
|
+
// Delegate execution to behavior
|
|
233
|
+
data.behavior.execute(entity, context.world, context.player.id, data.sharedData);
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Execute capability dispatch report phase.
|
|
237
|
+
*/
|
|
238
|
+
function executeCapabilityReport(context) {
|
|
239
|
+
const data = context.validationResult?.data;
|
|
240
|
+
const entity = context.command.directObject?.entity;
|
|
241
|
+
if (!entity || !data?.behavior) {
|
|
242
|
+
return [];
|
|
243
|
+
}
|
|
244
|
+
// Delegate reporting to behavior
|
|
245
|
+
const effects = data.behavior.report(entity, context.world, context.player.id, data.sharedData);
|
|
246
|
+
return effectsToEvents(effects, context);
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Execute capability dispatch blocked phase.
|
|
250
|
+
*/
|
|
251
|
+
function executeCapabilityBlocked(context, result, actionId) {
|
|
252
|
+
// Check both validationResult.data and result.data
|
|
253
|
+
const data = (context.validationResult?.data ?? result.data);
|
|
254
|
+
const entity = context.command.directObject?.entity;
|
|
255
|
+
// If we have a behavior, let it handle the blocked message
|
|
256
|
+
if (entity && data?.behavior) {
|
|
257
|
+
const effects = data.behavior.blocked(entity, context.world, context.player.id, result.error || 'action_blocked', data.sharedData);
|
|
258
|
+
return effectsToEvents(effects, context);
|
|
259
|
+
}
|
|
260
|
+
// Default blocked event (shouldn't normally reach here)
|
|
261
|
+
return [
|
|
262
|
+
context.event('action.blocked', {
|
|
263
|
+
actionId,
|
|
264
|
+
messageId: result.error || 'action_blocked',
|
|
265
|
+
params: result.params || {}
|
|
266
|
+
})
|
|
267
|
+
];
|
|
268
|
+
}
|
|
269
|
+
//# sourceMappingURL=capability-dispatch-helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capability-dispatch-helper.js","sourceRoot":"","sources":["../src/capability-dispatch-helper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Command Executor - Orchestrates command pipeline
|
|
3
|
+
*
|
|
4
|
+
* Responsibilities:
|
|
5
|
+
* - Orchestrate the four-phase pattern (validate → execute → report/blocked)
|
|
6
|
+
* - Handle implicit inference (ADR-104) when validation fails with pronouns
|
|
7
|
+
* - Pass results between phases
|
|
8
|
+
* - Return the final TurnResult
|
|
9
|
+
*
|
|
10
|
+
* All event creation is owned by the action components themselves.
|
|
11
|
+
*/
|
|
12
|
+
import { ISystemEvent, IGenericEventSource } from '@sharpee/core';
|
|
13
|
+
import { IParser, IParsedCommand } from '@sharpee/world-model';
|
|
14
|
+
import { WorldModel } from '@sharpee/world-model';
|
|
15
|
+
import { EventProcessor } from '@sharpee/event-processor';
|
|
16
|
+
import { ActionRegistry } from '@sharpee/stdlib';
|
|
17
|
+
import { GameContext, TurnResult, EngineConfig } from './types';
|
|
18
|
+
/**
|
|
19
|
+
* Transformer function for parsed commands.
|
|
20
|
+
* Called after parsing but before validation.
|
|
21
|
+
* Can modify the parsed command to bypass or alter validation behavior.
|
|
22
|
+
*
|
|
23
|
+
* @param parsed - The parsed command from the parser
|
|
24
|
+
* @param world - The world model for checking state (e.g., gdtMode)
|
|
25
|
+
* @returns The (potentially modified) parsed command
|
|
26
|
+
*/
|
|
27
|
+
export type ParsedCommandTransformer = (parsed: IParsedCommand, world: WorldModel) => IParsedCommand;
|
|
28
|
+
export declare class CommandExecutor {
|
|
29
|
+
private parser;
|
|
30
|
+
private validator;
|
|
31
|
+
private actionRegistry;
|
|
32
|
+
private eventProcessor;
|
|
33
|
+
private scopeResolver?;
|
|
34
|
+
private parsedCommandTransformers;
|
|
35
|
+
constructor(world: WorldModel, actionRegistry: ActionRegistry, eventProcessor: EventProcessor, parser: IParser, systemEvents?: IGenericEventSource<ISystemEvent>);
|
|
36
|
+
/**
|
|
37
|
+
* Register a transformer that can modify parsed commands before validation.
|
|
38
|
+
* Transformers are called in order of registration.
|
|
39
|
+
*
|
|
40
|
+
* @param transformer - Function to transform parsed commands
|
|
41
|
+
*/
|
|
42
|
+
registerParsedCommandTransformer(transformer: ParsedCommandTransformer): void;
|
|
43
|
+
/**
|
|
44
|
+
* Unregister a previously registered transformer.
|
|
45
|
+
*
|
|
46
|
+
* @param transformer - The transformer to remove
|
|
47
|
+
* @returns true if the transformer was found and removed
|
|
48
|
+
*/
|
|
49
|
+
unregisterParsedCommandTransformer(transformer: ParsedCommandTransformer): boolean;
|
|
50
|
+
execute(input: string, world: WorldModel, context: GameContext, config?: EngineConfig): Promise<TurnResult>;
|
|
51
|
+
}
|
|
52
|
+
export declare function createCommandExecutor(world: WorldModel, actionRegistry: ActionRegistry, eventProcessor: EventProcessor, parser: IParser, systemEvents?: IGenericEventSource<ISystemEvent>): CommandExecutor;
|
|
53
|
+
//# sourceMappingURL=command-executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-executor.d.ts","sourceRoot":"","sources":["../src/command-executor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAkB,YAAY,EAAE,mBAAmB,EAA0B,MAAM,eAAe,CAAC;AAC1G,OAAO,EAAE,OAAO,EAAqB,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGlF,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAEL,cAAc,EAKf,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAYhE;;;;;;;;GAQG;AACH,MAAM,MAAM,wBAAwB,GAAG,CACrC,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,UAAU,KACd,cAAc,CAAC;AAEpB,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC,OAAO,CAAC,yBAAyB,CAAkC;gBAGjE,KAAK,EAAE,UAAU,EACjB,cAAc,EAAE,cAAc,EAC9B,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,OAAO,EACf,YAAY,CAAC,EAAE,mBAAmB,CAAC,YAAY,CAAC;IAgBlD;;;;;OAKG;IACH,gCAAgC,CAAC,WAAW,EAAE,wBAAwB,GAAG,IAAI;IAI7E;;;;;OAKG;IACH,kCAAkC,CAAC,WAAW,EAAE,wBAAwB,GAAG,OAAO;IAS5E,OAAO,CACX,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,WAAW,EACpB,MAAM,CAAC,EAAE,YAAY,GACpB,OAAO,CAAC,UAAU,CAAC;CA4SvB;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,UAAU,EACjB,cAAc,EAAE,cAAc,EAC9B,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,OAAO,EACf,YAAY,CAAC,EAAE,mBAAmB,CAAC,YAAY,CAAC,GAC/C,eAAe,CAEjB"}
|