@rpgm-tools/neo-angband-core 1.18.0 → 1.19.1

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 (282) hide show
  1. package/README.md +2 -3
  2. package/dist/agent/boundary.d.ts +87 -0
  3. package/dist/agent/boundary.d.ts.map +1 -0
  4. package/dist/agent/boundary.js +116 -0
  5. package/dist/agent/boundary.js.map +1 -0
  6. package/dist/agent/entity-views.d.ts.map +1 -1
  7. package/dist/agent/entity-views.js +59 -28
  8. package/dist/agent/entity-views.js.map +1 -1
  9. package/dist/agent/index.d.ts +5 -0
  10. package/dist/agent/index.d.ts.map +1 -1
  11. package/dist/agent/index.js +2 -0
  12. package/dist/agent/index.js.map +1 -1
  13. package/dist/agent/inspect.d.ts +159 -0
  14. package/dist/agent/inspect.d.ts.map +1 -0
  15. package/dist/agent/inspect.js +324 -0
  16. package/dist/agent/inspect.js.map +1 -0
  17. package/dist/agent/known-level.d.ts +72 -0
  18. package/dist/agent/known-level.d.ts.map +1 -0
  19. package/dist/agent/known-level.js +114 -0
  20. package/dist/agent/known-level.js.map +1 -0
  21. package/dist/agent/loadout.d.ts.map +1 -1
  22. package/dist/agent/loadout.js +20 -1
  23. package/dist/agent/loadout.js.map +1 -1
  24. package/dist/agent/perceive.d.ts.map +1 -1
  25. package/dist/agent/perceive.js +65 -7
  26. package/dist/agent/perceive.js.map +1 -1
  27. package/dist/agent/types.d.ts +181 -11
  28. package/dist/agent/types.d.ts.map +1 -1
  29. package/dist/agent/types.js.map +1 -1
  30. package/dist/color.d.ts +11 -0
  31. package/dist/color.d.ts.map +1 -1
  32. package/dist/color.js +46 -0
  33. package/dist/color.js.map +1 -1
  34. package/dist/combat/melee.d.ts +2 -0
  35. package/dist/combat/melee.d.ts.map +1 -1
  36. package/dist/combat/melee.js +8 -3
  37. package/dist/combat/melee.js.map +1 -1
  38. package/dist/combat/mon-melee.d.ts +1 -0
  39. package/dist/combat/mon-melee.d.ts.map +1 -1
  40. package/dist/combat/mon-melee.js +3 -0
  41. package/dist/combat/mon-melee.js.map +1 -1
  42. package/dist/datafile.d.ts +2 -5
  43. package/dist/datafile.d.ts.map +1 -1
  44. package/dist/datafile.js.map +1 -1
  45. package/dist/effects/handlers.d.ts.map +1 -1
  46. package/dist/effects/handlers.js +2 -0
  47. package/dist/effects/handlers.js.map +1 -1
  48. package/dist/effects/interpreter.d.ts +2 -0
  49. package/dist/effects/interpreter.d.ts.map +1 -1
  50. package/dist/effects/interpreter.js.map +1 -1
  51. package/dist/events.d.ts +73 -1
  52. package/dist/events.d.ts.map +1 -1
  53. package/dist/events.js +6 -1
  54. package/dist/events.js.map +1 -1
  55. package/dist/game/context.d.ts +17 -0
  56. package/dist/game/context.d.ts.map +1 -1
  57. package/dist/game/context.js +2 -0
  58. package/dist/game/context.js.map +1 -1
  59. package/dist/game/describe.d.ts +5 -1
  60. package/dist/game/describe.d.ts.map +1 -1
  61. package/dist/game/describe.js +11 -2
  62. package/dist/game/describe.js.map +1 -1
  63. package/dist/game/effect-attack.d.ts +2 -0
  64. package/dist/game/effect-attack.d.ts.map +1 -1
  65. package/dist/game/effect-attack.js +11 -9
  66. package/dist/game/effect-attack.js.map +1 -1
  67. package/dist/game/effect-env.d.ts.map +1 -1
  68. package/dist/game/effect-env.js +8 -1
  69. package/dist/game/effect-env.js.map +1 -1
  70. package/dist/game/effect-general.d.ts.map +1 -1
  71. package/dist/game/effect-general.js +7 -3
  72. package/dist/game/effect-general.js.map +1 -1
  73. package/dist/game/effect-melee.d.ts.map +1 -1
  74. package/dist/game/effect-melee.js +14 -0
  75. package/dist/game/effect-melee.js.map +1 -1
  76. package/dist/game/effect-mon-origin.d.ts.map +1 -1
  77. package/dist/game/effect-mon-origin.js +2 -0
  78. package/dist/game/effect-mon-origin.js.map +1 -1
  79. package/dist/game/effect-monster.d.ts.map +1 -1
  80. package/dist/game/effect-monster.js +5 -0
  81. package/dist/game/effect-monster.js.map +1 -1
  82. package/dist/game/effect-teleport.d.ts.map +1 -1
  83. package/dist/game/effect-teleport.js +8 -1
  84. package/dist/game/effect-teleport.js.map +1 -1
  85. package/dist/game/effect-terrain.d.ts.map +1 -1
  86. package/dist/game/effect-terrain.js +9 -3
  87. package/dist/game/effect-terrain.js.map +1 -1
  88. package/dist/game/loop.d.ts +4 -0
  89. package/dist/game/loop.d.ts.map +1 -1
  90. package/dist/game/loop.js +27 -3
  91. package/dist/game/loop.js.map +1 -1
  92. package/dist/game/mon-cmd.d.ts.map +1 -1
  93. package/dist/game/mon-cmd.js +20 -12
  94. package/dist/game/mon-cmd.js.map +1 -1
  95. package/dist/game/mon-death.d.ts +1 -1
  96. package/dist/game/mon-death.d.ts.map +1 -1
  97. package/dist/game/mon-death.js +4 -2
  98. package/dist/game/mon-death.js.map +1 -1
  99. package/dist/game/mon-group.d.ts.map +1 -1
  100. package/dist/game/mon-group.js +2 -1
  101. package/dist/game/mon-group.js.map +1 -1
  102. package/dist/game/mon-message.d.ts +9 -0
  103. package/dist/game/mon-message.d.ts.map +1 -1
  104. package/dist/game/mon-message.js +14 -0
  105. package/dist/game/mon-message.js.map +1 -1
  106. package/dist/game/mon-place.d.ts.map +1 -1
  107. package/dist/game/mon-place.js +4 -1
  108. package/dist/game/mon-place.js.map +1 -1
  109. package/dist/game/mon-side.d.ts.map +1 -1
  110. package/dist/game/mon-side.js +5 -0
  111. package/dist/game/mon-side.js.map +1 -1
  112. package/dist/game/monster-turn.d.ts.map +1 -1
  113. package/dist/game/monster-turn.js +14 -15
  114. package/dist/game/monster-turn.js.map +1 -1
  115. package/dist/game/obj-cmd.d.ts +4 -0
  116. package/dist/game/obj-cmd.d.ts.map +1 -1
  117. package/dist/game/obj-cmd.js +31 -1
  118. package/dist/game/obj-cmd.js.map +1 -1
  119. package/dist/game/object-inspect.d.ts +2 -2
  120. package/dist/game/object-inspect.d.ts.map +1 -1
  121. package/dist/game/object-inspect.js +7 -5
  122. package/dist/game/object-inspect.js.map +1 -1
  123. package/dist/game/pickup.d.ts.map +1 -1
  124. package/dist/game/pickup.js +10 -1
  125. package/dist/game/pickup.js.map +1 -1
  126. package/dist/game/player-turn.d.ts.map +1 -1
  127. package/dist/game/player-turn.js +38 -8
  128. package/dist/game/player-turn.js.map +1 -1
  129. package/dist/game/project-cast.d.ts +4 -0
  130. package/dist/game/project-cast.d.ts.map +1 -1
  131. package/dist/game/project-cast.js +11 -2
  132. package/dist/game/project-cast.js.map +1 -1
  133. package/dist/game/project-feat.d.ts.map +1 -1
  134. package/dist/game/project-feat.js +2 -0
  135. package/dist/game/project-feat.js.map +1 -1
  136. package/dist/game/project-monster.d.ts +1 -0
  137. package/dist/game/project-monster.d.ts.map +1 -1
  138. package/dist/game/project-monster.js +13 -1
  139. package/dist/game/project-monster.js.map +1 -1
  140. package/dist/game/project-player.d.ts +1 -0
  141. package/dist/game/project-player.d.ts.map +1 -1
  142. package/dist/game/project-player.js +4 -0
  143. package/dist/game/project-player.js.map +1 -1
  144. package/dist/game/ranged-cmd.d.ts.map +1 -1
  145. package/dist/game/ranged-cmd.js +7 -2
  146. package/dist/game/ranged-cmd.js.map +1 -1
  147. package/dist/game/resolved-events.d.ts +10 -0
  148. package/dist/game/resolved-events.d.ts.map +1 -0
  149. package/dist/game/resolved-events.js +28 -0
  150. package/dist/game/resolved-events.js.map +1 -0
  151. package/dist/game/scheduler.d.ts.map +1 -1
  152. package/dist/game/scheduler.js +9 -2
  153. package/dist/game/scheduler.js.map +1 -1
  154. package/dist/game/steal.d.ts.map +1 -1
  155. package/dist/game/steal.js +2 -0
  156. package/dist/game/steal.js.map +1 -1
  157. package/dist/game/target.d.ts.map +1 -1
  158. package/dist/game/target.js +3 -0
  159. package/dist/game/target.js.map +1 -1
  160. package/dist/game/thrust.d.ts.map +1 -1
  161. package/dist/game/thrust.js +7 -0
  162. package/dist/game/thrust.js.map +1 -1
  163. package/dist/game/trap.d.ts.map +1 -1
  164. package/dist/game/trap.js +3 -0
  165. package/dist/game/trap.js.map +1 -1
  166. package/dist/game/world.d.ts.map +1 -1
  167. package/dist/game/world.js +4 -0
  168. package/dist/game/world.js.map +1 -1
  169. package/dist/host/io.d.ts +1 -1
  170. package/dist/host/io.d.ts.map +1 -1
  171. package/dist/host/io.js +1 -1
  172. package/dist/host/io.js.map +1 -1
  173. package/dist/index.d.ts +1 -0
  174. package/dist/index.d.ts.map +1 -1
  175. package/dist/index.js +1 -0
  176. package/dist/index.js.map +1 -1
  177. package/dist/mod/save-blocks.d.ts +1 -1
  178. package/dist/mon/lore-file.d.ts +24 -2
  179. package/dist/mon/lore-file.d.ts.map +1 -1
  180. package/dist/mon/lore-file.js +115 -23
  181. package/dist/mon/lore-file.js.map +1 -1
  182. package/dist/mon/steal.d.ts +3 -0
  183. package/dist/mon/steal.d.ts.map +1 -1
  184. package/dist/mon/steal.js +3 -3
  185. package/dist/mon/steal.js.map +1 -1
  186. package/dist/mon/take-hit.d.ts +4 -1
  187. package/dist/mon/take-hit.d.ts.map +1 -1
  188. package/dist/mon/take-hit.js +3 -3
  189. package/dist/mon/take-hit.js.map +1 -1
  190. package/dist/obj/randart-file.d.ts +44 -13
  191. package/dist/obj/randart-file.d.ts.map +1 -1
  192. package/dist/obj/randart-file.js +304 -53
  193. package/dist/obj/randart-file.js.map +1 -1
  194. package/dist/obj/randart.d.ts +1 -1
  195. package/dist/obj/randart.d.ts.map +1 -1
  196. package/dist/obj/randart.js +29 -5
  197. package/dist/obj/randart.js.map +1 -1
  198. package/dist/player/options-file.d.ts +11 -29
  199. package/dist/player/options-file.d.ts.map +1 -1
  200. package/dist/player/options-file.js +98 -32
  201. package/dist/player/options-file.js.map +1 -1
  202. package/dist/player/options.d.ts +1 -1
  203. package/dist/player/options.js +1 -1
  204. package/dist/save/compress.d.ts +2 -2
  205. package/dist/save/compress.js +2 -2
  206. package/dist/session/game.d.ts.map +1 -1
  207. package/dist/session/game.js +50 -9
  208. package/dist/session/game.js.map +1 -1
  209. package/dist/session/save.d.ts +8 -1
  210. package/dist/session/save.d.ts.map +1 -1
  211. package/dist/session/save.js +22 -16
  212. package/dist/session/save.js.map +1 -1
  213. package/dist/version.d.ts +1 -1
  214. package/dist/version.js +1 -1
  215. package/dist/visuals/prefs.d.ts +2 -26
  216. package/dist/visuals/prefs.d.ts.map +1 -1
  217. package/dist/visuals/prefs.js +2 -29
  218. package/dist/visuals/prefs.js.map +1 -1
  219. package/package.json +7 -1
  220. package/src/agent/boundary.ts +175 -0
  221. package/src/agent/entity-views.ts +57 -27
  222. package/src/agent/index.ts +17 -0
  223. package/src/agent/inspect.ts +389 -0
  224. package/src/agent/known-level.ts +196 -0
  225. package/src/agent/loadout.ts +19 -0
  226. package/src/agent/perceive.ts +70 -6
  227. package/src/agent/types.ts +150 -11
  228. package/src/color.ts +48 -0
  229. package/src/combat/melee.ts +10 -1
  230. package/src/combat/mon-melee.ts +4 -0
  231. package/src/datafile.ts +2 -5
  232. package/src/effects/handlers.ts +2 -0
  233. package/src/effects/interpreter.ts +2 -0
  234. package/src/events.ts +68 -1
  235. package/src/game/context.ts +19 -0
  236. package/src/game/describe.ts +13 -2
  237. package/src/game/effect-attack.ts +11 -7
  238. package/src/game/effect-env.ts +8 -1
  239. package/src/game/effect-general.ts +7 -3
  240. package/src/game/effect-melee.ts +16 -0
  241. package/src/game/effect-mon-origin.ts +3 -0
  242. package/src/game/effect-monster.ts +7 -0
  243. package/src/game/effect-teleport.ts +8 -1
  244. package/src/game/effect-terrain.ts +11 -2
  245. package/src/game/loop.ts +32 -3
  246. package/src/game/mon-cmd.ts +22 -11
  247. package/src/game/mon-death.ts +5 -0
  248. package/src/game/mon-group.ts +2 -1
  249. package/src/game/mon-message.ts +15 -0
  250. package/src/game/mon-place.ts +4 -1
  251. package/src/game/mon-side.ts +6 -0
  252. package/src/game/monster-turn.ts +13 -16
  253. package/src/game/obj-cmd.ts +26 -0
  254. package/src/game/object-inspect.ts +7 -3
  255. package/src/game/pickup.ts +9 -1
  256. package/src/game/player-turn.ts +41 -8
  257. package/src/game/project-cast.ts +15 -2
  258. package/src/game/project-feat.ts +2 -0
  259. package/src/game/project-monster.ts +20 -1
  260. package/src/game/project-player.ts +5 -0
  261. package/src/game/ranged-cmd.ts +7 -2
  262. package/src/game/resolved-events.ts +49 -0
  263. package/src/game/scheduler.ts +10 -2
  264. package/src/game/steal.ts +2 -0
  265. package/src/game/target.ts +3 -0
  266. package/src/game/thrust.ts +7 -0
  267. package/src/game/trap.ts +3 -0
  268. package/src/game/world.ts +5 -0
  269. package/src/host/io.ts +1 -1
  270. package/src/index.ts +1 -0
  271. package/src/mon/lore-file.ts +127 -28
  272. package/src/mon/steal.ts +6 -4
  273. package/src/mon/take-hit.ts +6 -2
  274. package/src/obj/randart-file.ts +313 -58
  275. package/src/obj/randart.ts +32 -11
  276. package/src/player/options-file.ts +100 -42
  277. package/src/player/options.ts +1 -1
  278. package/src/save/compress.ts +2 -2
  279. package/src/session/game.ts +55 -8
  280. package/src/session/save.ts +33 -17
  281. package/src/version.ts +1 -1
  282. package/src/visuals/prefs.ts +2 -52
package/README.md CHANGED
@@ -1,7 +1,6 @@
1
1
  # @rpgm-tools/neo-angband-core
2
2
 
3
- The headless game engine behind [Neo Angband](https://github.com/neostryder/neo-angband),
4
- a TypeScript port of [Angband](https://angband.github.io/angband/) 4.2.6.
3
+ The headless game engine behind [Neo Angband](https://github.com/neostryder/neo-angband), a faithful but moddable port of [Angband](https://angband.github.io/angband/), meant to be playable almost anywhere.
5
4
 
6
5
  No renderer, no input, no DOM, no filesystem: rules, world, entities, effects,
7
6
  generation and the save format, as plain modules. Runs in Node and in a browser.
@@ -32,7 +31,7 @@ import { Rng, ENGINE_VERSION, PARITY_BASELINE } from "@rpgm-tools/neo-angband-co
32
31
  const rng = new Rng(1234);
33
32
  console.log(rng.damroll(3, 6), rng.damroll(3, 6), rng.damroll(3, 6)); // 9 13 8
34
33
 
35
- console.log(ENGINE_VERSION, PARITY_BASELINE); // 1.18.0 4.2.6
34
+ console.log(ENGINE_VERSION, PARITY_BASELINE); // 1.19.1 4.2.6
36
35
  ```
37
36
 
38
37
  Two entry points:
@@ -0,0 +1,87 @@
1
+ /**
2
+ * The input boundary: one token for each input wait, and one immutable capture
3
+ * of the game as it stands at that wait.
4
+ *
5
+ * WHY THIS EXISTS. Every AgentView accessor is its own read. A presenter that
6
+ * draws the player from one call, the pack from a second and the monsters from a
7
+ * third cannot show that the three describe the same moment, and a presenter
8
+ * that sends an action back cannot show that the action was chosen against the
9
+ * game that will receive it. A whole-interface mod needs both: a single capture
10
+ * it can draw from, and a token it can hand back with an action so the game can
11
+ * refuse one aimed at a state that has since moved on.
12
+ *
13
+ * WHAT MOVES THE TOKEN. The revision is a counter on GameState, raised by
14
+ * `bumpInputRevision`, and it is raised exactly where the game changes between
15
+ * two input waits:
16
+ * - `runGameLoop`, when a call consumed a command or advanced the game turn. A
17
+ * call that returned INPUT with nothing consumed changed nothing, so a host
18
+ * that re-enters the loop while it waits does not age a token it gave out.
19
+ * - a completed level change, which the host performs after LEVEL_CHANGE and
20
+ * which does not pass back through the loop before the next wait.
21
+ * - the target setters, which change what "the target" means without a turn.
22
+ * Anything that changes state through a queued command is covered by the first.
23
+ *
24
+ * THE EPOCH. The revision starts at 0 for every GameState, so a token kept
25
+ * across a load would otherwise match the new game's first wait. Each GameState
26
+ * gets its own epoch from a module counter the first time it is asked for one,
27
+ * and a token only matches when both numbers do. Neither number is saved, and
28
+ * neither touches the game RNG.
29
+ *
30
+ * PURE. Reading a token or taking a capture changes no game state, no knowledge
31
+ * and no RNG stream; boundary.test.ts holds that against a serialized save, the
32
+ * RNG state, the turn and the command queue.
33
+ */
34
+ import type { GameState } from "../game/context.js";
35
+ import type { AgentView, ItemView, MonsterView, PlayerView, SpellbookView, StoreView, TargetView } from "./types.js";
36
+ /** Identifies one input wait of one game. Compare with `tokenIsCurrent`. */
37
+ export interface InputToken {
38
+ readonly epoch: number;
39
+ readonly revision: number;
40
+ }
41
+ /** Mark that the game changed since the last input wait. */
42
+ export declare function bumpInputRevision(state: GameState): void;
43
+ /** The token for the game as it stands now. Frozen. */
44
+ export declare function inputToken(state: GameState): InputToken;
45
+ /**
46
+ * Whether `token` names the game as it stands now. Anything that is not a token
47
+ * of the right shape, including null, is not current.
48
+ */
49
+ export declare function tokenIsCurrent(state: GameState, token: InputToken | null | undefined): boolean;
50
+ /**
51
+ * The game at one input wait, as plain frozen data.
52
+ *
53
+ * Each part is what the AgentView accessor of the same name returns. A part
54
+ * whose `state:<domain>.read` capability the caller does not hold is null
55
+ * rather than a thrown error, so a capture is always available and never
56
+ * carries more than the caller may read.
57
+ *
58
+ * The map and the message log are not here. The map is large and has its own
59
+ * bulk read; messages() drains a per-decision buffer, so calling it from a
60
+ * capture would change what the next decision sees.
61
+ */
62
+ export interface CoreSnapshot {
63
+ readonly token: InputToken;
64
+ readonly turn: number | null;
65
+ readonly player: PlayerView | null;
66
+ readonly inventory: readonly ItemView[] | null;
67
+ readonly equipment: readonly (ItemView | null)[] | null;
68
+ readonly equipmentSlots: readonly {
69
+ readonly type: string;
70
+ readonly name: string;
71
+ }[] | null;
72
+ readonly quiver: readonly ItemView[] | null;
73
+ readonly floorHere: readonly ItemView[] | null;
74
+ readonly monsters: readonly MonsterView[] | null;
75
+ readonly target: TargetView | null;
76
+ /** False when the target part was not readable, so null above is ambiguous. */
77
+ readonly targetReadable: boolean;
78
+ readonly stores: readonly StoreView[] | null;
79
+ readonly spellbooks: readonly SpellbookView[] | null;
80
+ }
81
+ /**
82
+ * Capture the game through `view`'s own accessors, so every capability check
83
+ * they make still applies. The result is a structured clone, deep-frozen: it
84
+ * shares no object with the live game or with a previous capture.
85
+ */
86
+ export declare function captureCoreSnapshot(state: GameState, view: AgentView): CoreSnapshot;
87
+ //# sourceMappingURL=boundary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boundary.d.ts","sourceRoot":"","sources":["../../src/agent/boundary.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,KAAK,EACV,SAAS,EACT,QAAQ,EACR,WAAW,EACX,UAAU,EACV,aAAa,EACb,SAAS,EACT,UAAU,EACX,MAAM,YAAY,CAAC;AAEpB,4EAA4E;AAC5E,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAcD,4DAA4D;AAC5D,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAExD;AAED,uDAAuD;AACvD,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,UAAU,CAKvD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,GACnC,OAAO,CAMT;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,SAAS,QAAQ,EAAE,GAAG,IAAI,CAAC;IAC/C,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;IACxD,QAAQ,CAAC,cAAc,EAAE,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,IAAI,CAAC;IAC5F,QAAQ,CAAC,MAAM,EAAE,SAAS,QAAQ,EAAE,GAAG,IAAI,CAAC;IAC5C,QAAQ,CAAC,SAAS,EAAE,SAAS,QAAQ,EAAE,GAAG,IAAI,CAAC;IAC/C,QAAQ,CAAC,QAAQ,EAAE,SAAS,WAAW,EAAE,GAAG,IAAI,CAAC;IACjD,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IACnC,+EAA+E;IAC/E,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,GAAG,IAAI,CAAC;IAC7C,QAAQ,CAAC,UAAU,EAAE,SAAS,aAAa,EAAE,GAAG,IAAI,CAAC;CACtD;AA0BD;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,SAAS,GACd,YAAY,CAqBd"}
@@ -0,0 +1,116 @@
1
+ /**
2
+ * The input boundary: one token for each input wait, and one immutable capture
3
+ * of the game as it stands at that wait.
4
+ *
5
+ * WHY THIS EXISTS. Every AgentView accessor is its own read. A presenter that
6
+ * draws the player from one call, the pack from a second and the monsters from a
7
+ * third cannot show that the three describe the same moment, and a presenter
8
+ * that sends an action back cannot show that the action was chosen against the
9
+ * game that will receive it. A whole-interface mod needs both: a single capture
10
+ * it can draw from, and a token it can hand back with an action so the game can
11
+ * refuse one aimed at a state that has since moved on.
12
+ *
13
+ * WHAT MOVES THE TOKEN. The revision is a counter on GameState, raised by
14
+ * `bumpInputRevision`, and it is raised exactly where the game changes between
15
+ * two input waits:
16
+ * - `runGameLoop`, when a call consumed a command or advanced the game turn. A
17
+ * call that returned INPUT with nothing consumed changed nothing, so a host
18
+ * that re-enters the loop while it waits does not age a token it gave out.
19
+ * - a completed level change, which the host performs after LEVEL_CHANGE and
20
+ * which does not pass back through the loop before the next wait.
21
+ * - the target setters, which change what "the target" means without a turn.
22
+ * Anything that changes state through a queued command is covered by the first.
23
+ *
24
+ * THE EPOCH. The revision starts at 0 for every GameState, so a token kept
25
+ * across a load would otherwise match the new game's first wait. Each GameState
26
+ * gets its own epoch from a module counter the first time it is asked for one,
27
+ * and a token only matches when both numbers do. Neither number is saved, and
28
+ * neither touches the game RNG.
29
+ *
30
+ * PURE. Reading a token or taking a capture changes no game state, no knowledge
31
+ * and no RNG stream; boundary.test.ts holds that against a serialized save, the
32
+ * RNG state, the turn and the command queue.
33
+ */
34
+ import { AgentCapabilityError } from "./types.js";
35
+ const epochs = new WeakMap();
36
+ let nextEpoch = 1;
37
+ function epochOf(state) {
38
+ let e = epochs.get(state);
39
+ if (e === undefined) {
40
+ e = nextEpoch++;
41
+ epochs.set(state, e);
42
+ }
43
+ return e;
44
+ }
45
+ /** Mark that the game changed since the last input wait. */
46
+ export function bumpInputRevision(state) {
47
+ state.inputRevision = (state.inputRevision ?? 0) + 1;
48
+ }
49
+ /** The token for the game as it stands now. Frozen. */
50
+ export function inputToken(state) {
51
+ return Object.freeze({
52
+ epoch: epochOf(state),
53
+ revision: state.inputRevision ?? 0,
54
+ });
55
+ }
56
+ /**
57
+ * Whether `token` names the game as it stands now. Anything that is not a token
58
+ * of the right shape, including null, is not current.
59
+ */
60
+ export function tokenIsCurrent(state, token) {
61
+ if (!token || typeof token !== "object")
62
+ return false;
63
+ return (token.epoch === epochOf(state) &&
64
+ token.revision === (state.inputRevision ?? 0));
65
+ }
66
+ function granted(read) {
67
+ try {
68
+ return { ok: true, value: read() };
69
+ }
70
+ catch (e) {
71
+ if (e instanceof AgentCapabilityError)
72
+ return { ok: false };
73
+ throw e;
74
+ }
75
+ }
76
+ function part(read) {
77
+ const r = granted(read);
78
+ return r.ok ? r.value : null;
79
+ }
80
+ function deepFreeze(value) {
81
+ if (value && typeof value === "object" && !Object.isFrozen(value)) {
82
+ Object.freeze(value);
83
+ for (const v of Object.values(value)) {
84
+ deepFreeze(v);
85
+ }
86
+ }
87
+ return value;
88
+ }
89
+ /**
90
+ * Capture the game through `view`'s own accessors, so every capability check
91
+ * they make still applies. The result is a structured clone, deep-frozen: it
92
+ * shares no object with the live game or with a previous capture.
93
+ */
94
+ export function captureCoreSnapshot(state, view) {
95
+ const target = granted(() => view.target());
96
+ const snap = {
97
+ token: inputToken(state),
98
+ turn: part(() => view.turn()),
99
+ player: part(() => view.player()),
100
+ inventory: part(() => view.inventory()),
101
+ equipment: part(() => view.equipment()),
102
+ equipmentSlots: part(() => {
103
+ view.equipment();
104
+ return state.actor.player.body.slots.map(({ type, name }) => ({ type, name }));
105
+ }),
106
+ quiver: part(() => view.quiver()),
107
+ floorHere: part(() => view.floorItems(state.actor.grid.x, state.actor.grid.y)),
108
+ monsters: part(() => view.monsters()),
109
+ target: target.ok ? target.value : null,
110
+ targetReadable: target.ok,
111
+ stores: part(() => view.stores()),
112
+ spellbooks: part(() => view.spellbooks()),
113
+ };
114
+ return deepFreeze(structuredClone(snap));
115
+ }
116
+ //# sourceMappingURL=boundary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boundary.js","sourceRoot":"","sources":["../../src/agent/boundary.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"entity-views.d.ts","sourceRoot":"","sources":["../../src/agent/entity-views.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAQH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEtE,gFAAgF;AAChF,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,CAOhD;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,CAOhD;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CACtB,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,UAAU,EACf,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,aAAa,EACnB,KAAK,CAAC,EAAE,MAAM,GACb,QAAQ,CAyFV;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,WAAW,CAAC;IACzB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,aAAa,EACnB,IAAI,CAAC,EAAE,iBAAiB,GACvB,UAAU,CAmEZ"}
1
+ {"version":3,"file":"entity-views.d.ts","sourceRoot":"","sources":["../../src/agent/entity-views.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AASH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAOnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEtE,gFAAgF;AAChF,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,CAOhD;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,CAOhD;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CACtB,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,UAAU,EACf,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,aAAa,EACnB,KAAK,CAAC,EAAE,MAAM,GACb,QAAQ,CAuGV;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,WAAW,CAAC;IACzB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,aAAa,EACnB,IAAI,CAAC,EAAE,iBAAiB,GACvB,UAAU,CA8EZ"}
@@ -12,9 +12,13 @@
12
12
  * structural instead of a convention, and it keeps the import graph one-way
13
13
  * (perceive and loadout both depend on this; neither depends on the other).
14
14
  */
15
- import { ELEMENT_ENTRIES, OBJECT_FLAG_ENTRIES, PLAYER_FLAG_ENTRIES, TMD, } from "../generated/index.js";
15
+ import { ELEMENT_ENTRIES, OBJECT_FLAG_ENTRIES, OF, PLAYER_FLAG_ENTRIES, TMD, } from "../generated/index.js";
16
+ import { tvalIsBook } from "../obj/object.js";
17
+ import { playerObjectToBook } from "../player/spell.js";
16
18
  import { OBJ_MOD_NAMES } from "../obj/bind.js";
17
19
  import { objectValue } from "../obj/value.js";
20
+ import { objectFlagsKnown, objectKnownShadow } from "../obj/known-object.js";
21
+ import { knownDescOf } from "../game/describe.js";
18
22
  /** OF_* codes for the set flags in an object-flag FlagSet (OF is 1-indexed). */
19
23
  export function ofCodes(flags) {
20
24
  const out = [];
@@ -50,9 +54,17 @@ export function pfCodes(flags) {
50
54
  */
51
55
  export function itemView(handle, obj, state, deps, count) {
52
56
  const number = count ?? obj.number;
57
+ /* Everything below that says what the object IS comes from its known twin
58
+ * (upstream obj->known, objectKnownShadow), the same record object_desc and the
59
+ * inspect screen read. A mod sees what the player knows: an unidentified ego
60
+ * reads as plain gear, and an unlearned rune adds nothing. The kind, weight and
61
+ * base dice and armour are known on sight. */
62
+ const p = state.actor.player;
63
+ const knownDesc = knownDescOf(state, true);
64
+ const known = objectKnownShadow(obj, p, state.runeEnv, knownDesc);
53
65
  const modifiers = [];
54
- for (let i = 0; i < obj.modifiers.length; i++) {
55
- const value = obj.modifiers[i] ?? 0;
66
+ for (let i = 0; i < known.modifiers.length; i++) {
67
+ const value = known.modifiers[i] ?? 0;
56
68
  if (value === 0)
57
69
  continue;
58
70
  const code = OBJ_MOD_NAMES[i];
@@ -60,9 +72,9 @@ export function itemView(handle, obj, state, deps, count) {
60
72
  modifiers.push({ code, value });
61
73
  }
62
74
  const brands = [];
63
- if (obj.brands) {
64
- for (let i = 0; i < obj.brands.length; i++) {
65
- if (!obj.brands[i])
75
+ if (known.brands) {
76
+ for (let i = 0; i < known.brands.length; i++) {
77
+ if (!known.brands[i])
66
78
  continue;
67
79
  const code = state.brands[i]?.code;
68
80
  if (code)
@@ -70,9 +82,9 @@ export function itemView(handle, obj, state, deps, count) {
70
82
  }
71
83
  }
72
84
  const slays = [];
73
- if (obj.slays) {
74
- for (let i = 0; i < obj.slays.length; i++) {
75
- if (!obj.slays[i])
85
+ if (known.slays) {
86
+ for (let i = 0; i < known.slays.length; i++) {
87
+ if (!known.slays[i])
76
88
  continue;
77
89
  const code = state.slays[i]?.code;
78
90
  if (code)
@@ -80,8 +92,8 @@ export function itemView(handle, obj, state, deps, count) {
80
92
  }
81
93
  }
82
94
  const resists = [];
83
- for (let i = 0; i < obj.elInfo.length; i++) {
84
- const level = obj.elInfo[i]?.resLevel ?? 0;
95
+ for (let i = 0; i < known.elInfo.length; i++) {
96
+ const level = known.elInfo[i]?.resLevel ?? 0;
85
97
  if (level === 0)
86
98
  continue;
87
99
  const name = ELEMENT_ENTRIES[i]?.name;
@@ -89,9 +101,9 @@ export function itemView(handle, obj, state, deps, count) {
89
101
  resists.push({ element: name, level });
90
102
  }
91
103
  const curses = [];
92
- if (obj.curses) {
93
- for (let i = 0; i < obj.curses.length; i++) {
94
- const power = obj.curses[i]?.power ?? 0;
104
+ if (known.curses) {
105
+ for (let i = 0; i < known.curses.length; i++) {
106
+ const power = known.curses[i]?.power ?? 0;
95
107
  if (power <= 0)
96
108
  continue;
97
109
  /* Curse names resolve from the always-present RuneEnv curse table (real
@@ -104,32 +116,40 @@ export function itemView(handle, obj, state, deps, count) {
104
116
  }
105
117
  const view = {
106
118
  handle,
119
+ kindKey: `kind:${obj.kind.kidx}`,
120
+ ...(handle > 0 ? { itemKey: `gear:${handle}` } : {}),
121
+ nameColor: tvalIsBook(obj.tval) && !playerObjectToBook(state.actor.player, obj)
122
+ ? "slate" : obj.kind.base.attr,
107
123
  label: obj.kind.name,
108
124
  tval: obj.tval,
109
125
  sval: obj.sval,
110
- pval: obj.pval,
126
+ pval: known.pval,
111
127
  number,
112
128
  weight: obj.weight,
113
- ac: obj.ac,
114
- toA: obj.toA,
115
- toH: obj.toH,
116
- toD: obj.toD,
117
- dd: obj.dd,
118
- ds: obj.ds,
119
- ego: obj.ego !== null,
120
- artifact: obj.artifact !== null,
121
- flags: ofCodes(obj.flags),
129
+ ac: known.ac,
130
+ toA: known.toA,
131
+ toH: known.toH,
132
+ toD: known.toD,
133
+ dd: known.dd,
134
+ ds: known.ds,
135
+ ego: known.ego !== null,
136
+ artifact: known.artifact !== null,
137
+ flags: ofCodes(objectFlagsKnown(obj, p, state.runeEnv, knownDesc)),
122
138
  modifiers,
123
139
  brands,
124
140
  slays,
125
141
  resists,
126
142
  curses,
127
- egoName: obj.ego?.name ?? null,
128
- artifactName: obj.artifact?.name ?? null,
129
- activation: obj.activation !== null,
143
+ egoName: known.ego?.name ?? null,
144
+ artifactName: known.artifact?.name ?? null,
145
+ activation: known.activation !== null,
130
146
  timeout: obj.timeout,
131
147
  inscription: obj.note ?? null,
132
148
  };
149
+ if (deps.describe)
150
+ view.name = deps.describe(obj);
151
+ if (deps.ignored)
152
+ view.ignored = deps.ignored(obj);
133
153
  if (deps.resolver) {
134
154
  const kindId = deps.resolver.kindIdOrNull(obj.kind.kidx);
135
155
  if (kindId !== null)
@@ -137,7 +157,7 @@ export function itemView(handle, obj, state, deps, count) {
137
157
  }
138
158
  if (deps.reg) {
139
159
  const aware = deps.aware ?? (() => true);
140
- view.value = objectValue(deps.reg, obj, number, aware(obj.kind));
160
+ view.value = objectValue(deps.reg, obj, number, aware(obj.kind), { p, env: state.runeEnv, deps: knownDesc });
141
161
  }
142
162
  return view;
143
163
  }
@@ -163,6 +183,7 @@ export function playerViewFor(state, deps, over) {
163
183
  exp: p.exp,
164
184
  maxExp: p.maxExp,
165
185
  gold: p.au,
186
+ learnableSpells: p.upkeep.newSpells,
166
187
  depth: state.chunk.depth,
167
188
  maxDepth: p.maxDepth,
168
189
  hp: p.chp,
@@ -200,9 +221,19 @@ export function playerViewFor(state, deps, over) {
200
221
  resFire: p.timed[TMD.OPP_FIRE] ?? 0,
201
222
  resCold: p.timed[TMD.OPP_COLD] ?? 0,
202
223
  resPois: p.timed[TMD.OPP_POIS] ?? 0,
224
+ /* player_of_has(p, OF_AFRAID), the flag the melee refusal reads: the
225
+ * timed effects' flag synonyms are folded into playerState.flags by
226
+ * calc_bonuses, alongside equipment, curses and shapes. */
227
+ fearful: (playerState?.flags.has(OF.AFRAID) ?? false) || (p.timed[TMD.AFRAID] ?? 0) > 0,
228
+ terror: p.timed[TMD.TERROR] ?? 0,
229
+ amnesia: p.timed[TMD.AMNESIA] ?? 0,
230
+ image: p.timed[TMD.IMAGE] ?? 0,
203
231
  },
204
232
  dead: state.isDead,
205
233
  winner: p.totalWinner,
234
+ hpWarning: Math.trunc((p.mhp * (state.options?.hitpointWarn ?? 3)) / 10),
235
+ recall: p.wordRecall,
236
+ descent: p.deepDescent,
206
237
  skills: [...p.skills],
207
238
  shape: p.shape?.name ?? null,
208
239
  objectFlags: playerState ? ofCodes(playerState.flags) : [],
@@ -1 +1 @@
1
- {"version":3,"file":"entity-views.js","sourceRoot":"","sources":["../../src/agent/entity-views.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entity-views.js","sourceRoot":"","sources":["../../src/agent/entity-views.ts"],"names":[],"mappings":"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"}
@@ -10,9 +10,14 @@
10
10
  export { AGENT_API_VERSION, AGENT_STATE_DOMAINS } from "./types.js";
11
11
  export type { AgentCapabilities, AgentCommand, AgentActions, AgentGlyphSource, AgentController, AgentSession, AgentView, AgentViewDeps, CellView, ControllerOptions, ItemView, LoadoutChange, LoadoutItemRef, LoadoutPlacement, LoadoutSimulation, LoadoutView, MonsterView, PlayerStatusView, PlayerView, SpellbookView, SpellView, StoreItemView, StoreView, TargetView, } from "./types.js";
12
12
  export { createAgentView } from "./perceive.js";
13
+ export { bumpInputRevision, captureCoreSnapshot, inputToken, tokenIsCurrent, } from "./boundary.js";
14
+ export type { CoreSnapshot, InputToken } from "./boundary.js";
15
+ export { captureKnownLevel } from "./known-level.js";
16
+ export type { KnownLevelView, KnownLevelCell, RememberedCell, RememberedObject, ActualCell, TrapView, } from "./known-level.js";
13
17
  export { itemView, playerViewFor } from "./entity-views.js";
14
18
  export type { PlayerViewDerived } from "./entity-views.js";
15
19
  export { simulateLoadout } from "./loadout.js";
20
+ export type { BlastAreaResult, BookItemResult, GridInspectResult, InspectResult, ItemRulesResult, ItemTesterResult, LoadoutSlotsResult, SpellInspectResult, TerrainCatalogueResult, TerrainFeatureView, TileActionsResult, TravelPathResult } from "./inspect.js";
16
21
  export type { LoadoutDerive, LoadoutSimOptions } from "./loadout.js";
17
22
  export { createAgentActions } from "./act.js";
18
23
  export { AgentCapabilityError, installController } from "./controller.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACpE,YAAY,EACV,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,SAAS,EACT,aAAa,EACb,QAAQ,EACR,iBAAiB,EACjB,QAAQ,EACR,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,UAAU,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACb,SAAS,EACT,UAAU,GACX,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC5D,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,YAAY,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACpE,YAAY,EACV,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,SAAS,EACT,aAAa,EACb,QAAQ,EACR,iBAAiB,EACjB,QAAQ,EACR,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,UAAU,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACb,SAAS,EACT,UAAU,GACX,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,UAAU,EACV,cAAc,GACf,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,YAAY,EACV,cAAc,EACd,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,QAAQ,GACT,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC5D,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAClQ,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,YAAY,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC"}
@@ -9,6 +9,8 @@
9
9
  */
10
10
  export { AGENT_API_VERSION, AGENT_STATE_DOMAINS } from "./types.js";
11
11
  export { createAgentView } from "./perceive.js";
12
+ export { bumpInputRevision, captureCoreSnapshot, inputToken, tokenIsCurrent, } from "./boundary.js";
13
+ export { captureKnownLevel } from "./known-level.js";
12
14
  export { itemView, playerViewFor } from "./entity-views.js";
13
15
  export { simulateLoadout } from "./loadout.js";
14
16
  export { createAgentActions } from "./act.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AA2BpE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AA2BpE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,UAAU,EACV,cAAc,GACf,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AASrD,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAG/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC"}