@kernel.chat/kbot 3.88.0 → 3.94.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.
@@ -0,0 +1,161 @@
1
+ import type { CanvasRenderingContext2D } from 'canvas';
2
+ import type { TileWorld, BlockType } from './tile-world.js';
3
+ export interface BlockChange {
4
+ chunkX: number;
5
+ tileX: number;
6
+ tileY: number;
7
+ from: BlockType;
8
+ to: BlockType;
9
+ reason: string;
10
+ }
11
+ export interface EcologyState {
12
+ growthMap: Map<string, number>;
13
+ moistureMap: Map<string, number>;
14
+ fireSpread: Array<{
15
+ x: number;
16
+ y: number;
17
+ life: number;
18
+ }>;
19
+ vineCoverage: Map<string, number>;
20
+ flowerMap: Map<string, string>;
21
+ }
22
+ export interface WorldMemory {
23
+ footpaths: Map<string, number>;
24
+ landmarks: Array<{
25
+ x: number;
26
+ y: number;
27
+ name: string;
28
+ creator: string;
29
+ type: 'build' | 'event' | 'discovery' | 'dream';
30
+ timestamp: number;
31
+ description: string;
32
+ }>;
33
+ chatHeatmap: Map<string, number>;
34
+ events: Array<{
35
+ x: number;
36
+ y: number;
37
+ type: string;
38
+ timestamp: number;
39
+ }>;
40
+ }
41
+ export interface ZoneEmotion {
42
+ warmth: number;
43
+ mystery: number;
44
+ nostalgia: number;
45
+ energy: number;
46
+ }
47
+ export interface EmotionalMap {
48
+ zones: Map<string, ZoneEmotion>;
49
+ }
50
+ export interface ConversationDeposit {
51
+ x: number;
52
+ y: number;
53
+ topic: string;
54
+ username: string;
55
+ type: 'crystal' | 'fossil' | 'artifact' | 'inscription';
56
+ depth: number;
57
+ }
58
+ export interface ConversationLayer {
59
+ deposits: ConversationDeposit[];
60
+ }
61
+ /**
62
+ * Process one ecology tick. Called every ECOLOGY_TICK_INTERVAL frames (~10 seconds).
63
+ * Returns list of block changes for the renderer to know what to redraw.
64
+ */
65
+ export declare function tickEcology(world: TileWorld, ecology: EcologyState, frame: number): BlockChange[];
66
+ export declare function recordFootstep(memory: WorldMemory, worldX: number, worldY: number): void;
67
+ export declare function recordLandmark(memory: WorldMemory, x: number, y: number, name: string, creator: string, type: string, description: string): void;
68
+ export declare function recordChatActivity(memory: WorldMemory, chunkX: number): void;
69
+ export declare function recordEvent(memory: WorldMemory, x: number, y: number, type: string): void;
70
+ /**
71
+ * Render memory effects as overlays on the tile world.
72
+ * Called after tile rendering, before UI.
73
+ */
74
+ export declare function renderMemoryEffects(ctx: CanvasRenderingContext2D, memory: WorldMemory, cameraX: number, tileSize: number, frame: number): void;
75
+ /**
76
+ * Update the emotional map based on activity, memory, and time.
77
+ */
78
+ export declare function updateEmotionalMap(emotions: EmotionalMap, memory: WorldMemory, currentChunkX: number, chatActive: boolean, frame: number): void;
79
+ /**
80
+ * Get the emotional tint color for a chunk.
81
+ */
82
+ export declare function getEmotionalTint(emotions: EmotionalMap, chunkX: number): {
83
+ r: number;
84
+ g: number;
85
+ b: number;
86
+ a: number;
87
+ };
88
+ /**
89
+ * Generate a conversation deposit from a chat topic.
90
+ */
91
+ export declare function generateConversationDeposit(topic: string, username: string, worldX: number): ConversationDeposit;
92
+ /**
93
+ * Render a conversation deposit as a special block pattern.
94
+ */
95
+ export declare function renderConversationDeposit(ctx: CanvasRenderingContext2D, deposit: ConversationDeposit, screenX: number, screenY: number, tileSize: number): void;
96
+ /**
97
+ * Apply dream-induced terrain changes. Called when the robot wakes from dreaming.
98
+ * Returns 3-5 subtle block changes based on dream content keywords.
99
+ */
100
+ export declare function applyDreamChanges(world: TileWorld, dreamInsights: string[]): BlockChange[];
101
+ /**
102
+ * Simulate what happened while the stream was off.
103
+ * Called when a stream starts with a previously saved world.
104
+ * Accelerated: 1 tick per simulated hour.
105
+ */
106
+ export declare function evolveWorld(world: TileWorld, ecology: EcologyState, hoursElapsed: number): BlockChange[];
107
+ /**
108
+ * Save living world state to disk alongside tile data.
109
+ */
110
+ export declare function saveLivingWorldState(ecology: EcologyState, memory: WorldMemory, emotions: EmotionalMap, conversations: ConversationLayer): void;
111
+ /**
112
+ * Load living world state from disk.
113
+ */
114
+ export declare function loadLivingWorldState(): {
115
+ ecology: EcologyState;
116
+ memory: WorldMemory;
117
+ emotions: EmotionalMap;
118
+ conversations: ConversationLayer;
119
+ } | null;
120
+ /**
121
+ * Initialize all living world subsystems.
122
+ * Call at stream start. Loads from disk if available.
123
+ */
124
+ export declare function initLivingWorld(): {
125
+ ecology: EcologyState;
126
+ memory: WorldMemory;
127
+ emotions: EmotionalMap;
128
+ conversations: ConversationLayer;
129
+ };
130
+ /**
131
+ * Main tick function. Call every ECOLOGY_TICK_INTERVAL frames (~10 seconds).
132
+ * Processes ecology, updates emotional map, records robot footstep.
133
+ */
134
+ export declare function tickLivingWorld(world: TileWorld, ecology: EcologyState, memory: WorldMemory, emotions: EmotionalMap, conversations: ConversationLayer, robotX: number, chatActive: boolean, frame: number): {
135
+ changes: BlockChange[];
136
+ newLandmarks: string[];
137
+ };
138
+ /**
139
+ * Render all living world overlays on top of the tile world.
140
+ * Call after tile rendering, before UI layer.
141
+ */
142
+ export declare function renderLivingWorldOverlays(ctx: CanvasRenderingContext2D, memory: WorldMemory, emotions: EmotionalMap, conversations: ConversationLayer, cameraX: number, tileSize: number, frame: number): void;
143
+ /**
144
+ * Handle a chat message — record activity and generate conversation deposits.
145
+ */
146
+ export declare function onChatMessage(memory: WorldMemory, conversations: ConversationLayer, username: string, text: string, robotWorldX: number, topics: string[]): void;
147
+ /**
148
+ * Render flower decorations from ecology state.
149
+ * Call this separately if you have access to ecology.flowerMap.
150
+ */
151
+ export declare function renderFlowers(ctx: CanvasRenderingContext2D, flowerMap: Map<string, string>, cameraX: number, tileSize: number, frame: number): void;
152
+ /**
153
+ * Render fire effects (flickering orange/red on burning blocks).
154
+ * Call this if you have access to ecology.fireSpread.
155
+ */
156
+ export declare function renderFire(ctx: CanvasRenderingContext2D, fireSpread: Array<{
157
+ x: number;
158
+ y: number;
159
+ life: number;
160
+ }>, cameraX: number, tileSize: number, frame: number): void;
161
+ //# sourceMappingURL=living-world.d.ts.map