@maka/maka-cli 5.66.0 → 5.68.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 (123) 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/archetypes.js +6 -1
  6. package/bundle/typescript/src/commands/game/sideQuest/archetypes.js.map +1 -1
  7. package/bundle/typescript/src/commands/game/sideQuest/commands/ar.js +4 -1
  8. package/bundle/typescript/src/commands/game/sideQuest/commands/ar.js.map +1 -1
  9. package/bundle/typescript/src/commands/game/sideQuest/commands/backlog.d.ts +103 -0
  10. package/bundle/typescript/src/commands/game/sideQuest/commands/backlog.js +423 -25
  11. package/bundle/typescript/src/commands/game/sideQuest/commands/backlog.js.map +1 -1
  12. package/bundle/typescript/src/commands/game/sideQuest/commands/bluff.d.ts +15 -1
  13. package/bundle/typescript/src/commands/game/sideQuest/commands/bluff.js +61 -4
  14. package/bundle/typescript/src/commands/game/sideQuest/commands/bluff.js.map +1 -1
  15. package/bundle/typescript/src/commands/game/sideQuest/commands/companions.d.ts +39 -3
  16. package/bundle/typescript/src/commands/game/sideQuest/commands/companions.js +85 -4
  17. package/bundle/typescript/src/commands/game/sideQuest/commands/companions.js.map +1 -1
  18. package/bundle/typescript/src/commands/game/sideQuest/commands/compile.d.ts +37 -17
  19. package/bundle/typescript/src/commands/game/sideQuest/commands/compile.js +53 -115
  20. package/bundle/typescript/src/commands/game/sideQuest/commands/compile.js.map +1 -1
  21. package/bundle/typescript/src/commands/game/sideQuest/commands/decompile.d.ts +55 -0
  22. package/bundle/typescript/src/commands/game/sideQuest/commands/decompile.js +203 -0
  23. package/bundle/typescript/src/commands/game/sideQuest/commands/decompile.js.map +1 -0
  24. package/bundle/typescript/src/commands/game/sideQuest/commands/go.d.ts +23 -0
  25. package/bundle/typescript/src/commands/game/sideQuest/commands/go.js +42 -7
  26. package/bundle/typescript/src/commands/game/sideQuest/commands/go.js.map +1 -1
  27. package/bundle/typescript/src/commands/game/sideQuest/commands/hack.d.ts +27 -0
  28. package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js +28 -1
  29. package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js.map +1 -1
  30. package/bundle/typescript/src/commands/game/sideQuest/commands/order.js +69 -1
  31. package/bundle/typescript/src/commands/game/sideQuest/commands/order.js.map +1 -1
  32. package/bundle/typescript/src/commands/game/sideQuest/commands/register.d.ts +15 -2
  33. package/bundle/typescript/src/commands/game/sideQuest/commands/register.js +32 -6
  34. package/bundle/typescript/src/commands/game/sideQuest/commands/register.js.map +1 -1
  35. package/bundle/typescript/src/commands/game/sideQuest/commands/review.d.ts +39 -0
  36. package/bundle/typescript/src/commands/game/sideQuest/commands/review.js +48 -0
  37. package/bundle/typescript/src/commands/game/sideQuest/commands/review.js.map +1 -0
  38. package/bundle/typescript/src/commands/game/sideQuest/commands/sprites.d.ts +35 -0
  39. package/bundle/typescript/src/commands/game/sideQuest/commands/sprites.js +108 -0
  40. package/bundle/typescript/src/commands/game/sideQuest/commands/sprites.js.map +1 -0
  41. package/bundle/typescript/src/commands/game/sideQuest/commands/thread.d.ts +27 -0
  42. package/bundle/typescript/src/commands/game/sideQuest/commands/thread.js +7 -2
  43. package/bundle/typescript/src/commands/game/sideQuest/commands/thread.js.map +1 -1
  44. package/bundle/typescript/src/commands/game/sideQuest/commands/unravel.d.ts +57 -0
  45. package/bundle/typescript/src/commands/game/sideQuest/commands/unravel.js +162 -0
  46. package/bundle/typescript/src/commands/game/sideQuest/commands/unravel.js.map +1 -0
  47. package/bundle/typescript/src/commands/game/sideQuest/engine-version.d.ts +1 -1
  48. package/bundle/typescript/src/commands/game/sideQuest/engine-version.js +31 -1
  49. package/bundle/typescript/src/commands/game/sideQuest/engine-version.js.map +1 -1
  50. package/bundle/typescript/src/commands/game/sideQuest/factories/repro-scene.d.ts +87 -0
  51. package/bundle/typescript/src/commands/game/sideQuest/factories/repro-scene.js +320 -0
  52. package/bundle/typescript/src/commands/game/sideQuest/factories/repro-scene.js.map +1 -0
  53. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js +32 -0
  54. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js.map +1 -1
  55. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.js +8 -1
  56. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.js.map +1 -1
  57. package/bundle/typescript/src/commands/game/sideQuest/game.d.ts +98 -11
  58. package/bundle/typescript/src/commands/game/sideQuest/game.js +239 -35
  59. package/bundle/typescript/src/commands/game/sideQuest/game.js.map +1 -1
  60. package/bundle/typescript/src/commands/game/sideQuest/headless-harness.d.ts +24 -0
  61. package/bundle/typescript/src/commands/game/sideQuest/headless-harness.js +63 -0
  62. package/bundle/typescript/src/commands/game/sideQuest/headless-harness.js.map +1 -1
  63. package/bundle/typescript/src/commands/game/sideQuest/models/item.d.ts +9 -0
  64. package/bundle/typescript/src/commands/game/sideQuest/models/item.js +9 -0
  65. package/bundle/typescript/src/commands/game/sideQuest/models/item.js.map +1 -1
  66. package/bundle/typescript/src/commands/game/sideQuest/models/npc.d.ts +57 -1
  67. package/bundle/typescript/src/commands/game/sideQuest/models/npc.js +62 -1
  68. package/bundle/typescript/src/commands/game/sideQuest/models/npc.js.map +1 -1
  69. package/bundle/typescript/src/commands/game/sideQuest/models/player.d.ts +10 -3
  70. package/bundle/typescript/src/commands/game/sideQuest/models/player.js +5 -1
  71. package/bundle/typescript/src/commands/game/sideQuest/models/player.js.map +1 -1
  72. package/bundle/typescript/src/commands/game/sideQuest/resonance-actions.d.ts +108 -0
  73. package/bundle/typescript/src/commands/game/sideQuest/resonance-actions.js +186 -0
  74. package/bundle/typescript/src/commands/game/sideQuest/resonance-actions.js.map +1 -0
  75. package/bundle/typescript/src/commands/game/sideQuest/sprite-powers.d.ts +88 -0
  76. package/bundle/typescript/src/commands/game/sideQuest/sprite-powers.js +137 -0
  77. package/bundle/typescript/src/commands/game/sideQuest/sprite-powers.js.map +1 -0
  78. package/bundle/typescript/src/commands/game/sideQuest/types/repro.d.ts +106 -0
  79. package/bundle/typescript/src/commands/game/sideQuest/types/repro.js +2 -0
  80. package/bundle/typescript/src/commands/game/sideQuest/types/repro.js.map +1 -0
  81. package/bundle/typescript/src/commands/game/sideQuest/types/save-file.d.ts +32 -1
  82. package/bundle/typescript/src/commands/game/sideQuest/types/seed/device-seed.d.ts +12 -0
  83. package/bundle/typescript/src/commands/game/sideQuest/ui.d.ts +9 -0
  84. package/bundle/typescript/src/commands/game/sideQuest/ui.js +3 -0
  85. package/bundle/typescript/src/commands/game/sideQuest/ui.js.map +1 -1
  86. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-dump.d.ts +17 -1
  87. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-dump.js +250 -36
  88. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-dump.js.map +1 -1
  89. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-review.d.ts +30 -1
  90. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-review.js +58 -0
  91. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-review.js.map +1 -1
  92. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-vocab.d.ts +85 -0
  93. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-vocab.js +100 -0
  94. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-vocab.js.map +1 -0
  95. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog.d.ts +45 -3
  96. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog.js +45 -3
  97. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog.js.map +1 -1
  98. package/bundle/typescript/src/commands/game/sideQuest/utilities/commit-ref.d.ts +13 -0
  99. package/bundle/typescript/src/commands/game/sideQuest/utilities/commit-ref.js +22 -0
  100. package/bundle/typescript/src/commands/game/sideQuest/utilities/commit-ref.js.map +1 -0
  101. package/bundle/typescript/src/commands/game/sideQuest/utilities/grid-view.d.ts +13 -1
  102. package/bundle/typescript/src/commands/game/sideQuest/utilities/grid-view.js +36 -3
  103. package/bundle/typescript/src/commands/game/sideQuest/utilities/grid-view.js.map +1 -1
  104. package/bundle/typescript/src/commands/game/sideQuest/utilities/handoff.d.ts +42 -0
  105. package/bundle/typescript/src/commands/game/sideQuest/utilities/handoff.js +57 -0
  106. package/bundle/typescript/src/commands/game/sideQuest/utilities/handoff.js.map +1 -0
  107. package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.js +14 -0
  108. package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.js.map +1 -1
  109. package/bundle/typescript/src/commands/game/sideQuest/utilities/repro-launch.d.ts +68 -0
  110. package/bundle/typescript/src/commands/game/sideQuest/utilities/repro-launch.js +147 -0
  111. package/bundle/typescript/src/commands/game/sideQuest/utilities/repro-launch.js.map +1 -0
  112. package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.js +39 -0
  113. package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.js.map +1 -1
  114. package/bundle/typescript/src/commands/game/sideQuest-backlog.sub.cmd.d.ts +1 -0
  115. package/bundle/typescript/src/commands/game/sideQuest-backlog.sub.cmd.js +46 -0
  116. package/bundle/typescript/src/commands/game/sideQuest-backlog.sub.cmd.js.map +1 -0
  117. package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.d.ts +3 -1
  118. package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js +352 -42
  119. package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js.map +1 -1
  120. package/bundle/typescript/src/tools/log/log.class.d.ts +17 -0
  121. package/bundle/typescript/src/tools/log/log.class.js +30 -1
  122. package/bundle/typescript/src/tools/log/log.class.js.map +1 -1
  123. package/package.json +1 -1
@@ -1,11 +1,12 @@
1
1
  import { Command } from './command.js';
2
2
  import { hint } from '../utilities/hints.js';
3
3
  import { authToken } from '../utilities/cloud-saves.js';
4
- import { submitBacklog, fetchBacklog, postBacklogComment, postBacklogSignoff, postBacklogReject, BACKLOG_STATUSES, } from '../utilities/backlog.js';
4
+ import { submitBacklog, fetchBacklog, postBacklogComment, postBacklogSignoff, postBacklogReject, postBacklogClose, BACKLOG_STATUSES, } from '../utilities/backlog.js';
5
5
  import { noteBacklogOutcome } from '../utilities/playtester.js';
6
6
  import { takeIndex } from '../utilities/fuzzy-match.js';
7
7
  import { optionMark } from '../utilities/log-style.js';
8
- import { loadReviewQueue, reviewSnapshot, reviewItemAt, isValidationRow, reviewDisplayOrder, parseRejection, markReviewAnswered, } from '../utilities/backlog-review.js';
8
+ import { statusLabel, verdictLabel, boardPrintOrder } from '../utilities/backlog-vocab.js';
9
+ import { loadReviewQueue, reviewSnapshot, reviewItemAt, isValidationRow, reviewDisplayOrder, parseRejection, parseReproRequest, markReviewAnswered, rememberBoard, boardItemAt, boardSize, } from '../utilities/backlog-review.js';
9
10
  /** One line of somebody's report, kept to a skimmable width. */
10
11
  function truncate(text, max) {
11
12
  const flat = text.replace(/\s+/g, ' ').trim();
@@ -36,7 +37,10 @@ export class BacklogCommand extends Command {
36
37
  static description = 'File a play-tester item that somebody acts on -- it goes to maka-cli.com, keeps a link to this session, and comes back checked against the rulebooks. "backlog <what you noticed>" files one; "backlog list [status]" reads the board. For private scribbles, use "note".';
37
38
  static subcommands = [
38
39
  { usage: 'backlog <text>', short: 'File an item against this session.' },
39
- { usage: 'backlog list', short: 'The whole board, newest first.' },
40
+ { usage: 'backlog list', short: 'The whole board, what needs you last.' },
41
+ { usage: 'backlog <n>', short: 'Read board item n in full.' },
42
+ { usage: 'backlog repro <n>', short: 'Play the repro bench for board item n.' },
43
+ { usage: 'backlog close <n> [why]', short: 'Close item n outright -- filed in error, duplicate, no longer real.' },
40
44
  { usage: 'backlog list <status>', short: `Filter: ${BACKLOG_STATUSES.join(', ')}.` },
41
45
  {
42
46
  usage: 'backlog review',
@@ -63,6 +67,44 @@ export class BacklogCommand extends Command {
63
67
  if (args.length === 0 || sub === 'list') {
64
68
  return this.list(args[1]);
65
69
  }
70
+ // A BARE NUMBER READS THAT ROW OF THE BOARD, and it has to be caught
71
+ // here for the same reason `list` and `review` are: everything that
72
+ // reaches the bottom of this method FILES AN ITEM. Without this,
73
+ // "backlog 3" -- the obvious thing to type at a numbered list --
74
+ // would quietly file a new report whose entire text is "3".
75
+ //
76
+ // `backlog repro <n>` drops into that row's bench. Both resolve
77
+ // against the BOARD snapshot, never the review queue's: they are
78
+ // different sets, so a number cannot mean a row in both.
79
+ if (/^\d{1,3}$/.test(sub)) {
80
+ return this.readBoardItem(Number(sub));
81
+ }
82
+ if (sub === 'repro') {
83
+ return this.reproFromBoard(args[1]);
84
+ }
85
+ if (sub === 'close') {
86
+ return this.closeFromBoard(args[1], args.slice(2).join(' '));
87
+ }
88
+ // ACCEPT AND REJECT ARE COMMANDS, NOT REPORTS.
89
+ //
90
+ // Claimed here for the same reason `repro` was, and after the same
91
+ // kind of accident: on 2026-08-28 a play-tester in a bench typed
92
+ // "backlog accept" and this method filed a backlog item whose entire
93
+ // text was the word "accept" -- which then went off to be vetted
94
+ // against the rulebooks, came back "needs detail", and sat on the
95
+ // open board as noise (4svHkpnDhWcXDzPsX).
96
+ //
97
+ // The rule this keeps proving: on a verb whose default is to CREATE
98
+ // something, every unclaimed word is data. Any word a player could
99
+ // reasonably read as a command has to be claimed before they can
100
+ // reach for it -- and being in a bench is exactly when "accept" is
101
+ // the obvious thing to type.
102
+ if (sub === 'accept' || sub === 'reject') {
103
+ // Route to the review answer rather than refusing: in a bench this
104
+ // is precisely what they meant, and outside one the review path
105
+ // explains itself far better than an error here could.
106
+ return this.review(args);
107
+ }
66
108
  // "review" is checked BEFORE the fall-through to file(), or
67
109
  // answering an item would file a new one whose text begins with the
68
110
  // word "review" -- the same shape as `backlog open` filing an item
@@ -118,6 +160,23 @@ export class BacklogCommand extends Command {
118
160
  // numbering. This is the ONLY place the queue is refetched.
119
161
  if (args.length === 0)
120
162
  return this.showQueue();
163
+ // YOU ARE ALREADY REVIEWING ONE (player ruling 2026-08-28: "I
164
+ // shouldn't have to pick from the list of review items -- I AM
165
+ // reviewing an item").
166
+ //
167
+ // In a repro bench the session was stood up FOR a specific report,
168
+ // so "backlog review reject <why>" needs no number: asking which
169
+ // item is asking a question the launch already answered. Checked
170
+ // before the index resolver, because "reject" is not a number and
171
+ // takeIndex would refuse it with advice to go and read a list --
172
+ // which is the exact detour being removed.
173
+ //
174
+ // Outside a bench nothing changes: with no bound item there is
175
+ // genuinely more than one thing they could mean, and the list is
176
+ // the honest answer.
177
+ const boundId = this.game?.reproItemId;
178
+ if (boundId)
179
+ return this.answerBound(boundId, args.join(' ').trim());
121
180
  const queue = reviewSnapshot();
122
181
  if (queue.length === 0) {
123
182
  // No snapshot means no list they could have counted on, so we do
@@ -164,6 +223,23 @@ export class BacklogCommand extends Command {
164
223
  // status fallback renderItem uses, so both halves agree about which
165
224
  // row this is.
166
225
  const validation = isValidationRow(item);
226
+ // "repro" IS A COMMAND, NOT AN ANSWER, and it is claimed here --
227
+ // BEFORE the sign-off below -- because everything that reaches the
228
+ // sign-off is treated as the reporter's confirmation.
229
+ //
230
+ // Claimed the hard way. On 2026-08-28 the reporter typed
231
+ // "backlog review 1 repro" at a verb that did not exist yet; it fell
232
+ // through as their answer and closed b9YeNqTNBJuk9dbrk. A sign-off
233
+ // is irreversible from the client -- the reject route refuses any
234
+ // item already carrying one -- so a word had to be reserved the
235
+ // moment it was described to anybody, not the moment it worked.
236
+ //
237
+ // Reserved on BOTH kinds of row. On a question row it would only
238
+ // post a stray comment rather than close anything, but "repro"
239
+ // is no more an answer to a question than it is a confirmation.
240
+ if (parseReproRequest(text)) {
241
+ return this.repro(item, n);
242
+ }
167
243
  // "backlog review 1 reject <why>" -- the reporter says NO (user
168
244
  // request 2026-08-27). Until this existed the only answer a
169
245
  // validation request could take was yes: saying "still broken" left
@@ -182,6 +258,8 @@ export class BacklogCommand extends Command {
182
258
  if (!why) {
183
259
  return `Say what's still wrong: {white-fg}backlog review ${n} reject <what you saw>{/white-fg}`;
184
260
  }
261
+ // The INDEXED path is never a bench (a bench answers through
262
+ // answerBound), so the runner name here is a real one.
185
263
  const rejOutcome = await postBacklogReject(item.id, why, this.actor?.name);
186
264
  noteBacklogOutcome(rejOutcome);
187
265
  if (rejOutcome !== 'ok')
@@ -244,7 +322,7 @@ export class BacklogCommand extends Command {
244
322
  head,
245
323
  `{white-fg}${left} still waiting on you:{/white-fg}`,
246
324
  ...this.renderRows(refreshed.items),
247
- hint(`"backlog review <n> <your answer>" -- the numbers have been redealt from 1.`),
325
+ hint(`"backlog review <n> <your answer>" -- the numbers have been redealt from 1. "backlog review <n> repro" plays a bench.`),
248
326
  ].filter(Boolean).join('\n');
249
327
  }
250
328
  /**
@@ -281,7 +359,7 @@ export class BacklogCommand extends Command {
281
359
  return [
282
360
  `{cyan-fg}WAITING ON YOU{/cyan-fg}`,
283
361
  ...this.renderRows(items),
284
- hint(`"backlog review <n> <your answer>" replies. "backlog review <n>" alone reads one in full.`),
362
+ hint(`"backlog review <n> <your answer>" replies, "reject <what is wrong>" sends it back. "backlog review <n> repro" drops you into its bench.`),
285
363
  ].filter(Boolean).join('\n');
286
364
  }
287
365
  /**
@@ -320,8 +398,292 @@ export class BacklogCommand extends Command {
320
398
  if (validation && it.commits?.length) {
321
399
  rows.push(` {white-fg}fixed by: ${it.commits.slice(0, 3).join(', ')}{/white-fg}`);
322
400
  }
401
+ // A BENCH EXISTS -- said on the row, so it is visible while skimming
402
+ // rather than found by typing "repro" at each one in turn.
403
+ if (it.repro?.steps?.length) {
404
+ rows.push(` {green-fg}bench ready -- "backlog review ${n} repro"{/green-fg}`);
405
+ }
323
406
  return rows.join('\n');
324
407
  }
408
+ /**
409
+ * ANSWERING THE ITEM THIS SESSION IS ABOUT -- no index, because there
410
+ * is only one thing it could mean.
411
+ *
412
+ * backlog review reject <what is still wrong>
413
+ * backlog review accept [what you saw]
414
+ * backlog review <what you saw> (accept, said plainly)
415
+ * backlog review repro (re-read the steps)
416
+ *
417
+ * `accept` is spelled out as a keyword AND left optional, which looks
418
+ * redundant and is not. Bare prose has always signed an item off, and
419
+ * removing that would break the habit of everyone already using it --
420
+ * but a person who has just typed "reject <reason>" reasonably
421
+ * expects "accept <reason>" to exist, and finding that it does not is
422
+ * how somebody ends up typing "accept" alone as their whole
423
+ * confirmation note.
424
+ */
425
+ async answerBound(itemId, text) {
426
+ // WHOSE WORD IS THIS? The account is the identity that matters and
427
+ // the server resolves it from the token -- but the runner NAME is
428
+ // read from the session, and in a bench that is the pregen. Your
429
+ // first playtest recorded six sign-offs as "signed by Testbed", a
430
+ // street name belonging to nobody. Omitted here so the board falls
431
+ // back to the handle: no name is more honest than a fictional one.
432
+ const asRunner = this.game?.isBench ? undefined : this.actor?.name;
433
+ const fresh = await loadReviewQueue();
434
+ if (fresh.outcome !== 'ok' || !fresh.items)
435
+ return this.explain(fresh.outcome);
436
+ const item = fresh.items.find(i => i.id === itemId);
437
+ if (!item) {
438
+ // Already answered, or moved on while the bench was open. Not an
439
+ // error -- say what is true and do not post anything.
440
+ return `This item isn't waiting on you any more -- it may already be answered.${hint(` ("backlog review" shows what is.)`)}`;
441
+ }
442
+ if (text.length === 0)
443
+ return this.renderItem(item, 1, { full: true });
444
+ if (parseReproRequest(text))
445
+ return this.repro(item, 1);
446
+ const validation = isValidationRow(item);
447
+ const why = validation ? parseRejection(text) : null;
448
+ if (why !== null) {
449
+ if (!why)
450
+ return `Say what's still wrong: {white-fg}backlog review reject <what you saw>{/white-fg}`;
451
+ const outcome = await postBacklogReject(item.id, why, asRunner);
452
+ noteBacklogOutcome(outcome);
453
+ if (outcome !== 'ok')
454
+ return this.explain(outcome);
455
+ markReviewAnswered(item.id);
456
+ return `{red-fg}Rejected. It's back on the board as open, with your reason on it.{/red-fg}`
457
+ + this.closeBench('rejected');
458
+ }
459
+ // "accept" is stripped when it leads, so the note is what follows
460
+ // rather than the word itself.
461
+ const note = /^accepts?\b/i.test(text) ? text.replace(/^accepts?\b\s*/i, '').trim() : text;
462
+ const outcome = validation
463
+ ? await postBacklogSignoff(item.id, note || 'Confirmed in play.', asRunner)
464
+ : await postBacklogComment(item.id, note, { kind: 'answer', awaitingReporter: false, runnerName: asRunner });
465
+ noteBacklogOutcome(outcome);
466
+ if (outcome !== 'ok')
467
+ return this.explain(outcome);
468
+ markReviewAnswered(item.id);
469
+ return (validation
470
+ ? `{green-fg}Signed off. That closes it -- your word is what the board was waiting for.{/green-fg}`
471
+ : `{cyan-fg}Answered. It's on the record against your report.{/cyan-fg}`)
472
+ + this.closeBench(validation ? 'signed off' : 'answered');
473
+ }
474
+ /**
475
+ * A BENCH IS DONE WHEN THE ITEM IS ANSWERED (player request
476
+ * 2026-08-28: "after accepting or rejecting, give a 3s timeout and
477
+ * then close the session").
478
+ *
479
+ * It exists to answer one report; once that is posted there is
480
+ * nothing left in it. Three seconds so the confirmation above can
481
+ * actually be read -- closing on the same frame would wipe the only
482
+ * evidence the answer went anywhere.
483
+ *
484
+ * ONLY in a bench, and only after a post that SUCCEEDED. Answering
485
+ * from an ordinary session must never shut the game down: that is
486
+ * somebody's run, not a scratch scene, and the failure would be
487
+ * spectacular.
488
+ */
489
+ /**
490
+ * ASK THE LAUNCHER FOR THE BENCH, then leave so it can run it.
491
+ *
492
+ * Returns the line to print, or undefined when this session cannot
493
+ * hand off -- in which case the caller falls back to simply showing
494
+ * the steps, which is strictly better than an error.
495
+ *
496
+ * REFUSED DURING A SHARED RUN, and this is the guard that matters:
497
+ * quitting to a bench would drop the table and take everyone else's
498
+ * evening with it. The refusal names the route that IS safe from
499
+ * anywhere, because a refusal that does not is just a wall.
500
+ */
501
+ async requestBenchHandoff(item) {
502
+ const game = this.game;
503
+ const dir = game?.sessionDir;
504
+ if (!game || !dir)
505
+ return undefined;
506
+ if (game.remoteSession) {
507
+ return `You're on a shared run -- dropping into a bench would end the table for everyone.`
508
+ + `\n{white-fg}Outside the game: {/white-fg}maka play:shadowrun --repro ${item.id}`;
509
+ }
510
+ try {
511
+ const { writeHandoff } = await import('../utilities/handoff.js');
512
+ writeHandoff(dir, { kind: 'repro', itemId: item.id });
513
+ }
514
+ catch {
515
+ // Could not leave the note -- say nothing about benches and let
516
+ // the caller print the steps instead. Never strand the player.
517
+ return undefined;
518
+ }
519
+ // Exiting 0 is what seals the save (see the quit hook in ui.ts), so
520
+ // the resume the launcher performs picks up exactly here.
521
+ game.closeAfter(3000, `repro handoff for ${item.id}`);
522
+ return [
523
+ `{cyan-fg}Dropping into the bench for this item...{/cyan-fg}`,
524
+ `{white-fg}Your run is saved. You'll come straight back to it when you leave the bench.{/white-fg}`,
525
+ ].join('\n');
526
+ }
527
+ closeBench(reason) {
528
+ if (!this.game?.isBench)
529
+ return '';
530
+ this.game.closeAfter(3000, reason);
531
+ return `\n{white-fg}Closing the bench...{/white-fg}`;
532
+ }
533
+ /**
534
+ * THE BENCH FOR ONE ITEM.
535
+ *
536
+ * Wired as far as it currently goes, and no further: the repro spec
537
+ * lives on the board (server work, not yet deployed), so today this
538
+ * can only report honestly that there is nothing attached. What it
539
+ * must NEVER do is fall through to the sign-off, which is the whole
540
+ * reason it exists this early.
541
+ */
542
+ async repro(item, n) {
543
+ const repro = item.repro;
544
+ // IN A BENCH, "repro" RE-READS. You are already standing in it, so
545
+ // the only useful meaning is "show me the steps again".
546
+ //
547
+ // OUTSIDE ONE, it TAKES YOU THERE -- and it does that by leaving.
548
+ // The scene cannot be swapped underneath a live session: the game
549
+ // holds the terminal through blessed, and a second blessed screen
550
+ // on one terminal is the exact failure the parent-as-janitor rule
551
+ // exists to prevent. So the game seals its save, leaves a note for
552
+ // the launcher, and exits; the launcher plays the bench and brings
553
+ // the same runner back on a resume. Quit -> bench -> back, which is
554
+ // what was asked for, and it needs no new run lifecycle.
555
+ if (repro && repro.steps.length > 0 && !this.game?.isBench) {
556
+ const handoff = await this.requestBenchHandoff(item);
557
+ if (handoff)
558
+ return handoff;
559
+ }
560
+ if (!repro || repro.steps.length === 0) {
561
+ // ABSENCE IS ORDINARY, and must not read as breakage. Plenty of
562
+ // items are about a verb, a menu or a note and have no scene to
563
+ // stand in. Say so, and say the thing that actually matters here:
564
+ // nothing was recorded against the item.
565
+ return [
566
+ `{yellow-fg}No repro bench is attached to item ${n}.{/yellow-fg}`,
567
+ `{white-fg}Not every fix has one -- some are about a verb or a menu rather than a place.{/white-fg}`,
568
+ hint(` Nothing was posted, and the item was NOT signed off.`),
569
+ ].filter(Boolean).join('\n');
570
+ }
571
+ const lines = [`{cyan-fg}REPRO -- item ${n}{/cyan-fg}`];
572
+ if (repro.premise)
573
+ lines.push(`{white-fg}${repro.premise}{/white-fg}`, '');
574
+ // The steps are printed 1..n whatever the queue does, because these
575
+ // are read top-down and typed in order -- the review LIST reverses
576
+ // for a scrolling terminal, and a sequence of instructions is the
577
+ // one thing that must not.
578
+ repro.steps.forEach((step, i) => lines.push(` ${i + 1}. {white-fg}${step}{/white-fg}`));
579
+ if (repro.expect)
580
+ lines.push('', `{white-fg}Passing looks like: ${repro.expect}{/white-fg}`);
581
+ lines.push('', `{white-fg}Play it: {/white-fg}maka play:shadowrun --repro ${item.id}`);
582
+ lines.push(hint(this.game?.isBench
583
+ ? ` "review accept <what you saw>" or "review reject <what is wrong>" answers it -- no number needed.`
584
+ : ` Answer with "backlog review ${n} <what you saw>" when you have looked.`));
585
+ return lines.filter(Boolean).join('\n');
586
+ }
587
+ /**
588
+ * ONE ROW OF THE BOARD, in full.
589
+ *
590
+ * Resolved against the snapshot that was PRINTED, never a fresh
591
+ * fetch -- the same invariant the review queue holds, and for the
592
+ * same reason: a list that reshuffles between being read and being
593
+ * numbered at hands the player a different item than the one they
594
+ * counted. With no snapshot it shows the board rather than guessing
595
+ * which list they had in mind.
596
+ */
597
+ async readBoardItem(n) {
598
+ if (boardSize() === 0) {
599
+ const shown = await this.list();
600
+ return `${shown}\n\n{white-fg}(Pick from the list above -- "backlog <n>".){/white-fg}`;
601
+ }
602
+ const item = boardItemAt(n);
603
+ if (!item)
604
+ return `There's no item ${n}. The board runs 1-${boardSize()}.`;
605
+ const lines = [`${this.statusMark(item.status)} ${item.text}`];
606
+ const who = [item.runnerName, item.reporterHandle].filter(Boolean).join(' / ');
607
+ if (who)
608
+ lines.push(` {white-fg}${who}{/white-fg}`);
609
+ const v = item.vetting;
610
+ if (v?.verdict) {
611
+ lines.push(` ${this.verdictTag(v.verdict)}${v.justification ? ` ${v.justification}` : ''}`);
612
+ }
613
+ for (const c of (v?.citations ?? []).slice(0, 3)) {
614
+ lines.push(` {cyan-fg}${c.book} p.${c.page ?? '?'}${c.section ? ` (${c.section})` : ''}{/cyan-fg}`);
615
+ }
616
+ if (item.commits?.length) {
617
+ lines.push(` {white-fg}fixed by: ${item.commits.map(c => c.slice(0, 8)).join(', ')}{/white-fg}`);
618
+ }
619
+ if (item.repro?.steps?.length) {
620
+ lines.push('', `{green-fg}BENCH -- "backlog repro ${n}" drops you into it{/green-fg}`);
621
+ if (item.repro.premise)
622
+ lines.push(` {white-fg}${item.repro.premise}{/white-fg}`);
623
+ item.repro.steps.forEach((step, i) => lines.push(` ${i + 1}. {white-fg}${step}{/white-fg}`));
624
+ if (item.repro.expect)
625
+ lines.push(` {white-fg}passing looks like: ${item.repro.expect}{/white-fg}`);
626
+ }
627
+ return lines.join('\n');
628
+ }
629
+ /**
630
+ * PLAY ANY BOARD ITEM'S BENCH, not just one awaiting review.
631
+ *
632
+ * The review queue holds only what is waiting on YOU, so once an item
633
+ * is answered its bench became unreachable from in-game -- even
634
+ * though checking a fix a second time, or showing somebody what you
635
+ * saw, are ordinary things to want. The board is the wider set and
636
+ * this is its verb.
637
+ */
638
+ async reproFromBoard(arg) {
639
+ if (boardSize() === 0) {
640
+ const shown = await this.list();
641
+ return `${shown}\n\n{white-fg}(Pick from the list above -- "backlog repro <n>".){/white-fg}`;
642
+ }
643
+ const n = Number(arg);
644
+ const item = Number.isInteger(n) ? boardItemAt(n) : undefined;
645
+ if (!item)
646
+ return `Which one? "backlog repro <n>" -- the board runs 1-${boardSize()}.`;
647
+ if (!item.repro?.steps?.length) {
648
+ return `No bench is attached to that one.${hint(` Not every fix has a place to stand in -- "backlog list" marks the ones that do.`)}`;
649
+ }
650
+ // Same handoff the review path uses: the game cannot swap its own
651
+ // scene, so it leaves a note and the launcher does the rest.
652
+ const handoff = await this.requestBenchHandoff({ id: item._id, text: item.text });
653
+ return handoff ?? `Couldn't hand off to the bench from here.`;
654
+ }
655
+ /**
656
+ * CLOSE A BOARD ROW OUTRIGHT -- no verdict, no evidence, no sign-off.
657
+ *
658
+ * "backlog close <n> [why]". For an item that should never have been
659
+ * filed: a duplicate, a mis-typed command that became a report, or
660
+ * something you have since decided was never real.
661
+ *
662
+ * Deliberately NOT one of the review verbs. Accepting a mistake would
663
+ * record a confirmation nobody made; rejecting it would send
664
+ * imaginary work back to whoever fixed it. This says the third thing.
665
+ */
666
+ async closeFromBoard(arg, why = '') {
667
+ if (boardSize() === 0) {
668
+ const shown = await this.list();
669
+ return `${shown}\n\n{white-fg}(Pick from the list above -- "backlog close <n> [why]".){/white-fg}`;
670
+ }
671
+ const n = Number(arg);
672
+ const item = Number.isInteger(n) ? boardItemAt(n) : undefined;
673
+ if (!item)
674
+ return `Which one? "backlog close <n> [why]" -- the board runs 1-${boardSize()}.`;
675
+ const outcome = await postBacklogClose(item._id, why.trim(), this.game?.isBench ? undefined : this.actor?.name);
676
+ noteBacklogOutcome(outcome);
677
+ if (outcome === 'forbidden') {
678
+ return `That one isn't yours to close -- only the play-tester who filed it, or an admin.`;
679
+ }
680
+ if (outcome !== 'ok')
681
+ return this.explain(outcome);
682
+ // The board is re-read on the next "backlog list"; the numbering
683
+ // belongs to what was printed, so it is not silently redealt here.
684
+ return `{white-fg}Closed: ${truncate(item.text, 60)}{/white-fg}`
685
+ + hint(` It's off the board as "wont-fix", with your reason on the record.`);
686
+ }
325
687
  async list(statusArg) {
326
688
  let status;
327
689
  if (statusArg) {
@@ -345,9 +707,37 @@ export class BacklogCommand extends Command {
345
707
  // "headers like that are too cluttery"). The heading itself stays --
346
708
  // it carries what the panel divider can't say for it.
347
709
  const lines = [`BACKLOG (${items.length}${status ? `, ${status}` : ''})`];
348
- for (const item of items)
349
- lines.push(...this.row(item));
350
- const footer = hint(`"backlog <what you noticed>" files one. Status moves are an admin's call.`);
710
+ // PRINTED LOWEST-PRIORITY FIRST, so the rows that need you land at
711
+ // the BOTTOM, closest to the prompt -- which is where a scrolling
712
+ // panel leaves your eye.
713
+ //
714
+ // The server sorts in-review first, and that is the right order for
715
+ // a CALLER to iterate. Printing it top-down put wont-fix under the
716
+ // cursor and scrolled the urgent rows off the top: reported here in
717
+ // exactly those words ("I see 'wont' items first"), and reported the
718
+ // same way about the out-of-game board an hour earlier -- which I
719
+ // fixed there and did not carry across, so the same list read
720
+ // correctly in one place and backwards in the other.
721
+ //
722
+ // Reversed at the point of PRINT, never in the data, so the
723
+ // server's priority and which end you read first stay separate
724
+ // facts. Same rule as reviewDisplayOrder and as the CLI dump.
725
+ // NUMBERED, so there is something to name. In-game the rows carried
726
+ // neither an id nor a number, which left the board readable and
727
+ // completely inert -- and an id would not have helped, because
728
+ // selecting text out of a blessed panel to paste back into it is
729
+ // not a thing anybody should be asked to do.
730
+ //
731
+ // Numbers are bound in the SERVER's order and only then reversed for
732
+ // printing, exactly as reviewDisplayOrder does: bind first, reverse
733
+ // second, or "3" labels one row and resolves to another.
734
+ rememberBoard(items);
735
+ const numbered = items.map((item, i) => ({ item, n: i + 1 }));
736
+ for (const { item, n } of boardPrintOrder(numbered)) {
737
+ const rows = this.row(item);
738
+ lines.push(`${optionMark(n)}${rows[0].trimStart()}`, ...rows.slice(1));
739
+ }
740
+ const footer = hint(`"backlog <n>" reads one in full, "backlog repro <n>" plays its bench. "backlog <what you noticed>" files one.`);
351
741
  if (footer)
352
742
  lines.push('', footer);
353
743
  return lines.join('\n');
@@ -375,29 +765,37 @@ export class BacklogCommand extends Command {
375
765
  }
376
766
  return out;
377
767
  }
768
+ /** Blessed's ink for a shared tone. Gray is deliberately absent: it
769
+ * reads as absent on this screen (playtest ruling), so 'dim' lands on
770
+ * plain white -- unemphatic without being unreadable. */
771
+ paint(tone, text) {
772
+ const fg = tone === 'good' ? 'green'
773
+ : tone === 'bad' ? 'red'
774
+ : tone === 'warn' ? 'yellow'
775
+ : tone === 'alert' ? 'magenta'
776
+ : tone === 'info' ? 'cyan'
777
+ : 'white';
778
+ return `{${fg}-fg}${text}{/${fg}-fg}`;
779
+ }
780
+ /** The label and its loudness both come from utilities/backlog-vocab,
781
+ * which the out-of-game dump reads too -- one place decides what a
782
+ * status is CALLED and how much it matters, and each surface maps
783
+ * that to its own palette.
784
+ *
785
+ * An in-review row now paints MAGENTA rather than the same cyan as
786
+ * in-progress. It is the one status that is waiting on the reader,
787
+ * and it did not look like it -- the same complaint, in a smaller
788
+ * font, as the board being unreadable out of game. */
378
789
  statusMark(status) {
379
- switch (status) {
380
- case 'complete': return '{green-fg}[done]{/green-fg}';
381
- case 'in-progress': return '{cyan-fg}[wip] {/cyan-fg}';
382
- // Fixed, and waiting on the reporter to confirm it in play. It
383
- // used to fall through to the default and read "[open]" -- an
384
- // item awaiting your word shown as one nobody had touched.
385
- case 'in-review': return '{cyan-fg}[you?] {/cyan-fg}';
386
- case 'wont-fix': return '{cyan-fg}[no] {/cyan-fg}';
387
- default: return '{yellow-fg}[open]{/yellow-fg}';
388
- }
790
+ const { label, tone } = statusLabel(status);
791
+ return this.paint(tone, label);
389
792
  }
390
793
  /** The verdict is about the GAME, not the rulebooks (reframed
391
794
  * 2026-08-27). Asking canon whether a stale map mattered graded every
392
795
  * real defect out of scope and cited a zoo at it. */
393
796
  verdictTag(verdict) {
394
- switch (verdict) {
395
- case 'canon-violation': return `{red-fg}breaks the rules:{/red-fg}`;
396
- case 'bug': return `{red-fg}bug:{/red-fg}`;
397
- case 'enhancement': return `{yellow-fg}wants building:{/yellow-fg}`;
398
- case 'works-as-intended': return `{green-fg}working as meant:{/green-fg}`;
399
- default: return `{cyan-fg}needs detail:{/cyan-fg}`;
400
- }
797
+ const { label, tone } = verdictLabel(verdict);
798
+ return this.paint(tone, `${label}:`);
401
799
  }
402
800
  explain(outcome) {
403
801
  switch (outcome) {
@@ -1 +1 @@
1
- {"version":3,"file":"backlog.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/backlog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAY,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EACL,aAAa,EAAE,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,gBAAgB,GAEzG,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EACL,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,cAAc,EAClG,kBAAkB,GACnB,MAAM,gCAAgC,CAAC;AAExC,gEAAgE;AAChE,SAAS,QAAQ,CAAC,IAAY,EAAE,GAAW;IACzC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9C,OAAO,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;AAClE,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,OAAO,cAAe,SAAQ,OAAO;IAC/B,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC;IACxB,MAAM,CAAC,WAAW,GAAG,2QAA2Q,CAAC;IAEjS,MAAM,CAAC,WAAW,GAAG;QAC7B,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,oCAAoC,EAAE;QACxE,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,gCAAgC,EAAE;QAClE,EAAE,KAAK,EAAE,uBAAuB,EAAE,KAAK,EAAE,WAAW,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;QACpF;YACE,KAAK,EAAE,gBAAgB;YACvB,KAAK,EAAE,iDAAiD;YACxD,IAAI,EAAE,gMAAgM;SACvM;QACD;YACE,KAAK,EAAE,sFAAsF;YAC7F,KAAK,EAAE,+BAA+B;YACtC,IAAI,EAAE,4YAA4Y;SACnZ;KACF,CAAC;IAEF,KAAK,CAAC,OAAO,CAAC,OAAiB,EAAE;QAC/B,kEAAkE;QAClE,iEAAiE;QACjE,gEAAgE;QAChE,IAAI,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC;YAC3B,OAAO,kGAAkG,IAAI,CAAC,4CAA4C,CAAC,EAAE,CAAC;QAChK,CAAC;QACD,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;YACjB,OAAO,uEAAuE,IAAI,CAAC,2BAA2B,CAAC,EAAE,CAAC;QACpH,CAAC;QAED,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QAC1C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;QACD,4DAA4D;QAC5D,oEAAoE;QACpE,mEAAmE;QACnE,2DAA2D;QAC3D,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACnC,CAAC;IAEO,KAAK,CAAC,IAAI,CAAC,IAAY;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,iEAAiE;QACjE,uEAAuE;QACvE,mEAAmE;QACnE,oEAAoE;QACpE,kEAAkE;QAClE,mEAAmE;QACnE,gDAAgD;QAChD,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;QACjF,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE;YACxC,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI;YAC5B,gEAAgE;YAChE,6DAA6D;YAC7D,uCAAuC;YACvC,SAAS,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS;YAC9E,mEAAmE;YACnE,gEAAgE;YAChE,kEAAkE;YAClE,kEAAkE;YAClE,WAAW,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE;YACpC,UAAU,EAAE,UAAU,EAAE;YACxB,aAAa,EAAE,aAAa,EAAE;YAC9B,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC3B,CAAC,CAAC;QACH,oEAAoE;QACpE,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAC5B,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACnD,OAAO,6DAA6D,IAAI,CAAC,oCAAoC,CAAC,YAAY,CAAC;IAC7H,CAAC;IAED;;;;;;;;;OASG;IACK,KAAK,CAAC,MAAM,CAAC,IAAc;QACjC,oEAAoE;QACpE,4DAA4D;QAC5D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;QAE/C,MAAM,KAAK,GAAG,cAAc,EAAE,CAAC;QAC/B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,iEAAiE;YACjE,gEAAgE;YAChE,6DAA6D;YAC7D,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YACrC,OAAO,GAAG,KAAK,4FAA4F,CAAC;QAC9G,CAAC;QAED,iEAAiE;QACjE,kEAAkE;QAClE,mEAAmE;QACnE,gEAAgE;QAChE,oEAAoE;QACpE,8DAA8D;QAC9D,gEAAgE;QAChE,oDAAoD;QACpD,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACvD,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,GAAG,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,yCAAyC,CAAC,EAAE,CAAC;QAE7F,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI;YAAE,OAAO,mBAAmB,MAAM,CAAC,EAAE,GAAG,CAAC,qBAAqB,KAAK,CAAC,MAAM,GAAG,CAAC;QACvF,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;QAExB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACzB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,iEAAiE;YACjE,6DAA6D;YAC7D,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;QAED,oEAAoE;QACpE,qEAAqE;QACrE,kBAAkB;QAClB,EAAE;QACF,uEAAuE;QACvE,iEAAiE;QACjE,qEAAqE;QACrE,kEAAkE;QAClE,kEAAkE;QAClE,oEAAoE;QACpE,kEAAkE;QAClE,sDAAsD;QACtD,EAAE;QACF,mEAAmE;QACnE,oEAAoE;QACpE,eAAe;QACf,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QAEzC,gEAAgE;QAChE,4DAA4D;QAC5D,oEAAoE;QACpE,4DAA4D;QAC5D,gDAAgD;QAChD,EAAE;QACF,8DAA8D;QAC9D,kEAAkE;QAClE,8DAA8D;QAC9D,oBAAoB;QACpB,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACrD,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACjB,iEAAiE;YACjE,kEAAkE;YAClE,8DAA8D;YAC9D,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,OAAO,oDAAoD,CAAC,mCAAmC,CAAC;YAClG,CAAC;YACD,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC3E,kBAAkB,CAAC,UAAU,CAAC,CAAC;YAC/B,IAAI,UAAU,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACzD,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5B,MAAM,KAAK,GAAG,MAAM,eAAe,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,yBAAyB,CAAC,oEAAoE,CAAC;YAC5G,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC3C,OAAO,GAAG,IAAI,wGAAwG,CAAC;YACzH,CAAC;YACD,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7B,OAAO,GAAG,IAAI,wDAAwD,CAAC;YACzE,CAAC;YACD,OAAO;gBACL,IAAI;gBACJ,aAAa,KAAK,CAAC,KAAK,CAAC,MAAM,mCAAmC;gBAClE,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;aAChC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;QAED,MAAM,OAAO,GAAG,UAAU;YACxB,CAAC,CAAC,MAAM,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC;YAC3D,CAAC,CAAC,MAAM,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE;gBACxC,IAAI,EAAE,QAAQ;gBACd,8DAA8D;gBAC9D,gBAAgB,EAAE,KAAK;gBACvB,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI;aAC7B,CAAC,CAAC;QACL,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAC5B,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAEnD,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAE5B,kEAAkE;QAClE,mEAAmE;QACnE,EAAE;QACF,mEAAmE;QACnE,gEAAgE;QAChE,kEAAkE;QAClE,gEAAgE;QAChE,8DAA8D;QAC9D,gEAAgE;QAChE,mEAAmE;QACnE,qDAAqD;QACrD,EAAE;QACF,gEAAgE;QAChE,iEAAiE;QACjE,MAAM,SAAS,GAAG,MAAM,eAAe,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,UAAU;YACrB,CAAC,CAAC,gCAAgC,CAAC,6EAA6E;YAChH,CAAC,CAAC,0BAA0B,CAAC,qDAAqD,CAAC;QAErF,gEAAgE;QAChE,sDAAsD;QACtD,IAAI,SAAS,CAAC,OAAO,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YACnD,OAAO,GAAG,IAAI,wGAAwG,CAAC;QACzH,CAAC;QACD,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC;QACpC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YACf,OAAO,GAAG,IAAI,+EAA+E,CAAC;QAChG,CAAC;QACD,OAAO;YACL,IAAI;YACJ,aAAa,IAAI,mCAAmC;YACpD,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;YACnC,IAAI,CAAC,6EAA6E,CAAC;SACpF,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACK,UAAU,CAAC,KAAoB;QACrC,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACnG,CAAC;IAED,uEAAuE;IAC/D,KAAK,CAAC,SAAS;QACrB,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,eAAe,EAAE,CAAC;QACnD,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,kFAAkF,CAAC;QAC5F,CAAC;QACD,OAAO;YACL,mCAAmC;YACnC,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;YACzB,IAAI,CAAC,2FAA2F,CAAC;SAClG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED;;;;;;;OAOG;IACK,UAAU,CAAC,EAAe,EAAE,CAAS,EAAE,IAAuB;QACpE,6DAA6D;QAC7D,oEAAoE;QACpE,+DAA+D;QAC/D,mEAAmE;QACnE,0DAA0D;QAC1D,MAAM,UAAU,GAAG,eAAe,CAAC,EAAE,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG,UAAU;YACrB,CAAC,CAAC,kDAAkD;YACpD,CAAC,CAAC,+CAA+C,CAAC;QACpD,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1D,oEAAoE;QACpE,mEAAmE;QACnE,gEAAgE;QAChE,gEAAgE;QAChE,MAAM,IAAI,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC;QACjD,oEAAoE;QACpE,kEAAkE;QAClE,8DAA8D;QAC9D,sCAAsC;QACtC,IAAI,EAAE,CAAC,KAAK,EAAE,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,KAAK,CAAC,IAAI,cAAc,CAAC,CAAC;QAC9E,IAAI,CAAC,IAAI,CAAC,+BAA+B,KAAK,aAAa,CAAC,CAAC;QAC7D,wDAAwD;QACxD,IAAI,UAAU,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;YACrC,IAAI,CAAC,IAAI,CAAC,4BAA4B,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACxF,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAEO,KAAK,CAAC,IAAI,CAAC,SAAkB;QACnC,IAAI,MAAiC,CAAC;QACtC,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,MAAM,GAAG,SAAS,CAAC,WAAW,EAAmB,CAAC;YACxD,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACvC,OAAO,qBAAqB,SAAS,WAAW,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YACjF,CAAC;YACD,MAAM,GAAG,MAAM,CAAC;QAClB,CAAC;QAED,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;QACtD,oEAAoE;QACpE,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAC5B,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,MAAM;gBACX,CAAC,CAAC,WAAW,MAAM,gBAAgB;gBACnC,CAAC,CAAC,qBAAqB,IAAI,CAAC,sDAAsD,CAAC,EAAE,CAAC;QAC1F,CAAC;QAED,gEAAgE;QAChE,qEAAqE;QACrE,sDAAsD;QACtD,MAAM,KAAK,GAAG,CAAC,YAAY,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC1E,KAAK,MAAM,IAAI,IAAI,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,2EAA2E,CAAC,CAAC;QACjG,IAAI,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACnC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,wEAAwE;IAChE,GAAG,CAAC,IAAkB;QAC5B,MAAM,GAAG,GAAa,EAAE,CAAC;QACzB,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3D,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/E,IAAI,GAAG;YAAE,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;QAElC,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QACvB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAChC,GAAG,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;QAC7D,CAAC;aAAM,IAAI,CAAC,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAChC,GAAG,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;QACnE,CAAC;aAAM,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;YACrB,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;iBAC1C,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvD,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/F,IAAI,KAAK;gBAAE,GAAG,CAAC,IAAI,CAAC,kBAAkB,KAAK,YAAY,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAEO,UAAU,CAAC,MAAqB;QACtC,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,UAAU,CAAC,CAAC,OAAO,6BAA6B,CAAC;YACtD,KAAK,aAAa,CAAC,CAAC,OAAO,2BAA2B,CAAC;YACvD,+DAA+D;YAC/D,8DAA8D;YAC9D,2DAA2D;YAC3D,KAAK,WAAW,CAAC,CAAC,OAAO,4BAA4B,CAAC;YACtD,KAAK,UAAU,CAAC,CAAC,OAAO,2BAA2B,CAAC;YACpD,OAAO,CAAC,CAAC,OAAO,+BAA+B,CAAC;QAClD,CAAC;IACH,CAAC;IAED;;0DAEsD;IAC9C,UAAU,CAAC,OAAe;QAChC,QAAQ,OAAO,EAAE,CAAC;YAChB,KAAK,iBAAiB,CAAC,CAAC,OAAO,oCAAoC,CAAC;YACpE,KAAK,KAAK,CAAC,CAAC,OAAO,uBAAuB,CAAC;YAC3C,KAAK,aAAa,CAAC,CAAC,OAAO,wCAAwC,CAAC;YACpE,KAAK,mBAAmB,CAAC,CAAC,OAAO,wCAAwC,CAAC;YAC1E,OAAO,CAAC,CAAC,OAAO,kCAAkC,CAAC;QACrD,CAAC;IACH,CAAC;IAEO,OAAO,CAAC,OAAuB;QACrC,QAAQ,OAAO,EAAE,CAAC;YAChB,KAAK,UAAU,CAAC,CAAC,OAAO,sEAAsE,CAAC;YAC/F,KAAK,SAAS,CAAC,CAAC,OAAO,wEAAwE,CAAC;YAChG,KAAK,WAAW,CAAC,CAAC,OAAO,wEAAwE,CAAC;YAClG,KAAK,UAAU,CAAC,CAAC,OAAO,mEAAmE,CAAC;YAC5F,OAAO,CAAC,CAAC,OAAO,+DAA+D,IAAI,CAAC,0CAA0C,CAAC,EAAE,CAAC;QACpI,CAAC;IACH,CAAC"}
1
+ {"version":3,"file":"backlog.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/backlog.ts"],"names":[],"mappings":"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"}
@@ -41,5 +41,19 @@ export declare class BluffCommand extends Command implements ICommand {
41
41
  /** Is there a barrier in this room at all? Only used to word the
42
42
  * refusal correctly -- a player who typed "bluff" at a lock deserves
43
43
  * to be pointed at the verbs that do work on it. */
44
- private roomHasBarrier;
44
+ /** The one barrier here, when there is exactly one -- for the case
45
+ * where nobody was named because nobody is here. */
46
+ private soleBarrier;
47
+ /**
48
+ * Did they name a BARRIER rather than a person?
49
+ *
50
+ * Matched loosely, and that is the right call here for the same
51
+ * reason it is right in bypass-command: this is resolving a word a
52
+ * human typed at an object they can see, not an identity already
53
+ * known. The generic-noun fallback is the same one bypass-command
54
+ * uses, so "bluff door" and "pick door" agree about what "door"
55
+ * means -- two commands disagreeing about the same word in the same
56
+ * room is its own bug.
57
+ */
58
+ private namedBarrier;
45
59
  }