@maka/maka-cli 5.64.0 → 5.65.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. package/bundle/typescript/package.json +1 -1
  2. package/bundle/typescript/src/commands/game/sideQuest/commands/backlog.d.ts +29 -2
  3. package/bundle/typescript/src/commands/game/sideQuest/commands/backlog.js +146 -1
  4. package/bundle/typescript/src/commands/game/sideQuest/commands/backlog.js.map +1 -1
  5. package/bundle/typescript/src/commands/game/sideQuest/commands/bluff.d.ts +40 -13
  6. package/bundle/typescript/src/commands/game/sideQuest/commands/bluff.js +107 -25
  7. package/bundle/typescript/src/commands/game/sideQuest/commands/bluff.js.map +1 -1
  8. package/bundle/typescript/src/commands/game/sideQuest/commands/breach.d.ts +11 -15
  9. package/bundle/typescript/src/commands/game/sideQuest/commands/breach.js +13 -16
  10. package/bundle/typescript/src/commands/game/sideQuest/commands/breach.js.map +1 -1
  11. package/bundle/typescript/src/commands/game/sideQuest/commands/buy.d.ts +8 -0
  12. package/bundle/typescript/src/commands/game/sideQuest/commands/buy.js +30 -2
  13. package/bundle/typescript/src/commands/game/sideQuest/commands/buy.js.map +1 -1
  14. package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.d.ts +40 -49
  15. package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.js +121 -160
  16. package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.js.map +1 -1
  17. package/bundle/typescript/src/commands/game/sideQuest/commands/cast.d.ts +7 -8
  18. package/bundle/typescript/src/commands/game/sideQuest/commands/cast.js +13 -13
  19. package/bundle/typescript/src/commands/game/sideQuest/commands/cast.js.map +1 -1
  20. package/bundle/typescript/src/commands/game/sideQuest/commands/cover.d.ts +30 -0
  21. package/bundle/typescript/src/commands/game/sideQuest/commands/cover.js +65 -0
  22. package/bundle/typescript/src/commands/game/sideQuest/commands/cover.js.map +1 -0
  23. package/bundle/typescript/src/commands/game/sideQuest/commands/dispel.d.ts +1 -1
  24. package/bundle/typescript/src/commands/game/sideQuest/commands/dispel.js +2 -2
  25. package/bundle/typescript/src/commands/game/sideQuest/commands/dispel.js.map +1 -1
  26. package/bundle/typescript/src/commands/game/sideQuest/commands/go.js +25 -3
  27. package/bundle/typescript/src/commands/game/sideQuest/commands/go.js.map +1 -1
  28. package/bundle/typescript/src/commands/game/sideQuest/commands/hack.d.ts +2 -3
  29. package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js +2 -2
  30. package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js.map +1 -1
  31. package/bundle/typescript/src/commands/game/sideQuest/commands/jobs.js +2 -1
  32. package/bundle/typescript/src/commands/game/sideQuest/commands/jobs.js.map +1 -1
  33. package/bundle/typescript/src/commands/game/sideQuest/commands/look.js +58 -2
  34. package/bundle/typescript/src/commands/game/sideQuest/commands/look.js.map +1 -1
  35. package/bundle/typescript/src/commands/game/sideQuest/commands/map.js +18 -4
  36. package/bundle/typescript/src/commands/game/sideQuest/commands/map.js.map +1 -1
  37. package/bundle/typescript/src/commands/game/sideQuest/commands/move.js +1 -1
  38. package/bundle/typescript/src/commands/game/sideQuest/commands/pick.d.ts +2 -3
  39. package/bundle/typescript/src/commands/game/sideQuest/commands/pick.js +2 -2
  40. package/bundle/typescript/src/commands/game/sideQuest/commands/pick.js.map +1 -1
  41. package/bundle/typescript/src/commands/game/sideQuest/commands/posture.d.ts +45 -0
  42. package/bundle/typescript/src/commands/game/sideQuest/commands/posture.js +115 -0
  43. package/bundle/typescript/src/commands/game/sideQuest/commands/posture.js.map +1 -0
  44. package/bundle/typescript/src/commands/game/sideQuest/commands/search.js +35 -24
  45. package/bundle/typescript/src/commands/game/sideQuest/commands/search.js.map +1 -1
  46. package/bundle/typescript/src/commands/game/sideQuest/commands/take.js +12 -0
  47. package/bundle/typescript/src/commands/game/sideQuest/commands/take.js.map +1 -1
  48. package/bundle/typescript/src/commands/game/sideQuest/commands/unlock.js +1 -1
  49. package/bundle/typescript/src/commands/game/sideQuest/commands/unlock.js.map +1 -1
  50. package/bundle/typescript/src/commands/game/sideQuest/commands/use.d.ts +17 -0
  51. package/bundle/typescript/src/commands/game/sideQuest/commands/use.js +136 -1
  52. package/bundle/typescript/src/commands/game/sideQuest/commands/use.js.map +1 -1
  53. package/bundle/typescript/src/commands/game/sideQuest/engine-version.d.ts +1 -1
  54. package/bundle/typescript/src/commands/game/sideQuest/engine-version.js +15 -1
  55. package/bundle/typescript/src/commands/game/sideQuest/engine-version.js.map +1 -1
  56. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.d.ts +82 -43
  57. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js +419 -263
  58. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js.map +1 -1
  59. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.js +82 -84
  60. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.js.map +1 -1
  61. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-seed-generator.d.ts +23 -4
  62. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-seed-generator.js +95 -79
  63. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-seed-generator.js.map +1 -1
  64. package/bundle/typescript/src/commands/game/sideQuest/factories/seed-migration.d.ts +30 -0
  65. package/bundle/typescript/src/commands/game/sideQuest/factories/seed-migration.js +176 -0
  66. package/bundle/typescript/src/commands/game/sideQuest/factories/seed-migration.js.map +1 -0
  67. package/bundle/typescript/src/commands/game/sideQuest/game.js +11 -5
  68. package/bundle/typescript/src/commands/game/sideQuest/game.js.map +1 -1
  69. package/bundle/typescript/src/commands/game/sideQuest/headless.js +24 -0
  70. package/bundle/typescript/src/commands/game/sideQuest/headless.js.map +1 -1
  71. package/bundle/typescript/src/commands/game/sideQuest/models/_index.d.ts +0 -1
  72. package/bundle/typescript/src/commands/game/sideQuest/models/_index.js +0 -1
  73. package/bundle/typescript/src/commands/game/sideQuest/models/_index.js.map +1 -1
  74. package/bundle/typescript/src/commands/game/sideQuest/models/device.d.ts +121 -0
  75. package/bundle/typescript/src/commands/game/sideQuest/models/device.js +145 -0
  76. package/bundle/typescript/src/commands/game/sideQuest/models/device.js.map +1 -0
  77. package/bundle/typescript/src/commands/game/sideQuest/models/door.d.ts +27 -8
  78. package/bundle/typescript/src/commands/game/sideQuest/models/door.js +15 -10
  79. package/bundle/typescript/src/commands/game/sideQuest/models/door.js.map +1 -1
  80. package/bundle/typescript/src/commands/game/sideQuest/models/npc.d.ts +81 -0
  81. package/bundle/typescript/src/commands/game/sideQuest/models/npc.js +132 -21
  82. package/bundle/typescript/src/commands/game/sideQuest/models/npc.js.map +1 -1
  83. package/bundle/typescript/src/commands/game/sideQuest/models/player.d.ts +68 -0
  84. package/bundle/typescript/src/commands/game/sideQuest/models/player.js +102 -0
  85. package/bundle/typescript/src/commands/game/sideQuest/models/player.js.map +1 -1
  86. package/bundle/typescript/src/commands/game/sideQuest/models/room.d.ts +32 -46
  87. package/bundle/typescript/src/commands/game/sideQuest/models/room.js +38 -63
  88. package/bundle/typescript/src/commands/game/sideQuest/models/room.js.map +1 -1
  89. package/bundle/typescript/src/commands/game/sideQuest/models/scene.d.ts +1 -4
  90. package/bundle/typescript/src/commands/game/sideQuest/models/scene.js +0 -22
  91. package/bundle/typescript/src/commands/game/sideQuest/models/scene.js.map +1 -1
  92. package/bundle/typescript/src/commands/game/sideQuest/scenes/scene1.json +78 -109
  93. package/bundle/typescript/src/commands/game/sideQuest/scenes/scene2.json +4 -101
  94. package/bundle/typescript/src/commands/game/sideQuest/types/save-file.d.ts +24 -0
  95. package/bundle/typescript/src/commands/game/sideQuest/types/seed/device-seed.d.ts +52 -0
  96. package/bundle/typescript/src/commands/game/sideQuest/types/seed/device-seed.js +2 -0
  97. package/bundle/typescript/src/commands/game/sideQuest/types/seed/device-seed.js.map +1 -0
  98. package/bundle/typescript/src/commands/game/sideQuest/types/seed/legacy-puzzle-seed.d.ts +63 -0
  99. package/bundle/typescript/src/commands/game/sideQuest/types/seed/legacy-puzzle-seed.js +2 -0
  100. package/bundle/typescript/src/commands/game/sideQuest/types/seed/legacy-puzzle-seed.js.map +1 -0
  101. package/bundle/typescript/src/commands/game/sideQuest/types/seed/player-seed.d.ts +6 -0
  102. package/bundle/typescript/src/commands/game/sideQuest/types/seed/room-seed.d.ts +4 -0
  103. package/bundle/typescript/src/commands/game/sideQuest/types/seed/scene-seed.d.ts +3 -2
  104. package/bundle/typescript/src/commands/game/sideQuest/types/shared/abstracts.d.ts +2 -28
  105. package/bundle/typescript/src/commands/game/sideQuest/types/shared/abstracts.js +1 -14
  106. package/bundle/typescript/src/commands/game/sideQuest/types/shared/abstracts.js.map +1 -1
  107. package/bundle/typescript/src/commands/game/sideQuest/ui.js +24 -0
  108. package/bundle/typescript/src/commands/game/sideQuest/ui.js.map +1 -1
  109. package/bundle/typescript/src/commands/game/sideQuest/utilities/affordances.d.ts +55 -0
  110. package/bundle/typescript/src/commands/game/sideQuest/utilities/affordances.js +36 -0
  111. package/bundle/typescript/src/commands/game/sideQuest/utilities/affordances.js.map +1 -0
  112. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-review.d.ts +45 -0
  113. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-review.js +116 -0
  114. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-review.js.map +1 -0
  115. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog.d.ts +67 -1
  116. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog.js +56 -1
  117. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog.js.map +1 -1
  118. package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.js +37 -4
  119. package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.js.map +1 -1
  120. package/bundle/typescript/src/commands/game/sideQuest/utilities/credentials.d.ts +26 -0
  121. package/bundle/typescript/src/commands/game/sideQuest/utilities/credentials.js +48 -0
  122. package/bundle/typescript/src/commands/game/sideQuest/utilities/credentials.js.map +1 -0
  123. package/bundle/typescript/src/commands/game/sideQuest/utilities/devices.d.ts +23 -0
  124. package/bundle/typescript/src/commands/game/sideQuest/utilities/devices.js +55 -0
  125. package/bundle/typescript/src/commands/game/sideQuest/utilities/devices.js.map +1 -0
  126. package/bundle/typescript/src/commands/game/sideQuest/utilities/fuzzy-match.d.ts +57 -2
  127. package/bundle/typescript/src/commands/game/sideQuest/utilities/fuzzy-match.js +46 -3
  128. package/bundle/typescript/src/commands/game/sideQuest/utilities/fuzzy-match.js.map +1 -1
  129. package/bundle/typescript/src/commands/game/sideQuest/utilities/log-style.d.ts +16 -0
  130. package/bundle/typescript/src/commands/game/sideQuest/utilities/log-style.js +18 -0
  131. package/bundle/typescript/src/commands/game/sideQuest/utilities/log-style.js.map +1 -1
  132. package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.js +68 -38
  133. package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.js.map +1 -1
  134. package/bundle/typescript/src/commands/game/sideQuest/utilities/room-grid.d.ts +3 -3
  135. package/bundle/typescript/src/commands/game/sideQuest/utilities/room-grid.js +3 -3
  136. package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.d.ts +36 -12
  137. package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.js +101 -27
  138. package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.js.map +1 -1
  139. package/bundle/typescript/src/commands/game/sideQuest/utilities/use-target.d.ts +88 -0
  140. package/bundle/typescript/src/commands/game/sideQuest/utilities/use-target.js +113 -0
  141. package/bundle/typescript/src/commands/game/sideQuest/utilities/use-target.js.map +1 -0
  142. package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js +54 -5
  143. package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js.map +1 -1
  144. package/bundle/typescript/src/maka.js +1 -1
  145. package/bundle/typescript/src/maka.js.map +1 -1
  146. package/bundle/typescript/src/tools/sdk-loader/relocate.d.ts +19 -2
  147. package/bundle/typescript/src/tools/sdk-loader/relocate.js +22 -2
  148. package/bundle/typescript/src/tools/sdk-loader/relocate.js.map +1 -1
  149. package/package.json +1 -1
  150. package/bundle/typescript/src/commands/game/sideQuest/commands/solve.d.ts +0 -6
  151. package/bundle/typescript/src/commands/game/sideQuest/commands/solve.js +0 -72
  152. package/bundle/typescript/src/commands/game/sideQuest/commands/solve.js.map +0 -1
  153. package/bundle/typescript/src/commands/game/sideQuest/factories/puzzle-factory.d.ts +0 -6
  154. package/bundle/typescript/src/commands/game/sideQuest/factories/puzzle-factory.js +0 -26
  155. package/bundle/typescript/src/commands/game/sideQuest/factories/puzzle-factory.js.map +0 -1
  156. package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.d.ts +0 -152
  157. package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.js +0 -393
  158. package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.js.map +0 -1
  159. package/bundle/typescript/src/commands/game/sideQuest/types/seed/puzzle-seed.d.ts +0 -28
  160. package/bundle/typescript/src/commands/game/sideQuest/types/seed/puzzle-seed.js +0 -2
  161. package/bundle/typescript/src/commands/game/sideQuest/types/seed/puzzle-seed.js.map +0 -1
@@ -7,7 +7,7 @@ import { Logger } from '../utilities/logger.js';
7
7
  import { GenerationCapture } from '../utilities/generation-capture.js';
8
8
  import { fetchCanonContext } from '../utilities/canon-lore.js';
9
9
  import { SceneSynthesizer } from './scene-factory.js';
10
- import { buildSkeletonPrompt, buildRoomsPrompt, buildNpcsPrompt, buildPuzzlesPrompt, buildItemsPrompt, parseJsonReply, validateSkeleton, normalizeSkeleton, assembleScene, classifyRepair, canBypassUnaided, } from './scene-chunks.js';
10
+ import { buildSkeletonPrompt, buildRoomsPrompt, buildNpcsPrompt, buildDevicesPrompt, buildItemsPrompt, parseJsonReply, validateSkeleton, normalizeSkeleton, assembleScene, classifyRepair, } from './scene-chunks.js';
11
11
  // The fixer name convention and the player dossier live with the prompt
12
12
  // builders now (see scene-chunks.ts); re-exported so the existing
13
13
  // import sites (call.ts, game.ts) keep working unchanged.
@@ -44,7 +44,7 @@ export class SceneSeedGenerator {
44
44
  static SKELETON_TOKENS = 4000;
45
45
  static ROOMS_TOKENS = 3000;
46
46
  static NPCS_TOKENS = 6000;
47
- static PUZZLES_TOKENS = 3000;
47
+ static DEVICES_TOKENS = 3000;
48
48
  static ITEMS_TOKENS = 6000;
49
49
  /**
50
50
  * CHUNKED generation (see scene-chunks.ts for the shapes and prompts):
@@ -146,13 +146,13 @@ export class SceneSeedGenerator {
146
146
  else if (target === 'npcs') {
147
147
  details.npcs = await this.requestChunk('npcs', buildNpcsPrompt(skeleton, message), this.NPCS_TOKENS, logger, pipeline, round);
148
148
  }
149
- else if (target === 'puzzles') {
150
- details.puzzles = await this.requestChunk('puzzles', buildPuzzlesPrompt(skeleton, message), this.PUZZLES_TOKENS, logger, pipeline, round);
149
+ else if (target === 'devices') {
150
+ details.devices = await this.requestChunk('devices', buildDevicesPrompt(skeleton, message), this.DEVICES_TOKENS, logger, pipeline, round);
151
151
  // New passphrases invalidate the baked-in clue text.
152
- details.items = await this.requestChunk('items', buildItemsPrompt(skeleton, details.puzzles), this.ITEMS_TOKENS, logger, pipeline, round);
152
+ details.items = await this.requestChunk('items', buildItemsPrompt(skeleton, details.devices), this.ITEMS_TOKENS, logger, pipeline, round);
153
153
  }
154
154
  else {
155
- details.items = await this.requestChunk('items', buildItemsPrompt(skeleton, details.puzzles, message), this.ITEMS_TOKENS, logger, pipeline, round);
155
+ details.items = await this.requestChunk('items', buildItemsPrompt(skeleton, details.devices, message), this.ITEMS_TOKENS, logger, pipeline, round);
156
156
  }
157
157
  }
158
158
  }
@@ -183,10 +183,10 @@ export class SceneSeedGenerator {
183
183
  const reply = await AI.ask(prompt, { maxTokens: this.SKELETON_TOKENS });
184
184
  try {
185
185
  const skeleton = parseJsonReply(reply);
186
- skeleton.puzzles = skeleton.puzzles ?? [];
186
+ skeleton.devices = skeleton.devices ?? [];
187
187
  // Captured BEFORE normalize mutates it: training on repaired
188
188
  // output teaches the repairs, not the shape we actually want.
189
- const notes = normalizeSkeleton(skeleton, player);
189
+ const notes = normalizeSkeleton(skeleton);
190
190
  for (const note of notes) {
191
191
  logger.write(`SceneSeedGenerator: ${note}`);
192
192
  }
@@ -199,7 +199,7 @@ export class SceneSeedGenerator {
199
199
  stage: 'skeleton', outcome: 'accepted', pipeline, attempt,
200
200
  prompt, reply, notes,
201
201
  });
202
- logger.write(`SceneSeedGenerator: skeleton "${skeleton.name}" -- ${skeleton.rooms.length} rooms, ${skeleton.npcs.length} npcs, ${skeleton.puzzles.length} puzzles, ${skeleton.items.length} items`);
202
+ logger.write(`SceneSeedGenerator: skeleton "${skeleton.name}" -- ${skeleton.rooms.length} rooms, ${skeleton.npcs.length} npcs, ${skeleton.devices.length} devices, ${skeleton.items.length} items`);
203
203
  return skeleton;
204
204
  }
205
205
  catch (err) {
@@ -255,15 +255,15 @@ export class SceneSeedGenerator {
255
255
  * must contain its puzzle's exact passphrase.
256
256
  */
257
257
  static async requestAllDetails(skeleton, logger, pipeline) {
258
- const [rooms, npcs, puzzles] = await Promise.all([
258
+ const [rooms, npcs, devices] = await Promise.all([
259
259
  this.requestChunk('rooms', buildRoomsPrompt(skeleton), this.ROOMS_TOKENS, logger, pipeline),
260
260
  this.requestChunk('npcs', buildNpcsPrompt(skeleton), this.NPCS_TOKENS, logger, pipeline),
261
- skeleton.puzzles.length > 0
262
- ? this.requestChunk('puzzles', buildPuzzlesPrompt(skeleton), this.PUZZLES_TOKENS, logger, pipeline)
261
+ skeleton.devices.length > 0
262
+ ? this.requestChunk('devices', buildDevicesPrompt(skeleton), this.DEVICES_TOKENS, logger, pipeline)
263
263
  : Promise.resolve([]),
264
264
  ]);
265
- const items = await this.requestChunk('items', buildItemsPrompt(skeleton, puzzles), this.ITEMS_TOKENS, logger, pipeline);
266
- return { rooms, npcs, puzzles, items };
265
+ const items = await this.requestChunk('items', buildItemsPrompt(skeleton, devices), this.ITEMS_TOKENS, logger, pipeline);
266
+ return { rooms, npcs, devices, items };
267
267
  }
268
268
  /**
269
269
  * Saves a validated scene alongside that session's game log (same
@@ -312,16 +312,15 @@ export class SceneSeedGenerator {
312
312
  // throws on those. This only checks the one semantic rule synthesis
313
313
  // can't: the item must actually be findable, not already delivered.
314
314
  await SceneSynthesizer.synthesizeFromJson(candidate, throwawayPlayer, false);
315
- this.validateClueItems(candidate, player);
315
+ this.validateClueItems(candidate);
316
316
  this.validateWinCondition(candidate, player);
317
317
  this.validateClient(candidate);
318
318
  this.validateMatrixDefense(candidate);
319
319
  this.validateStartingItems(candidate, player);
320
- this.validateBypassTypes(candidate);
321
- this.validatePuzzleChain(candidate);
320
+ this.clampDeviceKinds(candidate);
322
321
  this.validateDoorKeys(candidate);
323
322
  this.validateRewardItemPlacement(candidate);
324
- this.validatePuzzlePlacement(candidate);
323
+ this.validateDevicePlacement(candidate);
325
324
  }
326
325
  /**
327
326
  * The one structural guarantee every other check assumes: every room,
@@ -363,32 +362,43 @@ export class SceneSeedGenerator {
363
362
  * "the same" barrier -- solvable in the room without ever needing to open
364
363
  * the door, or vice versa.
365
364
  */
366
- static validatePuzzlePlacement(candidate) {
365
+ /**
366
+ * An exit's device must live in the room that declares the exit.
367
+ *
368
+ * THE ROOM-OWNED RULE MADE ENFORCEABLE rather than merely true. Its
369
+ * predecessor validated "placed in a room AND on a door", which
370
+ * room ownership makes unrepresentable -- but the same ownership
371
+ * makes a NEW incoherence expressible: an exit naming a device that
372
+ * stands somewhere else. It fails exactly like a shared door: the way
373
+ * locks, and the mechanism is in a room the player has no reason to
374
+ * look in.
375
+ */
376
+ static validateDevicePlacement(candidate) {
367
377
  const rooms = candidate.rooms ?? [];
368
- const puzzles = candidate.puzzles ?? [];
369
- const puzzleNames = new Set(puzzles.map(p => p.name));
370
- const exitReferences = new Map();
378
+ const owner = new Map();
379
+ for (const room of rooms) {
380
+ for (const d of room.devices ?? [])
381
+ owner.set(d.name, room.name);
382
+ }
383
+ const doorRefs = new Map();
371
384
  for (const room of rooms) {
372
385
  for (const exit of room.exits ?? []) {
373
- if (!exit.puzzle)
386
+ const named = exit.device;
387
+ if (!named)
374
388
  continue;
375
- if (!puzzleNames.has(exit.puzzle)) {
376
- throw new Error(`Exit from "${room.name}" to "${exit.targetRoom}" references puzzle "${exit.puzzle}", which doesn't match any "puzzles[].name".`);
389
+ const home = owner.get(named);
390
+ if (!home) {
391
+ throw new Error(`Exit from "${room.name}" to "${exit.targetRoom}" references device "${named}", which doesn't exist in any room.`);
392
+ }
393
+ if (home !== room.name) {
394
+ throw new Error(`Exit from "${room.name}" is held by device "${named}", which stands in "${home}" -- a device can only hold a door of its OWN room. Move the device, or declare the exit from "${home}".`);
377
395
  }
378
- exitReferences.set(exit.puzzle, (exitReferences.get(exit.puzzle) ?? 0) + 1);
396
+ doorRefs.set(named, (doorRefs.get(named) ?? 0) + 1);
379
397
  }
380
398
  }
381
- for (const puzzle of puzzles) {
382
- const doorCount = exitReferences.get(puzzle.name) ?? 0;
383
- if (puzzle.room && doorCount > 0) {
384
- throw new Error(`Puzzle "${puzzle.name}" is placed both in room "${puzzle.room}" AND on a door (via "exits[].puzzle") -- it must be exactly one or the other. Remove one placement.`);
385
- }
386
- if (!puzzle.room && doorCount === 0) {
387
- throw new Error(`Puzzle "${puzzle.name}" isn't placed anywhere -- set its "room", or reference it from an "exits[].puzzle".`);
388
- }
389
- if (doorCount > 1) {
390
- throw new Error(`Puzzle "${puzzle.name}" is referenced by more than one "exits[].puzzle" -- a single puzzle can only guard one door.`);
391
- }
399
+ for (const [name, count] of doorRefs) {
400
+ if (count > 1)
401
+ throw new Error(`Device "${name}" is referenced by ${count} exits -- a device can only hold one door.`);
392
402
  }
393
403
  }
394
404
  /**
@@ -564,25 +574,6 @@ export class SceneSeedGenerator {
564
574
  * that doesn't exist or a cycle. Chains of any length are fine -- only
565
575
  * missing references and cycles are rejected.
566
576
  */
567
- static validatePuzzleChain(candidate) {
568
- const puzzles = candidate.puzzles ?? [];
569
- const byName = new Map(puzzles.map(p => [p.name, p]));
570
- for (const start of puzzles) {
571
- const visited = new Set([start.name]);
572
- let current = start;
573
- while (current.requiresPuzzle) {
574
- const next = byName.get(current.requiresPuzzle);
575
- if (!next) {
576
- throw new Error(`Puzzle "${current.name}" requires puzzle "${current.requiresPuzzle}", which doesn't exist.`);
577
- }
578
- if (visited.has(next.name)) {
579
- throw new Error(`Puzzle chain starting at "${start.name}" cycles back to "${next.name}".`);
580
- }
581
- visited.add(next.name);
582
- current = next;
583
- }
584
- }
585
- }
586
577
  /**
587
578
  * Every AI-generated scene must have a completable win condition -- this
588
579
  * is what the "continue into a new job" loop hooks into. Also guards
@@ -677,11 +668,23 @@ export class SceneSeedGenerator {
677
668
  * bypass route silently doesn't exist -- reject it with the exact
678
669
  * allowed list instead.
679
670
  */
680
- static validateBypassTypes(candidate) {
681
- const allowed = new Set(['lockpick', 'hack', 'spell', 'con']);
682
- for (const puzzle of candidate.puzzles ?? []) {
683
- if (puzzle.bypassType && !allowed.has(puzzle.bypassType)) {
684
- throw new Error(`Puzzle "${puzzle.name}" has bypassType "${puzzle.bypassType}", which isn't valid -- use exactly one of "lockpick", "hack", "spell", "con" (lowercase), or omit the field for a barrier with no bypass route.`);
671
+ /**
672
+ * Device kinds, CLAMPED rather than rejected.
673
+ *
674
+ * This used to throw on an unrecognised bypassType. A kind we cannot
675
+ * read is still a device, and rejecting a whole draft -- 20-40s of
676
+ * generation -- over one misspelled word is a worse outcome than a
677
+ * panel where the model meant something else. assembleScene does the
678
+ * same clamp; this one catches a seed that reached us another way.
679
+ */
680
+ static clampDeviceKinds(candidate) {
681
+ const allowed = new Set(['lock', 'panel', 'ward']);
682
+ for (const room of candidate.rooms ?? []) {
683
+ for (const device of room.devices ?? []) {
684
+ if (device.kind && !allowed.has(device.kind)) {
685
+ Logger.getInstance().write(`scene-seed-generator: device "${device.name}" had kind "${device.kind}"; clamped to "panel".`);
686
+ device.kind = 'panel';
687
+ }
685
688
  }
686
689
  }
687
690
  }
@@ -753,25 +756,38 @@ export class SceneSeedGenerator {
753
756
  * documentation -- finding it and seeing its name on screen already
754
757
  * reveals the answer. A Book clue is still required for anything else.
755
758
  */
756
- static validateClueItems(candidate, player) {
759
+ static validateClueItems(candidate) {
757
760
  const items = candidate.items ?? [];
758
- for (const puzzle of candidate.puzzles ?? []) {
759
- const requiredPhrase = (puzzle.requiredPhrase ?? '').toLowerCase();
760
- const hasBookClue = items.some(item => item.category === 'Book' &&
761
- item.room &&
762
- item.room !== puzzle.room &&
763
- item.details &&
764
- item.details.trim().length > 0 &&
765
- (!requiredPhrase || item.details.toLowerCase().includes(requiredPhrase)));
766
- const hasNamedItemClue = requiredPhrase.length > 0 && items.some(item => item.room &&
767
- item.room !== puzzle.room &&
768
- item.name.toLowerCase() === requiredPhrase);
769
- // Loosened against the dossier: a barrier whose bypassType matches
770
- // the runner's own trained means (a lockpick door for a master
771
- // locksmith) doesn't strictly need its credential written down --
772
- // the skill IS the way past. Strict rule stays without a dossier.
773
- if (!hasBookClue && !hasNamedItemClue && !canBypassUnaided(player, puzzle.bypassType)) {
774
- throw new Error(`Puzzle "${puzzle.name}" has no discoverable clue: no Book-category item in a different room whose "details" contains the answer "${puzzle.requiredPhrase}", no item elsewhere literally named "${puzzle.requiredPhrase}", and its bypassType (${puzzle.bypassType ?? 'none'}) is not a means this runner reliably has. Every puzzle needs one of the three.`);
761
+ for (const room of candidate.rooms ?? []) {
762
+ for (const device of room.devices ?? []) {
763
+ // ONLY A PANEL HAS A CODE TO WRITE DOWN. A lock's findable way
764
+ // through is its key, and a ward has no findable answer at all
765
+ // -- it is refused at skeleton validation when nobody can
766
+ // dispel, rather than asked for a clue it can never have.
767
+ if ((device.kind ?? 'panel') !== 'panel')
768
+ continue;
769
+ const code = (device.code ?? '').toLowerCase();
770
+ if (!code)
771
+ continue;
772
+ const hasBookClue = items.some(item => item.category === 'Book' &&
773
+ item.room &&
774
+ item.room !== room.name &&
775
+ item.details &&
776
+ item.details.trim().length > 0 &&
777
+ item.details.toLowerCase().includes(code));
778
+ // A code that IS an item's own name needs no separate
779
+ // documentation: finding it and seeing its name on screen
780
+ // already reveals the answer.
781
+ const hasNamedItemClue = items.some(item => item.room && item.room !== room.name && item.name.toLowerCase() === code);
782
+ // UNCONDITIONAL NOW. The old version waived this when the
783
+ // runner's own skill matched the barrier -- which made the most
784
+ // common generation failure on record depend on WHO was
785
+ // playing, and so look like random flakiness. A code is
786
+ // findable for anyone; the decker who did not need it loses
787
+ // nothing by its existing.
788
+ if (!hasBookClue && !hasNamedItemClue) {
789
+ throw new Error(`Panel "${device.name}" has no discoverable clue: no Book-category item in a different room whose "details" contains the code "${device.code}", and no item elsewhere literally named "${device.code}". Every panel's code must be written down somewhere findable.`);
790
+ }
775
791
  }
776
792
  }
777
793
  }
@@ -1 +1 @@
1
- {"version":3,"file":"scene-seed-generator.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/factories/scene-seed-generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scene-seed-generator.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/factories/scene-seed-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import { ISceneSeedJson } from '../types/seed/scene-seed.js';
2
+ /**
3
+ * LEGACY SEEDS BECOME DEVICES AND GUARDS.
4
+ *
5
+ * Every seed the engine has ever written or generated carries
6
+ * `puzzles[]`. They live in shipped JSON, in saved games, in the hub
7
+ * seed EMBEDDED in every save, and in a pending run's embedded seed --
8
+ * so there is no version of this that only touches new content.
9
+ *
10
+ * This runs as line 1 of SceneSynthesizer.synthesizeFromJson, which is
11
+ * the single choke point every one of those paths already goes through.
12
+ * One implementation covers static JSON, AI-generated seeds, resumed
13
+ * saves, embedded hub seeds and embedded pending runs, and no caller
14
+ * has to remember to ask.
15
+ *
16
+ * PURE AND IDEMPOTENT. It returns a new object and never mutates its
17
+ * input, and migrate(migrate(x)) === migrate(x) -- which matters
18
+ * because a migrated seed gets SAVED, then migrated again on the next
19
+ * load, for as long as that character lives.
20
+ */
21
+ /** What a puzzle became, for the log line. */
22
+ type Fate = 'person' | 'door-device' | 'room-device' | 'orphan';
23
+ export interface IMigrationReport {
24
+ seed: ISceneSeedJson;
25
+ /** puzzle name -> what it became. Exposed for tests and logging. */
26
+ fates: Map<string, Fate>;
27
+ }
28
+ export declare function migrateLegacySeed(json: ISceneSeedJson): ISceneSeedJson;
29
+ export declare function migrateLegacySeedWithReport(json: ISceneSeedJson): IMigrationReport;
30
+ export {};
@@ -0,0 +1,176 @@
1
+ import { Logger } from '../utilities/logger.js';
2
+ /**
3
+ * KIND, from the old bypassType (rule 4).
4
+ *
5
+ * 'con' is deliberately NOT a device kind. A barrier that was "really a
6
+ * person" was a category error -- see the PERSON rule below, which
7
+ * catches the ones that can be people. Any that cannot become panels,
8
+ * because a panel is the kind that can carry a code, and a code is what
9
+ * such a barrier always had.
10
+ */
11
+ function kindFor(bypassType) {
12
+ switch (bypassType) {
13
+ case 'lockpick': return 'lock';
14
+ case 'spell': return 'ward';
15
+ case 'hack': return 'panel';
16
+ // Absent, 'con', or anything unrecognised.
17
+ default: return 'panel';
18
+ }
19
+ }
20
+ /** A device's opening prose, preferring what the seed already wrote. */
21
+ function openLine(p) {
22
+ return p.successMessage || 'It opens.';
23
+ }
24
+ function refuseLine(p) {
25
+ return p.failureMessage || 'Nothing happens.';
26
+ }
27
+ /**
28
+ * Rule 6: a barrier with no phrase, no item and no forcing route is
29
+ * unopenable. That is a softlock, not a puzzle, so it gets a code --
30
+ * loudly, because a generated scene producing one is a generation bug
31
+ * worth seeing in the log rather than a thing to paper over silently.
32
+ */
33
+ function synthesiseCode(name) {
34
+ let hash = 0;
35
+ for (const ch of name)
36
+ hash = (hash * 31 + ch.charCodeAt(0)) % 10000;
37
+ return String(hash).padStart(4, '0');
38
+ }
39
+ export function migrateLegacySeed(json) {
40
+ return migrateLegacySeedWithReport(json).seed;
41
+ }
42
+ export function migrateLegacySeedWithReport(json) {
43
+ const fates = new Map();
44
+ const puzzles = json.puzzles ?? [];
45
+ // IDEMPOTENCE: a seed already migrated has no puzzles left to move,
46
+ // so the whole pass is a copy. Checked first so a re-migrated seed
47
+ // never re-logs or re-synthesises anything.
48
+ if (puzzles.length === 0) {
49
+ return { seed: { ...json, puzzles: [] }, fates };
50
+ }
51
+ const log = Logger.getInstance();
52
+ // DEEP enough to own what we edit. A shallow copy shares the exits
53
+ // ARRAY and the exit OBJECTS, and this pass deletes exits[].puzzle --
54
+ // which would reach back into the caller's seed. Caught by the
55
+ // does-not-mutate test, which is exactly why that test exists: the
56
+ // damage is invisible on the first migration and only shows when the
57
+ // same seed object is migrated twice or read afterwards.
58
+ const rooms = (json.rooms ?? []).map(r => ({
59
+ ...r,
60
+ exits: (r.exits ?? []).map(e => ({ ...e })),
61
+ devices: [...(r.devices ?? [])],
62
+ }));
63
+ const npcs = (json.npcs ?? []).map(n => ({ ...n, player: { ...n.player } }));
64
+ const roomByName = new Map(rooms.map(r => [r.name, r]));
65
+ /** Every exit across the scene that names this puzzle. */
66
+ const exitsFor = (puzzleName) => rooms.flatMap(r => (r.exits ?? [])
67
+ .filter(e => e.puzzle === puzzleName)
68
+ .map(e => ({ room: r, exit: e })));
69
+ for (const p of puzzles) {
70
+ const guardedExits = exitsFor(p.name);
71
+ // ---- RULE 7: concepts that do not survive the move. -------------
72
+ // Logged individually so a scene that quietly loses a beat says so.
73
+ if (p.requiresPuzzle) {
74
+ log.write(`seed-migration: "${p.name}" drops requiresPuzzle "${p.requiresPuzzle}" -- prerequisites are gone; the thing that must happen first now blocks by being locked or by standing there.`);
75
+ }
76
+ if (p.lockedMessage)
77
+ log.write(`seed-migration: "${p.name}" drops lockedMessage (no prerequisite to refuse for).`);
78
+ if (p.hobbyTags?.length)
79
+ log.write(`seed-migration: "${p.name}" drops hobbyTags.`);
80
+ // ---- RULE 1: PERSON. --------------------------------------------
81
+ // The barrier that was really somebody. One exit names it, that
82
+ // exit has an atSpot, and an NPC starts at that room and spot --
83
+ // which is to say the seed already described a person standing in
84
+ // the doorway, and the puzzle was a lock painted onto them.
85
+ //
86
+ // No device at all, and the door stays UNLOCKED: the body is the
87
+ // barrier, so removing the body opens the way. A locked door as
88
+ // well would be a second barrier nobody wrote.
89
+ if (guardedExits.length === 1) {
90
+ const { room, exit } = guardedExits[0];
91
+ const spot = exit.atSpot;
92
+ const guard = spot
93
+ ? npcs.find(n => n.player.startLocation === room.name && n.player.startSpot === spot)
94
+ : undefined;
95
+ if (guard) {
96
+ guard.player.guarding = true;
97
+ // The phrase is DISCARDED, not carried onto the guard (user
98
+ // ruling 2026-08-27: guards have no passphrase -- the way past
99
+ // a person is social or violent, full stop). A person standing
100
+ // where a lock used to be does not inherit the lock's
101
+ // credential; that was the last place the two gate types still
102
+ // blurred into each other.
103
+ //
104
+ // The phrase is logged VERBATIM so that someone playtesting
105
+ // scene1 and wondering where "the silver dragon says" went can
106
+ // grep for it and land on the line that explains it.
107
+ if (p.requiredPhrase) {
108
+ log.write(`seed-migration: "${p.name}" -> PERSON; its phrase ("${p.requiredPhrase}") is discarded -- a guard has no pass to give up.`);
109
+ }
110
+ delete exit.puzzle;
111
+ fates.set(p.name, 'person');
112
+ log.write(`seed-migration: "${p.name}" -> PERSON. ${guard.player.name} guards ${room.name}'s ${exit.direction} doorway; no device, door unlocked.`);
113
+ continue;
114
+ }
115
+ }
116
+ // ---- RULE 4 + 5: kind, and who may carry a code. ----------------
117
+ const kind = kindFor(p.bypassType);
118
+ // A code ONLY belongs on a panel. On a lock it is dropped: you
119
+ // cannot talk at a mechanical lock. Pick-only is a real route, so
120
+ // this does not strand it.
121
+ let code = kind === 'panel' ? p.requiredPhrase : undefined;
122
+ if (kind !== 'panel' && p.requiredPhrase) {
123
+ log.write(`seed-migration: "${p.name}" is a ${kind}; dropping its phrase -- you can't talk at a mechanical lock. It opens by key or by force.`);
124
+ }
125
+ // ---- RULE 6: orphans. -------------------------------------------
126
+ const hasRoute = !!code || !!p.requiredItem || kind === 'lock' || kind === 'ward';
127
+ if (!hasRoute) {
128
+ code = synthesiseCode(p.name);
129
+ fates.set(p.name, 'orphan');
130
+ log.error(`seed-migration: "${p.name}" had NO route at all -- no phrase, no item, no forcing verb. Synthesised code ${code} so it is not a softlock. This is a generation bug worth fixing upstream.`);
131
+ }
132
+ const device = {
133
+ name: p.name,
134
+ // MANDATORY (see device-seed.ts): an absent riddle used to render
135
+ // the literal string "undefined" into an NPC's prompt.
136
+ description: p.riddle || `${p.name} -- sealed.`,
137
+ kind,
138
+ code,
139
+ keyItem: p.requiredItem,
140
+ grantsItem: p.rewardItem,
141
+ atSpot: p.atSpot,
142
+ guardsExit: p.guardsExit,
143
+ footprint: p.footprint,
144
+ openMessage: openLine(p),
145
+ refuseMessage: refuseLine(p),
146
+ };
147
+ // ---- RULE 2: DOOR DEVICE. ---------------------------------------
148
+ // Referenced by one exit and rule 1 did not fire. The device stands
149
+ // in the DECLARING room -- the side that wrote the exit -- because
150
+ // that is the room you must be standing in to touch it. The door
151
+ // starts LOCKED and this device is what unlocks it.
152
+ if (guardedExits.length === 1) {
153
+ const { room, exit } = guardedExits[0];
154
+ device.opensExit = exit.direction;
155
+ device.atSpot = device.atSpot ?? exit.atSpot;
156
+ roomByName.get(room.name)?.devices.push(device);
157
+ delete exit.puzzle;
158
+ fates.set(p.name, fates.get(p.name) ?? 'door-device');
159
+ log.write(`seed-migration: "${p.name}" -> ${kind} DEVICE in ${room.name}, opens ${exit.direction}. Door starts locked.`);
160
+ continue;
161
+ }
162
+ // ---- RULE 3: ROOM DEVICE. ---------------------------------------
163
+ if (p.room && roomByName.has(p.room)) {
164
+ roomByName.get(p.room).devices.push(device);
165
+ fates.set(p.name, fates.get(p.name) ?? 'room-device');
166
+ log.write(`seed-migration: "${p.name}" -> ${kind} DEVICE in ${p.room}${device.atSpot ? ` at the ${device.atSpot}` : ''}${device.grantsItem ? `, grants ${device.grantsItem}` : ''}.`);
167
+ continue;
168
+ }
169
+ // Referenced by several exits, or placed nowhere at all. Both were
170
+ // already invalid under the old validators; say so rather than
171
+ // dropping the content on the floor silently.
172
+ log.error(`seed-migration: "${p.name}" is placed in no room and guards ${guardedExits.length} exits -- cannot site it. Dropped.`);
173
+ }
174
+ return { seed: { ...json, rooms, npcs, puzzles: [] }, fates };
175
+ }
176
+ //# sourceMappingURL=seed-migration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seed-migration.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/factories/seed-migration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAkChD;;;;;;;;GAQG;AACH,SAAS,OAAO,CAAC,UAA8B;IAC7C,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,UAAU,CAAC,CAAC,OAAO,MAAM,CAAC;QAC/B,KAAK,OAAO,CAAC,CAAC,OAAO,MAAM,CAAC;QAC5B,KAAK,MAAM,CAAC,CAAC,OAAO,OAAO,CAAC;QAC5B,2CAA2C;QAC3C,OAAO,CAAC,CAAC,OAAO,OAAO,CAAC;IAC1B,CAAC;AACH,CAAC;AAED,wEAAwE;AACxE,SAAS,QAAQ,CAAC,CAAwB;IACxC,OAAO,CAAC,CAAC,cAAc,IAAI,WAAW,CAAC;AACzC,CAAC;AAED,SAAS,UAAU,CAAC,CAAwB;IAC1C,OAAO,CAAC,CAAC,cAAc,IAAI,kBAAkB,CAAC;AAChD,CAAC;AAED;;;;;GAKG;AACH,SAAS,cAAc,CAAC,IAAY;IAClC,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,MAAM,EAAE,IAAI,IAAI;QAAE,IAAI,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IACrE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAoB;IACpD,OAAO,2BAA2B,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,IAAoB;IAC9D,MAAM,KAAK,GAAG,IAAI,GAAG,EAAgB,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;IACnC,oEAAoE;IACpE,mEAAmE;IACnE,4CAA4C;IAC5C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;IACnD,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IACjC,mEAAmE;IACnE,sEAAsE;IACtE,+DAA+D;IAC/D,mEAAmE;IACnE,qEAAqE;IACrE,yDAAyD;IACzD,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACzC,GAAG,CAAC;QACJ,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QAC3C,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;KAChC,CAAC,CAAC,CAAC;IACJ,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IAC7E,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAExD,0DAA0D;IAC1D,MAAM,QAAQ,GAAG,CAAC,UAAkB,EAAE,EAAE,CACtC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;SAC/B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC;SACpC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAEvC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAEtC,oEAAoE;QACpE,oEAAoE;QACpE,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;YACrB,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,IAAI,2BAA2B,CAAC,CAAC,cAAc,gHAAgH,CAAC,CAAC;QACnM,CAAC;QACD,IAAI,CAAC,CAAC,aAAa;YAAE,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,IAAI,wDAAwD,CAAC,CAAC;QACnH,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM;YAAE,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,IAAI,oBAAoB,CAAC,CAAC;QAEnF,oEAAoE;QACpE,gEAAgE;QAChE,iEAAiE;QACjE,kEAAkE;QAClE,4DAA4D;QAC5D,EAAE;QACF,iEAAiE;QACjE,gEAAgE;QAChE,+CAA+C;QAC/C,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YACvC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;YACzB,MAAM,KAAK,GAAG,IAAI;gBAChB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,KAAK,IAAI,CAAC;gBACrF,CAAC,CAAC,SAAS,CAAC;YACd,IAAI,KAAK,EAAE,CAAC;gBACV,KAAK,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;gBAC7B,4DAA4D;gBAC5D,+DAA+D;gBAC/D,+DAA+D;gBAC/D,sDAAsD;gBACtD,+DAA+D;gBAC/D,2BAA2B;gBAC3B,EAAE;gBACF,4DAA4D;gBAC5D,+DAA+D;gBAC/D,qDAAqD;gBACrD,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;oBACrB,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,IAAI,6BAA6B,CAAC,CAAC,cAAc,oDAAoD,CAAC,CAAC;gBACzI,CAAC;gBACD,OAAO,IAAI,CAAC,MAAM,CAAC;gBACnB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;gBAC5B,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,IAAI,gBAAgB,KAAK,CAAC,MAAM,CAAC,IAAI,WAAW,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,SAAS,qCAAqC,CAAC,CAAC;gBACpJ,SAAS;YACX,CAAC;QACH,CAAC;QAED,oEAAoE;QACpE,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QACnC,+DAA+D;QAC/D,kEAAkE;QAClE,2BAA2B;QAC3B,IAAI,IAAI,GAAG,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3D,IAAI,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;YACzC,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,IAAI,UAAU,IAAI,4FAA4F,CAAC,CAAC;QAClJ,CAAC;QAED,oEAAoE;QACpE,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,CAAC;QAClF,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,IAAI,GAAG,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC9B,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC5B,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,IAAI,kFAAkF,IAAI,2EAA2E,CAAC,CAAC;QACzM,CAAC;QAED,MAAM,MAAM,GAAoB;YAC9B,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,kEAAkE;YAClE,uDAAuD;YACvD,WAAW,EAAE,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,aAAa;YAC/C,IAAI;YACJ,IAAI;YACJ,OAAO,EAAE,CAAC,CAAC,YAAY;YACvB,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;YACxB,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC;SAC7B,CAAC;QAEF,oEAAoE;QACpE,oEAAoE;QACpE,mEAAmE;QACnE,iEAAiE;QACjE,oDAAoD;QACpD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YACvC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YAClC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC;YAC7C,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACjD,OAAO,IAAI,CAAC,MAAM,CAAC;YACnB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,CAAC;YACtD,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,IAAI,QAAQ,IAAI,cAAc,IAAI,CAAC,IAAI,WAAW,IAAI,CAAC,SAAS,uBAAuB,CAAC,CAAC;YACzH,SAAS;QACX,CAAC;QAED,oEAAoE;QACpE,IAAI,CAAC,CAAC,IAAI,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YACrC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAE,CAAC,OAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC9C,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,CAAC;YACtD,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,IAAI,QAAQ,IAAI,cAAc,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACtL,SAAS;QACX,CAAC;QAED,mEAAmE;QACnE,+DAA+D;QAC/D,8CAA8C;QAC9C,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,IAAI,qCAAqC,YAAY,CAAC,MAAM,oCAAoC,CAAC,CAAC;IACpI,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;AAChE,CAAC"}