@holoscript/core 1.0.0-alpha.1 → 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 (127) hide show
  1. package/package.json +10 -9
  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 +257 -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
  75. package/LICENSE +0 -21
  76. package/dist/chunk-3X2EGU7Z.cjs +0 -52
  77. package/dist/chunk-3X2EGU7Z.cjs.map +0 -1
  78. package/dist/chunk-723TPVHD.js +0 -1074
  79. package/dist/chunk-723TPVHD.js.map +0 -1
  80. package/dist/chunk-EOKNAVDO.cjs +0 -424
  81. package/dist/chunk-EOKNAVDO.cjs.map +0 -1
  82. package/dist/chunk-HQZ3HUMY.js +0 -1087
  83. package/dist/chunk-HQZ3HUMY.js.map +0 -1
  84. package/dist/chunk-KWYIVRIH.js +0 -344
  85. package/dist/chunk-KWYIVRIH.js.map +0 -1
  86. package/dist/chunk-LKH4ZAN6.js +0 -421
  87. package/dist/chunk-LKH4ZAN6.js.map +0 -1
  88. package/dist/chunk-SATNCODL.js +0 -45
  89. package/dist/chunk-SATNCODL.js.map +0 -1
  90. package/dist/chunk-VMZN4EVR.cjs +0 -347
  91. package/dist/chunk-VMZN4EVR.cjs.map +0 -1
  92. package/dist/chunk-VV3UUUYP.cjs +0 -1089
  93. package/dist/chunk-VV3UUUYP.cjs.map +0 -1
  94. package/dist/chunk-XRYTSQHZ.cjs +0 -1076
  95. package/dist/chunk-XRYTSQHZ.cjs.map +0 -1
  96. package/dist/debugger.cjs +0 -19
  97. package/dist/debugger.cjs.map +0 -1
  98. package/dist/debugger.d.cts +0 -171
  99. package/dist/debugger.d.ts +0 -171
  100. package/dist/debugger.js +0 -6
  101. package/dist/debugger.js.map +0 -1
  102. package/dist/index.cjs +0 -755
  103. package/dist/index.cjs.map +0 -1
  104. package/dist/index.d.cts +0 -169
  105. package/dist/index.d.ts +0 -169
  106. package/dist/index.js +0 -699
  107. package/dist/index.js.map +0 -1
  108. package/dist/parser.cjs +0 -13
  109. package/dist/parser.cjs.map +0 -1
  110. package/dist/parser.d.cts +0 -154
  111. package/dist/parser.d.ts +0 -154
  112. package/dist/parser.js +0 -4
  113. package/dist/parser.js.map +0 -1
  114. package/dist/runtime.cjs +0 -13
  115. package/dist/runtime.cjs.map +0 -1
  116. package/dist/runtime.d.cts +0 -147
  117. package/dist/runtime.d.ts +0 -147
  118. package/dist/runtime.js +0 -4
  119. package/dist/runtime.js.map +0 -1
  120. package/dist/type-checker.cjs +0 -16
  121. package/dist/type-checker.cjs.map +0 -1
  122. package/dist/type-checker.d.cts +0 -105
  123. package/dist/type-checker.d.ts +0 -105
  124. package/dist/type-checker.js +0 -3
  125. package/dist/type-checker.js.map +0 -1
  126. package/dist/types-WQSk1Qs2.d.cts +0 -238
  127. package/dist/types-WQSk1Qs2.d.ts +0 -238
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/HoloScript2DParser.ts","../src/HoloScriptParser.ts","../src/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\n * HoloScript 2D Parser Extension\n *\n * Adds support for 2D UI elements to HoloScript for desktop/mobile apps.\n * Works alongside 3D VR syntax for hybrid applications.\n */\n\nimport { logger } from './logger';\nimport type { UI2DNode, UIElementType, Position2D } from './types';\n\nconst UI_SECURITY_CONFIG = {\n maxUIElements: 500,\n maxNestingDepth: 10,\n maxPropertyLength: 500,\n allowedEventHandlers: ['onClick', 'onChange', 'onSubmit', 'onFocus', 'onBlur', 'onHover'],\n};\n\nexport class HoloScript2DParser {\n private uiElements: Map<string, UI2DNode> = new Map();\n\n /**\n * Parse 2D UI element from HoloScript code\n */\n parse2DElement(code: string, depth: number = 0): UI2DNode | null {\n if (depth > UI_SECURITY_CONFIG.maxNestingDepth) {\n logger.warn('Max nesting depth exceeded', { depth });\n return null;\n }\n\n const trimmedCode = code.trim();\n const lines = trimmedCode.split('\\n');\n if (lines.length === 0) return null;\n\n const firstLine = lines[0].trim();\n const headerMatch = firstLine.match(/^([\\w-]+)\\s+(\\w+)\\s*\\{/);\n\n if (!headerMatch) {\n logger.warn('Invalid 2D element syntax', { line: firstLine });\n return null;\n }\n\n const [, elementType, name] = headerMatch;\n\n if (!this.isValidUIElementType(elementType)) {\n logger.warn('Invalid UI element type', { elementType });\n return null;\n }\n\n const startIndex = trimmedCode.indexOf('{');\n const endIndex = trimmedCode.lastIndexOf('}');\n if (startIndex === -1 || endIndex === -1 || endIndex <= startIndex) {\n return null;\n }\n\n const innerContent = trimmedCode.slice(startIndex + 1, endIndex).trim();\n const innerLines = this.splitIntoLogicalBlocks(innerContent);\n\n const properties: Record<string, unknown> = {};\n const events: Record<string, string> = {};\n const children: UI2DNode[] = [];\n\n for (const block of innerLines) {\n const line = block.trim();\n if (!line) continue;\n\n if (line.includes('{')) {\n const childNode = this.parse2DElement(line, depth + 1);\n if (childNode) children.push(childNode);\n continue;\n }\n\n const propMatch = line.match(/^(\\w+):\\s*(.+)$/);\n if (propMatch) {\n const [, key, rawValue] = propMatch;\n if (UI_SECURITY_CONFIG.allowedEventHandlers.includes(key)) {\n events[key] = rawValue.trim();\n } else {\n properties[key] = this.parsePropertyValue(rawValue);\n }\n }\n }\n\n const node: UI2DNode = {\n type: '2d-element',\n elementType: elementType as UIElementType,\n name,\n properties: { ...this.getDefaultProperties(elementType as UIElementType), ...properties },\n events: Object.keys(events).length > 0 ? events : undefined,\n children: children.length > 0 ? children : undefined,\n };\n\n if (depth === 0) {\n if (this.uiElements.size >= UI_SECURITY_CONFIG.maxUIElements) {\n logger.warn('Max UI elements limit reached');\n return null;\n }\n this.uiElements.set(name, node);\n }\n\n return node;\n }\n\n private splitIntoLogicalBlocks(content: string): string[] {\n const blocks: string[] = [];\n let currentBlock = '';\n let bracketDepth = 0;\n\n for (let i = 0; i < content.length; i++) {\n const char = content[i];\n if (char === '{') bracketDepth++;\n if (char === '}') bracketDepth--;\n\n currentBlock += char;\n\n if (bracketDepth === 0) {\n if (char === '\\n' || i === content.length - 1) {\n const trimmed = currentBlock.trim();\n if (trimmed) blocks.push(trimmed);\n currentBlock = '';\n }\n }\n }\n\n const finalTrimmed = currentBlock.trim();\n if (finalTrimmed) blocks.push(finalTrimmed);\n\n return blocks;\n }\n\n /**\n * Parse voice command for 2D UI creation\n */\n parse2DVoiceCommand(command: string): UI2DNode | null {\n const tokens = command.toLowerCase().trim().split(/\\s+/);\n\n if (tokens.length < 3) return null;\n\n const action = tokens[0];\n const elementType = tokens[1];\n const name = tokens[2];\n\n if (action !== 'create' && action !== 'add') return null;\n if (!this.isValidUIElementType(elementType)) return null;\n\n const node: UI2DNode = {\n type: '2d-element',\n elementType: elementType as UIElementType,\n name,\n properties: this.getDefaultProperties(elementType as UIElementType),\n };\n\n this.uiElements.set(name, node);\n return node;\n }\n\n /**\n * Parse gesture for 2D UI interaction\n */\n parse2DGesture(gestureType: string, position: Position2D): UI2DNode | null {\n switch (gestureType) {\n case 'tap':\n return this.createQuick2DElement('button', `button_${Date.now()}`, position);\n case 'double-tap':\n return this.createQuick2DElement('textinput', `input_${Date.now()}`, position);\n case 'long-press':\n return this.createQuick2DElement('panel', `panel_${Date.now()}`, position);\n default:\n return null;\n }\n }\n\n private createQuick2DElement(elementType: UIElementType, name: string, position: Position2D): UI2DNode {\n const node: UI2DNode = {\n type: '2d-element',\n elementType,\n name,\n properties: {\n ...this.getDefaultProperties(elementType),\n x: position.x,\n y: position.y,\n },\n };\n\n this.uiElements.set(name, node);\n return node;\n }\n\n private isValidUIElementType(type: string): boolean {\n const validTypes: UIElementType[] = [\n 'canvas', 'button', 'textinput', 'panel', 'text', 'image',\n 'list', 'modal', 'slider', 'toggle', 'dropdown',\n 'flex-container', 'grid-container', 'scroll-view', 'tab-view'\n ];\n return validTypes.includes(type as UIElementType);\n }\n\n private parsePropertyValue(value: string): unknown {\n const trimmed = value.trim();\n\n if ((trimmed.startsWith('\"') && trimmed.endsWith('\"')) ||\n (trimmed.startsWith(\"'\") && trimmed.endsWith(\"'\"))) {\n return trimmed.slice(1, -1);\n }\n\n if (!isNaN(parseFloat(trimmed)) && isFinite(parseFloat(trimmed))) {\n return parseFloat(trimmed);\n }\n\n if (trimmed === 'true') return true;\n if (trimmed === 'false') return false;\n\n if (trimmed.startsWith('[') && trimmed.endsWith(']')) {\n const items = trimmed.slice(1, -1).split(',').map(item =>\n this.parsePropertyValue(item.trim())\n );\n return items;\n }\n\n return trimmed;\n }\n\n private getDefaultProperties(elementType: UIElementType): Record<string, unknown> {\n const defaults: Record<UIElementType, Record<string, unknown>> = {\n 'canvas': { width: 800, height: 600, backgroundColor: '#ffffff' },\n 'button': { text: 'Button', width: 120, height: 40, backgroundColor: '#007bff', color: '#ffffff', borderRadius: 4 },\n 'textinput': { placeholder: '', width: 200, height: 36, fontSize: 14, borderColor: '#cccccc', borderWidth: 1, borderRadius: 4 },\n 'panel': { width: 200, height: 200, backgroundColor: '#f0f0f0', borderRadius: 0 },\n 'text': { content: 'Text', fontSize: 16, color: '#000000', fontFamily: 'sans-serif' },\n 'image': { src: '', width: 100, height: 100, fit: 'cover' },\n 'list': { items: [], itemHeight: 40, width: 200, height: 300 },\n 'modal': { title: 'Modal', width: 400, height: 300, visible: false, backgroundColor: '#ffffff' },\n 'slider': { min: 0, max: 100, value: 50, width: 200 },\n 'toggle': { checked: false, width: 50, height: 24 },\n 'dropdown': { options: [], selected: null, width: 200 },\n 'flex-container': { direction: 'row', gap: 10, padding: 10 },\n 'grid-container': { columns: 3, gap: 10, padding: 10 },\n 'scroll-view': { width: 300, height: 400, scrollDirection: 'vertical' },\n 'tab-view': { tabs: [], activeTabId: null, tabPosition: 'top', width: 400, height: 300 },\n };\n return { ...defaults[elementType] };\n }\n\n getUIElements(): Map<string, UI2DNode> {\n return new Map(this.uiElements);\n }\n\n findElement(name: string): UI2DNode | null {\n return this.uiElements.get(name) || null;\n }\n\n clear(): void {\n this.uiElements.clear();\n }\n}\n\nexport type { UI2DNode, UIElementType, Position2D };\n","/**\n * HoloScript Parser\n *\n * Parses voice commands, gestures, and code into HoloScript AST.\n * Supports both 3D VR and 2D UI elements.\n */\n\nimport { logger } from './logger';\nimport { HoloScript2DParser } from './HoloScript2DParser';\nimport type {\n ASTNode,\n OrbNode,\n ParameterNode,\n ConnectionNode,\n GateNode,\n StreamNode,\n GenericASTNode,\n SpatialPosition,\n VoiceCommand,\n GestureData,\n UI2DNode,\n HologramShape,\n} from './types';\n\nconst HOLOSCRIPT_SECURITY_CONFIG = {\n maxCommandLength: 1000,\n maxTokens: 100,\n maxHologramsPerUser: 50,\n suspiciousKeywords: [\n 'process', 'require', 'eval', 'import', 'constructor',\n 'prototype', '__proto__', 'fs', 'child_process', 'exec',\n 'spawn', 'fetch', 'xmlhttprequest',\n ],\n allowedShapes: ['orb', 'cube', 'cylinder', 'pyramid', 'sphere', 'function', 'gate', 'stream'],\n allowedUIElements: [\n 'canvas', 'button', 'textinput', 'panel', 'text', 'image',\n 'list', 'modal', 'slider', 'toggle', 'dropdown',\n 'flex-container', 'grid-container', 'scroll-view'\n ],\n};\n\nexport class HoloScriptParser {\n private ast: ASTNode[] = [];\n private parser2D: HoloScript2DParser;\n\n constructor() {\n this.parser2D = new HoloScript2DParser();\n }\n\n /**\n * Parse voice command into AST nodes\n */\n parseVoiceCommand(command: VoiceCommand): ASTNode[] {\n if (command.command.length > HOLOSCRIPT_SECURITY_CONFIG.maxCommandLength) {\n logger.warn('Command too long', {\n length: command.command.length,\n limit: HOLOSCRIPT_SECURITY_CONFIG.maxCommandLength,\n });\n return [];\n }\n\n const rawTokens = this.tokenizeCommand(command.command.toLowerCase());\n const tokens = this.sanitizeTokens(rawTokens);\n\n if (tokens.length === 0) return [];\n\n if (tokens.length > HOLOSCRIPT_SECURITY_CONFIG.maxTokens) {\n logger.warn('Too many tokens in command', {\n tokenCount: tokens.length,\n limit: HOLOSCRIPT_SECURITY_CONFIG.maxTokens,\n });\n return [];\n }\n\n const commandType = tokens[0];\n\n // Check if this is a 2D UI command\n if ((commandType === 'create' || commandType === 'add') && tokens.length > 1) {\n const elementType = tokens[1];\n if (HOLOSCRIPT_SECURITY_CONFIG.allowedUIElements.includes(elementType)) {\n return this.parse2DUICommand(command.command);\n }\n }\n\n switch (commandType) {\n case 'create':\n case 'summon':\n return this.parseCreateCommand(tokens.slice(1), command.spatialContext);\n case 'connect':\n return this.parseConnectCommand(tokens.slice(1));\n case 'execute':\n case 'run':\n return this.parseExecuteCommand(tokens.slice(1));\n case 'debug':\n return this.parseDebugCommand(tokens.slice(1));\n case 'visualize':\n return this.parseVisualizeCommand(tokens.slice(1));\n default:\n return this.parseGenericCommand(tokens);\n }\n }\n\n private parse2DUICommand(command: string): ASTNode[] {\n const ui2DNode = this.parser2D.parse2DVoiceCommand(command);\n if (!ui2DNode) return [];\n\n const astNode: GenericASTNode = {\n type: '2d-ui',\n uiElementType: ui2DNode.elementType,\n name: ui2DNode.name,\n properties: ui2DNode.properties,\n events: ui2DNode.events,\n children: ui2DNode.children,\n };\n\n return [astNode];\n }\n\n /**\n * Parse gesture input\n */\n parseGesture(gesture: GestureData): ASTNode[] {\n switch (gesture.type) {\n case 'pinch':\n return this.parsePinchGesture(gesture);\n case 'swipe':\n return this.parseSwipeGesture(gesture);\n case 'rotate':\n return this.parseRotateGesture(gesture);\n case 'grab':\n return this.parseGrabGesture(gesture);\n default:\n return [];\n }\n }\n\n private parseCreateCommand(tokens: string[], position?: SpatialPosition): ASTNode[] {\n if (tokens.length < 2) return [];\n\n const shape = tokens[0];\n const name = tokens[1];\n\n switch (shape) {\n case 'orb':\n case 'sphere':\n return [this.createOrbNode(name, position)];\n case 'function':\n return [this.createFunctionNode(name, tokens.slice(2), position)];\n case 'gate':\n return [this.createGateNode(name, tokens.slice(2), position)];\n case 'stream':\n return [this.createStreamNode(name, tokens.slice(2), position)];\n default:\n return [this.createGenericNode(shape, name, position)];\n }\n }\n\n private parseConnectCommand(tokens: string[]): ASTNode[] {\n if (tokens.length < 3) return [];\n\n const from = tokens[0];\n const to = tokens[2];\n const dataType = tokens.length > 3 ? tokens[3] : 'any';\n\n return [{\n type: 'connection',\n from,\n to,\n dataType,\n bidirectional: tokens.includes('bidirectional') || tokens.includes('both'),\n } as ConnectionNode];\n }\n\n private createOrbNode(name: string, position?: SpatialPosition): OrbNode {\n return {\n type: 'orb',\n name,\n position: position || { x: 0, y: 0, z: 0 },\n hologram: {\n shape: 'orb',\n color: '#00ffff',\n size: 1,\n glow: true,\n interactive: true,\n },\n properties: {},\n methods: [],\n };\n }\n\n private createFunctionNode(name: string, params: string[], position?: SpatialPosition): GenericASTNode {\n const parameters: ParameterNode[] = [];\n\n let inParams = false;\n for (const param of params) {\n if (param === 'with' || param === 'parameters') {\n inParams = true;\n continue;\n }\n if (inParams && param !== 'do' && param !== 'execute') {\n parameters.push({\n type: 'parameter',\n name: param,\n dataType: 'any',\n });\n }\n }\n\n return {\n type: 'function',\n name,\n parameters,\n body: [],\n position: position || { x: 0, y: 0, z: 0 },\n hologram: {\n shape: 'cube',\n color: '#ff6b35',\n size: 1.5,\n glow: true,\n interactive: true,\n },\n };\n }\n\n private createGateNode(_name: string, params: string[], position?: SpatialPosition): GateNode {\n const condition = params.join(' ').replace('condition', '').trim();\n\n return {\n type: 'gate',\n condition,\n truePath: [],\n falsePath: [],\n position: position || { x: 0, y: 0, z: 0 },\n hologram: {\n shape: 'pyramid',\n color: '#4ecdc4',\n size: 1,\n glow: true,\n interactive: true,\n },\n };\n }\n\n private createStreamNode(name: string, params: string[], position?: SpatialPosition): StreamNode {\n return {\n type: 'stream',\n name,\n source: params[0] || 'unknown',\n transformations: [],\n position: position || { x: 0, y: 0, z: 0 },\n hologram: {\n shape: 'cylinder',\n color: '#45b7d1',\n size: 2,\n glow: true,\n interactive: true,\n },\n };\n }\n\n private createGenericNode(shape: string, name: string, position?: SpatialPosition): GenericASTNode {\n return {\n type: shape,\n name,\n position: position || { x: 0, y: 0, z: 0 },\n hologram: {\n shape: shape as HologramShape,\n color: '#ffffff',\n size: 1,\n glow: false,\n interactive: true,\n },\n };\n }\n\n private parsePinchGesture(gesture: GestureData): ASTNode[] {\n return [{\n type: 'create',\n position: gesture.position,\n hologram: { shape: 'orb', color: '#ff0000', size: 0.5, glow: true, interactive: true },\n }];\n }\n\n private parseSwipeGesture(gesture: GestureData): ASTNode[] {\n if (!gesture.direction) return [];\n return [{\n type: 'connect',\n position: gesture.position,\n hologram: { shape: 'cylinder', color: '#00ff00', size: gesture.magnitude, glow: true, interactive: false },\n }];\n }\n\n private parseRotateGesture(gesture: GestureData): ASTNode[] {\n return [{\n type: 'modify',\n position: gesture.position,\n hologram: { shape: 'sphere', color: '#ffff00', size: 0.8, glow: true, interactive: true },\n }];\n }\n\n private parseGrabGesture(gesture: GestureData): ASTNode[] {\n return [{\n type: 'select',\n position: gesture.position,\n hologram: { shape: 'cube', color: '#ff00ff', size: 0.3, glow: true, interactive: true },\n }];\n }\n\n private tokenizeCommand(command: string): string[] {\n return command\n .toLowerCase()\n .replace(/[^\\w\\s]/g, ' ')\n .split(/\\s+/)\n .filter(token => token.length > 0);\n }\n\n private sanitizeTokens(tokens: string[]): string[] {\n return tokens.filter(token => {\n const isSuspicious = HOLOSCRIPT_SECURITY_CONFIG.suspiciousKeywords.some(\n keyword => token.includes(keyword)\n );\n if (isSuspicious) {\n logger.warn('Suspicious token blocked', { token });\n return false;\n }\n return true;\n });\n }\n\n private parseExecuteCommand(tokens: string[]): GenericASTNode[] {\n return [{\n type: 'execute',\n target: tokens[0] || 'unknown',\n hologram: { shape: 'sphere', color: '#ff4500', size: 1.2, glow: true, interactive: false },\n }];\n }\n\n private parseDebugCommand(tokens: string[]): GenericASTNode[] {\n return [{\n type: 'debug',\n target: tokens[0] || 'program',\n hologram: { shape: 'pyramid', color: '#ff1493', size: 0.8, glow: true, interactive: true },\n }];\n }\n\n private parseVisualizeCommand(tokens: string[]): GenericASTNode[] {\n return [{\n type: 'visualize',\n target: tokens[0] || 'data',\n hologram: { shape: 'cylinder', color: '#32cd32', size: 1.5, glow: true, interactive: true },\n }];\n }\n\n private parseGenericCommand(tokens: string[]): GenericASTNode[] {\n return [{\n type: 'generic',\n command: tokens.join(' '),\n hologram: { shape: 'orb', color: '#808080', size: 0.5, glow: false, interactive: true },\n }];\n }\n\n getAST(): ASTNode[] {\n return [...this.ast];\n }\n\n addNode(node: ASTNode): void {\n this.ast.push(node);\n }\n\n clear(): void {\n this.ast = [];\n }\n\n findNode(name: string): ASTNode | null {\n return this.ast.find(node => 'name' in node && (node as { name?: string }).name === name) || null;\n }\n\n getNodesAtPosition(position: SpatialPosition, radius: number = 1): ASTNode[] {\n return this.ast.filter(node => {\n if (!node.position) return false;\n const distance = Math.sqrt(\n Math.pow(node.position.x - position.x, 2) +\n Math.pow(node.position.y - position.y, 2) +\n Math.pow(node.position.z - position.z, 2)\n );\n return distance <= radius;\n });\n }\n\n parse2DCode(code: string): UI2DNode | null {\n return this.parser2D.parse2DElement(code);\n }\n\n get2DParser(): HoloScript2DParser {\n return this.parser2D;\n }\n}\n","/**\n * @holoscript/core\n *\n * Core HoloScript language - parser, runtime, and AST types.\n *\n * HoloScript is an open source VR scene description language that supports:\n * - Voice commands for 3D object creation\n * - Gesture input parsing\n * - 2D UI element definition\n * - Spatial programming concepts\n *\n * @example\n * ```typescript\n * import { HoloScriptParser, HoloScriptRuntime } from '@holoscript/core';\n *\n * const parser = new HoloScriptParser();\n * const runtime = new HoloScriptRuntime();\n *\n * // Parse a voice command\n * const nodes = parser.parseVoiceCommand({\n * command: 'create orb myOrb',\n * confidence: 0.95,\n * timestamp: Date.now()\n * });\n *\n * // Execute the AST\n * const results = await runtime.executeProgram(nodes);\n * ```\n *\n * @packageDocumentation\n */\n\n// Import for use in utility functions\nimport { HoloScriptParser } from './HoloScriptParser';\nimport { HoloScriptRuntime } from './HoloScriptRuntime';\n\n// Parser\nexport { HoloScriptParser } from './HoloScriptParser';\nexport { HoloScript2DParser } from './HoloScript2DParser';\nexport { HoloScriptCodeParser, type ParseResult, type ParseError } from './HoloScriptCodeParser';\n\n// Runtime\nexport { HoloScriptRuntime } from './HoloScriptRuntime';\n\n// Type Checker\nexport {\n HoloScriptTypeChecker,\n createTypeChecker,\n type TypeCheckResult,\n type TypeInfo,\n type TypeDiagnostic,\n} from './HoloScriptTypeChecker';\n\n// Debugger\nexport {\n HoloScriptDebugger,\n createDebugger,\n type Breakpoint,\n type StackFrame,\n type DebugState,\n type DebugEvent,\n type StepMode,\n} from './HoloScriptDebugger';\n\n// Logger\nexport {\n logger,\n setHoloScriptLogger,\n enableConsoleLogging,\n resetLogger,\n NoOpLogger,\n ConsoleLogger,\n type HoloScriptLogger,\n} from './logger';\n\n// Types\nexport type {\n // Spatial\n SpatialPosition,\n Position2D,\n Size2D,\n\n // Hologram\n HologramShape,\n HologramProperties,\n\n // Input\n VoiceCommand,\n GestureType,\n HandType,\n GestureData,\n\n // AST Nodes\n ASTNode,\n OrbNode,\n MethodNode,\n ParameterNode,\n ConnectionNode,\n GateNode,\n StreamNode,\n TransformationNode,\n GenericASTNode,\n\n // Phase 2: Loop Nodes\n ForLoopNode,\n WhileLoopNode,\n ForEachLoopNode,\n\n // Phase 2: Module Nodes\n ImportNode,\n ExportNode,\n\n // Phase 2: Variable Nodes\n VariableDeclarationNode,\n\n // Phase B: Data Cell Nodes\n DataCellType,\n DataCellStyle,\n DataCellNode,\n DataZoneNode,\n\n // 2D UI\n UIElementType,\n UI2DNode,\n UIStyle,\n\n // Runtime\n RuntimeContext,\n ExecutionResult,\n ParticleSystem,\n\n // Config\n SecurityConfig,\n RuntimeSecurityLimits,\n} from './types';\n\n// Version\nexport const HOLOSCRIPT_VERSION = '1.0.0-alpha.1';\n\n// Supported Platforms\nexport const HOLOSCRIPT_SUPPORTED_PLATFORMS = [\n 'WebXR',\n 'Oculus Quest',\n 'HTC Vive',\n 'Valve Index',\n 'Apple Vision Pro',\n 'Windows Mixed Reality',\n] as const;\n\n// Voice Commands Reference\nexport const HOLOSCRIPT_VOICE_COMMANDS = [\n // 3D VR Commands\n 'create orb [name]',\n 'summon function [name]',\n 'connect [from] to [to]',\n 'execute [function]',\n 'debug program',\n 'visualize [data]',\n 'gate [condition]',\n 'stream [source] through [transformations]',\n // 2D UI Commands\n 'create button [name]',\n 'add textinput [name]',\n 'create panel [name]',\n 'add slider [name]',\n] as const;\n\n// Gesture Reference\nexport const HOLOSCRIPT_GESTURES = [\n 'pinch - create object',\n 'swipe - connect objects',\n 'rotate - modify properties',\n 'grab - select object',\n 'spread - expand view',\n 'fist - execute action',\n] as const;\n\n// Demo Scripts\nexport const HOLOSCRIPT_DEMO_SCRIPTS = {\n helloWorld: `orb greeting {\n message: \"Hello, HoloScript World!\"\n color: \"#00ffff\"\n glow: true\n}\n\nfunction displayGreeting() {\n show greeting\n}`,\n\n aiAgent: `orb agentCore {\n personality: \"helpful\"\n capabilities: [\"conversation\", \"problem_solving\", \"learning\"]\n energy: 100\n}\n\nfunction processQuery(query: string): string {\n analyze query\n generate response\n return response\n}`,\n\n neuralNetwork: `orb inputLayer { neurons: 784 }\norb hiddenLayer { neurons: 128 }\norb outputLayer { neurons: 10 }\n\nconnect inputLayer to hiddenLayer as \"weights\"\nconnect hiddenLayer to outputLayer as \"weights\"\n\nfunction trainNetwork(data: array): object {\n forward_pass data\n calculate_loss\n backward_pass\n update_weights\n return metrics\n}`,\n\n loginForm: `button loginBtn {\n text: \"Login\"\n x: 100\n y: 150\n width: 200\n height: 40\n onClick: handleLogin\n}\n\ntextinput usernameInput {\n placeholder: \"Username\"\n x: 100\n y: 50\n width: 200\n height: 36\n}\n\ntextinput passwordInput {\n placeholder: \"Password\"\n x: 100\n y: 100\n width: 200\n height: 36\n}`,\n\n dashboard: `panel sidebar {\n x: 0\n y: 0\n width: 200\n height: 600\n backgroundColor: \"#2c3e50\"\n}\n\ntext title {\n content: \"Dashboard\"\n x: 220\n y: 20\n fontSize: 24\n color: \"#34495e\"\n}\n\nbutton refreshBtn {\n text: \"Refresh Data\"\n x: 220\n y: 60\n onClick: refreshData\n}`,\n} as const;\n\n// Utility Functions\n\n/**\n * Create a pre-configured HoloScript environment\n */\nexport function createHoloScriptEnvironment() {\n return {\n parser: new HoloScriptParser(),\n runtime: new HoloScriptRuntime(),\n version: HOLOSCRIPT_VERSION,\n };\n}\n\n/**\n * Check if the current environment supports VR/XR\n */\nexport function isHoloScriptSupported(): boolean {\n if (typeof globalThis === 'undefined') return false;\n const win = globalThis as { window?: { navigator?: { xr?: unknown; getVRDisplays?: unknown }; webkitGetUserMedia?: unknown } };\n if (!win.window) return false;\n\n return !!(\n win.window.navigator?.xr ||\n win.window.navigator?.getVRDisplays ||\n win.window.webkitGetUserMedia\n );\n}\n"]}
package/dist/parser.cjs DELETED
@@ -1,13 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkXRYTSQHZ_cjs = require('./chunk-XRYTSQHZ.cjs');
4
- require('./chunk-3X2EGU7Z.cjs');
5
-
6
-
7
-
8
- Object.defineProperty(exports, "HoloScriptCodeParser", {
9
- enumerable: true,
10
- get: function () { return chunkXRYTSQHZ_cjs.HoloScriptCodeParser; }
11
- });
12
- //# sourceMappingURL=parser.cjs.map
13
- //# sourceMappingURL=parser.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"parser.cjs"}
package/dist/parser.d.cts DELETED
@@ -1,154 +0,0 @@
1
- import { A as ASTNode } from './types-WQSk1Qs2.cjs';
2
-
3
- /**
4
- * HoloScript Code Parser
5
- *
6
- * Parses HoloScript code strings into AST nodes that can be executed
7
- * by the HoloScriptRuntime.
8
- *
9
- * Syntax Reference:
10
- * - orb <name> { properties }
11
- * - function <name>(<params>): <return> { body }
12
- * - connect <from> to <to> [as <type>]
13
- * - gate <name> { condition, true_path, false_path }
14
- * - stream <name> from <source> { transformations }
15
- */
16
-
17
- interface ParseResult {
18
- success: boolean;
19
- ast: ASTNode[];
20
- errors: ParseError[];
21
- warnings: string[];
22
- }
23
- interface ParseError {
24
- line: number;
25
- column: number;
26
- message: string;
27
- }
28
- declare class HoloScriptCodeParser {
29
- private errors;
30
- private warnings;
31
- private tokens;
32
- private position;
33
- /**
34
- * Parse HoloScript code string into AST
35
- */
36
- parse(code: string): ParseResult;
37
- /**
38
- * Tokenize code into tokens
39
- */
40
- private tokenize;
41
- /**
42
- * Parse program (list of declarations)
43
- */
44
- private parseProgram;
45
- /**
46
- * Parse a single declaration
47
- */
48
- private parseDeclaration;
49
- /**
50
- * Parse for loop: for (init; condition; update) { body }
51
- */
52
- private parseForLoop;
53
- /**
54
- * Parse while loop: while (condition) { body }
55
- */
56
- private parseWhileLoop;
57
- /**
58
- * Parse forEach loop: forEach item in collection { body }
59
- */
60
- private parseForEachLoop;
61
- /**
62
- * Parse import: import { x, y } from "module"
63
- */
64
- private parseImport;
65
- /**
66
- * Parse export: export { x, y } or export function/orb
67
- */
68
- private parseExport;
69
- /**
70
- * Parse variable declaration: const/let/var name = value
71
- */
72
- private parseVariableDeclaration;
73
- /**
74
- * Parse data_cell declaration
75
- *
76
- * Syntax:
77
- * data_cell {
78
- * type: "metric"
79
- * data_source: "/api/cpu"
80
- * refresh: 5s
81
- * position_offset: [0, 1, 0]
82
- * props: {
83
- * label: "CPU Usage"
84
- * style: { color: "#00ffff", glow: 0.5 }
85
- * }
86
- * }
87
- */
88
- private parseDataCell;
89
- /**
90
- * Parse data_zone declaration containing multiple data_cells
91
- *
92
- * Syntax:
93
- * data_zone bridge_metrics {
94
- * position: [0, 2, 0]
95
- * orientation: face_captain
96
- *
97
- * data_cell { ... }
98
- * data_cell { ... }
99
- * }
100
- */
101
- private parseDataZone;
102
- /**
103
- * Parse orb declaration
104
- */
105
- private parseOrb;
106
- /**
107
- * Parse function declaration
108
- */
109
- private parseFunction;
110
- /**
111
- * Parse connection
112
- */
113
- private parseConnection;
114
- /**
115
- * Parse gate (conditional)
116
- */
117
- private parseGate;
118
- /**
119
- * Parse stream
120
- */
121
- private parseStream;
122
- /**
123
- * Parse nexus (multi-agent hub)
124
- */
125
- private parseNexus;
126
- /**
127
- * Parse building (class-like)
128
- */
129
- private parseBuilding;
130
- /**
131
- * Parse a property (key: value)
132
- */
133
- private parseProperty;
134
- /**
135
- * Parse array [...]
136
- */
137
- private parseArray;
138
- /**
139
- * Parse object {...}
140
- */
141
- private parseObject;
142
- /**
143
- * Parse position from value
144
- */
145
- private parsePosition;
146
- private currentToken;
147
- private advance;
148
- private check;
149
- private expect;
150
- private expectIdentifier;
151
- private skipNewlines;
152
- }
153
-
154
- export { HoloScriptCodeParser, type ParseError, type ParseResult };
package/dist/parser.d.ts DELETED
@@ -1,154 +0,0 @@
1
- import { A as ASTNode } from './types-WQSk1Qs2.js';
2
-
3
- /**
4
- * HoloScript Code Parser
5
- *
6
- * Parses HoloScript code strings into AST nodes that can be executed
7
- * by the HoloScriptRuntime.
8
- *
9
- * Syntax Reference:
10
- * - orb <name> { properties }
11
- * - function <name>(<params>): <return> { body }
12
- * - connect <from> to <to> [as <type>]
13
- * - gate <name> { condition, true_path, false_path }
14
- * - stream <name> from <source> { transformations }
15
- */
16
-
17
- interface ParseResult {
18
- success: boolean;
19
- ast: ASTNode[];
20
- errors: ParseError[];
21
- warnings: string[];
22
- }
23
- interface ParseError {
24
- line: number;
25
- column: number;
26
- message: string;
27
- }
28
- declare class HoloScriptCodeParser {
29
- private errors;
30
- private warnings;
31
- private tokens;
32
- private position;
33
- /**
34
- * Parse HoloScript code string into AST
35
- */
36
- parse(code: string): ParseResult;
37
- /**
38
- * Tokenize code into tokens
39
- */
40
- private tokenize;
41
- /**
42
- * Parse program (list of declarations)
43
- */
44
- private parseProgram;
45
- /**
46
- * Parse a single declaration
47
- */
48
- private parseDeclaration;
49
- /**
50
- * Parse for loop: for (init; condition; update) { body }
51
- */
52
- private parseForLoop;
53
- /**
54
- * Parse while loop: while (condition) { body }
55
- */
56
- private parseWhileLoop;
57
- /**
58
- * Parse forEach loop: forEach item in collection { body }
59
- */
60
- private parseForEachLoop;
61
- /**
62
- * Parse import: import { x, y } from "module"
63
- */
64
- private parseImport;
65
- /**
66
- * Parse export: export { x, y } or export function/orb
67
- */
68
- private parseExport;
69
- /**
70
- * Parse variable declaration: const/let/var name = value
71
- */
72
- private parseVariableDeclaration;
73
- /**
74
- * Parse data_cell declaration
75
- *
76
- * Syntax:
77
- * data_cell {
78
- * type: "metric"
79
- * data_source: "/api/cpu"
80
- * refresh: 5s
81
- * position_offset: [0, 1, 0]
82
- * props: {
83
- * label: "CPU Usage"
84
- * style: { color: "#00ffff", glow: 0.5 }
85
- * }
86
- * }
87
- */
88
- private parseDataCell;
89
- /**
90
- * Parse data_zone declaration containing multiple data_cells
91
- *
92
- * Syntax:
93
- * data_zone bridge_metrics {
94
- * position: [0, 2, 0]
95
- * orientation: face_captain
96
- *
97
- * data_cell { ... }
98
- * data_cell { ... }
99
- * }
100
- */
101
- private parseDataZone;
102
- /**
103
- * Parse orb declaration
104
- */
105
- private parseOrb;
106
- /**
107
- * Parse function declaration
108
- */
109
- private parseFunction;
110
- /**
111
- * Parse connection
112
- */
113
- private parseConnection;
114
- /**
115
- * Parse gate (conditional)
116
- */
117
- private parseGate;
118
- /**
119
- * Parse stream
120
- */
121
- private parseStream;
122
- /**
123
- * Parse nexus (multi-agent hub)
124
- */
125
- private parseNexus;
126
- /**
127
- * Parse building (class-like)
128
- */
129
- private parseBuilding;
130
- /**
131
- * Parse a property (key: value)
132
- */
133
- private parseProperty;
134
- /**
135
- * Parse array [...]
136
- */
137
- private parseArray;
138
- /**
139
- * Parse object {...}
140
- */
141
- private parseObject;
142
- /**
143
- * Parse position from value
144
- */
145
- private parsePosition;
146
- private currentToken;
147
- private advance;
148
- private check;
149
- private expect;
150
- private expectIdentifier;
151
- private skipNewlines;
152
- }
153
-
154
- export { HoloScriptCodeParser, type ParseError, type ParseResult };
package/dist/parser.js DELETED
@@ -1,4 +0,0 @@
1
- export { HoloScriptCodeParser } from './chunk-723TPVHD.js';
2
- import './chunk-SATNCODL.js';
3
- //# sourceMappingURL=parser.js.map
4
- //# sourceMappingURL=parser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"parser.js"}
package/dist/runtime.cjs DELETED
@@ -1,13 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkVV3UUUYP_cjs = require('./chunk-VV3UUUYP.cjs');
4
- require('./chunk-3X2EGU7Z.cjs');
5
-
6
-
7
-
8
- Object.defineProperty(exports, "HoloScriptRuntime", {
9
- enumerable: true,
10
- get: function () { return chunkVV3UUUYP_cjs.HoloScriptRuntime; }
11
- });
12
- //# sourceMappingURL=runtime.cjs.map
13
- //# sourceMappingURL=runtime.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"runtime.cjs"}
@@ -1,147 +0,0 @@
1
- import { A as ASTNode, p as ExecutionResult, q as ParticleSystem, R as RuntimeContext, b as HologramProperties } from './types-WQSk1Qs2.cjs';
2
-
3
- /**
4
- * HoloScript Runtime Engine
5
- *
6
- * Executes HoloScript AST in VR environment with spatial computation.
7
- * Supports:
8
- * - Orb creation and manipulation
9
- * - Function definition and invocation with arguments
10
- * - Connections and reactive data flow
11
- * - Gates (conditionals)
12
- * - Streams (data pipelines)
13
- * - 2D UI elements
14
- * - Built-in commands (show, hide, animate, pulse)
15
- * - Expression evaluation
16
- * - Event system
17
- */
18
-
19
- /**
20
- * Event handler type
21
- */
22
- type EventHandler = (data?: unknown) => void | Promise<void>;
23
- /**
24
- * Animation state
25
- */
26
- interface Animation {
27
- target: string;
28
- property: string;
29
- from: number;
30
- to: number;
31
- duration: number;
32
- startTime: number;
33
- easing: string;
34
- loop?: boolean;
35
- yoyo?: boolean;
36
- }
37
- /**
38
- * UI Element state
39
- */
40
- interface UIElementState {
41
- type: string;
42
- name: string;
43
- properties: Record<string, unknown>;
44
- value?: unknown;
45
- visible: boolean;
46
- enabled: boolean;
47
- }
48
- declare class HoloScriptRuntime {
49
- private context;
50
- private particleSystems;
51
- private executionHistory;
52
- private startTime;
53
- private nodeCount;
54
- private currentScope;
55
- private callStack;
56
- private eventHandlers;
57
- private animations;
58
- private uiElements;
59
- private builtinFunctions;
60
- constructor();
61
- /**
62
- * Initialize built-in functions
63
- */
64
- private initBuiltins;
65
- /**
66
- * Execute a single AST node
67
- */
68
- executeNode(node: ASTNode): Promise<ExecutionResult>;
69
- /**
70
- * Execute multiple nodes in sequence
71
- */
72
- executeProgram(nodes: ASTNode[], depth?: number): Promise<ExecutionResult[]>;
73
- /**
74
- * Call a function with arguments
75
- */
76
- callFunction(name: string, args?: unknown[]): Promise<ExecutionResult>;
77
- /**
78
- * Set a variable in current scope
79
- */
80
- setVariable(name: string, value: unknown): void;
81
- /**
82
- * Get a variable from scope chain
83
- */
84
- getVariable(name: string): unknown;
85
- /**
86
- * Evaluate an expression
87
- */
88
- evaluateExpression(expr: string): unknown;
89
- /**
90
- * Split string by comma, respecting nesting
91
- */
92
- private splitByComma;
93
- private executeOrb;
94
- private executeFunction;
95
- private executeConnection;
96
- private executeGate;
97
- private executeStream;
98
- private executeCall;
99
- private executeDebug;
100
- private executeVisualize;
101
- private executeUIElement;
102
- private executeStructure;
103
- private executeAssignment;
104
- private executeReturn;
105
- private evaluateCondition;
106
- private applyTransformation;
107
- /**
108
- * Register event handler
109
- */
110
- on(event: string, handler: EventHandler): void;
111
- /**
112
- * Remove event handler
113
- */
114
- off(event: string, handler?: EventHandler): void;
115
- /**
116
- * Emit event
117
- */
118
- emit(event: string, data?: unknown): Promise<void>;
119
- /**
120
- * Trigger UI event
121
- */
122
- triggerUIEvent(elementName: string, eventType: string, data?: unknown): Promise<void>;
123
- /**
124
- * Update all animations
125
- */
126
- updateAnimations(): void;
127
- private applyEasing;
128
- private createParticleEffect;
129
- private createConnectionStream;
130
- private createFlowingStream;
131
- private createExecutionEffect;
132
- private createDataVisualization;
133
- private getDataTypeColor;
134
- getParticleSystems(): Map<string, ParticleSystem>;
135
- updateParticles(deltaTime: number): void;
136
- getContext(): RuntimeContext;
137
- getUIElements(): Map<string, UIElementState>;
138
- getUIElement(name: string): UIElementState | undefined;
139
- getAnimations(): Map<string, Animation>;
140
- reset(): void;
141
- private createEmptyContext;
142
- getExecutionHistory(): ExecutionResult[];
143
- getHologramStates(): Map<string, HologramProperties>;
144
- getCallStack(): string[];
145
- }
146
-
147
- export { HoloScriptRuntime };