@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.
Files changed (86) hide show
  1. package/bundle/typescript/package.json +13 -2
  2. package/bundle/typescript/src/commands/game/sideQuest/commands/backlog.d.ts +1 -0
  3. package/bundle/typescript/src/commands/game/sideQuest/commands/backlog.js +3 -1
  4. package/bundle/typescript/src/commands/game/sideQuest/commands/backlog.js.map +1 -1
  5. package/bundle/typescript/src/commands/game/sideQuest/commands/call.d.ts +1 -0
  6. package/bundle/typescript/src/commands/game/sideQuest/commands/call.js +4 -1
  7. package/bundle/typescript/src/commands/game/sideQuest/commands/call.js.map +1 -1
  8. package/bundle/typescript/src/commands/game/sideQuest/commands/cast.js +6 -0
  9. package/bundle/typescript/src/commands/game/sideQuest/commands/cast.js.map +1 -1
  10. package/bundle/typescript/src/commands/game/sideQuest/commands/command-registry.js +24 -0
  11. package/bundle/typescript/src/commands/game/sideQuest/commands/command-registry.js.map +1 -1
  12. package/bundle/typescript/src/commands/game/sideQuest/commands/command.d.ts +18 -0
  13. package/bundle/typescript/src/commands/game/sideQuest/commands/command.js +20 -0
  14. package/bundle/typescript/src/commands/game/sideQuest/commands/command.js.map +1 -1
  15. package/bundle/typescript/src/commands/game/sideQuest/commands/grapple.js +12 -2
  16. package/bundle/typescript/src/commands/game/sideQuest/commands/grapple.js.map +1 -1
  17. package/bundle/typescript/src/commands/game/sideQuest/commands/hack.d.ts +11 -4
  18. package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js +11 -4
  19. package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js.map +1 -1
  20. package/bundle/typescript/src/commands/game/sideQuest/commands/pan.js +14 -1
  21. package/bundle/typescript/src/commands/game/sideQuest/commands/pan.js.map +1 -1
  22. package/bundle/typescript/src/commands/game/sideQuest/commands/roles.d.ts +1 -0
  23. package/bundle/typescript/src/commands/game/sideQuest/commands/roles.js +3 -1
  24. package/bundle/typescript/src/commands/game/sideQuest/commands/roles.js.map +1 -1
  25. package/bundle/typescript/src/commands/game/sideQuest/factories/room-factory.js +1 -0
  26. package/bundle/typescript/src/commands/game/sideQuest/factories/room-factory.js.map +1 -1
  27. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.d.ts +4 -0
  28. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js +21 -2
  29. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js.map +1 -1
  30. package/bundle/typescript/src/commands/game/sideQuest/models/item.d.ts +36 -0
  31. package/bundle/typescript/src/commands/game/sideQuest/models/item.js +79 -0
  32. package/bundle/typescript/src/commands/game/sideQuest/models/item.js.map +1 -1
  33. package/bundle/typescript/src/commands/game/sideQuest/models/npc.js +76 -62
  34. package/bundle/typescript/src/commands/game/sideQuest/models/npc.js.map +1 -1
  35. package/bundle/typescript/src/commands/game/sideQuest/models/player.d.ts +84 -12
  36. package/bundle/typescript/src/commands/game/sideQuest/models/player.js +94 -28
  37. package/bundle/typescript/src/commands/game/sideQuest/models/player.js.map +1 -1
  38. package/bundle/typescript/src/commands/game/sideQuest/models/room.d.ts +7 -0
  39. package/bundle/typescript/src/commands/game/sideQuest/models/room.js +23 -3
  40. package/bundle/typescript/src/commands/game/sideQuest/models/room.js.map +1 -1
  41. package/bundle/typescript/src/commands/game/sideQuest/types/seed/room-seed.d.ts +5 -0
  42. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-dump.d.ts +10 -0
  43. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-dump.js +91 -1
  44. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-dump.js.map +1 -1
  45. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog.d.ts +41 -0
  46. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog.js +63 -0
  47. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog.js.map +1 -1
  48. package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.d.ts +7 -0
  49. package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.js +19 -5
  50. package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.js.map +1 -1
  51. package/bundle/typescript/src/commands/game/sideQuest/utilities/crash-evidence.d.ts +53 -0
  52. package/bundle/typescript/src/commands/game/sideQuest/utilities/crash-evidence.js +106 -0
  53. package/bundle/typescript/src/commands/game/sideQuest/utilities/crash-evidence.js.map +1 -0
  54. package/bundle/typescript/src/commands/game/sideQuest/utilities/detach-args.d.ts +66 -0
  55. package/bundle/typescript/src/commands/game/sideQuest/utilities/detach-args.js +75 -0
  56. package/bundle/typescript/src/commands/game/sideQuest/utilities/detach-args.js.map +1 -0
  57. package/bundle/typescript/src/commands/game/sideQuest/utilities/outdoors.d.ts +25 -7
  58. package/bundle/typescript/src/commands/game/sideQuest/utilities/outdoors.js +27 -7
  59. package/bundle/typescript/src/commands/game/sideQuest/utilities/outdoors.js.map +1 -1
  60. package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.js +9 -1
  61. package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.js.map +1 -1
  62. package/bundle/typescript/src/commands/game/sideQuest-backlog.sub.cmd.js +16 -0
  63. package/bundle/typescript/src/commands/game/sideQuest-backlog.sub.cmd.js.map +1 -1
  64. package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.d.ts +33 -0
  65. package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js +46 -6
  66. package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js.map +1 -1
  67. package/bundle/typescript/src/commands/login.js +38 -20
  68. package/bundle/typescript/src/commands/login.js.map +1 -1
  69. package/bundle/typescript/src/commands/logout.js +36 -17
  70. package/bundle/typescript/src/commands/logout.js.map +1 -1
  71. package/bundle/typescript/src/commands/register.js +24 -10
  72. package/bundle/typescript/src/commands/register.js.map +1 -1
  73. package/bundle/typescript/src/tools/ai/ai.class.d.ts +71 -0
  74. package/bundle/typescript/src/tools/ai/ai.class.js +202 -7
  75. package/bundle/typescript/src/tools/ai/ai.class.js.map +1 -1
  76. package/bundle/typescript/src/tools/https/connection-error.d.ts +79 -0
  77. package/bundle/typescript/src/tools/https/connection-error.js +134 -0
  78. package/bundle/typescript/src/tools/https/connection-error.js.map +1 -0
  79. package/bundle/typescript/src/tools/https/https.class.d.ts +1 -1
  80. package/bundle/typescript/src/tools/https/https.class.js +64 -14
  81. package/bundle/typescript/src/tools/https/https.class.js.map +1 -1
  82. package/bundle/typescript/src/tools/https/https.interface.d.ts +8 -0
  83. package/bundle/typescript/src/tools/https/maka-host.d.ts +43 -0
  84. package/bundle/typescript/src/tools/https/maka-host.js +8 -0
  85. package/bundle/typescript/src/tools/https/maka-host.js.map +1 -0
  86. 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 NAME HEURISTIC STANDING IN FOR A SPATIAL FACT, and it cannot be
11
- * made correct by a better regex -- only narrower. Whether a room has a
12
- * roof is a property of the room, and the durable fix is for a seed to
13
- * SAY so rather than for this to guess from an English word. That is
14
- * filed; what is here is the guessing made less wrong, in the direction
15
- * that fails safely.
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(name: string, roomType?: string): boolean;
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 NAME HEURISTIC STANDING IN FOR A SPATIAL FACT, and it cannot be
11
- * made correct by a better regex -- only narrower. Whether a room has a
12
- * roof is a property of the room, and the durable fix is for a seed to
13
- * SAY so rather than for this to guess from an English word. That is
14
- * filed; what is here is the guessing made less wrong, in the direction
15
- * that fails safely.
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(name, roomType) {
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;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,QAAiB;IAC7D,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"}
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
- const attack = rollPool(attacker.getAttackPool());
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":"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"}
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;AAmC3C,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;KACnK;IACD,QAAQ,EAAE;QACR,6BAA6B;QAC7B,gDAAgD;QAChD,+CAA+C;QAC/C,+CAA+C;QAC/C,wEAAwE;KACzE;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;IAC/D,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;KACP,CAAC,CAAC;AACL,CAAC,EAAE,gBAAgB,CAAC,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 child = spawnSelf(['--sidequest-ui', launchFilePath], { stdio: 'inherit' });
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: path.join(reproDir, 'game.log'),
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`);