@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.
- package/bundle/typescript/package.json +1 -1
- package/bundle/typescript/src/commands/game/_index.d.ts +1 -0
- package/bundle/typescript/src/commands/game/_index.js +1 -0
- package/bundle/typescript/src/commands/game/_index.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/archetypes.js +6 -1
- package/bundle/typescript/src/commands/game/sideQuest/archetypes.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/ar.js +4 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/ar.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/backlog.d.ts +103 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/backlog.js +423 -25
- package/bundle/typescript/src/commands/game/sideQuest/commands/backlog.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/bluff.d.ts +15 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/bluff.js +61 -4
- package/bundle/typescript/src/commands/game/sideQuest/commands/bluff.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/companions.d.ts +39 -3
- package/bundle/typescript/src/commands/game/sideQuest/commands/companions.js +85 -4
- package/bundle/typescript/src/commands/game/sideQuest/commands/companions.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/compile.d.ts +37 -17
- package/bundle/typescript/src/commands/game/sideQuest/commands/compile.js +53 -115
- package/bundle/typescript/src/commands/game/sideQuest/commands/compile.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/decompile.d.ts +55 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/decompile.js +203 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/decompile.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/go.d.ts +23 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/go.js +42 -7
- package/bundle/typescript/src/commands/game/sideQuest/commands/go.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/hack.d.ts +27 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js +28 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/hack.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/order.js +69 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/order.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/register.d.ts +15 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/register.js +32 -6
- package/bundle/typescript/src/commands/game/sideQuest/commands/register.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/review.d.ts +39 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/review.js +48 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/review.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/sprites.d.ts +35 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/sprites.js +108 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/sprites.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/thread.d.ts +27 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/thread.js +7 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/thread.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/unravel.d.ts +57 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/unravel.js +162 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/unravel.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/engine-version.d.ts +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/engine-version.js +31 -1
- package/bundle/typescript/src/commands/game/sideQuest/engine-version.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/repro-scene.d.ts +87 -0
- package/bundle/typescript/src/commands/game/sideQuest/factories/repro-scene.js +320 -0
- package/bundle/typescript/src/commands/game/sideQuest/factories/repro-scene.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js +32 -0
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.js +8 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/game.d.ts +98 -11
- package/bundle/typescript/src/commands/game/sideQuest/game.js +239 -35
- package/bundle/typescript/src/commands/game/sideQuest/game.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/headless-harness.d.ts +24 -0
- package/bundle/typescript/src/commands/game/sideQuest/headless-harness.js +63 -0
- package/bundle/typescript/src/commands/game/sideQuest/headless-harness.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/item.d.ts +9 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/item.js +9 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/item.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.d.ts +57 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.js +62 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/player.d.ts +10 -3
- package/bundle/typescript/src/commands/game/sideQuest/models/player.js +5 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/player.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/resonance-actions.d.ts +108 -0
- package/bundle/typescript/src/commands/game/sideQuest/resonance-actions.js +186 -0
- package/bundle/typescript/src/commands/game/sideQuest/resonance-actions.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/sprite-powers.d.ts +88 -0
- package/bundle/typescript/src/commands/game/sideQuest/sprite-powers.js +137 -0
- package/bundle/typescript/src/commands/game/sideQuest/sprite-powers.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/repro.d.ts +106 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/repro.js +2 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/repro.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/save-file.d.ts +32 -1
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/device-seed.d.ts +12 -0
- package/bundle/typescript/src/commands/game/sideQuest/ui.d.ts +9 -0
- package/bundle/typescript/src/commands/game/sideQuest/ui.js +3 -0
- package/bundle/typescript/src/commands/game/sideQuest/ui.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-dump.d.ts +17 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-dump.js +250 -36
- package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-dump.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-review.d.ts +30 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-review.js +58 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-review.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-vocab.d.ts +85 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-vocab.js +100 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog-vocab.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog.d.ts +45 -3
- package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog.js +45 -3
- package/bundle/typescript/src/commands/game/sideQuest/utilities/backlog.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/commit-ref.d.ts +13 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/commit-ref.js +22 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/commit-ref.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/grid-view.d.ts +13 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/grid-view.js +36 -3
- package/bundle/typescript/src/commands/game/sideQuest/utilities/grid-view.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/handoff.d.ts +42 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/handoff.js +57 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/handoff.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.js +14 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/repro-launch.d.ts +68 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/repro-launch.js +147 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/repro-launch.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.js +39 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/spots.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest-backlog.sub.cmd.d.ts +1 -0
- package/bundle/typescript/src/commands/game/sideQuest-backlog.sub.cmd.js +46 -0
- package/bundle/typescript/src/commands/game/sideQuest-backlog.sub.cmd.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.d.ts +3 -1
- package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js +352 -42
- package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js.map +1 -1
- package/bundle/typescript/src/tools/log/log.class.d.ts +17 -0
- package/bundle/typescript/src/tools/log/log.class.js +30 -1
- package/bundle/typescript/src/tools/log/log.class.js.map +1 -1
- 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":"AAAA,OAAO,EAAE,gBAAgB,
|
|
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
|
|
11
|
-
export
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
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
|
-
/**
|
|
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
|
|
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
|
-
/**
|
|
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 --
|
|
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":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAE1E;;;;;;;;;GASG;AACH,MAAM,UAAU,SAAS,CAAC,KAAY,EAAE,KAAa,EAAE,IAAU;IAC/D,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,4FAA4F,CAAC,CAAC;QAC7H,CAAC;aAAM,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAC5B,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,6EAA6E,CAAC,CAAC;QAC9G,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtD,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,0DAA0D,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,8CAA8C,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,4EAA4E,CAAC,CAAC;QAC9R,CAAC;IACH,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5C,IAAI,CAAC,KAAK,KAAK;YAAE,SAAS;QAC1B,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;YACzB,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;YACrE,KAAK,CAAC,IAAI,CAAC,SAAS;gBAClB,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,qCAAqC;gBAClD,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,4BAA4B,CAAC,CAAC;QAC/C,CAAC;aAAM,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,IAAI,CAAC,CAAC,CAAC,eAAe,EAAE,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YACrE,MAAM,MAAM,GAAG,CAAC,CAAC,YAAY,EAAE,CAAC;YAChC,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,OAAO,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAClD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"grid-view.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/utilities/grid-view.ts"],"names":[],"mappings":"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"}
|