@maka/maka-cli 5.65.2 → 5.67.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.
Files changed (95) hide show
  1. package/bundle/typescript/package.json +1 -1
  2. package/bundle/typescript/src/commands/game/_index.d.ts +1 -0
  3. package/bundle/typescript/src/commands/game/_index.js +1 -0
  4. package/bundle/typescript/src/commands/game/_index.js.map +1 -1
  5. package/bundle/typescript/src/commands/game/sideQuest/commands/backlog.d.ts +124 -0
  6. package/bundle/typescript/src/commands/game/sideQuest/commands/backlog.js +487 -29
  7. package/bundle/typescript/src/commands/game/sideQuest/commands/backlog.js.map +1 -1
  8. package/bundle/typescript/src/commands/game/sideQuest/commands/bluff.d.ts +15 -1
  9. package/bundle/typescript/src/commands/game/sideQuest/commands/bluff.js +61 -4
  10. package/bundle/typescript/src/commands/game/sideQuest/commands/bluff.js.map +1 -1
  11. package/bundle/typescript/src/commands/game/sideQuest/commands/crew.js +4 -1
  12. package/bundle/typescript/src/commands/game/sideQuest/commands/crew.js.map +1 -1
  13. package/bundle/typescript/src/commands/game/sideQuest/commands/note.d.ts +73 -14
  14. package/bundle/typescript/src/commands/game/sideQuest/commands/note.js +150 -40
  15. package/bundle/typescript/src/commands/game/sideQuest/commands/note.js.map +1 -1
  16. package/bundle/typescript/src/commands/game/sideQuest/commands/review.d.ts +39 -0
  17. package/bundle/typescript/src/commands/game/sideQuest/commands/review.js +48 -0
  18. package/bundle/typescript/src/commands/game/sideQuest/commands/review.js.map +1 -0
  19. package/bundle/typescript/src/commands/game/sideQuest/commands/sheet.js +4 -1
  20. package/bundle/typescript/src/commands/game/sideQuest/commands/sheet.js.map +1 -1
  21. package/bundle/typescript/src/commands/game/sideQuest/engine-version.d.ts +1 -1
  22. package/bundle/typescript/src/commands/game/sideQuest/engine-version.js +15 -1
  23. package/bundle/typescript/src/commands/game/sideQuest/engine-version.js.map +1 -1
  24. package/bundle/typescript/src/commands/game/sideQuest/factories/repro-scene.d.ts +87 -0
  25. package/bundle/typescript/src/commands/game/sideQuest/factories/repro-scene.js +320 -0
  26. package/bundle/typescript/src/commands/game/sideQuest/factories/repro-scene.js.map +1 -0
  27. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.d.ts +36 -0
  28. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js +116 -3
  29. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js.map +1 -1
  30. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.js +8 -1
  31. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.js.map +1 -1
  32. package/bundle/typescript/src/commands/game/sideQuest/game.d.ts +48 -0
  33. package/bundle/typescript/src/commands/game/sideQuest/game.js +112 -13
  34. package/bundle/typescript/src/commands/game/sideQuest/game.js.map +1 -1
  35. package/bundle/typescript/src/commands/game/sideQuest/headless-harness.d.ts +12 -0
  36. package/bundle/typescript/src/commands/game/sideQuest/headless-harness.js +23 -0
  37. package/bundle/typescript/src/commands/game/sideQuest/headless-harness.js.map +1 -1
  38. package/bundle/typescript/src/commands/game/sideQuest/headless.js +4 -1
  39. package/bundle/typescript/src/commands/game/sideQuest/headless.js.map +1 -1
  40. package/bundle/typescript/src/commands/game/sideQuest/models/npc.d.ts +32 -0
  41. package/bundle/typescript/src/commands/game/sideQuest/models/npc.js +122 -3
  42. package/bundle/typescript/src/commands/game/sideQuest/models/npc.js.map +1 -1
  43. package/bundle/typescript/src/commands/game/sideQuest/types/repro.d.ts +106 -0
  44. package/bundle/typescript/src/commands/game/sideQuest/types/repro.js +2 -0
  45. package/bundle/typescript/src/commands/game/sideQuest/types/repro.js.map +1 -0
  46. package/bundle/typescript/src/commands/game/sideQuest/types/seed/device-seed.d.ts +12 -0
  47. package/bundle/typescript/src/commands/game/sideQuest/ui.d.ts +9 -0
  48. package/bundle/typescript/src/commands/game/sideQuest/ui.js.map +1 -1
  49. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-dump.d.ts +17 -1
  50. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-dump.js +250 -36
  51. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-dump.js.map +1 -1
  52. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-review.d.ts +67 -1
  53. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-review.js +99 -0
  54. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-review.js.map +1 -1
  55. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-vocab.d.ts +85 -0
  56. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-vocab.js +100 -0
  57. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-vocab.js.map +1 -0
  58. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog.d.ts +58 -3
  59. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog.js +82 -3
  60. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog.js.map +1 -1
  61. package/bundle/typescript/src/commands/game/sideQuest/utilities/commit-ref.d.ts +13 -0
  62. package/bundle/typescript/src/commands/game/sideQuest/utilities/commit-ref.js +22 -0
  63. package/bundle/typescript/src/commands/game/sideQuest/utilities/commit-ref.js.map +1 -0
  64. package/bundle/typescript/src/commands/game/sideQuest/utilities/handoff.d.ts +42 -0
  65. package/bundle/typescript/src/commands/game/sideQuest/utilities/handoff.js +57 -0
  66. package/bundle/typescript/src/commands/game/sideQuest/utilities/handoff.js.map +1 -0
  67. package/bundle/typescript/src/commands/game/sideQuest/utilities/identity.d.ts +36 -0
  68. package/bundle/typescript/src/commands/game/sideQuest/utilities/identity.js +48 -0
  69. package/bundle/typescript/src/commands/game/sideQuest/utilities/identity.js.map +1 -0
  70. package/bundle/typescript/src/commands/game/sideQuest/utilities/repro-launch.d.ts +68 -0
  71. package/bundle/typescript/src/commands/game/sideQuest/utilities/repro-launch.js +147 -0
  72. package/bundle/typescript/src/commands/game/sideQuest/utilities/repro-launch.js.map +1 -0
  73. package/bundle/typescript/src/commands/game/sideQuest/utilities/room-grid.js +55 -1
  74. package/bundle/typescript/src/commands/game/sideQuest/utilities/room-grid.js.map +1 -1
  75. package/bundle/typescript/src/commands/game/sideQuest/utilities/room-view.d.ts +27 -1
  76. package/bundle/typescript/src/commands/game/sideQuest/utilities/room-view.js +44 -11
  77. package/bundle/typescript/src/commands/game/sideQuest/utilities/room-view.js.map +1 -1
  78. package/bundle/typescript/src/commands/game/sideQuest/utilities/shared-run.d.ts +47 -2
  79. package/bundle/typescript/src/commands/game/sideQuest/utilities/shared-run.js +76 -8
  80. package/bundle/typescript/src/commands/game/sideQuest/utilities/shared-run.js.map +1 -1
  81. package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.js +39 -0
  82. package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.js.map +1 -1
  83. package/bundle/typescript/src/commands/game/sideQuest/utilities/table-notes.d.ts +30 -0
  84. package/bundle/typescript/src/commands/game/sideQuest/utilities/table-notes.js +46 -0
  85. package/bundle/typescript/src/commands/game/sideQuest/utilities/table-notes.js.map +1 -0
  86. package/bundle/typescript/src/commands/game/sideQuest-backlog.sub.cmd.d.ts +1 -0
  87. package/bundle/typescript/src/commands/game/sideQuest-backlog.sub.cmd.js +46 -0
  88. package/bundle/typescript/src/commands/game/sideQuest-backlog.sub.cmd.js.map +1 -0
  89. package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.d.ts +3 -1
  90. package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js +269 -42
  91. package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js.map +1 -1
  92. package/bundle/typescript/src/tools/log/log.class.d.ts +17 -0
  93. package/bundle/typescript/src/tools/log/log.class.js +30 -1
  94. package/bundle/typescript/src/tools/log/log.class.js.map +1 -1
  95. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- import { appendFileSync, existsSync, mkdirSync, readFileSync } from 'fs';
1
+ import { appendFileSync, existsSync, mkdirSync, readFileSync, statSync, writeFileSync } from 'fs';
2
2
  import { dirname, join } from 'path';
3
3
  import { homedir } from 'os';
4
4
  import { Command } from './command.js';
@@ -16,13 +16,23 @@ import { hint } from '../utilities/hints.js';
16
16
  * These are notes ABOUT the game, not IN it: nothing here touches the
17
17
  * fiction, no NPC hears it, no world event fires.
18
18
  *
19
- * WHERE THEY LIVE (player ruling 2026-08-25): the session's own folder,
20
- * beside the game.log they annotate -- "the actual session folder, to
21
- * keep it organized". The first cut appended every note a runner ever
22
- * wrote to one lifelong file, which meant reading back a playtest
23
- * started by working out which lines belonged to the run you cared
24
- * about. A note is about the session it was typed in; it belongs with
25
- * that session's other artifacts.
19
+ * WHERE THEY LIVE -- TWO PLACES, because two rulings are both true.
20
+ *
21
+ * The session's own folder, beside the game.log they annotate (player
22
+ * ruling 2026-08-25: "the actual session folder, to keep it organized").
23
+ * The first cut put every note a runner ever wrote into one lifelong
24
+ * file, which meant reading back a playtest started by working out which
25
+ * lines belonged to the run you cared about.
26
+ *
27
+ * AND a durable per-runner file, because a session folder dies with the
28
+ * launch (player 2026-08-27: "notes should persist for the job"). Notes
29
+ * already survived a job CHANGE -- sessionDir cannot change mid-launch,
30
+ * verified by running it -- and vanished when the player quit and came
31
+ * back to a new timestamped folder. The old file was never destroyed;
32
+ * the game had simply lost the address.
33
+ *
34
+ * Writing both keeps the 2026-08-25 organisation AND the durability,
35
+ * without relitigating a decision that was right for its own purpose.
26
36
  *
27
37
  * Deliberately NOT uploaded: session-telemetry's collectFiles() names
28
38
  * the files it sends (the two logs, launch.json, scene-job-*.json), and
@@ -31,65 +41,165 @@ import { hint } from '../utilities/hints.js';
31
41
  */
32
42
  export class NoteCommand extends Command {
33
43
  static verb = 'note';
34
- static description = 'Jot a playtest note to disk: "note the door is on the wrong wall". Nobody in the fiction hears it. Bare "note" reads back this session\'s notes.';
35
- /** `<session>/notes.md` -- alongside that run's logs and scenes.
36
- * Harnesses and headless clients have no session dir; they fall back
37
- * to the old per-runner file so a note is never simply dropped. */
38
- notePath() {
44
+ static description = 'Jot a playtest note to disk: "note the door is on the wrong wall". Nobody in the fiction hears it. Bare "note" reads back this job\'s notes, which survive a relaunch.';
45
+ /** 100 KB, matching generator.ts's MAX_HISTORY_SIZE on history.json --
46
+ * the house answer for a file that would otherwise grow forever. */
47
+ static MAX_NOTES_SIZE = 100 * 1024;
48
+ /** `<session>/notes.md` -- alongside that run's logs and scenes. The
49
+ * organised per-playtest artifact (ruling 2026-08-25). Undefined for
50
+ * harnesses and headless clients, which have no session dir. */
51
+ sessionNotePath() {
39
52
  const dir = this.game?.sessionDir;
40
- if (dir)
41
- return join(dir, 'notes.md');
53
+ return dir ? join(dir, 'notes.md') : undefined;
54
+ }
55
+ /** The DURABLE file, one per runner, which outlives the launch.
56
+ *
57
+ * NOTES USED TO EVAPORATE ON RELAUNCH (player, 2026-08-27: "notes
58
+ * should persist for the job"). Traced by running it rather than
59
+ * reading it: sessionDir is dirname(_logFilePath), assigned once in
60
+ * initEngine and never reassigned, and the sessionId is a launch-time
61
+ * timestamp computed the same way for a new game AND a resume. So
62
+ * notes already survived a job change within one launch -- verified,
63
+ * two notes either side of a job swap landed in one file -- and died
64
+ * the moment the player quit and came back.
65
+ *
66
+ * They were never destroyed, which is the detail that decided the
67
+ * fix: the old notes.md sits on disk exactly where it was written,
68
+ * and only the game had lost the address. So this is a second WRITE
69
+ * and a better READ, not a migration.
70
+ *
71
+ * DELIBERATELY NOT THE SAVE FILE. cloud-saves.ts pushSave() POSTs the
72
+ * whole save object, so anything added to ISavedGameState is uploaded
73
+ * -- and this command's own header rules that notes "stay on the
74
+ * machine that wrote them". Putting them in the save would have
75
+ * silently started shipping the player's private margin scribbles to
76
+ * a server, with no test covering what a save contains. */
77
+ durableNotePath() {
42
78
  const who = (this.actor?.name ?? 'unknown').replace(/[^\w.-]+/g, '_');
43
79
  return join(homedir(), '.meteor', '.maka', 'side-quest-notes', `${who}.md`);
44
80
  }
81
+ /** The job a note was written on, so "persist for the job" is literal
82
+ * rather than merely durable. Absent at the hub, where there is no
83
+ * job to belong to. */
84
+ jobTag() {
85
+ return this.game?.currentJobName ?? 'no job';
86
+ }
45
87
  async execute(args = []) {
46
- const path = this.notePath();
88
+ const durable = this.durableNotePath();
47
89
  const text = (args ?? []).join(' ').trim();
48
90
  if (!text)
49
- return this.recent(path);
91
+ return this.recent(durable);
50
92
  // The path is worth showing once -- it's a long one, and repeating
51
93
  // it after every note buries the log pane in the same string.
52
- const first = !existsSync(path);
94
+ const first = !existsSync(durable);
95
+ const stamp = new Date().toISOString();
96
+ // MID-SHARED-RUN the local actor is still standing in the hub --
97
+ // the run itself is a server-side engine, and this command is
98
+ // deliberately routed home (see Game.LOCAL_ONLY_VERBS) so the note
99
+ // lands on the machine that typed it. Stamping the hub room onto a
100
+ // note written out on a job would be a plausible-looking lie, so
101
+ // say plainly where it came from instead.
102
+ const where = this.game?.remoteSession
103
+ ? 'shared run'
104
+ : (this.actor?.currentLocation?.name ?? 'nowhere');
105
+ const line = `- [${stamp}] [${this.jobTag()}] (${where}) ${text}\n`;
106
+ // BOTH FILES, because both rulings are still true. The session copy
107
+ // is what makes a playtest read back cleanly (2026-08-25); the
108
+ // durable copy is what survives the player closing the game. Writing
109
+ // both satisfies each without relitigating either.
110
+ //
111
+ // The DURABLE write is the one that must not fail silently -- it is
112
+ // the one the player reads back from. A session-copy failure is
113
+ // logged and swallowed: losing the tidy duplicate is not worth
114
+ // refusing the note.
53
115
  try {
54
- mkdirSync(dirname(path), { recursive: true });
55
- const stamp = new Date().toISOString();
56
- // MID-SHARED-RUN the local actor is still standing in the hub --
57
- // the run itself is a server-side engine, and this command is
58
- // deliberately routed home (see Game.LOCAL_ONLY_VERBS) so the note
59
- // lands on the machine that typed it. Stamping the hub room onto a
60
- // note written out on a job would be a plausible-looking lie, so
61
- // say plainly where it came from instead.
62
- const where = this.game?.remoteSession
63
- ? 'shared run'
64
- : (this.actor?.currentLocation?.name ?? 'nowhere');
65
- appendFileSync(path, `- [${stamp}] (${where}) ${text}\n`, 'utf8');
116
+ mkdirSync(dirname(durable), { recursive: true });
117
+ appendFileSync(durable, line, 'utf8');
118
+ this.pruneDurable(durable);
66
119
  }
67
120
  catch (err) {
68
- this.logger.write(`NoteCommand: could not write ${path}: ${err instanceof Error ? err.message : String(err)}`);
121
+ this.logger.write(`NoteCommand: could not write ${durable}: ${err instanceof Error ? err.message : String(err)}`);
69
122
  return `Couldn't write that note down -- see the game log for why.`;
70
123
  }
124
+ const sessionCopy = this.sessionNotePath();
125
+ if (sessionCopy) {
126
+ try {
127
+ mkdirSync(dirname(sessionCopy), { recursive: true });
128
+ appendFileSync(sessionCopy, line, 'utf8');
129
+ }
130
+ catch (err) {
131
+ this.logger.write(`NoteCommand: kept the note but could not mirror it to ${sessionCopy}: ${err instanceof Error ? err.message : String(err)}`);
132
+ }
133
+ }
71
134
  this.logger.write(`NOTE [${this.actor?.name}]: ${text}`);
72
135
  // NOT {gray-fg} (standing ruling): blessed gray is ANSI
73
136
  // bright-black and vanishes on stock dark palettes. White is the
74
137
  // established neutral for mechanics text.
75
- return `{white-fg}Noted.${first ? hint(` (${path})`) : ''}{/white-fg}`;
138
+ return `{white-fg}Noted.${first ? hint(` (${durable})`) : ''}{/white-fg}`;
76
139
  }
77
- /** Bare "note": this session's notes, oldest first. Capped only as a
78
- * guard against a marathon run flooding the log pane -- a session's
79
- * worth of notes is normally short enough to read whole. */
140
+ /**
141
+ * THE DURABLE FILE IS THE ONE THAT GROWS FOREVER, so it is capped.
142
+ *
143
+ * A per-session file emptied itself every launch; this one never does.
144
+ * 100 KB and prune-oldest is the house precedent (generator.ts's
145
+ * MAX_HISTORY_SIZE, on .maka/history.json) and there is no reason for
146
+ * notes to invent a second answer. At roughly 90 bytes a note that is
147
+ * on the order of a thousand notes -- far past any real playtest, and
148
+ * short enough that reading the whole file stays instant.
149
+ *
150
+ * Oldest-first is the right end to drop: a note's value decays, and
151
+ * the run you are on is the one you are reading back.
152
+ */
153
+ pruneDurable(path) {
154
+ try {
155
+ if (statSync(path).size <= NoteCommand.MAX_NOTES_SIZE)
156
+ return;
157
+ const lines = readFileSync(path, 'utf8').split('\n').filter(l => l.trim().length > 0);
158
+ let kept = lines;
159
+ while (kept.length > 1 && Buffer.byteLength(kept.join('\n'), 'utf8') > NoteCommand.MAX_NOTES_SIZE) {
160
+ kept = kept.slice(1);
161
+ }
162
+ writeFileSync(path, `${kept.join('\n')}\n`, 'utf8');
163
+ this.logger.write(`NoteCommand: pruned ${lines.length - kept.length} old note(s) to stay under ${NoteCommand.MAX_NOTES_SIZE} bytes.`);
164
+ }
165
+ catch (err) {
166
+ // A prune failure must never cost the player the note they just
167
+ // wrote -- the append already succeeded.
168
+ this.logger.write(`NoteCommand: could not prune ${path}: ${err instanceof Error ? err.message : String(err)}`);
169
+ }
170
+ }
171
+ /** Bare "note": THIS JOB's notes, oldest first, read from the durable
172
+ * file so they survive a relaunch.
173
+ *
174
+ * Reads the job's notes rather than the launch's, which is the whole
175
+ * of the request -- "notes should persist FOR THE JOB". Falls back to
176
+ * the whole file when nothing matches the current job, because an
177
+ * empty answer in front of a file that plainly has notes in it is the
178
+ * same unhelpful lie the old "No notes this session" was. */
80
179
  recent(path) {
81
180
  if (!existsSync(path)) {
82
- return `No notes this session.${hint(` ("note <something you noticed>" writes one down.)`)}`;
181
+ return `No notes yet.${hint(` ("note <something you noticed>" writes one down.)`)}`;
182
+ }
183
+ const all = readFileSync(path, 'utf8').split('\n').filter(l => l.trim().length > 0);
184
+ if (all.length === 0) {
185
+ return `No notes yet.${hint(` ("note <something you noticed>" writes one down.)`)}`;
83
186
  }
84
- const lines = readFileSync(path, 'utf8').split('\n').filter(l => l.trim().length > 0);
187
+ const job = this.jobTag();
188
+ const mine = all.filter(l => l.includes(`[${job}]`));
189
+ const scoped = mine.length > 0;
190
+ const lines = scoped ? mine : all;
85
191
  const tail = lines.slice(-20);
86
192
  // BANNER RAILS REMOVED (playtest 2026-08-26, on the crew panel:
87
193
  // "headers like that are too cluttery"). The heading itself stays --
88
194
  // it carries what the panel divider can't say for it.
195
+ const scope = scoped ? `on "${job}"` : 'in all';
89
196
  const header = tail.length < lines.length
90
- ? `NOTES (${lines.length} this session, showing the last ${tail.length})`
91
- : `NOTES (${lines.length} this session)`;
92
- return [header, ...tail].join('\n');
197
+ ? `NOTES (${lines.length} ${scope}, showing the last ${tail.length})`
198
+ : `NOTES (${lines.length} ${scope})`;
199
+ const older = scoped && all.length > lines.length
200
+ ? hint(`\n(${all.length - lines.length} more from other jobs are in ${path}.)`)
201
+ : '';
202
+ return [header, ...tail].join('\n') + older;
93
203
  }
94
204
  }
95
205
  //# sourceMappingURL=note.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"note.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/note.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"note.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/note.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import { ICommand } from './command.js';
2
+ import { BacklogCommand } from './backlog.js';
3
+ /**
4
+ * `review` -- the short way to answer the item you are standing in.
5
+ *
6
+ * Player ruling 2026-08-28: "I shouldn't have to pick from the list of
7
+ * review items -- I AM reviewing an item. So the commands should be
8
+ * straight forward: 'backlog review reject <message>' or, if we need to
9
+ * fork the command: 'review reject <message>' or 'review accept'."
10
+ *
11
+ * Both forms exist, and this one is the fork. Inside a repro bench the
12
+ * session already knows which report it was stood up for, so the whole
13
+ * `backlog review <n>` ceremony is noise -- the number names something
14
+ * there is only one of.
15
+ *
16
+ * A THIN DELEGATION, not a second implementation. Everything -- the
17
+ * reject keyword, the accept keyword, sign-off routing, the "already
18
+ * answered" case -- stays in BacklogCommand.review, because two code
19
+ * paths that post to the same board are two things that can disagree
20
+ * about what an answer means. This only supplies the word the player
21
+ * reaches for.
22
+ *
23
+ * Outside a bench it is still useful: bare `review` lists what is
24
+ * waiting on you, exactly as `backlog review` does.
25
+ */
26
+ export declare class ReviewCommand extends BacklogCommand implements ICommand {
27
+ protected static verb: string;
28
+ protected static description: string;
29
+ protected static subcommands: ({
30
+ usage: string;
31
+ short: string;
32
+ long?: undefined;
33
+ } | {
34
+ usage: string;
35
+ short: string;
36
+ long: string;
37
+ })[];
38
+ execute(args?: string[]): Promise<string>;
39
+ }
@@ -0,0 +1,48 @@
1
+ import { BacklogCommand } from './backlog.js';
2
+ /**
3
+ * `review` -- the short way to answer the item you are standing in.
4
+ *
5
+ * Player ruling 2026-08-28: "I shouldn't have to pick from the list of
6
+ * review items -- I AM reviewing an item. So the commands should be
7
+ * straight forward: 'backlog review reject <message>' or, if we need to
8
+ * fork the command: 'review reject <message>' or 'review accept'."
9
+ *
10
+ * Both forms exist, and this one is the fork. Inside a repro bench the
11
+ * session already knows which report it was stood up for, so the whole
12
+ * `backlog review <n>` ceremony is noise -- the number names something
13
+ * there is only one of.
14
+ *
15
+ * A THIN DELEGATION, not a second implementation. Everything -- the
16
+ * reject keyword, the accept keyword, sign-off routing, the "already
17
+ * answered" case -- stays in BacklogCommand.review, because two code
18
+ * paths that post to the same board are two things that can disagree
19
+ * about what an answer means. This only supplies the word the player
20
+ * reaches for.
21
+ *
22
+ * Outside a bench it is still useful: bare `review` lists what is
23
+ * waiting on you, exactly as `backlog review` does.
24
+ */
25
+ export class ReviewCommand extends BacklogCommand {
26
+ static verb = 'review';
27
+ static description = 'Answer the backlog item you are reviewing. In a repro bench it needs no number: "review reject <what is still wrong>", "review accept [what you saw]", or "review repro" to re-read the steps. Bare "review" lists what is waiting on you.';
28
+ static subcommands = [
29
+ { usage: 'review', short: 'What the board is waiting on YOU for.' },
30
+ {
31
+ usage: 'review accept [what you saw]',
32
+ short: 'Confirm the fix works.',
33
+ long: 'Signs the item off, which is what closes it -- your word is the thing the board is waiting for. The note is optional; anything you type is recorded against your report.',
34
+ },
35
+ {
36
+ usage: 'review reject <what is still wrong>',
37
+ short: 'Send it back, with your reason.',
38
+ long: 'Reopens the item as open and attaches your reason. The commits stay on it: knowing what was tried and did not work is worth keeping.',
39
+ },
40
+ { usage: 'review repro', short: 'Re-read the steps for this bench.' },
41
+ ];
42
+ async execute(args = []) {
43
+ // Straight through to the backlog verb's review branch, so there is
44
+ // exactly one implementation of "what an answer means".
45
+ return super.execute(['review', ...args]);
46
+ }
47
+ }
48
+ //# sourceMappingURL=review.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/review.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,OAAO,aAAc,SAAQ,cAAc;IACrC,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;IACvB,MAAM,CAAC,WAAW,GAAG,4OAA4O,CAAC;IAElQ,MAAM,CAAC,WAAW,GAAG;QAC7B,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,uCAAuC,EAAE;QACnE;YACE,KAAK,EAAE,8BAA8B;YACrC,KAAK,EAAE,wBAAwB;YAC/B,IAAI,EAAE,0KAA0K;SACjL;QACD;YACE,KAAK,EAAE,qCAAqC;YAC5C,KAAK,EAAE,iCAAiC;YACxC,IAAI,EAAE,sIAAsI;SAC7I;QACD,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,mCAAmC,EAAE;KACtE,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,OAAiB,EAAE;QAC/B,oEAAoE;QACpE,wDAAwD;QACxD,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IAC5C,CAAC"}
@@ -194,7 +194,10 @@ export class SheetCommand extends Command {
194
194
  skillRows.push(` ${(rated[i] ?? '').padEnd(22)}${rated[i + 1] ?? ''}`.trimEnd());
195
195
  }
196
196
  const roleLine = member.source === 'ghost'
197
- ? `ghost runner (${member.ghost?.owner ?? 'unknown'}'s character)`
197
+ // Their ACCOUNT is not a thing this panel is allowed to say --
198
+ // it used to read "(doubleglizzy's character)" for every live
199
+ // seat. See utilities/identity.ts.
200
+ ? `live runner -- another player's character`
198
201
  : member.source === 'contact' ? 'crew -- recruited local' : (member.archetypeName ?? 'hired runner');
199
202
  const weapon = shell.getWeaponProfile();
200
203
  const row = (label, value) => ` ${label.padEnd(11)} ${value}`;
@@ -1 +1 @@
1
- {"version":3,"file":"sheet.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/sheet.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sheet.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/sheet.ts"],"names":[],"mappings":"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"}
@@ -16,4 +16,4 @@
16
16
  * No import.meta here (engine-graph law) -- this file is loaded by the
17
17
  * server.
18
18
  */
19
- export declare const ENGINE_VERSION = "1.14.0";
19
+ export declare const ENGINE_VERSION = "1.15.0";
@@ -55,5 +55,19 @@
55
55
  // types/save-file.ts).
56
56
  // - The engine no longer accepts a seed's puzzles[] as live content;
57
57
  // it migrates them on load (factories/seed-migration.ts).
58
- export const ENGINE_VERSION = '1.14.0';
58
+ // 1.15.0 (2026-08-28): A PICKET HOLDS ITS CELL. Two shared-session
59
+ // surfaces move, both about a guarding NPC:
60
+ // - COMMAND SEMANTICS: walking onto a guard's doorway no longer
61
+ // displaces them, so "go <dir>" is now refused where it used to
62
+ // succeed. Grid seats are derived in passes and an exact cell used
63
+ // to win, so stepping into the doorway re-seated the guard one
64
+ // square over and doorwayBlocker stopped seeing them (reported as
65
+ // "I was able to just, push Wraith away by moving to the vault
66
+ // door"). A shared table can now be blocked by a body that
67
+ // previously waved everyone through.
68
+ // - NPC BRIEFS, which the hosting server builds: a guarding NPC is
69
+ // told they ARE the barrier. They were told about every barrier
70
+ // around them and never about that, so a picket beside an open
71
+ // door offered to let people past while the geometry refused.
72
+ export const ENGINE_VERSION = '1.15.0';
59
73
  //# sourceMappingURL=engine-version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"engine-version.js","sourceRoot":"","sources":["../../../../../../src/commands/game/sideQuest/engine-version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,sEAAsE;AACtE,mEAAmE;AACnE,oEAAoE;AACpE,sEAAsE;AACtE,6CAA6C;AAC7C,iEAAiE;AACjE,qCAAqC;AACrC,oEAAoE;AACpE,6DAA6D;AAC7D,uEAAuE;AACvE,kDAAkD;AAClD,iEAAiE;AACjE,mEAAmE;AACnE,gEAAgE;AAChE,8DAA8D;AAC9D,kEAAkE;AAClE,kDAAkD;AAClD,kEAAkE;AAClE,4DAA4D;AAC5D,qEAAqE;AACrE,yDAAyD;AACzD,sEAAsE;AACtE,2CAA2C;AAC3C,qEAAqE;AACrE,yDAAyD;AACzD,iEAAiE;AACjE,qEAAqE;AACrE,qEAAqE;AACrE,uEAAuE;AACvE,wEAAwE;AACxE,oEAAoE;AACpE,wEAAwE;AACxE,6DAA6D;AAC7D,uEAAuE;AACvE,sEAAsE;AACtE,0DAA0D;AAC1D,2BAA2B;AAC3B,uEAAuE;AACvE,8DAA8D;AAC9D,MAAM,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAC"}
1
+ {"version":3,"file":"engine-version.js","sourceRoot":"","sources":["../../../../../../src/commands/game/sideQuest/engine-version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,sEAAsE;AACtE,mEAAmE;AACnE,oEAAoE;AACpE,sEAAsE;AACtE,6CAA6C;AAC7C,iEAAiE;AACjE,qCAAqC;AACrC,oEAAoE;AACpE,6DAA6D;AAC7D,uEAAuE;AACvE,kDAAkD;AAClD,iEAAiE;AACjE,mEAAmE;AACnE,gEAAgE;AAChE,8DAA8D;AAC9D,kEAAkE;AAClE,kDAAkD;AAClD,kEAAkE;AAClE,4DAA4D;AAC5D,qEAAqE;AACrE,yDAAyD;AACzD,sEAAsE;AACtE,2CAA2C;AAC3C,qEAAqE;AACrE,yDAAyD;AACzD,iEAAiE;AACjE,qEAAqE;AACrE,qEAAqE;AACrE,uEAAuE;AACvE,wEAAwE;AACxE,oEAAoE;AACpE,wEAAwE;AACxE,6DAA6D;AAC7D,uEAAuE;AACvE,sEAAsE;AACtE,0DAA0D;AAC1D,2BAA2B;AAC3B,uEAAuE;AACvE,8DAA8D;AAC9D,mEAAmE;AACnE,4CAA4C;AAC5C,kEAAkE;AAClE,oEAAoE;AACpE,uEAAuE;AACvE,mEAAmE;AACnE,sEAAsE;AACtE,mEAAmE;AACnE,+DAA+D;AAC/D,yCAAyC;AACzC,qEAAqE;AACrE,oEAAoE;AACpE,mEAAmE;AACnE,kEAAkE;AAClE,MAAM,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAC"}
@@ -0,0 +1,87 @@
1
+ import { Direction } from '../types/shared/direction-enum.js';
2
+ import { ISceneSeedJson } from '../types/seed/scene-seed.js';
3
+ import { IReproFixture } from '../types/repro.js';
4
+ /**
5
+ * BUILDING THE BENCH A REVIEW ITEM SHIPS WITH.
6
+ *
7
+ * Two rooms and one sealed door between them. That is the whole scene,
8
+ * on purpose: a repro is a bench, not a run, and every room you have to
9
+ * walk through to reach the thing under test is a room the reproduction
10
+ * can go wrong in.
11
+ *
12
+ * THIS FILE OWNS THE INVARIANTS, and that is the reason it exists
13
+ * rather than the specs carrying raw seed JSON. The author of a repro
14
+ * states INTENT -- "a guard in the doorway", "a keypad sealing north" --
15
+ * and everything that intent implies is derived here, once, for every
16
+ * repro that will ever be written.
17
+ *
18
+ * The invariant that motivated the design: an NPC marked `guarding`
19
+ * whose startSpot is not the sealed exit's spot. Nothing throws.
20
+ * `holdsGround` is simply never consulted, because doorwayOccupants
21
+ * reads the exit cell and the guard is not standing in it. The scene
22
+ * builds, the walkthrough passes, and the repro demonstrates the
23
+ * opposite of what it claims -- a check whose two sides fail together
24
+ * cannot see the failure, which is the dominant defect shape in this
25
+ * codebase's history. An author cannot make that mistake here, because
26
+ * an author never supplies the spot.
27
+ *
28
+ * The other invariants are refusals rather than derivations, and they
29
+ * refuse LOUDLY rather than degrading. A repro that silently does less
30
+ * than it says is the failure mode this whole feature is built against,
31
+ * so "drop the field and carry on" -- which is what the runtime does
32
+ * with a code on a lock -- is exactly the wrong behaviour here.
33
+ */
34
+ /** The room the device stands in, which is also the room that declares
35
+ * the exit it seals. */
36
+ export declare const REPRO_BARRIER_ROOM = "The Approach";
37
+ /** Through the door. */
38
+ export declare const REPRO_FAR_ROOM = "The Far Side";
39
+ /** The one spot that matters, and the one an author never has to name.
40
+ * Both rooms have it: a doorway has two sides, and a guard posted on
41
+ * the far side stands in their own. */
42
+ export declare const REPRO_DOORWAY_SPOT = "doorway";
43
+ /**
44
+ * Somewhere to stand that is NOT the doorway, so "move to the door" is
45
+ * a real move with a real before-state. Without it the runner starts in
46
+ * the doorway and the whole class of "I walked onto the guard's cell"
47
+ * items cannot be reproduced at all.
48
+ *
49
+ * NOT called "open floor", which was the first name and was wrong for a
50
+ * reason worth recording: "open floor" is the ENGINE's phrase for
51
+ * having no named spot at all (see move.ts -- "You peel off to the open
52
+ * floor"). Naming a real spot that made a positioned NPC render as
53
+ * "Grier at the open floor, Grier on the open floor" -- one clause from
54
+ * the spot, one from the generic fallback, reading exactly like a
55
+ * duplicate-render bug. Every reviewer sent to a bench would have filed
56
+ * it. A fixture must not borrow the engine's words for "none".
57
+ */
58
+ export declare const REPRO_FLOOR_SPOT = "back wall";
59
+ /** A fixture that cannot be built into an honest bench. Thrown, never
60
+ * swallowed -- the caller turns it into a sentence for whoever wrote
61
+ * the spec. */
62
+ export declare class ReproFixtureError extends Error {
63
+ constructor(message: string);
64
+ }
65
+ export interface IReproBuild {
66
+ seed: ISceneSeedJson;
67
+ /** What the builder actually named things, so a caller can print
68
+ * steps that refer to them without guessing. */
69
+ names: {
70
+ device?: string;
71
+ npcs: string[];
72
+ direction: Direction;
73
+ barrierRoom: string;
74
+ farRoom: string;
75
+ startRoom: string;
76
+ };
77
+ /** Things worth saying that are not refusals -- a mundane sent to
78
+ * dispel a ward, a key stranded behind its own door. */
79
+ warnings: string[];
80
+ }
81
+ export declare function buildReproScene(fixture: IReproFixture): IReproBuild;
82
+ /** The archetype a fixture asks for, resolved. Separate from the build
83
+ * because the launcher hands the NAME to the game (which rolls the
84
+ * character itself) while the headless walkthrough needs the spread to
85
+ * make a save out of. */
86
+ export declare function reproArchetypeName(fixture: IReproFixture): string;
87
+ export declare function reproArchetype(fixture: IReproFixture): import("../archetypes.js").IArchetype;