@maka/maka-cli 5.63.1 → 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.
Files changed (205) hide show
  1. package/bundle/typescript/package.json +1 -1
  2. package/bundle/typescript/src/commands/game/sideQuest/commands/ar.js +29 -8
  3. package/bundle/typescript/src/commands/game/sideQuest/commands/ar.js.map +1 -1
  4. package/bundle/typescript/src/commands/game/sideQuest/commands/ask.d.ts +42 -0
  5. package/bundle/typescript/src/commands/game/sideQuest/commands/ask.js +86 -3
  6. package/bundle/typescript/src/commands/game/sideQuest/commands/ask.js.map +1 -1
  7. package/bundle/typescript/src/commands/game/sideQuest/commands/backlog.d.ts +29 -2
  8. package/bundle/typescript/src/commands/game/sideQuest/commands/backlog.js +151 -1
  9. package/bundle/typescript/src/commands/game/sideQuest/commands/backlog.js.map +1 -1
  10. package/bundle/typescript/src/commands/game/sideQuest/commands/bluff.d.ts +40 -13
  11. package/bundle/typescript/src/commands/game/sideQuest/commands/bluff.js +107 -25
  12. package/bundle/typescript/src/commands/game/sideQuest/commands/bluff.js.map +1 -1
  13. package/bundle/typescript/src/commands/game/sideQuest/commands/breach.d.ts +11 -15
  14. package/bundle/typescript/src/commands/game/sideQuest/commands/breach.js +13 -16
  15. package/bundle/typescript/src/commands/game/sideQuest/commands/breach.js.map +1 -1
  16. package/bundle/typescript/src/commands/game/sideQuest/commands/buy.d.ts +8 -0
  17. package/bundle/typescript/src/commands/game/sideQuest/commands/buy.js +30 -2
  18. package/bundle/typescript/src/commands/game/sideQuest/commands/buy.js.map +1 -1
  19. package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.d.ts +40 -49
  20. package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.js +121 -160
  21. package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.js.map +1 -1
  22. package/bundle/typescript/src/commands/game/sideQuest/commands/call.js +29 -5
  23. package/bundle/typescript/src/commands/game/sideQuest/commands/call.js.map +1 -1
  24. package/bundle/typescript/src/commands/game/sideQuest/commands/cast.d.ts +7 -8
  25. package/bundle/typescript/src/commands/game/sideQuest/commands/cast.js +13 -13
  26. package/bundle/typescript/src/commands/game/sideQuest/commands/cast.js.map +1 -1
  27. package/bundle/typescript/src/commands/game/sideQuest/commands/contacts.js +22 -1
  28. package/bundle/typescript/src/commands/game/sideQuest/commands/contacts.js.map +1 -1
  29. package/bundle/typescript/src/commands/game/sideQuest/commands/cover.d.ts +30 -0
  30. package/bundle/typescript/src/commands/game/sideQuest/commands/cover.js +65 -0
  31. package/bundle/typescript/src/commands/game/sideQuest/commands/cover.js.map +1 -0
  32. package/bundle/typescript/src/commands/game/sideQuest/commands/dispel.d.ts +1 -1
  33. package/bundle/typescript/src/commands/game/sideQuest/commands/dispel.js +2 -2
  34. package/bundle/typescript/src/commands/game/sideQuest/commands/dispel.js.map +1 -1
  35. package/bundle/typescript/src/commands/game/sideQuest/commands/go.js +25 -3
  36. package/bundle/typescript/src/commands/game/sideQuest/commands/go.js.map +1 -1
  37. package/bundle/typescript/src/commands/game/sideQuest/commands/hack.d.ts +2 -3
  38. package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js +2 -2
  39. package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js.map +1 -1
  40. package/bundle/typescript/src/commands/game/sideQuest/commands/jobs.js +18 -10
  41. package/bundle/typescript/src/commands/game/sideQuest/commands/jobs.js.map +1 -1
  42. package/bundle/typescript/src/commands/game/sideQuest/commands/journal.d.ts +44 -0
  43. package/bundle/typescript/src/commands/game/sideQuest/commands/journal.js +136 -0
  44. package/bundle/typescript/src/commands/game/sideQuest/commands/journal.js.map +1 -0
  45. package/bundle/typescript/src/commands/game/sideQuest/commands/look.d.ts +20 -0
  46. package/bundle/typescript/src/commands/game/sideQuest/commands/look.js +157 -5
  47. package/bundle/typescript/src/commands/game/sideQuest/commands/look.js.map +1 -1
  48. package/bundle/typescript/src/commands/game/sideQuest/commands/map.js +18 -4
  49. package/bundle/typescript/src/commands/game/sideQuest/commands/map.js.map +1 -1
  50. package/bundle/typescript/src/commands/game/sideQuest/commands/move.js +1 -1
  51. package/bundle/typescript/src/commands/game/sideQuest/commands/pick.d.ts +2 -3
  52. package/bundle/typescript/src/commands/game/sideQuest/commands/pick.js +2 -2
  53. package/bundle/typescript/src/commands/game/sideQuest/commands/pick.js.map +1 -1
  54. package/bundle/typescript/src/commands/game/sideQuest/commands/players.js +8 -2
  55. package/bundle/typescript/src/commands/game/sideQuest/commands/players.js.map +1 -1
  56. package/bundle/typescript/src/commands/game/sideQuest/commands/posture.d.ts +45 -0
  57. package/bundle/typescript/src/commands/game/sideQuest/commands/posture.js +115 -0
  58. package/bundle/typescript/src/commands/game/sideQuest/commands/posture.js.map +1 -0
  59. package/bundle/typescript/src/commands/game/sideQuest/commands/search.js +46 -12
  60. package/bundle/typescript/src/commands/game/sideQuest/commands/search.js.map +1 -1
  61. package/bundle/typescript/src/commands/game/sideQuest/commands/sheet.js +30 -1
  62. package/bundle/typescript/src/commands/game/sideQuest/commands/sheet.js.map +1 -1
  63. package/bundle/typescript/src/commands/game/sideQuest/commands/silent.js +11 -1
  64. package/bundle/typescript/src/commands/game/sideQuest/commands/silent.js.map +1 -1
  65. package/bundle/typescript/src/commands/game/sideQuest/commands/take.js +12 -0
  66. package/bundle/typescript/src/commands/game/sideQuest/commands/take.js.map +1 -1
  67. package/bundle/typescript/src/commands/game/sideQuest/commands/talk.d.ts +47 -0
  68. package/bundle/typescript/src/commands/game/sideQuest/commands/talk.js +91 -5
  69. package/bundle/typescript/src/commands/game/sideQuest/commands/talk.js.map +1 -1
  70. package/bundle/typescript/src/commands/game/sideQuest/commands/time.d.ts +20 -0
  71. package/bundle/typescript/src/commands/game/sideQuest/commands/time.js +61 -0
  72. package/bundle/typescript/src/commands/game/sideQuest/commands/time.js.map +1 -0
  73. package/bundle/typescript/src/commands/game/sideQuest/commands/unlock.js +1 -1
  74. package/bundle/typescript/src/commands/game/sideQuest/commands/unlock.js.map +1 -1
  75. package/bundle/typescript/src/commands/game/sideQuest/commands/use.d.ts +17 -0
  76. package/bundle/typescript/src/commands/game/sideQuest/commands/use.js +136 -1
  77. package/bundle/typescript/src/commands/game/sideQuest/commands/use.js.map +1 -1
  78. package/bundle/typescript/src/commands/game/sideQuest/engine-version.d.ts +1 -1
  79. package/bundle/typescript/src/commands/game/sideQuest/engine-version.js +15 -1
  80. package/bundle/typescript/src/commands/game/sideQuest/engine-version.js.map +1 -1
  81. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.d.ts +128 -44
  82. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js +551 -254
  83. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js.map +1 -1
  84. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.js +82 -84
  85. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.js.map +1 -1
  86. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-seed-generator.d.ts +23 -4
  87. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-seed-generator.js +95 -79
  88. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-seed-generator.js.map +1 -1
  89. package/bundle/typescript/src/commands/game/sideQuest/factories/seed-migration.d.ts +30 -0
  90. package/bundle/typescript/src/commands/game/sideQuest/factories/seed-migration.js +176 -0
  91. package/bundle/typescript/src/commands/game/sideQuest/factories/seed-migration.js.map +1 -0
  92. package/bundle/typescript/src/commands/game/sideQuest/game.d.ts +104 -0
  93. package/bundle/typescript/src/commands/game/sideQuest/game.js +268 -16
  94. package/bundle/typescript/src/commands/game/sideQuest/game.js.map +1 -1
  95. package/bundle/typescript/src/commands/game/sideQuest/headless-harness.d.ts +78 -0
  96. package/bundle/typescript/src/commands/game/sideQuest/headless-harness.js +188 -0
  97. package/bundle/typescript/src/commands/game/sideQuest/headless-harness.js.map +1 -0
  98. package/bundle/typescript/src/commands/game/sideQuest/headless.d.ts +5 -0
  99. package/bundle/typescript/src/commands/game/sideQuest/headless.js +78 -0
  100. package/bundle/typescript/src/commands/game/sideQuest/headless.js.map +1 -1
  101. package/bundle/typescript/src/commands/game/sideQuest/models/_index.d.ts +0 -1
  102. package/bundle/typescript/src/commands/game/sideQuest/models/_index.js +0 -1
  103. package/bundle/typescript/src/commands/game/sideQuest/models/_index.js.map +1 -1
  104. package/bundle/typescript/src/commands/game/sideQuest/models/device.d.ts +121 -0
  105. package/bundle/typescript/src/commands/game/sideQuest/models/device.js +145 -0
  106. package/bundle/typescript/src/commands/game/sideQuest/models/device.js.map +1 -0
  107. package/bundle/typescript/src/commands/game/sideQuest/models/door.d.ts +27 -8
  108. package/bundle/typescript/src/commands/game/sideQuest/models/door.js +15 -10
  109. package/bundle/typescript/src/commands/game/sideQuest/models/door.js.map +1 -1
  110. package/bundle/typescript/src/commands/game/sideQuest/models/npc.d.ts +143 -0
  111. package/bundle/typescript/src/commands/game/sideQuest/models/npc.js +253 -30
  112. package/bundle/typescript/src/commands/game/sideQuest/models/npc.js.map +1 -1
  113. package/bundle/typescript/src/commands/game/sideQuest/models/player.d.ts +68 -0
  114. package/bundle/typescript/src/commands/game/sideQuest/models/player.js +102 -0
  115. package/bundle/typescript/src/commands/game/sideQuest/models/player.js.map +1 -1
  116. package/bundle/typescript/src/commands/game/sideQuest/models/room.d.ts +80 -34
  117. package/bundle/typescript/src/commands/game/sideQuest/models/room.js +126 -54
  118. package/bundle/typescript/src/commands/game/sideQuest/models/room.js.map +1 -1
  119. package/bundle/typescript/src/commands/game/sideQuest/models/scene.d.ts +1 -4
  120. package/bundle/typescript/src/commands/game/sideQuest/models/scene.js +0 -22
  121. package/bundle/typescript/src/commands/game/sideQuest/models/scene.js.map +1 -1
  122. package/bundle/typescript/src/commands/game/sideQuest/scenes/scene1.json +78 -109
  123. package/bundle/typescript/src/commands/game/sideQuest/scenes/scene2.json +4 -101
  124. package/bundle/typescript/src/commands/game/sideQuest/types/save-file.d.ts +24 -0
  125. package/bundle/typescript/src/commands/game/sideQuest/types/seed/device-seed.d.ts +52 -0
  126. package/bundle/typescript/src/commands/game/sideQuest/types/seed/device-seed.js +2 -0
  127. package/bundle/typescript/src/commands/game/sideQuest/types/seed/device-seed.js.map +1 -0
  128. package/bundle/typescript/src/commands/game/sideQuest/types/seed/legacy-puzzle-seed.d.ts +63 -0
  129. package/bundle/typescript/src/commands/game/sideQuest/types/seed/legacy-puzzle-seed.js +2 -0
  130. package/bundle/typescript/src/commands/game/sideQuest/types/seed/legacy-puzzle-seed.js.map +1 -0
  131. package/bundle/typescript/src/commands/game/sideQuest/types/seed/player-seed.d.ts +6 -0
  132. package/bundle/typescript/src/commands/game/sideQuest/types/seed/room-seed.d.ts +4 -0
  133. package/bundle/typescript/src/commands/game/sideQuest/types/seed/scene-seed.d.ts +3 -2
  134. package/bundle/typescript/src/commands/game/sideQuest/types/shared/abstracts.d.ts +2 -28
  135. package/bundle/typescript/src/commands/game/sideQuest/types/shared/abstracts.js +1 -14
  136. package/bundle/typescript/src/commands/game/sideQuest/types/shared/abstracts.js.map +1 -1
  137. package/bundle/typescript/src/commands/game/sideQuest/ui.js +24 -0
  138. package/bundle/typescript/src/commands/game/sideQuest/ui.js.map +1 -1
  139. package/bundle/typescript/src/commands/game/sideQuest/utilities/affordances.d.ts +55 -0
  140. package/bundle/typescript/src/commands/game/sideQuest/utilities/affordances.js +36 -0
  141. package/bundle/typescript/src/commands/game/sideQuest/utilities/affordances.js.map +1 -0
  142. package/bundle/typescript/src/commands/game/sideQuest/utilities/ar.d.ts +22 -0
  143. package/bundle/typescript/src/commands/game/sideQuest/utilities/ar.js +26 -0
  144. package/bundle/typescript/src/commands/game/sideQuest/utilities/ar.js.map +1 -1
  145. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-dump.js +6 -0
  146. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-dump.js.map +1 -1
  147. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-review.d.ts +45 -0
  148. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-review.js +116 -0
  149. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-review.js.map +1 -0
  150. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog.d.ts +73 -1
  151. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog.js +56 -1
  152. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog.js.map +1 -1
  153. package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.js +37 -4
  154. package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.js.map +1 -1
  155. package/bundle/typescript/src/commands/game/sideQuest/utilities/credentials.d.ts +26 -0
  156. package/bundle/typescript/src/commands/game/sideQuest/utilities/credentials.js +48 -0
  157. package/bundle/typescript/src/commands/game/sideQuest/utilities/credentials.js.map +1 -0
  158. package/bundle/typescript/src/commands/game/sideQuest/utilities/devices.d.ts +23 -0
  159. package/bundle/typescript/src/commands/game/sideQuest/utilities/devices.js +55 -0
  160. package/bundle/typescript/src/commands/game/sideQuest/utilities/devices.js.map +1 -0
  161. package/bundle/typescript/src/commands/game/sideQuest/utilities/fuzzy-match.d.ts +57 -2
  162. package/bundle/typescript/src/commands/game/sideQuest/utilities/fuzzy-match.js +46 -3
  163. package/bundle/typescript/src/commands/game/sideQuest/utilities/fuzzy-match.js.map +1 -1
  164. package/bundle/typescript/src/commands/game/sideQuest/utilities/log-style.d.ts +38 -0
  165. package/bundle/typescript/src/commands/game/sideQuest/utilities/log-style.js +42 -0
  166. package/bundle/typescript/src/commands/game/sideQuest/utilities/log-style.js.map +1 -1
  167. package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.js +72 -17
  168. package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.js.map +1 -1
  169. package/bundle/typescript/src/commands/game/sideQuest/utilities/playtester.d.ts +50 -0
  170. package/bundle/typescript/src/commands/game/sideQuest/utilities/playtester.js +43 -0
  171. package/bundle/typescript/src/commands/game/sideQuest/utilities/playtester.js.map +1 -0
  172. package/bundle/typescript/src/commands/game/sideQuest/utilities/room-grid.d.ts +14 -3
  173. package/bundle/typescript/src/commands/game/sideQuest/utilities/room-grid.js +45 -31
  174. package/bundle/typescript/src/commands/game/sideQuest/utilities/room-grid.js.map +1 -1
  175. package/bundle/typescript/src/commands/game/sideQuest/utilities/room-view.js +66 -8
  176. package/bundle/typescript/src/commands/game/sideQuest/utilities/room-view.js.map +1 -1
  177. package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.d.ts +81 -15
  178. package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.js +142 -33
  179. package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.js.map +1 -1
  180. package/bundle/typescript/src/commands/game/sideQuest/utilities/use-target.d.ts +88 -0
  181. package/bundle/typescript/src/commands/game/sideQuest/utilities/use-target.js +113 -0
  182. package/bundle/typescript/src/commands/game/sideQuest/utilities/use-target.js.map +1 -0
  183. package/bundle/typescript/src/commands/game/sideQuest/utilities/world-clock.d.ts +83 -0
  184. package/bundle/typescript/src/commands/game/sideQuest/utilities/world-clock.js +106 -0
  185. package/bundle/typescript/src/commands/game/sideQuest/utilities/world-clock.js.map +1 -0
  186. package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js +54 -5
  187. package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js.map +1 -1
  188. package/bundle/typescript/src/maka.js +1 -1
  189. package/bundle/typescript/src/maka.js.map +1 -1
  190. package/bundle/typescript/src/tools/sdk-loader/relocate.d.ts +19 -2
  191. package/bundle/typescript/src/tools/sdk-loader/relocate.js +22 -2
  192. package/bundle/typescript/src/tools/sdk-loader/relocate.js.map +1 -1
  193. package/package.json +1 -1
  194. package/bundle/typescript/src/commands/game/sideQuest/commands/solve.d.ts +0 -6
  195. package/bundle/typescript/src/commands/game/sideQuest/commands/solve.js +0 -72
  196. package/bundle/typescript/src/commands/game/sideQuest/commands/solve.js.map +0 -1
  197. package/bundle/typescript/src/commands/game/sideQuest/factories/puzzle-factory.d.ts +0 -6
  198. package/bundle/typescript/src/commands/game/sideQuest/factories/puzzle-factory.js +0 -26
  199. package/bundle/typescript/src/commands/game/sideQuest/factories/puzzle-factory.js.map +0 -1
  200. package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.d.ts +0 -143
  201. package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.js +0 -366
  202. package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.js.map +0 -1
  203. package/bundle/typescript/src/commands/game/sideQuest/types/seed/puzzle-seed.d.ts +0 -28
  204. package/bundle/typescript/src/commands/game/sideQuest/types/seed/puzzle-seed.js +0 -2
  205. package/bundle/typescript/src/commands/game/sideQuest/types/seed/puzzle-seed.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@maka/maka-cli",
3
- "version": "5.63.1",
3
+ "version": "5.65.0",
4
4
  "type": "module",
5
5
  "summary": "A command line tool for scaffolding Meteor 2.x applications using either React.",
6
6
  "description": "A command line tool for scaffolding Meteor 2.x applications using React.",
@@ -1,6 +1,6 @@
1
1
  import { Command } from './command.js';
2
2
  import { hint } from '../utilities/hints.js';
3
- import { aroTags, arSightUp } from '../utilities/ar.js';
3
+ import { aroTags, arSightUp, silentAndSeeingNote } from '../utilities/ar.js';
4
4
  /**
5
5
  * THE AR SWITCH (player request 2026-08-26: "there should be a way to
6
6
  * toggle AR"). Bare "ar" toggles, "ar on"/"ar off" are explicit, and
@@ -21,7 +21,7 @@ import { aroTags, arSightUp } from '../utilities/ar.js';
21
21
  */
22
22
  export class ArCommand extends Command {
23
23
  static verb = 'ar';
24
- static description = 'Toggle your augmented-reality overlay: "ar" flips it, "ar on"/"ar off" are explicit. Off just hides the icon clutter -- your link keeps broadcasting and calls still reach you. Bare "ar" while it is up also reads out what is online around you.';
24
+ static description = 'Toggle your augmented-reality overlay: "ar" flips it, "ar on"/"ar off" are explicit. Off just hides the icon clutter -- your link keeps broadcasting and calls still reach you. Independent of "silent": you can run dark with your overlay up, and usually want to. Bare "ar" while it is up also reads out what is online around you.';
25
25
  async execute(args = []) {
26
26
  const actor = this.actor;
27
27
  const sub = (args[0] ?? '').toLowerCase();
@@ -41,7 +41,16 @@ export class ArCommand extends Command {
41
41
  this.game?.updateExits(actor.currentLocation);
42
42
  this.scene.updateStatus();
43
43
  if (!wantOn) {
44
- return `{white-fg}You blink the overlay away. The street goes plain -- no tags, no marquees, nothing floating over anybody's shoulder. Your link is still up and still reachable, and the district map drops its host markers with the rest of the icons. Lasts the session -- a fresh one boots with AR up${hint(`, and "ar" brings it back any time`)}.{/white-fg}`;
44
+ // The link half of this sentence has to TELL THE TRUTH about the
45
+ // other axis. It used to promise "still up and still reachable"
46
+ // unconditionally -- which is a lie to a runner who is running
47
+ // silent, and precisely the kind of crossed-wires that made
48
+ // someone ask whether silent and AR can coexist at all. Muting
49
+ // changes the OVERLAY; whatever the link was doing, it still is.
50
+ const linkNote = actor.runningSilent
51
+ ? `Your link is untouched -- still silent, still hidden, still no calls`
52
+ : `Your link is still up and still reachable`;
53
+ return `{white-fg}You blink the overlay away. The street goes plain -- no tags, no marquees, nothing floating over anybody's shoulder. ${linkNote}, and the district map drops its host markers with the rest of the icons. Lasts the session -- a fresh one boots with AR up${hint(`, and "ar" brings it back any time`)}.{/white-fg}`;
45
54
  }
46
55
  // Coming back up: say WHY it is still dark, if it is. A player who
47
56
  // types "ar on" and gets a blank street deserves the reason.
@@ -56,10 +65,13 @@ export class ArCommand extends Command {
56
65
  }
57
66
  const tags = aroTags(this.scene, actor, actor.currentLocation);
58
67
  const head = `{cyan-fg}The overlay blinks back in.{/cyan-fg}`;
68
+ // Turning AR back on while silent is the other moment the question
69
+ // lands -- you have just done the thing you were unsure was allowed.
70
+ const note = silentAndSeeingNote(actor);
59
71
  if (tags.length === 0) {
60
- return `${head}\n{cyan-fg}Nothing here is talking -- a dead patch of street.{/cyan-fg}`;
72
+ return [head, `{cyan-fg}Nothing here is talking -- a dead patch of street.{/cyan-fg}`, note].filter(Boolean).join('\n');
61
73
  }
62
- return `${head}\n${tags.map(t => ` {cyan-fg}${t}{/cyan-fg}`).join('\n')}`;
74
+ return [head, ...tags.map(t => ` {cyan-fg}${t}{/cyan-fg}`), note].filter(Boolean).join('\n');
63
75
  }
64
76
  }
65
77
  /**
@@ -69,7 +81,7 @@ export class ArCommand extends Command {
69
81
  */
70
82
  export class ArosCommand extends Command {
71
83
  static verb = 'aros';
72
- static description = 'Read the augmented-reality objects around you: hosts, broadcasting PANs, camera clusters, powered-up gear in plain sight. Needs your AR overlay up ("ar").';
84
+ static description = 'Read the augmented-reality objects around you: hosts, broadcasting PANs, camera clusters, powered-up gear in plain sight. Needs your AR overlay up ("ar"). Works while running silent -- silence hides what you broadcast, not what you can see.';
73
85
  async execute(_args = []) {
74
86
  const actor = this.actor;
75
87
  if (!arSightUp(actor)) {
@@ -83,11 +95,20 @@ export class ArosCommand extends Command {
83
95
  return `Your overlay is DOWN -- somebody cut it. "reboot" clears that.`;
84
96
  return `No commlink, no deck, no AR. Nothing to read the street with.`;
85
97
  }
98
+ // "aros" is the verb a player reaches for when they want to know
99
+ // whether their overlay is working -- which is exactly when the
100
+ // silent-and-seeing question occurs to them. Empty unless it is
101
+ // actually live (utilities/ar.ts silentAndSeeingNote).
102
+ const note = silentAndSeeingNote(actor);
86
103
  const tags = aroTags(this.scene, actor, actor.currentLocation);
87
104
  if (tags.length === 0) {
88
- return `{cyan-fg}Nothing here is talking -- a dead patch of street.{/cyan-fg}`;
105
+ return [`{cyan-fg}Nothing here is talking -- a dead patch of street.{/cyan-fg}`, note].filter(Boolean).join('\n');
89
106
  }
90
- return `{cyan-fg}AR OVERLAY:{/cyan-fg}\n${tags.map(t => ` {cyan-fg}${t}{/cyan-fg}`).join('\n')}`;
107
+ return [
108
+ `{cyan-fg}AR OVERLAY:{/cyan-fg}`,
109
+ ...tags.map(t => ` {cyan-fg}${t}{/cyan-fg}`),
110
+ note,
111
+ ].filter(Boolean).join('\n');
91
112
  }
92
113
  }
93
114
  //# sourceMappingURL=ar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ar.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/ar.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ar.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/ar.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { Command, ICommand } from './command.js';
2
+ import { ICatalogItem } from '../utilities/catalog-data.js';
2
3
  /**
3
4
  * Legwork (SR5e p.387-388): "ask <contact> about <thing>" taps a
4
5
  * CONTACT's network for real information -- in person or over a live
@@ -21,6 +22,32 @@ export declare class AskCommand extends Command implements ICommand {
21
22
  protected static verb: string;
22
23
  protected static description: string;
23
24
  execute(args?: string[]): Promise<string>;
25
+ /**
26
+ * ASKING A FIXER FOR PAPER (player go 2026-08-27: "I should be able to
27
+ * call Mr. Krow as a fixer to get a fake SIN. Let's take a look at how
28
+ * to get the job during a conversation.")
29
+ *
30
+ * Everything this needs already existed and none of it was reachable
31
+ * by talking. Fake SINs are in the catalog at canon prices (SR5 p.443:
32
+ * cost = Rating x 2,500, availability = Rating x 3, legality F), and
33
+ * `source <item> from <contact>` is a working purchase that rolls the
34
+ * contact's availability test. Crucially the ROLE_DOMAINS check in
35
+ * source.ts is only a DICE BONUS, not a gate -- so a fixer could
36
+ * always have sourced paper; nobody could ever ask him to.
37
+ *
38
+ * The one thing in the way was that a request to the fixer fell
39
+ * through to offerWork, which refuses him flat ("Errands? I broker
40
+ * RUNS, chummer") -- so the most canon-obvious request in the game hit
41
+ * a refusal written for something else entirely.
42
+ *
43
+ * Deliberately a QUOTE, not a sale: it names real catalog items at
44
+ * real prices and hands over the exact command that buys one. A
45
+ * dialogue sale that the order system never saw is the bug swagNote
46
+ * already exists to prevent (a real session's Ratchet sold a program
47
+ * for "six kay" in pure conversation and the customer owned nothing),
48
+ * and this must not become a second door into it.
49
+ */
50
+ private offerGoods;
24
51
  /**
25
52
  * A contact putting their own errand on the table (Game.offerGigFrom).
26
53
  * Loyalty 2 opens the door -- a Loyalty-1 face is still just a
@@ -35,3 +62,18 @@ export declare class AskCommand extends Command implements ICommand {
35
62
  */
36
63
  private buildIntel;
37
64
  }
65
+ /**
66
+ * Which catalog goods a spoken request is asking for.
67
+ *
68
+ * Exported and PURE because the DANGEROUS failure here is not missing a
69
+ * match, it is catching one: this runs AHEAD of the legwork path, so a
70
+ * matcher that fires on "the job" or "the run" silently eats the whole
71
+ * intel system and nothing throws. The tests are written mostly as
72
+ * must-NOT-match cases for that reason.
73
+ *
74
+ * Matches item NAMES, not categories -- "a fake sin" finds the whole
75
+ * rating ladder, "a commlink" finds nothing because the catalog sells
76
+ * Meta Links and Sony Emperors. That is the same property source has,
77
+ * and widening it is what would start eating legwork topics.
78
+ */
79
+ export declare function matchOrderableGoods(topic: string): ICatalogItem[];
@@ -5,6 +5,8 @@ import { rollPool, formatRoll } from '../utilities/dice.js';
5
5
  import { fuzzyPickName } from '../utilities/fuzzy-match.js';
6
6
  import { FIXER_NAME, isFixerName } from '../factories/scene-seed-generator.js';
7
7
  import { sameSpot, spotOf, spotRefusal } from '../utilities/spots.js';
8
+ import { loadCatalog } from '../utilities/catalog.js';
9
+ import { PAPER_AVAILABILITY } from '../utilities/sin.js';
8
10
  /**
9
11
  * Legwork (SR5e p.387-388): "ask <contact> about <thing>" taps a
10
12
  * CONTACT's network for real information -- in person or over a live
@@ -25,7 +27,7 @@ import { sameSpot, spotOf, spotRefusal } from '../utilities/spots.js';
25
27
  */
26
28
  export class AskCommand extends Command {
27
29
  static verb = 'ask';
28
- static description = 'Tap a contact: "ask <contact> about <thing>" for legwork (Loyalty adds dice; once per homecoming), or "ask <contact> about work" for a gig of theirs (Loyalty 2+).';
30
+ static description = 'Tap a contact: "ask <contact> about <thing>" for legwork (Loyalty adds dice; once per homecoming), or "ask <contact> about work" for a gig of theirs (Loyalty 2+). "ask <contact> for <gear>" gets a street quote you can order.';
29
31
  async execute(args = []) {
30
32
  const actor = this.actor;
31
33
  if (!args || args.length === 0) {
@@ -38,12 +40,16 @@ export class AskCommand extends Command {
38
40
  const partner = actor.activeCallPartner;
39
41
  const candidates = partner && !here.includes(partner) ? [...here, partner] : here;
40
42
  // "about" is the separator when present -- name before it, topic
41
- // after. (A longest-prefix fuzzy match swallowed "Mama Wu about
43
+ // after. "for" is the same separator for GOODS, because that is how
44
+ // a player actually phrases a purchase ("ask Krow for a fake SIN",
45
+ // player go 2026-08-27) -- without it the whole request fuzzy-matched
46
+ // as a name and found nobody.
47
+ // (A longest-prefix fuzzy match swallowed "Mama Wu about
42
48
  // work" WHOLE as the name in a real harness run, leaving no topic.)
43
49
  // Without "about", fall back to longest-prefix matching.
44
50
  let target;
45
51
  let topicWords = [];
46
- const aboutIdx = args.findIndex(w => w.toLowerCase() === 'about');
52
+ const aboutIdx = args.findIndex(w => ['about', 'for'].includes(w.toLowerCase()));
47
53
  if (aboutIdx > 0) {
48
54
  const picked = fuzzyPickName(args.slice(0, aboutIdx).join(' '), candidates.map(a => a.name));
49
55
  target = picked ? candidates.find(a => a.name === picked) : undefined;
@@ -85,6 +91,12 @@ export class AskCommand extends Command {
85
91
  });
86
92
  return `You put the question to ${target.name}, but you're a stranger asking a stranger's question.${hint(` (Trade with them, run their errands -- CONTACTS talk. "contacts" shows who already does.)`)}`;
87
93
  }
94
+ // GOODS BEFORE WORK. "ask Krow for a fake SIN" is a purchase, not a
95
+ // job request, and it has to be tested first or the fixer's
96
+ // work-refusal swallows it (see offerWork).
97
+ const goods = this.offerGoods(target, topic);
98
+ if (goods)
99
+ return goods;
88
100
  // "ask <contact> about work" is a JOB request, not a network pull:
89
101
  // no dice, no per-homecoming budget -- Loyalty gates the door and
90
102
  // the offer lands as the standing gig ("work" picks it up). Kept
@@ -119,6 +131,49 @@ export class AskCommand extends Command {
119
131
  ...facts.map(f => ` ${f}`),
120
132
  ].join('\n');
121
133
  }
134
+ /**
135
+ * ASKING A FIXER FOR PAPER (player go 2026-08-27: "I should be able to
136
+ * call Mr. Krow as a fixer to get a fake SIN. Let's take a look at how
137
+ * to get the job during a conversation.")
138
+ *
139
+ * Everything this needs already existed and none of it was reachable
140
+ * by talking. Fake SINs are in the catalog at canon prices (SR5 p.443:
141
+ * cost = Rating x 2,500, availability = Rating x 3, legality F), and
142
+ * `source <item> from <contact>` is a working purchase that rolls the
143
+ * contact's availability test. Crucially the ROLE_DOMAINS check in
144
+ * source.ts is only a DICE BONUS, not a gate -- so a fixer could
145
+ * always have sourced paper; nobody could ever ask him to.
146
+ *
147
+ * The one thing in the way was that a request to the fixer fell
148
+ * through to offerWork, which refuses him flat ("Errands? I broker
149
+ * RUNS, chummer") -- so the most canon-obvious request in the game hit
150
+ * a refusal written for something else entirely.
151
+ *
152
+ * Deliberately a QUOTE, not a sale: it names real catalog items at
153
+ * real prices and hands over the exact command that buys one. A
154
+ * dialogue sale that the order system never saw is the bug swagNote
155
+ * already exists to prevent (a real session's Ratchet sold a program
156
+ * for "six kay" in pure conversation and the customer owned nothing),
157
+ * and this must not become a second door into it.
158
+ */
159
+ offerGoods(target, topic) {
160
+ const matches = matchOrderableGoods(topic);
161
+ if (matches.length === 0)
162
+ return undefined;
163
+ const remote = this.actor.currentLocation !== target.currentLocation;
164
+ void Promise.resolve(target.hear(this.actor, `Can you get me ${topic}? [System note: ${this.actor.name} is asking you to SOURCE goods. You have already quoted them the list price and told them to put the order through -- add only a short in-character word. Never agree a different price and never treat the sale as done: only the order system sells anything.]`)).catch(err => {
165
+ this.logger.error(`${target.name} failed to hear the order request: ${err}`);
166
+ });
167
+ this.logger.write(`AskCommand: ${this.actor.name} asked ${target.name} to source "${topic}" -- ${matches.length} catalog match(es).`);
168
+ return [
169
+ `${target.name} hears you out, then quotes the street:`,
170
+ ...matches.map(i => ` ${i.name} -- ${i.price} nuyen${i.availability >= PAPER_AVAILABILITY ? ' (restricted)' : ''}`),
171
+ matches.length === 1
172
+ ? ` "source ${matches[0].name} from ${target.name}" to put the order through.`
173
+ : ` "source <one of those> from ${target.name}" to put the order through.`,
174
+ hint(` (They roll to find it, take payment up front${remote ? '' : ''}, and deliver at your next homecoming. Loyalty 5 pays the family rate.)`),
175
+ ].join('\n');
176
+ }
122
177
  /**
123
178
  * A contact putting their own errand on the table (Game.offerGigFrom).
124
179
  * Loyalty 2 opens the door -- a Loyalty-1 face is still just a
@@ -202,4 +257,32 @@ export class AskCommand extends Command {
202
257
  return [`Nothing's on the wire for you right now -- no pending job, no live rumor. Their network stays warm for when there is. (Call ${this.game?.hasHub ? 'your Johnson' : 'around'} first.)`];
203
258
  }
204
259
  }
260
+ /**
261
+ * Which catalog goods a spoken request is asking for.
262
+ *
263
+ * Exported and PURE because the DANGEROUS failure here is not missing a
264
+ * match, it is catching one: this runs AHEAD of the legwork path, so a
265
+ * matcher that fires on "the job" or "the run" silently eats the whole
266
+ * intel system and nothing throws. The tests are written mostly as
267
+ * must-NOT-match cases for that reason.
268
+ *
269
+ * Matches item NAMES, not categories -- "a fake sin" finds the whole
270
+ * rating ladder, "a commlink" finds nothing because the catalog sells
271
+ * Meta Links and Sony Emperors. That is the same property source has,
272
+ * and widening it is what would start eating legwork topics.
273
+ */
274
+ export function matchOrderableGoods(topic) {
275
+ const q = topic.toLowerCase().replace(/\b(a|an|the|some|any|me|get|buy|new)\b/g, ' ').replace(/\s+/g, ' ').trim();
276
+ if (q.length < 3)
277
+ return [];
278
+ const squash = (s) => s.toLowerCase().replace(/[^a-z0-9]+/g, '');
279
+ const sq = squash(q);
280
+ return loadCatalog()
281
+ .filter(i => {
282
+ const name = squash(i.name);
283
+ return name.includes(sq) || (sq.length >= 4 && sq.includes(name));
284
+ })
285
+ .sort((a, b) => a.price - b.price)
286
+ .slice(0, 4);
287
+ }
205
288
  //# sourceMappingURL=ask.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ask.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/ask.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAY,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEtE;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,OAAO,UAAW,SAAQ,OAAO;IAC3B,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC;IACpB,MAAM,CAAC,WAAW,GAAG,oKAAoK,CAAC;IAEpM,KAAK,CAAC,OAAO,CAAC,OAAiB,EAAE;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAEzB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO,yFAAyF,CAAC;QACnG,CAAC;QAED,mEAAmE;QACnE,iEAAiE;QACjE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,eAAe,CAAC;aAC3D,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;QACzF,MAAM,OAAO,GAAG,KAAK,CAAC,iBAAiB,CAAC;QACxC,MAAM,UAAU,GAAG,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAElF,iEAAiE;QACjE,gEAAgE;QAChE,oEAAoE;QACpE,yDAAyD;QACzD,IAAI,MAA0B,CAAC;QAC/B,IAAI,UAAU,GAAa,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,CAAC;QAClE,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACjB,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7F,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACtE,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBACtC,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBACtF,IAAI,MAAM,EAAE,CAAC;oBACX,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;oBACjD,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBAC3B,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,qDAAqD,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,kBAAkB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;QAChK,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,YAAY,GAAG,CAAC,EAAE,CAAC;YAC7B,OAAO,uBAAuB,MAAM,CAAC,IAAI,6BAA6B,CAAC;QACzE,CAAC;QACD,kEAAkE;QAClE,+DAA+D;QAC/D,0DAA0D;QAC1D,IAAI,MAAM,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;YACnD,OAAO,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAE,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,OAAO;YAAE,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/E,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,wBAAwB,CAAC;QAE/D,qDAAqD;QACrD,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;QAEvB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,oEAAoE;YACpE,uDAAuD;YACvD,KAAK,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,KAAK,mBAAmB,KAAK,CAAC,IAAI,yBAAyB,KAAK,0JAA0J,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gBAClR,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAO,CAAC,IAAI,iCAAiC,GAAG,EAAE,CAAC,CAAC;YAC3E,CAAC,CAAC,CAAC;YACH,OAAO,2BAA2B,MAAM,CAAC,IAAI,wDAAwD,IAAI,CAAC,4FAA4F,CAAC,EAAE,CAAC;QAC5M,CAAC;QAED,mEAAmE;QACnE,kEAAkE;QAClE,iEAAiE;QACjE,iEAAiE;QACjE,oDAAoD;QACpD,IAAI,wCAAwC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACzD,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACzC,CAAC;QAED,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,OAAO,GAAG,MAAM,CAAC,IAAI,4FAA4F,IAAI,CAAC,qDAAqD,CAAC,EAAE,CAAC;QACjL,CAAC;QACD,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;QAErB,oEAAoE;QACpE,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;QAC7E,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QACrD,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC,oBAAoB,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;QACrN,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QAE9C,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,cAAc,EAAE,GAAG,MAAM,CAAC,IAAI,UAAU,KAAK,EAAE,CAAC,CAAC;QAC1E,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,KAAK,CAAC,IAAI,UAAU,MAAM,CAAC,IAAI,WAAW,KAAK,gBAAgB,OAAO,CAAC,IAAI,SAAS,GAAG,CAAC,IAAI,UAAU,IAAI,GAAG,CAAC,CAAC;QAEhJ,kEAAkE;QAClE,4DAA4D;QAC5D,KAAK,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,KAAK,mBAAmB,KAAK,CAAC,IAAI,iCAAiC,OAAO,CAAC,OAAO,mCAAmC,KAAK,qEAAqE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,4GAA4G,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YAClX,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAO,CAAC,IAAI,gCAAgC,GAAG,EAAE,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;QAEH,qEAAqE;QACrE,mEAAmE;QACnE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,OAAO,CAAC,OAAO,cAAc,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC1F,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,IAAI,eAAe,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACvE,OAAO;YACL,cAAc,MAAM,CAAC,IAAI,uBAAuB;YAChD,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;SAC5B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IAED;;;;;OAKG;IACK,SAAS,CAAC,MAAW,EAAE,OAAgD;QAC7E,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,OAAO,GAAG,MAAM,CAAC,IAAI,+EAA+E,IAAI,CAAC,2CAA2C,UAAU,wBAAwB,CAAC,EAAE,CAAC;QAC5L,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;YACzB,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YAC9B,OAAO,GAAG,MAAM,CAAC,IAAI,yDAAyD,CAAC,CAAC,IAAI,0CAA0C,CAAC,CAAC,QAAQ,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC;QACzJ,CAAC;QACD,IAAI,OAAO,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,GAAG,MAAM,CAAC,IAAI,0FAA0F,IAAI,CAAC,iFAAiF,CAAC,EAAE,CAAC;QAC3M,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,GAAG,MAAM,CAAC,IAAI,0FAA0F,CAAC;QAClH,CAAC;QAED,KAAK,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,uDAAuD,IAAI,CAAC,KAAK,CAAC,IAAI,gCAAgC,OAAO,CAAC,OAAO,yBAAyB,KAAK,CAAC,QAAQ,OAAO,KAAK,CAAC,EAAE,QAAQ,KAAK,CAAC,GAAG,+EAA+E,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACrU,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,IAAI,qCAAqC,GAAG,EAAE,CAAC,CAAC;QAC9E,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,KAAK,MAAM,CAAC,eAAe,CAAC;QACrE,OAAO;YACL,GAAG,MAAM,CAAC,IAAI,yBAAyB,KAAK,CAAC,KAAK,GAAG;YACrD,KAAK,KAAK,CAAC,GAAG,yBAAyB,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,EAAE,GAAG;YACpH,MAAM;gBACJ,CAAC,CAAC,oDAAoD,IAAI,CAAC,yCAAyC,CAAC,EAAE;gBACvG,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC;SAC1C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IAED;;;;OAIG;IACK,UAAU,CAAC,KAAa,EAAE,IAAY;QAC5C,MAAM,OAAO,GAA+B,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC;QAClE,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC;QACrC,MAAM,QAAQ,GAAG,uCAAuC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrE,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAE/H,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;YACd,OAAO,CAAC,wGAAwG,CAAC,CAAC;QACpH,CAAC;QAED,IAAI,OAAO,IAAI,CAAC,QAAQ,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACzC,MAAM,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC;YAChC,MAAM,KAAK,GAAG,CAAC,qCAAqC,OAAO,CAAC,IAAI,uCAAuC,CAAC,CAAC;YACzG,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;gBAC1B,KAAK,CAAC,IAAI,CAAC,yCAAyC,EAAE,CAAC,IAAI,8CAA8C,CAAC,CAAC;YAC7G,CAAC;YACD,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;gBAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;gBAC1F,IAAI,MAAM,EAAE,MAAM;oBAAE,KAAK,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC,IAAI,aAAa,MAAM,CAAC,MAAM,oDAAoD,CAAC,CAAC;qBAC3I,IAAI,MAAM,EAAE,IAAI;oBAAE,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,kCAAkC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;qBAC7F,IAAI,EAAE,CAAC,KAAK;oBAAE,KAAK,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,KAAK,uDAAuD,CAAC,CAAC;YACvH,CAAC;YACD,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;gBACd,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;qBACjC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC;qBACxB,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC;gBACtD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;oBAAE,KAAK,CAAC,IAAI,CAAC,qBAAqB,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;gBACvI,IAAI,EAAE,EAAE,MAAM;oBAAE,KAAK,CAAC,IAAI,CAAC,sCAAsC,EAAE,CAAC,MAAM,iCAAiC,CAAC,CAAC;YAC/G,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,KAAK,GAAG,CAAC,qBAAqB,KAAK,GAAG,CAAC,CAAC;YAC9C,IAAI,IAAI,KAAK,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,kFAAkF,CAAC,CAAC;YAC/G,IAAI,IAAI,IAAI,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,qHAAqH,CAAC,CAAC;YACjJ,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,CAAC,+HAA+H,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,UAAU,CAAC,CAAC;IAClM,CAAC"}
1
+ {"version":3,"file":"ask.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/ask.ts"],"names":[],"mappings":"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"}
@@ -22,12 +22,39 @@ import { Command, ICommand } from './command.js';
22
22
  export declare class BacklogCommand extends Command implements ICommand {
23
23
  protected static verb: string;
24
24
  protected static description: string;
25
- protected static subcommands: {
25
+ protected static subcommands: ({
26
26
  usage: string;
27
27
  short: string;
28
- }[];
28
+ long?: undefined;
29
+ } | {
30
+ usage: string;
31
+ short: string;
32
+ long: string;
33
+ })[];
29
34
  execute(args?: string[]): Promise<string>;
30
35
  private file;
36
+ /**
37
+ * THE REVIEW QUEUE (user request 2026-08-27). Bare "backlog review"
38
+ * lists what is waiting on you, numbered 1..n; "backlog review <n>
39
+ * <your words>" answers item n.
40
+ *
41
+ * The numbering is the delicate part and utilities/backlog-review.ts
42
+ * holds the invariant: a number resolves against the snapshot the
43
+ * player was SHOWN, never against a fresh fetch. Answering does not
44
+ * renumber the list on screen either.
45
+ */
46
+ private review;
47
+ /** Fetch and render the queue, adopting its order as the numbering. */
48
+ private showQueue;
49
+ /**
50
+ * One queue row. The two kinds of request READ DIFFERENTLY on purpose
51
+ * even though the server models both as a question awaiting the
52
+ * reporter: "somebody asked about your report" and "this is fixed,
53
+ * can you confirm it in play" are different jobs, and a play-tester
54
+ * skimming a list should be able to tell at a glance which one they
55
+ * are being asked for.
56
+ */
57
+ private renderItem;
31
58
  private list;
32
59
  /** One item: what it says, where it stands, and what the books said. */
33
60
  private row;
@@ -1,7 +1,16 @@
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, BACKLOG_STATUSES, } from '../utilities/backlog.js';
4
+ import { submitBacklog, fetchBacklog, postBacklogComment, BACKLOG_STATUSES, } from '../utilities/backlog.js';
5
+ import { noteBacklogOutcome } from '../utilities/playtester.js';
6
+ import { takeIndex } from '../utilities/fuzzy-match.js';
7
+ import { optionMark } from '../utilities/log-style.js';
8
+ import { loadReviewQueue, reviewSnapshot, reviewItemAt, markReviewAnswered, isReviewAnswered, } from '../utilities/backlog-review.js';
9
+ /** One line of somebody's report, kept to a skimmable width. */
10
+ function truncate(text, max) {
11
+ const flat = text.replace(/\s+/g, ' ').trim();
12
+ return flat.length <= max ? flat : `${flat.slice(0, max - 1)}…`;
13
+ }
5
14
  /**
6
15
  * THE BACKLOG -- play-tester feedback that somebody acts on.
7
16
  *
@@ -29,6 +38,16 @@ export class BacklogCommand extends Command {
29
38
  { usage: 'backlog <text>', short: 'File an item against this session.' },
30
39
  { usage: 'backlog list', short: 'The whole board, newest first.' },
31
40
  { usage: 'backlog list <status>', short: `Filter: ${BACKLOG_STATUSES.join(', ')}.` },
41
+ {
42
+ usage: 'backlog review',
43
+ short: 'What the board is waiting on YOU for, numbered.',
44
+ long: 'Items where somebody has asked you something and is waiting: a clarifying question about a report you filed, or a fix that has landed and wants confirming in play. Listed 1..n, oldest first.',
45
+ },
46
+ {
47
+ usage: 'backlog review <n> <your answer>',
48
+ short: 'Answer item n from that list.',
49
+ long: 'Posts your words against item n as an answer. The numbers come from the list you were last shown and do not move when you answer one, so you can work down them. "backlog review <n>" on its own reads that item in full without replying.',
50
+ },
32
51
  ];
33
52
  async execute(args = []) {
34
53
  // An anonymous runner's data never leaves the machine -- the same
@@ -44,6 +63,13 @@ export class BacklogCommand extends Command {
44
63
  if (args.length === 0 || sub === 'list') {
45
64
  return this.list(args[1]);
46
65
  }
66
+ // "review" is checked BEFORE the fall-through to file(), or
67
+ // answering an item would file a new one whose text begins with the
68
+ // word "review" -- the same shape as `backlog open` filing an item
69
+ // called "open", which is why list has subcommands at all.
70
+ if (sub === 'review') {
71
+ return this.review(args.slice(1));
72
+ }
47
73
  return this.file(args.join(' '));
48
74
  }
49
75
  async file(text) {
@@ -71,10 +97,128 @@ export class BacklogCommand extends Command {
71
97
  engineVersion: engineVersion(),
72
98
  platform: process.platform,
73
99
  });
100
+ // A real call classifies the account for free -- no second request.
101
+ noteBacklogOutcome(outcome);
74
102
  if (outcome !== 'ok')
75
103
  return this.explain(outcome);
76
104
  return `{cyan-fg}Filed. It'll come back checked against the books.${hint(` ("backlog list" reads the board.)`)}{/cyan-fg}`;
77
105
  }
106
+ /**
107
+ * THE REVIEW QUEUE (user request 2026-08-27). Bare "backlog review"
108
+ * lists what is waiting on you, numbered 1..n; "backlog review <n>
109
+ * <your words>" answers item n.
110
+ *
111
+ * The numbering is the delicate part and utilities/backlog-review.ts
112
+ * holds the invariant: a number resolves against the snapshot the
113
+ * player was SHOWN, never against a fresh fetch. Answering does not
114
+ * renumber the list on screen either.
115
+ */
116
+ async review(args) {
117
+ // Bare "backlog review": fetch, render, and adopt that order as the
118
+ // numbering. This is the ONLY place the queue is refetched.
119
+ if (args.length === 0)
120
+ return this.showQueue();
121
+ const queue = reviewSnapshot();
122
+ if (queue.length === 0) {
123
+ // No snapshot means no list they could have counted on, so we do
124
+ // not fetch one and hope the numbering matches what they had in
125
+ // mind. Show it and let them pick against what they can see.
126
+ const shown = await this.showQueue();
127
+ return `${shown}\n\n{white-fg}(Pick from the list above -- "backlog review <n> <your answer>".){/white-fg}`;
128
+ }
129
+ // ONE INDEX RESOLVER FOR THE WHOLE GAME (session-1's takeIndex).
130
+ // It is pure and holds no order, which it says out loud -- so the
131
+ // guarantee that this list has not reshuffled since it was printed
132
+ // stays MINE, and lives in utilities/backlog-review.ts. What it
133
+ // buys here is that "review 9" against a 3-item list refuses in the
134
+ // same words as picking the ninth exit or the ninth item on a
135
+ // vendor's shelf, and the remainder comes back VERBATIM -- this
136
+ // trailing text is a human's answer, not arguments.
137
+ const picked = takeIndex(args.join(' '), queue.length);
138
+ if (!picked.ok)
139
+ return `${picked.message}${hint(` "backlog review" shows the list again.`)}`;
140
+ const item = reviewItemAt(picked.at + 1);
141
+ if (!item)
142
+ return `There's no item ${picked.at + 1}. The list runs 1-${queue.length}.`;
143
+ const n = picked.at + 1;
144
+ const text = picked.rest;
145
+ if (text.length === 0) {
146
+ // A number on its own reads the item back rather than posting an
147
+ // empty answer -- most of the time that IS what they wanted.
148
+ return this.renderItem(item, n, { full: true });
149
+ }
150
+ const outcome = await postBacklogComment(item.id, text, {
151
+ kind: 'answer',
152
+ // The question is answered, so it is no longer awaiting them.
153
+ awaitingReporter: false,
154
+ runnerName: this.actor?.name,
155
+ });
156
+ noteBacklogOutcome(outcome);
157
+ if (outcome !== 'ok')
158
+ return this.explain(outcome);
159
+ markReviewAnswered(item.id);
160
+ const left = reviewSnapshot().filter(i => !isReviewAnswered(i.id)).length;
161
+ return [
162
+ `{cyan-fg}Answered item ${n}. It's on the record against your report.{/cyan-fg}`,
163
+ left > 0
164
+ ? `{white-fg}${left} still waiting on you -- the numbers above haven't moved.{/white-fg}`
165
+ : `{white-fg}That was the last one. Nothing else is waiting on you.{/white-fg}`,
166
+ ].join('\n');
167
+ }
168
+ /** Fetch and render the queue, adopting its order as the numbering. */
169
+ async showQueue() {
170
+ const { outcome, items } = await loadReviewQueue();
171
+ if (outcome !== 'ok' || !items)
172
+ return this.explain(outcome);
173
+ if (items.length === 0) {
174
+ return `Nothing's waiting on you. The board will say so when somebody needs a word back.`;
175
+ }
176
+ return [
177
+ `{cyan-fg}WAITING ON YOU{/cyan-fg}`,
178
+ ...items.map((it, i) => this.renderItem(it, i + 1, { full: false })),
179
+ hint(`"backlog review <n> <your answer>" replies. "backlog review <n>" alone reads one in full.`),
180
+ ].filter(Boolean).join('\n');
181
+ }
182
+ /**
183
+ * One queue row. The two kinds of request READ DIFFERENTLY on purpose
184
+ * even though the server models both as a question awaiting the
185
+ * reporter: "somebody asked about your report" and "this is fixed,
186
+ * can you confirm it in play" are different jobs, and a play-tester
187
+ * skimming a list should be able to tell at a glance which one they
188
+ * are being asked for.
189
+ */
190
+ renderItem(it, n, opts) {
191
+ // THE SERVER SAYS WHICH KIND; the status heuristic is only a
192
+ // fallback for a server too old to say. Deriving it from status was
193
+ // a client guess, and it guessed wrong for the obvious case: a
194
+ // clarifying question about an item that happens to be in-progress
195
+ // is still a question, not a request to go confirm a fix.
196
+ const validation = it.kind
197
+ ? it.kind === 'validation'
198
+ : it.status === 'complete' || it.status === 'in-review';
199
+ const lead = validation
200
+ ? `{cyan-fg}CAN YOU CONFIRM THIS IN PLAY?{/cyan-fg}`
201
+ : `{cyan-fg}QUESTION ABOUT YOUR REPORT{/cyan-fg}`;
202
+ const asker = it.asked?.by ? ` -- ${it.asked.by}` : '';
203
+ const yours = opts.full ? it.text : truncate(it.text, 72);
204
+ // optionMark, not a hand-rolled "1.", so this list sits in the same
205
+ // gutter as the exits, the shelves and the jobs board -- and so it
206
+ // keeps the promise that mark carries: a numbered row means the
207
+ // number works, and this one is resolved by the same takeIndex.
208
+ const rows = [`${optionMark(n)}${lead}${asker}`];
209
+ // `asked` is OPTIONAL on the wire. A review item should always have
210
+ // one -- and "should always" is how a render throws in front of a
211
+ // player. An item that arrives without one still lists, still
212
+ // numbers, and still takes an answer.
213
+ if (it.asked?.text)
214
+ rows.push(` {white-fg}"${it.asked.text}"{/white-fg}`);
215
+ rows.push(` {white-fg}your report: ${yours}{/white-fg}`);
216
+ // What changed, when the ask is to confirm that it did.
217
+ if (validation && it.commits?.length) {
218
+ rows.push(` {white-fg}fixed by: ${it.commits.slice(0, 3).join(', ')}{/white-fg}`);
219
+ }
220
+ return rows.join('\n');
221
+ }
78
222
  async list(statusArg) {
79
223
  let status;
80
224
  if (statusArg) {
@@ -85,6 +229,8 @@ export class BacklogCommand extends Command {
85
229
  status = wanted;
86
230
  }
87
231
  const { outcome, items } = await fetchBacklog(status);
232
+ // A real call classifies the account for free -- no second request.
233
+ noteBacklogOutcome(outcome);
88
234
  if (outcome !== 'ok' || !items)
89
235
  return this.explain(outcome);
90
236
  if (items.length === 0) {
@@ -130,6 +276,10 @@ export class BacklogCommand extends Command {
130
276
  switch (status) {
131
277
  case 'complete': return '{green-fg}[done]{/green-fg}';
132
278
  case 'in-progress': return '{cyan-fg}[wip] {/cyan-fg}';
279
+ // Fixed, and waiting on the reporter to confirm it in play. It
280
+ // used to fall through to the default and read "[open]" -- an
281
+ // item awaiting your word shown as one nobody had touched.
282
+ case 'in-review': return '{cyan-fg}[you?] {/cyan-fg}';
133
283
  case 'wont-fix': return '{cyan-fg}[no] {/cyan-fg}';
134
284
  default: return '{yellow-fg}[open]{/yellow-fg}';
135
285
  }
@@ -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,gBAAgB,GAE9C,MAAM,yBAAyB,CAAC;AAEjC;;;;;;;;;;;;;;;;;;;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;KACrF,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,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,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACnD,OAAO,6DAA6D,IAAI,CAAC,oCAAoC,CAAC,YAAY,CAAC;IAC7H,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,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,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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"}