@sharpee/plugin-scheduler 0.9.65-beta → 0.9.66-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.
Files changed (45) hide show
  1. package/package.json +6 -15
  2. package/dist-npm/daemons/ambience-daemon.d.ts +0 -23
  3. package/dist-npm/daemons/ambience-daemon.d.ts.map +0 -1
  4. package/dist-npm/daemons/ambience-daemon.js +0 -34
  5. package/dist-npm/daemons/ambience-daemon.js.map +0 -1
  6. package/dist-npm/daemons/countdown-daemon.d.ts +0 -22
  7. package/dist-npm/daemons/countdown-daemon.d.ts.map +0 -1
  8. package/dist-npm/daemons/countdown-daemon.js +0 -38
  9. package/dist-npm/daemons/countdown-daemon.js.map +0 -1
  10. package/dist-npm/daemons/daemon-runner.d.ts +0 -31
  11. package/dist-npm/daemons/daemon-runner.d.ts.map +0 -1
  12. package/dist-npm/daemons/daemon-runner.js +0 -35
  13. package/dist-npm/daemons/daemon-runner.js.map +0 -1
  14. package/dist-npm/daemons/index.d.ts +0 -9
  15. package/dist-npm/daemons/index.d.ts.map +0 -1
  16. package/dist-npm/daemons/index.js +0 -17
  17. package/dist-npm/daemons/index.js.map +0 -1
  18. package/dist-npm/daemons/location-daemon.d.ts +0 -14
  19. package/dist-npm/daemons/location-daemon.d.ts.map +0 -1
  20. package/dist-npm/daemons/location-daemon.js +0 -14
  21. package/dist-npm/daemons/location-daemon.js.map +0 -1
  22. package/dist-npm/daemons/watchdog-daemon.d.ts +0 -29
  23. package/dist-npm/daemons/watchdog-daemon.d.ts.map +0 -1
  24. package/dist-npm/daemons/watchdog-daemon.js +0 -48
  25. package/dist-npm/daemons/watchdog-daemon.js.map +0 -1
  26. package/dist-npm/index.d.ts +0 -8
  27. package/dist-npm/index.d.ts.map +0 -1
  28. package/dist-npm/index.js +0 -24
  29. package/dist-npm/index.js.map +0 -1
  30. package/dist-npm/scheduler-plugin.d.ts +0 -21
  31. package/dist-npm/scheduler-plugin.d.ts.map +0 -1
  32. package/dist-npm/scheduler-plugin.js +0 -33
  33. package/dist-npm/scheduler-plugin.js.map +0 -1
  34. package/dist-npm/scheduler-service.d.ts +0 -75
  35. package/dist-npm/scheduler-service.d.ts.map +0 -1
  36. package/dist-npm/scheduler-service.js +0 -315
  37. package/dist-npm/scheduler-service.js.map +0 -1
  38. package/dist-npm/seeded-random.d.ts +0 -7
  39. package/dist-npm/seeded-random.d.ts.map +0 -1
  40. package/dist-npm/seeded-random.js +0 -11
  41. package/dist-npm/seeded-random.js.map +0 -1
  42. package/dist-npm/types.d.ts +0 -140
  43. package/dist-npm/types.d.ts.map +0 -1
  44. package/dist-npm/types.js +0 -9
  45. package/dist-npm/types.js.map +0 -1
package/package.json CHANGED
@@ -1,14 +1,15 @@
1
1
  {
2
2
  "name": "@sharpee/plugin-scheduler",
3
- "version": "0.9.65-beta",
3
+ "version": "0.9.66-beta",
4
4
  "description": "Scheduler plugin for Sharpee engine - daemons and fuses (ADR-071, ADR-120)",
5
- "main": "./dist-npm/index.js",
5
+ "main": "./index.js",
6
6
  "module": "dist-npm/index.js",
7
- "types": "./dist-npm/index.d.ts",
7
+ "types": "./index.d.ts",
8
8
  "exports": {
9
9
  ".": {
10
- "types": "./dist-npm/index.d.ts",
11
- "require": "./dist-npm/index.js"
10
+ "types": "./index.d.ts",
11
+ "require": "./index.js",
12
+ "default": "./index.js"
12
13
  }
13
14
  },
14
15
  "scripts": {
@@ -16,16 +17,6 @@
16
17
  "clean": "rimraf dist",
17
18
  "build:npm": "tsc --outDir dist-npm"
18
19
  },
19
- "dependencies": {
20
- "@sharpee/core": "workspace:*",
21
- "@sharpee/world-model": "workspace:*",
22
- "@sharpee/plugins": "workspace:*"
23
- },
24
- "devDependencies": {
25
- "@types/node": "^20.11.19",
26
- "typescript": "^5.3.3",
27
- "rimraf": "^5.0.5"
28
- },
29
20
  "files": [
30
21
  "dist-npm"
31
22
  ],
@@ -1,23 +0,0 @@
1
- /**
2
- * AmbienceDaemon - emits atmospheric messages with cooldown (ADR-123).
3
- *
4
- * Always ticks to manage the cooldown counter. Emits ambience
5
- * when cooldown has elapsed and shouldEmit() returns true.
6
- */
7
- import { ISemanticEvent } from "../../../core/dist-npm/src/index";
8
- import { DaemonRunner } from './daemon-runner';
9
- import { SchedulerContext } from '../types';
10
- export declare abstract class AmbienceDaemon extends DaemonRunner {
11
- protected turnsSinceLastEmission: number;
12
- /** Minimum turns between ambient emissions */
13
- abstract readonly cooldownTurns: number;
14
- /** Whether conditions are right for ambient emission this turn */
15
- abstract shouldEmit(context: SchedulerContext): boolean;
16
- /** Generate the ambient message(s) */
17
- abstract emitAmbience(context: SchedulerContext): ISemanticEvent[];
18
- getRunnerState(): Record<string, unknown>;
19
- restoreRunnerState(state: Record<string, unknown>): void;
20
- shouldRun(_context: SchedulerContext): boolean;
21
- execute(context: SchedulerContext): ISemanticEvent[];
22
- }
23
- //# sourceMappingURL=ambience-daemon.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ambience-daemon.d.ts","sourceRoot":"","sources":["../../src/daemons/ambience-daemon.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,8BAAsB,cAAe,SAAQ,YAAY;IACvD,SAAS,CAAC,sBAAsB,SAAK;IAErC,8CAA8C;IAC9C,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAExC,kEAAkE;IAClE,QAAQ,CAAC,UAAU,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO;IAEvD,sCAAsC;IACtC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,cAAc,EAAE;IAElE,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAIzC,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAIxD,SAAS,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO;IAI9C,OAAO,CAAC,OAAO,EAAE,gBAAgB,GAAG,cAAc,EAAE;CASrD"}
@@ -1,34 +0,0 @@
1
- "use strict";
2
- /**
3
- * AmbienceDaemon - emits atmospheric messages with cooldown (ADR-123).
4
- *
5
- * Always ticks to manage the cooldown counter. Emits ambience
6
- * when cooldown has elapsed and shouldEmit() returns true.
7
- */
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.AmbienceDaemon = void 0;
10
- const daemon_runner_1 = require("./daemon-runner");
11
- class AmbienceDaemon extends daemon_runner_1.DaemonRunner {
12
- turnsSinceLastEmission = 0;
13
- getRunnerState() {
14
- return { turnsSinceLastEmission: this.turnsSinceLastEmission };
15
- }
16
- restoreRunnerState(state) {
17
- if (typeof state.turnsSinceLastEmission === 'number')
18
- this.turnsSinceLastEmission = state.turnsSinceLastEmission;
19
- }
20
- shouldRun(_context) {
21
- return true; // Always tick to manage cooldown
22
- }
23
- execute(context) {
24
- this.turnsSinceLastEmission++;
25
- if (this.turnsSinceLastEmission < this.cooldownTurns)
26
- return [];
27
- if (!this.shouldEmit(context))
28
- return [];
29
- this.turnsSinceLastEmission = 0;
30
- return this.emitAmbience(context);
31
- }
32
- }
33
- exports.AmbienceDaemon = AmbienceDaemon;
34
- //# sourceMappingURL=ambience-daemon.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ambience-daemon.js","sourceRoot":"","sources":["../../src/daemons/ambience-daemon.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAGH,mDAA+C;AAG/C,MAAsB,cAAe,SAAQ,4BAAY;IAC7C,sBAAsB,GAAG,CAAC,CAAC;IAWrC,cAAc;QACZ,OAAO,EAAE,sBAAsB,EAAE,IAAI,CAAC,sBAAsB,EAAE,CAAC;IACjE,CAAC;IAED,kBAAkB,CAAC,KAA8B;QAC/C,IAAI,OAAO,KAAK,CAAC,sBAAsB,KAAK,QAAQ;YAAE,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC,sBAAsB,CAAC;IACnH,CAAC;IAED,SAAS,CAAC,QAA0B;QAClC,OAAO,IAAI,CAAC,CAAC,iCAAiC;IAChD,CAAC;IAED,OAAO,CAAC,OAAyB;QAC/B,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAE9B,IAAI,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,aAAa;YAAE,OAAO,EAAE,CAAC;QAChE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,OAAO,EAAE,CAAC;QAEzC,IAAI,CAAC,sBAAsB,GAAG,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;CACF;AAjCD,wCAiCC"}
@@ -1,22 +0,0 @@
1
- /**
2
- * CountdownDaemon - fires after a fixed number of turns (ADR-123).
3
- *
4
- * Like a Fuse but with full daemon lifecycle, encapsulated state,
5
- * and an optional tick condition.
6
- */
7
- import { ISemanticEvent } from "../../../core/dist-npm/src/index";
8
- import { DaemonRunner } from './daemon-runner';
9
- import { SchedulerContext } from '../types';
10
- export declare abstract class CountdownDaemon extends DaemonRunner {
11
- protected turnsRemaining: number;
12
- constructor(turns: number);
13
- /** Called when countdown reaches zero */
14
- abstract onCountdownComplete(context: SchedulerContext): ISemanticEvent[];
15
- /** Optional: condition that must hold for the countdown to tick */
16
- tickCondition?(context: SchedulerContext): boolean;
17
- getRunnerState(): Record<string, unknown>;
18
- restoreRunnerState(state: Record<string, unknown>): void;
19
- shouldRun(_context: SchedulerContext): boolean;
20
- execute(context: SchedulerContext): ISemanticEvent[];
21
- }
22
- //# sourceMappingURL=countdown-daemon.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"countdown-daemon.d.ts","sourceRoot":"","sources":["../../src/daemons/countdown-daemon.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,8BAAsB,eAAgB,SAAQ,YAAY;IACxD,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC;gBAErB,KAAK,EAAE,MAAM;IAKzB,yCAAyC;IACzC,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,GAAG,cAAc,EAAE;IAEzE,mEAAmE;IACnE,aAAa,CAAC,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO;IAElD,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAIzC,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAIxD,SAAS,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO;IAI9C,OAAO,CAAC,OAAO,EAAE,gBAAgB,GAAG,cAAc,EAAE;CASrD"}
@@ -1,38 +0,0 @@
1
- "use strict";
2
- /**
3
- * CountdownDaemon - fires after a fixed number of turns (ADR-123).
4
- *
5
- * Like a Fuse but with full daemon lifecycle, encapsulated state,
6
- * and an optional tick condition.
7
- */
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.CountdownDaemon = void 0;
10
- const daemon_runner_1 = require("./daemon-runner");
11
- class CountdownDaemon extends daemon_runner_1.DaemonRunner {
12
- turnsRemaining;
13
- constructor(turns) {
14
- super();
15
- this.turnsRemaining = turns;
16
- }
17
- getRunnerState() {
18
- return { turnsRemaining: this.turnsRemaining };
19
- }
20
- restoreRunnerState(state) {
21
- if (typeof state.turnsRemaining === 'number')
22
- this.turnsRemaining = state.turnsRemaining;
23
- }
24
- shouldRun(_context) {
25
- return this.turnsRemaining > 0;
26
- }
27
- execute(context) {
28
- if (this.tickCondition && !this.tickCondition(context))
29
- return [];
30
- this.turnsRemaining--;
31
- if (this.turnsRemaining <= 0) {
32
- return this.onCountdownComplete(context);
33
- }
34
- return [];
35
- }
36
- }
37
- exports.CountdownDaemon = CountdownDaemon;
38
- //# sourceMappingURL=countdown-daemon.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"countdown-daemon.js","sourceRoot":"","sources":["../../src/daemons/countdown-daemon.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAGH,mDAA+C;AAG/C,MAAsB,eAAgB,SAAQ,4BAAY;IAC9C,cAAc,CAAS;IAEjC,YAAY,KAAa;QACvB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;IAC9B,CAAC;IAQD,cAAc;QACZ,OAAO,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;IACjD,CAAC;IAED,kBAAkB,CAAC,KAA8B;QAC/C,IAAI,OAAO,KAAK,CAAC,cAAc,KAAK,QAAQ;YAAE,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;IAC3F,CAAC;IAED,SAAS,CAAC,QAA0B;QAClC,OAAO,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,CAAC,OAAyB;QAC/B,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;YAAE,OAAO,EAAE,CAAC;QAElE,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;CACF;AAnCD,0CAmCC"}
@@ -1,31 +0,0 @@
1
- /**
2
- * Abstract base class for typed daemons (ADR-123).
3
- *
4
- * Gives daemons proper identity, encapsulated state, and lifecycle hooks
5
- * while adapting to the existing plain Daemon interface via toDaemon().
6
- */
7
- import { ISemanticEvent } from "../../../core/dist-npm/src/index";
8
- import { WorldModel } from "../../../world-model/dist-npm/src/index";
9
- import { Daemon, SchedulerContext } from '../types';
10
- export declare abstract class DaemonRunner {
11
- abstract readonly id: string;
12
- abstract readonly name: string;
13
- readonly priority: number;
14
- /** Override to control when this daemon is active */
15
- abstract shouldRun(context: SchedulerContext): boolean;
16
- /** Override to perform the daemon's work */
17
- abstract execute(context: SchedulerContext): ISemanticEvent[];
18
- /** Lifecycle: called when daemon is registered with the scheduler */
19
- onRegistered?(context: {
20
- world: WorldModel;
21
- }): void;
22
- /** Lifecycle: called when daemon is removed from the scheduler */
23
- onRemoved?(): void;
24
- /** Return runner-specific state for save/restore serialization */
25
- getRunnerState(): Record<string, unknown>;
26
- /** Restore runner-specific state after deserialization */
27
- restoreRunnerState(state: Record<string, unknown>): void;
28
- /** Adapt to the plain Daemon interface for scheduler registration */
29
- toDaemon(): Daemon;
30
- }
31
- //# sourceMappingURL=daemon-runner.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"daemon-runner.d.ts","sourceRoot":"","sources":["../../src/daemons/daemon-runner.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEpD,8BAAsB,YAAY;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAK;IAE9B,qDAAqD;IACrD,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO;IAEtD,4CAA4C;IAC5C,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,gBAAgB,GAAG,cAAc,EAAE;IAE7D,qEAAqE;IACrE,YAAY,CAAC,CAAC,OAAO,EAAE;QAAE,KAAK,EAAE,UAAU,CAAA;KAAE,GAAG,IAAI;IAEnD,kEAAkE;IAClE,SAAS,CAAC,IAAI,IAAI;IAElB,kEAAkE;IAClE,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAIzC,0DAA0D;IAC1D,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAKxD,qEAAqE;IACrE,QAAQ,IAAI,MAAM;CAWnB"}
@@ -1,35 +0,0 @@
1
- "use strict";
2
- /**
3
- * Abstract base class for typed daemons (ADR-123).
4
- *
5
- * Gives daemons proper identity, encapsulated state, and lifecycle hooks
6
- * while adapting to the existing plain Daemon interface via toDaemon().
7
- */
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.DaemonRunner = void 0;
10
- class DaemonRunner {
11
- priority = 0;
12
- /** Return runner-specific state for save/restore serialization */
13
- getRunnerState() {
14
- return {};
15
- }
16
- /** Restore runner-specific state after deserialization */
17
- restoreRunnerState(state) {
18
- // Subclasses override to restore their fields
19
- void state;
20
- }
21
- /** Adapt to the plain Daemon interface for scheduler registration */
22
- toDaemon() {
23
- return {
24
- id: this.id,
25
- name: this.name,
26
- priority: this.priority,
27
- condition: (ctx) => this.shouldRun(ctx),
28
- run: (ctx) => this.execute(ctx),
29
- getRunnerState: () => this.getRunnerState(),
30
- restoreRunnerState: (s) => this.restoreRunnerState(s),
31
- };
32
- }
33
- }
34
- exports.DaemonRunner = DaemonRunner;
35
- //# sourceMappingURL=daemon-runner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"daemon-runner.js","sourceRoot":"","sources":["../../src/daemons/daemon-runner.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAMH,MAAsB,YAAY;IAGvB,QAAQ,GAAW,CAAC,CAAC;IAc9B,kEAAkE;IAClE,cAAc;QACZ,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,0DAA0D;IAC1D,kBAAkB,CAAC,KAA8B;QAC/C,8CAA8C;QAC9C,KAAK,KAAK,CAAC;IACb,CAAC;IAED,qEAAqE;IACrE,QAAQ;QACN,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;YACvC,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;YAC/B,cAAc,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE;YAC3C,kBAAkB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;SACtD,CAAC;IACJ,CAAC;CACF;AAxCD,oCAwCC"}
@@ -1,9 +0,0 @@
1
- /**
2
- * Typed daemon base classes (ADR-123)
3
- */
4
- export { DaemonRunner } from './daemon-runner';
5
- export { WatchdogDaemon } from './watchdog-daemon';
6
- export { LocationDaemon } from './location-daemon';
7
- export { AmbienceDaemon } from './ambience-daemon';
8
- export { CountdownDaemon } from './countdown-daemon';
9
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/daemons/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC"}
@@ -1,17 +0,0 @@
1
- "use strict";
2
- /**
3
- * Typed daemon base classes (ADR-123)
4
- */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.CountdownDaemon = exports.AmbienceDaemon = exports.LocationDaemon = exports.WatchdogDaemon = exports.DaemonRunner = void 0;
7
- var daemon_runner_1 = require("./daemon-runner");
8
- Object.defineProperty(exports, "DaemonRunner", { enumerable: true, get: function () { return daemon_runner_1.DaemonRunner; } });
9
- var watchdog_daemon_1 = require("./watchdog-daemon");
10
- Object.defineProperty(exports, "WatchdogDaemon", { enumerable: true, get: function () { return watchdog_daemon_1.WatchdogDaemon; } });
11
- var location_daemon_1 = require("./location-daemon");
12
- Object.defineProperty(exports, "LocationDaemon", { enumerable: true, get: function () { return location_daemon_1.LocationDaemon; } });
13
- var ambience_daemon_1 = require("./ambience-daemon");
14
- Object.defineProperty(exports, "AmbienceDaemon", { enumerable: true, get: function () { return ambience_daemon_1.AmbienceDaemon; } });
15
- var countdown_daemon_1 = require("./countdown-daemon");
16
- Object.defineProperty(exports, "CountdownDaemon", { enumerable: true, get: function () { return countdown_daemon_1.CountdownDaemon; } });
17
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/daemons/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AACrB,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AACvB,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AACvB,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AACvB,uDAAqD;AAA5C,mHAAA,eAAe,OAAA"}
@@ -1,14 +0,0 @@
1
- /**
2
- * LocationDaemon - runs only when the player is in specific rooms (ADR-123).
3
- */
4
- import { ISemanticEvent, EntityId } from "../../../core/dist-npm/src/index";
5
- import { DaemonRunner } from './daemon-runner';
6
- import { SchedulerContext } from '../types';
7
- export declare abstract class LocationDaemon extends DaemonRunner {
8
- /** Room(s) where this daemon is active */
9
- abstract readonly roomIds: EntityId[];
10
- /** Perform the daemon's work when player is in a matching room */
11
- abstract execute(context: SchedulerContext): ISemanticEvent[];
12
- shouldRun(context: SchedulerContext): boolean;
13
- }
14
- //# sourceMappingURL=location-daemon.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"location-daemon.d.ts","sourceRoot":"","sources":["../../src/daemons/location-daemon.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,8BAAsB,cAAe,SAAQ,YAAY;IACvD,0CAA0C;IAC1C,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC;IAEtC,kEAAkE;IAClE,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,gBAAgB,GAAG,cAAc,EAAE;IAE7D,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO;CAG9C"}
@@ -1,14 +0,0 @@
1
- "use strict";
2
- /**
3
- * LocationDaemon - runs only when the player is in specific rooms (ADR-123).
4
- */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.LocationDaemon = void 0;
7
- const daemon_runner_1 = require("./daemon-runner");
8
- class LocationDaemon extends daemon_runner_1.DaemonRunner {
9
- shouldRun(context) {
10
- return this.roomIds.includes(context.playerLocation);
11
- }
12
- }
13
- exports.LocationDaemon = LocationDaemon;
14
- //# sourceMappingURL=location-daemon.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"location-daemon.js","sourceRoot":"","sources":["../../src/daemons/location-daemon.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAGH,mDAA+C;AAG/C,MAAsB,cAAe,SAAQ,4BAAY;IAOvD,SAAS,CAAC,OAAyB;QACjC,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IACvD,CAAC;CACF;AAVD,wCAUC"}
@@ -1,29 +0,0 @@
1
- /**
2
- * WatchdogDaemon - monitors a sustained condition over multiple turns (ADR-123).
3
- *
4
- * Counts consecutive turns while conditionHolds() is true.
5
- * Resets counter when condition breaks. Fires onThresholdReached()
6
- * when turnsRequired consecutive turns have passed.
7
- */
8
- import { ISemanticEvent } from "../../../core/dist-npm/src/index";
9
- import { DaemonRunner } from './daemon-runner';
10
- import { SchedulerContext } from '../types';
11
- export declare abstract class WatchdogDaemon extends DaemonRunner {
12
- protected turnCount: number;
13
- protected triggered: boolean;
14
- /** How many consecutive turns the condition must hold */
15
- abstract readonly turnsRequired: number;
16
- /** The condition that must hold each turn */
17
- abstract conditionHolds(context: SchedulerContext): boolean;
18
- /** Called when turnsRequired consecutive turns have passed */
19
- abstract onThresholdReached(context: SchedulerContext): ISemanticEvent[];
20
- /** Optional: called at specific turn counts during accumulation */
21
- onMilestone?(turn: number, context: SchedulerContext): ISemanticEvent[];
22
- /** Optional: called when the counter resets (condition broke) */
23
- onReset?(context: SchedulerContext): void;
24
- getRunnerState(): Record<string, unknown>;
25
- restoreRunnerState(state: Record<string, unknown>): void;
26
- shouldRun(_context: SchedulerContext): boolean;
27
- execute(context: SchedulerContext): ISemanticEvent[];
28
- }
29
- //# sourceMappingURL=watchdog-daemon.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"watchdog-daemon.d.ts","sourceRoot":"","sources":["../../src/daemons/watchdog-daemon.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,8BAAsB,cAAe,SAAQ,YAAY;IACvD,SAAS,CAAC,SAAS,SAAK;IACxB,SAAS,CAAC,SAAS,UAAS;IAE5B,yDAAyD;IACzD,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAExC,6CAA6C;IAC7C,QAAQ,CAAC,cAAc,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO;IAE3D,8DAA8D;IAC9D,QAAQ,CAAC,kBAAkB,CAAC,OAAO,EAAE,gBAAgB,GAAG,cAAc,EAAE;IAExE,mEAAmE;IACnE,WAAW,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,cAAc,EAAE;IAEvE,iEAAiE;IACjE,OAAO,CAAC,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAEzC,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAIzC,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAKxD,SAAS,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO;IAI9C,OAAO,CAAC,OAAO,EAAE,gBAAgB,GAAG,cAAc,EAAE;CAsBrD"}
@@ -1,48 +0,0 @@
1
- "use strict";
2
- /**
3
- * WatchdogDaemon - monitors a sustained condition over multiple turns (ADR-123).
4
- *
5
- * Counts consecutive turns while conditionHolds() is true.
6
- * Resets counter when condition breaks. Fires onThresholdReached()
7
- * when turnsRequired consecutive turns have passed.
8
- */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.WatchdogDaemon = void 0;
11
- const daemon_runner_1 = require("./daemon-runner");
12
- class WatchdogDaemon extends daemon_runner_1.DaemonRunner {
13
- turnCount = 0;
14
- triggered = false;
15
- getRunnerState() {
16
- return { turnCount: this.turnCount, triggered: this.triggered };
17
- }
18
- restoreRunnerState(state) {
19
- if (typeof state.turnCount === 'number')
20
- this.turnCount = state.turnCount;
21
- if (typeof state.triggered === 'boolean')
22
- this.triggered = state.triggered;
23
- }
24
- shouldRun(_context) {
25
- return !this.triggered;
26
- }
27
- execute(context) {
28
- if (!this.conditionHolds(context)) {
29
- if (this.turnCount > 0) {
30
- this.turnCount = 0;
31
- this.onReset?.(context);
32
- }
33
- return [];
34
- }
35
- this.turnCount++;
36
- const events = [];
37
- const milestoneEvents = this.onMilestone?.(this.turnCount, context);
38
- if (milestoneEvents)
39
- events.push(...milestoneEvents);
40
- if (this.turnCount >= this.turnsRequired) {
41
- this.triggered = true;
42
- events.push(...this.onThresholdReached(context));
43
- }
44
- return events;
45
- }
46
- }
47
- exports.WatchdogDaemon = WatchdogDaemon;
48
- //# sourceMappingURL=watchdog-daemon.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"watchdog-daemon.js","sourceRoot":"","sources":["../../src/daemons/watchdog-daemon.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAGH,mDAA+C;AAG/C,MAAsB,cAAe,SAAQ,4BAAY;IAC7C,SAAS,GAAG,CAAC,CAAC;IACd,SAAS,GAAG,KAAK,CAAC;IAiB5B,cAAc;QACZ,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IAClE,CAAC;IAED,kBAAkB,CAAC,KAA8B;QAC/C,IAAI,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ;YAAE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QAC1E,IAAI,OAAO,KAAK,CAAC,SAAS,KAAK,SAAS;YAAE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAC7E,CAAC;IAED,SAAS,CAAC,QAA0B;QAClC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;IACzB,CAAC;IAED,OAAO,CAAC,OAAyB;QAC/B,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;YAClC,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;gBACvB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;gBACnB,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC;YAC1B,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,MAAM,MAAM,GAAqB,EAAE,CAAC;QAEpC,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACpE,IAAI,eAAe;YAAE,MAAM,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,CAAC;QAErD,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACzC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;QACnD,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAtDD,wCAsDC"}
@@ -1,8 +0,0 @@
1
- /**
2
- * @sharpee/plugin-scheduler - Scheduler plugin for daemons and fuses (ADR-071, ADR-120)
3
- */
4
- export * from './types';
5
- export * from './seeded-random';
6
- export * from './scheduler-service';
7
- export * from './scheduler-plugin';
8
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC"}
package/dist-npm/index.js DELETED
@@ -1,24 +0,0 @@
1
- "use strict";
2
- /**
3
- * @sharpee/plugin-scheduler - Scheduler plugin for daemons and fuses (ADR-071, 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
- __exportStar(require("./types"), exports);
21
- __exportStar(require("./seeded-random"), exports);
22
- __exportStar(require("./scheduler-service"), exports);
23
- __exportStar(require("./scheduler-plugin"), exports);
24
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;AAEH,0CAAwB;AACxB,kDAAgC;AAChC,sDAAoC;AACpC,qDAAmC"}
@@ -1,21 +0,0 @@
1
- /**
2
- * SchedulerPlugin - Wraps SchedulerService as a TurnPlugin (ADR-120)
3
- *
4
- * Priority 50: Runs after NPCs (100) and state machines (75).
5
- * Daemons and fuses are background temporal events.
6
- */
7
- import { ISemanticEvent } from "../../core/dist-npm/src/index";
8
- import { TurnPlugin, TurnPluginContext } from "../../plugins/dist-npm/src/index";
9
- import { ISchedulerService } from './scheduler-service';
10
- export declare class SchedulerPlugin implements TurnPlugin {
11
- id: string;
12
- priority: number;
13
- private service;
14
- constructor(seed?: number);
15
- onAfterAction(ctx: TurnPluginContext): ISemanticEvent[];
16
- getState(): unknown;
17
- setState(state: unknown): void;
18
- /** Public access for stories that need daemon/fuse registration */
19
- getScheduler(): ISchedulerService;
20
- }
21
- //# sourceMappingURL=scheduler-plugin.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scheduler-plugin.d.ts","sourceRoot":"","sources":["../../../../src/scheduler-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,iBAAiB,EAA0B,MAAM,qBAAqB,CAAC;AAGhF,qBAAa,eAAgB,YAAW,UAAU;IAChD,EAAE,SAA8B;IAChC,QAAQ,SAAM;IACd,OAAO,CAAC,OAAO,CAAoB;gBAEvB,IAAI,CAAC,EAAE,MAAM;IAIzB,aAAa,CAAC,GAAG,EAAE,iBAAiB,GAAG,cAAc,EAAE;IAIvD,QAAQ,IAAI,OAAO;IAInB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAI9B,mEAAmE;IACnE,YAAY,IAAI,iBAAiB;CAGlC"}
@@ -1,33 +0,0 @@
1
- "use strict";
2
- /**
3
- * SchedulerPlugin - Wraps SchedulerService as a TurnPlugin (ADR-120)
4
- *
5
- * Priority 50: Runs after NPCs (100) and state machines (75).
6
- * Daemons and fuses are background temporal events.
7
- */
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.SchedulerPlugin = void 0;
10
- const scheduler_service_1 = require("./scheduler-service");
11
- class SchedulerPlugin {
12
- id = 'sharpee.plugin.scheduler';
13
- priority = 50;
14
- service;
15
- constructor(seed) {
16
- this.service = (0, scheduler_service_1.createSchedulerService)(seed);
17
- }
18
- onAfterAction(ctx) {
19
- return this.service.tick(ctx.world, ctx.turn, ctx.playerId).events;
20
- }
21
- getState() {
22
- return this.service.getState();
23
- }
24
- setState(state) {
25
- this.service.setState(state);
26
- }
27
- /** Public access for stories that need daemon/fuse registration */
28
- getScheduler() {
29
- return this.service;
30
- }
31
- }
32
- exports.SchedulerPlugin = SchedulerPlugin;
33
- //# sourceMappingURL=scheduler-plugin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scheduler-plugin.js","sourceRoot":"","sources":["../../../../src/scheduler-plugin.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAIH,2DAAgF;AAGhF,MAAa,eAAe;IAC1B,EAAE,GAAG,0BAA0B,CAAC;IAChC,QAAQ,GAAG,EAAE,CAAC;IACN,OAAO,CAAoB;IAEnC,YAAY,IAAa;QACvB,IAAI,CAAC,OAAO,GAAG,IAAA,0CAAsB,EAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,aAAa,CAAC,GAAsB;QAClC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;IACrE,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC;IAED,QAAQ,CAAC,KAAc;QACrB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAuB,CAAC,CAAC;IACjD,CAAC;IAED,mEAAmE;IACnE,YAAY;QACV,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF;AAzBD,0CAyBC"}
@@ -1,75 +0,0 @@
1
- /**
2
- * SchedulerService - Manages Daemons and Fuses (ADR-071)
3
- *
4
- * The scheduler runs during the turn cycle, after NPCs act:
5
- * 1. Player action
6
- * 2. NPC turns
7
- * 3. Scheduler tick (daemons run, fuses count down)
8
- * 4. Turn complete
9
- */
10
- import { ISemanticEvent, EntityId } from "../../core/dist-npm/src/index";
11
- import { WorldModel } from "../../world-model/dist-npm/src/index";
12
- import { Daemon, Fuse, DaemonInfo, FuseInfo, SchedulerResult, SchedulerState, SeededRandom } from './types';
13
- /**
14
- * SchedulerService interface
15
- */
16
- export interface ISchedulerService {
17
- registerDaemon(daemon: Daemon): void;
18
- removeDaemon(id: string): void;
19
- pauseDaemon(id: string): void;
20
- resumeDaemon(id: string): void;
21
- hasDaemon(id: string): boolean;
22
- setFuse(fuse: Fuse): void;
23
- cancelFuse(id: string): ISemanticEvent[];
24
- getFuseRemaining(id: string): number | undefined;
25
- adjustFuse(id: string, delta: number): void;
26
- pauseFuse(id: string): void;
27
- resumeFuse(id: string): void;
28
- hasFuse(id: string): boolean;
29
- tick(world: WorldModel, turn: number, playerId: EntityId): SchedulerResult;
30
- getActiveDaemons(): DaemonInfo[];
31
- getActiveFuses(): FuseInfo[];
32
- getState(): SchedulerState;
33
- setState(state: SchedulerState): void;
34
- cleanupEntity(entityId: EntityId): ISemanticEvent[];
35
- getRandom(): SeededRandom;
36
- }
37
- /**
38
- * SchedulerService implementation
39
- */
40
- export declare class SchedulerService implements ISchedulerService {
41
- private daemons;
42
- private daemonStates;
43
- private fuses;
44
- private fuseStates;
45
- private random;
46
- private currentTurn;
47
- constructor(seed?: number);
48
- registerDaemon(daemon: Daemon): void;
49
- removeDaemon(id: string): void;
50
- pauseDaemon(id: string): void;
51
- resumeDaemon(id: string): void;
52
- hasDaemon(id: string): boolean;
53
- setFuse(fuse: Fuse): void;
54
- cancelFuse(id: string): ISemanticEvent[];
55
- getFuseRemaining(id: string): number | undefined;
56
- adjustFuse(id: string, delta: number): void;
57
- pauseFuse(id: string): void;
58
- resumeFuse(id: string): void;
59
- hasFuse(id: string): boolean;
60
- tick(world: WorldModel, turn: number, playerId: EntityId): SchedulerResult;
61
- getActiveDaemons(): DaemonInfo[];
62
- getActiveFuses(): FuseInfo[];
63
- getState(): SchedulerState;
64
- setState(state: SchedulerState): void;
65
- cleanupEntity(entityId: EntityId): ISemanticEvent[];
66
- getRandom(): SeededRandom;
67
- private createContext;
68
- private getSortedDaemons;
69
- private getSortedFuses;
70
- }
71
- /**
72
- * Create a new SchedulerService instance
73
- */
74
- export declare function createSchedulerService(seed?: number): ISchedulerService;
75
- //# sourceMappingURL=scheduler-service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scheduler-service.d.ts","sourceRoot":"","sources":["../../../../src/scheduler-service.ts"],"names":[],"mappings":"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"}
@@ -1,315 +0,0 @@
1
- "use strict";
2
- /**
3
- * SchedulerService - Manages Daemons and Fuses (ADR-071)
4
- *
5
- * The scheduler runs during the turn cycle, after NPCs act:
6
- * 1. Player action
7
- * 2. NPC turns
8
- * 3. Scheduler tick (daemons run, fuses count down)
9
- * 4. Turn complete
10
- */
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.SchedulerService = void 0;
13
- exports.createSchedulerService = createSchedulerService;
14
- const seeded_random_1 = require("./seeded-random");
15
- /**
16
- * Create a unique event ID
17
- */
18
- function createEventId(prefix) {
19
- return `${prefix}_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
20
- }
21
- /**
22
- * SchedulerService implementation
23
- */
24
- class SchedulerService {
25
- daemons = new Map();
26
- daemonStates = new Map();
27
- fuses = new Map();
28
- fuseStates = new Map();
29
- random;
30
- currentTurn = 0;
31
- constructor(seed) {
32
- this.random = (0, seeded_random_1.createSeededRandom)(seed);
33
- }
34
- // ==================== Daemon Management ====================
35
- registerDaemon(daemon) {
36
- if (this.daemons.has(daemon.id)) {
37
- throw new Error(`Daemon with id "${daemon.id}" already exists`);
38
- }
39
- this.daemons.set(daemon.id, daemon);
40
- this.daemonStates.set(daemon.id, {
41
- id: daemon.id,
42
- isPaused: false,
43
- runCount: 0,
44
- });
45
- }
46
- removeDaemon(id) {
47
- this.daemons.delete(id);
48
- this.daemonStates.delete(id);
49
- }
50
- pauseDaemon(id) {
51
- const state = this.daemonStates.get(id);
52
- if (state) {
53
- state.isPaused = true;
54
- }
55
- }
56
- resumeDaemon(id) {
57
- const state = this.daemonStates.get(id);
58
- if (state) {
59
- state.isPaused = false;
60
- }
61
- }
62
- hasDaemon(id) {
63
- return this.daemons.has(id);
64
- }
65
- // ==================== Fuse Management ====================
66
- setFuse(fuse) {
67
- // Store original turns for repeating fuses
68
- const fuseWithOriginal = {
69
- ...fuse,
70
- originalTurns: fuse.originalTurns ?? fuse.turns,
71
- };
72
- this.fuses.set(fuse.id, fuseWithOriginal);
73
- this.fuseStates.set(fuse.id, {
74
- id: fuse.id,
75
- turnsRemaining: fuse.turns,
76
- isPaused: false,
77
- entityId: fuse.entityId,
78
- });
79
- }
80
- cancelFuse(id) {
81
- const fuse = this.fuses.get(id);
82
- const state = this.fuseStates.get(id);
83
- if (!fuse || !state) {
84
- return [];
85
- }
86
- // Call onCancel if defined
87
- let events = [];
88
- if (fuse.onCancel) {
89
- const context = this.createContext(undefined, this.currentTurn, '');
90
- try {
91
- events = fuse.onCancel(context);
92
- }
93
- catch (error) {
94
- console.error(`Error in fuse "${id}" onCancel:`, error);
95
- }
96
- }
97
- this.fuses.delete(id);
98
- this.fuseStates.delete(id);
99
- return events;
100
- }
101
- getFuseRemaining(id) {
102
- return this.fuseStates.get(id)?.turnsRemaining;
103
- }
104
- adjustFuse(id, delta) {
105
- const state = this.fuseStates.get(id);
106
- if (state) {
107
- state.turnsRemaining = Math.max(0, state.turnsRemaining + delta);
108
- }
109
- }
110
- pauseFuse(id) {
111
- const state = this.fuseStates.get(id);
112
- if (state) {
113
- state.isPaused = true;
114
- }
115
- }
116
- resumeFuse(id) {
117
- const state = this.fuseStates.get(id);
118
- if (state) {
119
- state.isPaused = false;
120
- }
121
- }
122
- hasFuse(id) {
123
- return this.fuses.has(id);
124
- }
125
- // ==================== Tick (Main Loop) ====================
126
- tick(world, turn, playerId) {
127
- this.currentTurn = turn;
128
- const events = [];
129
- const fusesTriggered = [];
130
- const daemonsRun = [];
131
- // Get player location
132
- const playerLocation = world.getLocation(playerId) || '';
133
- // Create context
134
- const context = this.createContext(world, turn, playerLocation, playerId);
135
- // 1. Run daemons (sorted by priority, highest first)
136
- const sortedDaemons = this.getSortedDaemons();
137
- for (const daemon of sortedDaemons) {
138
- const state = this.daemonStates.get(daemon.id);
139
- if (!state || state.isPaused)
140
- continue;
141
- // Check condition
142
- if (daemon.condition && !daemon.condition(context)) {
143
- continue;
144
- }
145
- // Run the daemon
146
- try {
147
- const daemonEvents = daemon.run(context);
148
- if (daemonEvents.length > 0) {
149
- events.push(...daemonEvents);
150
- daemonsRun.push(daemon.id);
151
- state.runCount++;
152
- // Remove if runOnce and produced events
153
- if (daemon.runOnce) {
154
- this.removeDaemon(daemon.id);
155
- }
156
- }
157
- }
158
- catch (error) {
159
- console.error(`Error running daemon "${daemon.id}":`, error);
160
- }
161
- }
162
- // 2. Process fuses
163
- const fusesToRemove = [];
164
- const sortedFuses = this.getSortedFuses();
165
- for (const fuse of sortedFuses) {
166
- const state = this.fuseStates.get(fuse.id);
167
- if (!state || state.isPaused)
168
- continue;
169
- // Check tick condition
170
- if (fuse.tickCondition && !fuse.tickCondition(context)) {
171
- continue;
172
- }
173
- // Decrement turns
174
- state.turnsRemaining--;
175
- // Check if triggered
176
- if (state.turnsRemaining <= 0) {
177
- try {
178
- const fuseEvents = fuse.trigger(context);
179
- events.push(...fuseEvents);
180
- fusesTriggered.push(fuse.id);
181
- if (fuse.repeat && fuse.originalTurns) {
182
- // Reset for repeat
183
- state.turnsRemaining = fuse.originalTurns;
184
- }
185
- else {
186
- // Mark for removal
187
- fusesToRemove.push(fuse.id);
188
- }
189
- }
190
- catch (error) {
191
- console.error(`Error triggering fuse "${fuse.id}":`, error);
192
- fusesToRemove.push(fuse.id);
193
- }
194
- }
195
- }
196
- // Remove triggered fuses
197
- for (const id of fusesToRemove) {
198
- this.fuses.delete(id);
199
- this.fuseStates.delete(id);
200
- }
201
- return { events, fusesTriggered, daemonsRun };
202
- }
203
- // ==================== Introspection ====================
204
- getActiveDaemons() {
205
- const infos = [];
206
- for (const [id, daemon] of this.daemons) {
207
- const state = this.daemonStates.get(id);
208
- if (!state)
209
- continue;
210
- infos.push({
211
- id: daemon.id,
212
- name: daemon.name,
213
- isPaused: state.isPaused,
214
- runCount: state.runCount,
215
- priority: daemon.priority ?? 0,
216
- });
217
- }
218
- return infos.sort((a, b) => b.priority - a.priority);
219
- }
220
- getActiveFuses() {
221
- const infos = [];
222
- for (const [id, fuse] of this.fuses) {
223
- const state = this.fuseStates.get(id);
224
- if (!state)
225
- continue;
226
- infos.push({
227
- id: fuse.id,
228
- name: fuse.name,
229
- turnsRemaining: state.turnsRemaining,
230
- isPaused: state.isPaused,
231
- entityId: state.entityId,
232
- priority: fuse.priority ?? 0,
233
- repeat: fuse.repeat ?? false,
234
- });
235
- }
236
- return infos.sort((a, b) => b.priority - a.priority);
237
- }
238
- // ==================== Serialization ====================
239
- getState() {
240
- const daemons = [];
241
- const fuses = [];
242
- for (const state of this.daemonStates.values()) {
243
- const daemon = this.daemons.get(state.id);
244
- const runnerState = daemon?.getRunnerState?.();
245
- daemons.push({ ...state, ...(runnerState !== undefined ? { runnerState } : {}) });
246
- }
247
- for (const state of this.fuseStates.values()) {
248
- fuses.push({ ...state });
249
- }
250
- return {
251
- turn: this.currentTurn,
252
- daemons,
253
- fuses,
254
- randomSeed: this.random.getSeed(),
255
- };
256
- }
257
- setState(state) {
258
- this.currentTurn = state.turn;
259
- this.random.setSeed(state.randomSeed);
260
- // Restore daemon states (daemons must be re-registered at game start)
261
- for (const daemonState of state.daemons) {
262
- if (this.daemons.has(daemonState.id)) {
263
- this.daemonStates.set(daemonState.id, { ...daemonState });
264
- if (daemonState.runnerState) {
265
- this.daemons.get(daemonState.id)?.restoreRunnerState?.(daemonState.runnerState);
266
- }
267
- }
268
- }
269
- // Restore fuse states (fuses must be re-registered at game start)
270
- for (const fuseState of state.fuses) {
271
- if (this.fuses.has(fuseState.id)) {
272
- this.fuseStates.set(fuseState.id, { ...fuseState });
273
- }
274
- }
275
- }
276
- // ==================== Entity Cleanup ====================
277
- cleanupEntity(entityId) {
278
- const events = [];
279
- // Cancel any fuses bound to this entity
280
- for (const [id, state] of this.fuseStates) {
281
- if (state.entityId === entityId) {
282
- events.push(...this.cancelFuse(id));
283
- }
284
- }
285
- return events;
286
- }
287
- // ==================== Random Access ====================
288
- getRandom() {
289
- return this.random;
290
- }
291
- // ==================== Private Helpers ====================
292
- createContext(world, turn, playerLocation, playerId) {
293
- return {
294
- world,
295
- turn,
296
- random: this.random,
297
- playerLocation,
298
- playerId: playerId || '',
299
- };
300
- }
301
- getSortedDaemons() {
302
- return Array.from(this.daemons.values()).sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));
303
- }
304
- getSortedFuses() {
305
- return Array.from(this.fuses.values()).sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));
306
- }
307
- }
308
- exports.SchedulerService = SchedulerService;
309
- /**
310
- * Create a new SchedulerService instance
311
- */
312
- function createSchedulerService(seed) {
313
- return new SchedulerService(seed);
314
- }
315
- //# sourceMappingURL=scheduler-service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scheduler-service.js","sourceRoot":"","sources":["../../../../src/scheduler-service.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- /**
2
- * Seeded Random Number Generator
3
- *
4
- * Re-exports from @sharpee/core for convenience.
5
- */
6
- export { createSeededRandom, SeededRandom } from "../../core/dist-npm/src/index";
7
- //# sourceMappingURL=seeded-random.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"seeded-random.d.ts","sourceRoot":"","sources":["../../../../src/seeded-random.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC"}
@@ -1,11 +0,0 @@
1
- "use strict";
2
- /**
3
- * Seeded Random Number Generator
4
- *
5
- * Re-exports from @sharpee/core for convenience.
6
- */
7
- Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.createSeededRandom = void 0;
9
- var core_1 = require("../../core/dist-npm/src/index.js");
10
- Object.defineProperty(exports, "createSeededRandom", { enumerable: true, get: function () { return core_1.createSeededRandom; } });
11
- //# sourceMappingURL=seeded-random.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"seeded-random.js","sourceRoot":"","sources":["../../../../src/seeded-random.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,sCAAiE;AAAxD,0GAAA,kBAAkB,OAAA"}
@@ -1,140 +0,0 @@
1
- /**
2
- * Scheduler types for Daemons and Fuses (ADR-071)
3
- *
4
- * Daemons: Processes that run every turn
5
- * Fuses: Countdown timers that trigger after N turns
6
- */
7
- import { ISemanticEvent, EntityId, SeededRandom } from "../../core/dist-npm/src/index";
8
- import { WorldModel } from "../../world-model/dist-npm/src/index";
9
- export { SeededRandom } from "../../core/dist-npm/src/index";
10
- /**
11
- * Context passed to daemon and fuse handlers
12
- */
13
- export interface SchedulerContext {
14
- /** The world model */
15
- world: WorldModel;
16
- /** Current turn number */
17
- turn: number;
18
- /** Seeded random number generator */
19
- random: SeededRandom;
20
- /** Player's current location */
21
- playerLocation: EntityId;
22
- /** Player entity ID */
23
- playerId: EntityId;
24
- }
25
- /**
26
- * A daemon is a function that runs every turn
27
- */
28
- export interface Daemon {
29
- /** Unique identifier */
30
- id: string;
31
- /** Human-readable name for debugging */
32
- name: string;
33
- /** Condition for running (optional - if omitted, always runs) */
34
- condition?: (context: SchedulerContext) => boolean;
35
- /** The daemon's action - returns semantic events */
36
- run: (context: SchedulerContext) => ISemanticEvent[];
37
- /** Priority for ordering (higher = runs first, default 0) */
38
- priority?: number;
39
- /** If true, daemon removes itself after first successful run */
40
- runOnce?: boolean;
41
- /** Optional: return runner-specific state for serialization (ADR-123) */
42
- getRunnerState?: () => Record<string, unknown>;
43
- /** Optional: restore runner-specific state after deserialization (ADR-123) */
44
- restoreRunnerState?: (state: Record<string, unknown>) => void;
45
- }
46
- /**
47
- * A fuse is a countdown timer that triggers after N turns
48
- */
49
- export interface Fuse {
50
- /** Unique identifier */
51
- id: string;
52
- /** Human-readable name for debugging */
53
- name: string;
54
- /** Turns until trigger (counts down each tick) */
55
- turns: number;
56
- /** What happens when it triggers - returns semantic events */
57
- trigger: (context: SchedulerContext) => ISemanticEvent[];
58
- /** Optional: entity this fuse is bound to (for automatic cleanup) */
59
- entityId?: EntityId;
60
- /** Optional: condition for ticking (if false, turn doesn't count down) */
61
- tickCondition?: (context: SchedulerContext) => boolean;
62
- /** What happens if cancelled before triggering (cleanup) */
63
- onCancel?: (context: SchedulerContext) => ISemanticEvent[];
64
- /** Priority for ordering multiple simultaneous triggers */
65
- priority?: number;
66
- /** If true, fuse repeats after triggering */
67
- repeat?: boolean;
68
- /** Original turns value for repeating fuses */
69
- originalTurns?: number;
70
- }
71
- /**
72
- * Runtime state for a daemon
73
- */
74
- export interface DaemonState {
75
- id: string;
76
- isPaused: boolean;
77
- runCount: number;
78
- /** Runner-specific state for typed daemons (ADR-123) */
79
- runnerState?: Record<string, unknown>;
80
- }
81
- /**
82
- * Runtime state for a fuse
83
- */
84
- export interface FuseState {
85
- id: string;
86
- turnsRemaining: number;
87
- isPaused: boolean;
88
- entityId?: EntityId;
89
- }
90
- /**
91
- * Info about an active daemon (for debugging/introspection)
92
- */
93
- export interface DaemonInfo {
94
- id: string;
95
- name: string;
96
- isPaused: boolean;
97
- runCount: number;
98
- priority: number;
99
- }
100
- /**
101
- * Info about an active fuse (for debugging/introspection)
102
- */
103
- export interface FuseInfo {
104
- id: string;
105
- name: string;
106
- turnsRemaining: number;
107
- isPaused: boolean;
108
- entityId?: EntityId;
109
- priority: number;
110
- repeat: boolean;
111
- }
112
- /**
113
- * Result of a scheduler tick
114
- */
115
- export interface SchedulerResult {
116
- /** Events generated by daemons and fuses */
117
- events: ISemanticEvent[];
118
- /** IDs of fuses that triggered this tick */
119
- fusesTriggered: string[];
120
- /** IDs of daemons that ran this tick */
121
- daemonsRun: string[];
122
- }
123
- /**
124
- * Serializable scheduler state for save/load
125
- */
126
- export interface SchedulerState {
127
- /** Current turn number */
128
- turn: number;
129
- /** Daemon states */
130
- daemons: DaemonState[];
131
- /** Fuse states */
132
- fuses: FuseState[];
133
- /** Random seed */
134
- randomSeed: number;
135
- }
136
- /**
137
- * Scheduler event types for lifecycle events
138
- */
139
- export type SchedulerEventType = 'daemon.registered' | 'daemon.removed' | 'daemon.paused' | 'daemon.resumed' | 'fuse.set' | 'fuse.triggered' | 'fuse.cancelled' | 'fuse.paused' | 'fuse.resumed';
140
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/types.ts"],"names":[],"mappings":"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"}
package/dist-npm/types.js DELETED
@@ -1,9 +0,0 @@
1
- "use strict";
2
- /**
3
- * Scheduler types for Daemons and Fuses (ADR-071)
4
- *
5
- * Daemons: Processes that run every turn
6
- * Fuses: Countdown timers that trigger after N turns
7
- */
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/types.ts"],"names":[],"mappings":";AAAA;;;;;GAKG"}