@sharpee/plugin-state-machine 0.9.66-beta → 0.9.67-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/effect-executor.d.ts +8 -0
- package/effect-executor.d.ts.map +1 -0
- package/effect-executor.js +106 -0
- package/effect-executor.js.map +1 -0
- package/guard-evaluator.d.ts +9 -0
- package/guard-evaluator.d.ts.map +1 -0
- package/guard-evaluator.js +58 -0
- package/guard-evaluator.js.map +1 -0
- package/index.d.ts +9 -0
- package/index.d.ts.map +1 -0
- package/index.js +29 -0
- package/index.js.map +1 -0
- package/package.json +1 -10
- package/state-machine-plugin.d.ts +20 -0
- package/state-machine-plugin.d.ts.map +1 -0
- package/state-machine-plugin.js +45 -0
- package/state-machine-plugin.js.map +1 -0
- package/state-machine-runtime.d.ts +21 -0
- package/state-machine-runtime.d.ts.map +1 -0
- package/state-machine-runtime.js +162 -0
- package/state-machine-runtime.js.map +1 -0
- package/types.d.ts +149 -0
- package/types.d.ts.map +1 -0
- package/types.js +8 -0
- package/types.js.map +1 -0
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Effect Executor - applies state machine effects to the world model.
|
|
3
|
+
*/
|
|
4
|
+
import { EntityId, ISemanticEvent } from "./src/index";
|
|
5
|
+
import { WorldModel } from "./src/index";
|
|
6
|
+
import { Effect, EntityBindings } from './types';
|
|
7
|
+
export declare function executeEffects(effects: Effect[], world: WorldModel, bindings: EntityBindings, playerId: EntityId, machineId: string): ISemanticEvent[];
|
|
8
|
+
//# sourceMappingURL=effect-executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effect-executor.d.ts","sourceRoot":"","sources":["../../../../../mnt/c/repotemp/sharpee/packages/plugin-state-machine/src/effect-executor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAKjD,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EAAE,EACjB,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,MAAM,GAChB,cAAc,EAAE,CASlB"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Effect Executor - applies state machine effects to the world model.
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.executeEffects = executeEffects;
|
|
7
|
+
const guard_evaluator_1 = require("./guard-evaluator");
|
|
8
|
+
let eventCounter = 0;
|
|
9
|
+
function executeEffects(effects, world, bindings, playerId, machineId) {
|
|
10
|
+
const events = [];
|
|
11
|
+
for (const effect of effects) {
|
|
12
|
+
const result = executeEffect(effect, world, bindings, playerId, machineId);
|
|
13
|
+
events.push(...result);
|
|
14
|
+
}
|
|
15
|
+
return events;
|
|
16
|
+
}
|
|
17
|
+
function executeEffect(effect, world, bindings, playerId, machineId) {
|
|
18
|
+
switch (effect.type) {
|
|
19
|
+
case 'move': {
|
|
20
|
+
const entityId = (0, guard_evaluator_1.resolveRef)(effect.entityRef, bindings);
|
|
21
|
+
const destId = (0, guard_evaluator_1.resolveRef)(effect.destinationRef, bindings);
|
|
22
|
+
world.moveEntity(entityId, destId);
|
|
23
|
+
return [createEvent(`sm.entity_moved`, machineId, {
|
|
24
|
+
entityId,
|
|
25
|
+
destination: destId,
|
|
26
|
+
})];
|
|
27
|
+
}
|
|
28
|
+
case 'remove': {
|
|
29
|
+
const entityId = (0, guard_evaluator_1.resolveRef)(effect.entityRef, bindings);
|
|
30
|
+
world.removeEntity(entityId);
|
|
31
|
+
return [createEvent(`sm.entity_removed`, machineId, { entityId })];
|
|
32
|
+
}
|
|
33
|
+
case 'set_trait': {
|
|
34
|
+
const entityId = (0, guard_evaluator_1.resolveRef)(effect.entityRef, bindings);
|
|
35
|
+
const entity = world.getEntity(entityId);
|
|
36
|
+
if (entity) {
|
|
37
|
+
const trait = entity.getTrait(effect.trait);
|
|
38
|
+
if (trait) {
|
|
39
|
+
trait[effect.property] = effect.value;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return [];
|
|
43
|
+
}
|
|
44
|
+
case 'set_state': {
|
|
45
|
+
world.setStateValue(effect.key, effect.value);
|
|
46
|
+
return [];
|
|
47
|
+
}
|
|
48
|
+
case 'message': {
|
|
49
|
+
return [createEvent(effect.messageId, machineId, {
|
|
50
|
+
...(effect.params || {}),
|
|
51
|
+
source: 'state-machine',
|
|
52
|
+
})];
|
|
53
|
+
}
|
|
54
|
+
case 'emit_event': {
|
|
55
|
+
const entities = {};
|
|
56
|
+
if (effect.entities) {
|
|
57
|
+
for (const [role, ref] of Object.entries(effect.entities)) {
|
|
58
|
+
if (ref)
|
|
59
|
+
entities[role] = (0, guard_evaluator_1.resolveRef)(ref, bindings);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return [{
|
|
63
|
+
id: `sm-event-${++eventCounter}`,
|
|
64
|
+
type: effect.eventType,
|
|
65
|
+
timestamp: Date.now(),
|
|
66
|
+
entities,
|
|
67
|
+
data: effect.data,
|
|
68
|
+
}];
|
|
69
|
+
}
|
|
70
|
+
case 'custom': {
|
|
71
|
+
const result = effect.execute(world, bindings, playerId);
|
|
72
|
+
const events = [];
|
|
73
|
+
if (result.events) {
|
|
74
|
+
for (const e of result.events) {
|
|
75
|
+
events.push({
|
|
76
|
+
id: `sm-custom-${++eventCounter}`,
|
|
77
|
+
type: e.type,
|
|
78
|
+
timestamp: Date.now(),
|
|
79
|
+
entities: (e.entities || {}),
|
|
80
|
+
data: e.data,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
if (result.messages) {
|
|
85
|
+
for (const m of result.messages) {
|
|
86
|
+
events.push(createEvent(m.messageId, machineId, {
|
|
87
|
+
...(m.params || {}),
|
|
88
|
+
source: 'state-machine',
|
|
89
|
+
}));
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return events;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
function createEvent(type, machineId, data) {
|
|
97
|
+
return {
|
|
98
|
+
id: `sm-${++eventCounter}`,
|
|
99
|
+
type,
|
|
100
|
+
timestamp: Date.now(),
|
|
101
|
+
entities: {},
|
|
102
|
+
data,
|
|
103
|
+
tags: ['state-machine', machineId],
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=effect-executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effect-executor.js","sourceRoot":"","sources":["../../../../../../../../mnt/c/repotemp/sharpee/packages/plugin-state-machine/src/effect-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Guard Evaluator - evaluates guard conditions against world state.
|
|
3
|
+
*/
|
|
4
|
+
import { EntityId } from "./src/index";
|
|
5
|
+
import { WorldModel } from "./src/index";
|
|
6
|
+
import { GuardCondition, EntityBindings } from './types';
|
|
7
|
+
export declare function evaluateGuard(guard: GuardCondition, world: WorldModel, bindings: EntityBindings, playerId: EntityId): boolean;
|
|
8
|
+
export declare function resolveRef(ref: string, bindings: EntityBindings): EntityId;
|
|
9
|
+
//# sourceMappingURL=guard-evaluator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guard-evaluator.d.ts","sourceRoot":"","sources":["../../../../../mnt/c/repotemp/sharpee/packages/plugin-state-machine/src/guard-evaluator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EACL,cAAc,EACd,cAAc,EACf,MAAM,SAAS,CAAC;AAEjB,wBAAgB,aAAa,CAC3B,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAmBT;AAuCD,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,QAAQ,CAS1E"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Guard Evaluator - evaluates guard conditions against world state.
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.evaluateGuard = evaluateGuard;
|
|
7
|
+
exports.resolveRef = resolveRef;
|
|
8
|
+
function evaluateGuard(guard, world, bindings, playerId) {
|
|
9
|
+
switch (guard.type) {
|
|
10
|
+
case 'entity':
|
|
11
|
+
return evaluateEntityGuard(guard, world, bindings);
|
|
12
|
+
case 'state':
|
|
13
|
+
return world.getStateValue(guard.key) === guard.value;
|
|
14
|
+
case 'location':
|
|
15
|
+
return evaluateLocationGuard(guard, world, bindings, playerId);
|
|
16
|
+
case 'inventory':
|
|
17
|
+
return evaluateInventoryGuard(guard, world, bindings, playerId);
|
|
18
|
+
case 'and':
|
|
19
|
+
return guard.conditions.every(c => evaluateGuard(c, world, bindings, playerId));
|
|
20
|
+
case 'or':
|
|
21
|
+
return guard.conditions.some(c => evaluateGuard(c, world, bindings, playerId));
|
|
22
|
+
case 'not':
|
|
23
|
+
return !guard.conditions.every(c => evaluateGuard(c, world, bindings, playerId));
|
|
24
|
+
case 'custom':
|
|
25
|
+
return guard.evaluate(world, bindings, playerId);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
function evaluateEntityGuard(guard, world, bindings) {
|
|
29
|
+
const entityId = resolveRef(guard.entityRef, bindings);
|
|
30
|
+
const entity = world.getEntity(entityId);
|
|
31
|
+
if (!entity)
|
|
32
|
+
return false;
|
|
33
|
+
const trait = entity.getTrait(guard.trait);
|
|
34
|
+
if (!trait)
|
|
35
|
+
return false;
|
|
36
|
+
return trait[guard.property] === guard.value;
|
|
37
|
+
}
|
|
38
|
+
function evaluateLocationGuard(guard, world, bindings, playerId) {
|
|
39
|
+
const actorId = guard.actorRef ? resolveRef(guard.actorRef, bindings) : playerId;
|
|
40
|
+
const roomId = resolveRef(guard.roomRef, bindings);
|
|
41
|
+
return world.getLocation(actorId) === roomId;
|
|
42
|
+
}
|
|
43
|
+
function evaluateInventoryGuard(guard, world, bindings, playerId) {
|
|
44
|
+
const actorId = guard.actorRef ? resolveRef(guard.actorRef, bindings) : playerId;
|
|
45
|
+
const entityId = resolveRef(guard.entityRef, bindings);
|
|
46
|
+
return world.getLocation(entityId) === actorId;
|
|
47
|
+
}
|
|
48
|
+
function resolveRef(ref, bindings) {
|
|
49
|
+
if (ref.startsWith('$')) {
|
|
50
|
+
const bound = bindings[ref];
|
|
51
|
+
if (!bound) {
|
|
52
|
+
throw new Error(`Unresolved binding: ${ref}`);
|
|
53
|
+
}
|
|
54
|
+
return bound;
|
|
55
|
+
}
|
|
56
|
+
return ref;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=guard-evaluator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guard-evaluator.js","sourceRoot":"","sources":["../../../../../../../../mnt/c/repotemp/sharpee/packages/plugin-state-machine/src/guard-evaluator.ts"],"names":[],"mappings":"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"}
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @sharpee/plugin-state-machine - Declarative state machine plugin (ADR-119, ADR-120)
|
|
3
|
+
*/
|
|
4
|
+
export * from './types';
|
|
5
|
+
export * from './state-machine-plugin';
|
|
6
|
+
export * from './state-machine-runtime';
|
|
7
|
+
export { evaluateGuard, resolveRef } from './guard-evaluator';
|
|
8
|
+
export { executeEffects } from './effect-executor';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
package/index.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../mnt/c/repotemp/sharpee/packages/plugin-state-machine/src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC"}
|
package/index.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @sharpee/plugin-state-machine - Declarative state machine plugin (ADR-119, ADR-120)
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
17
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
18
|
+
};
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
exports.executeEffects = exports.resolveRef = exports.evaluateGuard = void 0;
|
|
21
|
+
__exportStar(require("./types"), exports);
|
|
22
|
+
__exportStar(require("./state-machine-plugin"), exports);
|
|
23
|
+
__exportStar(require("./state-machine-runtime"), exports);
|
|
24
|
+
var guard_evaluator_1 = require("./guard-evaluator");
|
|
25
|
+
Object.defineProperty(exports, "evaluateGuard", { enumerable: true, get: function () { return guard_evaluator_1.evaluateGuard; } });
|
|
26
|
+
Object.defineProperty(exports, "resolveRef", { enumerable: true, get: function () { return guard_evaluator_1.resolveRef; } });
|
|
27
|
+
var effect_executor_1 = require("./effect-executor");
|
|
28
|
+
Object.defineProperty(exports, "executeEffects", { enumerable: true, get: function () { return effect_executor_1.executeEffects; } });
|
|
29
|
+
//# sourceMappingURL=index.js.map
|
package/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../mnt/c/repotemp/sharpee/packages/plugin-state-machine/src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;AAEH,0CAAwB;AACxB,yDAAuC;AACvC,0DAAwC;AACxC,qDAA8D;AAArD,gHAAA,aAAa,OAAA;AAAE,6GAAA,UAAU,OAAA;AAClC,qDAAmD;AAA1C,iHAAA,cAAc,OAAA"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sharpee/plugin-state-machine",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.67-beta",
|
|
4
4
|
"description": "State machine plugin for Sharpee engine - declarative puzzle and narrative orchestration (ADR-119, ADR-120)",
|
|
5
5
|
"main": "./index.js",
|
|
6
|
-
"module": "dist-npm/index.js",
|
|
7
6
|
"types": "./index.d.ts",
|
|
8
7
|
"exports": {
|
|
9
8
|
".": {
|
|
@@ -12,14 +11,6 @@
|
|
|
12
11
|
"default": "./index.js"
|
|
13
12
|
}
|
|
14
13
|
},
|
|
15
|
-
"scripts": {
|
|
16
|
-
"build": "tsc",
|
|
17
|
-
"clean": "rimraf dist",
|
|
18
|
-
"build:npm": "tsc --outDir dist-npm"
|
|
19
|
-
},
|
|
20
|
-
"files": [
|
|
21
|
-
"dist-npm"
|
|
22
|
-
],
|
|
23
14
|
"keywords": [
|
|
24
15
|
"interactive-fiction",
|
|
25
16
|
"sharpee",
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* StateMachinePlugin - Wraps state machine registry as a TurnPlugin (ADR-119, ADR-120)
|
|
3
|
+
*
|
|
4
|
+
* Priority 75: Runs after NPCs (100) but before scheduler (50).
|
|
5
|
+
* Evaluates state machine transitions after each successful player action.
|
|
6
|
+
*/
|
|
7
|
+
import { ISemanticEvent } from "./src/index";
|
|
8
|
+
import { TurnPlugin, TurnPluginContext } from "./src/index";
|
|
9
|
+
import { StateMachineRegistry } from './state-machine-runtime';
|
|
10
|
+
export declare class StateMachinePlugin implements TurnPlugin {
|
|
11
|
+
id: string;
|
|
12
|
+
priority: number;
|
|
13
|
+
private registry;
|
|
14
|
+
constructor();
|
|
15
|
+
onAfterAction(ctx: TurnPluginContext): ISemanticEvent[];
|
|
16
|
+
getState(): unknown;
|
|
17
|
+
setState(state: unknown): void;
|
|
18
|
+
getRegistry(): StateMachineRegistry;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=state-machine-plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-machine-plugin.d.ts","sourceRoot":"","sources":["../../../../../mnt/c/repotemp/sharpee/packages/plugin-state-machine/src/state-machine-plugin.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAG/D,qBAAa,kBAAmB,YAAW,UAAU;IACnD,EAAE,SAAkC;IACpC,QAAQ,SAAM;IACd,OAAO,CAAC,QAAQ,CAAuB;;IAMvC,aAAa,CAAC,GAAG,EAAE,iBAAiB,GAAG,cAAc,EAAE;IAkBvD,QAAQ,IAAI,OAAO;IAInB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAI9B,WAAW,IAAI,oBAAoB;CAGpC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* StateMachinePlugin - Wraps state machine registry as a TurnPlugin (ADR-119, ADR-120)
|
|
4
|
+
*
|
|
5
|
+
* Priority 75: Runs after NPCs (100) but before scheduler (50).
|
|
6
|
+
* Evaluates state machine transitions after each successful player action.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.StateMachinePlugin = void 0;
|
|
10
|
+
const state_machine_runtime_1 = require("./state-machine-runtime");
|
|
11
|
+
class StateMachinePlugin {
|
|
12
|
+
id = 'sharpee.plugin.state-machine';
|
|
13
|
+
priority = 75;
|
|
14
|
+
registry;
|
|
15
|
+
constructor() {
|
|
16
|
+
this.registry = new state_machine_runtime_1.StateMachineRegistry();
|
|
17
|
+
}
|
|
18
|
+
onAfterAction(ctx) {
|
|
19
|
+
const evalCtx = {
|
|
20
|
+
world: ctx.world,
|
|
21
|
+
playerId: ctx.playerId,
|
|
22
|
+
playerLocation: ctx.playerLocation,
|
|
23
|
+
turn: ctx.turn,
|
|
24
|
+
actionId: ctx.actionResult?.actionId,
|
|
25
|
+
actionTargetId: ctx.actionResult?.targetId,
|
|
26
|
+
actionEvents: ctx.actionEvents?.map(e => ({
|
|
27
|
+
type: e.type,
|
|
28
|
+
data: e.data,
|
|
29
|
+
entities: e.entities,
|
|
30
|
+
})),
|
|
31
|
+
};
|
|
32
|
+
return this.registry.evaluate(evalCtx);
|
|
33
|
+
}
|
|
34
|
+
getState() {
|
|
35
|
+
return this.registry.getState();
|
|
36
|
+
}
|
|
37
|
+
setState(state) {
|
|
38
|
+
this.registry.setState(state);
|
|
39
|
+
}
|
|
40
|
+
getRegistry() {
|
|
41
|
+
return this.registry;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.StateMachinePlugin = StateMachinePlugin;
|
|
45
|
+
//# sourceMappingURL=state-machine-plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-machine-plugin.js","sourceRoot":"","sources":["../../../../../../../../mnt/c/repotemp/sharpee/packages/plugin-state-machine/src/state-machine-plugin.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAIH,mEAA+D;AAG/D,MAAa,kBAAkB;IAC7B,EAAE,GAAG,8BAA8B,CAAC;IACpC,QAAQ,GAAG,EAAE,CAAC;IACN,QAAQ,CAAuB;IAEvC;QACE,IAAI,CAAC,QAAQ,GAAG,IAAI,4CAAoB,EAAE,CAAC;IAC7C,CAAC;IAED,aAAa,CAAC,GAAsB;QAClC,MAAM,OAAO,GAAsB;YACjC,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,cAAc,EAAE,GAAG,CAAC,cAAc;YAClC,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,QAAQ,EAAE,GAAG,CAAC,YAAY,EAAE,QAAQ;YACpC,cAAc,EAAE,GAAG,CAAC,YAAY,EAAE,QAAQ;YAC1C,YAAY,EAAE,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACxC,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,QAAQ,EAAE,CAAC,CAAC,QAAkC;aAC/C,CAAC,CAAC;SACJ,CAAC;QAEF,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAClC,CAAC;IAED,QAAQ,CAAC,KAAc;QACrB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAkC,CAAC,CAAC;IAC7D,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;CACF;AAtCD,gDAsCC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* State Machine Runtime (ADR-119)
|
|
3
|
+
*
|
|
4
|
+
* Manages registered state machines and evaluates transitions each turn.
|
|
5
|
+
*/
|
|
6
|
+
import { ISemanticEvent } from "./src/index";
|
|
7
|
+
import { StateMachineDefinition, EntityBindings, EvaluationContext, StateMachineRegistryState } from './types';
|
|
8
|
+
export declare class StateMachineRegistry {
|
|
9
|
+
private machines;
|
|
10
|
+
register(definition: StateMachineDefinition, bindings?: EntityBindings): void;
|
|
11
|
+
unregister(id: string): void;
|
|
12
|
+
getMachineState(id: string): string | undefined;
|
|
13
|
+
getMachineHistory(id: string): string[] | undefined;
|
|
14
|
+
evaluate(ctx: EvaluationContext): ISemanticEvent[];
|
|
15
|
+
private findMatchingTransition;
|
|
16
|
+
private triggerMatches;
|
|
17
|
+
private executeTransition;
|
|
18
|
+
getState(): StateMachineRegistryState;
|
|
19
|
+
setState(state: StateMachineRegistryState): void;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=state-machine-runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-machine-runtime.d.ts","sourceRoot":"","sources":["../../../../../mnt/c/repotemp/sharpee/packages/plugin-state-machine/src/state-machine-runtime.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EACL,sBAAsB,EACtB,cAAc,EACd,iBAAiB,EAIjB,yBAAyB,EAC1B,MAAM,SAAS,CAAC;AAWjB,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAwC;IAExD,QAAQ,CAAC,UAAU,EAAE,sBAAsB,EAAE,QAAQ,GAAE,cAAmB,GAAG,IAAI;IAgBjF,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAI5B,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI/C,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS;IAInD,QAAQ,CAAC,GAAG,EAAE,iBAAiB,GAAG,cAAc,EAAE;IAsBlD,OAAO,CAAC,sBAAsB;IAmB9B,OAAO,CAAC,cAAc;IAyCtB,OAAO,CAAC,iBAAiB;IA2DzB,QAAQ,IAAI,yBAAyB;IAYrC,QAAQ,CAAC,KAAK,EAAE,yBAAyB,GAAG,IAAI;CASjD"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* State Machine Runtime (ADR-119)
|
|
4
|
+
*
|
|
5
|
+
* Manages registered state machines and evaluates transitions each turn.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.StateMachineRegistry = void 0;
|
|
9
|
+
const guard_evaluator_1 = require("./guard-evaluator");
|
|
10
|
+
const effect_executor_1 = require("./effect-executor");
|
|
11
|
+
class StateMachineRegistry {
|
|
12
|
+
machines = new Map();
|
|
13
|
+
register(definition, bindings = {}) {
|
|
14
|
+
if (this.machines.has(definition.id)) {
|
|
15
|
+
throw new Error(`State machine already registered: ${definition.id}`);
|
|
16
|
+
}
|
|
17
|
+
// Validate initial state exists
|
|
18
|
+
if (!definition.states[definition.initialState]) {
|
|
19
|
+
throw new Error(`Initial state '${definition.initialState}' not found in machine '${definition.id}'`);
|
|
20
|
+
}
|
|
21
|
+
this.machines.set(definition.id, {
|
|
22
|
+
definition,
|
|
23
|
+
bindings: { ...bindings },
|
|
24
|
+
currentState: definition.initialState,
|
|
25
|
+
history: [definition.initialState],
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
unregister(id) {
|
|
29
|
+
this.machines.delete(id);
|
|
30
|
+
}
|
|
31
|
+
getMachineState(id) {
|
|
32
|
+
return this.machines.get(id)?.currentState;
|
|
33
|
+
}
|
|
34
|
+
getMachineHistory(id) {
|
|
35
|
+
return this.machines.get(id)?.history;
|
|
36
|
+
}
|
|
37
|
+
evaluate(ctx) {
|
|
38
|
+
const allEvents = [];
|
|
39
|
+
for (const machine of this.machines.values()) {
|
|
40
|
+
const stateDef = machine.definition.states[machine.currentState];
|
|
41
|
+
if (!stateDef || stateDef.terminal || !stateDef.transitions?.length)
|
|
42
|
+
continue;
|
|
43
|
+
const transition = this.findMatchingTransition(stateDef.transitions, machine, ctx);
|
|
44
|
+
if (transition) {
|
|
45
|
+
const events = this.executeTransition(machine, transition, ctx);
|
|
46
|
+
allEvents.push(...events);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return allEvents;
|
|
50
|
+
}
|
|
51
|
+
findMatchingTransition(transitions, machine, ctx) {
|
|
52
|
+
// Sort by priority (higher first), stable sort
|
|
53
|
+
const sorted = [...transitions].sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));
|
|
54
|
+
for (const transition of sorted) {
|
|
55
|
+
if (!this.triggerMatches(transition.trigger, machine, ctx))
|
|
56
|
+
continue;
|
|
57
|
+
if (transition.guard && !(0, guard_evaluator_1.evaluateGuard)(transition.guard, ctx.world, machine.bindings, ctx.playerId))
|
|
58
|
+
continue;
|
|
59
|
+
return transition;
|
|
60
|
+
}
|
|
61
|
+
return undefined;
|
|
62
|
+
}
|
|
63
|
+
triggerMatches(trigger, machine, ctx) {
|
|
64
|
+
switch (trigger.type) {
|
|
65
|
+
case 'action': {
|
|
66
|
+
if (ctx.actionId !== trigger.actionId)
|
|
67
|
+
return false;
|
|
68
|
+
if (trigger.targetEntity) {
|
|
69
|
+
const expectedId = trigger.targetEntity.startsWith('$')
|
|
70
|
+
? machine.bindings[trigger.targetEntity]
|
|
71
|
+
: trigger.targetEntity;
|
|
72
|
+
if (ctx.actionTargetId !== expectedId)
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
case 'event': {
|
|
78
|
+
if (!ctx.actionEvents)
|
|
79
|
+
return false;
|
|
80
|
+
return ctx.actionEvents.some(event => {
|
|
81
|
+
if (event.type !== trigger.eventId)
|
|
82
|
+
return false;
|
|
83
|
+
if (trigger.filter && event.data) {
|
|
84
|
+
const data = event.data;
|
|
85
|
+
for (const [key, value] of Object.entries(trigger.filter)) {
|
|
86
|
+
// Resolve binding references in filter values
|
|
87
|
+
const expected = typeof value === 'string' && value.startsWith('$')
|
|
88
|
+
? machine.bindings[value]
|
|
89
|
+
: value;
|
|
90
|
+
if (data[key] !== expected)
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return true;
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
case 'condition': {
|
|
98
|
+
return (0, guard_evaluator_1.evaluateGuard)(trigger.condition, ctx.world, machine.bindings, ctx.playerId);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
executeTransition(machine, transition, ctx) {
|
|
103
|
+
const events = [];
|
|
104
|
+
const currentStateDef = machine.definition.states[machine.currentState];
|
|
105
|
+
const targetStateDef = machine.definition.states[transition.target];
|
|
106
|
+
if (!targetStateDef) {
|
|
107
|
+
throw new Error(`Target state '${transition.target}' not found in machine '${machine.definition.id}'`);
|
|
108
|
+
}
|
|
109
|
+
// 1. Execute onExit effects of current state
|
|
110
|
+
if (currentStateDef?.onExit) {
|
|
111
|
+
events.push(...(0, effect_executor_1.executeEffects)(currentStateDef.onExit, ctx.world, machine.bindings, ctx.playerId, machine.definition.id));
|
|
112
|
+
}
|
|
113
|
+
// 2. Execute transition effects
|
|
114
|
+
if (transition.effects) {
|
|
115
|
+
events.push(...(0, effect_executor_1.executeEffects)(transition.effects, ctx.world, machine.bindings, ctx.playerId, machine.definition.id));
|
|
116
|
+
}
|
|
117
|
+
// 3. Move to target state
|
|
118
|
+
machine.currentState = transition.target;
|
|
119
|
+
machine.history.push(transition.target);
|
|
120
|
+
// 4. Execute onEnter effects of target state
|
|
121
|
+
if (targetStateDef.onEnter) {
|
|
122
|
+
events.push(...(0, effect_executor_1.executeEffects)(targetStateDef.onEnter, ctx.world, machine.bindings, ctx.playerId, machine.definition.id));
|
|
123
|
+
}
|
|
124
|
+
// 5. Emit transition event
|
|
125
|
+
events.push({
|
|
126
|
+
id: `sm-transition-${Date.now()}`,
|
|
127
|
+
type: 'sm.transition',
|
|
128
|
+
timestamp: Date.now(),
|
|
129
|
+
entities: {},
|
|
130
|
+
data: {
|
|
131
|
+
machineId: machine.definition.id,
|
|
132
|
+
from: machine.history[machine.history.length - 2],
|
|
133
|
+
to: transition.target,
|
|
134
|
+
},
|
|
135
|
+
tags: ['state-machine', machine.definition.id],
|
|
136
|
+
});
|
|
137
|
+
return events;
|
|
138
|
+
}
|
|
139
|
+
// ─── Serialization ──────────────────────────────────────────────────────
|
|
140
|
+
getState() {
|
|
141
|
+
const instances = [];
|
|
142
|
+
for (const machine of this.machines.values()) {
|
|
143
|
+
instances.push({
|
|
144
|
+
id: machine.definition.id,
|
|
145
|
+
currentState: machine.currentState,
|
|
146
|
+
history: [...machine.history],
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
return { instances };
|
|
150
|
+
}
|
|
151
|
+
setState(state) {
|
|
152
|
+
for (const instanceState of state.instances) {
|
|
153
|
+
const machine = this.machines.get(instanceState.id);
|
|
154
|
+
if (machine) {
|
|
155
|
+
machine.currentState = instanceState.currentState;
|
|
156
|
+
machine.history = [...instanceState.history];
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
exports.StateMachineRegistry = StateMachineRegistry;
|
|
162
|
+
//# sourceMappingURL=state-machine-runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-machine-runtime.js","sourceRoot":"","sources":["../../../../../../../../mnt/c/repotemp/sharpee/packages/plugin-state-machine/src/state-machine-runtime.ts"],"names":[],"mappings":"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"}
|
package/types.d.ts
ADDED
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* State Machine Types (ADR-119)
|
|
3
|
+
*
|
|
4
|
+
* Declarative state machine definitions for puzzle and narrative orchestration.
|
|
5
|
+
*/
|
|
6
|
+
import { EntityId } from "./src/index";
|
|
7
|
+
import { WorldModel } from "./src/index";
|
|
8
|
+
export interface StateMachineDefinition {
|
|
9
|
+
id: string;
|
|
10
|
+
description?: string;
|
|
11
|
+
initialState: string;
|
|
12
|
+
states: Record<string, StateDefinition>;
|
|
13
|
+
}
|
|
14
|
+
export interface StateDefinition {
|
|
15
|
+
description?: string;
|
|
16
|
+
transitions?: TransitionDefinition[];
|
|
17
|
+
onEnter?: Effect[];
|
|
18
|
+
onExit?: Effect[];
|
|
19
|
+
terminal?: boolean;
|
|
20
|
+
}
|
|
21
|
+
export interface TransitionDefinition {
|
|
22
|
+
target: string;
|
|
23
|
+
trigger: TransitionTrigger;
|
|
24
|
+
guard?: GuardCondition;
|
|
25
|
+
effects?: Effect[];
|
|
26
|
+
priority?: number;
|
|
27
|
+
}
|
|
28
|
+
export type TransitionTrigger = ActionTrigger | EventTrigger | ConditionTrigger;
|
|
29
|
+
export interface ActionTrigger {
|
|
30
|
+
type: 'action';
|
|
31
|
+
actionId: string;
|
|
32
|
+
targetEntity?: string;
|
|
33
|
+
}
|
|
34
|
+
export interface EventTrigger {
|
|
35
|
+
type: 'event';
|
|
36
|
+
eventId: string;
|
|
37
|
+
filter?: Record<string, unknown>;
|
|
38
|
+
}
|
|
39
|
+
export interface ConditionTrigger {
|
|
40
|
+
type: 'condition';
|
|
41
|
+
condition: GuardCondition;
|
|
42
|
+
}
|
|
43
|
+
export type GuardCondition = EntityGuard | StateGuard | LocationGuard | InventoryGuard | CompositeGuard | CustomGuard;
|
|
44
|
+
export interface EntityGuard {
|
|
45
|
+
type: 'entity';
|
|
46
|
+
entityRef: string;
|
|
47
|
+
trait: string;
|
|
48
|
+
property: string;
|
|
49
|
+
value: unknown;
|
|
50
|
+
}
|
|
51
|
+
export interface StateGuard {
|
|
52
|
+
type: 'state';
|
|
53
|
+
key: string;
|
|
54
|
+
value: unknown;
|
|
55
|
+
}
|
|
56
|
+
export interface LocationGuard {
|
|
57
|
+
type: 'location';
|
|
58
|
+
actorRef?: string;
|
|
59
|
+
roomRef: string;
|
|
60
|
+
}
|
|
61
|
+
export interface InventoryGuard {
|
|
62
|
+
type: 'inventory';
|
|
63
|
+
actorRef?: string;
|
|
64
|
+
entityRef: string;
|
|
65
|
+
}
|
|
66
|
+
export interface CompositeGuard {
|
|
67
|
+
type: 'and' | 'or' | 'not';
|
|
68
|
+
conditions: GuardCondition[];
|
|
69
|
+
}
|
|
70
|
+
export interface CustomGuard {
|
|
71
|
+
type: 'custom';
|
|
72
|
+
evaluate: (world: WorldModel, bindings: EntityBindings, playerId: EntityId) => boolean;
|
|
73
|
+
}
|
|
74
|
+
export type Effect = MoveEntityEffect | RemoveEntityEffect | SetTraitEffect | SetStateEffect | MessageEffect | EmitEventEffect | CustomEffect;
|
|
75
|
+
export interface MoveEntityEffect {
|
|
76
|
+
type: 'move';
|
|
77
|
+
entityRef: string;
|
|
78
|
+
destinationRef: string;
|
|
79
|
+
}
|
|
80
|
+
export interface RemoveEntityEffect {
|
|
81
|
+
type: 'remove';
|
|
82
|
+
entityRef: string;
|
|
83
|
+
}
|
|
84
|
+
export interface SetTraitEffect {
|
|
85
|
+
type: 'set_trait';
|
|
86
|
+
entityRef: string;
|
|
87
|
+
trait: string;
|
|
88
|
+
property: string;
|
|
89
|
+
value: unknown;
|
|
90
|
+
}
|
|
91
|
+
export interface SetStateEffect {
|
|
92
|
+
type: 'set_state';
|
|
93
|
+
key: string;
|
|
94
|
+
value: unknown;
|
|
95
|
+
}
|
|
96
|
+
export interface MessageEffect {
|
|
97
|
+
type: 'message';
|
|
98
|
+
messageId: string;
|
|
99
|
+
params?: Record<string, unknown>;
|
|
100
|
+
}
|
|
101
|
+
export interface EmitEventEffect {
|
|
102
|
+
type: 'emit_event';
|
|
103
|
+
eventType: string;
|
|
104
|
+
entities?: {
|
|
105
|
+
actor?: string;
|
|
106
|
+
target?: string;
|
|
107
|
+
instrument?: string;
|
|
108
|
+
location?: string;
|
|
109
|
+
};
|
|
110
|
+
data?: unknown;
|
|
111
|
+
}
|
|
112
|
+
export interface CustomEffect {
|
|
113
|
+
type: 'custom';
|
|
114
|
+
execute: (world: WorldModel, bindings: EntityBindings, playerId: EntityId) => EffectResult;
|
|
115
|
+
}
|
|
116
|
+
export interface EffectResult {
|
|
117
|
+
events?: Array<{
|
|
118
|
+
type: string;
|
|
119
|
+
entities?: Record<string, string>;
|
|
120
|
+
data?: unknown;
|
|
121
|
+
}>;
|
|
122
|
+
messages?: Array<{
|
|
123
|
+
messageId: string;
|
|
124
|
+
params?: Record<string, unknown>;
|
|
125
|
+
}>;
|
|
126
|
+
}
|
|
127
|
+
export type EntityBindings = Record<string, EntityId>;
|
|
128
|
+
export interface StateMachineInstanceState {
|
|
129
|
+
id: string;
|
|
130
|
+
currentState: string;
|
|
131
|
+
history: string[];
|
|
132
|
+
}
|
|
133
|
+
export interface StateMachineRegistryState {
|
|
134
|
+
instances: StateMachineInstanceState[];
|
|
135
|
+
}
|
|
136
|
+
export interface EvaluationContext {
|
|
137
|
+
world: WorldModel;
|
|
138
|
+
playerId: EntityId;
|
|
139
|
+
playerLocation: EntityId;
|
|
140
|
+
turn: number;
|
|
141
|
+
actionId?: string;
|
|
142
|
+
actionTargetId?: EntityId;
|
|
143
|
+
actionEvents?: Array<{
|
|
144
|
+
type: string;
|
|
145
|
+
data?: unknown;
|
|
146
|
+
entities?: Record<string, string>;
|
|
147
|
+
}>;
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=types.d.ts.map
|
package/types.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../mnt/c/repotemp/sharpee/packages/plugin-state-machine/src/types.ts"],"names":[],"mappings":"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"}
|
package/types.js
ADDED
package/types.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../../../mnt/c/repotemp/sharpee/packages/plugin-state-machine/src/types.ts"],"names":[],"mappings":";AAAA;;;;GAIG"}
|