@maka/maka-cli 5.66.0 → 5.68.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 (123) hide show
  1. package/bundle/typescript/package.json +1 -1
  2. package/bundle/typescript/src/commands/game/_index.d.ts +1 -0
  3. package/bundle/typescript/src/commands/game/_index.js +1 -0
  4. package/bundle/typescript/src/commands/game/_index.js.map +1 -1
  5. package/bundle/typescript/src/commands/game/sideQuest/archetypes.js +6 -1
  6. package/bundle/typescript/src/commands/game/sideQuest/archetypes.js.map +1 -1
  7. package/bundle/typescript/src/commands/game/sideQuest/commands/ar.js +4 -1
  8. package/bundle/typescript/src/commands/game/sideQuest/commands/ar.js.map +1 -1
  9. package/bundle/typescript/src/commands/game/sideQuest/commands/backlog.d.ts +103 -0
  10. package/bundle/typescript/src/commands/game/sideQuest/commands/backlog.js +423 -25
  11. package/bundle/typescript/src/commands/game/sideQuest/commands/backlog.js.map +1 -1
  12. package/bundle/typescript/src/commands/game/sideQuest/commands/bluff.d.ts +15 -1
  13. package/bundle/typescript/src/commands/game/sideQuest/commands/bluff.js +61 -4
  14. package/bundle/typescript/src/commands/game/sideQuest/commands/bluff.js.map +1 -1
  15. package/bundle/typescript/src/commands/game/sideQuest/commands/companions.d.ts +39 -3
  16. package/bundle/typescript/src/commands/game/sideQuest/commands/companions.js +85 -4
  17. package/bundle/typescript/src/commands/game/sideQuest/commands/companions.js.map +1 -1
  18. package/bundle/typescript/src/commands/game/sideQuest/commands/compile.d.ts +37 -17
  19. package/bundle/typescript/src/commands/game/sideQuest/commands/compile.js +53 -115
  20. package/bundle/typescript/src/commands/game/sideQuest/commands/compile.js.map +1 -1
  21. package/bundle/typescript/src/commands/game/sideQuest/commands/decompile.d.ts +55 -0
  22. package/bundle/typescript/src/commands/game/sideQuest/commands/decompile.js +203 -0
  23. package/bundle/typescript/src/commands/game/sideQuest/commands/decompile.js.map +1 -0
  24. package/bundle/typescript/src/commands/game/sideQuest/commands/go.d.ts +23 -0
  25. package/bundle/typescript/src/commands/game/sideQuest/commands/go.js +42 -7
  26. package/bundle/typescript/src/commands/game/sideQuest/commands/go.js.map +1 -1
  27. package/bundle/typescript/src/commands/game/sideQuest/commands/hack.d.ts +27 -0
  28. package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js +28 -1
  29. package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js.map +1 -1
  30. package/bundle/typescript/src/commands/game/sideQuest/commands/order.js +69 -1
  31. package/bundle/typescript/src/commands/game/sideQuest/commands/order.js.map +1 -1
  32. package/bundle/typescript/src/commands/game/sideQuest/commands/register.d.ts +15 -2
  33. package/bundle/typescript/src/commands/game/sideQuest/commands/register.js +32 -6
  34. package/bundle/typescript/src/commands/game/sideQuest/commands/register.js.map +1 -1
  35. package/bundle/typescript/src/commands/game/sideQuest/commands/review.d.ts +39 -0
  36. package/bundle/typescript/src/commands/game/sideQuest/commands/review.js +48 -0
  37. package/bundle/typescript/src/commands/game/sideQuest/commands/review.js.map +1 -0
  38. package/bundle/typescript/src/commands/game/sideQuest/commands/sprites.d.ts +35 -0
  39. package/bundle/typescript/src/commands/game/sideQuest/commands/sprites.js +108 -0
  40. package/bundle/typescript/src/commands/game/sideQuest/commands/sprites.js.map +1 -0
  41. package/bundle/typescript/src/commands/game/sideQuest/commands/thread.d.ts +27 -0
  42. package/bundle/typescript/src/commands/game/sideQuest/commands/thread.js +7 -2
  43. package/bundle/typescript/src/commands/game/sideQuest/commands/thread.js.map +1 -1
  44. package/bundle/typescript/src/commands/game/sideQuest/commands/unravel.d.ts +57 -0
  45. package/bundle/typescript/src/commands/game/sideQuest/commands/unravel.js +162 -0
  46. package/bundle/typescript/src/commands/game/sideQuest/commands/unravel.js.map +1 -0
  47. package/bundle/typescript/src/commands/game/sideQuest/engine-version.d.ts +1 -1
  48. package/bundle/typescript/src/commands/game/sideQuest/engine-version.js +31 -1
  49. package/bundle/typescript/src/commands/game/sideQuest/engine-version.js.map +1 -1
  50. package/bundle/typescript/src/commands/game/sideQuest/factories/repro-scene.d.ts +87 -0
  51. package/bundle/typescript/src/commands/game/sideQuest/factories/repro-scene.js +320 -0
  52. package/bundle/typescript/src/commands/game/sideQuest/factories/repro-scene.js.map +1 -0
  53. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js +32 -0
  54. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js.map +1 -1
  55. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.js +8 -1
  56. package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.js.map +1 -1
  57. package/bundle/typescript/src/commands/game/sideQuest/game.d.ts +98 -11
  58. package/bundle/typescript/src/commands/game/sideQuest/game.js +239 -35
  59. package/bundle/typescript/src/commands/game/sideQuest/game.js.map +1 -1
  60. package/bundle/typescript/src/commands/game/sideQuest/headless-harness.d.ts +24 -0
  61. package/bundle/typescript/src/commands/game/sideQuest/headless-harness.js +63 -0
  62. package/bundle/typescript/src/commands/game/sideQuest/headless-harness.js.map +1 -1
  63. package/bundle/typescript/src/commands/game/sideQuest/models/item.d.ts +9 -0
  64. package/bundle/typescript/src/commands/game/sideQuest/models/item.js +9 -0
  65. package/bundle/typescript/src/commands/game/sideQuest/models/item.js.map +1 -1
  66. package/bundle/typescript/src/commands/game/sideQuest/models/npc.d.ts +57 -1
  67. package/bundle/typescript/src/commands/game/sideQuest/models/npc.js +62 -1
  68. package/bundle/typescript/src/commands/game/sideQuest/models/npc.js.map +1 -1
  69. package/bundle/typescript/src/commands/game/sideQuest/models/player.d.ts +10 -3
  70. package/bundle/typescript/src/commands/game/sideQuest/models/player.js +5 -1
  71. package/bundle/typescript/src/commands/game/sideQuest/models/player.js.map +1 -1
  72. package/bundle/typescript/src/commands/game/sideQuest/resonance-actions.d.ts +108 -0
  73. package/bundle/typescript/src/commands/game/sideQuest/resonance-actions.js +186 -0
  74. package/bundle/typescript/src/commands/game/sideQuest/resonance-actions.js.map +1 -0
  75. package/bundle/typescript/src/commands/game/sideQuest/sprite-powers.d.ts +88 -0
  76. package/bundle/typescript/src/commands/game/sideQuest/sprite-powers.js +137 -0
  77. package/bundle/typescript/src/commands/game/sideQuest/sprite-powers.js.map +1 -0
  78. package/bundle/typescript/src/commands/game/sideQuest/types/repro.d.ts +106 -0
  79. package/bundle/typescript/src/commands/game/sideQuest/types/repro.js +2 -0
  80. package/bundle/typescript/src/commands/game/sideQuest/types/repro.js.map +1 -0
  81. package/bundle/typescript/src/commands/game/sideQuest/types/save-file.d.ts +32 -1
  82. package/bundle/typescript/src/commands/game/sideQuest/types/seed/device-seed.d.ts +12 -0
  83. package/bundle/typescript/src/commands/game/sideQuest/ui.d.ts +9 -0
  84. package/bundle/typescript/src/commands/game/sideQuest/ui.js +3 -0
  85. package/bundle/typescript/src/commands/game/sideQuest/ui.js.map +1 -1
  86. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-dump.d.ts +17 -1
  87. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-dump.js +250 -36
  88. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-dump.js.map +1 -1
  89. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-review.d.ts +30 -1
  90. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-review.js +58 -0
  91. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-review.js.map +1 -1
  92. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-vocab.d.ts +85 -0
  93. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-vocab.js +100 -0
  94. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-vocab.js.map +1 -0
  95. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog.d.ts +45 -3
  96. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog.js +45 -3
  97. package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog.js.map +1 -1
  98. package/bundle/typescript/src/commands/game/sideQuest/utilities/commit-ref.d.ts +13 -0
  99. package/bundle/typescript/src/commands/game/sideQuest/utilities/commit-ref.js +22 -0
  100. package/bundle/typescript/src/commands/game/sideQuest/utilities/commit-ref.js.map +1 -0
  101. package/bundle/typescript/src/commands/game/sideQuest/utilities/grid-view.d.ts +13 -1
  102. package/bundle/typescript/src/commands/game/sideQuest/utilities/grid-view.js +36 -3
  103. package/bundle/typescript/src/commands/game/sideQuest/utilities/grid-view.js.map +1 -1
  104. package/bundle/typescript/src/commands/game/sideQuest/utilities/handoff.d.ts +42 -0
  105. package/bundle/typescript/src/commands/game/sideQuest/utilities/handoff.js +57 -0
  106. package/bundle/typescript/src/commands/game/sideQuest/utilities/handoff.js.map +1 -0
  107. package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.js +14 -0
  108. package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.js.map +1 -1
  109. package/bundle/typescript/src/commands/game/sideQuest/utilities/repro-launch.d.ts +68 -0
  110. package/bundle/typescript/src/commands/game/sideQuest/utilities/repro-launch.js +147 -0
  111. package/bundle/typescript/src/commands/game/sideQuest/utilities/repro-launch.js.map +1 -0
  112. package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.js +39 -0
  113. package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.js.map +1 -1
  114. package/bundle/typescript/src/commands/game/sideQuest-backlog.sub.cmd.d.ts +1 -0
  115. package/bundle/typescript/src/commands/game/sideQuest-backlog.sub.cmd.js +46 -0
  116. package/bundle/typescript/src/commands/game/sideQuest-backlog.sub.cmd.js.map +1 -0
  117. package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.d.ts +3 -1
  118. package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js +352 -42
  119. package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js.map +1 -1
  120. package/bundle/typescript/src/tools/log/log.class.d.ts +17 -0
  121. package/bundle/typescript/src/tools/log/log.class.js +30 -1
  122. package/bundle/typescript/src/tools/log/log.class.js.map +1 -1
  123. package/package.json +1 -1
@@ -28,6 +28,36 @@ let answeredIds = new Set();
28
28
  /** Count from the background login probe, for the notice. -1 = unknown. */
29
29
  let pendingAtLogin = -1;
30
30
  let probing;
31
+ /**
32
+ * THE BOARD'S numbering, which is NOT the review queue's.
33
+ *
34
+ * In-game the board had no handles at all: rows carried neither an id
35
+ * nor a number, so there was nothing to name (player, 2026-08-28:
36
+ * "there isn't anything for me to target a review -- the IDs aren't
37
+ * there... Copy/paste is cumbersome in-game"). Ids are right for a
38
+ * terminal you can select text in and useless inside blessed.
39
+ *
40
+ * KEPT SEPARATE FROM THE REVIEW SNAPSHOT ON PURPOSE. They are different
41
+ * SETS -- the board is everything, the queue is only what waits on you
42
+ * -- so "3" cannot mean one row in both. Sharing one snapshot would
43
+ * make the number silently follow whichever list was rendered last,
44
+ * which is the one failure a numbered list must not have. The two are
45
+ * addressed by different verbs for the same reason: `backlog <n>` reads
46
+ * the board, `backlog review <n>` answers the queue.
47
+ */
48
+ let boardSnapshot = [];
49
+ export function rememberBoard(items) {
50
+ boardSnapshot = [...items];
51
+ }
52
+ /** 1-based, against the board as it was last PRINTED. */
53
+ export function boardItemAt(n) {
54
+ if (!Number.isInteger(n) || n < 1 || n > boardSnapshot.length)
55
+ return undefined;
56
+ return boardSnapshot[n - 1];
57
+ }
58
+ export function boardSize() {
59
+ return boardSnapshot.length;
60
+ }
31
61
  /** Replace the rendered list. Called ONLY when a fresh queue is shown
32
62
  * to the player -- that is what makes the numbers theirs. */
33
63
  export function rememberQueue(items) {
@@ -54,6 +84,7 @@ export function isReviewAnswered(id) {
54
84
  /** Only for tests and a fresh session. */
55
85
  export function resetReviewQueue() {
56
86
  snapshot = [];
87
+ boardSnapshot = [];
57
88
  answeredIds = new Set();
58
89
  pendingAtLogin = -1;
59
90
  probing = undefined;
@@ -175,4 +206,31 @@ export function parseRejection(text) {
175
206
  return null;
176
207
  return m[1].trim();
177
208
  }
209
+ /**
210
+ * IS THIS ANSWER ASKING FOR THE BENCH, rather than answering at all?
211
+ *
212
+ * "backlog review 1 repro" drops into the repro scene for that item.
213
+ *
214
+ * RESERVED THE HARD WAY, after it cost a real sign-off. On 2026-08-28
215
+ * the reporter typed exactly that, on a validation row, against a verb
216
+ * that did not exist yet -- so `repro` fell through as the ANSWER, was
217
+ * posted as their confirmation, and closed item b9YeNqTNBJuk9dbrk.
218
+ *
219
+ * A sign-off is the one input in this flow that cannot be taken back
220
+ * from the client: it is what moves an item to complete, and the reject
221
+ * route refuses any item that already carries one.
222
+ *
223
+ * The lesson is not "add the verb". It is that on a validation row every
224
+ * UNRECOGNISED word is a permanent confirmation, so a word a player
225
+ * could reasonably believe is a command must be claimed BEFORE it is
226
+ * described to them anywhere -- and this one had already been written
227
+ * into a plan they read.
228
+ *
229
+ * Matched as the first word only, exactly like a rejection, so a
230
+ * confirmation that merely mentions it ("the repro looks right") still
231
+ * signs off.
232
+ */
233
+ export function parseReproRequest(text) {
234
+ return /^repro\b/i.test(text.trim());
235
+ }
178
236
  //# sourceMappingURL=backlog-review.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"backlog-review.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/utilities/backlog-review.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backlog-review.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/utilities/backlog-review.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * THE BOARD'S SHARED VOCABULARY -- what a status is called, what a
3
+ * verdict is called, and how loud each one is.
4
+ *
5
+ * Two surfaces render the backlog and they used to word it twice:
6
+ * `commands/backlog.ts` in-game (blessed tags) and
7
+ * `utilities/backlog-dump.ts` out of game (chalk, via Log). The labels
8
+ * were retyped in both, which is the shape of a fault this repo has
9
+ * already paid for -- the launcher's second copy of the status list
10
+ * refused `in-review` as a typo while the server had been writing it
11
+ * for a day (see sideQuest.sub.cmd.ts's note on its own duplication).
12
+ *
13
+ * WHAT IS SHARED IS THE VOCABULARY, NOT THE PAINT. A tone is a severity,
14
+ * not a colour: blessed and chalk have different palettes and different
15
+ * legibility problems, so each surface maps tone to its own ink. What
16
+ * neither surface gets to decide for itself is what an item is CALLED
17
+ * or how much it matters.
18
+ *
19
+ * Pure on purpose -- no Log, no blessed, no transport. The out-of-game
20
+ * dump is loaded lazily precisely so reading a list touches none of the
21
+ * game graph, and this module must not be the thing that drags it in.
22
+ */
23
+ /**
24
+ * THE STATUSES THEMSELVES, and this is where they live.
25
+ *
26
+ * Moved here from the transport 2026-08-28, and the move is the point:
27
+ * utilities/backlog.ts reaches cloud-saves -> persistence -> models, so
28
+ * anything importing the status list to render or validate a status was
29
+ * dragging the entire save graph behind it. That is how a second copy
30
+ * gets written -- the launcher has one, annotated as a duplicate it
31
+ * could not avoid "without chaining the whole game graph into every
32
+ * `maka` invocation" -- and that copy then drifted, refusing `in-review`
33
+ * as a typo for a day.
34
+ *
35
+ * A pure module carrying the vocabulary is what makes the duplicate
36
+ * unnecessary. backlog.ts re-exports these so no caller had to change.
37
+ */
38
+ export type BacklogStatus = 'open' | 'in-progress' | 'in-review' | 'complete' | 'wont-fix';
39
+ export declare const BACKLOG_STATUSES: BacklogStatus[];
40
+ /**
41
+ * THE PRINT ORDER: lowest priority first, so what needs you ends up at
42
+ * the BOTTOM -- closest to the prompt, which is where a scrolling
43
+ * terminal leaves your eye.
44
+ *
45
+ * The server sorts in-review first, and that is right for a caller
46
+ * iterating the list. It is wrong for PRINTING it, and the difference
47
+ * has now been reported three times about three different surfaces:
48
+ * the review queue ("REVERSE THE ORDER OF THE REVIEW ITEMS"), the
49
+ * out-of-game board ("So the list is backwards"), and the in-game one
50
+ * ("I see 'wont' items first"). Each was fixed where it was reported
51
+ * and nowhere else, so the same board read correctly in one place and
52
+ * backwards in the next.
53
+ *
54
+ * Lives here, with the other thing every surface must agree about.
55
+ * Reversal happens at the point of PRINT and never in the data: the
56
+ * server's priority order and which end a human reads first are two
57
+ * separate facts, and collapsing them is how a number would come to
58
+ * mean a different row than the one it labels.
59
+ *
60
+ * See reviewDisplayOrder in backlog-review.ts for the numbered variant
61
+ * of this same rule -- it binds each row's number BEFORE reversing,
62
+ * which is the invariant that keeps "review 1" pointing at row 1.
63
+ */
64
+ export declare function boardPrintOrder<T>(items: T[]): T[];
65
+ /** How loud, in the abstract. Each renderer picks its own ink. */
66
+ export type BacklogTone = 'good' | 'bad' | 'warn' | 'info' | 'alert' | 'dim';
67
+ export interface IBacklogLabel {
68
+ /** The bracketed tag, padded to a common width so rows line up. */
69
+ label: string;
70
+ tone: BacklogTone;
71
+ }
72
+ /** An unknown status renders as itself rather than as "open". A status
73
+ * this build has never heard of is news, and reporting it as the
74
+ * default hid exactly that: `in-review` shipped from the server and
75
+ * showed here as "[open]" -- an item awaiting the player's word drawn
76
+ * as one nobody had touched. */
77
+ export declare function statusLabel(status: string): IBacklogLabel;
78
+ /** Whether this status has a label of its own, rather than falling back
79
+ * to being echoed raw. Exists for the test that matters: every status
80
+ * the transport knows about must be named here. Asking that of
81
+ * statusLabel's OUTPUT cannot work -- "open" legitimately renders as
82
+ * "[open]", which is also the exact shape of the fallback, so the two
83
+ * are indistinguishable from outside. */
84
+ export declare function hasStatusLabel(status: string): boolean;
85
+ export declare function verdictLabel(verdict: string): IBacklogLabel;
@@ -0,0 +1,100 @@
1
+ /**
2
+ * THE BOARD'S SHARED VOCABULARY -- what a status is called, what a
3
+ * verdict is called, and how loud each one is.
4
+ *
5
+ * Two surfaces render the backlog and they used to word it twice:
6
+ * `commands/backlog.ts` in-game (blessed tags) and
7
+ * `utilities/backlog-dump.ts` out of game (chalk, via Log). The labels
8
+ * were retyped in both, which is the shape of a fault this repo has
9
+ * already paid for -- the launcher's second copy of the status list
10
+ * refused `in-review` as a typo while the server had been writing it
11
+ * for a day (see sideQuest.sub.cmd.ts's note on its own duplication).
12
+ *
13
+ * WHAT IS SHARED IS THE VOCABULARY, NOT THE PAINT. A tone is a severity,
14
+ * not a colour: blessed and chalk have different palettes and different
15
+ * legibility problems, so each surface maps tone to its own ink. What
16
+ * neither surface gets to decide for itself is what an item is CALLED
17
+ * or how much it matters.
18
+ *
19
+ * Pure on purpose -- no Log, no blessed, no transport. The out-of-game
20
+ * dump is loaded lazily precisely so reading a list touches none of the
21
+ * game graph, and this module must not be the thing that drags it in.
22
+ */
23
+ export const BACKLOG_STATUSES = ['open', 'in-progress', 'in-review', 'complete', 'wont-fix'];
24
+ /**
25
+ * THE PRINT ORDER: lowest priority first, so what needs you ends up at
26
+ * the BOTTOM -- closest to the prompt, which is where a scrolling
27
+ * terminal leaves your eye.
28
+ *
29
+ * The server sorts in-review first, and that is right for a caller
30
+ * iterating the list. It is wrong for PRINTING it, and the difference
31
+ * has now been reported three times about three different surfaces:
32
+ * the review queue ("REVERSE THE ORDER OF THE REVIEW ITEMS"), the
33
+ * out-of-game board ("So the list is backwards"), and the in-game one
34
+ * ("I see 'wont' items first"). Each was fixed where it was reported
35
+ * and nowhere else, so the same board read correctly in one place and
36
+ * backwards in the next.
37
+ *
38
+ * Lives here, with the other thing every surface must agree about.
39
+ * Reversal happens at the point of PRINT and never in the data: the
40
+ * server's priority order and which end a human reads first are two
41
+ * separate facts, and collapsing them is how a number would come to
42
+ * mean a different row than the one it labels.
43
+ *
44
+ * See reviewDisplayOrder in backlog-review.ts for the numbered variant
45
+ * of this same rule -- it binds each row's number BEFORE reversing,
46
+ * which is the invariant that keeps "review 1" pointing at row 1.
47
+ */
48
+ export function boardPrintOrder(items) {
49
+ return [...items].reverse();
50
+ }
51
+ /**
52
+ * `in-review` is 'alert' rather than 'info', and it is the one place
53
+ * this file makes a judgement instead of recording one. An in-review
54
+ * row is the only status that is WAITING ON THE READER: everything else
55
+ * describes what somebody else is doing. It used to render the same
56
+ * cyan as in-progress, so on a 125-row board the rows that needed the
57
+ * player did not look different from the rows that did not.
58
+ */
59
+ const STATUS_LABELS = {
60
+ 'open': { label: '[open]', tone: 'warn' },
61
+ 'in-progress': { label: '[wip] ', tone: 'info' },
62
+ 'in-review': { label: '[you?]', tone: 'alert' },
63
+ 'complete': { label: '[done]', tone: 'good' },
64
+ // "[no]" until 2026-08-28, when the only person reading this board
65
+ // asked what it meant. It read as a refusal or an error rather than a
66
+ // status -- and it is neither: a wont-fix is a DECISION, taken and
67
+ // recorded. A six-character tag has to carry that on its own, because
68
+ // there is no legend anywhere and nobody should need one.
69
+ 'wont-fix': { label: '[wont]', tone: 'dim' },
70
+ };
71
+ /** An unknown status renders as itself rather than as "open". A status
72
+ * this build has never heard of is news, and reporting it as the
73
+ * default hid exactly that: `in-review` shipped from the server and
74
+ * showed here as "[open]" -- an item awaiting the player's word drawn
75
+ * as one nobody had touched. */
76
+ export function statusLabel(status) {
77
+ return STATUS_LABELS[status] ?? { label: `[${status}]`, tone: 'dim' };
78
+ }
79
+ /** Whether this status has a label of its own, rather than falling back
80
+ * to being echoed raw. Exists for the test that matters: every status
81
+ * the transport knows about must be named here. Asking that of
82
+ * statusLabel's OUTPUT cannot work -- "open" legitimately renders as
83
+ * "[open]", which is also the exact shape of the fallback, so the two
84
+ * are indistinguishable from outside. */
85
+ export function hasStatusLabel(status) {
86
+ return Object.prototype.hasOwnProperty.call(STATUS_LABELS, status);
87
+ }
88
+ /** The verdict is about the GAME, not the rulebooks -- see the reframing
89
+ * note in commands/backlog.ts. */
90
+ const VERDICT_LABELS = {
91
+ 'canon-violation': { label: 'breaks the rules', tone: 'bad' },
92
+ 'bug': { label: 'bug', tone: 'bad' },
93
+ 'enhancement': { label: 'wants building', tone: 'warn' },
94
+ 'works-as-intended': { label: 'working as meant', tone: 'good' },
95
+ 'needs-detail': { label: 'needs detail', tone: 'info' },
96
+ };
97
+ export function verdictLabel(verdict) {
98
+ return VERDICT_LABELS[verdict] ?? { label: 'needs detail', tone: 'info' };
99
+ }
100
+ //# sourceMappingURL=backlog-vocab.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backlog-vocab.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/utilities/backlog-vocab.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAkBH,MAAM,CAAC,MAAM,gBAAgB,GAAoB,CAAC,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAE9G;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,eAAe,CAAI,KAAU;IAC3C,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;AAC9B,CAAC;AAWD;;;;;;;GAOG;AACH,MAAM,aAAa,GAAkC;IACnD,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE;IACzC,aAAa,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE;IAChD,WAAW,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;IAC/C,UAAU,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE;IAC7C,mEAAmE;IACnE,sEAAsE;IACtE,mEAAmE;IACnE,sEAAsE;IACtE,0DAA0D;IAC1D,UAAU,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE;CAC7C,CAAC;AAEF;;;;iCAIiC;AACjC,MAAM,UAAU,WAAW,CAAC,MAAc;IACxC,OAAO,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,MAAM,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACxE,CAAC;AAED;;;;;0CAK0C;AAC1C,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AACrE,CAAC;AAED;mCACmC;AACnC,MAAM,cAAc,GAAkC;IACpD,iBAAiB,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,KAAK,EAAE;IAC7D,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;IACpC,aAAa,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE;IACxD,mBAAmB,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,EAAE;IAChE,cAAc,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE;CACxD,CAAC;AAEF,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,OAAO,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC5E,CAAC"}
@@ -1,3 +1,4 @@
1
+ import type { IRepro } from '../types/repro.js';
1
2
  /**
2
3
  * `in-review` was missing here until 2026-08-27, and the first
3
4
  * populated review payload is what exposed it: the server has been able
@@ -7,14 +8,23 @@
7
8
  * board showed an item awaiting confirmation as though nobody had
8
9
  * touched it, and `backlog list in-review` was refused as a typo.
9
10
  */
10
- export type BacklogStatus = 'open' | 'in-progress' | 'in-review' | 'complete' | 'wont-fix';
11
- export declare const BACKLOG_STATUSES: BacklogStatus[];
11
+ export type { BacklogStatus } from './backlog-vocab.js';
12
+ export { BACKLOG_STATUSES } from './backlog-vocab.js';
13
+ import type { BacklogStatus } from './backlog-vocab.js';
12
14
  export interface IBacklogItem {
13
15
  _id: string;
14
16
  text: string;
15
17
  reporterHandle?: string;
16
18
  runnerName?: string;
17
19
  sessionId?: string;
20
+ /** WHICH BUILD SAW IT. Sent by the server since the board shipped --
21
+ * they are in every /list payload -- and simply never declared here,
22
+ * so no reader could use them. They matter to a reviewer: an item
23
+ * filed against an older engine may already be fixed, and knowing
24
+ * the platform is half of reproducing a terminal bug. */
25
+ cliVersion?: string;
26
+ engineVersion?: string;
27
+ platform?: string;
18
28
  status: BacklogStatus;
19
29
  /** The commits that closed it. The server refuses to move an item to
20
30
  * `complete` without at least one (user ruling 2026-08-27), so a
@@ -22,6 +32,11 @@ export interface IBacklogItem {
22
32
  * which is what stops the board drifting from the tree. `wont-fix`
23
33
  * is exempt: there is no commit behind deciding not to act. */
24
34
  commits?: string[];
35
+ /** THE BENCH, when one is attached. Already on the wire -- /list uses
36
+ * an EXCLUSION projection, so this arrives whether or not anyone
37
+ * declared it -- and undeclared is how a board full of benches looked
38
+ * identical to a board with none. */
39
+ repro?: IRepro;
25
40
  vetting?: {
26
41
  state: 'pending' | 'vetted' | 'failed';
27
42
  verdict?: 'bug' | 'canon-violation' | 'enhancement' | 'works-as-intended' | 'needs-detail';
@@ -82,6 +97,11 @@ export interface IReviewItem {
82
97
  text: string;
83
98
  at?: string;
84
99
  };
100
+ /** THE BENCH THIS FIX SHIPS WITH: a scene spec the client builds a
101
+ * two-room bench from, and the literal commands to type in it. Not
102
+ * every item has one -- some are about a verb, a note or a menu --
103
+ * so absence is ordinary and says so rather than reading as broken. */
104
+ repro?: IRepro;
85
105
  }
86
106
  /**
87
107
  * The review queue, OLDEST FIRST. That order is load-bearing and comes
@@ -139,6 +159,17 @@ export declare function postBacklogSignoff(itemId: string, note: string, runnerN
139
159
  * than a clean slate.
140
160
  */
141
161
  export declare function postBacklogReject(itemId: string, note: string, runnerName?: string): Promise<BacklogOutcome>;
162
+ /**
163
+ * CLOSE IT WITH NO VERDICT -- the reporter withdraws their own item.
164
+ *
165
+ * The third answer, and the board had only two. Signing off a mistake
166
+ * puts a false confirmation on the record; rejecting it sends imaginary
167
+ * work back to whoever "fixed" it. Both lie, in opposite directions.
168
+ *
169
+ * Lands on `wont-fix` server-side, which is what that status has always
170
+ * meant: closed with nothing behind it. Reporter or admin.
171
+ */
172
+ export declare function postBacklogClose(itemId: string, note: string, runnerName?: string): Promise<BacklogOutcome>;
142
173
  export interface IRoleHolder {
143
174
  email?: string;
144
175
  roles: string[];
@@ -157,7 +188,18 @@ export declare function setRole(action: 'grant' | 'revoke', email: string, role:
157
188
  outcome: BacklogOutcome;
158
189
  message?: string;
159
190
  }>;
160
- export declare function fetchBacklog(status?: BacklogStatus): Promise<{
191
+ /**
192
+ * The board.
193
+ *
194
+ * WITHOUT a status, the server now leaves CLOSED items out (user ruling
195
+ * 2026-08-28: "I shouldn't see any 'done' items when looking at the
196
+ * backlog") and returns what is left ordered by what needs attention:
197
+ * in-review first, then open. `all` asks for everything anyway; a
198
+ * specific `status` is always honoured exactly.
199
+ */
200
+ export declare function fetchBacklog(status?: BacklogStatus, opts?: {
201
+ all?: boolean;
202
+ }): Promise<{
161
203
  outcome: BacklogOutcome;
162
204
  items?: IBacklogItem[];
163
205
  }>;
@@ -25,7 +25,7 @@ const HOSTNAME = DEV ? 'localhost' : 'www.maka-cli.com';
25
25
  const PORT = DEV ? Number(process.env.MAKA_DEV_PORT ?? 3000) : 443;
26
26
  const API_BASE = 'api/v1/game-backlog';
27
27
  const TIMEOUT_MS = 10000;
28
- export const BACKLOG_STATUSES = ['open', 'in-progress', 'in-review', 'complete', 'wont-fix'];
28
+ export { BACKLOG_STATUSES } from './backlog-vocab.js';
29
29
  function request(method, apiPath, token, body) {
30
30
  return new Promise((resolve, reject) => {
31
31
  const payload = body === undefined ? undefined : JSON.stringify(body);
@@ -224,6 +224,39 @@ export async function postBacklogReject(itemId, note, runnerName) {
224
224
  return 'offline';
225
225
  }
226
226
  }
227
+ /**
228
+ * CLOSE IT WITH NO VERDICT -- the reporter withdraws their own item.
229
+ *
230
+ * The third answer, and the board had only two. Signing off a mistake
231
+ * puts a false confirmation on the record; rejecting it sends imaginary
232
+ * work back to whoever "fixed" it. Both lie, in opposite directions.
233
+ *
234
+ * Lands on `wont-fix` server-side, which is what that status has always
235
+ * meant: closed with nothing behind it. Reporter or admin.
236
+ */
237
+ export async function postBacklogClose(itemId, note, runnerName) {
238
+ const token = authToken();
239
+ if (!token)
240
+ return 'no-login';
241
+ try {
242
+ const res = await request('POST', `/${API_BASE}/item/${encodeURIComponent(itemId)}/close`, token, {
243
+ note,
244
+ runnerName,
245
+ });
246
+ if (res.statusCode === 200 || res.statusCode === 201)
247
+ return 'ok';
248
+ if (res.statusCode === 401)
249
+ return 'expired';
250
+ if (res.statusCode === 403)
251
+ return 'forbidden';
252
+ if (res.statusCode === 400 || res.statusCode === 404)
253
+ return 'rejected';
254
+ return 'offline';
255
+ }
256
+ catch {
257
+ return 'offline';
258
+ }
259
+ }
227
260
  /** Who holds what. Admin-only server-side; a non-admin gets 'forbidden'
228
261
  * and the command turns that into a sentence. */
229
262
  export async function fetchRoles() {
@@ -270,12 +303,21 @@ export async function setRole(action, email, role) {
270
303
  return { outcome: 'offline' };
271
304
  }
272
305
  }
273
- export async function fetchBacklog(status) {
306
+ /**
307
+ * The board.
308
+ *
309
+ * WITHOUT a status, the server now leaves CLOSED items out (user ruling
310
+ * 2026-08-28: "I shouldn't see any 'done' items when looking at the
311
+ * backlog") and returns what is left ordered by what needs attention:
312
+ * in-review first, then open. `all` asks for everything anyway; a
313
+ * specific `status` is always honoured exactly.
314
+ */
315
+ export async function fetchBacklog(status, opts = {}) {
274
316
  const token = authToken();
275
317
  if (!token)
276
318
  return { outcome: 'no-login' };
277
319
  try {
278
- const query = status ? `?status=${encodeURIComponent(status)}` : '';
320
+ const query = status ? `?status=${encodeURIComponent(status)}` : (opts.all ? '?all=1' : '');
279
321
  const res = await request('GET', `/${API_BASE}/list${query}`, token);
280
322
  if (res.statusCode === 401)
281
323
  return { outcome: 'expired' };
@@ -1 +1 @@
1
- {"version":3,"file":"backlog.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/utilities/backlog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backlog.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/utilities/backlog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * A COMMIT PREFIX, matched the way git matches one.
3
+ *
4
+ * Deliberately loose, and deliberately NOT the loose match this repo has
5
+ * been bitten by three times: Inventory.resolveKey compares with
6
+ * `includes` in both directions, which is right for a phrase a human
7
+ * typed at an object and wrong for an identity already known. A sha is
8
+ * neither -- it is a PREFIX TREE, and abbreviating one to its leading
9
+ * characters is git's own convention, so `startsWith` in either
10
+ * direction is the correct generosity. `includes` would match a sha
11
+ * carrying those characters in the MIDDLE, which git would never do.
12
+ */
13
+ export declare function commitMatches(commits: string[] | undefined, wanted: string): boolean;
@@ -0,0 +1,22 @@
1
+ /**
2
+ * A COMMIT PREFIX, matched the way git matches one.
3
+ *
4
+ * Deliberately loose, and deliberately NOT the loose match this repo has
5
+ * been bitten by three times: Inventory.resolveKey compares with
6
+ * `includes` in both directions, which is right for a phrase a human
7
+ * typed at an object and wrong for an identity already known. A sha is
8
+ * neither -- it is a PREFIX TREE, and abbreviating one to its leading
9
+ * characters is git's own convention, so `startsWith` in either
10
+ * direction is the correct generosity. `includes` would match a sha
11
+ * carrying those characters in the MIDDLE, which git would never do.
12
+ */
13
+ export function commitMatches(commits, wanted) {
14
+ const w = wanted.trim().toLowerCase();
15
+ if (!w)
16
+ return false;
17
+ return (commits ?? []).some(c => {
18
+ const sha = c.toLowerCase();
19
+ return sha.startsWith(w) || w.startsWith(sha);
20
+ });
21
+ }
22
+ //# sourceMappingURL=commit-ref.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commit-ref.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/utilities/commit-ref.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,aAAa,CAAC,OAA6B,EAAE,MAAc;IACzE,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACtC,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrB,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;QAC9B,MAAM,GAAG,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QAC5B,OAAO,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -28,5 +28,17 @@ export declare function gridIcons(scene: Scene, actor: Player, room: Room): stri
28
28
  * gridIcons below already names it with its state and its verbs.
29
29
  */
30
30
  export declare function gridSculpt(actor: Player, room: Room): string;
31
- /** The icons rendered as the standard cyan block, or the thin-grid line. */
31
+ /**
32
+ * The icons rendered as the standard cyan block, or the thin-grid line.
33
+ *
34
+ * THERE IS NO AR OUT HERE (backlog 3teN4oNvyzbLpi8xK; canon p.229 USER
35
+ * MODES, p.217-218 VIRTUAL VISIONS). Both callers -- go.ts's grid
36
+ * arrival and look.ts's gridLook -- are gated on plane 'matrix', which
37
+ * in this engine is full VR: the body goes limp and every sense comes
38
+ * from the Matrix. The empty case used to call the quiet ground
39
+ * "ambient AR clutter", but an ARO hangs on a physical object and a
40
+ * persona is not in the physical world to see one. commands/ar.ts has
41
+ * refused `aros` in VR all along ("You're IN it -- 'look' is your
42
+ * overlay out here"); this is that same ruling reaching the prose.
43
+ */
32
44
  export declare function gridIconBlock(scene: Scene, actor: Player, room: Room): string;
@@ -35,10 +35,31 @@ export function gridIcons(scene, actor, room) {
35
35
  : `◆ ${a.name} -- a persona on this grid`);
36
36
  }
37
37
  else if (a.plane === 'meat' && !a.isIncapacitated() && isLinked(a)) {
38
+ // ONE ICON, SCULPTED LIKE THE MASTER (canon p.217-219, checked
39
+ // against the book 2026-08-28 for backlog 3teN4oNvyzbLpi8xK).
40
+ //
41
+ // The report said this icon names the wrong thing -- that what a
42
+ // persona sees is the DEVICE, and the PAN is the network behind
43
+ // it, reachable only by cracking the master. The book says
44
+ // otherwise, so the MODEL STAYS. A commlink filters out the least
45
+ // interesting icons, so a person's personal devices are MERGED
46
+ // into a single PAN icon, and that icon "often looks similar to
47
+ // the physical device that serves as the master" (p.219). The PAN
48
+ // is exactly what you see; the master is exactly what it is
49
+ // shaped like. (The book's own exception -- an interesting or
50
+ // dangerous device, a wireless gun, breaking out as its own icon
51
+ // -- is NOT modelled here and is on the board, not smuggled in.)
52
+ //
53
+ // What the report was right about is that this line never SAID
54
+ // any of that, so an icon labelled with someone's whole network
55
+ // read as a claim to see inside it. You cannot: look.ts gates the
56
+ // contents behind a mark ("shapes, not names" at zero). So the
57
+ // line names the shape it actually is, and points at the verb
58
+ // that opens it, instead of implying it is already open.
38
59
  const master = a.getPanMaster();
39
60
  if (master) {
40
61
  const myMarks = a.panMarksBy.get(actor.name) ?? 0;
41
- icons.push(`▣ ${a.name}'s PAN (${master.name}) -- a meat presence, broadcasting.${myMarks > 0 ? ` [your marks: ${myMarks}/3]` : ''} ("hack ${a.name}" cracks it)`);
62
+ icons.push(`▣ ${a.name}'s PAN -- one icon, sculpted like the ${master.name} that masters it, everything else they carry folded inside.${myMarks > 0 ? ` [your marks: ${myMarks}/3]` : ''} ("look ${a.name}" reads the shape; "hack ${a.name}" cracks it open)`);
42
63
  }
43
64
  }
44
65
  }
@@ -96,11 +117,23 @@ export function gridSculpt(actor, room) {
96
117
  : `Dead ground -- there is architecture here, but no door onto it from the wireless grid.`;
97
118
  return `${header}\n{cyan-fg}${ground}{/cyan-fg}`;
98
119
  }
99
- /** The icons rendered as the standard cyan block, or the thin-grid line. */
120
+ /**
121
+ * The icons rendered as the standard cyan block, or the thin-grid line.
122
+ *
123
+ * THERE IS NO AR OUT HERE (backlog 3teN4oNvyzbLpi8xK; canon p.229 USER
124
+ * MODES, p.217-218 VIRTUAL VISIONS). Both callers -- go.ts's grid
125
+ * arrival and look.ts's gridLook -- are gated on plane 'matrix', which
126
+ * in this engine is full VR: the body goes limp and every sense comes
127
+ * from the Matrix. The empty case used to call the quiet ground
128
+ * "ambient AR clutter", but an ARO hangs on a physical object and a
129
+ * persona is not in the physical world to see one. commands/ar.ts has
130
+ * refused `aros` in VR all along ("You're IN it -- 'look' is your
131
+ * overlay out here"); this is that same ruling reaching the prose.
132
+ */
100
133
  export function gridIconBlock(scene, actor, room) {
101
134
  const icons = gridIcons(scene, actor, room);
102
135
  if (icons.length === 0) {
103
- return `{cyan-fg}Thin grid out here -- ambient AR clutter, nothing worth cracking.{/cyan-fg}`;
136
+ return `{cyan-fg}Thin grid out here -- background noise, nothing worth cracking.{/cyan-fg}`;
104
137
  }
105
138
  return `{cyan-fg}ICONS IN REACH:{/cyan-fg}\n${icons.map(i => ` {cyan-fg}${i}{/cyan-fg}`).join('\n')}`;
106
139
  }
@@ -1 +1 @@
1
- {"version":3,"file":"grid-view.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/utilities/grid-view.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"grid-view.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/utilities/grid-view.ts"],"names":[],"mappings":"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"}