@maka/maka-cli 5.63.0 → 5.64.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 (82) hide show
  1. package/bundle/typescript/package.json +1 -1
  2. package/bundle/typescript/src/commands/game/sideQuest/commands/ar.js +29 -8
  3. package/bundle/typescript/src/commands/game/sideQuest/commands/ar.js.map +1 -1
  4. package/bundle/typescript/src/commands/game/sideQuest/commands/ask.d.ts +42 -0
  5. package/bundle/typescript/src/commands/game/sideQuest/commands/ask.js +86 -3
  6. package/bundle/typescript/src/commands/game/sideQuest/commands/ask.js.map +1 -1
  7. package/bundle/typescript/src/commands/game/sideQuest/commands/backlog.js +5 -0
  8. package/bundle/typescript/src/commands/game/sideQuest/commands/backlog.js.map +1 -1
  9. package/bundle/typescript/src/commands/game/sideQuest/commands/call.js +29 -5
  10. package/bundle/typescript/src/commands/game/sideQuest/commands/call.js.map +1 -1
  11. package/bundle/typescript/src/commands/game/sideQuest/commands/contacts.js +22 -1
  12. package/bundle/typescript/src/commands/game/sideQuest/commands/contacts.js.map +1 -1
  13. package/bundle/typescript/src/commands/game/sideQuest/commands/jobs.js +16 -9
  14. package/bundle/typescript/src/commands/game/sideQuest/commands/jobs.js.map +1 -1
  15. package/bundle/typescript/src/commands/game/sideQuest/commands/journal.d.ts +44 -0
  16. package/bundle/typescript/src/commands/game/sideQuest/commands/journal.js +136 -0
  17. package/bundle/typescript/src/commands/game/sideQuest/commands/journal.js.map +1 -0
  18. package/bundle/typescript/src/commands/game/sideQuest/commands/look.d.ts +20 -0
  19. package/bundle/typescript/src/commands/game/sideQuest/commands/look.js +99 -3
  20. package/bundle/typescript/src/commands/game/sideQuest/commands/look.js.map +1 -1
  21. package/bundle/typescript/src/commands/game/sideQuest/commands/players.js +8 -2
  22. package/bundle/typescript/src/commands/game/sideQuest/commands/players.js.map +1 -1
  23. package/bundle/typescript/src/commands/game/sideQuest/commands/search.js +27 -4
  24. package/bundle/typescript/src/commands/game/sideQuest/commands/search.js.map +1 -1
  25. package/bundle/typescript/src/commands/game/sideQuest/commands/sheet.js +30 -1
  26. package/bundle/typescript/src/commands/game/sideQuest/commands/sheet.js.map +1 -1
  27. package/bundle/typescript/src/commands/game/sideQuest/commands/silent.js +11 -1
  28. package/bundle/typescript/src/commands/game/sideQuest/commands/silent.js.map +1 -1
  29. package/bundle/typescript/src/commands/game/sideQuest/commands/talk.d.ts +47 -0
  30. package/bundle/typescript/src/commands/game/sideQuest/commands/talk.js +91 -5
  31. package/bundle/typescript/src/commands/game/sideQuest/commands/talk.js.map +1 -1
  32. package/bundle/typescript/src/commands/game/sideQuest/commands/time.d.ts +20 -0
  33. package/bundle/typescript/src/commands/game/sideQuest/commands/time.js +61 -0
  34. package/bundle/typescript/src/commands/game/sideQuest/commands/time.js.map +1 -0
  35. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.d.ts +45 -0
  36. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js +150 -9
  37. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js.map +1 -1
  38. package/bundle/typescript/src/commands/game/sideQuest/game.d.ts +104 -0
  39. package/bundle/typescript/src/commands/game/sideQuest/game.js +257 -11
  40. package/bundle/typescript/src/commands/game/sideQuest/game.js.map +1 -1
  41. package/bundle/typescript/src/commands/game/sideQuest/headless-harness.d.ts +78 -0
  42. package/bundle/typescript/src/commands/game/sideQuest/headless-harness.js +188 -0
  43. package/bundle/typescript/src/commands/game/sideQuest/headless-harness.js.map +1 -0
  44. package/bundle/typescript/src/commands/game/sideQuest/headless.d.ts +5 -0
  45. package/bundle/typescript/src/commands/game/sideQuest/headless.js +54 -0
  46. package/bundle/typescript/src/commands/game/sideQuest/headless.js.map +1 -1
  47. package/bundle/typescript/src/commands/game/sideQuest/models/npc.d.ts +62 -0
  48. package/bundle/typescript/src/commands/game/sideQuest/models/npc.js +121 -9
  49. package/bundle/typescript/src/commands/game/sideQuest/models/npc.js.map +1 -1
  50. package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.d.ts +9 -0
  51. package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.js +28 -1
  52. package/bundle/typescript/src/commands/game/sideQuest/models/puzzle.js.map +1 -1
  53. package/bundle/typescript/src/commands/game/sideQuest/models/room.d.ts +67 -7
  54. package/bundle/typescript/src/commands/game/sideQuest/models/room.js +116 -19
  55. package/bundle/typescript/src/commands/game/sideQuest/models/room.js.map +1 -1
  56. package/bundle/typescript/src/commands/game/sideQuest/utilities/ar.d.ts +22 -0
  57. package/bundle/typescript/src/commands/game/sideQuest/utilities/ar.js +26 -0
  58. package/bundle/typescript/src/commands/game/sideQuest/utilities/ar.js.map +1 -1
  59. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-dump.js +6 -0
  60. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-dump.js.map +1 -1
  61. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog.d.ts +6 -0
  62. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog.js.map +1 -1
  63. package/bundle/typescript/src/commands/game/sideQuest/utilities/log-style.d.ts +22 -0
  64. package/bundle/typescript/src/commands/game/sideQuest/utilities/log-style.js +24 -0
  65. package/bundle/typescript/src/commands/game/sideQuest/utilities/log-style.js.map +1 -1
  66. package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.js +30 -5
  67. package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.js.map +1 -1
  68. package/bundle/typescript/src/commands/game/sideQuest/utilities/playtester.d.ts +50 -0
  69. package/bundle/typescript/src/commands/game/sideQuest/utilities/playtester.js +43 -0
  70. package/bundle/typescript/src/commands/game/sideQuest/utilities/playtester.js.map +1 -0
  71. package/bundle/typescript/src/commands/game/sideQuest/utilities/room-grid.d.ts +11 -0
  72. package/bundle/typescript/src/commands/game/sideQuest/utilities/room-grid.js +42 -28
  73. package/bundle/typescript/src/commands/game/sideQuest/utilities/room-grid.js.map +1 -1
  74. package/bundle/typescript/src/commands/game/sideQuest/utilities/room-view.js +66 -8
  75. package/bundle/typescript/src/commands/game/sideQuest/utilities/room-view.js.map +1 -1
  76. package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.d.ts +45 -3
  77. package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.js +41 -6
  78. package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.js.map +1 -1
  79. package/bundle/typescript/src/commands/game/sideQuest/utilities/world-clock.d.ts +83 -0
  80. package/bundle/typescript/src/commands/game/sideQuest/utilities/world-clock.js +106 -0
  81. package/bundle/typescript/src/commands/game/sideQuest/utilities/world-clock.js.map +1 -0
  82. package/package.json +1 -1
@@ -65,6 +65,35 @@ export class SheetCommand extends Command {
65
65
  const magicNote = a.adept ? ' (adept)'
66
66
  : a.isAwakened() ? ' (awakened)'
67
67
  : a.baseMagic > 0 ? ' (burned out)' : '';
68
+ // EDGE, READ HONESTLY (backlog item A -- "I didn't push this number
69
+ // once this run"). Two separate things made that number lie:
70
+ //
71
+ // 1. The ceiling printed was `a.edge`, the BASE, while the pool
72
+ // refills to edge + lifestyleEdgeBonus (Player.refreshEdge). On
73
+ // a Middle or High lifestyle that printed "Edge 3 (4 left)" --
74
+ // more left than the maximum -- and, worse, a runner who had
75
+ // burned exactly one point read "Edge 3 (3 left)" and saw a
76
+ // pool that looked untouched.
77
+ // 2. Spent Edge CARRIES between jobs. It only comes back when you
78
+ // leave fed and slept (SR5 p.56: a fulfilling meal and a good
79
+ // night's sleep; see Game.applyDepartureNeeds). So a shortfall
80
+ // on a fresh run is usually last job's spend, not this one's --
81
+ // which is exactly what "I didn't push this once this run"
82
+ // describes, and the sheet never said so.
83
+ //
84
+ // The rule is canon and stays. What changes is that the number now
85
+ // states its own ceiling and explains its own shortfall.
86
+ const edgeMax = a.edge + a.lifestyleEdgeBonus;
87
+ const edgeSource = a.lifestyleEdgeBonus > 0
88
+ ? ` -- ${a.edge} base +${a.lifestyleEdgeBonus} from where you sleep`
89
+ : '';
90
+ // States the RULE, not a guess about which job the point went on --
91
+ // the sheet cannot know that, and a hedged "if you haven't burned
92
+ // any this run" is worse than useless. What the player needs is the
93
+ // fact that a shortfall can predate this run at all.
94
+ const edgeShortfall = a.edgeRemaining < edgeMax
95
+ ? ` -- ${edgeMax - a.edgeRemaining} spent, and spent Edge CARRIES between jobs`
96
+ : '';
68
97
  // One format everywhere (player direction -- the old sheet mixed
69
98
  // cased headers, colons, and bare labels): section heads UPPERCASE
70
99
  // with no colon, data rows as aligned `Label value` -- no colons.
@@ -78,7 +107,7 @@ export class SheetCommand extends Command {
78
107
  ` Intuition ${a.intuition} Charisma ${a.charisma}`,
79
108
  ...(a.magic > 0 || a.baseMagic > 0 ? [` Magic ${a.magic}${magicNote}${a.baseMagic > a.magic ? ` (was ${a.baseMagic})` : ''}${hint(a.adept ? ' -- body-magic: half rides meat attack/defense; no spells' : a.isAwakened() ? ' -- innate casting ("spells")' : '')}`] : []),
80
109
  ...(a.baseResonance > 0 ? [` Resonance ${a.resonance}${a.baseResonance > a.resonance ? ` (was ${a.baseResonance})` : ''}${hint(' -- the Matrix without a deck; Matrix damage is REAL stun')}`] : []),
81
- ` Edge ${a.edge} (${a.edgeRemaining} left)${a.edgeBoostArmed ? ' -- boost BURNING' : ''}${hint(' ("edge" to burn one; refills at the next job if fed and slept)')}`,
110
+ ` Edge ${edgeMax} (${a.edgeRemaining} left)${edgeSource}${a.edgeBoostArmed ? ' -- boost BURNING' : ''}${edgeShortfall}${hint(' ("edge" to burn one; refills at the next job if fed and slept)')}`,
82
111
  ` Essence ${formatEssence(a.essence)}${hint(' -- what chrome hasn\'t claimed')}`,
83
112
  ...(this.game?.hasHub ? [` Lifestyle ${this.game.lifestyleTier} (${this.game.lifestyle.upkeep}/job)${this.game.rentDebt > 0 ? ` -- ${this.game.rentDebt} OWED ("pay")` : ''}`] : []),
84
113
  '',
@@ -1 +1 @@
1
- {"version":3,"file":"sheet.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/sheet.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sheet.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/sheet.ts"],"names":[],"mappings":"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"}
@@ -62,7 +62,17 @@ export class SilentCommand extends Command {
62
62
  // NOT {gray-fg} (standing ruling): blessed gray is ANSI
63
63
  // bright-black and vanishes on stock dark palettes. White is the
64
64
  // established neutral for mechanics text.
65
- return `{white-fg}${CALL_ICON} You kill your link's broadcast.${hangupNote} Running silent -- no calls in or out, no commlink initiative bonus, and -2 dice on everything you do on the grid while you're covering your own tracks. Your overlay keeps painting: silence is what you EMIT, not what you can see. Until you go loud${hint(` ("silent" again)`)}.{/white-fg}`;
65
+ // TWO SENTENCES, NOT ONE (backlog 2026-08-27: the player asked "is
66
+ // it possible to be silent AND be in AR?"). This used to run the
67
+ // costs and the exemption together in a single forty-word sentence,
68
+ // so the one clause that answers their question -- your overlay is
69
+ // untouched -- arrived last, after three penalties, and read as
70
+ // more small print. The exemption gets its own sentence now.
71
+ return [
72
+ `{white-fg}${CALL_ICON} You kill your link's broadcast.${hangupNote}`,
73
+ `SILENT: your icon is hidden. No calls in or out, no commlink initiative bonus, and -2 dice on your own Matrix actions while you cover your tracks.`,
74
+ `Your AR overlay is UNAFFECTED and still painting -- silence is what you BROADCAST, not what you can see.${hint(` ("silent" again to go loud.)`)}{/white-fg}`,
75
+ ].join(' ');
66
76
  }
67
77
  }
68
78
  //# sourceMappingURL=silent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"silent.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/silent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAY,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAEnE;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,aAAc,SAAQ,OAAO;IAC9B,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;IACvB,MAAM,CAAC,WAAW,GAAG,iQAAiQ,CAAC;IAEjS,KAAK,CAAC,OAAO,CAAC,QAAkB,EAAE;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAEzB,qEAAqE;QACrE,iEAAiE;QACjE,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,8FAA8F,CAAC;QACxG,CAAC;QAED,MAAM,UAAU,GACd,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,IAAI,IAAI;YACtC,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC5E,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,kCAAkC,CAAC;QAC5C,CAAC;QAED,oBAAoB;QACpB,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;YACxB,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC;YAC5B,KAAK,CAAC,aAAa,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAAC;YAC1D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,wBAAwB,CAAC,CAAC;YACzD,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;YAC1B,6DAA6D;YAC7D,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM;gBAAE,KAAK,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YACxD,OAAO,IAAI,UAAU,OAAO,SAAS,6EAA6E,UAAU,MAAM,CAAC;QACrI,CAAC;QAED,wDAAwD;QACxD,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,KAAK,CAAC,iBAAiB,CAAC;QACxC,IAAI,OAAO,EAAE,CAAC;YACZ,KAAK,CAAC,iBAAiB,GAAG,SAAS,CAAC;YACpC,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;YACtC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,0BAA0B,OAAO,CAAC,IAAI,mBAAmB,CAAC,CAAC;YAC1F,UAAU,GAAG,kBAAkB,OAAO,CAAC,IAAI,kBAAkB,CAAC;QAChE,CAAC;QAED,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC;QAC3B,KAAK,CAAC,aAAa,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;QACpD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,yBAAyB,CAAC,CAAC;QAC1D,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QAC1B,oDAAoD;QACpD,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM;YAAE,KAAK,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;QACxD,wDAAwD;QACxD,iEAAiE;QACjE,0CAA0C;QAC1C,OAAO,aAAa,SAAS,mCAAmC,UAAU,0PAA0P,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC;IAC9W,CAAC"}
1
+ {"version":3,"file":"silent.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/silent.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,52 @@
1
1
  import { Command, ICommandConstructor } from './command.js';
2
2
  export declare function parseArgsWithQuotes(input: string): string[];
3
+ /**
4
+ * Does what the player typed share a REAL word with the name it matched?
5
+ *
6
+ * The fuzzy matcher is deliberately generous, which makes it dangerous
7
+ * as a sole gate for addressing a person: "Mr. Nobody" substring-matches
8
+ * "Mr." against "Mr. Krow", so a player reaching for someone who isn't
9
+ * there gets connected to the fixer instead, with "Nobody" as their
10
+ * message. Sending the MEET -- or a call -- to an NPC the player never
11
+ * addressed is worse than refusing, because they will never know it
12
+ * happened.
13
+ *
14
+ * A 3+ character shared word is what separates "Osprey" (a real
15
+ * reference) from "Mr." (a title every Johnson has). Exported so call.ts
16
+ * and talk.ts apply ONE rule -- two separately-written name matchers
17
+ * that can disagree is the failure family this codebase keeps paying
18
+ * for.
19
+ */
20
+ export declare function sharesSubstantiveWord(typed: string, name: string): boolean;
21
+ /**
22
+ * Split "Mr. Osprey I'm here about the job" into WHO and WHAT.
23
+ *
24
+ * Two constraints pull against each other and both are load-bearing.
25
+ *
26
+ * Too greedy and the fuzzy matcher eats the message: "Mr. Osprey I'm
27
+ * here" still fuzzy-matches "Mr. Osprey" (the name is a substring of
28
+ * it), so a plain longest-prefix loop resolves the name and hands back
29
+ * "about the job" as everything the player said. That exact failure is
30
+ * already recorded in ask.ts, which grew an explicit "about" separator
31
+ * to escape it.
32
+ *
33
+ * Too loose and it whispers to the wrong person: "Mr. Nobody hello"
34
+ * substring-matches "Mr." against "Mr. Osprey", and handing the MEET to
35
+ * a Johnson the player never addressed is worse than refusing.
36
+ *
37
+ * So the window is capped at the longest name actually in the room --
38
+ * nobody is called more words than that -- and a candidate must share a
39
+ * SUBSTANTIVE word (3+ characters) with the name it matched. That is
40
+ * what separates "Osprey" (real) from "Mr." (a title every Johnson
41
+ * has).
42
+ *
43
+ * Exported and pure: the command needs a whole scene to instantiate, and
44
+ * the interesting behaviour is entirely in here.
45
+ */
46
+ export declare function resolveSpokenTarget(parsedArgs: string[], names: string[]): {
47
+ name: string;
48
+ message: string;
49
+ } | undefined;
3
50
  export declare class TalkCommand extends Command {
4
51
  protected static verb: string;
5
52
  protected static description: string;
@@ -1,5 +1,6 @@
1
1
  import { Command } from './command.js';
2
2
  import { sameSpot, spotOf, spotRefusal } from '../utilities/spots.js';
3
+ import { fuzzyPickName } from '../utilities/fuzzy-match.js';
3
4
  export function parseArgsWithQuotes(input) {
4
5
  const regex = /"([^"]+)"|(\S+)/g;
5
6
  const args = [];
@@ -14,6 +15,69 @@ export function parseArgsWithQuotes(input) {
14
15
  }
15
16
  return args;
16
17
  }
18
+ const normalizeWords = (s) => s.toLowerCase().replace(/[^a-z0-9\s]/g, ' ').split(/\s+/).filter(Boolean);
19
+ /**
20
+ * Does what the player typed share a REAL word with the name it matched?
21
+ *
22
+ * The fuzzy matcher is deliberately generous, which makes it dangerous
23
+ * as a sole gate for addressing a person: "Mr. Nobody" substring-matches
24
+ * "Mr." against "Mr. Krow", so a player reaching for someone who isn't
25
+ * there gets connected to the fixer instead, with "Nobody" as their
26
+ * message. Sending the MEET -- or a call -- to an NPC the player never
27
+ * addressed is worse than refusing, because they will never know it
28
+ * happened.
29
+ *
30
+ * A 3+ character shared word is what separates "Osprey" (a real
31
+ * reference) from "Mr." (a title every Johnson has). Exported so call.ts
32
+ * and talk.ts apply ONE rule -- two separately-written name matchers
33
+ * that can disagree is the failure family this codebase keeps paying
34
+ * for.
35
+ */
36
+ export function sharesSubstantiveWord(typed, name) {
37
+ const nameWords = new Set(normalizeWords(name));
38
+ return normalizeWords(typed).some(w => w.length >= 3 && nameWords.has(w));
39
+ }
40
+ /**
41
+ * Split "Mr. Osprey I'm here about the job" into WHO and WHAT.
42
+ *
43
+ * Two constraints pull against each other and both are load-bearing.
44
+ *
45
+ * Too greedy and the fuzzy matcher eats the message: "Mr. Osprey I'm
46
+ * here" still fuzzy-matches "Mr. Osprey" (the name is a substring of
47
+ * it), so a plain longest-prefix loop resolves the name and hands back
48
+ * "about the job" as everything the player said. That exact failure is
49
+ * already recorded in ask.ts, which grew an explicit "about" separator
50
+ * to escape it.
51
+ *
52
+ * Too loose and it whispers to the wrong person: "Mr. Nobody hello"
53
+ * substring-matches "Mr." against "Mr. Osprey", and handing the MEET to
54
+ * a Johnson the player never addressed is worse than refusing.
55
+ *
56
+ * So the window is capped at the longest name actually in the room --
57
+ * nobody is called more words than that -- and a candidate must share a
58
+ * SUBSTANTIVE word (3+ characters) with the name it matched. That is
59
+ * what separates "Osprey" (real) from "Mr." (a title every Johnson
60
+ * has).
61
+ *
62
+ * Exported and pure: the command needs a whole scene to instantiate, and
63
+ * the interesting behaviour is entirely in here.
64
+ */
65
+ export function resolveSpokenTarget(parsedArgs, names) {
66
+ if (parsedArgs.length < 2 || names.length === 0)
67
+ return undefined;
68
+ const longestName = Math.max(...names.map(n => normalizeWords(n).length));
69
+ const maxWindow = Math.min(parsedArgs.length - 1, longestName);
70
+ for (let k = maxWindow; k >= 1; k--) {
71
+ const prefix = parsedArgs.slice(0, k).join(' ');
72
+ const picked = fuzzyPickName(prefix, names);
73
+ if (!picked)
74
+ continue;
75
+ if (!sharesSubstantiveWord(prefix, picked))
76
+ continue;
77
+ return { name: picked, message: parsedArgs.slice(k).join(' ') };
78
+ }
79
+ return undefined;
80
+ }
17
81
  export class TalkCommand extends Command {
18
82
  static verb = "talk-to";
19
83
  static description = "Speak privately to a person in the room.";
@@ -29,8 +93,6 @@ export class TalkCommand extends Command {
29
93
  if (parsedArgs.length < 2) {
30
94
  return "Usage: talk-to <name> <message>";
31
95
  }
32
- const [targetName, ...messageParts] = parsedArgs;
33
- const message = messageParts.join(' ');
34
96
  const speaker = this.actor;
35
97
  const room = speaker.currentLocation;
36
98
  if (!room) {
@@ -38,10 +100,34 @@ export class TalkCommand extends Command {
38
100
  }
39
101
  const scene = this.context.scene; // Assuming you have scene in ICommandContext
40
102
  const roomActors = scene.allActors.filter(actor => actor.currentLocation === speaker.currentLocation);
41
- const possibleTargets = roomActors;
42
- const target = possibleTargets.find(actor => actor.name.toLowerCase() === targetName.toLowerCase());
103
+ // MULTI-WORD NAMES, UNQUOTED (playtest 2026-08-27: "THE MEET didn't
104
+ // happen when I met Mr. Osprey").
105
+ //
106
+ // This took the FIRST TOKEN as the name and matched it with `===`.
107
+ // Every Johnson the generator produces is a title plus a surname --
108
+ // Mr. Osprey, Ms. Dovetail, Señora Marrow -- so `talk-to Mr. Osprey
109
+ // I'm here about the job` looked for someone called "Mr." and told
110
+ // the player they weren't there. Quoting worked; nothing ever said
111
+ // to quote.
112
+ //
113
+ // That is how the MEET goes missing without anything appearing to
114
+ // break: talking to the client is what fires
115
+ // Game.onClientInteraction, so a name that doesn't resolve means no
116
+ // terms, no haggle, and -- at the other end -- no settlement.
117
+ //
118
+ // Longest-prefix matching, the same shape ask.ts already uses for
119
+ // exactly this reason: try the whole argument list as a name, then
120
+ // shorter and shorter prefixes, keeping whatever is left as the
121
+ // message. A quoted name still wins outright, since it arrives as a
122
+ // single token and matches on the first pass.
123
+ const names = roomActors.map(a => a.name);
124
+ const resolved = resolveSpokenTarget(parsedArgs, names);
125
+ const message = resolved ? resolved.message : parsedArgs.slice(1).join(' ');
126
+ const target = resolved
127
+ ? roomActors.find(actor => actor.name === resolved.name)
128
+ : undefined;
43
129
  if (!target) {
44
- return `You don’t see anyone named "${targetName}" here.`;
130
+ return `You don’t see anyone named "${parsedArgs[0]}" here.${names.length > 0 ? ` Here: ${names.join(', ')}.` : ''}`;
45
131
  }
46
132
  if (target === speaker) {
47
133
  return "You can't talk to yourself (try 'say' instead).";
@@ -1 +1 @@
1
- {"version":3,"file":"talk.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/talk.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"talk.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/talk.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { Command, ICommand } from './command.js';
2
+ /**
3
+ * "time" -- what the clock on the wall says (backlog wave 2, item B:
4
+ * "Mr. Moss said 'after midnight', let's implement a world clock").
5
+ *
6
+ * A runner who has been told to be somewhere after midnight needs to be
7
+ * able to CHECK, and to trust that the answer is the same one their
8
+ * partner three rooms away is getting. It is: this renders inside the
9
+ * engine, which in a shared run IS the server, so the whole table reads
10
+ * one clock in one timezone. See utilities/world-clock.ts.
11
+ *
12
+ * The zone is named out loud rather than assumed. On a shared run the
13
+ * clock belongs to the host's machine, and a player in another zone is
14
+ * owed that fact instead of quietly doing the arithmetic wrong.
15
+ */
16
+ export declare class TimeCommand extends Command implements ICommand {
17
+ protected static verb: string;
18
+ protected static description: string;
19
+ execute(_args?: string[]): Promise<string>;
20
+ }
@@ -0,0 +1,61 @@
1
+ import { Command } from './command.js';
2
+ import { hint } from '../utilities/hints.js';
3
+ import { clockTime, clockDate, partOfDay, isAfterMidnight, worldZone, } from '../utilities/world-clock.js';
4
+ /**
5
+ * "time" -- what the clock on the wall says (backlog wave 2, item B:
6
+ * "Mr. Moss said 'after midnight', let's implement a world clock").
7
+ *
8
+ * A runner who has been told to be somewhere after midnight needs to be
9
+ * able to CHECK, and to trust that the answer is the same one their
10
+ * partner three rooms away is getting. It is: this renders inside the
11
+ * engine, which in a shared run IS the server, so the whole table reads
12
+ * one clock in one timezone. See utilities/world-clock.ts.
13
+ *
14
+ * The zone is named out loud rather than assumed. On a shared run the
15
+ * clock belongs to the host's machine, and a player in another zone is
16
+ * owed that fact instead of quietly doing the arithmetic wrong.
17
+ */
18
+ export class TimeCommand extends Command {
19
+ static verb = 'time';
20
+ static description = 'Check the clock: the time of day, and whether you are in the small hours yet. In a shared run everyone reads the host\'s clock, so "after midnight" means the same moment for the whole team.';
21
+ async execute(_args = []) {
22
+ const now = new Date();
23
+ // Asked ENGINE-SIDE, which is the only place that can answer it: in
24
+ // a shared run this command executes on the server, where
25
+ // `remoteSession` (the CLIENT's link to that server) is undefined.
26
+ // Counting seats is the signal that survives the trip.
27
+ const shared = (this.scene.getPlayers?.() ?? []).length > 1;
28
+ const lines = [
29
+ `{cyan-fg}${clockTime(now)} -- ${partOfDay(now)}{/cyan-fg}`,
30
+ ` ${clockDate(now)}`,
31
+ ];
32
+ if (isAfterMidnight(now)) {
33
+ lines.push(` {cyan-fg}It is after midnight. The city is as quiet as it gets -- whatever was supposed to happen in the small hours can happen now.{/cyan-fg}`);
34
+ }
35
+ else {
36
+ // Say how long the wait is, because "not yet" without a number is
37
+ // the least useful answer a clock can give.
38
+ const midnight = new Date(now);
39
+ // setUTCHours, not setHours: the countdown has to run to the
40
+ // world's midnight, not the one on the machine that happens to be
41
+ // rendering. This was the last local-time reader in the feature
42
+ // and it survived the UTC pass -- which is precisely why
43
+ // world-clock.ts warns that getHours() and friends reintroduce
44
+ // the bug one function at a time.
45
+ midnight.setUTCHours(24, 0, 0, 0);
46
+ const mins = Math.max(0, Math.round((midnight.getTime() - now.getTime()) / 60_000));
47
+ const hrs = Math.floor(mins / 60);
48
+ const wait = hrs > 0 ? `${hrs}h ${mins % 60}m` : `${mins}m`;
49
+ lines.push(` Not the small hours yet -- midnight is ${wait} out.`);
50
+ }
51
+ lines.push(shared
52
+ // Both lines name the zone, because the whole point is that this
53
+ // is NOT your machine's clock. It used to say "runs on this
54
+ // machine", which was true and was the bug: solo read the
55
+ // player's laptop and shared read the server, and they disagreed.
56
+ ? ` {white-fg}Shared run: the whole table reads this same clock (${worldZone(now)}) -- nobody's local time, so "after midnight" means one moment for everyone.{/white-fg}`
57
+ : hint(` The world keeps ${worldZone(now)}, not your machine's local time -- so the street reads the same everywhere.`));
58
+ return lines.filter(l => l.length > 0).join('\n');
59
+ }
60
+ }
61
+ //# sourceMappingURL=time.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/commands/time.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAY,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EACL,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,GAC5D,MAAM,6BAA6B,CAAC;AAErC;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,WAAY,SAAQ,OAAO;IAC5B,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC;IACrB,MAAM,CAAC,WAAW,GAAG,+LAA+L,CAAC;IAE/N,KAAK,CAAC,OAAO,CAAC,QAAkB,EAAE;QAChC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,oEAAoE;QACpE,0DAA0D;QAC1D,mEAAmE;QACnE,uDAAuD;QACvD,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAE5D,MAAM,KAAK,GAAG;YACZ,YAAY,SAAS,CAAC,GAAG,CAAC,OAAO,SAAS,CAAC,GAAG,CAAC,YAAY;YAC3D,KAAK,SAAS,CAAC,GAAG,CAAC,EAAE;SACtB,CAAC;QAEF,IAAI,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,kJAAkJ,CAAC,CAAC;QACjK,CAAC;aAAM,CAAC;YACN,kEAAkE;YAClE,4CAA4C;YAC5C,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;YAC/B,6DAA6D;YAC7D,kEAAkE;YAClE,gEAAgE;YAChE,yDAAyD;YACzD,+DAA+D;YAC/D,kCAAkC;YAClC,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAClC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;YACpF,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;YAClC,MAAM,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC;YAC5D,KAAK,CAAC,IAAI,CAAC,4CAA4C,IAAI,OAAO,CAAC,CAAC;QACtE,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,MAAM;YACf,iEAAiE;YACjE,4DAA4D;YAC5D,0DAA0D;YAC1D,kEAAkE;YAClE,CAAC,CAAC,kEAAkE,SAAS,CAAC,GAAG,CAAC,yFAAyF;YAC3K,CAAC,CAAC,IAAI,CAAC,qBAAqB,SAAS,CAAC,GAAG,CAAC,6EAA6E,CAAC,CAAC,CAAC;QAE5H,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC"}
@@ -244,6 +244,51 @@ export declare function normalizeSkeleton(skeleton: ISceneSkeleton, player?: Pla
244
244
  */
245
245
  export declare function ensureClueDetails(skeleton: ISceneSkeleton, details: ISceneDetails): string[];
246
246
  /** Merges the skeleton's structure with the detail passes into a full seed. */
247
+ /**
248
+ * Resolve a spot name the model WROTE to a spot that actually EXISTS.
249
+ *
250
+ * Generated cross-references are prose, not identifiers: the rooms pass
251
+ * writes spot names into `exitSpots` by hand, and it varies the surface
252
+ * form constantly -- an article ("the loading dock"), a capital ("Back
253
+ * Door"), a plural, a hyphen. An exact-match test threw every one of
254
+ * those away silently and fell back to guessing the binding from the
255
+ * spot's name, which is the failure this whole seam exists to remove.
256
+ *
257
+ * Conservative on purpose, in this order: exact, then punctuation- and
258
+ * article-insensitive, then a UNIQUE containment match. Ambiguity
259
+ * resolves to undefined -- binding an exit to the wrong spot is worse
260
+ * than leaving it unbound, because unbound still gets a considered
261
+ * answer from the runtime while wrong is simply wrong.
262
+ */
263
+ export declare function resolveSpotName(declared: string, spotNames: string[]): string | undefined;
264
+ /**
265
+ * THE BARRIER MUST WANT WHAT THE ANSWER IS.
266
+ *
267
+ * Playtest 2026-08-27, 12:15: "there are conflicting numbers here for the
268
+ * code... let's make it less confusing", then "all these codes are wrong,
269
+ * it seems like the AI is just making them up".
270
+ *
271
+ * The second half was NPCs inventing credentials, fixed in the wave
272
+ * before this one. The first half is older and entirely separate, and it
273
+ * was written into the generator on purpose, two lines apart in
274
+ * buildPuzzlesPrompt: the riddle was invited to describe a keypad ("a
275
+ * keypad implies a code") while requiredPhrase was required to be "2-5
276
+ * plain words". So a generated keypad could never take a number, and the
277
+ * player who read "worn digits" and then found "double or nothing"
278
+ * scrawled in a notebook did not believe they had the code. They went
279
+ * looking for a number instead -- and every stray number in the scene
280
+ * became a candidate.
281
+ *
282
+ * The prompt now demands the two agree. This is the deterministic floor
283
+ * under that instruction, in the same spirit as ensureClueDetails: the
284
+ * ANSWER is authoritative (clue items quote it verbatim and solve()
285
+ * matches it exactly), so the presentation is what gets corrected, and
286
+ * it is corrected by ADDING a plain sentence rather than rewriting
287
+ * generated prose -- surgery on a model's sentence is how you get
288
+ * nonsense, and a player only needs to be told which kind of thing to
289
+ * type.
290
+ */
291
+ export declare function ensureCredentialKindAgrees(details: ISceneDetails): string[];
247
292
  export declare function assembleScene(skeleton: ISceneSkeleton, details: ISceneDetails, playerName: string): ISceneSeedJson;
248
293
  export type RepairTarget = 'rooms' | 'npcs' | 'puzzles' | 'items' | 'skeleton';
249
294
  /**