@kernel.chat/kbot 3.73.3 → 3.82.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.
@@ -313,6 +313,10 @@ const LAZY_MODULE_IMPORTS = [
313
313
  { path: './music-gen.js', registerFn: 'registerMusicGenTools' },
314
314
  { path: './mobile-automation.js', registerFn: 'registerMobileAutomationTools' },
315
315
  { path: './iphone.js', registerFn: 'registerIPhoneTools' },
316
+ { path: './ghost.js', registerFn: 'registerGhostTools' },
317
+ { path: './streaming.js', registerFn: 'registerStreamingTools' },
318
+ { path: './stream-character.js', registerFn: 'registerStreamCharacterTools' },
319
+ { path: './stream-renderer.js', registerFn: 'registerStreamRendererTools' },
316
320
  ];
317
321
  /** Track whether lazy tools have been registered */
318
322
  let lazyToolsRegistered = false;
@@ -0,0 +1,158 @@
1
+ import type { CanvasRenderingContext2D } from 'canvas';
2
+ export interface Light {
3
+ x: number;
4
+ y: number;
5
+ radius: number;
6
+ color: string;
7
+ intensity: number;
8
+ flicker?: boolean;
9
+ }
10
+ /**
11
+ * Render dynamic lighting over the scene.
12
+ * First draws a dark ambient overlay, then additively blends each light source.
13
+ */
14
+ export declare function renderLighting(ctx: CanvasRenderingContext2D, lights: Light[], width: number, height: number, ambientLight: number): void;
15
+ /**
16
+ * Get ambient light level for a given time of day.
17
+ */
18
+ export declare function getAmbientForTime(timeOfDay: string): number;
19
+ /**
20
+ * Build default light sources for the kbot stream character.
21
+ */
22
+ export declare function buildCharacterLights(robotX: number, robotY: number, scale: number, moodColor: string, frame: number, hasLightning: boolean, worldItems?: Array<{
23
+ x: number;
24
+ y: number;
25
+ emoji: string;
26
+ name: string;
27
+ }>): Light[];
28
+ export interface BloomSpot {
29
+ x: number;
30
+ y: number;
31
+ radius: number;
32
+ color: string;
33
+ }
34
+ /**
35
+ * Render soft glowing halos around bright elements.
36
+ */
37
+ export declare function renderBloom(ctx: CanvasRenderingContext2D, brightSpots: BloomSpot[]): void;
38
+ /**
39
+ * Build default bloom spots for the kbot character.
40
+ */
41
+ export declare function buildCharacterBloom(robotX: number, robotY: number, scale: number, moodColor: string, frame: number): BloomSpot[];
42
+ export interface Particle {
43
+ x: number;
44
+ y: number;
45
+ vx: number;
46
+ vy: number;
47
+ life: number;
48
+ maxLife: number;
49
+ size: number;
50
+ color: string;
51
+ type: 'spark' | 'fire' | 'magic' | 'electricity' | 'trail' | 'smoke' | 'aura';
52
+ trail?: Array<{
53
+ x: number;
54
+ y: number;
55
+ }>;
56
+ gravity?: number;
57
+ cx?: number;
58
+ cy?: number;
59
+ orbitRadius?: number;
60
+ orbitPhase?: number;
61
+ startX?: number;
62
+ startY?: number;
63
+ endX?: number;
64
+ endY?: number;
65
+ midpoints?: Array<{
66
+ x: number;
67
+ y: number;
68
+ }>;
69
+ lastMidpointFrame?: number;
70
+ pulsePhase?: number;
71
+ }
72
+ /**
73
+ * Create particles of a given type at a position.
74
+ */
75
+ export declare function createParticleEmitter(type: Particle['type'], x: number, y: number, count: number): Particle[];
76
+ /**
77
+ * Tick all particles: apply physics, age, return survivors.
78
+ */
79
+ export declare function tickParticles(particles: Particle[]): Particle[];
80
+ /**
81
+ * Render all particles to the canvas.
82
+ */
83
+ export declare function renderParticles(ctx: CanvasRenderingContext2D, particles: Particle[]): void;
84
+ /**
85
+ * Render a full procedural sky based on time of day, weather, and frame.
86
+ */
87
+ export declare function renderSky(ctx: CanvasRenderingContext2D, width: number, height: number, timeOfDay: string, weather: string, frame: number, dividerX?: number): void;
88
+ export interface ParallaxLayer {
89
+ type: 'far' | 'mid' | 'near';
90
+ factor: number;
91
+ draw: (ctx: CanvasRenderingContext2D, offsetX: number, frame: number) => void;
92
+ }
93
+ /**
94
+ * Build parallax layers for a given biome.
95
+ */
96
+ export declare function buildParallaxLayers(biome: string, dividerX: number): ParallaxLayer[];
97
+ /**
98
+ * Render parallax layers relative to robot position.
99
+ */
100
+ export declare function renderParallaxLayers(ctx: CanvasRenderingContext2D, layers: ParallaxLayer[], robotX: number, frame: number): void;
101
+ export interface GrowingPlant {
102
+ x: number;
103
+ y: number;
104
+ type: 'tree' | 'flower' | 'mushroom' | 'crystal';
105
+ growthStage: number;
106
+ maxHeight: number;
107
+ color: string;
108
+ }
109
+ /**
110
+ * Tick and render growing vegetation.
111
+ */
112
+ export declare function tickGrowingPlants(plants: GrowingPlant[]): void;
113
+ export declare function renderGrowingPlants(ctx: CanvasRenderingContext2D, plants: GrowingPlant[]): void;
114
+ /**
115
+ * Render animated water with multiple sine waves, reflections, and foam.
116
+ */
117
+ export declare function renderAnimatedWater(ctx: CanvasRenderingContext2D, dividerX: number, frame: number): void;
118
+ /**
119
+ * Render lava with organic flow patterns and popping bubbles.
120
+ */
121
+ export declare function renderLavaFlow(ctx: CanvasRenderingContext2D, dividerX: number, frame: number): void;
122
+ /**
123
+ * Draw AAA character effects: eye glow bleed, power-up aura, walk trail, etc.
124
+ */
125
+ export declare function drawCharacterEffects(ctx: CanvasRenderingContext2D, x: number, y: number, scale: number, mood: string, frame: number, isExecutingTool: boolean, walkSpeed: number, moodColor: string): void;
126
+ /**
127
+ * Track mood changes and return chromatic aberration offset if transitioning.
128
+ * Returns {active, framesLeft} — caller draws character 3x with RGB offsets.
129
+ */
130
+ export declare function checkMoodTransition(mood: string, moodColor: string): {
131
+ active: boolean;
132
+ framesLeft: number;
133
+ };
134
+ /**
135
+ * Trigger a white damage flash for 2 frames.
136
+ */
137
+ export declare function triggerDamageFlash(): void;
138
+ /**
139
+ * Render damage flash overlay on the character.
140
+ * Returns true if flash is active (caller should skip normal character rendering logic).
141
+ */
142
+ export declare function renderDamageFlash(ctx: CanvasRenderingContext2D, x: number, y: number, scale: number): boolean;
143
+ export interface PostProcessOptions {
144
+ bloom: boolean;
145
+ filmGrain: boolean;
146
+ vignette: boolean;
147
+ scanlines: boolean;
148
+ focusPulse?: {
149
+ x: number;
150
+ y: number;
151
+ radius: number;
152
+ };
153
+ }
154
+ /**
155
+ * Apply screen-space post-processing effects.
156
+ */
157
+ export declare function renderPostProcessing(ctx: CanvasRenderingContext2D, width: number, height: number, frame: number, options: PostProcessOptions): void;
158
+ //# sourceMappingURL=render-engine.d.ts.map