@maka/maka-cli 5.55.0 → 5.56.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundle/typescript/package.json +1 -1
- package/bundle/typescript/src/commands/create.js +2 -4
- package/bundle/typescript/src/commands/create.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.d.ts +40 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js +395 -2
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-seed-generator.js +25 -4
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-seed-generator.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.js +38 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/generation-capture.d.ts +69 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/generation-capture.js +64 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/generation-capture.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/shared-run.js +2 -11
- package/bundle/typescript/src/commands/game/sideQuest/utilities/shared-run.js.map +1 -1
- package/bundle/typescript/src/commands/version/version.js +2 -4
- package/bundle/typescript/src/commands/version/version.js.map +1 -1
- package/bundle/typescript/src/templates/meteor/config/deploy.sh.template +31 -3
- package/bundle/typescript/src/tools/fsi/fsi.class.js +2 -2
- package/bundle/typescript/src/tools/fsi/fsi.class.js.map +1 -1
- package/bundle/typescript/src/tools/version/cli-version.d.ts +2 -0
- package/bundle/typescript/src/tools/version/cli-version.js +45 -0
- package/bundle/typescript/src/tools/version/cli-version.js.map +1 -0
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@maka/maka-cli",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.56.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.",
|
|
@@ -3,15 +3,13 @@ import fs from 'fs';
|
|
|
3
3
|
import { execSync } from 'child_process';
|
|
4
4
|
import cli from 'chalk';
|
|
5
5
|
import { kebabCase } from 'change-case';
|
|
6
|
-
import { createRequire } from 'module';
|
|
7
|
-
const require = createRequire(import.meta.url);
|
|
8
|
-
const pjson = require('../../package.json');
|
|
9
6
|
import MakaCmd from './maka.cmd.js';
|
|
10
7
|
import MakaGen from '../generators/maka.gen.js';
|
|
11
8
|
import { Command } from '../command.js';
|
|
12
9
|
import { Log } from '../tools/log/log.class.js';
|
|
13
10
|
import { Actions } from '../tools/actions/actions.class.js';
|
|
14
11
|
import { hardExit, adoptSdkOutputIntoSpinner } from '../tools/mpi/sdk-runtime.js';
|
|
12
|
+
import { cliVersion } from '../tools/version/cli-version.js';
|
|
15
13
|
import { HtmlEngines, CssEngines, JsEngines, ApiEngines, TestEngines, ClientEngines, GraphqlEngines, SsrEngines, ThemeEngines } from '../tools/fsi/fsi.interfaces.js';
|
|
16
14
|
Command.create({
|
|
17
15
|
name: 'create',
|
|
@@ -365,7 +363,7 @@ Command.create({
|
|
|
365
363
|
appPath: path.join(projectDirectory, 'app'),
|
|
366
364
|
bundlePath: path.join(projectDirectory, 'build', 'app.tar.gz'),
|
|
367
365
|
useCert: (globalConfig.cert) ? this.fsi.isFile(globalConfig.cert) : null,
|
|
368
|
-
version:
|
|
366
|
+
version: cliVersion(),
|
|
369
367
|
};
|
|
370
368
|
let ignore = [];
|
|
371
369
|
// For ssr, we need to ignore a few templates.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../../src/commands/create.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../../src/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,GAAG,MAAM,OAAO,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,OAAO,MAAM,eAAe,CAAC;AACpC,OAAO,OAAO,MAAM,2BAA2B,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAClF,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAEL,WAAW,EACX,UAAU,EACV,SAAS,EACT,UAAU,EACV,WAAW,EACX,aAAa,EACb,cAAc,EACd,UAAU,EACV,YAAY,EACb,MAAM,gCAAgC,CAAC;AAqBxC,OAAO,CAAC,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,CAAC,GAAG,CAAC;IACd,YAAY,EAAE,CAAC;IACf,YAAY,EAAE,CAAC;IACf,KAAK,EAAE,oBAAoB;IAC3B,SAAS,EAAE,kCAAkC;IAC7C,SAAS,EAAE;QACT;YACE,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,wDAAwD;SACtE;QACD;YACE,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,gCAAgC;SAC9C;QACD;YACE,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,CAAC,MAAM,CAAC;YAChB,WAAW,EAAE,6BAA6B;SAC3C;QACD;YACE,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;YACzC,WAAW,EAAE,2CAA2C;SACzD;QACD;YACE,IAAI,EAAE,KAAK;YACX,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC;YAC/B,WAAW,EAAE,oCAAoC;SAClD;QACD;YACE,IAAI,EAAE,KAAK;YACX,WAAW,EAAE,8EAA8E;SAC5F;QACD;YACE,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;YAC5B,WAAW,EAAE,mCAAmC;SACjD;QACD;YACE,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;YACjC,WAAW,EAAE,uCAAuC;SACrD;QACD;YACE,IAAI,EAAE,eAAe;YACrB,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC;YAC1B,WAAW,EAAE,mDAAmD;SACjE;QACD;YACE,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC;YAC5B,WAAW,EAAE,qCAAqC;SACnD;QACD;YACE,IAAI,EAAE,KAAK;YACX,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC;YAC1B,WAAW,EAAE,sCAAsC;SACpD;QACD;YACE,IAAI,EAAE,WAAW;YACjB,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,mEAAmE;SACjF;QACD;YACE,IAAI,EAAE,kBAAkB;YACxB,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,kCAAkC;SAChD;QACD;YACE,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,mBAAmB;SACjC;QACD;YACE,IAAI,EAAE,aAAa;YACnB,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,mDAAmD;SACjE;KACF;IACD,WAAW,EAAE;;;;;;;;;;GAUZ;IACD,mBAAmB,EAAE,KAAK;IAC1B,QAAQ,EAAE;QACR,oBAAoB;QACpB,wCAAwC;QACxC,sDAAsD;QACtD,6DAA6D;QAC7D,4CAA4C;QAC5C,2CAA2C;QAC3C,0DAA0D;QAC1D,qDAAqD;KACtD;CACF,EAAE,KAAK,WAAW,IAAc,EAAE,IAAiB;IAClD,IAAI,CAAC;QACH,sEAAsE;QACtE,MAAM,SAAS,GAAG,CAAC,KAAU,EAAuB,EAAE;YACpD,IAAI,KAAK,KAAK,SAAS;gBAAE,OAAO,SAAS,CAAC;YAC1C,IAAI,OAAO,KAAK,KAAK,SAAS;gBAAE,OAAO,KAAK,CAAC;YAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;gBAClC,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,KAAK;oBAAE,OAAO,IAAI,CAAC;gBACtE,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,IAAI;oBAAE,OAAO,KAAK,CAAC;YACzE,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC,CAAC;QAEF,wBAAwB;QACxB,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1C,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5C,MAAM,gBAAgB,GAAG,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC1D,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEpC,6CAA6C;QAC7C,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAEnB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,wFAAwF,CAAC,CAAC;YAC5G,CAAC;YACD,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACxC,CAAC;QAED,yBAAyB;QACzB,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAEvB,mDAAmD;QAEnD,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;aAAM,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,gFAAgF,EAAE,KAAK,CAAC,CAAC;YACnI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,iBAAiB,GAAG;gBACxB,OAAO,EAAE,8BAA8B;gBACvC,IAAI,EAAE,kBAAkB;gBACxB,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE;oBACnC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE;iBACpC;aACF,CAAC;YACF,MAAM,gBAAgB,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;YACjE,IAAI,gBAAgB,KAAK,IAAI,EAAE,CAAC;gBAC9B,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC;YACzB,CAAC;QACH,CAAC;QAED,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,MAAM,YAAY,GAAG;gBACnB,OAAO,EAAE,8DAA8D;gBACvE,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;oBACvC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;iBAClC;aACF,CAAC;YACF,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YACvD,IAAI,WAAW,KAAK,UAAU,EAAE,CAAC;gBAC/B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACxB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC7B,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,WAAW,GAAG;gBAClB,OAAO,EAAE,4BAA4B;gBACrC,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;oBAC/B,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;oBACjC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;iBAChC;aACF,CAAC;YACF,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACrD,IAAI,UAAU,EAAE,CAAC;gBACf,IAAI,CAAC,IAAI,GAAG,UAAyB,CAAC;YACxC,CAAC;QACH,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,YAAY,GAAG;gBACnB,OAAO,EAAE,YAAY;gBACrB,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE;oBAC1C,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;iBAChC;aACF,CAAC;YACF,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YACvD,IAAI,WAAW,EAAE,CAAC;gBAChB,IAAI,CAAC,KAAK,GAAG,WAA2B,CAAC;YAC3C,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACd,MAAM,UAAU,GAAG;oBACjB,OAAO,EAAE,WAAW;oBACpB,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;wBAC7B,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;wBAC/B,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;qBAChC;iBACF,CAAC;gBACF,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBACnD,IAAI,SAAS,EAAE,CAAC;oBACd,IAAI,CAAC,GAAG,GAAG,SAAuB,CAAC;gBACrC,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;YACnC,MAAM,kBAAkB,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;YACjF,IAAI,kBAAkB,EAAE,CAAC;gBACvB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC/B,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QAC3C,CAAC;QAED,kDAAkD;QAClD,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,MAAM,gBAAgB,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,2BAA2B,EAAE,IAAI,CAAC,CAAC;YAClF,IAAI,gBAAgB,EAAE,CAAC;gBACrB,IAAI,CAAC,aAAa,GAAG,cAAc,CAAC,MAAM,CAAC;YAC7C,CAAC;QACH,CAAC;QAED,kCAAkC;QAClC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACd,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;YAClF,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;QACtD,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;QACzC,IAAI,SAAS,EAAE,CAAC;YACd,GAAG,CAAC,MAAM,CAAC,kCAAkC,SAAS,EAAE,CAAC,CAAC;YAC1D,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACpC,CAAC;QAED,mCAAmC;QACnC,IAAI,UAAU,GAAiB,EAAE,CAAC;QAClC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACb,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACzD,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;gBAC7B,MAAM,UAAU,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;gBACnC,IAAI,UAAU,IAAI,UAAU,EAAE,CAAC;oBAC7B,OAAO,UAAU,CAAC,UAAqC,CAAC,CAAC;gBAC3D,CAAC;gBACD,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC;gBAC7C,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAiB,CAAC;QACrC,CAAC;QAED,sCAAsC;QACtC,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;QAE3E,mDAAmD;QACnD,oDAAoD;QACpD,qDAAqD;QACrD,4BAA4B;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC;QACrB,MAAM,gBAAgB,GAAG,IAAI,CAAC;QAC9B,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAEpD,MAAM,MAAM,GAAmB;YAC7B,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE;gBACP,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI;gBACnC,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,SAAS,CAAC,GAAG;gBAC5B,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,UAAU,CAAC,GAAG;gBAC/B,GAAG,EAAE,UAAU;gBACf,IAAI,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,sBAAsB;gBACpF,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,aAAa,CAAC,KAAK;gBAC1C,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI;gBACnC,OAAO,EAAE,IAAI,CAAC,aAAa,IAAI,cAAc,CAAC,IAAI;gBAClD,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,YAAY,CAAC,IAAI;gBACtC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI;aACtD;YACD,QAAQ,EAAE;gBACR,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,KAAK;gBAClC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,IAAI,KAAK;aACjD;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,KAAK;gBACX,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC;gBAC/E,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,MAAM,CAAC;gBAC1B,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC;aACjF;YACD,KAAK,EAAE;gBACL,QAAQ,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,qBAAqB,CAAC;aACtD;YACD,SAAS,EAAE;gBACT,QAAQ,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,yBAAyB,CAAC;aAC1D;SACF,CAAC;QAEF,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,KAAK,cAAc,CAAC,IAAI,EAAE,CAAC;YACnD,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC;QACjD,CAAC;QAED,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,aAAa,CAAC,KAAK,EAAE,CAAC;YAClD,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,EAAE,CAAC;gBACvC,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC;YACpC,CAAC;YAED,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,EAAE,CAAC;gBACvC,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC;YACpC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,SAAS,CAAC,GAAG,EAAE,CAAC;gBACxC,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC;YACnC,CAAC;YAED,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,SAAS,CAAC,GAAG,EAAE,CAAC;gBACxC,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC;YACnC,CAAC;QACH,CAAC;QAED,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,aAAa,CAAC,OAAO,EAAE,CAAC;YACpD,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC;YACjC,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC;YAC7C,MAAM,CAAC,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC;YACzC,yCAAyC;YACzC,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC;QACvC,CAAC;QAED,sDAAsD;QACtD,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;YAC7C,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,aAAa,CAAC,KAAK,EAAE,CAAC;gBAClD,GAAG,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;gBACjE,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC;YACvC,CAAC;YAED,iDAAiD;YACjD,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK,UAAU,CAAC,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,KAAK,cAAc,CAAC,MAAM,EAAE,CAAC;gBAC/F,GAAG,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;gBAChD,GAAG,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;gBAC5E,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC;YACvC,CAAC;QACH,CAAC;QAED,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;YAC7C,MAAM,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK,CAAC;QAC9B,CAAC;QAED,MAAM,OAAO,GAAG;YACd,GAAG,EAAE,OAAO;YACZ,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC;YAC3C,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,OAAO,EAAE,YAAY,CAAC;YAC9D,OAAO,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;YACxE,OAAO,EAAE,UAAU,EAAE;SACtB,CAAC;QAEF,IAAI,MAAM,GAAa,EAAE,CAAC;QAC1B,8CAA8C;QAC9C,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;YAC7C,MAAM,GAAG,CAAC,8CAA8C,EAAE,2CAA2C,EAAE,8CAA8C,EAAE,2CAA2C,CAAC,CAAC;QACtM,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,CAAC,2CAA2C,EAAE,wCAAwC,EAAE,2CAA2C,EAAE,wCAAwC,CAAC,CAAC;QAC1L,CAAC;QAED,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,SAAS,CAAC,GAAG,EAAE,CAAC;YAC9E,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC/B,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACnC,CAAC;QAED,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,aAAa,CAAC,OAAO,EAAE,CAAC;YACpD,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,gCAAgC;QAChC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAEpC,4BAA4B;QAC5B,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QACnD,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QAEnD,gDAAgD;QAChD,MAAM,cAAc,GAAa,EAAE,CAAC;QACpC,MAAM,iBAAiB,GAAa,EAAE,CAAC;QACvC,MAAM,wBAAwB,GAAa,EAAE,CAAC;QAC9C,MAAM,iBAAiB,GAAa,EAAE,CAAC;QACvC,MAAM,gBAAgB,GAAa,EAAE,CAAC;QAEtC,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QAC/E,IAAI,MAAM,EAAE,CAAC;YACX,sEAAsE;YACtE,mEAAmE;YACnE,uEAAuE;YACvE,qEAAqE;YACrE,sEAAsE;YACtE,uEAAuE;YACvE,gDAAgD;YAChD,cAAc,CAAC,IAAI,CAAC,wHAAwH,CAAC,CAAC;YAC9I,iBAAiB,CAAC,IAAI,CAAC,iJAAiJ,CAAC,CAAC;YAC1K,wBAAwB,CAAC,IAAI,CAAC,kIAAkI,CAAC,CAAC;QACpK,CAAC;QAED,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,4CAA4C,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YACtH,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;QAExD,MAAM,UAAU,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;QACrC,+DAA+D;QAC/D,MAAM,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YACxC,OAAO,EAAE,SAAS;YAClB,QAAQ,EAAE,gBAAgB;YAC1B,OAAO;YACP,MAAM;YACN,IAAI;YACJ,SAAS,EAAE,QAAQ;YACnB,MAAM;SACP,CAAC,CAAC;QAEH,yEAAyE;QACzE,EAAE,CAAC,UAAU,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,GAAG,WAAW,EAAE,gBAAgB,GAAG,IAAI,CAAC,GAAG,GAAG,YAAY,CAAC,CAAA;QAEpG,UAAU,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC7C,iEAAiE;QACjE,mEAAmE;QACnE,MAAM,gBAAgB,GAAG,yBAAyB,EAAE,CAAC;QACrD,IAAI,CAAC;YACH,kEAAkE;YAClE,wDAAwD;YACxD,mEAAmE;YACnE,gEAAgE;YAChE,oEAAoE;YACpE,MAAM,IAAI,CAAC,QAAQ,CAAC,wBAAwB,CAAC,KAAK,EAAE,EAAC,GAAG,EAAE,gBAAgB,EAAE,GAAG,IAAI,EAAC,CAAC,CAAC;QACxF,CAAC;gBAAS,CAAC;YACT,gBAAgB,EAAE,CAAC;QACrB,CAAC;QACD,UAAU,CAAC,OAAO,EAAE,CAAC;QAErB,qDAAqD;QACrD,MAAM,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YACxC,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,YAAY;YACtB,OAAO;YACP,MAAM;YACN,IAAI;YACJ,SAAS,EAAE,QAAQ;YACnB,MAAM;SACP,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;QAErF,qDAAqD;QACrD,MAAM,aAAa,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC;QAElF,GAAG,CAAC,MAAM,CAAC,gEAAgE,CAAC,CAAC;QAC7E,MAAM,OAAO,CAAC,sBAAsB,CAAC,aAAa,EAAE,CAAC,aAAa,CAAC,EAAE,EAAC,GAAG,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAC,CAAC,CAAC;QAClH,MAAM,OAAO,CAAC,sBAAsB,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,EAAC,GAAG,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAC,CAAC,CAAC;QACpG,MAAM,OAAO,CAAC,sBAAsB,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC,EAAE,EAAC,GAAG,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAC,CAAC,CAAC;QACzG,MAAM,OAAO,CAAC,sBAAsB,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,EAAC,GAAG,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAC,CAAC,CAAC;QAEvG,IAAI,MAAM,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC;YACrC,MAAM,OAAO,CAAC,sBAAsB,CAAC,qBAAqB,EAAE,CAAC,cAAc,CAAC,EAAE,EAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAC,CAAC,CAAC;YACvI,cAAc,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;QAChF,CAAC;QAED,sBAAsB;QACtB,gDAAgD;QAChD,mDAAmD;QAEnD,mBAAmB;QACnB,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAErC,iBAAiB;QACjB,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEhC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YACtC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBACpC,iBAAiB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;gBAC9C,iBAAiB,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;YACxF,CAAC;QACH,CAAC;QAED,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;YACxB,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,MAAM,EAAE,CAAC;gBACjC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QAED,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC;YAC9D,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACrC,iBAAiB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACxC,iBAAiB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAC3C,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACnC,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBACtC,iBAAiB,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;YAC1D,CAAC;iBAAM,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC3C,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBACvC,iBAAiB,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;QAED,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,KAAK,KAAK,EAAE,CAAC;YACrD,wCAAwC;YACxC,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACzC,CAAC;QAED,gCAAgC;QAChC,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACtC,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACzC,cAAc,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QAE5D,mDAAmD;QACnD,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YACtC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACnC,cAAc,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YAC7C,CAAC;YACD,cAAc,CAAC,IAAI,CAAC,6EAA6E,CAAC,CAAC;QACrG,CAAC;QAED,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACxC,OAAO;YACP,cAAc,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;YACxE,sEAAsE;YACtE,gEAAgE;YAChE,mEAAmE;YACnE,oEAAoE;YACpE,mEAAmE;YACnE,cAAc,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;YACnE,mCAAmC;QACrC,CAAC;QAED,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YACxC,cAAc,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;QACvF,CAAC;QAED,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK,UAAU,CAAC,IAAI,EAAE,CAAC;YAC3C,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACvC,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACxC,CAAC;QAED,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;YAC7C,cAAc,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;YACvD,iBAAiB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC1C,CAAC;QAED,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEpC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK,UAAU,CAAC,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YACrH,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACxC,CAAC;QAED,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK,UAAU,CAAC,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YAClF,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC1C,CAAC;QAED,yCAAyC;QACzC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACxC,gBAAgB,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;YACtD,iBAAiB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC/C,CAAC;QAED,kCAAkC;QAElC,GAAG,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAC;QAG1C,qBAAqB;QACrB,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAC,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAC,CAAC,CAAC;QACpE,MAAM,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAC,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAC,CAAC,CAAC;QACxG,MAAM,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAC,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;QAC1H,MAAM,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAC,GAAG,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;QAErI,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAC,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAC,CAAC,CAAC;QAChH,CAAC;QACD,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAC,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAC,CAAC,CAAC;QAC9G,CAAC;QAED,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,OAAO,CAAC,oBAAoB,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,gBAAgB,EAAE,CAAC,CAAC;QACvF,CAAC;QAED,mCAAmC;QACnC,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC;YAC/E,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;CA0B7B,CAAC;YAEI,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;YAChD,GAAG,CAAC,OAAO,CAAC,uDAAuD,CAAC,CAAC;QACvE,CAAC;QAAC,MAAM,CAAC;YACP,GAAG,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM;QACN,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;YACzB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC/C,QAAQ,CAAC,YAAY,UAAU,wBAAwB,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC9E,QAAQ,CAAC,UAAU,UAAU,oBAAoB,UAAU,+BAA+B,KAAK,CAAC,WAAW,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACzI,CAAC;QAAC,MAAM,CAAC;YACP,GAAG,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;QAC1D,CAAC;QAED,GAAG,CAAC,OAAO,CAAC,WAAW,OAAO,EAAE,CAAC,CAAC;QAClC,IAAI,SAAS,IAAI,SAAS,KAAK,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;YAC7C,GAAG,CAAC,OAAO,CAAC,iBAAiB,SAAS,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;QAC3C,IAAI,KAAK,EAAE,CAAC;YACV,GAAG,CAAC,MAAM,CAAC,sFAAsF,CAAC,CAAC;YACnG,GAAG,CAAC,MAAM,CAAC,0DAA0D,CAAC,CAAC;YACvE,GAAG,CAAC,MAAM,CAAC,wCAAwC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACrF,CAAC;QAED,mEAAmE;QACnE,kEAAkE;QAClE,qEAAqE;QACrE,+DAA+D;QAC/D,QAAQ,CAAC,CAAC,CAAC,CAAC;IACd,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACb,QAAQ,CAAC,CAAC,CAAC,CAAC;IACd,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
@@ -158,6 +158,21 @@ export interface ISceneDetails {
|
|
|
158
158
|
* built FOR the runner actually playing it (archetype, stats, toolkit).
|
|
159
159
|
* Returns '' when no player is available.
|
|
160
160
|
*/
|
|
161
|
+
/**
|
|
162
|
+
* SPELL OUT THE CLUE RULE, IN THIS RUNNER'S TERMS. The dossier already
|
|
163
|
+
* hints at it in prose ("con"-bypass barriers for a talker), and the
|
|
164
|
+
* model still missed it: the single most common generation failure on
|
|
165
|
+
* record is a barrier this runner can't open with no clue written for
|
|
166
|
+
* it. It's character-dependent, which is what made it look like random
|
|
167
|
+
* flakiness -- a Face satisfies exactly ONE of the four bypass types, so
|
|
168
|
+
* three quarters of the barriers the model naturally reaches for demand
|
|
169
|
+
* a clue item, and it keeps forgetting.
|
|
170
|
+
*
|
|
171
|
+
* So state it mechanically instead of hinting: name the types they can
|
|
172
|
+
* and can't do, and name the consequence. normalizeSkeleton repairs this
|
|
173
|
+
* anyway -- this is the half that stops the fault being authored at all.
|
|
174
|
+
*/
|
|
175
|
+
export declare function bypassBrief(player: Player): string;
|
|
161
176
|
export declare function buildPlayerDossier(player?: Player): string;
|
|
162
177
|
/** The crew summary generation scales opposition against (Phase A of
|
|
163
178
|
* the party system): name, archetype, and the statline headline. */
|
|
@@ -191,7 +206,31 @@ export declare function parseJsonReply<T>(reply: string): T;
|
|
|
191
206
|
* matrix defense...) are still enforced by the assembled-scene validators.
|
|
192
207
|
*/
|
|
193
208
|
export declare function validateSkeleton(skeleton: ISceneSkeleton, player?: Player): void;
|
|
194
|
-
export declare function normalizeSkeleton(skeleton: ISceneSkeleton): string[];
|
|
209
|
+
export declare function normalizeSkeleton(skeleton: ISceneSkeleton, player?: Player): string[];
|
|
210
|
+
/**
|
|
211
|
+
* THE ANSWER HAS TO BE WRITTEN DOWN. The other half of the clue problem,
|
|
212
|
+
* and the more expensive half.
|
|
213
|
+
*
|
|
214
|
+
* validateClueItems demands a Book item, in a different room, whose
|
|
215
|
+
* "details" contains the puzzle's requiredPhrase VERBATIM. buildItemsPrompt
|
|
216
|
+
* interpolates every phrase and asks for exactly that -- and the model
|
|
217
|
+
* still omits it. Measured 2026-08-26: six distinct puzzles each failed
|
|
218
|
+
* this check three rounds running ("no Book-category item in a different
|
|
219
|
+
* room whose details contains the answer 738251"), because classifyRepair
|
|
220
|
+
* routes the fault to `items` and the regenerated chunk makes the same
|
|
221
|
+
* mistake every time. Three regenerations of a 6000-token chunk, per
|
|
222
|
+
* puzzle, to not write a number down.
|
|
223
|
+
*
|
|
224
|
+
* So write it down here. The clue object, its category, and its room are
|
|
225
|
+
* already settled by the skeleton (assembleScene takes `category` from
|
|
226
|
+
* skel, not from the detail); the only thing missing is the phrase inside
|
|
227
|
+
* the prose. Appending it is deterministic, costs nothing, and removes
|
|
228
|
+
* the single most expensive retry path in the generator.
|
|
229
|
+
*
|
|
230
|
+
* Runs from inside assembleScene so it applies on EVERY repair round --
|
|
231
|
+
* placing it in requestAllDetails would miss a regenerated items chunk.
|
|
232
|
+
*/
|
|
233
|
+
export declare function ensureClueDetails(skeleton: ISceneSkeleton, details: ISceneDetails): string[];
|
|
195
234
|
/** Merges the skeleton's structure with the detail passes into a full seed. */
|
|
196
235
|
export declare function assembleScene(skeleton: ISceneSkeleton, details: ISceneDetails, playerName: string): ISceneSeedJson;
|
|
197
236
|
export type RepairTarget = 'rooms' | 'npcs' | 'puzzles' | 'items' | 'skeleton';
|
|
@@ -43,6 +43,34 @@ export function isFixerName(name) {
|
|
|
43
43
|
* built FOR the runner actually playing it (archetype, stats, toolkit).
|
|
44
44
|
* Returns '' when no player is available.
|
|
45
45
|
*/
|
|
46
|
+
/**
|
|
47
|
+
* SPELL OUT THE CLUE RULE, IN THIS RUNNER'S TERMS. The dossier already
|
|
48
|
+
* hints at it in prose ("con"-bypass barriers for a talker), and the
|
|
49
|
+
* model still missed it: the single most common generation failure on
|
|
50
|
+
* record is a barrier this runner can't open with no clue written for
|
|
51
|
+
* it. It's character-dependent, which is what made it look like random
|
|
52
|
+
* flakiness -- a Face satisfies exactly ONE of the four bypass types, so
|
|
53
|
+
* three quarters of the barriers the model naturally reaches for demand
|
|
54
|
+
* a clue item, and it keeps forgetting.
|
|
55
|
+
*
|
|
56
|
+
* So state it mechanically instead of hinting: name the types they can
|
|
57
|
+
* and can't do, and name the consequence. normalizeSkeleton repairs this
|
|
58
|
+
* anyway -- this is the half that stops the fault being authored at all.
|
|
59
|
+
*/
|
|
60
|
+
export function bypassBrief(player) {
|
|
61
|
+
const ALL = ['lockpick', 'hack', 'spell', 'con'];
|
|
62
|
+
const can = ALL.filter(t => canBypassUnaided(player, t));
|
|
63
|
+
const cannot = ALL.filter(t => !can.includes(t));
|
|
64
|
+
const canText = can.length > 0
|
|
65
|
+
? `Unaided, this runner can only get past a barrier by: ${can.join(', ')}.`
|
|
66
|
+
: `Unaided, this runner cannot force ANY barrier type on their own.`;
|
|
67
|
+
const cannotText = cannot.length > 0 ? ` They CANNOT ${cannot.join(', ')}.` : '';
|
|
68
|
+
return `- BARRIER RULE, MECHANICAL (most common reason a draft is rejected): ${canText}${cannotText}
|
|
69
|
+
Every puzzle whose bypassType is one they cannot do MUST have its own "clue"-role item --
|
|
70
|
+
category "Book", placed in a DIFFERENT room from the barrier, and in a room reachable
|
|
71
|
+
WITHOUT passing through that barrier. Prefer barriers they can actually engage with; when
|
|
72
|
+
you write one they can't, write its clue in the same breath.`;
|
|
73
|
+
}
|
|
46
74
|
export function buildPlayerDossier(player) {
|
|
47
75
|
if (!player)
|
|
48
76
|
return '';
|
|
@@ -134,6 +162,7 @@ Tailoring rules:
|
|
|
134
162
|
dice below the runner's pools, and a centerpiece enforcer can match or slightly exceed
|
|
135
163
|
them. Don't send soft civilians at a combat monster, or elite security at a runner built
|
|
136
164
|
for talking their way through.
|
|
165
|
+
${bypassBrief(player)}
|
|
137
166
|
`.trim();
|
|
138
167
|
}
|
|
139
168
|
// ============================ Prompt builders ============================
|
|
@@ -519,7 +548,12 @@ One entry per skeleton item, "name" and "category" copied exactly.${repairNote(p
|
|
|
519
548
|
export function canBypassUnaided(player, bypassType) {
|
|
520
549
|
if (!player || !bypassType)
|
|
521
550
|
return false;
|
|
522
|
-
|
|
551
|
+
// THROUGH skillRating, NOT the raw sheet (bug found 2026-08-26): the
|
|
552
|
+
// raw read sailed past the "incompetent-<skill>" quality, which
|
|
553
|
+
// skillRating pins to 0 (player.ts) -- an Incompetent-locksmith runner
|
|
554
|
+
// was qualifying to have the lockpick clue waived on the strength of a
|
|
555
|
+
// number the rest of the game refuses to honour.
|
|
556
|
+
const rated = (skill) => player.skillRating(skill);
|
|
523
557
|
switch (bypassType) {
|
|
524
558
|
case 'lockpick': return rated('locksmith') >= 3;
|
|
525
559
|
case 'hack': return rated('hacking') >= 3 || player.isTechnomancer() || !!player.getAnyCyberdeck();
|
|
@@ -771,8 +805,196 @@ function freeStrandedRooms(skeleton) {
|
|
|
771
805
|
}
|
|
772
806
|
/** Room types whose whole point is that someone is there to trade with. */
|
|
773
807
|
const STAFFED_ROOM_TYPES = /^(market|shop|store|bar|pub|tavern|restaurant|cafe|clinic|pawn|stall|vendor|kiosk|dispensary)/i;
|
|
774
|
-
|
|
808
|
+
/**
|
|
809
|
+
* WHERE A CLUE MAY LIVE. The validator's reachability walk treats every
|
|
810
|
+
* puzzle door as PASSABLE (`!!edge.puzzle ||` in validateSkeleton), which
|
|
811
|
+
* is right for "can the runner eventually get there" and dead wrong for
|
|
812
|
+
* "can the runner read this BEFORE facing the barrier". So a clue placed
|
|
813
|
+
* behind the very door its puzzle guards validates clean and softlocks in
|
|
814
|
+
* play -- the validator will not catch it, and this is the only thing
|
|
815
|
+
* that will.
|
|
816
|
+
*
|
|
817
|
+
* Two deliberate divergences from that walk:
|
|
818
|
+
* - EVERY puzzle edge is impassable here, not just this puzzle's. That
|
|
819
|
+
* also makes a mutual deadlock structurally impossible (clue A behind
|
|
820
|
+
* puzzle B's door while clue B sits behind puzzle A's).
|
|
821
|
+
* - reachable:false rooms are neither candidates nor stepping stones.
|
|
822
|
+
* Locked doors use the same key-location fixed point as the validator, so
|
|
823
|
+
* a room only counts safe once its key is safe.
|
|
824
|
+
*
|
|
825
|
+
* Returns [] when nowhere is safe -- callers MUST bail, never guess.
|
|
826
|
+
*/
|
|
827
|
+
function safeRoomsFor(skeleton, puzzle) {
|
|
828
|
+
const start = (skeleton.rooms ?? []).find(r => r.isStartRoom);
|
|
829
|
+
if (!start)
|
|
830
|
+
return [];
|
|
831
|
+
const isolated = new Set((skeleton.rooms ?? []).filter(r => r.reachable === false).map(r => r.name));
|
|
832
|
+
const npcRoom = new Map((skeleton.npcs ?? []).map(n => [n.name, n.startLocation]));
|
|
833
|
+
const itemRoom = new Map();
|
|
834
|
+
for (const item of skeleton.items ?? []) {
|
|
835
|
+
if (item.room)
|
|
836
|
+
itemRoom.set(item.name, item.room);
|
|
837
|
+
else if (item.heldBy) {
|
|
838
|
+
const loc = npcRoom.get(item.heldBy);
|
|
839
|
+
if (loc)
|
|
840
|
+
itemRoom.set(item.name, loc);
|
|
841
|
+
}
|
|
842
|
+
}
|
|
843
|
+
const walk = (blockRoom) => {
|
|
844
|
+
const seen = new Set([start.name]);
|
|
845
|
+
let grew = true;
|
|
846
|
+
while (grew) {
|
|
847
|
+
grew = false;
|
|
848
|
+
for (const room of skeleton.rooms ?? []) {
|
|
849
|
+
for (const exit of room.exits ?? []) {
|
|
850
|
+
// A barrier is a wall until it is solved. That is the whole point.
|
|
851
|
+
if (exit.puzzle)
|
|
852
|
+
continue;
|
|
853
|
+
const a = room.name, b = exit.targetRoom;
|
|
854
|
+
if (isolated.has(a) || isolated.has(b))
|
|
855
|
+
continue;
|
|
856
|
+
const from = seen.has(a) ? a : seen.has(b) ? b : undefined;
|
|
857
|
+
if (!from)
|
|
858
|
+
continue;
|
|
859
|
+
const to = from === a ? b : a;
|
|
860
|
+
if (seen.has(to) || to === blockRoom)
|
|
861
|
+
continue;
|
|
862
|
+
const keyLoc = exit.keyRequired ? itemRoom.get(exit.keyRequired) : undefined;
|
|
863
|
+
if (exit.keyRequired && !(keyLoc !== undefined && seen.has(keyLoc)))
|
|
864
|
+
continue;
|
|
865
|
+
seen.add(to);
|
|
866
|
+
grew = true;
|
|
867
|
+
}
|
|
868
|
+
}
|
|
869
|
+
}
|
|
870
|
+
return seen;
|
|
871
|
+
};
|
|
872
|
+
// For a room-anchored puzzle, first try refusing to even pass THROUGH
|
|
873
|
+
// its room: the puzzles pass can later emit `guardsExit` sealing one of
|
|
874
|
+
// that room's doors, which is unknowable here, so be conservative. Fall
|
|
875
|
+
// back to merely excluding the room itself when that leaves nothing.
|
|
876
|
+
// A door puzzle needs no extra exclusion -- cutting its edge already
|
|
877
|
+
// leaves exactly the near-side component, and the near-side room is a
|
|
878
|
+
// fine place to find the clue.
|
|
879
|
+
let reached = walk(puzzle.room);
|
|
880
|
+
if (puzzle.room && reached.size <= 1)
|
|
881
|
+
reached = walk();
|
|
882
|
+
const candidates = (skeleton.rooms ?? [])
|
|
883
|
+
.filter(r => reached.has(r.name) && r.name !== puzzle.room && !isolated.has(r.name));
|
|
884
|
+
if (candidates.length === 0)
|
|
885
|
+
return [];
|
|
886
|
+
// Rank: earned over free (not the curb), unowned over owned, deeper
|
|
887
|
+
// over shallower. Owned matters because a clue must be TAKEN to be
|
|
888
|
+
// read (ReadCommand reads from inventory) and taking an owned item
|
|
889
|
+
// raises a theft -- a mandatory clue should not be a mandatory crime.
|
|
890
|
+
const depth = new Map();
|
|
891
|
+
const bfs = [start.name];
|
|
892
|
+
depth.set(start.name, 0);
|
|
893
|
+
while (bfs.length > 0) {
|
|
894
|
+
const cur = bfs.shift();
|
|
895
|
+
for (const room of skeleton.rooms ?? []) {
|
|
896
|
+
for (const exit of room.exits ?? []) {
|
|
897
|
+
if (exit.puzzle)
|
|
898
|
+
continue;
|
|
899
|
+
const pair = [room.name, exit.targetRoom];
|
|
900
|
+
if (!pair.includes(cur))
|
|
901
|
+
continue;
|
|
902
|
+
const next = pair[0] === cur ? pair[1] : pair[0];
|
|
903
|
+
if (!reached.has(next) || depth.has(next))
|
|
904
|
+
continue;
|
|
905
|
+
depth.set(next, (depth.get(cur) ?? 0) + 1);
|
|
906
|
+
bfs.push(next);
|
|
907
|
+
}
|
|
908
|
+
}
|
|
909
|
+
}
|
|
910
|
+
const ranked = candidates.slice().sort((a, b) => {
|
|
911
|
+
const startA = a.isStartRoom ? 1 : 0, startB = b.isStartRoom ? 1 : 0;
|
|
912
|
+
if (startA !== startB)
|
|
913
|
+
return startA - startB;
|
|
914
|
+
const ownA = a.owner ? 1 : 0, ownB = b.owner ? 1 : 0;
|
|
915
|
+
if (ownA !== ownB)
|
|
916
|
+
return ownA - ownB;
|
|
917
|
+
const dA = depth.get(a.name) ?? 0, dB = depth.get(b.name) ?? 0;
|
|
918
|
+
if (dA !== dB)
|
|
919
|
+
return dB - dA;
|
|
920
|
+
return skeleton.rooms.indexOf(a) - skeleton.rooms.indexOf(b);
|
|
921
|
+
});
|
|
922
|
+
return ranked.map(r => r.name);
|
|
923
|
+
}
|
|
924
|
+
const OPPOSITE_DIR = {
|
|
925
|
+
north: 'south', south: 'north', east: 'west', west: 'east', up: 'down', down: 'up',
|
|
926
|
+
};
|
|
927
|
+
const ALL_DIRS = ['north', 'east', 'south', 'west', 'up', 'down'];
|
|
928
|
+
/**
|
|
929
|
+
* TWO ROOMS CANNOT SHARE ONE WALL. The bug that stranded a real client
|
|
930
|
+
* (playtest 2026-08-26: "I couldn't reach the client").
|
|
931
|
+
*
|
|
932
|
+
* The engine MIRRORS every declared exit -- Room.addExit writes the door
|
|
933
|
+
* into both rooms, `this.exits.set(direction, door)` on one side and
|
|
934
|
+
* `targetRoom.exits.set(back, door)` on the other. Both are plain Map
|
|
935
|
+
* sets, and addExit's de-registration loop only clears stale directions
|
|
936
|
+
* belonging to the SAME door. It never notices that a DIFFERENT door
|
|
937
|
+
* already holds that direction, so the later write silently erases the
|
|
938
|
+
* earlier one.
|
|
939
|
+
*
|
|
940
|
+
* In the failing run, "Night Market Alley" declared west -> The Copper
|
|
941
|
+
* Kettle, and "Fence's Stalls" declared east -> Night Market Alley. The
|
|
942
|
+
* mirror of the second also lands on the alley's west, overwrote the
|
|
943
|
+
* first, and took the Copper Kettle with it -- along with Corvid's Sting
|
|
944
|
+
* and The Refurbished Hearse, which hung off it. Three of seven rooms,
|
|
945
|
+
* the client, and the objective, all unreachable.
|
|
946
|
+
*
|
|
947
|
+
* validateSkeleton cannot catch this: it builds its own edge list and
|
|
948
|
+
* walks it bidirectionally, so it sees a graph the engine never builds.
|
|
949
|
+
* Same shape as a clue behind its own door -- validates clean, dead in
|
|
950
|
+
* play -- and the repair has to live here.
|
|
951
|
+
*/
|
|
952
|
+
function resolveDirectionCollisions(skeleton) {
|
|
953
|
+
const notes = [];
|
|
954
|
+
const rooms = skeleton.rooms ?? [];
|
|
955
|
+
const byName = new Map(rooms.map(r => [r.name, r]));
|
|
956
|
+
// room -> direction -> the room currently occupying that wall.
|
|
957
|
+
const claimed = new Map(rooms.map(r => [r.name, new Map()]));
|
|
958
|
+
for (const room of rooms) {
|
|
959
|
+
for (const exit of room.exits ?? []) {
|
|
960
|
+
const target = byName.get(exit.targetRoom);
|
|
961
|
+
if (!target)
|
|
962
|
+
continue; // dangling ref; not this repair's job
|
|
963
|
+
const here = claimed.get(room.name);
|
|
964
|
+
const there = claimed.get(target.name);
|
|
965
|
+
const back = OPPOSITE_DIR[exit.direction];
|
|
966
|
+
const freeHere = (d) => !here.has(d) || here.get(d) === target.name;
|
|
967
|
+
const freeThere = (d) => {
|
|
968
|
+
const b = OPPOSITE_DIR[d];
|
|
969
|
+
return !b || !there.has(b) || there.get(b) === room.name;
|
|
970
|
+
};
|
|
971
|
+
if (freeHere(exit.direction) && freeThere(exit.direction)) {
|
|
972
|
+
here.set(exit.direction, target.name);
|
|
973
|
+
if (back)
|
|
974
|
+
there.set(back, room.name);
|
|
975
|
+
continue;
|
|
976
|
+
}
|
|
977
|
+
const moved = ALL_DIRS.find(d => freeHere(d) && freeThere(d));
|
|
978
|
+
if (!moved) {
|
|
979
|
+
notes.push(`could not re-hang the "${exit.direction}" way from "${room.name}" to "${exit.targetRoom}": every direction is spoken for on one side.`);
|
|
980
|
+
continue;
|
|
981
|
+
}
|
|
982
|
+
notes.push(`normalized: "${room.name}" had two different rooms on its "${exit.direction}" side; moved the way to "${exit.targetRoom}" round to "${moved}" (the engine mirrors doors, so the later one was silently erasing the earlier).`);
|
|
983
|
+
exit.direction = moved;
|
|
984
|
+
here.set(moved, target.name);
|
|
985
|
+
const newBack = OPPOSITE_DIR[moved];
|
|
986
|
+
if (newBack)
|
|
987
|
+
there.set(newBack, room.name);
|
|
988
|
+
}
|
|
989
|
+
}
|
|
990
|
+
return notes;
|
|
991
|
+
}
|
|
992
|
+
export function normalizeSkeleton(skeleton, player) {
|
|
775
993
|
const notes = [];
|
|
994
|
+
// Topology before anything that reasons about topology: freeStranded-
|
|
995
|
+
// Rooms, clue placement and the curb all walk this graph, and they
|
|
996
|
+
// should walk the one the ENGINE will actually build.
|
|
997
|
+
notes.push(...resolveDirectionCollisions(skeleton));
|
|
776
998
|
// Solvability first: a key sealed behind its own door is one moved
|
|
777
999
|
// object, not a reason to redraw the whole map.
|
|
778
1000
|
notes.push(...freeStrandedRooms(skeleton));
|
|
@@ -864,6 +1086,101 @@ export function normalizeSkeleton(skeleton) {
|
|
|
864
1086
|
delete puzzle.room;
|
|
865
1087
|
}
|
|
866
1088
|
}
|
|
1089
|
+
// THE CLUE ITEM -- half of every generation failure on record.
|
|
1090
|
+
//
|
|
1091
|
+
// Measured 2026-08-26 across 20 sessions: 19 job attempts, 3 valid
|
|
1092
|
+
// scenes, 12 outright give-ups. The dominant fault, at both the
|
|
1093
|
+
// skeleton and the assembled stage, is a puzzle whose clue item is
|
|
1094
|
+
// missing, roomless, or sitting in its own puzzle's room. It is
|
|
1095
|
+
// character-dependent, which is why it looked like flakiness: a Face
|
|
1096
|
+
// (con 5, no locksmith/hacking, magic 0) satisfies canBypassUnaided
|
|
1097
|
+
// for exactly ONE bypassType, so every lockpick/hack/spell barrier
|
|
1098
|
+
// demands a clue -- and the model keeps forgetting to write one.
|
|
1099
|
+
//
|
|
1100
|
+
// Repaired here rather than by retrying, because retries reproduce it
|
|
1101
|
+
// verbatim: the skeleton prompt feeds back the ERROR but not the map
|
|
1102
|
+
// the model just drew, so attempt 2 redraws from scratch and forgets
|
|
1103
|
+
// again. Runs BEFORE reward reconciliation on purpose -- that step
|
|
1104
|
+
// treats role "clue" as load-bearing, so anything promoted here is
|
|
1105
|
+
// protected from being converted into an unplaced reward.
|
|
1106
|
+
//
|
|
1107
|
+
// Synthesis happens EVEN WHEN canBypassUnaided waives the clue. The
|
|
1108
|
+
// waiver is a latent softlock: getBypassHint promises the player "the
|
|
1109
|
+
// answer is recorded somewhere out in the world", bypass is a coin
|
|
1110
|
+
// flip, and a failed flip burns the route with "Only the real code
|
|
1111
|
+
// will open it" -- for a code that was never written down.
|
|
1112
|
+
const SYNTHESIZED_CLUE_CAP = 2;
|
|
1113
|
+
let synthesized = 0;
|
|
1114
|
+
const CLUE_NOUN = {
|
|
1115
|
+
lockpick: 'Maintenance Log',
|
|
1116
|
+
hack: 'Service Log',
|
|
1117
|
+
spell: 'Ritual Notes',
|
|
1118
|
+
con: 'Staff Roster',
|
|
1119
|
+
};
|
|
1120
|
+
for (const puzzle of skeleton.puzzles ?? []) {
|
|
1121
|
+
const items = skeleton.items ?? [];
|
|
1122
|
+
let clue = items.find(i => i.role === 'clue' && i.forPuzzle === puzzle.name);
|
|
1123
|
+
// Reclassify before inventing: the model often authored the object
|
|
1124
|
+
// and only mislabelled it. Cheaper than synthesis and it keeps the
|
|
1125
|
+
// model's own prose intent.
|
|
1126
|
+
if (!clue) {
|
|
1127
|
+
const mislabelled = items.find(i => i.forPuzzle === puzzle.name && i.role !== 'clue');
|
|
1128
|
+
if (mislabelled) {
|
|
1129
|
+
notes.push(`normalized: item "${mislabelled.name}" was a ${mislabelled.role} pointing at puzzle "${puzzle.name}"; promoted it to that puzzle's clue.`);
|
|
1130
|
+
mislabelled.role = 'clue';
|
|
1131
|
+
mislabelled.category = 'Book';
|
|
1132
|
+
clue = mislabelled;
|
|
1133
|
+
}
|
|
1134
|
+
}
|
|
1135
|
+
const safe = safeRoomsFor(skeleton, puzzle);
|
|
1136
|
+
if (clue) {
|
|
1137
|
+
// A clue in its own puzzle's room, or with no room at all, is the
|
|
1138
|
+
// same repair: put it somewhere legal and safe.
|
|
1139
|
+
const needsRoom = !clue.room || clue.room === puzzle.room;
|
|
1140
|
+
if (needsRoom) {
|
|
1141
|
+
// A holder standing in a safe room is the better answer than a
|
|
1142
|
+
// book on the floor -- but only if the validators can see it.
|
|
1143
|
+
const holderRoom = clue.heldBy ? (skeleton.npcs ?? []).find(n => n.name === clue.heldBy)?.startLocation : undefined;
|
|
1144
|
+
const target = (holderRoom && safe.includes(holderRoom)) ? holderRoom : safe[0];
|
|
1145
|
+
if (!target) {
|
|
1146
|
+
notes.push(`could not relocate clue "${clue.name}": no room is reachable without passing puzzle "${puzzle.name}".`);
|
|
1147
|
+
}
|
|
1148
|
+
else {
|
|
1149
|
+
const was = clue.room ? `sat in its own puzzle's room "${clue.room}"` : 'had no room';
|
|
1150
|
+
clue.room = target;
|
|
1151
|
+
delete clue.heldBy;
|
|
1152
|
+
notes.push(`normalized: clue "${clue.name}" ${was}; moved it to "${target}" (reachable without passing the barrier).`);
|
|
1153
|
+
}
|
|
1154
|
+
}
|
|
1155
|
+
continue;
|
|
1156
|
+
}
|
|
1157
|
+
if (safe.length === 0) {
|
|
1158
|
+
// How bad this is depends on the runner. If the barrier happens to
|
|
1159
|
+
// be one they can force unaided, validateSkeleton's waiver still
|
|
1160
|
+
// lets the draft through -- it just ships a barrier with no written
|
|
1161
|
+
// answer, which is the gamble-only case getBypassHint over-promises
|
|
1162
|
+
// on. If they can't force it, the draft is dead and the validator
|
|
1163
|
+
// will say so. Two very different log lines; say which one it is.
|
|
1164
|
+
notes.push(canBypassUnaided(player, puzzle.bypassType)
|
|
1165
|
+
? `could not synthesize a clue for puzzle "${puzzle.name}": nowhere is reachable without passing it -- it ships on the runner's own ${puzzle.bypassType}, with no written answer anywhere.`
|
|
1166
|
+
: `could not synthesize a clue for puzzle "${puzzle.name}": nowhere is reachable without passing it.`);
|
|
1167
|
+
continue;
|
|
1168
|
+
}
|
|
1169
|
+
if (synthesized >= SYNTHESIZED_CLUE_CAP) {
|
|
1170
|
+
notes.push(`declined to synthesize a clue for puzzle "${puzzle.name}": already invented ${SYNTHESIZED_CLUE_CAP} this skeleton -- a fresh draft is the better bet.`);
|
|
1171
|
+
continue;
|
|
1172
|
+
}
|
|
1173
|
+
// The NAME is the entire brief the items prose pass receives (an
|
|
1174
|
+
// ISkeletonItem has no concept field), so it has to imply the object.
|
|
1175
|
+
const noun = CLUE_NOUN[puzzle.bypassType ?? ''] ?? 'Notes';
|
|
1176
|
+
let name = `${puzzle.name} ${noun}`;
|
|
1177
|
+
for (let i = 2; items.some(it => it.name === name); i++)
|
|
1178
|
+
name = `${puzzle.name} ${noun} ${i}`;
|
|
1179
|
+
skeleton.items = items;
|
|
1180
|
+
skeleton.items.push({ name, role: 'clue', category: 'Book', forPuzzle: puzzle.name, room: safe[0] });
|
|
1181
|
+
synthesized++;
|
|
1182
|
+
notes.push(`normalized: puzzle "${puzzle.name}" had no clue item; synthesized Book clue "${name}" in "${safe[0]}" (reachable without passing the barrier).`);
|
|
1183
|
+
}
|
|
867
1184
|
// REWARD-REFERENCE reconciliation. A rewardItem (a puzzle's, or the
|
|
868
1185
|
// winCondition's) must point at an UNPLACED role-"reward" item, but
|
|
869
1186
|
// models regularly point it at a placed loot/clue item instead -- and
|
|
@@ -911,8 +1228,84 @@ export function normalizeSkeleton(skeleton) {
|
|
|
911
1228
|
}
|
|
912
1229
|
return notes;
|
|
913
1230
|
}
|
|
1231
|
+
/**
|
|
1232
|
+
* THE ANSWER HAS TO BE WRITTEN DOWN. The other half of the clue problem,
|
|
1233
|
+
* and the more expensive half.
|
|
1234
|
+
*
|
|
1235
|
+
* validateClueItems demands a Book item, in a different room, whose
|
|
1236
|
+
* "details" contains the puzzle's requiredPhrase VERBATIM. buildItemsPrompt
|
|
1237
|
+
* interpolates every phrase and asks for exactly that -- and the model
|
|
1238
|
+
* still omits it. Measured 2026-08-26: six distinct puzzles each failed
|
|
1239
|
+
* this check three rounds running ("no Book-category item in a different
|
|
1240
|
+
* room whose details contains the answer 738251"), because classifyRepair
|
|
1241
|
+
* routes the fault to `items` and the regenerated chunk makes the same
|
|
1242
|
+
* mistake every time. Three regenerations of a 6000-token chunk, per
|
|
1243
|
+
* puzzle, to not write a number down.
|
|
1244
|
+
*
|
|
1245
|
+
* So write it down here. The clue object, its category, and its room are
|
|
1246
|
+
* already settled by the skeleton (assembleScene takes `category` from
|
|
1247
|
+
* skel, not from the detail); the only thing missing is the phrase inside
|
|
1248
|
+
* the prose. Appending it is deterministic, costs nothing, and removes
|
|
1249
|
+
* the single most expensive retry path in the generator.
|
|
1250
|
+
*
|
|
1251
|
+
* Runs from inside assembleScene so it applies on EVERY repair round --
|
|
1252
|
+
* placing it in requestAllDetails would miss a regenerated items chunk.
|
|
1253
|
+
*/
|
|
1254
|
+
export function ensureClueDetails(skeleton, details) {
|
|
1255
|
+
const notes = [];
|
|
1256
|
+
const byName = new Map((details.items ?? []).map(i => [i.name, i]));
|
|
1257
|
+
for (const puzzleDetail of details.puzzles ?? []) {
|
|
1258
|
+
const phrase = (puzzleDetail.requiredPhrase ?? '').trim();
|
|
1259
|
+
if (!phrase)
|
|
1260
|
+
continue;
|
|
1261
|
+
const clues = (skeleton.items ?? []).filter(i => i.role === 'clue' && i.forPuzzle === puzzleDetail.name);
|
|
1262
|
+
if (clues.length === 0)
|
|
1263
|
+
continue;
|
|
1264
|
+
// An item literally NAMED the phrase satisfies the validator too, and
|
|
1265
|
+
// so does any clue whose prose already carries it -- leave those be.
|
|
1266
|
+
const already = clues.some(c => {
|
|
1267
|
+
const d = byName.get(c.name);
|
|
1268
|
+
return !!d?.details && d.details.toLowerCase().includes(phrase.toLowerCase());
|
|
1269
|
+
}) || (skeleton.items ?? []).some(i => i.name.toLowerCase() === phrase.toLowerCase() && !!i.room);
|
|
1270
|
+
if (already)
|
|
1271
|
+
continue;
|
|
1272
|
+
// WRITE IT SOMEWHERE THE VALIDATOR WILL LOOK. A puzzle can carry
|
|
1273
|
+
// several clues and only a Book-category one counts (validateClueItems
|
|
1274
|
+
// checks category === 'Book', and ReadCommand refuses anything else --
|
|
1275
|
+
// an unreadable clue is not a clue). Caught by replaying a real
|
|
1276
|
+
// captured scene: its first clue was "Vane's Datachip", category
|
|
1277
|
+
// Datachip, so writing the answer there satisfied nothing and the
|
|
1278
|
+
// puzzle stayed undiscoverable.
|
|
1279
|
+
const target = clues.find(c => c.category === 'Book') ?? clues[0];
|
|
1280
|
+
if (target.category !== 'Book') {
|
|
1281
|
+
notes.push(`normalized: clue "${target.name}" was category ${target.category}; made it a Book so its answer is readable.`);
|
|
1282
|
+
target.category = 'Book';
|
|
1283
|
+
}
|
|
1284
|
+
let detail = byName.get(target.name);
|
|
1285
|
+
if (!detail) {
|
|
1286
|
+
// The items pass skipped the object entirely (common for a clue
|
|
1287
|
+
// this run synthesized). assembleScene fills the rest from
|
|
1288
|
+
// defaults; what matters is that the answer is legible.
|
|
1289
|
+
detail = {
|
|
1290
|
+
name: target.name,
|
|
1291
|
+
description: `A dog-eared record left where someone stopped caring who read it.`,
|
|
1292
|
+
size: 'Small', category: 'Book', shape: 'booklet',
|
|
1293
|
+
color: 'grubby', texture: 'thumbed', rating: 'Common', weight: 0.2,
|
|
1294
|
+
};
|
|
1295
|
+
details.items = details.items ?? [];
|
|
1296
|
+
details.items.push(detail);
|
|
1297
|
+
byName.set(detail.name, detail);
|
|
1298
|
+
}
|
|
1299
|
+
const body = (detail.details ?? '').trim();
|
|
1300
|
+
detail.details = `${body}${body ? ' ' : ''}Scrawled in the margin, in a different hand: "${phrase}".`;
|
|
1301
|
+
notes.push(`normalized: clue "${target.name}" didn't carry puzzle "${puzzleDetail.name}"'s answer; wrote it into the margin.`);
|
|
1302
|
+
}
|
|
1303
|
+
return notes;
|
|
1304
|
+
}
|
|
914
1305
|
/** Merges the skeleton's structure with the detail passes into a full seed. */
|
|
915
1306
|
export function assembleScene(skeleton, details, playerName) {
|
|
1307
|
+
// The answer has to be legible before anything is assembled from it.
|
|
1308
|
+
ensureClueDetails(skeleton, details);
|
|
916
1309
|
const roomDetail = new Map(details.rooms.map(r => [r.name, r]));
|
|
917
1310
|
const npcDetail = new Map(details.npcs.map(n => [n.name, n]));
|
|
918
1311
|
const puzzleDetail = new Map(details.puzzles.map(p => [p.name, p]));
|