@maka/maka-cli 5.69.0 → 5.71.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 +13 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/backlog.d.ts +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/backlog.js +3 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/backlog.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/call.d.ts +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/call.js +4 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/call.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/cast.js +6 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/cast.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/command-registry.js +24 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/command-registry.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/command.d.ts +18 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/command.js +20 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/command.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/grapple.js +12 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/grapple.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/hack.d.ts +11 -4
- package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js +11 -4
- package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/pan.js +14 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/pan.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/roles.d.ts +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/roles.js +3 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/roles.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/room-factory.js +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/factories/room-factory.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.d.ts +4 -0
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js +21 -2
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/item.d.ts +36 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/item.js +79 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/item.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.js +76 -62
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/player.d.ts +84 -12
- package/bundle/typescript/src/commands/game/sideQuest/models/player.js +94 -28
- package/bundle/typescript/src/commands/game/sideQuest/models/player.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/room.d.ts +7 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/room.js +23 -3
- package/bundle/typescript/src/commands/game/sideQuest/models/room.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/room-seed.d.ts +5 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-dump.d.ts +10 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-dump.js +91 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-dump.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog.d.ts +41 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog.js +63 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.d.ts +7 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.js +19 -5
- package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/crash-evidence.d.ts +53 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/crash-evidence.js +106 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/crash-evidence.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/detach-args.d.ts +66 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/detach-args.js +75 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/detach-args.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/outdoors.d.ts +25 -7
- package/bundle/typescript/src/commands/game/sideQuest/utilities/outdoors.js +27 -7
- package/bundle/typescript/src/commands/game/sideQuest/utilities/outdoors.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.js +9 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest-backlog.sub.cmd.js +16 -0
- package/bundle/typescript/src/commands/game/sideQuest-backlog.sub.cmd.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.d.ts +33 -0
- package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js +46 -6
- package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js.map +1 -1
- package/bundle/typescript/src/commands/login.js +38 -20
- package/bundle/typescript/src/commands/login.js.map +1 -1
- package/bundle/typescript/src/commands/logout.js +36 -17
- package/bundle/typescript/src/commands/logout.js.map +1 -1
- package/bundle/typescript/src/commands/register.js +24 -10
- package/bundle/typescript/src/commands/register.js.map +1 -1
- package/bundle/typescript/src/tools/ai/ai.class.d.ts +71 -0
- package/bundle/typescript/src/tools/ai/ai.class.js +202 -7
- package/bundle/typescript/src/tools/ai/ai.class.js.map +1 -1
- package/bundle/typescript/src/tools/https/connection-error.d.ts +79 -0
- package/bundle/typescript/src/tools/https/connection-error.js +134 -0
- package/bundle/typescript/src/tools/https/connection-error.js.map +1 -0
- package/bundle/typescript/src/tools/https/https.class.d.ts +1 -1
- package/bundle/typescript/src/tools/https/https.class.js +64 -14
- package/bundle/typescript/src/tools/https/https.class.js.map +1 -1
- package/bundle/typescript/src/tools/https/https.interface.d.ts +8 -0
- package/bundle/typescript/src/tools/https/maka-host.d.ts +43 -0
- package/bundle/typescript/src/tools/https/maka-host.js +8 -0
- package/bundle/typescript/src/tools/https/maka-host.js.map +1 -0
- package/package.json +13 -2
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { appendFileSync, mkdirSync } from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
/**
|
|
4
|
+
* THE CHILD'S DYING WORDS, WRITTEN DOWN (board item pfrdhaBkzmmdfmfqk).
|
|
5
|
+
*
|
|
6
|
+
* A hard crash in the game child used to leave no stack anywhere. The
|
|
7
|
+
* launcher spawned it with `stdio: 'inherit'`, so the child's stderr went
|
|
8
|
+
* to a terminal that blessed had taken over -- any dying message was
|
|
9
|
+
* painted over by the TUI and then wiped by the teardown escape
|
|
10
|
+
* sequence. The parent recorded the exit SHAPE (code/signal) and that was
|
|
11
|
+
* genuinely all we got: a live crash on 2026-08-29 reported
|
|
12
|
+
* code=4294967295 signal=null with no error, exception or traceback in
|
|
13
|
+
* any file.
|
|
14
|
+
*
|
|
15
|
+
* WHY THE CHILD'S OWN HANDLERS WERE NOT ENOUGH, since they already exist
|
|
16
|
+
* and this looks like a duplicate of them: ui.ts installs
|
|
17
|
+
* uncaughtException and unhandledRejection handlers that DO write a stack
|
|
18
|
+
* to game.log. They cover every death JavaScript can see. They cannot
|
|
19
|
+
* cover a death JavaScript never hears about -- a native abort, a libuv
|
|
20
|
+
* assertion, a fault in the terminfo layer, an OS-level termination --
|
|
21
|
+
* and 4294967295 (0xFFFFFFFF on Windows) is not a value Node produces for
|
|
22
|
+
* itself, so the crash that prompted this item was one of those. For that
|
|
23
|
+
* class, fd 2 is the ONLY channel, which is why the pipe is the fix and
|
|
24
|
+
* the handlers are not.
|
|
25
|
+
*
|
|
26
|
+
* SO: the launcher pipes fd 2 and tees it -- to the real terminal, so the
|
|
27
|
+
* behaviour a player sees is unchanged from `inherit`, and to game.log,
|
|
28
|
+
* so the next hard crash leaves a stack behind. stdin and stdout stay
|
|
29
|
+
* inherited; blessed needs a real TTY, and it writes exclusively to
|
|
30
|
+
* `this.output` (stdout) -- there is not one reference to stderr anywhere
|
|
31
|
+
* in the package, which is what makes fd 2 safe to take.
|
|
32
|
+
*
|
|
33
|
+
* The lines land in game.log next to the exit shape rather than in
|
|
34
|
+
* session.log, because session.log is the play-by-play a runner reads and
|
|
35
|
+
* a native stack is not part of anyone's evening. Evidence belongs in one
|
|
36
|
+
* place with the other evidence.
|
|
37
|
+
*/
|
|
38
|
+
/** Marks a line that came off the child's stderr, matching the
|
|
39
|
+
* `[INFO] [ts]` / `[ERROR] [ts]` shape game.log already uses so the
|
|
40
|
+
* crash reads in sequence with the entries around it. */
|
|
41
|
+
export const STDERR_TAG = 'STDERR';
|
|
42
|
+
/**
|
|
43
|
+
* Copies `stderr` to `terminal` byte-for-byte AND appends it to
|
|
44
|
+
* `logFilePath` a line at a time. Resolves when the stream ends, which is
|
|
45
|
+
* the caller's cue that the child has said everything it is going to say.
|
|
46
|
+
*
|
|
47
|
+
* WHOLE LINES, NOT CHUNKS. A stack trace does not arrive in tidy pieces:
|
|
48
|
+
* a `data` event boundary falls wherever the pipe buffer happened to
|
|
49
|
+
* fill, routinely mid-line and mid-word. Timestamping chunks would tag
|
|
50
|
+
* fragments and split single frames across two entries, so the tail is
|
|
51
|
+
* held until its newline arrives -- and flushed on end, so a process that
|
|
52
|
+
* dies without a trailing newline still leaves its last line.
|
|
53
|
+
*/
|
|
54
|
+
export function teeStderrToLog(stderr, logFilePath, terminal = process.stderr) {
|
|
55
|
+
return new Promise((resolve) => {
|
|
56
|
+
let pending = '';
|
|
57
|
+
let logUsable = logFilePath !== undefined;
|
|
58
|
+
const append = (line) => {
|
|
59
|
+
if (!logUsable || logFilePath === undefined)
|
|
60
|
+
return;
|
|
61
|
+
try {
|
|
62
|
+
mkdirSync(path.dirname(logFilePath), { recursive: true });
|
|
63
|
+
appendFileSync(logFilePath, `[${STDERR_TAG}] [${new Date().toISOString()}] ${line}\n`);
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
// An unwritable log must never cost us the terminal copy, which
|
|
67
|
+
// is the channel the player can actually see. Stop trying after
|
|
68
|
+
// the first failure rather than throwing once per line of a
|
|
69
|
+
// stack trace.
|
|
70
|
+
logUsable = false;
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
stderr.on('data', (chunk) => {
|
|
74
|
+
const text = typeof chunk === 'string' ? chunk : chunk.toString('utf8');
|
|
75
|
+
// The terminal copy is written FIRST and unsplit -- it is standing
|
|
76
|
+
// in for `inherit`, and inherit does not reformat.
|
|
77
|
+
try {
|
|
78
|
+
terminal.write(text);
|
|
79
|
+
}
|
|
80
|
+
catch { /* the terminal may be gone */ }
|
|
81
|
+
pending += text;
|
|
82
|
+
const lines = pending.split(/\r?\n/);
|
|
83
|
+
pending = lines.pop() ?? '';
|
|
84
|
+
for (const line of lines)
|
|
85
|
+
append(line);
|
|
86
|
+
});
|
|
87
|
+
// `end` alone is not enough: a stream torn down with the process can
|
|
88
|
+
// close without ever ending. Both settle the same promise and the
|
|
89
|
+
// flush runs once.
|
|
90
|
+
let settled = false;
|
|
91
|
+
const finish = () => {
|
|
92
|
+
if (settled)
|
|
93
|
+
return;
|
|
94
|
+
settled = true;
|
|
95
|
+
if (pending.length > 0) {
|
|
96
|
+
append(pending);
|
|
97
|
+
pending = '';
|
|
98
|
+
}
|
|
99
|
+
resolve();
|
|
100
|
+
};
|
|
101
|
+
stderr.on('end', finish);
|
|
102
|
+
stderr.on('close', finish);
|
|
103
|
+
stderr.on('error', finish);
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=crash-evidence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crash-evidence.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/utilities/crash-evidence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC/C,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH;;0DAE0D;AAC1D,MAAM,CAAC,MAAM,UAAU,GAAG,QAAQ,CAAC;AAEnC;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,cAAc,CAC5B,MAAgB,EAChB,WAA+B,EAC/B,WAAkC,OAAO,CAAC,MAAM;IAEhD,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QACnC,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,SAAS,GAAG,WAAW,KAAK,SAAS,CAAC;QAE1C,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,EAAE;YAC9B,IAAI,CAAC,SAAS,IAAI,WAAW,KAAK,SAAS;gBAAE,OAAO;YACpD,IAAI,CAAC;gBACH,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC1D,cAAc,CAAC,WAAW,EAAE,IAAI,UAAU,MAAM,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC;YACzF,CAAC;YAAC,MAAM,CAAC;gBACP,gEAAgE;gBAChE,gEAAgE;gBAChE,4DAA4D;gBAC5D,eAAe;gBACf,SAAS,GAAG,KAAK,CAAC;YACpB,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAsB,EAAE,EAAE;YAC3C,MAAM,IAAI,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACxE,mEAAmE;YACnE,mDAAmD;YACnD,IAAI,CAAC;gBAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,8BAA8B,CAAC,CAAC;YAEtE,OAAO,IAAI,IAAI,CAAC;YAChB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACrC,OAAO,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;YAC5B,KAAK,MAAM,IAAI,IAAI,KAAK;gBAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,qEAAqE;QACrE,kEAAkE;QAClE,mBAAmB;QACnB,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,MAAM,GAAG,GAAG,EAAE;YAClB,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,MAAM,CAAC,OAAO,CAAC,CAAC;gBAChB,OAAO,GAAG,EAAE,CAAC;YACf,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;QACF,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACzB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC3B,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* THE ARGUMENT SIDE OF `--detach` (board item N7iseYu6iignwwnuf), kept
|
|
3
|
+
* pure so it can be tested without a network, a login or a screen.
|
|
4
|
+
*
|
|
5
|
+
* The prose lives at the edge in backlog-dump.ts; what is decided here
|
|
6
|
+
* is only WHICH refusal applies, because that is the part with real
|
|
7
|
+
* cases in it and the part that would otherwise sit unreachable inside
|
|
8
|
+
* a command handler.
|
|
9
|
+
*/
|
|
10
|
+
/** Everything minimist can hand back for a flag that is not in its
|
|
11
|
+
* boolean set: absent, bare (`true`), one value, or repeated. */
|
|
12
|
+
export type RawFlag = boolean | string | string[] | undefined;
|
|
13
|
+
/**
|
|
14
|
+
* The shas an operator actually named.
|
|
15
|
+
*
|
|
16
|
+
* Accepts the three spellings that mean the same thing -- one value,
|
|
17
|
+
* the flag repeated, and one value with commas in it -- because an
|
|
18
|
+
* operator correcting a mistake should not also have to remember which
|
|
19
|
+
* of those this command wanted. `true` (the bare flag) yields NOTHING
|
|
20
|
+
* on purpose: it is the operator forgetting the sha, and reading it as
|
|
21
|
+
* "all of them" would be the most destructive possible guess at a
|
|
22
|
+
* missing argument.
|
|
23
|
+
*/
|
|
24
|
+
export declare function parseDetachShas(raw: RawFlag): string[];
|
|
25
|
+
/** Was the flag given at all, in any spelling? Deliberately separate
|
|
26
|
+
* from the sha list: `--detach` with nothing after it has to be
|
|
27
|
+
* answerable as a usage slip, and an empty list alone cannot tell the
|
|
28
|
+
* difference between that and never asking. */
|
|
29
|
+
export declare function detachAsked(raw: RawFlag): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Was this refusal the completed-item gate -- the one an operator can
|
|
32
|
+
* actually get past, by moving the item off `complete` first?
|
|
33
|
+
*
|
|
34
|
+
* PREFERS THE SERVER'S OWN ANSWER. `code` is the server saying which
|
|
35
|
+
* refusal it was; the fallback re-derives the gate from a board fetched
|
|
36
|
+
* BEFORE the call, which is a second opinion about somebody else's state
|
|
37
|
+
* and can be stale by the time the answer comes back. Deciding from
|
|
38
|
+
* `code` when it exists is the difference between knowing and inferring.
|
|
39
|
+
*
|
|
40
|
+
* `undefined` means the server did not say -- an older build, not "some
|
|
41
|
+
* other refusal" -- so the fallback runs. Once it does say, its word is
|
|
42
|
+
* taken even when the local guess disagrees: a disagreement means the
|
|
43
|
+
* local board was stale, which is exactly the case the fallback is worst
|
|
44
|
+
* at and the reason to prefer `code` in the first place.
|
|
45
|
+
*/
|
|
46
|
+
export declare function wantsEvidenceHint(input: {
|
|
47
|
+
code?: string;
|
|
48
|
+
status?: string;
|
|
49
|
+
attached: number;
|
|
50
|
+
detaching: number;
|
|
51
|
+
}): boolean;
|
|
52
|
+
export type DetachRefusal = 'needs-id' | 'no-sha' | 'one-verb-at-a-time';
|
|
53
|
+
/**
|
|
54
|
+
* Why this invocation cannot proceed, or undefined if it can.
|
|
55
|
+
*
|
|
56
|
+
* Checked BEFORE the network, because every one of these is a mistake
|
|
57
|
+
* the operator can see and fix, and a round trip would only delay the
|
|
58
|
+
* answer. Ordered most-fundamental first: without an item id the other
|
|
59
|
+
* two questions do not arise.
|
|
60
|
+
*/
|
|
61
|
+
export declare function detachRefusal(input: {
|
|
62
|
+
id?: string;
|
|
63
|
+
close?: boolean;
|
|
64
|
+
asked: boolean;
|
|
65
|
+
shas: string[];
|
|
66
|
+
}): DetachRefusal | undefined;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* THE ARGUMENT SIDE OF `--detach` (board item N7iseYu6iignwwnuf), kept
|
|
3
|
+
* pure so it can be tested without a network, a login or a screen.
|
|
4
|
+
*
|
|
5
|
+
* The prose lives at the edge in backlog-dump.ts; what is decided here
|
|
6
|
+
* is only WHICH refusal applies, because that is the part with real
|
|
7
|
+
* cases in it and the part that would otherwise sit unreachable inside
|
|
8
|
+
* a command handler.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* The shas an operator actually named.
|
|
12
|
+
*
|
|
13
|
+
* Accepts the three spellings that mean the same thing -- one value,
|
|
14
|
+
* the flag repeated, and one value with commas in it -- because an
|
|
15
|
+
* operator correcting a mistake should not also have to remember which
|
|
16
|
+
* of those this command wanted. `true` (the bare flag) yields NOTHING
|
|
17
|
+
* on purpose: it is the operator forgetting the sha, and reading it as
|
|
18
|
+
* "all of them" would be the most destructive possible guess at a
|
|
19
|
+
* missing argument.
|
|
20
|
+
*/
|
|
21
|
+
export function parseDetachShas(raw) {
|
|
22
|
+
const given = Array.isArray(raw) ? raw : typeof raw === 'string' ? [raw] : [];
|
|
23
|
+
return given
|
|
24
|
+
.flatMap(v => v.split(','))
|
|
25
|
+
.map(v => v.trim())
|
|
26
|
+
.filter(Boolean);
|
|
27
|
+
}
|
|
28
|
+
/** Was the flag given at all, in any spelling? Deliberately separate
|
|
29
|
+
* from the sha list: `--detach` with nothing after it has to be
|
|
30
|
+
* answerable as a usage slip, and an empty list alone cannot tell the
|
|
31
|
+
* difference between that and never asking. */
|
|
32
|
+
export function detachAsked(raw) {
|
|
33
|
+
return raw !== undefined && raw !== false;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Was this refusal the completed-item gate -- the one an operator can
|
|
37
|
+
* actually get past, by moving the item off `complete` first?
|
|
38
|
+
*
|
|
39
|
+
* PREFERS THE SERVER'S OWN ANSWER. `code` is the server saying which
|
|
40
|
+
* refusal it was; the fallback re-derives the gate from a board fetched
|
|
41
|
+
* BEFORE the call, which is a second opinion about somebody else's state
|
|
42
|
+
* and can be stale by the time the answer comes back. Deciding from
|
|
43
|
+
* `code` when it exists is the difference between knowing and inferring.
|
|
44
|
+
*
|
|
45
|
+
* `undefined` means the server did not say -- an older build, not "some
|
|
46
|
+
* other refusal" -- so the fallback runs. Once it does say, its word is
|
|
47
|
+
* taken even when the local guess disagrees: a disagreement means the
|
|
48
|
+
* local board was stale, which is exactly the case the fallback is worst
|
|
49
|
+
* at and the reason to prefer `code` in the first place.
|
|
50
|
+
*/
|
|
51
|
+
export function wantsEvidenceHint(input) {
|
|
52
|
+
if (input.code !== undefined)
|
|
53
|
+
return input.code === 'evidence-required';
|
|
54
|
+
return input.status === 'complete' && input.attached === input.detaching;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Why this invocation cannot proceed, or undefined if it can.
|
|
58
|
+
*
|
|
59
|
+
* Checked BEFORE the network, because every one of these is a mistake
|
|
60
|
+
* the operator can see and fix, and a round trip would only delay the
|
|
61
|
+
* answer. Ordered most-fundamental first: without an item id the other
|
|
62
|
+
* two questions do not arise.
|
|
63
|
+
*/
|
|
64
|
+
export function detachRefusal(input) {
|
|
65
|
+
if (!input.asked)
|
|
66
|
+
return undefined;
|
|
67
|
+
if (!input.id)
|
|
68
|
+
return 'needs-id';
|
|
69
|
+
if (input.close)
|
|
70
|
+
return 'one-verb-at-a-time';
|
|
71
|
+
if (input.shas.length === 0)
|
|
72
|
+
return 'no-sha';
|
|
73
|
+
return undefined;
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=detach-args.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detach-args.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/utilities/detach-args.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAAC,GAAY;IAC1C,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9E,OAAO,KAAK;SACT,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SAC1B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SAClB,MAAM,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC;AAED;;;gDAGgD;AAChD,MAAM,UAAU,WAAW,CAAC,GAAY;IACtC,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,KAAK,CAAC;AAC5C,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAKjC;IACC,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC,IAAI,KAAK,mBAAmB,CAAC;IACxE,OAAO,KAAK,CAAC,MAAM,KAAK,UAAU,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,SAAS,CAAC;AAC3E,CAAC;AAID;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,KAK7B;IACC,IAAI,CAAC,KAAK,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IACnC,IAAI,CAAC,KAAK,CAAC,EAAE;QAAE,OAAO,UAAU,CAAC;IACjC,IAAI,KAAK,CAAC,KAAK;QAAE,OAAO,oBAAoB,CAAC;IAC7C,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC7C,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -7,11 +7,29 @@
|
|
|
7
7
|
* doesn't. Keeping both callers on the same predicate is the point --
|
|
8
8
|
* a curb the generator guarantees must be a curb the dispatcher accepts.
|
|
9
9
|
*
|
|
10
|
-
* A
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
10
|
+
* A SEED CAN NOW SIMPLY SAY SO, and that is the fix this file was
|
|
11
|
+
* waiting for: `outdoors` on the room seed is believed outright and the
|
|
12
|
+
* guessing never runs. The heuristic below is the FALLBACK it was
|
|
13
|
+
* always mistaken for -- it stays because every seed written before
|
|
14
|
+
* this, and every room a model drafts without the field, still needs an
|
|
15
|
+
* answer.
|
|
16
|
+
*
|
|
17
|
+
* WHY THE GUESSING COULD NOT BE FIXED BY A BETTER REGEX, recorded
|
|
18
|
+
* because the last two attempts were both regex changes: the positive
|
|
19
|
+
* words are all perfectly happy indoors. Measured against names a
|
|
20
|
+
* generator really produces, the narrowed version still calls a
|
|
21
|
+
* Courtroom, a Marketing Office, a Gate House, a Docking Bay and a
|
|
22
|
+
* Parking Garage "outdoors" -- five false curbs, each of which hails a
|
|
23
|
+
* taxi inside a building. No word list separates "Rooftop Garden" from
|
|
24
|
+
* "Parking Garage"; only the room knows.
|
|
25
|
+
*
|
|
26
|
+
* CANON IS SILENT and deliberately so: asked directly, SR5 makes no
|
|
27
|
+
* mechanical distinction between indoors and outdoors. This is an
|
|
28
|
+
* ENGINE fact -- can a cab reach you -- not a rules one, so the field
|
|
29
|
+
* describes the physical world and invents no mechanic.
|
|
16
30
|
*/
|
|
17
|
-
export declare function isOutdoorsPlace(
|
|
31
|
+
export declare function isOutdoorsPlace(place: {
|
|
32
|
+
name: string;
|
|
33
|
+
roomType?: string;
|
|
34
|
+
outdoors?: boolean;
|
|
35
|
+
}): boolean;
|
|
@@ -7,14 +7,34 @@
|
|
|
7
7
|
* doesn't. Keeping both callers on the same predicate is the point --
|
|
8
8
|
* a curb the generator guarantees must be a curb the dispatcher accepts.
|
|
9
9
|
*
|
|
10
|
-
* A
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
10
|
+
* A SEED CAN NOW SIMPLY SAY SO, and that is the fix this file was
|
|
11
|
+
* waiting for: `outdoors` on the room seed is believed outright and the
|
|
12
|
+
* guessing never runs. The heuristic below is the FALLBACK it was
|
|
13
|
+
* always mistaken for -- it stays because every seed written before
|
|
14
|
+
* this, and every room a model drafts without the field, still needs an
|
|
15
|
+
* answer.
|
|
16
|
+
*
|
|
17
|
+
* WHY THE GUESSING COULD NOT BE FIXED BY A BETTER REGEX, recorded
|
|
18
|
+
* because the last two attempts were both regex changes: the positive
|
|
19
|
+
* words are all perfectly happy indoors. Measured against names a
|
|
20
|
+
* generator really produces, the narrowed version still calls a
|
|
21
|
+
* Courtroom, a Marketing Office, a Gate House, a Docking Bay and a
|
|
22
|
+
* Parking Garage "outdoors" -- five false curbs, each of which hails a
|
|
23
|
+
* taxi inside a building. No word list separates "Rooftop Garden" from
|
|
24
|
+
* "Parking Garage"; only the room knows.
|
|
25
|
+
*
|
|
26
|
+
* CANON IS SILENT and deliberately so: asked directly, SR5 makes no
|
|
27
|
+
* mechanical distinction between indoors and outdoors. This is an
|
|
28
|
+
* ENGINE fact -- can a cab reach you -- not a rules one, so the field
|
|
29
|
+
* describes the physical world and invents no mechanic.
|
|
16
30
|
*/
|
|
17
|
-
export function isOutdoorsPlace(
|
|
31
|
+
export function isOutdoorsPlace(place) {
|
|
32
|
+
// DECLARED BEATS GUESSED, and it is checked first so a seed that
|
|
33
|
+
// bothered to say "this is a roofed workshop called The Yard" is not
|
|
34
|
+
// overruled by its own name.
|
|
35
|
+
if (typeof place.outdoors === 'boolean')
|
|
36
|
+
return place.outdoors;
|
|
37
|
+
const { name, roomType } = place;
|
|
18
38
|
const haystack = `${roomType ?? ''} ${name}`.toLowerCase();
|
|
19
39
|
if (/under|tunnel|crypt|basement|cellar|sewer|vault|sub-|subterran/.test(haystack))
|
|
20
40
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outdoors.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/utilities/outdoors.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"outdoors.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/utilities/outdoors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,UAAU,eAAe,CAAC,KAA8D;IAC5F,iEAAiE;IACjE,qEAAqE;IACrE,6BAA6B;IAC7B,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC,QAAQ,CAAC;IAC/D,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IACjC,MAAM,QAAQ,GAAG,GAAG,QAAQ,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3D,IAAI,+DAA+D,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IACjG,qEAAqE;IACrE,8CAA8C;IAC9C,EAAE;IACF,kEAAkE;IAClE,iEAAiE;IACjE,6DAA6D;IAC7D,qEAAqE;IACrE,mEAAmE;IACnE,wDAAwD;IACxD,EAAE;IACF,oEAAoE;IACpE,oEAAoE;IACpE,6DAA6D;IAC7D,qEAAqE;IACrE,sDAAsD;IACtD,IAAI,4EAA4E,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9G,OAAO,2HAA2H,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACpJ,CAAC"}
|
|
@@ -410,7 +410,15 @@ export function resolveBodyAttack(scene, attacker, victim) {
|
|
|
410
410
|
const lines = [];
|
|
411
411
|
const wasPlane = victim.plane;
|
|
412
412
|
const weapon = attacker.getWeaponProfile();
|
|
413
|
-
|
|
413
|
+
// ACCURACY CAPS AN UNANSWERED STRIKE TOO (p.46-47). Nobody is home to
|
|
414
|
+
// dodge, so there is no defence roll to subtract -- which makes this
|
|
415
|
+
// the one attack in the game where every hit rolled lands. That is
|
|
416
|
+
// exactly where a missing limit is worth the most, so leaving it out
|
|
417
|
+
// "because the target cannot resist" would have inverted the rule.
|
|
418
|
+
// Same drawn-weapon test as the exchange (Player.getCarriedWeapon is
|
|
419
|
+
// holster-blind, weaponDrawn is the gate).
|
|
420
|
+
const drawn = attacker.weaponDrawn ? attacker.getCarriedWeapon() : null;
|
|
421
|
+
const attack = rollPool(attacker.getAttackPool(), attacker.getAttackLimit(drawn));
|
|
414
422
|
const soakPool = Math.max(0, victim.body + victim.getArmorValue());
|
|
415
423
|
lines.push(`${attacker.name} attacks ${victim.name}'s empty body with ${weapon.name} -- nobody's home to dodge:`);
|
|
416
424
|
lines.push(` Attack: ${formatRoll(attack)}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planes.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/utilities/planes.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAGvC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ;QAAE,OAAO,WAAW,KAAK,CAAC,OAAO,IAAI,MAAM,OAAO,CAAC;IAC/E,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9C,IAAI,KAAK,CAAC,KAAK,KAAK,OAAO;QAAE,OAAO,UAAU,KAAK,CAAC,WAAW,EAAE,IAAI,IAAI,WAAW,KAAK,KAAK,CAAC,OAAO,IAAI,MAAM,OAAO,CAAC;IACxH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,YAAY,CAAC,KAAY,EAAE,IAAU;IACnD,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC;AAChF,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,iBAAiB,CAAC,KAAY,EAAE,KAAa,EAAE,GAAW;IACjE,MAAM,IAAI,GAAG,KAAK,CAAC,eAAe,CAAC;IACnC,IAAI,CAAC,IAAI;QAAE,OAAO;IAClB,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9C,IAAI,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,YAAY,GAAG,CAAC,IAAI,GAAG,CAAC,KAAK,KAAK,MAAM;YAAE,SAAS;QAC7E,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EACjC,iBAAiB,KAAK,CAAC,IAAI,SAAS,GAAG,qPAAqP,KAAK,CAAC,IAAI,2KAA2K,EACjd,EAAE,SAAS,EAAE,IAAI,EAAE,CACpB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACb,MAAM,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,uBAAuB,KAAK,CAAC,IAAI,kBAAkB,GAAG,EAAE,CAAC,CAAC;QAClG,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAY,EAAE,KAAa,EAAE,IAAa;IACpE,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,wBAAwB,CAAC,CAAC;IAC1D,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,eAAe,CAAC;IACvC,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC;IACvB,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;IACrB,iEAAiE;IACjE,uEAAuE;IACvE,sCAAsC;IACtC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;IACxC,KAAK,CAAC,aAAa,CAAC,UAAU,EAAE,+CAA+C,IAAI,OAAO,CAAC,CAAC;IAC5F,KAAK,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC,IAAI,8BAA8B,KAAK,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;IACvF,MAAM,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,wBAAwB,IAAI,SAAS,KAAK,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,KAAK,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;IAClM,MAAM,UAAU,GAAG,IAAI,KAAK,KAAK;QAC/B,CAAC,CAAC,8HAA8H;QAChI,CAAC,CAAC,KAAK,CAAC,cAAc,EAAE;YACtB,CAAC,CAAC,yFAAyF;YAC3F,CAAC,CAAC,gEAAgE,CAAC;IACvE,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC,UAAU,GAAG,CAAC;QAClE,CAAC,CAAC,SAAS,KAAK,CAAC,UAAU,CAAC,IAAI,wBAAwB,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,GAAG;QACzF,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,KAAK,GAAG,KAAK,CAAC,cAAc,EAAE;QAClC,CAAC,CAAC,gJAAgJ,KAAK,CAAC,QAAQ,CAAC,IAAI,UAAU;QAC/K,CAAC,CAAC,QAAQ,KAAK,CAAC,UAAU,EAAE,IAAI,IAAI,MAAM,oGAAoG,KAAK,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC;IAC9K,OAAO;QACL,GAAG,KAAK,GAAG,UAAU,GAAG,QAAQ,EAAE;QAClC,IAAI,CAAC,+KAA+K,CAAC;KACtL,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAY,EAAE,KAAa,EAAE,IAA4C;IACnG,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC;IAC5B,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC;IAEvC,IAAI,IAAI,EAAE,MAAM,EAAE,CAAC;QACjB,kEAAkE;QAClE,0DAA0D;QAC1D,oEAAoE;QACpE,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,gDAAgD,CAAC,CAAC;QAC5E,KAAK,CAAC,IAAI,CAAC,0BAA0B,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC3D,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,IAAI,MAAM,EAAE,CAAC;gBACX,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBACxB,KAAK,CAAC,IAAI,CAAC,8BAA8B,KAAK,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,wBAAwB,KAAK,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;YAClI,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACtB,KAAK,CAAC,IAAI,CAAC,2CAA2C,KAAK,UAAU,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YAC9F,CAAC;QACH,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAC/C,CAAC;IAED,wEAAwE;IACxE,0DAA0D;IAC1D,IAAI,KAAK,CAAC,UAAU,EAAE,SAAS,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,UAAU,CAAC,IAAI,oFAAoF,CAAC,CAAC;IAChI,CAAC;IACD,qEAAqE;IACrE,kEAAkE;IAClE,6DAA6D;IAC7D,mEAAmE;IACnE,mEAAmE;IACnE,oEAAoE;IACpE,oEAAoE;IACpE,oEAAoE;IACpE,sEAAsE;IACtE,yDAAyD;IACzD,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC;IAC7B,MAAM,UAAU,GAAG,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;IAClE,IAAI,UAAU,EAAE,CAAC;QACf,IAAI,CAAC,IAAI,EAAE,MAAM,IAAI,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YAC9C,KAAK,CAAC,IAAI,CAAC,yMAAyM,CAAC,CAAC;QACxN,CAAC;aAAM,CAAC;YACN,IAAK,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,8CAA8C,CAAC,CAAC,CAAC,4CAA4C,CAAC,CAAC;YACjJ,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM;gBACrB,CAAC,CAAC,kFAAkF;gBACpF,CAAC,CAAC,qFAAqF,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;IACrB,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC;IAC1B,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;IAC7B,iEAAiE;IACjE,uEAAuE;IACvE,wEAAwE;IACxE,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;IAC/E,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,IAAI,EAAE,CAAC;QACT,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC;QAC7B,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,+BAA+B,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;IAC1D,CAAC;IACD,KAAK,CAAC,aAAa,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;IACnD,KAAK,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC,IAAI,4BAA4B,CAAC,CAAC;IAC/D,KAAK,CAAC,YAAY,EAAE,CAAC;IACrB,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU,CAAC,KAAY,EAAE,KAAa,EAAE,KAAW,EAAE,IAAa;IAChF,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,yBAAyB,CAAC,CAAC;IAC3D,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,eAAe,CAAC;IACvC,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC;IACtB,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;IACrB,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC;IAC1B,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;IACvB,KAAK,CAAC,aAAa,CAAC,YAAY,EAAE,GAAG,KAAK,CAAC,IAAI,+CAA+C,IAAI,OAAO,CAAC,CAAC;IAC3G,KAAK,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC,IAAI,gBAAgB,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;IAC1F,MAAM,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,gBAAgB,KAAK,CAAC,IAAI,KAAK,IAAI,cAAc,KAAK,CAAC,YAAY,EAAE,UAAU,KAAK,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;IAC/I,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,qCAAqC,KAAK,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3G,MAAM,UAAU,GAAG,IAAI,KAAK,KAAK;QAC/B,CAAC,CAAC,wGAAwG;QAC1G,CAAC,CAAC,4EAA4E,CAAC;IACjF,OAAO;QACL,yEAAyE,KAAK,CAAC,IAAI,wDAAwD,KAAK,CAAC,QAAQ,CAAC,IAAI,IAAI,UAAU,GAAG,QAAQ,EAAE;QACzL,IAAI,CAAC,qJAAqJ,CAAC;KAC5J,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC9B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,KAAY,EAAE,KAAa,EAAE,IAA4C;IAClG,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC;IAC5B,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC;IACvC,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC;IAEhC,IAAI,IAAI,EAAE,MAAM,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,kCAAkC,CAAC,CAAC;QAC9D,KAAK,CAAC,IAAI,CAAC,0BAA0B,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC3D,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,IAAI,MAAM,EAAE,CAAC;gBACX,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBACxB,KAAK,CAAC,IAAI,CAAC,sCAAsC,KAAK,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,wBAAwB,KAAK,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;YAC1I,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACtB,KAAK,CAAC,IAAI,CAAC,0CAA0C,KAAK,UAAU,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YAC7F,CAAC;QACH,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAChD,CAAC;QACD,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;QAC3D,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,gBAAgB,GAAG,MAAM,CAAC;QAChE,KAAK,CAAC,IAAI,CAAC,yDAAyD,gBAAgB,UAAU,gBAAgB,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;IACtI,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;IACvE,CAAC;IAED,IAAI,KAAK,EAAE,SAAS,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,IAAI,oFAAoF,CAAC,CAAC;IACpH,CAAC;IACD,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;IACrB,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC;IAC1B,KAAK,CAAC,WAAW,GAAG,SAAS,CAAC;IAC9B,IAAI,IAAI,EAAE,CAAC;QACT,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC;QAC7B,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,SAAS;YAClC,CAAC,CAAC,+BAA+B,IAAI,CAAC,IAAI,SAAS,KAAK,CAAC,IAAI,gCAAgC;YAC7F,CAAC,CAAC,+BAA+B,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;IACnD,CAAC;IACD,KAAK,CAAC,aAAa,CAAC,WAAW,EAAE,oCAAoC,CAAC,CAAC;IACvE,KAAK,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC,IAAI,6BAA6B,CAAC,CAAC;IAChE,KAAK,CAAC,YAAY,EAAE,CAAC;IACrB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAY,EAAE,KAAa;IACvD,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,kDAAkD,CAAC,CAAC;IACpF,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,eAAe,CAAC;IACvC,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC;IACvB,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC;IACtB,sEAAsE;IACtE,wCAAwC;IACxC,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC;IAC/B,KAAK,CAAC,aAAa,CAAC,UAAU,EAAE,qDAAqD,CAAC,CAAC;IACvF,KAAK,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC,IAAI,4BAA4B,KAAK,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;IACrF,MAAM,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,4BAA4B,KAAK,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;IAC5F,OAAO;QACL,wKAAwK,KAAK,CAAC,QAAQ,CAAC,IAAI,UAAU;QACrM,IAAI,CAAC,4JAA4J,CAAC;QAClK,IAAI,CAAC,6QAA6Q,CAAC;KACpR,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC9B,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa,EAAE,IAAU;IACpD,IAAI,CAAC,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAChC,IAAI,IAAI,CAAC,UAAU,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC;IAC7C,OAAO,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC;AACjC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAU,EAAE,WAAkB;IAC9D,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,YAAY,IAAI,CAAC,IAAI,mBAAmB,CAAC;IAClD,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,eAAe,IAAI,CAAC,IAAI,wBAAwB,CAAC;IAC1D,CAAC;IACD,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,GAAG,IAAI,CAAC,IAAI,kCAAkC,CAAC;IACxD,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,oBAAoB,IAAI,qBAAqB,CAAC;AACvD,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,CAAC;AAEnC,MAAM,UAAU,eAAe,CAAC,KAAwB,EAAE,QAAgB;IACxE,MAAM,IAAI,GAAG,KAAK,EAAE,eAAe,EAAE,EAAE,EAAE,IAAI,CAAC;IAC9C,OAAO,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAC/E,CAAC;AAED;sEACsE;AACtE,MAAM,UAAU,aAAa,CAAC,KAAwB,EAAE,QAAgB;IACtE,OAAO,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,cAAc,eAAe,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;AAC9F,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAAY,EACZ,KAAa,EACb,IAAU,EACV,UAAkB,EAClB,IAAkC;IAElC,MAAM,OAAO,GAAG,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC;SACxC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/E,MAAM,MAAM,GAAG,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACnE,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAE,CAAC;IAEpD,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;QACvD,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,QAAQ;gBACX,OAAO,GAAG,KAAK,CAAC,IAAI,sPAAsP,CAAC;YAC7Q,KAAK,OAAO;gBACV,OAAO,GAAG,KAAK,CAAC,IAAI,6NAA6N,CAAC;YACpP,KAAK,OAAO;gBACV,OAAO,GAAG,KAAK,CAAC,IAAI,uGAAuG,CAAC;QAChI,CAAC;IACH,CAAC;IACD,OAAO,GAAG,KAAK,CAAC,IAAI,4EAA4E,CAAC;AACnG,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAY,EAAE,KAAa,EAAE,IAA4C;IACpG,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC;IAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEvE,IAAI,IAAI,EAAE,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAE1C,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QACvE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9C,KAAK,CAAC,IAAI,CAAC,oBAAoB,IAAI,gBAAgB,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACzE,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACtB,KAAK,CAAC,IAAI,CAAC,uBAAuB,KAAK,UAAU,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAC1E,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;IACrB,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC;IACtB,IAAI,IAAI,EAAE,CAAC;QACT,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC;QAC7B,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,6BAA6B,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;IACxD,CAAC;IACD,KAAK,CAAC,aAAa,CAAC,uBAAuB,EAAE,wBAAwB,CAAC,CAAC;IACvE,KAAK,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC,IAAI,0BAA0B,CAAC,CAAC;IAC7D,KAAK,CAAC,YAAY,EAAE,CAAC;IACrB,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAY,EAAE,QAAsB,EAAE,MAAoB;IAC1F,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IACpC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC;IAE9B,MAAM,MAAM,GAAG,QAAQ,CAAC,gBAAgB,EAAE,CAAC;IAC3C,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;IACnE,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,YAAY,MAAM,CAAC,IAAI,sBAAsB,MAAM,CAAC,IAAI,6BAA6B,CAAC,CAAC;IAClH,KAAK,CAAC,IAAI,CAAC,cAAc,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAE/C,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;IAC3E,CAAC;SAAM,CAAC;QACN,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;QAC7C,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,KAAK,CAAC,IAAI,CAAC,UAAU,QAAQ,mBAAmB,CAAC,CAAC;QAClD,KAAK,CAAC,IAAI,CAAC,cAAc,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7C,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,KAAK,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;QACjE,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,8BAA8B,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,IAAI,aAAa,MAAM,CAAC,IAAI,kBAAkB,QAAQ,IAAI,CAAC,CAAC;IAErF,qEAAqE;IACrE,MAAM,MAAM,GAAG,wCAAwC,CAAC;IACxD,MAAM,IAAI,GAAG,QAAQ,KAAK,QAAQ;QAChC,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACtD,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1D,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IACxB,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
1
|
+
{"version":3,"file":"planes.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/utilities/planes.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,7 @@ Command.create({
|
|
|
16
16
|
{ name: 'commit', description: 'Only the items this commit closed (a sha, abbreviated as git allows).' },
|
|
17
17
|
{ name: 'all', boolFlag: true, description: 'Include closed items, which are hidden by default.' },
|
|
18
18
|
{ name: 'close', boolFlag: true, description: 'With an item id: close it outright -- filed in error, duplicate, no longer real. Remaining words are the reason.' },
|
|
19
|
+
{ name: 'detach', description: 'With an item id: take a wrongly attached commit back off it (a full sha, or several separated by commas). Admin only. Remaining words say why.' },
|
|
19
20
|
],
|
|
20
21
|
examples: [
|
|
21
22
|
'maka play:shadowrun:backlog',
|
|
@@ -23,6 +24,7 @@ Command.create({
|
|
|
23
24
|
'maka play:shadowrun:backlog --commit 359ad1fe',
|
|
24
25
|
'maka play:shadowrun:backlog b9YeNqTNBJuk9dbrk',
|
|
25
26
|
'maka play:shadowrun:backlog 4svHkpnDhWcXDzPsX --close filed by mistake',
|
|
27
|
+
'maka play:shadowrun:backlog b9YeNqTNBJuk9dbrk --detach 7ed04359 attached to the wrong row',
|
|
26
28
|
],
|
|
27
29
|
}, async function (args, opts) {
|
|
28
30
|
const { dumpBacklog } = await import('./sideQuest/utilities/backlog-dump.js');
|
|
@@ -32,6 +34,18 @@ Command.create({
|
|
|
32
34
|
// flag's own value is the first word of the reason and the rest are
|
|
33
35
|
// ordinary arguments. Its PRESENCE in any form means close.
|
|
34
36
|
const close = opts.close !== undefined && opts.close !== false;
|
|
37
|
+
// `--detach` TAKES ITS SHAS AS ITS OWN VALUE, unlike --close above:
|
|
38
|
+
// this flag is not in minimist's boolean set either, but here that
|
|
39
|
+
// works FOR us -- the sha is exactly what should bind to it. Repeated
|
|
40
|
+
// flags arrive as an array, commas split one value into several, and
|
|
41
|
+
// the bare flag arrives as `true`, which is the operator forgetting to
|
|
42
|
+
// say which sha rather than an instruction to strip them all.
|
|
43
|
+
const { parseDetachShas, detachAsked: wasAsked } = await import('./sideQuest/utilities/detach-args.js');
|
|
44
|
+
const detach = parseDetachShas(opts.detach);
|
|
45
|
+
const detachAsked = wasAsked(opts.detach);
|
|
46
|
+
// The trailing words are the reason either way, and only one of the
|
|
47
|
+
// two verbs can own them -- `--close` consumes its own first word, and
|
|
48
|
+
// `--detach` does not, because its value is the sha.
|
|
35
49
|
const reason = [typeof opts.close === 'string' ? opts.close : '', ...args.slice(1)]
|
|
36
50
|
.filter(Boolean).join(' ');
|
|
37
51
|
await dumpBacklog({
|
|
@@ -41,6 +55,8 @@ Command.create({
|
|
|
41
55
|
all: opts.all === true,
|
|
42
56
|
close,
|
|
43
57
|
reason,
|
|
58
|
+
detach,
|
|
59
|
+
detachAsked,
|
|
44
60
|
});
|
|
45
61
|
}, ShadowrunCommand);
|
|
46
62
|
//# sourceMappingURL=sideQuest-backlog.sub.cmd.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sideQuest-backlog.sub.cmd.js","sourceRoot":"","sources":["../../../../../src/commands/game/sideQuest-backlog.sub.cmd.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"sideQuest-backlog.sub.cmd.js","sourceRoot":"","sources":["../../../../../src/commands/game/sideQuest-backlog.sub.cmd.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAwC3C,OAAO,CAAC,MAAM,CAAC;IACb,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,yCAAyC;IAChD,SAAS,EAAE,qDAAqD;IAChE,WAAW,EAAE;;mEAEoD;IACjE,SAAS,EAAE;QACT,oEAAoE;QACpE,gEAAgE;QAChE,iEAAiE;QACjE,gDAAgD;QAChD,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,WAAW,EAAE,iCAAiC,EAAE;QACxI,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uEAAuE,EAAE;QACxG,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,oDAAoD,EAAE;QAClG,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,kHAAkH,EAAE;QAClK,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gJAAgJ,EAAE;KAClL;IACD,QAAQ,EAAE;QACR,6BAA6B;QAC7B,gDAAgD;QAChD,+CAA+C;QAC/C,+CAA+C;QAC/C,wEAAwE;QACxE,2FAA2F;KAC5F;CACF,EAAE,KAAK,WAAW,IAAc,EAAE,IAAqB;IACtD,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,uCAAuC,CAAC,CAAC;IAE9E,qEAAqE;IACrE,oEAAoE;IACpE,oEAAoE;IACpE,oEAAoE;IACpE,4DAA4D;IAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC;IAE/D,oEAAoE;IACpE,mEAAmE;IACnE,sEAAsE;IACtE,qEAAqE;IACrE,uEAAuE;IACvE,8DAA8D;IAC9D,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,sCAAsC,CAAC,CAAC;IACxG,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAE1C,oEAAoE;IACpE,uEAAuE;IACvE,qDAAqD;IACrD,MAAM,MAAM,GAAG,CAAC,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAChF,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE7B,MAAM,WAAW,CAAC;QAChB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;QACX,GAAG,EAAE,IAAI,CAAC,GAAG,KAAK,IAAI;QACtB,KAAK;QACL,MAAM;QACN,MAAM;QACN,WAAW;KACZ,CAAC,CAAC;AACL,CAAC,EAAE,gBAAgB,CAAC,CAAC"}
|
|
@@ -1,3 +1,36 @@
|
|
|
1
1
|
import { Command } from '../../command.js';
|
|
2
|
+
/**
|
|
3
|
+
* SPAWN THE GAME AND BE ITS JANITOR.
|
|
4
|
+
*
|
|
5
|
+
* The parent OWNS the terminal rescue, and that is not incidental: the
|
|
6
|
+
* child holds the terminal through blessed, and when it dies hard -- a
|
|
7
|
+
* signal, a native abort -- none of its own JS cleanup runs. The kernel
|
|
8
|
+
* always tells the parent how the child ended, so the parent is the one
|
|
9
|
+
* guaranteed janitor. Without this, blessed's armed mouse tracking
|
|
10
|
+
* floods the shell with coordinate bytes on every cursor move.
|
|
11
|
+
*
|
|
12
|
+
* Extracted so the repro bench launches exactly the way an ordinary run
|
|
13
|
+
* does, rather than growing a second copy of the same care.
|
|
14
|
+
*
|
|
15
|
+
* `logFilePath` is the child's own game.log, and the parent needs it for
|
|
16
|
+
* the same reason it needs the exit shape: to write down a death the
|
|
17
|
+
* child never got to describe. See utilities/crash-evidence.ts for why
|
|
18
|
+
* fd 2 is piped and why the child's existing crash handlers do not cover
|
|
19
|
+
* this. Passed in rather than read back out of the launch file, because
|
|
20
|
+
* a corrupt launch file is one of the ways the child dies -- reading the
|
|
21
|
+
* path from it would lose exactly the crash that destroyed it.
|
|
22
|
+
*
|
|
23
|
+
* EXPORTED as the verification seam, and for nothing else. The evidence
|
|
24
|
+
* path can only be proved by a real child really dying, which means
|
|
25
|
+
* driving THIS function rather than a lookalike -- point it at a launch
|
|
26
|
+
* file containing invalid JSON and the child dies in runFromArgv's
|
|
27
|
+
* JSON.parse, before ui.ts installs any of its handlers. That is the
|
|
28
|
+
* exact shape of crash the item is about, and the stack has to land in
|
|
29
|
+
* game.log. Nothing in the CLI imports it.
|
|
30
|
+
*/
|
|
31
|
+
export declare function spawnGame(launchFilePath: string, logFilePath?: string): Promise<{
|
|
32
|
+
code: number | null;
|
|
33
|
+
signal: NodeJS.Signals | null;
|
|
34
|
+
}>;
|
|
2
35
|
declare const ShadowrunCommand: Command;
|
|
3
36
|
export default ShadowrunCommand;
|
|
@@ -19,10 +19,32 @@ import { spawnSelf } from '../../tools/self-spawn/self-spawn.js';
|
|
|
19
19
|
*
|
|
20
20
|
* Extracted so the repro bench launches exactly the way an ordinary run
|
|
21
21
|
* does, rather than growing a second copy of the same care.
|
|
22
|
+
*
|
|
23
|
+
* `logFilePath` is the child's own game.log, and the parent needs it for
|
|
24
|
+
* the same reason it needs the exit shape: to write down a death the
|
|
25
|
+
* child never got to describe. See utilities/crash-evidence.ts for why
|
|
26
|
+
* fd 2 is piped and why the child's existing crash handlers do not cover
|
|
27
|
+
* this. Passed in rather than read back out of the launch file, because
|
|
28
|
+
* a corrupt launch file is one of the ways the child dies -- reading the
|
|
29
|
+
* path from it would lose exactly the crash that destroyed it.
|
|
30
|
+
*
|
|
31
|
+
* EXPORTED as the verification seam, and for nothing else. The evidence
|
|
32
|
+
* path can only be proved by a real child really dying, which means
|
|
33
|
+
* driving THIS function rather than a lookalike -- point it at a launch
|
|
34
|
+
* file containing invalid JSON and the child dies in runFromArgv's
|
|
35
|
+
* JSON.parse, before ui.ts installs any of its handlers. That is the
|
|
36
|
+
* exact shape of crash the item is about, and the stack has to land in
|
|
37
|
+
* game.log. Nothing in the CLI imports it.
|
|
22
38
|
*/
|
|
23
|
-
async function spawnGame(launchFilePath) {
|
|
39
|
+
export async function spawnGame(launchFilePath, logFilePath) {
|
|
24
40
|
const { TERMINAL_RESET_SEQUENCE } = await import('./sideQuest/utilities/terminal-reset.js');
|
|
25
|
-
const
|
|
41
|
+
const { teeStderrToLog } = await import('./sideQuest/utilities/crash-evidence.js');
|
|
42
|
+
// stdin and stdout STAY INHERITED -- blessed needs a real TTY and
|
|
43
|
+
// renders to stdout. Only fd 2 changes.
|
|
44
|
+
const child = spawnSelf(['--sidequest-ui', launchFilePath], { stdio: ['inherit', 'inherit', 'pipe'] });
|
|
45
|
+
const drained = child.stderr
|
|
46
|
+
? teeStderrToLog(child.stderr, logFilePath)
|
|
47
|
+
: Promise.resolve();
|
|
26
48
|
const result = await new Promise((resolve) => {
|
|
27
49
|
child.on('error', (err) => {
|
|
28
50
|
Log.error(`Failed to start side quest: ${err.message}`);
|
|
@@ -30,6 +52,16 @@ async function spawnGame(launchFilePath) {
|
|
|
30
52
|
});
|
|
31
53
|
child.on('exit', (exitCode, exitSignal) => resolve({ code: exitCode, signal: exitSignal }));
|
|
32
54
|
});
|
|
55
|
+
// THE LAST WORDS ARE STILL IN FLIGHT WHEN 'exit' FIRES. The kernel
|
|
56
|
+
// reports the death as soon as it happens; whatever the child wrote in
|
|
57
|
+
// its final moment may still be sitting in the pipe. Waiting for the
|
|
58
|
+
// stream to end is what makes the difference between logging a stack
|
|
59
|
+
// and logging its first two frames.
|
|
60
|
+
//
|
|
61
|
+
// BOUNDED, because a grandchild that inherited fd 2 and outlived its
|
|
62
|
+
// parent holds the write end open, and a launcher that never returns
|
|
63
|
+
// would be a worse bug than a truncated trace.
|
|
64
|
+
await Promise.race([drained, new Promise(r => setTimeout(r, 2000).unref())]);
|
|
33
65
|
// Unconditional: a no-op when the child restored itself, the only
|
|
34
66
|
// thing standing when it could not.
|
|
35
67
|
process.stdout.write(TERMINAL_RESET_SEQUENCE);
|
|
@@ -94,11 +126,16 @@ async function launchReproBench(repro, item, makaDir) {
|
|
|
94
126
|
repro.expect ? `passing looks like: ${repro.expect}` : '',
|
|
95
127
|
item ? `"review accept <what you saw>" or "review reject <what is wrong>" answers it.` : '',
|
|
96
128
|
].filter(Boolean).join('\n');
|
|
129
|
+
// One const, two readers: the child is TOLD this path in its launch
|
|
130
|
+
// file, and the parent WRITES to it when the child dies before it can.
|
|
131
|
+
// Two spellings of the same path would put half the evidence in a file
|
|
132
|
+
// nobody reads.
|
|
133
|
+
const logFilePath = path.join(reproDir, 'game.log');
|
|
97
134
|
writeFileSync(launchFilePath, JSON.stringify({
|
|
98
135
|
playerName: 'Testbed',
|
|
99
136
|
scene: built.seed,
|
|
100
137
|
options: {
|
|
101
|
-
logFilePath
|
|
138
|
+
logFilePath,
|
|
102
139
|
generationNotice: brief,
|
|
103
140
|
// AI ON, exactly as an ordinary run has it. Hardcoding false
|
|
104
141
|
// would gut the benches that matter most: several items are about
|
|
@@ -120,7 +157,7 @@ async function launchReproBench(repro, item, makaDir) {
|
|
|
120
157
|
reproItemId: item?.id,
|
|
121
158
|
},
|
|
122
159
|
}), 'utf8');
|
|
123
|
-
await spawnGame(launchFilePath);
|
|
160
|
+
await spawnGame(launchFilePath, logFilePath);
|
|
124
161
|
return 'ok';
|
|
125
162
|
}
|
|
126
163
|
/**
|
|
@@ -900,7 +937,7 @@ const ShadowrunCommand = Command.create({
|
|
|
900
937
|
let code = null;
|
|
901
938
|
let signal = null;
|
|
902
939
|
for (let leg = 0; leg < 3; leg++) {
|
|
903
|
-
({ code, signal } = await spawnGame(launchFilePath));
|
|
940
|
+
({ code, signal } = await spawnGame(launchFilePath, logFilePath));
|
|
904
941
|
const { takeHandoff } = await import('./sideQuest/utilities/handoff.js');
|
|
905
942
|
const handoff = takeHandoff(sessionDir);
|
|
906
943
|
if (!handoff)
|
|
@@ -927,7 +964,10 @@ const ShadowrunCommand = Command.create({
|
|
|
927
964
|
}), "utf8");
|
|
928
965
|
}
|
|
929
966
|
// The child can't log a death it never saw -- record the exit
|
|
930
|
-
// shape parent-side so the next hard crash leaves evidence.
|
|
967
|
+
// shape parent-side so the next hard crash leaves evidence. No
|
|
968
|
+
// longer the ONLY evidence: spawnGame now tees the child's stderr
|
|
969
|
+
// into this same file, so the shape lands underneath whatever the
|
|
970
|
+
// child managed to say on its way out.
|
|
931
971
|
try {
|
|
932
972
|
const { appendFileSync } = await import('fs');
|
|
933
973
|
appendFileSync(logFilePath, `[INFO] [${new Date().toISOString()}] child exited: code=${code} signal=${signal}\n`);
|