@holoscript/core 1.0.0-alpha.2 → 2.0.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.
Files changed (74) hide show
  1. package/package.json +2 -2
  2. package/src/HoloScript2DParser.js +227 -0
  3. package/src/HoloScript2DParser.ts +5 -0
  4. package/src/HoloScriptCodeParser.js +1102 -0
  5. package/src/HoloScriptCodeParser.ts +145 -20
  6. package/src/HoloScriptDebugger.js +458 -0
  7. package/src/HoloScriptParser.js +338 -0
  8. package/src/HoloScriptPlusParser.js +371 -0
  9. package/src/HoloScriptPlusParser.ts +543 -0
  10. package/src/HoloScriptRuntime.js +1399 -0
  11. package/src/HoloScriptRuntime.test.js +351 -0
  12. package/src/HoloScriptRuntime.ts +17 -3
  13. package/src/HoloScriptTypeChecker.js +356 -0
  14. package/src/__tests__/GraphicsServices.test.js +357 -0
  15. package/src/__tests__/GraphicsServices.test.ts +427 -0
  16. package/src/__tests__/HoloScriptPlusParser.test.js +317 -0
  17. package/src/__tests__/HoloScriptPlusParser.test.ts +392 -0
  18. package/src/__tests__/integration.test.js +336 -0
  19. package/src/__tests__/performance.bench.js +218 -0
  20. package/src/__tests__/type-checker.test.js +60 -0
  21. package/src/__tests__/type-checker.test.ts +73 -0
  22. package/src/index.js +217 -0
  23. package/src/index.ts +158 -18
  24. package/src/interop/Interoperability.js +413 -0
  25. package/src/interop/Interoperability.ts +494 -0
  26. package/src/logger.js +42 -0
  27. package/src/parser/EnhancedParser.js +205 -0
  28. package/src/parser/EnhancedParser.ts +251 -0
  29. package/src/parser/HoloScriptPlusParser.js +928 -0
  30. package/src/parser/HoloScriptPlusParser.ts +1089 -0
  31. package/src/runtime/HoloScriptPlusRuntime.js +674 -0
  32. package/src/runtime/HoloScriptPlusRuntime.ts +861 -0
  33. package/src/runtime/PerformanceTelemetry.js +323 -0
  34. package/src/runtime/PerformanceTelemetry.ts +467 -0
  35. package/src/runtime/RuntimeOptimization.js +361 -0
  36. package/src/runtime/RuntimeOptimization.ts +416 -0
  37. package/src/services/HololandGraphicsPipelineService.js +506 -0
  38. package/src/services/HololandGraphicsPipelineService.ts +662 -0
  39. package/src/services/PlatformPerformanceOptimizer.js +356 -0
  40. package/src/services/PlatformPerformanceOptimizer.ts +503 -0
  41. package/src/state/ReactiveState.js +427 -0
  42. package/src/state/ReactiveState.ts +572 -0
  43. package/src/tools/DeveloperExperience.js +376 -0
  44. package/src/tools/DeveloperExperience.ts +438 -0
  45. package/src/traits/AIDriverTrait.js +322 -0
  46. package/src/traits/AIDriverTrait.test.js +329 -0
  47. package/src/traits/AIDriverTrait.test.ts +357 -0
  48. package/src/traits/AIDriverTrait.ts +474 -0
  49. package/src/traits/LightingTrait.js +313 -0
  50. package/src/traits/LightingTrait.test.js +410 -0
  51. package/src/traits/LightingTrait.test.ts +462 -0
  52. package/src/traits/LightingTrait.ts +505 -0
  53. package/src/traits/MaterialTrait.js +194 -0
  54. package/src/traits/MaterialTrait.test.js +286 -0
  55. package/src/traits/MaterialTrait.test.ts +329 -0
  56. package/src/traits/MaterialTrait.ts +324 -0
  57. package/src/traits/RenderingTrait.js +356 -0
  58. package/src/traits/RenderingTrait.test.js +363 -0
  59. package/src/traits/RenderingTrait.test.ts +427 -0
  60. package/src/traits/RenderingTrait.ts +555 -0
  61. package/src/traits/VRTraitSystem.js +740 -0
  62. package/src/traits/VRTraitSystem.ts +1040 -0
  63. package/src/traits/VoiceInputTrait.js +284 -0
  64. package/src/traits/VoiceInputTrait.test.js +226 -0
  65. package/src/traits/VoiceInputTrait.test.ts +252 -0
  66. package/src/traits/VoiceInputTrait.ts +401 -0
  67. package/src/types/AdvancedTypeSystem.js +226 -0
  68. package/src/types/AdvancedTypeSystem.ts +494 -0
  69. package/src/types/HoloScriptPlus.d.ts +853 -0
  70. package/src/types.js +6 -0
  71. package/src/types.ts +96 -1
  72. package/tsconfig.json +1 -1
  73. package/tsup.config.d.ts +2 -0
  74. package/tsup.config.js +18 -0
package/src/index.js ADDED
@@ -0,0 +1,217 @@
1
+ /**
2
+ * @holoscript/core
3
+ *
4
+ * HoloScript+ - VR language with declarative syntax, state management, and VR interactions.
5
+ * Enhanced version of HoloScript with:
6
+ * - VR interaction traits (@grabbable, @throwable, @hoverable, etc.)
7
+ * - Reactive state management (@state { ... })
8
+ * - Control flow (@for, @if directives)
9
+ * - TypeScript companion imports
10
+ * - Expression interpolation ${...}
11
+ *
12
+ * Fully backward compatible with original HoloScript syntax.
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * import { HoloScriptPlusParser, HoloScriptPlusRuntime } from '@holoscript/core';
17
+ *
18
+ * const parser = new HoloScriptPlusParser();
19
+ * const result = parser.parse(`
20
+ * orb#myOrb {
21
+ * position: [0, 0, 0]
22
+ * @grabbable(snap_to_hand: true)
23
+ * @throwable(bounce: true)
24
+ * }
25
+ * `);
26
+ *
27
+ * const runtime = new HoloScriptPlusRuntime(result.ast);
28
+ * await runtime.mount(document.body);
29
+ * ```
30
+ *
31
+ * @packageDocumentation
32
+ */
33
+ // Import for use in utility functions
34
+ import { HoloScriptParser } from './HoloScriptParser';
35
+ import { HoloScriptRuntime } from './HoloScriptRuntime';
36
+ // Parser
37
+ export { HoloScriptParser } from './HoloScriptParser';
38
+ export { HoloScript2DParser } from './HoloScript2DParser';
39
+ export { HoloScriptCodeParser } from './HoloScriptCodeParser';
40
+ // HoloScript+ Parser (NEW)
41
+ export { HoloScriptPlusParser, createParser, parse as parseHoloScriptPlus } from './parser/HoloScriptPlusParser';
42
+ // HoloScript+ Enhanced Parser with Trait Annotations (NEW - Phase 3)
43
+ export { HoloScriptPlusParser as HoloScriptTraitAnnotationParser, } from './HoloScriptPlusParser';
44
+ // Runtime
45
+ export { HoloScriptRuntime } from './HoloScriptRuntime';
46
+ // HoloScript+ Runtime (NEW)
47
+ export { HoloScriptPlusRuntimeImpl } from './runtime/HoloScriptPlusRuntime';
48
+ // HoloScript+ State Management (NEW)
49
+ export { ReactiveState, createState, reactive, effect, computed, bind } from './state/ReactiveState';
50
+ // HoloScript+ VR Traits (NEW)
51
+ export { VRTraitRegistry } from './traits/VRTraitSystem';
52
+ // HoloScript+ Voice Input Trait (NEW - Phase 1)
53
+ export { VoiceInputTrait, createVoiceInputTrait, } from './traits/VoiceInputTrait';
54
+ // HoloScript+ AI Driver NPC Trait (NEW - Phase 1)
55
+ export { AIDriverTrait, createAIDriverTrait, BehaviorTreeRunner, GOAPPlanner, } from './traits/AIDriverTrait';
56
+ // HoloScript+ Material Trait (NEW - Phase 2: Graphics)
57
+ export { MaterialTrait, createMaterialTrait, MATERIAL_PRESETS, } from './traits/MaterialTrait';
58
+ // HoloScript+ Lighting Trait (NEW - Phase 2: Graphics)
59
+ export { LightingTrait, createLightingTrait, LIGHTING_PRESETS, } from './traits/LightingTrait';
60
+ // HoloScript+ Rendering Trait (NEW - Phase 2: Graphics)
61
+ export { RenderingTrait, createRenderingTrait, } from './traits/RenderingTrait';
62
+ // Performance Telemetry (NEW - Phase 1)
63
+ export { PerformanceTelemetry, getPerformanceTelemetry, } from './runtime/PerformanceTelemetry';
64
+ // Hololand Graphics Pipeline Service (NEW - Phase 4)
65
+ export { HololandGraphicsPipelineService, } from './services/HololandGraphicsPipelineService';
66
+ // Platform Performance Optimizer (NEW - Phase 5)
67
+ export { PlatformPerformanceOptimizer, } from './services/PlatformPerformanceOptimizer';
68
+ // Type Checker
69
+ export { HoloScriptTypeChecker, createTypeChecker, } from './HoloScriptTypeChecker';
70
+ // Debugger
71
+ export { HoloScriptDebugger, createDebugger, } from './HoloScriptDebugger';
72
+ // Logger
73
+ export { logger, setHoloScriptLogger, enableConsoleLogging, resetLogger, NoOpLogger, ConsoleLogger, } from './logger';
74
+ // Version
75
+ export const HOLOSCRIPT_VERSION = '1.0.0-alpha.1';
76
+ // Supported Platforms
77
+ export const HOLOSCRIPT_SUPPORTED_PLATFORMS = [
78
+ 'WebXR',
79
+ 'Oculus Quest',
80
+ 'HTC Vive',
81
+ 'Valve Index',
82
+ 'Apple Vision Pro',
83
+ 'Windows Mixed Reality',
84
+ ];
85
+ // Voice Commands Reference
86
+ export const HOLOSCRIPT_VOICE_COMMANDS = [
87
+ // 3D VR Commands
88
+ 'create orb [name]',
89
+ 'summon function [name]',
90
+ 'connect [from] to [to]',
91
+ 'execute [function]',
92
+ 'debug program',
93
+ 'visualize [data]',
94
+ 'gate [condition]',
95
+ 'stream [source] through [transformations]',
96
+ // 2D UI Commands
97
+ 'create button [name]',
98
+ 'add textinput [name]',
99
+ 'create panel [name]',
100
+ 'add slider [name]',
101
+ ];
102
+ // Gesture Reference
103
+ export const HOLOSCRIPT_GESTURES = [
104
+ 'pinch - create object',
105
+ 'swipe - connect objects',
106
+ 'rotate - modify properties',
107
+ 'grab - select object',
108
+ 'spread - expand view',
109
+ 'fist - execute action',
110
+ ];
111
+ // Demo Scripts
112
+ export const HOLOSCRIPT_DEMO_SCRIPTS = {
113
+ helloWorld: `orb greeting {
114
+ message: "Hello, HoloScript World!"
115
+ color: "#00ffff"
116
+ glow: true
117
+ }
118
+
119
+ function displayGreeting() {
120
+ show greeting
121
+ }`,
122
+ aiAgent: `orb agentCore {
123
+ personality: "helpful"
124
+ capabilities: ["conversation", "problem_solving", "learning"]
125
+ energy: 100
126
+ }
127
+
128
+ function processQuery(query: string): string {
129
+ analyze query
130
+ generate response
131
+ return response
132
+ }`,
133
+ neuralNetwork: `orb inputLayer { neurons: 784 }
134
+ orb hiddenLayer { neurons: 128 }
135
+ orb outputLayer { neurons: 10 }
136
+
137
+ connect inputLayer to hiddenLayer as "weights"
138
+ connect hiddenLayer to outputLayer as "weights"
139
+
140
+ function trainNetwork(data: array): object {
141
+ forward_pass data
142
+ calculate_loss
143
+ backward_pass
144
+ update_weights
145
+ return metrics
146
+ }`,
147
+ loginForm: `button loginBtn {
148
+ text: "Login"
149
+ x: 100
150
+ y: 150
151
+ width: 200
152
+ height: 40
153
+ onClick: handleLogin
154
+ }
155
+
156
+ textinput usernameInput {
157
+ placeholder: "Username"
158
+ x: 100
159
+ y: 50
160
+ width: 200
161
+ height: 36
162
+ }
163
+
164
+ textinput passwordInput {
165
+ placeholder: "Password"
166
+ x: 100
167
+ y: 100
168
+ width: 200
169
+ height: 36
170
+ }`,
171
+ dashboard: `panel sidebar {
172
+ x: 0
173
+ y: 0
174
+ width: 200
175
+ height: 600
176
+ backgroundColor: "#2c3e50"
177
+ }
178
+
179
+ text title {
180
+ content: "Dashboard"
181
+ x: 220
182
+ y: 20
183
+ fontSize: 24
184
+ color: "#34495e"
185
+ }
186
+
187
+ button refreshBtn {
188
+ text: "Refresh Data"
189
+ x: 220
190
+ y: 60
191
+ onClick: refreshData
192
+ }`,
193
+ };
194
+ // Utility Functions
195
+ /**
196
+ * Create a pre-configured HoloScript environment
197
+ */
198
+ export function createHoloScriptEnvironment() {
199
+ return {
200
+ parser: new HoloScriptParser(),
201
+ runtime: new HoloScriptRuntime(),
202
+ version: HOLOSCRIPT_VERSION,
203
+ };
204
+ }
205
+ /**
206
+ * Check if the current environment supports VR/XR
207
+ */
208
+ export function isHoloScriptSupported() {
209
+ if (typeof globalThis === 'undefined')
210
+ return false;
211
+ const win = globalThis;
212
+ if (!win.window)
213
+ return false;
214
+ return !!(win.window.navigator?.xr ||
215
+ win.window.navigator?.getVRDisplays ||
216
+ win.window.webkitGetUserMedia);
217
+ }
package/src/index.ts CHANGED
@@ -1,30 +1,31 @@
1
1
  /**
2
2
  * @holoscript/core
3
3
  *
4
- * Core HoloScript language - parser, runtime, and AST types.
4
+ * HoloScript+ - VR language with declarative syntax, state management, and VR interactions.
5
+ * Enhanced version of HoloScript with:
6
+ * - VR interaction traits (@grabbable, @throwable, @hoverable, etc.)
7
+ * - Reactive state management (@state { ... })
8
+ * - Control flow (@for, @if directives)
9
+ * - TypeScript companion imports
10
+ * - Expression interpolation ${...}
5
11
  *
6
- * HoloScript is an open source VR scene description language that supports:
7
- * - Voice commands for 3D object creation
8
- * - Gesture input parsing
9
- * - 2D UI element definition
10
- * - Spatial programming concepts
12
+ * Fully backward compatible with original HoloScript syntax.
11
13
  *
12
14
  * @example
13
15
  * ```typescript
14
- * import { HoloScriptParser, HoloScriptRuntime } from '@holoscript/core';
16
+ * import { HoloScriptPlusParser, HoloScriptPlusRuntime } from '@holoscript/core';
15
17
  *
16
- * const parser = new HoloScriptParser();
17
- * const runtime = new HoloScriptRuntime();
18
+ * const parser = new HoloScriptPlusParser();
19
+ * const result = parser.parse(`
20
+ * orb#myOrb {
21
+ * position: [0, 0, 0]
22
+ * @grabbable(snap_to_hand: true)
23
+ * @throwable(bounce: true)
24
+ * }
25
+ * `);
18
26
  *
19
- * // Parse a voice command
20
- * const nodes = parser.parseVoiceCommand({
21
- * command: 'create orb myOrb',
22
- * confidence: 0.95,
23
- * timestamp: Date.now()
24
- * });
25
- *
26
- * // Execute the AST
27
- * const results = await runtime.executeProgram(nodes);
27
+ * const runtime = new HoloScriptPlusRuntime(result.ast);
28
+ * await runtime.mount(document.body);
28
29
  * ```
29
30
  *
30
31
  * @packageDocumentation
@@ -39,9 +40,129 @@ export { HoloScriptParser } from './HoloScriptParser';
39
40
  export { HoloScript2DParser } from './HoloScript2DParser';
40
41
  export { HoloScriptCodeParser, type ParseResult, type ParseError } from './HoloScriptCodeParser';
41
42
 
43
+ // HoloScript+ Parser (NEW)
44
+ export { HoloScriptPlusParser, createParser, parse as parseHoloScriptPlus } from './parser/HoloScriptPlusParser';
45
+
46
+ // HoloScript+ Enhanced Parser with Trait Annotations (NEW - Phase 3)
47
+ export {
48
+ HoloScriptPlusParser as HoloScriptTraitAnnotationParser,
49
+ type MaterialTraitAnnotation,
50
+ type LightingTraitAnnotation,
51
+ type RenderingTraitAnnotation,
52
+ type GraphicsConfiguration,
53
+ } from './HoloScriptPlusParser';
54
+
42
55
  // Runtime
43
56
  export { HoloScriptRuntime } from './HoloScriptRuntime';
44
57
 
58
+ // HoloScript+ Runtime (NEW)
59
+ export { HoloScriptPlusRuntimeImpl } from './runtime/HoloScriptPlusRuntime';
60
+
61
+ // HoloScript+ State Management (NEW)
62
+ export { ReactiveState, createState, reactive, effect, computed, bind } from './state/ReactiveState';
63
+
64
+ // HoloScript+ VR Traits (NEW)
65
+ export { VRTraitRegistry } from './traits/VRTraitSystem';
66
+
67
+ // HoloScript+ Voice Input Trait (NEW - Phase 1)
68
+ export {
69
+ VoiceInputTrait,
70
+ createVoiceInputTrait,
71
+ type VoiceInputConfig,
72
+ type VoiceInputMode,
73
+ type VoiceRecognitionResult,
74
+ type VoiceInputEvent,
75
+ } from './traits/VoiceInputTrait';
76
+
77
+ // HoloScript+ AI Driver NPC Trait (NEW - Phase 1)
78
+ export {
79
+ AIDriverTrait,
80
+ createAIDriverTrait,
81
+ BehaviorTreeRunner,
82
+ GOAPPlanner,
83
+ type AIDriverConfig,
84
+ type DecisionMode,
85
+ type BehaviorNode,
86
+ type NPCContext,
87
+ type NPCGoal,
88
+ type BehaviorState,
89
+ } from './traits/AIDriverTrait';
90
+
91
+ // HoloScript+ Material Trait (NEW - Phase 2: Graphics)
92
+ export {
93
+ MaterialTrait,
94
+ createMaterialTrait,
95
+ MATERIAL_PRESETS,
96
+ type MaterialType,
97
+ type TextureChannel,
98
+ type TextureMap,
99
+ type PBRMaterial,
100
+ type MaterialConfig,
101
+ } from './traits/MaterialTrait';
102
+
103
+ // HoloScript+ Lighting Trait (NEW - Phase 2: Graphics)
104
+ export {
105
+ LightingTrait,
106
+ createLightingTrait,
107
+ LIGHTING_PRESETS,
108
+ type LightType,
109
+ type ShadowType,
110
+ type ShadowConfig,
111
+ type LightSource,
112
+ type GlobalIlluminationConfig,
113
+ } from './traits/LightingTrait';
114
+
115
+ // HoloScript+ Rendering Trait (NEW - Phase 2: Graphics)
116
+ export {
117
+ RenderingTrait,
118
+ createRenderingTrait,
119
+ type CullingMode,
120
+ type LodStrategy,
121
+ type GPUResourceTier,
122
+ type LODLevel,
123
+ type CullingConfig,
124
+ type BatchingConfig,
125
+ type TextureOptimization,
126
+ type ShaderOptimization,
127
+ type RenderingOptimization,
128
+ } from './traits/RenderingTrait';
129
+
130
+ // Performance Telemetry (NEW - Phase 1)
131
+ export {
132
+ PerformanceTelemetry,
133
+ getPerformanceTelemetry,
134
+ type Metric,
135
+ type MetricType,
136
+ type SeverityLevel,
137
+ type PerformanceBudget,
138
+ type FrameTiming,
139
+ type MemorySnapshot,
140
+ type AnalyticsExporter,
141
+ } from './runtime/PerformanceTelemetry';
142
+
143
+ // Hololand Graphics Pipeline Service (NEW - Phase 4)
144
+ export {
145
+ HololandGraphicsPipelineService,
146
+ type MaterialAsset,
147
+ type TextureAsset,
148
+ type ShaderProgram,
149
+ type PlatformConfig,
150
+ type GPUMemoryEstimate,
151
+ type PerformanceMetrics,
152
+ } from './services/HololandGraphicsPipelineService';
153
+
154
+ // Platform Performance Optimizer (NEW - Phase 5)
155
+ export {
156
+ PlatformPerformanceOptimizer,
157
+ type DeviceInfo,
158
+ type PerformanceProfile,
159
+ type AdaptiveQualitySettings,
160
+ type BenchmarkResult,
161
+ type DeviceCapabilities,
162
+ type CompressionFormat,
163
+ type PerformanceRecommendation,
164
+ } from './services/PlatformPerformanceOptimizer';
165
+
45
166
  // Type Checker
46
167
  export {
47
168
  HoloScriptTypeChecker,
@@ -101,6 +222,24 @@ export type {
101
222
  TransformationNode,
102
223
  GenericASTNode,
103
224
 
225
+ // VR Types
226
+ Vector3,
227
+ Vector2,
228
+ Color,
229
+ Duration,
230
+ Transform,
231
+ VRHand,
232
+ ThrowVelocity,
233
+ CollisionEvent,
234
+
235
+ // VR Traits
236
+ GrabbableTrait,
237
+ ThrowableTrait,
238
+ PointableTrait,
239
+ HoverableTrait,
240
+ ScalableTrait,
241
+ RotatableTrait,
242
+
104
243
  // Phase 2: Loop Nodes
105
244
  ForLoopNode,
106
245
  WhileLoopNode,
@@ -109,6 +248,7 @@ export type {
109
248
  // Phase 2: Module Nodes
110
249
  ImportNode,
111
250
  ExportNode,
251
+ ImportLoader,
112
252
 
113
253
  // Phase 2: Variable Nodes
114
254
  VariableDeclarationNode,