@vib3code/sdk 2.0.1

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 (258) hide show
  1. package/CHANGELOG.md +118 -0
  2. package/DOCS/BLUEPRINT_EXECUTION_PLAN_2026-01-07.md +34 -0
  3. package/DOCS/CI_TESTING.md +38 -0
  4. package/DOCS/CLI_ONBOARDING.md +75 -0
  5. package/DOCS/CONTROL_REFERENCE.md +64 -0
  6. package/DOCS/DEV_TRACK_ANALYSIS.md +77 -0
  7. package/DOCS/DEV_TRACK_PLAN_2026-01-07.md +42 -0
  8. package/DOCS/DEV_TRACK_SESSION_2026-01-31.md +220 -0
  9. package/DOCS/ENV_SETUP.md +189 -0
  10. package/DOCS/EXPORT_FORMATS.md +417 -0
  11. package/DOCS/GPU_DISPOSAL_GUIDE.md +21 -0
  12. package/DOCS/LICENSING_TIERS.md +275 -0
  13. package/DOCS/MASTER_PLAN_2026-01-31.md +570 -0
  14. package/DOCS/OBS_SETUP_GUIDE.md +98 -0
  15. package/DOCS/PROJECT_SETUP.md +66 -0
  16. package/DOCS/RENDERER_LIFECYCLE.md +40 -0
  17. package/DOCS/REPO_MANIFEST.md +121 -0
  18. package/DOCS/SESSION_014_PLAN.md +195 -0
  19. package/DOCS/SESSION_LOG_2026-01-07.md +56 -0
  20. package/DOCS/STRATEGIC_BLUEPRINT_2026-01-07.md +72 -0
  21. package/DOCS/SYSTEM_AUDIT_2026-01-30.md +738 -0
  22. package/DOCS/SYSTEM_INVENTORY.md +520 -0
  23. package/DOCS/TELEMETRY_EXPORTS.md +34 -0
  24. package/DOCS/WEBGPU_STATUS.md +38 -0
  25. package/DOCS/XR_BENCHMARKS.md +608 -0
  26. package/LICENSE +21 -0
  27. package/README.md +426 -0
  28. package/docs/.nojekyll +0 -0
  29. package/docs/01-dissolution_of_euclidean_hegemony.html +346 -0
  30. package/docs/02-hyperspatial_ego_death.html +346 -0
  31. package/docs/03-post_cartesian_sublime.html +346 -0
  32. package/docs/04-crystalline_void_meditation.html +346 -0
  33. package/docs/05-quantum_decoherence_ballet.html +346 -0
  34. package/docs/06-dissolution_of_euclidean_hegemony.html +346 -0
  35. package/docs/07-hyperspatial_ego_death.html +346 -0
  36. package/docs/08-post_cartesian_sublime.html +346 -0
  37. package/docs/09-crystalline_void_meditation.html +346 -0
  38. package/docs/10-quantum_decoherence_ballet.html +346 -0
  39. package/docs/11-dissolution_of_euclidean_hegemony.html +346 -0
  40. package/docs/12-hyperspatial_ego_death.html +346 -0
  41. package/docs/13-post_cartesian_sublime.html +346 -0
  42. package/docs/index.html +794 -0
  43. package/docs/test-hub.html +441 -0
  44. package/docs/url-state.js +102 -0
  45. package/docs/vib3-exports/01-quantum-quantum-tetrahedron-lattice.html +489 -0
  46. package/docs/vib3-exports/02-quantum-quantum-hypersphere-matrix.html +489 -0
  47. package/docs/vib3-exports/03-quantum-quantum-hypertetra-fractal.html +489 -0
  48. package/docs/vib3-exports/04-faceted-faceted-crystal-structure.html +407 -0
  49. package/docs/vib3-exports/05-faceted-faceted-klein-bottle.html +407 -0
  50. package/docs/vib3-exports/06-faceted-faceted-hypertetra-torus.html +407 -0
  51. package/docs/vib3-exports/07-holographic-holographic-wave-field.html +457 -0
  52. package/docs/vib3-exports/08-holographic-holographic-hypersphere-sphere.html +457 -0
  53. package/docs/vib3-exports/09-holographic-holographic-hypertetra-crystal.html +457 -0
  54. package/docs/vib3-exports/index.html +238 -0
  55. package/docs/webgpu-live.html +702 -0
  56. package/package.json +367 -0
  57. package/src/advanced/AIPresetGenerator.js +777 -0
  58. package/src/advanced/MIDIController.js +703 -0
  59. package/src/advanced/OffscreenWorker.js +1051 -0
  60. package/src/advanced/WebGPUCompute.js +1051 -0
  61. package/src/advanced/WebXRRenderer.js +680 -0
  62. package/src/agent/cli/AgentCLI.js +615 -0
  63. package/src/agent/cli/index.js +14 -0
  64. package/src/agent/index.js +73 -0
  65. package/src/agent/mcp/MCPServer.js +950 -0
  66. package/src/agent/mcp/index.js +9 -0
  67. package/src/agent/mcp/tools.js +548 -0
  68. package/src/agent/telemetry/EventStream.js +669 -0
  69. package/src/agent/telemetry/Instrumentation.js +618 -0
  70. package/src/agent/telemetry/TelemetryExporters.js +427 -0
  71. package/src/agent/telemetry/TelemetryService.js +464 -0
  72. package/src/agent/telemetry/index.js +52 -0
  73. package/src/benchmarks/BenchmarkRunner.js +381 -0
  74. package/src/benchmarks/MetricsCollector.js +299 -0
  75. package/src/benchmarks/index.js +9 -0
  76. package/src/benchmarks/scenes.js +259 -0
  77. package/src/cli/index.js +675 -0
  78. package/src/config/ApiConfig.js +88 -0
  79. package/src/core/CanvasManager.js +217 -0
  80. package/src/core/ErrorReporter.js +117 -0
  81. package/src/core/ParameterMapper.js +333 -0
  82. package/src/core/Parameters.js +396 -0
  83. package/src/core/RendererContracts.js +200 -0
  84. package/src/core/UnifiedResourceManager.js +370 -0
  85. package/src/core/VIB3Engine.js +636 -0
  86. package/src/core/renderers/FacetedRendererAdapter.js +32 -0
  87. package/src/core/renderers/HolographicRendererAdapter.js +29 -0
  88. package/src/core/renderers/QuantumRendererAdapter.js +29 -0
  89. package/src/core/renderers/RendererLifecycleManager.js +63 -0
  90. package/src/creative/ColorPresetsSystem.js +980 -0
  91. package/src/creative/ParameterTimeline.js +1061 -0
  92. package/src/creative/PostProcessingPipeline.js +1113 -0
  93. package/src/creative/TransitionAnimator.js +683 -0
  94. package/src/export/CSSExporter.js +226 -0
  95. package/src/export/CardGeneratorBase.js +279 -0
  96. package/src/export/ExportManager.js +580 -0
  97. package/src/export/FacetedCardGenerator.js +279 -0
  98. package/src/export/HolographicCardGenerator.js +543 -0
  99. package/src/export/LottieExporter.js +552 -0
  100. package/src/export/QuantumCardGenerator.js +315 -0
  101. package/src/export/SVGExporter.js +519 -0
  102. package/src/export/ShaderExporter.js +903 -0
  103. package/src/export/TradingCardGenerator.js +3055 -0
  104. package/src/export/TradingCardManager.js +181 -0
  105. package/src/export/VIB3PackageExporter.js +559 -0
  106. package/src/export/index.js +14 -0
  107. package/src/export/systems/TradingCardSystemFaceted.js +494 -0
  108. package/src/export/systems/TradingCardSystemHolographic.js +452 -0
  109. package/src/export/systems/TradingCardSystemQuantum.js +411 -0
  110. package/src/faceted/FacetedSystem.js +963 -0
  111. package/src/features/CollectionManager.js +433 -0
  112. package/src/gallery/CollectionManager.js +240 -0
  113. package/src/gallery/GallerySystem.js +485 -0
  114. package/src/geometry/GeometryFactory.js +314 -0
  115. package/src/geometry/GeometryLibrary.js +72 -0
  116. package/src/geometry/buffers/BufferBuilder.js +338 -0
  117. package/src/geometry/buffers/index.js +18 -0
  118. package/src/geometry/generators/Crystal.js +420 -0
  119. package/src/geometry/generators/Fractal.js +298 -0
  120. package/src/geometry/generators/KleinBottle.js +197 -0
  121. package/src/geometry/generators/Sphere.js +192 -0
  122. package/src/geometry/generators/Tesseract.js +160 -0
  123. package/src/geometry/generators/Tetrahedron.js +225 -0
  124. package/src/geometry/generators/Torus.js +304 -0
  125. package/src/geometry/generators/Wave.js +341 -0
  126. package/src/geometry/index.js +142 -0
  127. package/src/geometry/warp/HypersphereCore.js +211 -0
  128. package/src/geometry/warp/HypertetraCore.js +386 -0
  129. package/src/geometry/warp/index.js +57 -0
  130. package/src/holograms/HolographicVisualizer.js +1073 -0
  131. package/src/holograms/RealHolographicSystem.js +966 -0
  132. package/src/holograms/variantRegistry.js +69 -0
  133. package/src/integrations/FigmaPlugin.js +854 -0
  134. package/src/integrations/OBSMode.js +754 -0
  135. package/src/integrations/ThreeJsPackage.js +660 -0
  136. package/src/integrations/TouchDesignerExport.js +552 -0
  137. package/src/integrations/frameworks/Vib3React.js +591 -0
  138. package/src/integrations/frameworks/Vib3Svelte.js +654 -0
  139. package/src/integrations/frameworks/Vib3Vue.js +628 -0
  140. package/src/llm/LLMParameterInterface.js +240 -0
  141. package/src/llm/LLMParameterUI.js +577 -0
  142. package/src/math/Mat4x4.js +708 -0
  143. package/src/math/Projection.js +341 -0
  144. package/src/math/Rotor4D.js +637 -0
  145. package/src/math/Vec4.js +476 -0
  146. package/src/math/constants.js +164 -0
  147. package/src/math/index.js +68 -0
  148. package/src/math/projections.js +54 -0
  149. package/src/math/rotations.js +196 -0
  150. package/src/quantum/QuantumEngine.js +906 -0
  151. package/src/quantum/QuantumVisualizer.js +1103 -0
  152. package/src/reactivity/ReactivityConfig.js +499 -0
  153. package/src/reactivity/ReactivityManager.js +586 -0
  154. package/src/reactivity/SpatialInputSystem.js +1783 -0
  155. package/src/reactivity/index.js +93 -0
  156. package/src/render/CommandBuffer.js +465 -0
  157. package/src/render/MultiCanvasBridge.js +340 -0
  158. package/src/render/RenderCommand.js +514 -0
  159. package/src/render/RenderResourceRegistry.js +523 -0
  160. package/src/render/RenderState.js +552 -0
  161. package/src/render/RenderTarget.js +512 -0
  162. package/src/render/ShaderLoader.js +253 -0
  163. package/src/render/ShaderProgram.js +599 -0
  164. package/src/render/UnifiedRenderBridge.js +496 -0
  165. package/src/render/backends/WebGLBackend.js +1108 -0
  166. package/src/render/backends/WebGPUBackend.js +1409 -0
  167. package/src/render/commands/CommandBufferExecutor.js +607 -0
  168. package/src/render/commands/RenderCommandBuffer.js +661 -0
  169. package/src/render/commands/index.js +17 -0
  170. package/src/render/index.js +367 -0
  171. package/src/scene/Disposable.js +498 -0
  172. package/src/scene/MemoryPool.js +618 -0
  173. package/src/scene/Node4D.js +697 -0
  174. package/src/scene/ResourceManager.js +599 -0
  175. package/src/scene/Scene4D.js +540 -0
  176. package/src/scene/index.js +98 -0
  177. package/src/schemas/error.schema.json +84 -0
  178. package/src/schemas/extension.schema.json +88 -0
  179. package/src/schemas/index.js +214 -0
  180. package/src/schemas/parameters.schema.json +142 -0
  181. package/src/schemas/tool-pack.schema.json +44 -0
  182. package/src/schemas/tool-response.schema.json +127 -0
  183. package/src/shaders/common/fullscreen.vert.glsl +5 -0
  184. package/src/shaders/common/fullscreen.vert.wgsl +17 -0
  185. package/src/shaders/common/geometry24.glsl +65 -0
  186. package/src/shaders/common/geometry24.wgsl +54 -0
  187. package/src/shaders/common/rotation4d.glsl +85 -0
  188. package/src/shaders/common/rotation4d.wgsl +86 -0
  189. package/src/shaders/common/uniforms.glsl +44 -0
  190. package/src/shaders/common/uniforms.wgsl +48 -0
  191. package/src/shaders/faceted/faceted.frag.glsl +129 -0
  192. package/src/shaders/faceted/faceted.frag.wgsl +164 -0
  193. package/src/shaders/holographic/holographic.frag.glsl +406 -0
  194. package/src/shaders/holographic/holographic.frag.wgsl +185 -0
  195. package/src/shaders/quantum/quantum.frag.glsl +513 -0
  196. package/src/shaders/quantum/quantum.frag.wgsl +361 -0
  197. package/src/testing/ParallelTestFramework.js +519 -0
  198. package/src/testing/__snapshots__/exportFormats.test.js.snap +24 -0
  199. package/src/testing/exportFormats.test.js +8 -0
  200. package/src/testing/projections.test.js +14 -0
  201. package/src/testing/rotations.test.js +37 -0
  202. package/src/ui/InteractivityMenu.js +516 -0
  203. package/src/ui/StatusManager.js +96 -0
  204. package/src/ui/adaptive/renderers/webgpu/BufferLayout.ts +252 -0
  205. package/src/ui/adaptive/renderers/webgpu/PolytopeInstanceBuffer.ts +144 -0
  206. package/src/ui/adaptive/renderers/webgpu/TripleBufferedUniform.ts +170 -0
  207. package/src/ui/adaptive/renderers/webgpu/WebGPURenderer.ts +735 -0
  208. package/src/ui/adaptive/renderers/webgpu/index.ts +112 -0
  209. package/src/variations/VariationManager.js +431 -0
  210. package/src/viewer/AudioReactivity.js +505 -0
  211. package/src/viewer/CardBending.js +481 -0
  212. package/src/viewer/GalleryUI.js +832 -0
  213. package/src/viewer/ReactivityManager.js +590 -0
  214. package/src/viewer/TradingCardExporter.js +600 -0
  215. package/src/viewer/ViewerPortal.js +374 -0
  216. package/src/viewer/index.js +12 -0
  217. package/src/wasm/WasmLoader.js +296 -0
  218. package/src/wasm/index.js +132 -0
  219. package/tools/agentic/mcpTools.js +88 -0
  220. package/tools/cli/agent-cli.js +92 -0
  221. package/tools/export/formats.js +24 -0
  222. package/tools/math/rotation-baseline.mjs +64 -0
  223. package/tools/shader-sync-verify.js +937 -0
  224. package/tools/telemetry/manifestPipeline.js +141 -0
  225. package/tools/telemetry/telemetryEvents.js +35 -0
  226. package/types/adaptive-sdk.d.ts +185 -0
  227. package/types/advanced/AIPresetGenerator.d.ts +81 -0
  228. package/types/advanced/MIDIController.d.ts +100 -0
  229. package/types/advanced/OffscreenWorker.d.ts +82 -0
  230. package/types/advanced/WebGPUCompute.d.ts +52 -0
  231. package/types/advanced/WebXRRenderer.d.ts +77 -0
  232. package/types/advanced/index.d.ts +46 -0
  233. package/types/core/ErrorReporter.d.ts +50 -0
  234. package/types/core/VIB3Engine.d.ts +204 -0
  235. package/types/creative/ColorPresetsSystem.d.ts +91 -0
  236. package/types/creative/ParameterTimeline.d.ts +74 -0
  237. package/types/creative/PostProcessingPipeline.d.ts +109 -0
  238. package/types/creative/TransitionAnimator.d.ts +71 -0
  239. package/types/creative/index.d.ts +35 -0
  240. package/types/integrations/FigmaPlugin.d.ts +46 -0
  241. package/types/integrations/OBSMode.d.ts +74 -0
  242. package/types/integrations/ThreeJsPackage.d.ts +62 -0
  243. package/types/integrations/TouchDesignerExport.d.ts +36 -0
  244. package/types/integrations/Vib3React.d.ts +74 -0
  245. package/types/integrations/Vib3Svelte.d.ts +63 -0
  246. package/types/integrations/Vib3Vue.d.ts +55 -0
  247. package/types/integrations/index.d.ts +52 -0
  248. package/types/reactivity/SpatialInputSystem.d.ts +173 -0
  249. package/types/reactivity/index.d.ts +394 -0
  250. package/types/render/CommandBuffer.d.ts +169 -0
  251. package/types/render/RenderCommand.d.ts +312 -0
  252. package/types/render/RenderState.d.ts +279 -0
  253. package/types/render/RenderTarget.d.ts +254 -0
  254. package/types/render/ShaderProgram.d.ts +277 -0
  255. package/types/render/UnifiedRenderBridge.d.ts +143 -0
  256. package/types/render/WebGLBackend.d.ts +168 -0
  257. package/types/render/WebGPUBackend.d.ts +186 -0
  258. package/types/render/index.d.ts +141 -0
@@ -0,0 +1,654 @@
1
+ /**
2
+ * VIB3+ Svelte Component Wrapper
3
+ *
4
+ * Generates Svelte component source code and writable store definitions
5
+ * for embedding VIB3+ 4D visualizations in Svelte applications.
6
+ *
7
+ * Usage (generated component):
8
+ * <Vib3Visualizer system="quantum" hue={200} saturation={0.8} />
9
+ *
10
+ * Usage (generated store):
11
+ * import { vib3Store } from '@vib3/svelte';
12
+ * $vib3Store.setParameter('hue', 270);
13
+ *
14
+ * NOTE: This module generates Svelte source code strings and package structures.
15
+ * The output is intended for use in a Svelte or SvelteKit project.
16
+ *
17
+ * @module Vib3SvelteWrapper
18
+ * @version 1.0.0
19
+ * @license All Rights Reserved - Clear Seas Solutions LLC
20
+ */
21
+
22
+ /**
23
+ * VIB3+ parameter definitions for Svelte prop declarations.
24
+ * @constant {Object}
25
+ */
26
+ const VIB3_SVELTE_PROPS = {
27
+ system: { type: 'string', default: "'quantum'" },
28
+ geometry: { type: 'number', default: 0 },
29
+ hue: { type: 'number', default: 200 },
30
+ saturation: { type: 'number', default: 0.8 },
31
+ intensity: { type: 'number', default: 0.5 },
32
+ speed: { type: 'number', default: 1.0 },
33
+ gridDensity: { type: 'number', default: 15 },
34
+ morphFactor: { type: 'number', default: 1.0 },
35
+ chaos: { type: 'number', default: 0.2 },
36
+ dimension: { type: 'number', default: 3.5 },
37
+ rot4dXY: { type: 'number', default: 0 },
38
+ rot4dXZ: { type: 'number', default: 0 },
39
+ rot4dYZ: { type: 'number', default: 0 },
40
+ rot4dXW: { type: 'number', default: 0 },
41
+ rot4dYW: { type: 'number', default: 0 },
42
+ rot4dZW: { type: 'number', default: 0 }
43
+ };
44
+
45
+ /**
46
+ * Numeric parameter names for batch updates.
47
+ * @constant {string[]}
48
+ */
49
+ const NUMERIC_PROP_NAMES = Object.keys(VIB3_SVELTE_PROPS).filter(
50
+ k => VIB3_SVELTE_PROPS[k].type === 'number'
51
+ );
52
+
53
+ /**
54
+ * Svelte wrapper for VIB3+ visualization engine.
55
+ *
56
+ * Provides static methods that generate Svelte component source code,
57
+ * store definitions, and full NPM package structures for the @vib3/svelte package.
58
+ *
59
+ * @class
60
+ */
61
+ export class Vib3SvelteWrapper {
62
+ /**
63
+ * Returns a Svelte component source code string (.svelte format).
64
+ *
65
+ * The generated component:
66
+ * - Declares all VIB3 parameters as exported props
67
+ * - Uses $: reactive declarations to sync props to the engine
68
+ * - Initializes VIB3Engine in onMount
69
+ * - Destroys the engine in onDestroy
70
+ * - Dispatches 'ready' and 'error' events
71
+ * - Exposes engine methods via bind:this
72
+ *
73
+ * @returns {string} Complete Svelte component source code
74
+ * @example
75
+ * const componentCode = Vib3SvelteWrapper.getComponent();
76
+ * // Write to src/lib/Vib3Visualizer.svelte
77
+ */
78
+ static getComponent() {
79
+ return `<script>
80
+ import { onMount, onDestroy, createEventDispatcher } from 'svelte';
81
+
82
+ /**
83
+ * VIB3+ Visualizer Svelte Component
84
+ *
85
+ * Renders a VIB3+ 4D visualization. Accepts all VIB3 parameters as props.
86
+ *
87
+ * @fires ready - When the engine is initialized. Detail: VIB3Engine instance.
88
+ * @fires error - On initialization failure. Detail: Error object.
89
+ *
90
+ * @example
91
+ * <Vib3Visualizer system="quantum" hue={200} saturation={0.8} on:ready={handleReady} />
92
+ */
93
+
94
+ const dispatch = createEventDispatcher();
95
+
96
+ // ---- Props ----
97
+ /** @type {string} Active visualization system */
98
+ export let system = 'quantum';
99
+ /** @type {number} Geometry variant (0-23) */
100
+ export let geometry = 0;
101
+ /** @type {number} Color hue (0-360) */
102
+ export let hue = 200;
103
+ /** @type {number} Color saturation (0-1) */
104
+ export let saturation = 0.8;
105
+ /** @type {number} Visual intensity (0-1) */
106
+ export let intensity = 0.5;
107
+ /** @type {number} Animation speed (0.1-3) */
108
+ export let speed = 1.0;
109
+ /** @type {number} Pattern density (4-100) */
110
+ export let gridDensity = 15;
111
+ /** @type {number} Shape interpolation (0-2) */
112
+ export let morphFactor = 1.0;
113
+ /** @type {number} Randomness level (0-1) */
114
+ export let chaos = 0.2;
115
+ /** @type {number} 4D projection distance (3.0-4.5) */
116
+ export let dimension = 3.5;
117
+ /** @type {number} XY plane rotation (radians) */
118
+ export let rot4dXY = 0;
119
+ /** @type {number} XZ plane rotation (radians) */
120
+ export let rot4dXZ = 0;
121
+ /** @type {number} YZ plane rotation (radians) */
122
+ export let rot4dYZ = 0;
123
+ /** @type {number} XW hyperplane rotation (radians) */
124
+ export let rot4dXW = 0;
125
+ /** @type {number} YW hyperplane rotation (radians) */
126
+ export let rot4dYW = 0;
127
+ /** @type {number} ZW hyperplane rotation (radians) */
128
+ export let rot4dZW = 0;
129
+ /** @type {string} Container CSS width */
130
+ export let width = '100%';
131
+ /** @type {string} Container CSS height */
132
+ export let height = '400px';
133
+ /** @type {string} Additional CSS classes */
134
+ export let className = '';
135
+ /** @type {boolean} Prefer WebGPU backend */
136
+ export let preferWebGPU = false;
137
+ /** @type {boolean} Enable debug logging */
138
+ export let debug = false;
139
+
140
+ // ---- Internal State ----
141
+ let containerEl;
142
+ let engine = null;
143
+ let initialized = false;
144
+ const containerId = 'vib3-svelte-' + Math.random().toString(36).substring(2, 11);
145
+
146
+ // ---- Lifecycle ----
147
+ onMount(async () => {
148
+ try {
149
+ // Dynamic import so the Svelte component works in SSR
150
+ const { VIB3Engine } = await import('@vib3/core');
151
+
152
+ engine = new VIB3Engine({ preferWebGPU, debug });
153
+ const success = await engine.initialize(containerId);
154
+
155
+ if (!success) {
156
+ throw new Error('VIB3Engine initialization failed');
157
+ }
158
+
159
+ await engine.switchSystem(system);
160
+ syncParams();
161
+
162
+ initialized = true;
163
+ dispatch('ready', engine);
164
+ } catch (err) {
165
+ console.error('[Vib3Visualizer] Initialization error:', err);
166
+ dispatch('error', err);
167
+ }
168
+ });
169
+
170
+ onDestroy(() => {
171
+ if (engine) {
172
+ engine.destroy();
173
+ engine = null;
174
+ }
175
+ initialized = false;
176
+ });
177
+
178
+ // ---- Reactive Synchronization ----
179
+ function syncParams() {
180
+ if (!engine || !initialized) return;
181
+ engine.setParameters({
182
+ geometry, hue, saturation, intensity, speed,
183
+ gridDensity, morphFactor, chaos, dimension,
184
+ rot4dXY, rot4dXZ, rot4dYZ, rot4dXW, rot4dYW, rot4dZW
185
+ });
186
+ }
187
+
188
+ // React to system change
189
+ $: if (initialized && engine) {
190
+ engine.switchSystem(system);
191
+ }
192
+
193
+ // React to parameter changes
194
+ $: if (initialized && engine) {
195
+ // This block re-runs whenever any listed variable changes
196
+ void (geometry, hue, saturation, intensity, speed,
197
+ gridDensity, morphFactor, chaos, dimension,
198
+ rot4dXY, rot4dXZ, rot4dYZ, rot4dXW, rot4dYW, rot4dZW);
199
+ syncParams();
200
+ }
201
+
202
+ // ---- Public API (accessible via bind:this) ----
203
+
204
+ /** @returns {object|null} The underlying VIB3Engine instance */
205
+ export function getEngine() {
206
+ return engine;
207
+ }
208
+
209
+ /** @returns {boolean} Whether the engine has been initialized */
210
+ export function isInitialized() {
211
+ return initialized;
212
+ }
213
+
214
+ /** Randomize all visualization parameters */
215
+ export function randomize() {
216
+ if (engine && initialized) engine.randomizeAll();
217
+ }
218
+
219
+ /** Reset parameters to defaults */
220
+ export function reset() {
221
+ if (engine && initialized) engine.resetAll();
222
+ }
223
+
224
+ /** Export current engine state */
225
+ export function exportState() {
226
+ return engine ? engine.exportState() : null;
227
+ }
228
+
229
+ /** Import an engine state object */
230
+ export async function importState(state) {
231
+ if (engine) await engine.importState(state);
232
+ }
233
+ <\/script>
234
+
235
+ <div
236
+ id={containerId}
237
+ bind:this={containerEl}
238
+ class="vib3-visualizer {className}"
239
+ style="width:{width};height:{height};position:relative;overflow:hidden;background:#000"
240
+ />
241
+
242
+ <style>
243
+ .vib3-visualizer {
244
+ position: relative;
245
+ overflow: hidden;
246
+ background: #000;
247
+ }
248
+ </style>
249
+ `;
250
+ }
251
+
252
+ /**
253
+ * Returns a Svelte writable store definition for VIB3+ state management.
254
+ *
255
+ * The generated store:
256
+ * - Uses Svelte's writable store pattern
257
+ * - Holds engine reference, initialization state, current system, and all parameters
258
+ * - Provides helper methods: setParameter, setParameters, switchSystem, randomize, reset
259
+ * - Automatically syncs store state to the engine
260
+ *
261
+ * @returns {string} Complete Svelte store source code
262
+ * @example
263
+ * const storeCode = Vib3SvelteWrapper.getStore();
264
+ * // Write to src/lib/vib3Store.js
265
+ */
266
+ static getStore() {
267
+ return `import { writable, derived, get } from 'svelte/store';
268
+
269
+ /**
270
+ * VIB3+ Svelte Store
271
+ *
272
+ * Manages VIB3Engine state as a Svelte writable store.
273
+ * Provides reactive state and methods for controlling the visualization.
274
+ *
275
+ * @example
276
+ * import { vib3Store, vib3Actions } from '$lib/vib3Store';
277
+ *
278
+ * // Subscribe to state
279
+ * $: console.log($vib3Store.parameters.hue);
280
+ *
281
+ * // Update parameter
282
+ * vib3Actions.setParameter('hue', 270);
283
+ *
284
+ * // Switch system
285
+ * vib3Actions.switchSystem('holographic');
286
+ */
287
+
288
+ /** @type {import('svelte/store').Writable} */
289
+ export const vib3Store = writable({
290
+ /** @type {object|null} VIB3Engine instance */
291
+ engine: null,
292
+ /** @type {boolean} Whether the engine is initialized */
293
+ initialized: false,
294
+ /** @type {string} Current active system */
295
+ system: 'quantum',
296
+ /** @type {object} Current visualization parameters */
297
+ parameters: {
298
+ geometry: 0,
299
+ hue: 200,
300
+ saturation: 0.8,
301
+ intensity: 0.5,
302
+ speed: 1.0,
303
+ gridDensity: 15,
304
+ morphFactor: 1.0,
305
+ chaos: 0.2,
306
+ dimension: 3.5,
307
+ rot4dXY: 0, rot4dXZ: 0, rot4dYZ: 0,
308
+ rot4dXW: 0, rot4dYW: 0, rot4dZW: 0
309
+ }
310
+ });
311
+
312
+ /**
313
+ * Derived store: whether the engine is ready for commands
314
+ * @type {import('svelte/store').Readable<boolean>}
315
+ */
316
+ export const vib3Ready = derived(vib3Store, ($store) => $store.initialized);
317
+
318
+ /**
319
+ * Derived store: current visualization system name
320
+ * @type {import('svelte/store').Readable<string>}
321
+ */
322
+ export const vib3System = derived(vib3Store, ($store) => $store.system);
323
+
324
+ /**
325
+ * Derived store: current visualization parameters
326
+ * @type {import('svelte/store').Readable<object>}
327
+ */
328
+ export const vib3Params = derived(vib3Store, ($store) => $store.parameters);
329
+
330
+ /**
331
+ * Action creators for the VIB3 store.
332
+ * These mutate the store and sync changes to the engine.
333
+ */
334
+ export const vib3Actions = {
335
+ /**
336
+ * Initialize the engine and connect it to the store.
337
+ * Call this once after the container element is in the DOM.
338
+ *
339
+ * @param {string} containerId - DOM element ID to mount VIB3 into
340
+ * @param {object} [options={}] - Engine constructor options
341
+ * @returns {Promise<boolean>} Whether initialization succeeded
342
+ */
343
+ async initialize(containerId, options = {}) {
344
+ const { VIB3Engine } = await import('@vib3/core');
345
+
346
+ const engine = new VIB3Engine({
347
+ preferWebGPU: options.preferWebGPU || false,
348
+ debug: options.debug || false
349
+ });
350
+
351
+ const success = await engine.initialize(containerId);
352
+ if (success) {
353
+ const allParams = engine.getAllParameters();
354
+ vib3Store.set({
355
+ engine,
356
+ initialized: true,
357
+ system: engine.getCurrentSystem(),
358
+ parameters: { ...allParams }
359
+ });
360
+ }
361
+ return success;
362
+ },
363
+
364
+ /**
365
+ * Set a single visualization parameter.
366
+ * @param {string} name - Parameter name
367
+ * @param {number} value - Parameter value
368
+ */
369
+ setParameter(name, value) {
370
+ const state = get(vib3Store);
371
+ if (state.engine && state.initialized) {
372
+ state.engine.setParameter(name, value);
373
+ vib3Store.update(s => ({
374
+ ...s,
375
+ parameters: { ...s.parameters, [name]: value }
376
+ }));
377
+ }
378
+ },
379
+
380
+ /**
381
+ * Set multiple visualization parameters at once.
382
+ * @param {object} params - Object of name/value parameter pairs
383
+ */
384
+ setParameters(params) {
385
+ const state = get(vib3Store);
386
+ if (state.engine && state.initialized) {
387
+ state.engine.setParameters(params);
388
+ vib3Store.update(s => ({
389
+ ...s,
390
+ parameters: { ...s.parameters, ...params }
391
+ }));
392
+ }
393
+ },
394
+
395
+ /**
396
+ * Switch to a different visualization system.
397
+ * @param {string} newSystem - 'quantum' | 'faceted' | 'holographic'
398
+ * @returns {Promise<boolean>} Whether the switch succeeded
399
+ */
400
+ async switchSystem(newSystem) {
401
+ const state = get(vib3Store);
402
+ if (state.engine && state.initialized) {
403
+ const success = await state.engine.switchSystem(newSystem);
404
+ if (success) {
405
+ vib3Store.update(s => ({
406
+ ...s,
407
+ system: newSystem,
408
+ parameters: { ...state.engine.getAllParameters() }
409
+ }));
410
+ }
411
+ return success;
412
+ }
413
+ return false;
414
+ },
415
+
416
+ /** Randomize all parameters */
417
+ randomize() {
418
+ const state = get(vib3Store);
419
+ if (state.engine && state.initialized) {
420
+ state.engine.randomizeAll();
421
+ vib3Store.update(s => ({
422
+ ...s,
423
+ parameters: { ...state.engine.getAllParameters() }
424
+ }));
425
+ }
426
+ },
427
+
428
+ /** Reset parameters to defaults */
429
+ reset() {
430
+ const state = get(vib3Store);
431
+ if (state.engine && state.initialized) {
432
+ state.engine.resetAll();
433
+ vib3Store.update(s => ({
434
+ ...s,
435
+ parameters: { ...state.engine.getAllParameters() }
436
+ }));
437
+ }
438
+ },
439
+
440
+ /** Export the current engine state */
441
+ exportState() {
442
+ const state = get(vib3Store);
443
+ return state.engine ? state.engine.exportState() : null;
444
+ },
445
+
446
+ /** Import an engine state object */
447
+ async importState(stateObj) {
448
+ const state = get(vib3Store);
449
+ if (state.engine) {
450
+ await state.engine.importState(stateObj);
451
+ vib3Store.update(s => ({
452
+ ...s,
453
+ system: state.engine.getCurrentSystem(),
454
+ parameters: { ...state.engine.getAllParameters() }
455
+ }));
456
+ }
457
+ },
458
+
459
+ /** Start reactivity processing */
460
+ startReactivity() {
461
+ const state = get(vib3Store);
462
+ if (state.engine) state.engine.startReactivity();
463
+ },
464
+
465
+ /** Stop reactivity processing */
466
+ stopReactivity() {
467
+ const state = get(vib3Store);
468
+ if (state.engine) state.engine.stopReactivity();
469
+ },
470
+
471
+ /**
472
+ * Feed audio levels into reactivity.
473
+ * @param {number} bass - Bass level (0-1)
474
+ * @param {number} mid - Mid level (0-1)
475
+ * @param {number} high - High level (0-1)
476
+ */
477
+ setAudioInput(bass, mid, high) {
478
+ const state = get(vib3Store);
479
+ if (state.engine) state.engine.setAudioInput(bass, mid, high);
480
+ },
481
+
482
+ /** Destroy the engine and reset the store */
483
+ destroy() {
484
+ const state = get(vib3Store);
485
+ if (state.engine) {
486
+ state.engine.destroy();
487
+ }
488
+ vib3Store.set({
489
+ engine: null,
490
+ initialized: false,
491
+ system: 'quantum',
492
+ parameters: {
493
+ geometry: 0, hue: 200, saturation: 0.8, intensity: 0.5,
494
+ speed: 1.0, gridDensity: 15, morphFactor: 1.0, chaos: 0.2,
495
+ dimension: 3.5, rot4dXY: 0, rot4dXZ: 0, rot4dYZ: 0,
496
+ rot4dXW: 0, rot4dYW: 0, rot4dZW: 0
497
+ }
498
+ });
499
+ }
500
+ };
501
+ `;
502
+ }
503
+
504
+ /**
505
+ * Generates a complete NPM package structure for @vib3/svelte.
506
+ *
507
+ * @returns {Object.<string, string|object>} Map of file path to file content
508
+ */
509
+ static generatePackage() {
510
+ return {
511
+ 'package.json': {
512
+ name: '@vib3/svelte',
513
+ version: '1.0.0',
514
+ description: 'Svelte components for VIB3+ 4D Visualization Engine',
515
+ svelte: 'src/index.js',
516
+ main: 'dist/index.js',
517
+ module: 'src/index.js',
518
+ types: 'dist/index.d.ts',
519
+ files: ['dist/', 'src/'],
520
+ scripts: {
521
+ build: 'svelte-kit sync && svelte-package',
522
+ dev: 'vite dev',
523
+ prepublishOnly: 'npm run build'
524
+ },
525
+ peerDependencies: {
526
+ svelte: '>=4.0.0',
527
+ '@vib3/core': '>=1.0.0'
528
+ },
529
+ devDependencies: {
530
+ '@sveltejs/kit': '^2.0.0',
531
+ '@sveltejs/package': '^2.0.0',
532
+ svelte: '^4.0.0',
533
+ vite: '^5.0.0'
534
+ },
535
+ keywords: ['vib3', 'svelte', 'sveltekit', '4d', 'visualization', 'webgl', 'webgpu', 'shader'],
536
+ license: 'MIT',
537
+ repository: {
538
+ type: 'git',
539
+ url: 'https://github.com/clear-seas/vib3-svelte'
540
+ },
541
+ author: 'Clear Seas Solutions LLC'
542
+ },
543
+
544
+ 'src/index.js': `/**
545
+ * @vib3/svelte - Svelte bindings for VIB3+ 4D Visualization Engine
546
+ * @module @vib3/svelte
547
+ */
548
+ export { default as Vib3Visualizer } from './Vib3Visualizer.svelte';
549
+ export { vib3Store, vib3Ready, vib3System, vib3Params, vib3Actions } from './vib3Store.js';
550
+ `,
551
+
552
+ 'src/Vib3Visualizer.svelte': Vib3SvelteWrapper.getComponent(),
553
+
554
+ 'src/vib3Store.js': Vib3SvelteWrapper.getStore(),
555
+
556
+ 'README.md': `# @vib3/svelte
557
+
558
+ Svelte components and stores for the VIB3+ 4D Visualization Engine.
559
+
560
+ ## Installation
561
+
562
+ \`\`\`bash
563
+ npm install @vib3/svelte @vib3/core svelte
564
+ \`\`\`
565
+
566
+ ## Quick Start
567
+
568
+ ### Component Usage
569
+
570
+ \`\`\`svelte
571
+ <script>
572
+ import { Vib3Visualizer } from '@vib3/svelte';
573
+
574
+ function handleReady(event) {
575
+ console.log('VIB3 ready:', event.detail);
576
+ }
577
+ </script>
578
+
579
+ <Vib3Visualizer
580
+ system="quantum"
581
+ hue={200}
582
+ saturation={0.8}
583
+ geometry={5}
584
+ width="100%"
585
+ height="600px"
586
+ on:ready={handleReady}
587
+ />
588
+ \`\`\`
589
+
590
+ ### Store Usage
591
+
592
+ \`\`\`svelte
593
+ <script>
594
+ import { onMount } from 'svelte';
595
+ import { vib3Store, vib3Actions, vib3Ready } from '@vib3/svelte';
596
+
597
+ onMount(async () => {
598
+ await vib3Actions.initialize('vib3-container');
599
+ });
600
+ </script>
601
+
602
+ <div id="vib3-container" style="width:100%;height:400px" />
603
+
604
+ {#if $vib3Ready}
605
+ <button on:click={() => vib3Actions.switchSystem('quantum')}>Quantum</button>
606
+ <button on:click={() => vib3Actions.switchSystem('faceted')}>Faceted</button>
607
+ <button on:click={() => vib3Actions.randomize()}>Randomize</button>
608
+ <input type="range" min="0" max="360"
609
+ value={$vib3Store.parameters.hue}
610
+ on:input={(e) => vib3Actions.setParameter('hue', Number(e.target.value))} />
611
+ {/if}
612
+ \`\`\`
613
+
614
+ ## Props
615
+
616
+ | Prop | Type | Default | Description |
617
+ |------|------|---------|-------------|
618
+ | system | string | 'quantum' | Active system |
619
+ | geometry | number | 0 | Geometry variant (0-23) |
620
+ | hue | number | 200 | Color hue (0-360) |
621
+ | saturation | number | 0.8 | Color saturation (0-1) |
622
+ | intensity | number | 0.5 | Visual intensity (0-1) |
623
+ | speed | number | 1.0 | Animation speed (0.1-3) |
624
+ | gridDensity | number | 15 | Pattern density (4-100) |
625
+ | morphFactor | number | 1.0 | Shape interpolation (0-2) |
626
+ | chaos | number | 0.2 | Randomness (0-1) |
627
+ | dimension | number | 3.5 | Projection distance (3.0-4.5) |
628
+ | rot4dXY-ZW | number | 0 | 6D rotation angles (radians) |
629
+ | width | string | '100%' | Container width |
630
+ | height | string | '400px' | Container height |
631
+
632
+ ## License
633
+
634
+ MIT - Clear Seas Solutions LLC
635
+ `
636
+ };
637
+ }
638
+
639
+ /**
640
+ * Returns the Svelte prop definitions.
641
+ * @returns {Object} Prop definition map
642
+ */
643
+ static getPropDefs() {
644
+ return { ...VIB3_SVELTE_PROPS };
645
+ }
646
+
647
+ /**
648
+ * Returns the list of numeric parameter prop names.
649
+ * @returns {string[]}
650
+ */
651
+ static getNumericPropNames() {
652
+ return [...NUMERIC_PROP_NAMES];
653
+ }
654
+ }