@maka/maka-cli 5.108.0 → 5.110.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/command.js +13 -0
- package/bundle/typescript/src/command.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/container-verbs.d.ts +18 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/container-verbs.js +131 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/container-verbs.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/look.js +15 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/look.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/search.js +29 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/search.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/take.d.ts +2 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/take.js +47 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/take.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/room-factory.d.ts +30 -2
- package/bundle/typescript/src/commands/game/sideQuest/factories/room-factory.js +39 -0
- package/bundle/typescript/src/commands/game/sideQuest/factories/room-factory.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/game.js +22 -2
- package/bundle/typescript/src/commands/game/sideQuest/game.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/_index.d.ts +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/_index.js +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/_index.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/container.d.ts +78 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/container.js +57 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/container.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/room.d.ts +18 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/room.js +38 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/room.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/condition-report.js +18 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/condition-report.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.js +21 -3
- package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.js.map +1 -1
- package/bundle/typescript/src/commands/registry.js +1 -1
- package/bundle/typescript/src/commands/registry.js.map +1 -1
- package/bundle/typescript/src/commands/update.js +29 -6
- package/bundle/typescript/src/commands/update.js.map +1 -1
- package/bundle/typescript/src/tool.d.ts +21 -0
- package/bundle/typescript/src/tool.js.map +1 -1
- package/bundle/typescript/src/tools/mpi/shared-verb.d.ts +20 -0
- package/bundle/typescript/src/tools/mpi/shared-verb.js +36 -0
- package/bundle/typescript/src/tools/mpi/shared-verb.js.map +1 -0
- package/package.json +1 -1
|
@@ -1,6 +1,34 @@
|
|
|
1
|
-
import { Room } from '../models/_index.js';
|
|
1
|
+
import { Room, IRoomConstructorConfig } from '../models/_index.js';
|
|
2
2
|
import { IRoomSeedJson } from '../types/seed/room-seed.js';
|
|
3
|
+
import type { IRoomGrid } from '../utilities/room-grid.js';
|
|
3
4
|
export declare class RoomFactory {
|
|
4
5
|
createRoomFromJson(config: IRoomSeedJson): Promise<Room>;
|
|
5
|
-
|
|
6
|
+
convertToRoomConfigFromJson(roomJson: IRoomSeedJson): IRoomConstructorConfig;
|
|
6
7
|
}
|
|
8
|
+
/**
|
|
9
|
+
* THE ONE-ASSEMBLER GRID EXPORT (maka-cli.com contract, 2026-09-01).
|
|
10
|
+
*
|
|
11
|
+
* The web sheet renders a room's true geometry from the save's embedded
|
|
12
|
+
* hub seed. Grid synthesis is deterministic (room-grid.ts's contract),
|
|
13
|
+
* but the INPUT ASSEMBLY is not trivially so -- ensureGrid resolves
|
|
14
|
+
* declared exit bindings and kind-matched doorways, and this engine has
|
|
15
|
+
* already paid twice for a second assembler drifting (the direction-
|
|
16
|
+
* blind doorway bug, the centroid hub bug -- both documented in
|
|
17
|
+
* ensureGrid). So the web calls THIS, which builds the room from its
|
|
18
|
+
* seed exactly as the scene factory does -- same whitelist, same
|
|
19
|
+
* declared-binding rule (scene-factory.ts:202) -- and asks the room's
|
|
20
|
+
* OWN ensureGrid. One assembler; a wrapper, not a re-implementation.
|
|
21
|
+
*
|
|
22
|
+
* Exit values are the seed's target-room NAMES (Room.exits accepts
|
|
23
|
+
* strings; ensureGrid only reads the direction keys), so no Door
|
|
24
|
+
* machinery and no neighbor rooms are needed. terrainHints stay
|
|
25
|
+
* whatever the Room ctor derives -- a fresh-from-seed room has no
|
|
26
|
+
* device-opened regions, which matches a fresh boot; a mid-session
|
|
27
|
+
* device unlock changes walkability, not walls/spots/doors, so the
|
|
28
|
+
* rendered geometry stays honest either way.
|
|
29
|
+
*
|
|
30
|
+
* Caller must be inside a session context (Room construction resolves
|
|
31
|
+
* the ambient logger) -- the web's runInSession wrapper, as with the
|
|
32
|
+
* character factory.
|
|
33
|
+
*/
|
|
34
|
+
export declare function roomGridFromSeed(seed: IRoomSeedJson): IRoomGrid | undefined;
|
|
@@ -5,6 +5,8 @@ export class RoomFactory {
|
|
|
5
5
|
const room = new Room(roomConfig);
|
|
6
6
|
return room;
|
|
7
7
|
}
|
|
8
|
+
// Public since the roomGridFromSeed export below reuses it -- the same
|
|
9
|
+
// whitelist building the same config, which is the whole point.
|
|
8
10
|
convertToRoomConfigFromJson(roomJson) {
|
|
9
11
|
return {
|
|
10
12
|
name: roomJson.name,
|
|
@@ -31,4 +33,41 @@ export class RoomFactory {
|
|
|
31
33
|
};
|
|
32
34
|
}
|
|
33
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* THE ONE-ASSEMBLER GRID EXPORT (maka-cli.com contract, 2026-09-01).
|
|
38
|
+
*
|
|
39
|
+
* The web sheet renders a room's true geometry from the save's embedded
|
|
40
|
+
* hub seed. Grid synthesis is deterministic (room-grid.ts's contract),
|
|
41
|
+
* but the INPUT ASSEMBLY is not trivially so -- ensureGrid resolves
|
|
42
|
+
* declared exit bindings and kind-matched doorways, and this engine has
|
|
43
|
+
* already paid twice for a second assembler drifting (the direction-
|
|
44
|
+
* blind doorway bug, the centroid hub bug -- both documented in
|
|
45
|
+
* ensureGrid). So the web calls THIS, which builds the room from its
|
|
46
|
+
* seed exactly as the scene factory does -- same whitelist, same
|
|
47
|
+
* declared-binding rule (scene-factory.ts:202) -- and asks the room's
|
|
48
|
+
* OWN ensureGrid. One assembler; a wrapper, not a re-implementation.
|
|
49
|
+
*
|
|
50
|
+
* Exit values are the seed's target-room NAMES (Room.exits accepts
|
|
51
|
+
* strings; ensureGrid only reads the direction keys), so no Door
|
|
52
|
+
* machinery and no neighbor rooms are needed. terrainHints stay
|
|
53
|
+
* whatever the Room ctor derives -- a fresh-from-seed room has no
|
|
54
|
+
* device-opened regions, which matches a fresh boot; a mid-session
|
|
55
|
+
* device unlock changes walkability, not walls/spots/doors, so the
|
|
56
|
+
* rendered geometry stays honest either way.
|
|
57
|
+
*
|
|
58
|
+
* Caller must be inside a session context (Room construction resolves
|
|
59
|
+
* the ambient logger) -- the web's runInSession wrapper, as with the
|
|
60
|
+
* character factory.
|
|
61
|
+
*/
|
|
62
|
+
export function roomGridFromSeed(seed) {
|
|
63
|
+
const room = new Room(new RoomFactory().convertToRoomConfigFromJson(seed));
|
|
64
|
+
for (const exit of seed.exits ?? []) {
|
|
65
|
+
const dir = exit.direction.toLowerCase();
|
|
66
|
+
room.exits.set(dir, exit.targetRoom);
|
|
67
|
+
const atSpot = exit.atSpot;
|
|
68
|
+
if (atSpot)
|
|
69
|
+
room.exitSpots.set(dir, atSpot);
|
|
70
|
+
}
|
|
71
|
+
return room.ensureGrid();
|
|
72
|
+
}
|
|
34
73
|
//# sourceMappingURL=room-factory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"room-factory.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/factories/room-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAA0B,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"room-factory.js","sourceRoot":"","sources":["../../../../../../../src/commands/game/sideQuest/factories/room-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAA0B,MAAM,qBAAqB,CAAC;AAKnE,MAAM,OAAO,WAAW;IACtB,KAAK,CAAC,kBAAkB,CAAC,MAAqB;QAC5C,MAAM,UAAU,GAA2B,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC;QACpF,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,uEAAuE;IACvE,gEAAgE;IAChE,2BAA2B,CAAC,QAAuB;QACjD,OAAO;YACL,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,EAAE;YACzB,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,gEAAgE;YAChE,+DAA+D;YAC/D,iCAAiC;YACjC,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,+DAA+D;YAC/D,6DAA6D;YAC7D,2CAA2C;YAC3C,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,mBAAmB,EAAE,QAAQ,CAAC,mBAAmB;SAClD,CAAC;IACJ,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAmB;IAClD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,WAAW,EAAE,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3E,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAe,CAAC;QACtD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACrC,MAAM,MAAM,GAAI,IAA4B,CAAC,MAAM,CAAC;QACpD,IAAI,MAAM;YAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;AAC3B,CAAC"}
|
|
@@ -4,7 +4,7 @@ import { dirname } from 'path';
|
|
|
4
4
|
import { capitalCase } from 'change-case';
|
|
5
5
|
import { Category, Size, Rating } from './types/shared/item-enum.js';
|
|
6
6
|
import { Item } from './models/item.js';
|
|
7
|
-
import { Room } from './models/_index.js';
|
|
7
|
+
import { Room, Container } from './models/_index.js';
|
|
8
8
|
import { Door } from './models/door.js';
|
|
9
9
|
import { SAVE_VERSION } from './types/save-file.js';
|
|
10
10
|
import { serializePlayer, restorePlayer, captureHubOverlay, applyHubOverlay, writeSaveAtomic, deleteSave, restoreItem, readSave, serializeItem, saveSlug, spillPathFor, } from './utilities/persistence.js';
|
|
@@ -51,6 +51,7 @@ import { SearchCommand } from './commands/search.js';
|
|
|
51
51
|
import { SayCommand } from './commands/say.js';
|
|
52
52
|
import { TalkCommand } from './commands/talk.js';
|
|
53
53
|
import { StoreCommand } from './commands/store.js';
|
|
54
|
+
import { OpenCommand, CloseCommand, PutCommand } from './commands/container-verbs.js';
|
|
54
55
|
import { GiveCommand } from './commands/give.js';
|
|
55
56
|
import { ReadCommand } from './commands/read.js';
|
|
56
57
|
import { KillCommand } from './commands/kill.js';
|
|
@@ -2225,6 +2226,12 @@ ${client.name} won't be remembering anything. Dead Johnsons pay nothing -- and t
|
|
|
2225
2226
|
CommandFactory.registerCommand('search', SearchCommand);
|
|
2226
2227
|
CommandFactory.registerCommand('say', SayCommand);
|
|
2227
2228
|
CommandFactory.registerCommand('store', StoreCommand);
|
|
2229
|
+
// CONTAINERS (increment 1, 2026-09-01): open/close/put claimed --
|
|
2230
|
+
// unclaimed, they fell to the typo-matcher (the jackpoint lesson).
|
|
2231
|
+
// "take <x> from <c>" rides the take verb; `stow` belongs to holster.
|
|
2232
|
+
CommandFactory.registerCommand('open', OpenCommand);
|
|
2233
|
+
CommandFactory.registerCommand('close', CloseCommand);
|
|
2234
|
+
CommandFactory.registerCommand('put', PutCommand);
|
|
2228
2235
|
CommandFactory.registerCommand('talk-to', TalkCommand);
|
|
2229
2236
|
CommandFactory.registerCommand('give', GiveCommand);
|
|
2230
2237
|
CommandFactory.registerCommand('read', ReadCommand);
|
|
@@ -2637,6 +2644,19 @@ ${client.name} won't be remembering anything. Dead Johnsons pay nothing -- and t
|
|
|
2637
2644
|
description: this.lifestyle.homeDescription,
|
|
2638
2645
|
roomType: 'Residence',
|
|
2639
2646
|
});
|
|
2647
|
+
// THE FOOTLOCKER (containers increment 1, 2026-09-01): the secure
|
|
2648
|
+
// stash's tangible face. secureFor makes it the player's alone; its
|
|
2649
|
+
// contents persist as ISavedHub.home.secureStash (the key that
|
|
2650
|
+
// round-tripped empty for every save ever written -- the stash was
|
|
2651
|
+
// dead code until this furniture arrived to be its body). Boots
|
|
2652
|
+
// SHUT each session, like a fresh Device. Game-created beside the
|
|
2653
|
+
// room, never seeded -- the room is code-owned, its contents are
|
|
2654
|
+
// save-owned.
|
|
2655
|
+
this._homeRoom.containers.push(new Container({
|
|
2656
|
+
name: 'Footlocker',
|
|
2657
|
+
description: 'A battered steel footlocker, bolted to the floor -- the one place in the sprawl that answers to you alone.',
|
|
2658
|
+
secureFor: this.player.name,
|
|
2659
|
+
}));
|
|
2640
2660
|
// SHARED RUNS (server-hosted, headless.ts): the crew RODE to the
|
|
2641
2661
|
// jobsite -- nobody's cot is stapled to it, and the leader arrives
|
|
2642
2662
|
// AT the job like every joiner (2026-08-24 playtest: the leader
|
|
@@ -5403,7 +5423,7 @@ ${client.name} won't be remembering anything. Dead Johnsons pay nothing -- and t
|
|
|
5403
5423
|
*/
|
|
5404
5424
|
static HELP_CATEGORIES = [
|
|
5405
5425
|
{ title: 'moving', entries: [['look'], ['go'], ['move', 'walk', 'approach'], ['run'], ['sprint'], ['climb', 'mantle', 'scale', 'clamber'], ['descend'], ['sit', 'kneel'], ['lie', 'prone'], ['stand'], ['follow'], ['unfollow'], ['map', 'exits'], ['search'], ['sneak']] },
|
|
5406
|
-
{ title: 'gear', entries: [['inv', 'inventory'], ['equipment', 'eq'], ['take'], ['loot'], ['drop'], ['give'], ['store'], ['equip'], ['unequip'], ['brandish', 'draw'], ['holster', 'stow'], ['reload'], ['use'], ['read']] },
|
|
5426
|
+
{ title: 'gear', entries: [['inv', 'inventory'], ['equipment', 'eq'], ['take'], ['loot'], ['drop'], ['give'], ['store'], ['open'], ['close'], ['put'], ['equip'], ['unequip'], ['brandish', 'draw'], ['holster', 'stow'], ['reload'], ['use'], ['read']] },
|
|
5407
5427
|
{ title: 'combat', entries: [['attack'], ['kill'], ['subdue'], ['grapple', 'restrain', 'clinch'], ['struggle'], ['release'], ['cover'], ['stance'], ['surrender'], ['edge'], ['rest'], ['heal', 'firstaid', 'bandage', 'patch']] },
|
|
5408
5428
|
// The party layer: everyone who walks (or flies, or manifests) at
|
|
5409
5429
|
// your side answers to these.
|