@maka/maka-cli 5.64.0 → 5.65.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundle/typescript/package.json +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/backlog.d.ts +29 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/backlog.js +146 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/backlog.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/bluff.d.ts +40 -13
- package/bundle/typescript/src/commands/game/sideQuest/commands/bluff.js +107 -25
- package/bundle/typescript/src/commands/game/sideQuest/commands/bluff.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/breach.d.ts +11 -15
- package/bundle/typescript/src/commands/game/sideQuest/commands/breach.js +13 -16
- package/bundle/typescript/src/commands/game/sideQuest/commands/breach.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/buy.d.ts +8 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/buy.js +30 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/buy.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.d.ts +40 -49
- package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.js +121 -160
- package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/cast.d.ts +7 -8
- package/bundle/typescript/src/commands/game/sideQuest/commands/cast.js +13 -13
- package/bundle/typescript/src/commands/game/sideQuest/commands/cast.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/cover.d.ts +30 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/cover.js +65 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/cover.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/dispel.d.ts +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/dispel.js +2 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/dispel.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/go.js +25 -3
- package/bundle/typescript/src/commands/game/sideQuest/commands/go.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/hack.d.ts +2 -3
- package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js +2 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/jobs.js +2 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/jobs.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/look.js +58 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/look.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/map.js +18 -4
- package/bundle/typescript/src/commands/game/sideQuest/commands/map.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/move.js +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/pick.d.ts +2 -3
- package/bundle/typescript/src/commands/game/sideQuest/commands/pick.js +2 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/pick.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/posture.d.ts +45 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/posture.js +115 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/posture.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/search.js +35 -24
- package/bundle/typescript/src/commands/game/sideQuest/commands/search.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/take.js +12 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/take.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/unlock.js +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/unlock.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/use.d.ts +17 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/use.js +136 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/use.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/engine-version.d.ts +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/engine-version.js +15 -1
- package/bundle/typescript/src/commands/game/sideQuest/engine-version.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.d.ts +82 -43
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js +419 -263
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.js +82 -84
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-seed-generator.d.ts +23 -4
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-seed-generator.js +95 -79
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-seed-generator.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/seed-migration.d.ts +30 -0
- package/bundle/typescript/src/commands/game/sideQuest/factories/seed-migration.js +176 -0
- package/bundle/typescript/src/commands/game/sideQuest/factories/seed-migration.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/game.js +11 -5
- package/bundle/typescript/src/commands/game/sideQuest/game.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/headless.js +24 -0
- package/bundle/typescript/src/commands/game/sideQuest/headless.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/_index.d.ts +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/_index.js +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/_index.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/device.d.ts +121 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/device.js +145 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/device.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/door.d.ts +27 -8
- package/bundle/typescript/src/commands/game/sideQuest/models/door.js +15 -10
- package/bundle/typescript/src/commands/game/sideQuest/models/door.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.d.ts +81 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.js +132 -21
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/player.d.ts +68 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/player.js +102 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/player.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/room.d.ts +32 -46
- package/bundle/typescript/src/commands/game/sideQuest/models/room.js +38 -63
- package/bundle/typescript/src/commands/game/sideQuest/models/room.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/scene.d.ts +1 -4
- package/bundle/typescript/src/commands/game/sideQuest/models/scene.js +0 -22
- package/bundle/typescript/src/commands/game/sideQuest/models/scene.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/scenes/scene1.json +78 -109
- package/bundle/typescript/src/commands/game/sideQuest/scenes/scene2.json +4 -101
- package/bundle/typescript/src/commands/game/sideQuest/types/save-file.d.ts +24 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/device-seed.d.ts +52 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/device-seed.js +2 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/device-seed.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/legacy-puzzle-seed.d.ts +63 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/legacy-puzzle-seed.js +2 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/legacy-puzzle-seed.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/player-seed.d.ts +6 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/room-seed.d.ts +4 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/scene-seed.d.ts +3 -2
- package/bundle/typescript/src/commands/game/sideQuest/types/shared/abstracts.d.ts +2 -28
- package/bundle/typescript/src/commands/game/sideQuest/types/shared/abstracts.js +1 -14
- package/bundle/typescript/src/commands/game/sideQuest/types/shared/abstracts.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/ui.js +24 -0
- package/bundle/typescript/src/commands/game/sideQuest/ui.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/affordances.d.ts +55 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/affordances.js +36 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/affordances.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-review.d.ts +45 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-review.js +116 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-review.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog.d.ts +67 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog.js +56 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.js +37 -4
- package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/credentials.d.ts +26 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/credentials.js +48 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/credentials.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/devices.d.ts +23 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/devices.js +55 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/devices.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/fuzzy-match.d.ts +57 -2
- package/bundle/typescript/src/commands/game/sideQuest/utilities/fuzzy-match.js +46 -3
- package/bundle/typescript/src/commands/game/sideQuest/utilities/fuzzy-match.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/log-style.d.ts +16 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/log-style.js +18 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/log-style.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.js +68 -38
- package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/room-grid.d.ts +3 -3
- package/bundle/typescript/src/commands/game/sideQuest/utilities/room-grid.js +3 -3
- package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.d.ts +36 -12
- package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.js +101 -27
- package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/use-target.d.ts +88 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/use-target.js +113 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/use-target.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js +54 -5
- package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js.map +1 -1
- package/bundle/typescript/src/maka.js +1 -1
- package/bundle/typescript/src/maka.js.map +1 -1
- package/bundle/typescript/src/tools/sdk-loader/relocate.d.ts +19 -2
- package/bundle/typescript/src/tools/sdk-loader/relocate.js +22 -2
- package/bundle/typescript/src/tools/sdk-loader/relocate.js.map +1 -1
- package/package.json +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/solve.d.ts +0 -6
- package/bundle/typescript/src/commands/game/sideQuest/commands/solve.js +0 -72
- package/bundle/typescript/src/commands/game/sideQuest/commands/solve.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/puzzle-factory.d.ts +0 -6
- package/bundle/typescript/src/commands/game/sideQuest/factories/puzzle-factory.js +0 -26
- package/bundle/typescript/src/commands/game/sideQuest/factories/puzzle-factory.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.d.ts +0 -152
- package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.js +0 -393
- package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.js.map +0 -1
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/puzzle-seed.d.ts +0 -28
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/puzzle-seed.js +0 -2
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/puzzle-seed.js.map +0 -1
|
@@ -166,6 +166,30 @@ export interface ISavedHub {
|
|
|
166
166
|
/** Seed NPCs absent from the live scene (killed) -- removed QUIETLY
|
|
167
167
|
* on load; their dropped gear is already in the room overlays. */
|
|
168
168
|
deadActors: string[];
|
|
169
|
+
/** Devices by name, and the whole of their state. `bypassBurned`
|
|
170
|
+
* went with the puzzle mechanic -- a lock you failed to force is a
|
|
171
|
+
* lock you can try again. */
|
|
172
|
+
devices: {
|
|
173
|
+
name: string;
|
|
174
|
+
open: boolean;
|
|
175
|
+
}[];
|
|
176
|
+
/**
|
|
177
|
+
* A TOMBSTONE, always written as [], never read by this build.
|
|
178
|
+
*
|
|
179
|
+
* It exists for an OLDER READER, not for us. v5.64.0 is shipped, and
|
|
180
|
+
* its persistence.ts line 530 is `for (const p of saved.puzzles)`
|
|
181
|
+
* with no guard -- so a save written without this field makes that
|
|
182
|
+
* build throw "saved.puzzles is not iterable" on resume. Not
|
|
183
|
+
* degraded: a hard crash.
|
|
184
|
+
*
|
|
185
|
+
* And saves MOVE. cloud-saves.ts mirrors the whole ISaveFileV1
|
|
186
|
+
* including this overlay, so a player on two machines, a rollback,
|
|
187
|
+
* or a server pin lagging the client all put a new save in front of
|
|
188
|
+
* an old reader.
|
|
189
|
+
*
|
|
190
|
+
* SAFE TO DELETE only once v5.64.0 is out of the wild -- check
|
|
191
|
+
* before you do; nothing in THIS build will fail if you remove it.
|
|
192
|
+
*/
|
|
169
193
|
puzzles: {
|
|
170
194
|
name: string;
|
|
171
195
|
solved: boolean;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A DEVICE IN A ROOM -- the seed shape that replaces the old puzzles[].
|
|
3
|
+
*
|
|
4
|
+
* The user's framing is the specification: "A lock is not a puzzle, it
|
|
5
|
+
* has a key. A keypad has an interface (to use). An NPC in the doorway
|
|
6
|
+
* can be persuaded/bluffed/conned to move aside. A persistent forcewall
|
|
7
|
+
* can be dispelled."
|
|
8
|
+
*
|
|
9
|
+
* Three of those four are DEVICES; the fourth is a person and has no
|
|
10
|
+
* entry here on purpose (see npcs[].guarding / npcs[].passphrase).
|
|
11
|
+
*
|
|
12
|
+
* A DEVICE ALWAYS BELONGS TO A ROOM. There is no "attached to a door"
|
|
13
|
+
* form, because a keypad beside a grate stands in one room -- the one
|
|
14
|
+
* you must be in to reach it. The puzzle shape allowed both, and the
|
|
15
|
+
* cost was two validators that had to agree, a normaliser between them,
|
|
16
|
+
* and a placement fault the comments record as killing two consecutive
|
|
17
|
+
* generations.
|
|
18
|
+
*/
|
|
19
|
+
export type DeviceSeedKind = 'lock' | 'panel' | 'ward';
|
|
20
|
+
export interface IDeviceSeedJson {
|
|
21
|
+
name: string;
|
|
22
|
+
/** MANDATORY. What the player sees when they look at it. Optional
|
|
23
|
+
* descriptions are how a barrier ended up rendering the literal
|
|
24
|
+
* string "undefined" into an NPC's prompt. */
|
|
25
|
+
description: string;
|
|
26
|
+
kind: DeviceSeedKind;
|
|
27
|
+
/**
|
|
28
|
+
* The credential that opens it -- ONLY valid on a 'panel'.
|
|
29
|
+
*
|
|
30
|
+
* User ruling, verbatim: "if it's a _mechanical_ lock, it has a key
|
|
31
|
+
* or can be picked. You can't talk at a _mechanical_ lock." A lock
|
|
32
|
+
* opens by key or by force; a ward answers to the Art. Neither has
|
|
33
|
+
* anything to hear a phrase with, and the migration drops a code off
|
|
34
|
+
* anything that is not a panel.
|
|
35
|
+
*/
|
|
36
|
+
code?: string;
|
|
37
|
+
/** Item name that opens it outright -- a keycard, a physical key. */
|
|
38
|
+
keyItem?: string;
|
|
39
|
+
/** Item name handed over when it opens (a safe's contents). */
|
|
40
|
+
grantsItem?: string;
|
|
41
|
+
/** "At" spot of its room that it physically stands at. */
|
|
42
|
+
atSpot?: string;
|
|
43
|
+
/** The exit OF ITS OWN ROOM that opening this device unseals. The
|
|
44
|
+
* door starts locked and the device is what unlocks it. */
|
|
45
|
+
opensExit?: string;
|
|
46
|
+
/** Terrain this device's footprint seals on the room grid, if it is
|
|
47
|
+
* physically in the way (rubble, a shutter). */
|
|
48
|
+
guardsExit?: string;
|
|
49
|
+
footprint?: 'small' | 'medium' | 'large';
|
|
50
|
+
openMessage?: string;
|
|
51
|
+
refuseMessage?: string;
|
|
52
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device-seed.js","sourceRoot":"","sources":["../../../../../../../../src/commands/game/sideQuest/types/seed/device-seed.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* THE SHAPE OF AN OLD SEED, kept only so it can be TRANSLATED.
|
|
3
|
+
*
|
|
4
|
+
* This is not a live seed type. The puzzle mechanic is gone (2026-08-27
|
|
5
|
+
* -- barriers are room-owned Devices worked by the verb that suits the
|
|
6
|
+
* thing; see types/seed/device-seed.ts). Nothing in the engine consumes
|
|
7
|
+
* a puzzle any more.
|
|
8
|
+
*
|
|
9
|
+
* It survives for exactly one reader: factories/seed-migration.ts,
|
|
10
|
+
* which converts `puzzles[]` into devices and guards on the way in. And
|
|
11
|
+
* it has to keep surviving, because a seed is not only a file on disk
|
|
12
|
+
* -- every save EMBEDS its hub seed, so a returning player's save
|
|
13
|
+
* carries a puzzles[] array written by a build that still had them.
|
|
14
|
+
*
|
|
15
|
+
* >>> DELETE THIS FILE WHEN no save in the wild still embeds a
|
|
16
|
+
* >>> puzzles[] hubSeed. Until then it is load-bearing, and the import
|
|
17
|
+
* >>> line in seed-migration.ts is the only place it should appear.
|
|
18
|
+
*
|
|
19
|
+
* It is named and located to make that status legible: a file called
|
|
20
|
+
* `puzzle-seed.ts` sitting in types/seed/ beside the live types reads
|
|
21
|
+
* as current to anyone browsing, which is how a dead mechanic keeps
|
|
22
|
+
* looking alive.
|
|
23
|
+
*
|
|
24
|
+
* ---- what the fields meant, for whoever is reading a legacy seed ----
|
|
25
|
+
*
|
|
26
|
+
* `bypassType` was the risky route past a barrier. "con" used to be in
|
|
27
|
+
* that union too, for barriers that were "really a person or a
|
|
28
|
+
* voice-gate", and it went first (player ruling: "'bluff' shouldn't
|
|
29
|
+
* work on Barriers like locks/wards/etc ... NPCs can be barriers").
|
|
30
|
+
* That was the modelling correction the rest of this file eventually
|
|
31
|
+
* followed: a lock has no opinion to change, and making a PERSON into
|
|
32
|
+
* a Puzzle dragged them through machinery that made no sense for a
|
|
33
|
+
* human being. The migration reads these values one last time and maps
|
|
34
|
+
* them to a device kind, or to a guarding NPC.
|
|
35
|
+
*/
|
|
36
|
+
export type LegacyPuzzleBypassType = 'lockpick' | 'hack' | 'spell';
|
|
37
|
+
export interface ILegacyPuzzleSeedJson {
|
|
38
|
+
name: string;
|
|
39
|
+
room?: string;
|
|
40
|
+
riddle: string;
|
|
41
|
+
requiredPhrase?: string;
|
|
42
|
+
requiredItem?: string;
|
|
43
|
+
rewardItem?: string;
|
|
44
|
+
successMessage?: string;
|
|
45
|
+
failureMessage?: string;
|
|
46
|
+
hobbyTags?: string[];
|
|
47
|
+
/** Name of another puzzle in this same scene that must be solved first. */
|
|
48
|
+
requiresPuzzle?: string;
|
|
49
|
+
/** Shown when attempting to solve this puzzle before requiresPuzzle is met. */
|
|
50
|
+
lockedMessage?: string;
|
|
51
|
+
/**
|
|
52
|
+
* Optional risky alternate route to the same reward, matching this
|
|
53
|
+
* barrier's in-fiction nature (a lock -> "pick", a terminal -> "hack", a
|
|
54
|
+
* ward -> "cast") -- a coin-flip chance to bypass without ever knowing
|
|
55
|
+
* requiredPhrase, but a failed attempt is loud (see Puzzle.attemptBypass).
|
|
56
|
+
* Leave unset for a puzzle with no such physical/technical/magical route
|
|
57
|
+
* (e.g. a purely social one, solvable only by knowing the actual answer).
|
|
58
|
+
*/
|
|
59
|
+
bypassType?: LegacyPuzzleBypassType;
|
|
60
|
+
atSpot?: string;
|
|
61
|
+
guardsExit?: string;
|
|
62
|
+
footprint?: 'small' | 'medium' | 'large';
|
|
63
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"legacy-puzzle-seed.js","sourceRoot":"","sources":["../../../../../../../../src/commands/game/sideQuest/types/seed/legacy-puzzle-seed.ts"],"names":[],"mappings":""}
|
|
@@ -45,6 +45,12 @@ export interface IPlayerSeedJson {
|
|
|
45
45
|
name: string;
|
|
46
46
|
startLocation: string;
|
|
47
47
|
startSpot?: string;
|
|
48
|
+
/** This NPC HOLDS their position against passage -- a doorman, a
|
|
49
|
+
* picket. Combined with a startSpot on a doorway, it makes them a
|
|
50
|
+
* barrier you cannot walk through (see Player.guarding and
|
|
51
|
+
* utilities/spots.ts holdsGround). The way past is social or
|
|
52
|
+
* violent, never a lockpick. */
|
|
53
|
+
guarding?: boolean;
|
|
48
54
|
lifestyleChoices: LifestyleChoice[];
|
|
49
55
|
startingItems?: IItemSeedJson[];
|
|
50
56
|
combat?: ICombatSeedJson;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { IDeviceSeedJson } from './device-seed.js';
|
|
1
2
|
import { IExitSeedJson } from './exit-seed.js';
|
|
2
3
|
import { RoomSize, SpotPlace, IGridSynthesisLevel } from '../../utilities/room-grid.js';
|
|
3
4
|
export interface IRoomSeedJson {
|
|
@@ -8,6 +9,9 @@ export interface IRoomSeedJson {
|
|
|
8
9
|
owner?: string;
|
|
9
10
|
tags?: string[];
|
|
10
11
|
exits: IExitSeedJson[];
|
|
12
|
+
/** Devices standing in THIS room (see types/seed/device-seed.ts).
|
|
13
|
+
* Always room-owned -- there is no device-on-a-door form. */
|
|
14
|
+
devices?: IDeviceSeedJson[];
|
|
11
15
|
reachable?: boolean;
|
|
12
16
|
hasNode?: boolean;
|
|
13
17
|
nodeAccess?: 'wireless' | 'wired';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { IRoomSeedJson } from './room-seed.js';
|
|
2
2
|
import { INPCSeedJson } from './npc-seed.js';
|
|
3
3
|
import { IItemSeedJson } from './item-seed.js';
|
|
4
|
-
import {
|
|
4
|
+
import { ILegacyPuzzleSeedJson } from './legacy-puzzle-seed.js';
|
|
5
5
|
import { IPlayerSeedJson } from './player-seed.js';
|
|
6
6
|
import { IWinConditionSeedJson } from './win-condition-seed.js';
|
|
7
7
|
export interface ISceneSeedJson {
|
|
@@ -13,7 +13,8 @@ export interface ISceneSeedJson {
|
|
|
13
13
|
rooms: IRoomSeedJson[];
|
|
14
14
|
npcs: INPCSeedJson[];
|
|
15
15
|
items: IItemSeedJson[];
|
|
16
|
-
|
|
16
|
+
/** LEGACY, migrated away on load -- see legacy-puzzle-seed.ts. */
|
|
17
|
+
puzzles: ILegacyPuzzleSeedJson[];
|
|
17
18
|
residenceTiers: string[];
|
|
18
19
|
story: string;
|
|
19
20
|
/** The logging-in player who will be actively controlled */
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EventEmitter } from 'events';
|
|
2
|
-
import { Room, Player, NPC, Item,
|
|
2
|
+
import { Room, Player, NPC, Item, Door, Inventory } from '../../models/_index';
|
|
3
3
|
import { Size, Category, Rating } from '../shared/item-enum.js';
|
|
4
4
|
import { Direction } from '../shared/direction-enum';
|
|
5
5
|
import { PlayerEquipment } from '../player-equipment.js';
|
|
@@ -21,14 +21,13 @@ export declare abstract class AbstractScene {
|
|
|
21
21
|
abstract addRoom(room: Room): void;
|
|
22
22
|
abstract removeRoom(roomName: string): boolean;
|
|
23
23
|
abstract addItemToRoom(item: Item, roomName: string): void;
|
|
24
|
-
abstract addPuzzleToRoom(puzzle: Puzzle, roomName: string): void;
|
|
25
24
|
abstract setCharacterLocation(character: Player | NPC, roomName: string): void;
|
|
26
25
|
abstract getCharacterLocation(character: Player | NPC): Room | undefined;
|
|
27
26
|
abstract determineStartRoom(): Room;
|
|
28
27
|
}
|
|
29
28
|
/**
|
|
30
29
|
* The Room class represents a physical or conceptual space within the game. Each room can have items,
|
|
31
|
-
*
|
|
30
|
+
* devices, and exits (doors) leading to other rooms. Rooms also hold details about their description
|
|
32
31
|
* and any special attributes they might possess.
|
|
33
32
|
*/
|
|
34
33
|
export declare abstract class AbstractRoom extends EventEmitter {
|
|
@@ -36,7 +35,6 @@ export declare abstract class AbstractRoom extends EventEmitter {
|
|
|
36
35
|
abstract description: string;
|
|
37
36
|
abstract exits: Map<Direction, Door | string>;
|
|
38
37
|
abstract inventory: Inventory;
|
|
39
|
-
puzzle?: Puzzle;
|
|
40
38
|
abstract roomType: string;
|
|
41
39
|
abstract isStartRoom: boolean;
|
|
42
40
|
abstract addExit(direction: Direction, targetRoom: Room, keyItemOrSolution?: string): void;
|
|
@@ -45,7 +43,6 @@ export declare abstract class AbstractRoom extends EventEmitter {
|
|
|
45
43
|
abstract isExitLocked(direction: Direction): boolean;
|
|
46
44
|
abstract addItem(item: Item): void;
|
|
47
45
|
abstract removeItem(item: Item): void;
|
|
48
|
-
abstract setPuzzle(puzzle: Puzzle): void;
|
|
49
46
|
abstract getOppositeDirection(direction: Direction): Direction;
|
|
50
47
|
abstract findExistingDoor(targetRoom: Room): Door | undefined;
|
|
51
48
|
}
|
|
@@ -60,7 +57,6 @@ export declare abstract class AbstractDoor {
|
|
|
60
57
|
abstract roomB: Room;
|
|
61
58
|
abstract isLocked: boolean;
|
|
62
59
|
unlockItemOrSolution?: string;
|
|
63
|
-
puzzle?: Puzzle;
|
|
64
60
|
abstract logger: Logger;
|
|
65
61
|
abstract isLockable: boolean;
|
|
66
62
|
abstract getOtherSide(currentRoom: Room): Room;
|
|
@@ -128,25 +124,3 @@ export declare abstract class AbstractPlayer extends EventEmitter {
|
|
|
128
124
|
abstract unequip(input: string): string;
|
|
129
125
|
abstract hear(actor: Player, message: string): void | Promise<void>;
|
|
130
126
|
}
|
|
131
|
-
/**
|
|
132
|
-
* The Puzzle class represents a challenge or riddle in the game that the player must solve.
|
|
133
|
-
* A puzzle can require a specific item or phrase to be solved. Successfully solving the puzzle
|
|
134
|
-
* might reward the player with an item. The puzzle can only be solved once.
|
|
135
|
-
*/
|
|
136
|
-
export declare abstract class AbstractPuzzle {
|
|
137
|
-
protected abstract logger: Logger;
|
|
138
|
-
protected abstract solved: boolean;
|
|
139
|
-
abstract name: string;
|
|
140
|
-
abstract requiredItem?: Item;
|
|
141
|
-
abstract requiredPhrase?: string;
|
|
142
|
-
abstract riddle?: string;
|
|
143
|
-
abstract rewardItem?: Item;
|
|
144
|
-
abstract successMessage: string;
|
|
145
|
-
abstract failureMessage: string;
|
|
146
|
-
abstract hasRequiredItem(playerInventory: Inventory): boolean;
|
|
147
|
-
abstract matchesRequiredPhrase(inputPhrase: string): boolean;
|
|
148
|
-
abstract solve(providedAnswer: string, playerInventory: Inventory): {
|
|
149
|
-
success: boolean;
|
|
150
|
-
message: string;
|
|
151
|
-
};
|
|
152
|
-
}
|
|
@@ -7,11 +7,10 @@ export class AbstractScene {
|
|
|
7
7
|
}
|
|
8
8
|
/**
|
|
9
9
|
* The Room class represents a physical or conceptual space within the game. Each room can have items,
|
|
10
|
-
*
|
|
10
|
+
* devices, and exits (doors) leading to other rooms. Rooms also hold details about their description
|
|
11
11
|
* and any special attributes they might possess.
|
|
12
12
|
*/
|
|
13
13
|
export class AbstractRoom extends EventEmitter {
|
|
14
|
-
puzzle;
|
|
15
14
|
}
|
|
16
15
|
/**
|
|
17
16
|
* The Door class represents a connection between two rooms within the game. Doors can be locked
|
|
@@ -20,11 +19,6 @@ export class AbstractRoom extends EventEmitter {
|
|
|
20
19
|
*/
|
|
21
20
|
export class AbstractDoor {
|
|
22
21
|
unlockItemOrSolution;
|
|
23
|
-
// A door can be guarded by a real Puzzle instead of (or alongside) a
|
|
24
|
-
// physical key -- the only difference from a room's puzzle is that
|
|
25
|
-
// success unlocks the door rather than granting an item. See
|
|
26
|
-
// Door.attachPuzzle().
|
|
27
|
-
puzzle;
|
|
28
22
|
}
|
|
29
23
|
/**
|
|
30
24
|
* The Inventory class represents a collection of items that can be carried by a player or stored
|
|
@@ -50,11 +44,4 @@ export class AbstractPlayer extends EventEmitter {
|
|
|
50
44
|
super(); // Initialize EventEmitter
|
|
51
45
|
}
|
|
52
46
|
}
|
|
53
|
-
/**
|
|
54
|
-
* The Puzzle class represents a challenge or riddle in the game that the player must solve.
|
|
55
|
-
* A puzzle can require a specific item or phrase to be solved. Successfully solving the puzzle
|
|
56
|
-
* might reward the player with an item. The puzzle can only be solved once.
|
|
57
|
-
*/
|
|
58
|
-
export class AbstractPuzzle {
|
|
59
|
-
}
|
|
60
47
|
//# sourceMappingURL=abstracts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstracts.js","sourceRoot":"","sources":["../../../../../../../../src/commands/game/sideQuest/types/shared/abstracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"abstracts.js","sourceRoot":"","sources":["../../../../../../../../src/commands/game/sideQuest/types/shared/abstracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAqBtC;;;GAGG;AACH,MAAM,OAAgB,aAAa;CAiBlC;AAED;;;;GAIG;AACH,MAAM,OAAgB,YAAa,SAAQ,YAAY;CAgBtD;AAED;;;;GAIG;AACH,MAAM,OAAgB,YAAY;IAKhC,oBAAoB,CAAU;CAQ/B;AAED;;;GAGG;AACH,MAAM,OAAgB,iBAAiB;CAWtC;AAED;;;GAGG;AACH,MAAM,OAAgB,YAAY;CAYjC;AAED;;;;;;GAMG;AACH,MAAM,OAAgB,cAAe,SAAQ,YAAY;IAOvD;QACE,KAAK,EAAE,CAAC,CAAC,0BAA0B;IACrC,CAAC;CAsBF"}
|
|
@@ -220,6 +220,30 @@ export async function main(playerName, sceneSeed, options) {
|
|
|
220
220
|
: '';
|
|
221
221
|
game.logBox.setContent(notice + ready); // getWelcomeMessage should return the initial game introduction or room description
|
|
222
222
|
gameLog.transcript(notice + ready); // the transcript opens the way the session did
|
|
223
|
+
// "WHEN THEY LOGIN, THEY SHOULD GET A MESSAGE ABOUT A BACKLOG ITEM
|
|
224
|
+
// FOR REVIEW" (user request 2026-08-27). Fired here and never
|
|
225
|
+
// awaited: the welcome is already on screen, and a boot must not
|
|
226
|
+
// wait on a network round trip to say hello. When it lands -- or
|
|
227
|
+
// never, if the player is offline, logged out, or not a play-tester
|
|
228
|
+
// -- the notice either appears as one line or is silently not said.
|
|
229
|
+
//
|
|
230
|
+
// Same fire-and-forget shape as the play-tester probe rather than a
|
|
231
|
+
// second mechanism for the same job, and it settles the play-tester
|
|
232
|
+
// standing for free on the way (the endpoint is role-gated the same
|
|
233
|
+
// way the board is).
|
|
234
|
+
//
|
|
235
|
+
// CLIENT-SIDE ONLY, deliberately: this is the player's own queue on
|
|
236
|
+
// the player's own login, so it has no business running in the
|
|
237
|
+
// headless engine a shared run executes on.
|
|
238
|
+
void (async () => {
|
|
239
|
+
const { probeReviewQueue, reviewNotice } = await import('./utilities/backlog-review.js');
|
|
240
|
+
await probeReviewQueue({ anonymous: options.anonymousRunner === true });
|
|
241
|
+
const line = reviewNotice();
|
|
242
|
+
if (!line)
|
|
243
|
+
return;
|
|
244
|
+
gameLog.log(line);
|
|
245
|
+
gameLog.transcript(line);
|
|
246
|
+
})().catch(() => undefined);
|
|
223
247
|
game.updateEquipment(game.player.equipment);
|
|
224
248
|
game.updateInventory(game.player.inventory, capitalCase(game.scene.getCurrencyType()));
|
|
225
249
|
game.updateExits(game.player.currentLocation);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../../../../../src/commands/game/sideQuest/ui.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../../../../../src/commands/game/sideQuest/ui.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WHAT A THING AFFORDS -- the verbs that bite on it, and the voice it
|
|
3
|
+
* uses to turn away the ones that don't.
|
|
4
|
+
*
|
|
5
|
+
* Lifted from puzzle.ts's BYPASS_FLAVOR and rekeyed. The table itself
|
|
6
|
+
* is unchanged in substance; what changed is what it is keyed BY. A
|
|
7
|
+
* "bypass type" described a shortcut past a puzzle. A DeviceKind
|
|
8
|
+
* describes what the object IS -- a lock, a panel, a ward -- which is
|
|
9
|
+
* the question the prose was always really answering.
|
|
10
|
+
*
|
|
11
|
+
* `resists` is the WRONG-VERB voice, and it is keyed on what the thing
|
|
12
|
+
* IS, never on what the player typed (blocker 2026-08-27, "the barrier
|
|
13
|
+
* isn't allowing me to hack/pick/breach it"): a player who reaches for
|
|
14
|
+
* the wrong route is not making an error to be reported, they are
|
|
15
|
+
* asking what this thing is. So the line says what it is, why the
|
|
16
|
+
* attempted route finds no purchase on it, and which verb DOES bite --
|
|
17
|
+
* the same job spots.ts:terrainRefusal() does for a blocked crossing.
|
|
18
|
+
* Never a bare denial: a denial in front of an obvious door is what
|
|
19
|
+
* made a real session conclude the barrier was broken.
|
|
20
|
+
*
|
|
21
|
+
* THE FOURTH MEMBER IS NEW, and it is the whole reason this table moved
|
|
22
|
+
* rather than being copied. 'person' is not a device -- there is no
|
|
23
|
+
* Device with that kind, and there must never be, because making a
|
|
24
|
+
* human being into a lock with a face is the modelling error the
|
|
25
|
+
* "bluff shouldn't work on barriers" ruling was about. It lives here so
|
|
26
|
+
* that a PERSON in a doorway can be described in the same voice as the
|
|
27
|
+
* things around them, from one table, without being one of them.
|
|
28
|
+
*
|
|
29
|
+
* It also closes a TODO left in go.ts: that refusal hinted at talking
|
|
30
|
+
* a guard round in prose and deliberately quoted no verb, because at
|
|
31
|
+
* the time no such verb existed. "bluff" has landed, so it can be
|
|
32
|
+
* named now -- and naming it from here means it can never drift from
|
|
33
|
+
* what the parser actually accepts.
|
|
34
|
+
*/
|
|
35
|
+
export type DeviceKind = 'lock' | 'panel' | 'ward';
|
|
36
|
+
/** Everything the affordance table can describe: the devices, plus the
|
|
37
|
+
* one thing that is emphatically not a device. */
|
|
38
|
+
export type AffordanceKind = DeviceKind | 'person';
|
|
39
|
+
export interface IAffordance {
|
|
40
|
+
/** The canonical verb, for one-line refusals that name a route. */
|
|
41
|
+
verb: string;
|
|
42
|
+
/** EVERY verb that works this thing -- naming half the routes is its
|
|
43
|
+
* own small lie (see search.ts's "Work it:" line). */
|
|
44
|
+
verbs: string[];
|
|
45
|
+
/** Why a wrong route finds no purchase, and which one does. */
|
|
46
|
+
resists: string;
|
|
47
|
+
/** What a failed forcing looks like. */
|
|
48
|
+
failureMessage: string;
|
|
49
|
+
/** The coaching line, behind the hints toggle. */
|
|
50
|
+
hint: string;
|
|
51
|
+
}
|
|
52
|
+
export declare const AFFORDANCE_FLAVOR: Record<AffordanceKind, IAffordance>;
|
|
53
|
+
/** The verbs that work a thing of this kind -- used wherever the game
|
|
54
|
+
* has to tell a player exactly what they may type. */
|
|
55
|
+
export declare function verbsFor(kind: AffordanceKind): string[];
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export const AFFORDANCE_FLAVOR = {
|
|
2
|
+
lock: {
|
|
3
|
+
verb: 'pick',
|
|
4
|
+
verbs: ['pick', 'breach'],
|
|
5
|
+
resists: `It's a mechanism, not a system -- no console to intrude on, no weave to unpick, nobody to talk round. It gives to HANDS: "pick" it quietly, or "breach" it with your shoulder.`,
|
|
6
|
+
failureMessage: `Your pick snaps in the mechanism -- and the lock's alarm isn't silent anymore.`,
|
|
7
|
+
hint: `This looks forceable -- "pick" works it quietly (Agility + locksmith); "breach" forces it with raw muscle (Strength + Body, LOUD even when it works). A key opens it clean, if you can find one.`,
|
|
8
|
+
},
|
|
9
|
+
panel: {
|
|
10
|
+
verb: 'hack',
|
|
11
|
+
verbs: ['hack'],
|
|
12
|
+
resists: `No keyway, no seam, no tumblers to feel for -- it's a sealed SYSTEM, and it only argues with a deck. "hack" it.`,
|
|
13
|
+
failureMessage: `Your intrusion trips a countermeasure -- the system logs the attempt and pings whoever's watching.`,
|
|
14
|
+
hint: `This looks hackable -- try "hack" to skip finding the code (Logic + hacking). Fail, and the system pings whoever's watching.`,
|
|
15
|
+
},
|
|
16
|
+
ward: {
|
|
17
|
+
verb: 'cast',
|
|
18
|
+
verbs: ['cast', 'dispel'],
|
|
19
|
+
resists: `Your hands find nothing to work and your tools find nothing to bite -- the barrier isn't matter. It answers to the Art: "cast" at it, or "dispel" it.`,
|
|
20
|
+
failureMessage: `The weave slips through your fingers -- backlash crackles outward, and something out there felt it.`,
|
|
21
|
+
hint: `This could be unwoven magically -- try "dispel" (Magic + counterspelling) or "cast" (the casting pool). Fail, and the backlash BITES.`,
|
|
22
|
+
},
|
|
23
|
+
person: {
|
|
24
|
+
verb: 'bluff',
|
|
25
|
+
verbs: ['bluff', 'persuade', 'subdue'],
|
|
26
|
+
resists: `There's no lock here at all. There's a PERSON -- and people don't open to tools, they open to a story, an argument, or a shove. "bluff" them, "persuade" them, or "subdue" them.`,
|
|
27
|
+
failureMessage: `The story comes apart mid-sentence -- and now they KNOW someone's running a game on them.`,
|
|
28
|
+
hint: `This one is a person, not a mechanism: "bluff" past them (Charisma + con), "persuade" them (Charisma + negotiation), or put them down with "subdue".`,
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
/** The verbs that work a thing of this kind -- used wherever the game
|
|
32
|
+
* has to tell a player exactly what they may type. */
|
|
33
|
+
export function verbsFor(kind) {
|
|
34
|
+
return AFFORDANCE_FLAVOR[kind]?.verbs ?? [];
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=affordances.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"affordances.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/utilities/affordances.ts"],"names":[],"mappings":"AAsDA,MAAM,CAAC,MAAM,iBAAiB,GAAwC;IACpE,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;QACzB,OAAO,EAAE,gLAAgL;QACzL,cAAc,EAAE,gFAAgF;QAChG,IAAI,EAAE,kMAAkM;KACzM;IACD,KAAK,EAAE;QACL,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,CAAC,MAAM,CAAC;QACf,OAAO,EAAE,iHAAiH;QAC1H,cAAc,EAAE,oGAAoG;QACpH,IAAI,EAAE,8HAA8H;KACrI;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;QACzB,OAAO,EAAE,uJAAuJ;QAChK,cAAc,EAAE,qGAAqG;QACrH,IAAI,EAAE,uIAAuI;KAC9I;IACD,MAAM,EAAE;QACN,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC;QACtC,OAAO,EAAE,kLAAkL;QAC3L,cAAc,EAAE,2FAA2F;QAC3G,IAAI,EAAE,sJAAsJ;KAC7J;CACF,CAAC;AAEF;uDACuD;AACvD,MAAM,UAAU,QAAQ,CAAC,IAAoB;IAC3C,OAAO,iBAAiB,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;AAC9C,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { IReviewItem, BacklogOutcome } from './backlog.js';
|
|
2
|
+
/** Replace the rendered list. Called ONLY when a fresh queue is shown
|
|
3
|
+
* to the player -- that is what makes the numbers theirs. */
|
|
4
|
+
export declare function rememberQueue(items: IReviewItem[]): void;
|
|
5
|
+
/** Exactly what was last rendered, in the order it was rendered. */
|
|
6
|
+
export declare function reviewSnapshot(): IReviewItem[];
|
|
7
|
+
/** 1-based, because the list is printed 1..n to a human. Out of range
|
|
8
|
+
* and non-integers return undefined; the caller names the range. */
|
|
9
|
+
export declare function reviewItemAt(n: number): IReviewItem | undefined;
|
|
10
|
+
export declare function markReviewAnswered(id: string): void;
|
|
11
|
+
export declare function isReviewAnswered(id: string): boolean;
|
|
12
|
+
/** Only for tests and a fresh session. */
|
|
13
|
+
export declare function resetReviewQueue(): void;
|
|
14
|
+
/** How many items were waiting when the session started, or -1 if the
|
|
15
|
+
* probe never answered (offline, logged out, not a play-tester). */
|
|
16
|
+
export declare function pendingReviewCount(): number;
|
|
17
|
+
/**
|
|
18
|
+
* The login-time count, fetched in the background.
|
|
19
|
+
*
|
|
20
|
+
* Same shape as the play-tester probe deliberately -- fire and forget,
|
|
21
|
+
* never block a boot, never throw, and an unanswered probe simply
|
|
22
|
+
* leaves the notice unsaid. Reusing that pattern rather than inventing
|
|
23
|
+
* a second one for the same job.
|
|
24
|
+
*
|
|
25
|
+
* It also folds its outcome into the play-tester standing for free:
|
|
26
|
+
* this endpoint is role-gated exactly like the board, so a 200 proves
|
|
27
|
+
* the role and a 403 disproves it, and a session that runs this probe
|
|
28
|
+
* needs no second request to classify the account.
|
|
29
|
+
*/
|
|
30
|
+
export declare function probeReviewQueue(opts: {
|
|
31
|
+
anonymous: boolean;
|
|
32
|
+
}): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* THE NOTICE, one line. "Someone asked about your report" and "this is
|
|
35
|
+
* fixed, can you confirm it" are different requests and must not read
|
|
36
|
+
* identically, but the count alone cannot tell them apart -- so the
|
|
37
|
+
* notice stays neutral about WHICH, and the list itself distinguishes
|
|
38
|
+
* them per item. Empty string when there is nothing to say.
|
|
39
|
+
*/
|
|
40
|
+
export declare function reviewNotice(): string;
|
|
41
|
+
/** Fetch a fresh queue for display, and adopt it as the numbering. */
|
|
42
|
+
export declare function loadReviewQueue(): Promise<{
|
|
43
|
+
outcome: BacklogOutcome;
|
|
44
|
+
items?: IReviewItem[];
|
|
45
|
+
}>;
|