@holoscript/core 2.0.2 → 2.1.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 (54) hide show
  1. package/dist/{chunk-KWYIVRIH.js → chunk-2XXE34KS.js} +2 -2
  2. package/dist/chunk-2XXE34KS.js.map +1 -0
  3. package/dist/{chunk-EU6CZMGJ.js → chunk-AFFVFO4D.js} +511 -118
  4. package/dist/chunk-AFFVFO4D.js.map +1 -0
  5. package/dist/chunk-DGUM43GV.js +10 -0
  6. package/dist/{chunk-4CV4JOE5.js.map → chunk-DGUM43GV.js.map} +1 -1
  7. package/dist/{chunk-VYIDLUCV.js → chunk-DOY73HDH.js} +4 -4
  8. package/dist/{chunk-VYIDLUCV.js.map → chunk-DOY73HDH.js.map} +1 -1
  9. package/dist/chunk-JEQ2X3Z6.cjs +12 -0
  10. package/dist/{chunk-CZLDE2OZ.cjs.map → chunk-JEQ2X3Z6.cjs.map} +1 -1
  11. package/dist/{chunk-3N67RLQP.cjs → chunk-L6VLNVKP.cjs} +511 -118
  12. package/dist/chunk-L6VLNVKP.cjs.map +1 -0
  13. package/dist/{chunk-VMZN4EVR.cjs → chunk-MFNO57XL.cjs} +2 -2
  14. package/dist/chunk-MFNO57XL.cjs.map +1 -0
  15. package/dist/{chunk-WFI4T3XB.cjs → chunk-R75MREOS.cjs} +6 -6
  16. package/dist/{chunk-WFI4T3XB.cjs.map → chunk-R75MREOS.cjs.map} +1 -1
  17. package/dist/{chunk-4OHVW4XR.cjs → chunk-T57ZL7KR.cjs} +299 -45
  18. package/dist/chunk-T57ZL7KR.cjs.map +1 -0
  19. package/dist/{chunk-MCP6D4LT.js → chunk-U72GEJZT.js} +299 -45
  20. package/dist/chunk-U72GEJZT.js.map +1 -0
  21. package/dist/debugger.cjs +6 -6
  22. package/dist/debugger.d.cts +1 -1
  23. package/dist/debugger.d.ts +1 -1
  24. package/dist/debugger.js +4 -4
  25. package/dist/index.cjs +1896 -1099
  26. package/dist/index.cjs.map +1 -1
  27. package/dist/index.d.cts +3145 -1534
  28. package/dist/index.d.ts +3145 -1534
  29. package/dist/index.js +1922 -1133
  30. package/dist/index.js.map +1 -1
  31. package/dist/parser.cjs +3 -3
  32. package/dist/parser.d.cts +34 -1
  33. package/dist/parser.d.ts +34 -1
  34. package/dist/parser.js +2 -2
  35. package/dist/runtime.cjs +3 -3
  36. package/dist/runtime.d.cts +47 -27
  37. package/dist/runtime.d.ts +47 -27
  38. package/dist/runtime.js +2 -2
  39. package/dist/type-checker.cjs +4 -4
  40. package/dist/type-checker.d.cts +3 -3
  41. package/dist/type-checker.d.ts +3 -3
  42. package/dist/type-checker.js +2 -2
  43. package/dist/{types-D6g4ACjP.d.cts → types-4h8cbtF_.d.cts} +80 -13
  44. package/dist/{types-D6g4ACjP.d.ts → types-4h8cbtF_.d.ts} +80 -13
  45. package/package.json +21 -20
  46. package/LICENSE +0 -21
  47. package/dist/chunk-3N67RLQP.cjs.map +0 -1
  48. package/dist/chunk-4CV4JOE5.js +0 -24
  49. package/dist/chunk-4OHVW4XR.cjs.map +0 -1
  50. package/dist/chunk-CZLDE2OZ.cjs +0 -28
  51. package/dist/chunk-EU6CZMGJ.js.map +0 -1
  52. package/dist/chunk-KWYIVRIH.js.map +0 -1
  53. package/dist/chunk-MCP6D4LT.js.map +0 -1
  54. package/dist/chunk-VMZN4EVR.cjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ReactiveState.ts","../src/HoloScriptRuntime.ts"],"names":["logger"],"mappings":"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","file":"chunk-L6VLNVKP.cjs","sourcesContent":["/**\r\n * Reactive State System for HoloScript\r\n */\r\n\r\nimport type { HoloScriptValue, ReactiveState as IReactiveState } from './types';\r\n\r\nexport class ReactiveState implements IReactiveState {\r\n private state: Record<string, HoloScriptValue>;\r\n private proxy: Record<string, HoloScriptValue>;\r\n private subscribers: Set<(state: Record<string, HoloScriptValue>) => void> = new Set();\r\n\r\n constructor(initialState: Record<string, HoloScriptValue> = {}) {\r\n this.state = { ...initialState };\r\n this.proxy = this.createReactiveProxy(this.state);\r\n }\r\n\r\n private createReactiveProxy(target: any): any {\r\n const self = this;\r\n return new Proxy(target, {\r\n get(obj, key) {\r\n const val = obj[key];\r\n if (val && typeof val === 'object' && !Array.isArray(val)) {\r\n return self.createReactiveProxy(val);\r\n }\r\n return val;\r\n },\r\n set(obj, key, value) {\r\n const oldVal = obj[key];\r\n obj[key] = value;\r\n if (oldVal !== value) {\r\n self.notify();\r\n }\r\n return true;\r\n }\r\n });\r\n }\r\n\r\n get(key: string): HoloScriptValue {\r\n return this.proxy[key];\r\n }\r\n\r\n set(key: string, value: HoloScriptValue): void {\r\n this.proxy[key] = value;\r\n }\r\n\r\n update(updates: Record<string, HoloScriptValue>): void {\r\n Object.assign(this.proxy, updates);\r\n }\r\n\r\n subscribe(callback: (state: Record<string, HoloScriptValue>) => void): () => void {\r\n this.subscribers.add(callback);\r\n return () => this.subscribers.delete(callback);\r\n }\r\n\r\n getSnapshot(): Record<string, HoloScriptValue> {\r\n return { ...this.state };\r\n }\r\n\r\n private notify() {\r\n this.subscribers.forEach(cb => cb(this.getSnapshot()));\r\n }\r\n}\r\n\r\nexport class ExpressionEvaluator {\r\n private context: Record<string, unknown>;\r\n\r\n constructor(context: Record<string, unknown> = {}) {\r\n this.context = context;\r\n }\r\n\r\n evaluate(expression: string): any {\r\n if (typeof expression !== 'string') return expression;\r\n\r\n // Security: Block dangerous keywords\r\n const dangerousPatterns = [\r\n /\\beval\\s*\\(/,\r\n /\\brequire\\s*\\(/,\r\n /\\bimport\\s*\\(/,\r\n /\\bprocess\\s*\\./,\r\n /\\bglobal\\s*\\./,\r\n /\\b__dirname\\b/,\r\n /\\b__filename\\b/,\r\n /\\bfs\\s*\\./,\r\n /\\bchild_process\\s*\\./,\r\n /\\bfs\\.writeFileSync/,\r\n /\\bfs\\.readFileSync/,\r\n ];\r\n\r\n for (const pattern of dangerousPatterns) {\r\n if (pattern.test(expression)) {\r\n console.warn(`Security: Blocked suspicious expression: ${expression}`);\r\n return undefined;\r\n }\r\n }\r\n\r\n // If it's a template string with ${}, we need to interpolate\r\n if (expression.includes('${')) {\r\n // Special case: if the whole string is just one interpolation, return raw value\r\n // Use trim() to allow spaces like \" ${ count } \"\r\n const trimmed = expression.trim();\r\n const match = trimmed.match(/^\\$\\{([^}]+)\\}$/);\r\n if (match) {\r\n return this.evaluate(match[1]);\r\n }\r\n return this.interpolate(expression);\r\n }\r\n\r\n const keys = Object.keys(this.context);\r\n const values = Object.values(this.context);\r\n \r\n try {\r\n const fn = new Function(...keys, `return (${expression})`);\r\n return fn(...values);\r\n } catch (e) {\r\n // If it's just a string not an expression, return as is\r\n return expression;\r\n }\r\n }\r\n\r\n private interpolate(str: string): string {\r\n return str.replace(/\\$\\{([^}]+)\\}/g, (_, expr) => {\r\n const val = this.evaluate(expr);\r\n return val !== undefined ? String(val) : '';\r\n });\r\n }\r\n\r\n updateContext(updates: Record<string, unknown>): void {\r\n Object.assign(this.context, updates);\r\n }\r\n\r\n setContext(context: Record<string, unknown>): void {\r\n this.context = { ...context };\r\n }\r\n}\r\n\r\nexport function createState(initial: Record<string, HoloScriptValue> = {}): ReactiveState {\r\n return new ReactiveState(initial);\r\n}\r\n","/**\n * HoloScript Runtime Engine\n *\n * Executes HoloScript AST in VR environment with spatial computation.\n * Supports:\n * - Orb creation and manipulation\n * - Function definition and invocation with arguments\n * - Connections and reactive data flow\n * - Gates (conditionals)\n * - Streams (data pipelines)\n * - 2D UI elements\n * - Built-in commands (show, hide, animate, pulse)\n * - Expression evaluation\n * - Event system\n */\n\nimport { logger } from './logger';\nimport { ExpressionEvaluator, createState } from './ReactiveState';\nimport type {\n ASTNode,\n OrbNode,\n MethodNode,\n ConnectionNode,\n GateNode,\n StreamNode,\n SpatialPosition,\n HologramProperties,\n HologramShape,\n RuntimeContext,\n ExecutionResult,\n ParticleSystem,\n TransformationNode,\n Animation,\n UI2DNode,\n ScaleNode,\n FocusNode,\n EnvironmentNode,\n CompositionNode,\n TemplateNode,\n HoloScriptValue,\n ServerNode,\n DatabaseNode,\n FetchNode,\n ExecuteNode,\n} from './types';\nimport type { ImportLoader } from './types';\n\nconst RUNTIME_SECURITY_LIMITS = {\n maxExecutionDepth: 50,\n maxTotalNodes: 1000,\n maxExecutionTimeMs: 5000,\n maxParticlesPerSystem: 1000,\n maxStringLength: 10000,\n maxCallStackDepth: 100,\n};\n\n/**\n * Event handler type\n */\ntype EventHandler = (data?: HoloScriptValue) => void | Promise<void>;\n\n/**\n * Scope for variable resolution\n */\ninterface Scope {\n variables: Map<string, HoloScriptValue>;\n parent?: Scope;\n}\n\n\n/**\n * UI Element state\n */\ninterface UIElementState {\n type: string;\n name: string;\n properties: Record<string, HoloScriptValue>;\n value?: HoloScriptValue;\n visible: boolean;\n enabled: boolean;\n}\n\nexport class HoloScriptRuntime {\n private context: RuntimeContext;\n private particleSystems: Map<string, ParticleSystem> = new Map();\n private executionHistory: ExecutionResult[] = [];\n private startTime: number = 0;\n private nodeCount: number = 0;\n\n // Enhanced runtime state\n private currentScope: Scope;\n private callStack: string[] = [];\n private eventHandlers: Map<string, EventHandler[]> = new Map();\n private animations: Map<string, Animation> = new Map();\n private uiElements: Map<string, UIElementState> = new Map();\n private builtinFunctions: Map<string, (args: HoloScriptValue[]) => HoloScriptValue>;\n\n constructor(_importLoader?: ImportLoader, customFunctions?: Record<string, (args: HoloScriptValue[]) => HoloScriptValue>) {\n this.context = this.createEmptyContext();\n this.currentScope = { variables: this.context.variables };\n this.builtinFunctions = this.initBuiltins(customFunctions);\n }\n\n /**\n * Initialize built-in functions\n */\n private initBuiltins(customFunctions?: Record<string, (args: HoloScriptValue[]) => HoloScriptValue>): Map<string, (args: HoloScriptValue[]) => HoloScriptValue> {\n const builtins = new Map<string, (args: HoloScriptValue[]) => HoloScriptValue>();\n \n // Inject Custom Functions\n if (customFunctions) {\n for (const [name, func] of Object.entries(customFunctions)) {\n builtins.set(name, func);\n }\n }\n\n // Display commands\n builtins.set('show', (args) => {\n const target = String(args[0]);\n const element = this.uiElements.get(target);\n if (element) element.visible = true;\n const hologram = this.context.hologramState.get(target);\n if (hologram) {\n this.createParticleEffect(`${target}_show`, { x: 0, y: 0, z: 0 }, hologram.color, 15);\n }\n logger.info('show', { target });\n return { shown: target };\n });\n\n builtins.set('hide', (args) => {\n const target = String(args[0]);\n const element = this.uiElements.get(target);\n if (element) element.visible = false;\n logger.info('hide', { target });\n return { hidden: target };\n });\n\n // Animation commands\n builtins.set('pulsate', (args): any => {\n const target = String(args[0]);\n const options = (args[1] as any) || {};\n const duration = Number(options.duration) || 1000;\n const color = String(options.color || '#ffffff');\n\n const position = this.context.spatialMemory.get(target) || { x: 0, y: 0, z: 0 };\n this.createParticleEffect(`${target}_pulse`, position, color, 30);\n\n return { pulsing: target, duration };\n });\n\n builtins.set('animate', (args): any => {\n const target = String(args[0]);\n const options = (args[1] as any) || {};\n\n const animation: any = {\n target,\n property: String(options.property || 'position.y'),\n from: Number(options.from || 0),\n to: Number(options.to || 1),\n duration: Number(options.duration || 1000),\n startTime: Date.now(),\n easing: String(options.easing || 'linear'),\n loop: Boolean(options.loop),\n yoyo: Boolean(options.yoyo),\n };\n\n this.animations.set(`${target}_${animation.property}`, animation);\n return { animating: target, animation };\n });\n\n // Spatial commands\n builtins.set('spawn', (args): any => {\n const target = String(args[0]);\n const position: any = (args[1] as any) || { x: 0, y: 0, z: 0 };\n\n this.context.spatialMemory.set(target, position);\n this.createParticleEffect(`${target}_spawn`, position, '#00ff00', 25);\n\n return { spawned: target, at: position };\n });\n\n builtins.set('move', (args): any => {\n const target = String(args[0]);\n const position: any = (args[1] as any) || { x: 0, y: 0, z: 0 };\n\n const current = this.context.spatialMemory.get(target);\n if (current) {\n this.context.spatialMemory.set(target, position);\n this.createConnectionStream(target, `${target}_dest`, current, position, 'move');\n }\n\n return { moved: target, to: position };\n });\n\n // Data commands\n builtins.set('set', (args): any => {\n const target = String(args[0]);\n const value = args[1];\n this.setVariable(target, value);\n return { set: target, value };\n });\n\n builtins.set('get', (args): any => {\n const target = String(args[0]);\n return this.getVariable(target);\n });\n\n // Math functions\n builtins.set('add', (args): any => Number(args[0]) + Number(args[1]));\n builtins.set('subtract', (args): any => Number(args[0]) - Number(args[1]));\n builtins.set('multiply', (args): any => Number(args[0]) * Number(args[1]));\n builtins.set('divide', (args): any => Number(args[1]) !== 0 ? Number(args[0]) / Number(args[1]) : 0);\n builtins.set('mod', (args): any => Number(args[0]) % Number(args[1]));\n builtins.set('abs', (args): any => Math.abs(Number(args[0])));\n builtins.set('floor', (args): any => Math.floor(Number(args[0])));\n builtins.set('ceil', (args): any => Math.ceil(Number(args[0])));\n builtins.set('round', (args): any => Math.round(Number(args[0])));\n builtins.set('min', (args): any => Math.min(...args.map(Number)));\n builtins.set('max', (args): any => Math.max(...args.map(Number)));\n builtins.set('random', (): any => Math.random());\n\n // String functions\n builtins.set('concat', (args): any => args.map(String).join(''));\n builtins.set('length', (args): any => {\n const val = args[0];\n if (typeof val === 'string') return val.length;\n if (Array.isArray(val)) return val.length;\n return 0;\n });\n builtins.set('substring', (args): any => String(args[0]).substring(Number(args[1]), Number(args[2])));\n builtins.set('uppercase', (args): any => String(args[0]).toUpperCase());\n builtins.set('lowercase', (args): any => String(args[0]).toLowerCase());\n\n // Array functions\n builtins.set('push', (args): any => {\n const arr = args[0];\n if (Array.isArray(arr)) {\n arr.push(args[1]);\n return arr;\n }\n return [args[0], args[1]];\n });\n builtins.set('pop', (args): any => {\n const arr = args[0];\n if (Array.isArray(arr)) return arr.pop();\n return undefined;\n });\n builtins.set('at', (args): any => {\n const arr = args[0];\n const index = Number(args[1]);\n if (Array.isArray(arr)) return arr[index];\n return undefined;\n });\n\n builtins.set('showSettings', (): any => {\n this.emit('show-settings');\n return true;\n });\n\n builtins.set('openChat', (args): any => {\n const config = args[0] || {};\n this.emit('show-chat', config);\n return true;\n });\n\n // Console/Debug\n builtins.set('log', (args): any => {\n logger.info('HoloScript log', { args });\n return args[0];\n });\n builtins.set('print', (args): any => {\n const message = args.map(String).join(' ');\n logger.info('print', { message });\n return message;\n });\n\n // Type checking\n builtins.set('typeof', (args): any => typeof args[0]);\n builtins.set('isArray', (args): any => Array.isArray(args[0]));\n builtins.set('isNumber', (args): any => typeof args[0] === 'number' && !isNaN(args[0] as number));\n builtins.set('isString', (args): any => typeof args[0] === 'string');\n\n // New Primitives\n builtins.set('shop', (args) => this.handleShop(args));\n builtins.set('inventory', (args) => this.handleInventory(args));\n builtins.set('purchase', (args) => this.handlePurchase(args));\n builtins.set('presence', (args) => this.handlePresence(args));\n builtins.set('invite', (args) => this.handleInvite(args));\n builtins.set('share', (args) => this.handleShare(args));\n builtins.set('physics', (args) => this.handlePhysics(args));\n builtins.set('gravity', (args) => this.handleGravity(args));\n builtins.set('collide', (args) => this.handleCollide(args));\n builtins.set('animate', (args) => this.handleAnimate(args));\n builtins.set('calculate_arc', (args) => this.handleCalculateArc(args));\n\n return builtins;\n }\n\n /**\n * Execute a single AST node\n */\n async executeNode(node: ASTNode): Promise<ExecutionResult> {\n const startTime = Date.now();\n\n try {\n this.context.executionStack.push(node);\n\n let result: ExecutionResult;\n\n switch (node.type) {\n case 'orb':\n result = await this.executeOrb(node as OrbNode);\n break;\n case 'method':\n case 'function':\n result = await this.executeFunction(node as MethodNode);\n break;\n case 'connection':\n result = await this.executeConnection(node as ConnectionNode);\n break;\n case 'gate':\n result = await this.executeGate(node as GateNode);\n break;\n case 'stream':\n result = await this.executeStream(node as StreamNode);\n break;\n case 'call':\n result = await this.executeCall(node as ASTNode & { target?: string; args?: unknown[] });\n break;\n case 'debug':\n result = await this.executeDebug(node);\n break;\n case 'visualize':\n result = await this.executeVisualize(node);\n break;\n case '2d-element':\n result = await this.executeUIElement(node as unknown as UI2DNode);\n break;\n case 'nexus':\n case 'building':\n result = await this.executeStructure(node);\n break;\n case 'assignment':\n result = await this.executeAssignment(node as ASTNode & { name: string; value: unknown });\n break;\n case 'return':\n result = await this.executeReturn(node as ASTNode & { value: unknown });\n break;\n case 'generic':\n result = await this.executeGeneric(node);\n break;\n case 'expression-statement':\n result = await this.executeCall(node);\n break;\n case 'scale':\n result = await this.executeScale(node as ScaleNode);\n break;\n case 'focus':\n result = await this.executeFocus(node as FocusNode);\n break;\n case 'environment':\n result = await this.executeEnvironment(node as EnvironmentNode);\n break;\n case 'composition':\n result = await this.executeComposition(node as CompositionNode);\n break;\n case 'template':\n result = await this.executeTemplate(node as TemplateNode);\n break;\n case 'server':\n result = await this.executeServerNode(node as ServerNode);\n break;\n case 'database':\n result = await this.executeDatabaseNode(node as DatabaseNode);\n break;\n case 'fetch':\n result = await this.executeFetchNode(node as FetchNode);\n break;\n case 'execute':\n result = await this.executeTarget(node as ExecuteNode);\n break;\n case 'state-declaration':\n result = await this.executeStateDeclaration(node as any);\n break;\n default:\n result = {\n success: false,\n error: `Unknown node type: ${node.type}`,\n executionTime: Date.now() - startTime,\n };\n }\n\n result.executionTime = Date.now() - startTime;\n this.executionHistory.push(result);\n this.context.executionStack.pop();\n\n return result;\n } catch (error) {\n const execTime = Date.now() - startTime;\n const errorResult: ExecutionResult = {\n success: false,\n error: error instanceof Error ? error.message : String(error),\n executionTime: execTime,\n };\n\n this.executionHistory.push(errorResult);\n this.context.executionStack.pop();\n\n return errorResult;\n }\n }\n\n /**\n * Execute multiple nodes or a single node (unified entry point)\n */\n async execute(nodes: ASTNode | ASTNode[]): Promise<ExecutionResult> {\n if (Array.isArray(nodes)) {\n const results = await this.executeProgram(nodes);\n const success = results.every(r => r.success);\n return {\n success,\n output: success ? `Program executed (${results.length} nodes)` : 'Program failed',\n error: results.find(r => !r.success)?.error\n };\n } else {\n return this.executeNode(nodes);\n }\n }\n\n /**\n * Execute multiple nodes in sequence\n */\n async executeProgram(nodes: ASTNode[], depth: number = 0): Promise<ExecutionResult[]> {\n if (depth === 0) {\n this.startTime = Date.now();\n this.nodeCount = 0;\n }\n\n if (depth > RUNTIME_SECURITY_LIMITS.maxExecutionDepth) {\n logger.error('Max execution depth exceeded', { depth });\n return [{\n success: false,\n error: `Max execution depth exceeded (${RUNTIME_SECURITY_LIMITS.maxExecutionDepth})`,\n executionTime: 0,\n }];\n }\n\n const results: ExecutionResult[] = [];\n\n for (const node of nodes) {\n this.nodeCount++;\n if (this.nodeCount > RUNTIME_SECURITY_LIMITS.maxTotalNodes) {\n logger.error('Max total nodes exceeded', { count: this.nodeCount });\n results.push({\n success: false,\n error: 'Max total nodes exceeded',\n executionTime: Date.now() - this.startTime,\n });\n break;\n }\n\n if (Date.now() - this.startTime > RUNTIME_SECURITY_LIMITS.maxExecutionTimeMs) {\n logger.error('Execution timeout', { duration: Date.now() - this.startTime });\n results.push({\n success: false,\n error: 'Execution timeout',\n executionTime: Date.now() - this.startTime,\n });\n break;\n }\n\n const result = await this.executeNode(node);\n results.push(result);\n\n // Stop on error (except visualize) or return statement\n if (!result.success && node.type !== 'visualize') {\n break;\n }\n if (node.type === 'return') {\n break;\n }\n }\n\n return results;\n }\n\n /**\n * Call a function with arguments\n */\n async callFunction(name: string, args: HoloScriptValue[] = []): Promise<ExecutionResult> {\n // Check built-in functions first\n const builtin = this.builtinFunctions.get(name);\n if (builtin) {\n try {\n const result = builtin(args);\n return {\n success: true,\n output: result,\n };\n } catch (error) {\n return {\n success: false,\n error: `Built-in function ${name} failed: ${error}`,\n };\n }\n }\n\n // Check user-defined functions\n const func = this.context.functions.get(name);\n if (!func) {\n return {\n success: false,\n error: `Function '${name}' not found`,\n };\n }\n\n // Check call stack depth\n if (this.callStack.length >= RUNTIME_SECURITY_LIMITS.maxCallStackDepth) {\n return {\n success: false,\n error: `Max call stack depth exceeded (${RUNTIME_SECURITY_LIMITS.maxCallStackDepth})`,\n };\n }\n\n // Create new scope\n const parentScope = this.currentScope;\n this.currentScope = {\n variables: new Map(),\n parent: parentScope,\n };\n\n // Bind parameters\n func.parameters.forEach((param, index) => {\n const value = index < args.length ? args[index] : param.defaultValue;\n this.currentScope.variables.set(param.name, value);\n });\n\n // Push to call stack\n this.callStack.push(name);\n\n // Execute function body\n let returnValue: unknown = undefined;\n try {\n const results = await this.executeProgram(func.body, this.callStack.length);\n const lastResult = results[results.length - 1];\n\n if (lastResult?.output !== undefined) {\n returnValue = lastResult.output;\n }\n\n // Visual effect\n this.createExecutionEffect(name, func.position || { x: 0, y: 0, z: 0 });\n\n return {\n success: results.every(r => r.success),\n output: returnValue as HoloScriptValue,\n hologram: func.hologram,\n spatialPosition: func.position,\n };\n } finally {\n // Restore scope\n this.currentScope = parentScope;\n this.callStack.pop();\n }\n }\n\n /**\n * Set a variable in current scope\n */\n setVariable(name: string, value: HoloScriptValue): void {\n // Handle property access (e.g., \"obj.prop\")\n if (name.includes('.')) {\n const parts = name.split('.');\n const objName = parts[0];\n const propPath = parts.slice(1);\n\n let obj = this.getVariable(objName);\n if (obj === undefined || typeof obj !== 'object' || obj === null) {\n obj = {};\n this.currentScope.variables.set(objName, obj as HoloScriptValue);\n }\n\n let current = obj as Record<string, HoloScriptValue>;\n for (let i = 0; i < propPath.length - 1; i++) {\n if (current[propPath[i]] === undefined || typeof current[propPath[i]] !== 'object') {\n current[propPath[i]] = {};\n }\n current = current[propPath[i]] as Record<string, HoloScriptValue>;\n }\n current[propPath[propPath.length - 1]] = value;\n } else {\n this.currentScope.variables.set(name, value);\n }\n }\n\n /**\n * Get a variable from scope chain\n */\n getVariable(name: string): HoloScriptValue {\n // Handle property access (e.g., \"obj.prop\")\n if (name.includes('.')) {\n const parts = name.split('.');\n let value = this.getVariable(parts[0]);\n\n for (let i = 1; i < parts.length && value !== undefined; i++) {\n if (typeof value === 'object' && value !== null) {\n value = (value as Record<string, HoloScriptValue>)[parts[i]];\n } else {\n return undefined;\n }\n }\n return value;\n }\n\n // Walk scope chain\n let scope: Scope | undefined = this.currentScope;\n while (scope) {\n if (scope.variables.has(name)) {\n return scope.variables.get(name);\n }\n scope = scope.parent;\n }\n\n // Check context variables\n if (this.context.variables.has(name)) {\n return this.context.variables.get(name);\n }\n\n // Fallback to functions map (for imported functions)\n if (this.context.functions.has(name)) {\n return this.context.functions.get(name);\n }\n\n return undefined;\n }\n\n /**\n * Evaluate an expression\n */\n evaluateExpression(expr: string): HoloScriptValue {\n if (!expr || typeof expr !== 'string') return expr;\n\n const evaluator = new ExpressionEvaluator(this.context.state.getSnapshot());\n // Also include currently set variables in context\n const varContext: Record<string, any> = {};\n this.context.variables.forEach((v, k) => varContext[k] = v);\n evaluator.updateContext(varContext);\n\n return evaluator.evaluate(expr);\n }\n\n\n\n // ============================================================================\n // Node Executors\n // ============================================================================\n\n private async executeOrb(node: OrbNode): Promise<ExecutionResult> {\n const scale = this.context.currentScale || 1;\n const adjustedPos = node.position ? {\n x: node.position.x * scale,\n y: node.position.y * scale,\n z: node.position.z * scale\n } : { x: 0, y: 0, z: 0 };\n\n if (node.position) {\n this.context.spatialMemory.set(node.name, adjustedPos);\n }\n\n const hologram = node.hologram ? {\n ...node.hologram,\n size: (node.hologram.size || 1) * scale\n } : undefined;\n\n // Create orb object with reactive properties\n const evaluatedProperties: Record<string, HoloScriptValue> = {};\n for (const [key, val] of Object.entries(node.properties)) {\n if (typeof val === 'string') {\n evaluatedProperties[key] = this.evaluateExpression(val);\n } else {\n evaluatedProperties[key] = val;\n }\n }\n\n const orbData = {\n __type: 'orb',\n name: node.name,\n properties: evaluatedProperties,\n traits: node.directives?.filter(d => d.type === 'trait').map(d => (d as any).name) || [],\n directives: node.directives || [],\n position: adjustedPos,\n hologram: hologram,\n created: Date.now(),\n // Methods bound to this orb\n show: () => this.builtinFunctions.get('show')!([node.name]),\n hide: () => this.builtinFunctions.get('hide')!([node.name]),\n pulse: (opts?: Record<string, unknown>) => this.builtinFunctions.get('pulse')!([node.name, opts]),\n };\n\n this.context.variables.set(node.name, orbData as any);\n\n if (hologram) {\n this.context.hologramState.set(node.name, hologram);\n }\n\n // Apply directives if any\n if (node.directives) {\n this.applyDirectives(node);\n }\n\n this.createParticleEffect(`${node.name}_creation`, adjustedPos, '#00ffff', 20);\n\n logger.info('Orb created', { name: node.name, properties: Object.keys(node.properties), scale });\n\n return {\n success: true,\n output: orbData,\n hologram: hologram,\n spatialPosition: adjustedPos,\n };\n }\n\n private async executeFunction(node: MethodNode): Promise<ExecutionResult> {\n this.context.functions.set(node.name, node);\n\n const hologram: HologramProperties = {\n shape: 'cube',\n color: '#ff6b35',\n size: 1.5,\n glow: true,\n interactive: true,\n ...node.hologram,\n };\n\n this.context.hologramState.set(node.name, hologram);\n\n logger.info('Function defined', { name: node.name, params: node.parameters.map(p => p.name) });\n\n return {\n success: true,\n output: `Function '${node.name}' defined with ${node.parameters.length} parameter(s)`,\n hologram,\n spatialPosition: node.position,\n };\n }\n\n private async executeConnection(node: ConnectionNode): Promise<ExecutionResult> {\n this.context.connections.push(node);\n\n const fromPos = this.context.spatialMemory.get(node.from);\n const toPos = this.context.spatialMemory.get(node.to);\n\n if (fromPos && toPos) {\n this.createConnectionStream(node.from, node.to, fromPos, toPos, node.dataType);\n }\n\n // Set up reactive binding if bidirectional\n if (node.bidirectional) {\n // When 'from' changes, update 'to'\n this.on(`${node.from}.changed`, async (data) => {\n this.setVariable(node.to, data);\n this.emit(`${node.to}.changed`, data);\n });\n // When 'to' changes, update 'from'\n this.on(`${node.to}.changed`, async (data) => {\n this.setVariable(node.from, data);\n this.emit(`${node.from}.changed`, data);\n });\n }\n\n logger.info('Connection created', { from: node.from, to: node.to, dataType: node.dataType });\n\n return {\n success: true,\n output: `Connected '${node.from}' to '${node.to}' (${node.dataType})`,\n hologram: {\n shape: 'cylinder',\n color: this.getDataTypeColor(node.dataType),\n size: 0.1,\n glow: true,\n interactive: false,\n },\n };\n }\n\n private async executeGate(node: GateNode): Promise<ExecutionResult> {\n try {\n const condition = this.evaluateCondition(node.condition);\n const path = condition ? node.truePath : node.falsePath;\n\n logger.info('Gate evaluation', { condition: node.condition, result: condition });\n\n if (path.length > 0) {\n await this.executeProgram(path, this.callStack.length + 1);\n }\n\n return {\n success: true,\n output: `Gate: took ${condition ? 'true' : 'false'} path`,\n hologram: {\n shape: 'pyramid',\n color: condition ? '#00ff00' : '#ff0000',\n size: 1,\n glow: true,\n interactive: true,\n },\n };\n } catch (error) {\n return {\n success: false,\n error: `Gate execution failed: ${error}`,\n };\n }\n }\n\n private async executeStream(node: StreamNode): Promise<ExecutionResult> {\n let data = this.getVariable(node.source);\n\n logger.info('Stream processing', { name: node.name, source: node.source, transforms: node.transformations.length });\n\n for (const transform of node.transformations) {\n data = await this.applyTransformation(data, transform) as HoloScriptValue;\n }\n\n this.setVariable(`${node.name}_result`, data);\n this.createFlowingStream(node.name, node.position || { x: 0, y: 0, z: 0 }, data);\n\n return {\n success: true,\n output: `Stream '${node.name}' processed ${Array.isArray(data) ? data.length : 1} item(s)`,\n hologram: node.hologram,\n spatialPosition: node.position,\n };\n }\n\n private async executeCall(node: ASTNode & { target?: string; args?: unknown[] }): Promise<ExecutionResult> {\n const funcName = node.target || '';\n const args = node.args || [];\n\n return this.callFunction(funcName, args as HoloScriptValue[]);\n }\n\n private async executeDebug(node: ASTNode & { target?: string }): Promise<ExecutionResult> {\n const debugInfo = {\n variables: Object.fromEntries(this.currentScope.variables),\n contextVariables: Object.fromEntries(this.context.variables),\n functions: Array.from(this.context.functions.keys()),\n connections: this.context.connections.length,\n callStack: [...this.callStack],\n uiElements: Array.from(this.uiElements.keys()),\n animations: Array.from(this.animations.keys()),\n executionHistory: this.executionHistory.slice(-10),\n };\n\n const debugOrb: HologramProperties = {\n shape: 'pyramid',\n color: '#ff1493',\n size: 0.8,\n glow: true,\n interactive: true,\n };\n\n this.context.hologramState.set(`debug_${node.target || 'program'}`, debugOrb);\n\n logger.info('Debug info', debugInfo);\n\n return {\n success: true,\n output: debugInfo,\n hologram: debugOrb,\n };\n }\n\n private async executeVisualize(node: ASTNode & { target?: string }): Promise<ExecutionResult> {\n const target = node.target || '';\n const data = this.getVariable(target);\n\n if (data === undefined) {\n return {\n success: false,\n error: `No data found for '${target}'`,\n };\n }\n\n const visHologram: HologramProperties = {\n shape: 'cylinder',\n color: '#32cd32',\n size: 1.5,\n glow: true,\n interactive: true,\n };\n\n this.createDataVisualization(target, data, node.position || { x: 0, y: 0, z: 0 });\n\n return {\n success: true,\n output: { visualizing: target, data },\n hologram: visHologram,\n };\n }\n\n private async executeUIElement(node: UI2DNode): Promise<ExecutionResult> {\n const element: UIElementState = {\n type: node.elementType,\n name: node.name,\n properties: { ...node.properties },\n visible: true,\n enabled: true,\n };\n\n // Set initial value based on element type\n if (node.elementType === 'textinput') {\n element.value = node.properties.value || '';\n } else if (node.elementType === 'slider') {\n element.value = node.properties.value || node.properties.min || 0;\n } else if (node.elementType === 'toggle') {\n element.value = node.properties.checked || false;\n }\n\n this.uiElements.set(node.name, element);\n\n // Register event handlers\n if (node.events) {\n for (const [eventName, handlerName] of Object.entries(node.events)) {\n this.on(`${node.name}.${eventName}`, async () => {\n await this.callFunction(handlerName);\n });\n }\n }\n\n logger.info('UI element created', { type: node.elementType, name: node.name });\n\n return {\n success: true,\n output: element,\n };\n }\n\n /**\n * Execute generic voice commands\n * Handles commands like: show, hide, animate, pulse, create\n */\n private async executeGeneric(_node: ASTNode): Promise<ExecutionResult> {\n const genericNode = _node as any;\n const command = String(genericNode.command || '').trim().toLowerCase();\n const tokens = command.split(/\\s+/);\n const action = tokens[0];\n const target = tokens[1];\n\n logger.info('Executing generic command', { command, action, target });\n\n try {\n let result: any;\n\n switch (action) {\n case 'show':\n result = await this.executeShowCommand(target, genericNode);\n break;\n case 'hide':\n result = await this.executeHideCommand(target, genericNode);\n break;\n case 'create':\n case 'summon':\n result = await this.executeCreateCommand(tokens.slice(1), genericNode);\n break;\n case 'animate':\n result = await this.executeAnimateCommand(target, tokens.slice(2), genericNode);\n break;\n case 'pulse':\n result = await this.executePulseCommand(target, tokens.slice(2), genericNode);\n break;\n case 'move':\n result = await this.executeMoveCommand(target, tokens.slice(2), genericNode);\n break;\n case 'delete':\n case 'remove':\n result = await this.executeDeleteCommand(target, genericNode);\n break;\n default:\n // Default: create visual representation of the generic command\n logger.warn('Unknown voice command action', { action, command });\n result = {\n executed: false,\n message: `Unknown command: ${action}`,\n };\n }\n\n return {\n success: true,\n output: result,\n };\n } catch (error) {\n return {\n success: false,\n error: `Generic command execution failed: ${String(error)}`,\n };\n }\n }\n\n /**\n * Execute 'show' command\n */\n private async executeShowCommand(target: string, _node: any): Promise<any> {\n // Create or show orb for this target\n const hologram = _node.hologram || {\n shape: 'orb',\n color: '#00ffff',\n size: 0.8,\n glow: true,\n interactive: true,\n };\n\n const position = _node.position || { x: 0, y: 0, z: 0 };\n this.context.spatialMemory.set(target, position);\n this.createParticleEffect(`${target}_show`, position, hologram.color, 15);\n\n logger.info('Show command executed', { target, position });\n\n return {\n showed: target,\n hologram,\n position,\n };\n }\n\n /**\n * Execute 'hide' command\n */\n private async executeHideCommand(target: string, _node: any): Promise<any> {\n const position = this.context.spatialMemory.get(target) || { x: 0, y: 0, z: 0 };\n this.createParticleEffect(`${target}_hide`, position, '#ff0000', 10);\n \n logger.info('Hide command executed', { target });\n\n return {\n hidden: target,\n };\n }\n\n /**\n * Execute 'create' command\n */\n private async executeCreateCommand(tokens: string[], _node: any): Promise<any> {\n if (tokens.length < 2) {\n return { error: 'Create command requires shape and name' };\n }\n\n const shape = tokens[0];\n const name = tokens[1];\n const position = _node.position || { x: 0, y: 0, z: 0 };\n\n const hologram: HologramProperties = {\n shape: shape as HologramShape,\n color: _node.hologram?.color || '#00ffff',\n size: _node.hologram?.size || 1,\n glow: _node.hologram?.glow !== false,\n interactive: _node.hologram?.interactive !== false,\n };\n\n this.context.spatialMemory.set(name, position);\n this.createParticleEffect(`${name}_create`, position, hologram.color, 20);\n\n logger.info('Create command executed', { shape, name, position });\n\n return {\n created: name,\n shape,\n hologram,\n position,\n };\n }\n\n /**\n * Execute 'animate' command\n */\n private async executeAnimateCommand(target: string, tokens: string[], _node: any): Promise<any> {\n const property = tokens[0] || 'position.y';\n const duration = parseInt(tokens[1] || '1000', 10);\n \n const animation: any = {\n target,\n property,\n from: 0,\n to: 1,\n duration,\n startTime: Date.now(),\n easing: 'ease-in-out',\n };\n\n this.animations.set(`${target}_${property}`, animation);\n\n logger.info('Animate command executed', { target, property, duration });\n\n return {\n animating: target,\n animation,\n };\n }\n\n /**\n * Execute 'pulse' command\n */\n private async executePulseCommand(target: string, tokens: string[], _node: any): Promise<any> {\n const duration = parseInt(tokens[0] || '500', 10);\n const position = this.context.spatialMemory.get(target) || { x: 0, y: 0, z: 0 };\n\n // Create pulsing particle effect\n this.createParticleEffect(`${target}_pulse`, position, '#ffff00', 30);\n\n // Create animation for scale\n const animation: any = {\n target,\n property: 'scale',\n from: 1,\n to: 1.5,\n duration,\n startTime: Date.now(),\n easing: 'sine',\n yoyo: true,\n loop: true,\n };\n\n this.animations.set(`${target}_pulse`, animation);\n\n logger.info('Pulse command executed', { target, duration });\n\n return {\n pulsing: target,\n duration,\n };\n }\n\n /**\n * Execute 'move' command\n */\n private async executeMoveCommand(target: string, tokens: string[], _node: any): Promise<any> {\n const x = parseFloat(tokens[0] || '0');\n const y = parseFloat(tokens[1] || '0');\n const z = parseFloat(tokens[2] || '0');\n const position: SpatialPosition = { x, y, z };\n\n const current = this.context.spatialMemory.get(target);\n if (current) {\n this.context.spatialMemory.set(target, position);\n this.createConnectionStream(target, `${target}_move`, current, position, 'movement');\n } else {\n this.context.spatialMemory.set(target, position);\n }\n\n logger.info('Move command executed', { target, position });\n\n return {\n moved: target,\n to: position,\n };\n }\n\n /**\n * Execute 'delete' command\n */\n private async executeDeleteCommand(target: string, _node: any): Promise<any> {\n const position = this.context.spatialMemory.get(target);\n if (position) {\n this.createParticleEffect(`${target}_delete`, position, '#ff0000', 15);\n this.context.spatialMemory.delete(target);\n }\n\n logger.info('Delete command executed', { target });\n\n return {\n deleted: target,\n };\n }\n\n private async executeStructure(node: ASTNode): Promise<ExecutionResult> {\n // Handle nexus, building, and other structural elements\n const hologram: HologramProperties = node.hologram || {\n shape: node.type === 'nexus' ? 'sphere' : 'cube',\n color: node.type === 'nexus' ? '#9b59b6' : '#e74c3c',\n size: node.type === 'nexus' ? 3 : 4,\n glow: true,\n interactive: true,\n };\n\n return {\n success: true,\n output: { type: node.type, created: true },\n hologram,\n spatialPosition: node.position,\n };\n }\n\n private async executeAssignment(node: ASTNode & { name: string; value: unknown }): Promise<ExecutionResult> {\n const value = this.evaluateExpression(String(node.value));\n this.setVariable(node.name, value);\n\n return {\n success: true,\n output: { assigned: node.name, value },\n };\n }\n\n private async executeReturn(node: ASTNode & { value: unknown }): Promise<ExecutionResult> {\n const value = this.evaluateExpression(String(node.value));\n\n return {\n success: true,\n output: value,\n };\n }\n\n // ============================================================================\n // Condition Evaluation\n // ============================================================================\n\n private evaluateCondition(condition: string): boolean {\n if (!condition) return false;\n\n const suspiciousKeywords = ['eval', 'process', 'require', '__proto__', 'constructor'];\n if (suspiciousKeywords.some(kw => condition.toLowerCase().includes(kw))) {\n logger.warn('Suspicious condition blocked', { condition });\n return false;\n }\n\n try {\n // Boolean literals\n if (condition.trim().toLowerCase() === 'true') return true;\n if (condition.trim().toLowerCase() === 'false') return false;\n\n // Comparison operators\n const comparisonPatterns: Array<{ regex: RegExp; logical?: string }> = [\n { regex: /^(.+?)\\s*(===|!==)\\s*(.+)$/ },\n { regex: /^(.+?)\\s*(==|!=|>=|<=|>|<)\\s*(.+)$/ },\n { regex: /^(.+?)\\s*(&&)\\s*(.+)$/, logical: 'and' },\n { regex: /^(.+?)\\s*(\\|\\|)\\s*(.+)$/, logical: 'or' },\n ];\n\n for (const { regex, logical } of comparisonPatterns) {\n const match = condition.match(regex);\n if (match) {\n const [, leftExpr, operator, rightExpr] = match;\n const left = this.evaluateExpression(leftExpr.trim());\n const right = this.evaluateExpression(rightExpr.trim());\n\n if (logical === 'and') return Boolean(left) && Boolean(right);\n if (logical === 'or') return Boolean(left) || Boolean(right);\n\n switch (operator) {\n case '===': return left === right;\n case '!==': return left !== right;\n case '==': return left == right;\n case '!=': return left != right;\n case '>=': return Number(left) >= Number(right);\n case '<=': return Number(left) <= Number(right);\n case '>': return Number(left) > Number(right);\n case '<': return Number(left) < Number(right);\n }\n }\n }\n\n // Negation\n if (condition.startsWith('!')) {\n return !this.evaluateCondition(condition.slice(1).trim());\n }\n\n // Variable truthiness\n const value = this.evaluateExpression(condition.trim());\n return Boolean(value);\n } catch (error) {\n logger.error('Condition evaluation error', { condition, error });\n return false;\n }\n }\n\n // ============================================================================\n // Transformation\n // ============================================================================\n\n private async applyTransformation(data: unknown, transform: TransformationNode): Promise<HoloScriptValue> {\n const params = transform.parameters || {};\n\n switch (transform.operation) {\n case 'filter': {\n if (!Array.isArray(data)) return data as any;\n const predicate = params.predicate as string;\n if (predicate) {\n return data.filter(item => {\n this.setVariable('_item', item);\n return this.evaluateCondition(predicate);\n });\n }\n return data.filter(item => item !== null && item !== undefined);\n }\n\n case 'map': {\n if (!Array.isArray(data)) return data as any;\n const mapper = params.mapper as string;\n if (mapper) {\n return data.map(item => {\n this.setVariable('_item', item);\n return this.evaluateExpression(mapper);\n });\n }\n return data.map(item => ({ value: item, processed: true }));\n }\n\n case 'reduce': {\n if (!Array.isArray(data)) return data as any;\n const initial = params.initial ?? 0;\n const reducer = params.reducer as string;\n if (reducer) {\n return data.reduce((acc, item) => {\n this.setVariable('_acc', acc);\n this.setVariable('_item', item);\n return this.evaluateExpression(reducer);\n }, initial);\n }\n return data.reduce((acc, item) => acc + (typeof item === 'number' ? item : 0), 0);\n }\n\n case 'sort': {\n if (!Array.isArray(data)) return data as any;\n const key = params.key as string;\n const desc = params.descending as boolean;\n const sorted = [...data].sort((a, b) => {\n const aVal = key ? (a as Record<string, unknown>)[key] : a;\n const bVal = key ? (b as Record<string, unknown>)[key] : b;\n if (aVal < bVal) return desc ? 1 : -1;\n if (aVal > bVal) return desc ? -1 : 1;\n return 0;\n });\n return sorted;\n }\n\n case 'sum':\n return (Array.isArray(data) ? (data as any[]).reduce((sum, item) => sum + (typeof item === 'number' ? item : 0), 0) : data) as any;\n\n case 'count':\n return (Array.isArray(data) ? (data as any[]).length : 1) as any;\n\n case 'unique':\n return (Array.isArray(data) ? Array.from(new Set(data as any[])) : data) as any;\n\n case 'flatten':\n return (Array.isArray(data) ? (data as any[]).flat() : data) as any;\n\n case 'reverse':\n return (Array.isArray(data) ? [...(data as any[])].reverse() : data) as any;\n\n case 'take': {\n if (!Array.isArray(data)) return data as any;\n const count = Number(params.count) || 10;\n return data.slice(0, count);\n }\n\n case 'skip': {\n if (!Array.isArray(data)) return data as any;\n const count = Number(params.count) || 0;\n return data.slice(count);\n }\n\n default:\n logger.warn('Unknown transformation', { operation: transform.operation });\n return data as any;\n }\n }\n\n // ============================================================================\n // Event System\n // ============================================================================\n\n /**\n * Register event handler\n */\n on(event: string, handler: EventHandler): void {\n const handlers = this.eventHandlers.get(event) || [];\n handlers.push(handler);\n this.eventHandlers.set(event, handlers);\n }\n\n /**\n * Register host function\n */\n registerFunction(name: string, handler: (args: HoloScriptValue[]) => HoloScriptValue): void {\n this.builtinFunctions.set(name, handler);\n logger.info(`Host function registered: ${name}`);\n }\n\n /**\n * Remove event handler\n */\n off(event: string, handler?: EventHandler): void {\n if (!handler) {\n this.eventHandlers.delete(event);\n } else {\n const handlers = this.eventHandlers.get(event) || [];\n this.eventHandlers.set(event, handlers.filter(h => h !== handler));\n }\n }\n\n /**\n * Emit event\n */\n async emit(event: string, data?: unknown): Promise<void> {\n const handlers = this.eventHandlers.get(event) || [];\n for (const handler of handlers) {\n try {\n await handler(data as any);\n } catch (error) {\n logger.error('Event handler error', { event, error });\n }\n }\n }\n\n /**\n * Trigger UI event\n */\n async triggerUIEvent(elementName: string, eventType: string, data?: unknown): Promise<void> {\n const element = this.uiElements.get(elementName);\n if (!element) {\n logger.warn('UI element not found', { elementName });\n return;\n }\n\n // Update element state based on event\n if (eventType === 'change' && data !== undefined) {\n element.value = data;\n }\n\n await this.emit(`${elementName}.${eventType}`, data);\n }\n\n // ============================================================================\n // Animation System\n // ============================================================================\n\n /**\n * Update all animations\n */\n updateAnimations(): void {\n const now = Date.now();\n\n for (const [key, anim] of this.animations) {\n const elapsed = now - anim.startTime;\n let progress = Math.min(elapsed / anim.duration, 1);\n\n // Apply easing\n progress = this.applyEasing(progress, anim.easing);\n\n // Calculate current value\n let currentValue = anim.from + (anim.to - anim.from) * progress;\n\n // Handle yoyo\n if (anim.yoyo && progress >= 1) {\n anim.startTime = now;\n [anim.from, anim.to] = [anim.to, anim.from];\n }\n\n // Update the property\n this.setVariable(`${anim.target}.${anim.property}`, currentValue);\n\n // Remove completed non-looping animations\n if (progress >= 1 && !anim.loop && !anim.yoyo) {\n this.animations.delete(key);\n } else if (progress >= 1 && anim.loop) {\n anim.startTime = now;\n }\n }\n\n // Update real-life / system variables\n this.updateSystemVariables();\n }\n\n /**\n * Update real-life and system variables ($time, $user, etc.)\n */\n private updateSystemVariables(): void {\n const now = new Date();\n \n // Time variables\n this.setVariable('$time', now.toLocaleTimeString());\n this.setVariable('$date', now.toLocaleDateString());\n this.setVariable('$timestamp', now.getTime());\n this.setVariable('$hour', now.getHours());\n this.setVariable('$minute', now.getMinutes());\n this.setVariable('$second', now.getSeconds());\n\n // Mock Real-Life Data (Can be overridden by host)\n if (this.getVariable('$user') === undefined) {\n this.setVariable('$user', {\n id: 'user_123',\n name: 'Alpha Explorer',\n level: 42,\n rank: 'Legendary',\n achievements: ['First World', 'Spirit Guide'],\n preferences: { theme: 'holographic', language: 'en' }\n });\n }\n\n if (this.getVariable('$location') === undefined) {\n this.setVariable('$location', {\n city: 'Neo Tokyo',\n region: 'Holo-Sector 7',\n coordinates: { lat: 35.6895, lng: 139.6917 },\n altitude: 450\n });\n }\n\n if (this.getVariable('$weather') === undefined) {\n this.setVariable('$weather', {\n condition: 'Neon Mist',\n temperature: 24,\n humidity: 65,\n windSpeed: 12,\n unit: 'C'\n });\n }\n\n if (this.getVariable('$wallet') === undefined) {\n this.setVariable('$wallet', {\n address: '0xHolo...42ff',\n balance: 1337.50,\n currency: 'HOLO',\n network: 'MainNet'\n });\n }\n\n if (this.getVariable('$ai_config') === undefined) {\n const savedKeys = typeof localStorage !== 'undefined' ? localStorage.getItem('brittney_api_keys') : null;\n let configuredCount = 0;\n if (savedKeys) {\n try {\n const keys = JSON.parse(savedKeys);\n configuredCount = Object.values(keys).filter(k => !!k).length;\n } catch (e) {}\n }\n\n this.setVariable('$ai_config', {\n status: configuredCount > 0 ? 'configured' : 'pending',\n providerCount: configuredCount,\n lastUpdated: Date.now()\n });\n }\n\n if (this.getVariable('$chat_status') === undefined) {\n this.setVariable('$chat_status', {\n active: true,\n typing: false,\n version: '1.0.0-brittney'\n });\n }\n }\n\n // ==========================================================================\n // COMMERCE PRIMITIVES\n // ==========================================================================\n\n private handleShop(args: any[]): any {\n const config = args[0] || {};\n this.emit('shop', config);\n return { success: true, type: 'shop', config };\n }\n\n private handleInventory(args: any[]): any {\n const item = args[0];\n const action = args[1] || 'add';\n this.emit('inventory', { item, action });\n return { success: true, item, action };\n }\n\n private handlePurchase(args: any[]): any {\n const productId = args[0];\n this.emit('purchase', { productId });\n return { success: true, productId, status: 'pending' };\n }\n\n // ==========================================================================\n // SOCIAL PRIMITIVES\n // ==========================================================================\n\n private handlePresence(args: any[]): any {\n const config = args[0] || {};\n this.emit('presence', config);\n return { success: true, active: true };\n }\n\n private handleInvite(args: any[]): any {\n const userId = args[0];\n this.emit('invite', { userId });\n return { success: true, userId };\n }\n\n private handleShare(args: any[]): any {\n const scriptId = args[0];\n const targetUserId = args[1];\n this.emit('share', { scriptId, targetUserId });\n return { success: true, scriptId };\n }\n\n // ==========================================================================\n // PHYSICS PRIMITIVES\n // ==========================================================================\n\n private handlePhysics(args: any[]): any {\n const config = args[0] || {};\n this.emit('physics', config);\n return { success: true, enabled: config.enabled !== false };\n }\n\n private handleGravity(args: any[]): any {\n const value = args[0] ?? 9.81;\n this.emit('gravity', { value });\n return { success: true, value };\n }\n\n private handleCollide(args: any[]): any {\n const target = args[0];\n const handler = args[1];\n this.emit('collide', { target, handler });\n return { success: true, target };\n }\n\n /**\n * Handle calculate_arc(start, end, speed)\n */\n private handleCalculateArc(args: any[]): any {\n if (args.length < 3) return { x: 0, y: 0, z: 0 };\n \n const start = args[0] as SpatialPosition;\n const end = args[1] as SpatialPosition;\n const speed = args[2] as number;\n\n const dx = end.x - start.x;\n const dz = end.z - start.z;\n const dy = end.y - start.y;\n const dist = Math.sqrt(dx * dx + dz * dz);\n \n if (dist < 0.1) return { x: 0, y: speed, z: 0 };\n\n // Basic projectile velocity with upward arc\n // v_x = dx/t, v_z = dz/t, v_y = dy/t + 0.5 * g * t\n // simplified for now:\n const t = dist / speed;\n const vx = dx / t;\n const vz = dz / t;\n const vy = (dy / t) + (0.5 * 9.81 * t); // Compensate for gravity\n\n return { x: vx, y: vy, z: vz };\n }\n\n private handleAnimate(args: any[]): any {\n const options = args[0] || {};\n this.emit('animate', options);\n return { success: true, options };\n }\n\n private applyEasing(t: number, easing: string): number {\n switch (easing) {\n case 'easeIn':\n return t * t;\n case 'easeOut':\n return t * (2 - t);\n case 'easeInOut':\n return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;\n case 'easeInQuad':\n return t * t;\n case 'easeOutQuad':\n return t * (2 - t);\n case 'easeInOutQuad':\n return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;\n case 'linear':\n default:\n return t;\n }\n }\n\n // ============================================================================\n // Particle Effects\n // ============================================================================\n\n private createParticleEffect(name: string, position: SpatialPosition, color: string, count: number): void {\n const limitedCount = Math.min(count, RUNTIME_SECURITY_LIMITS.maxParticlesPerSystem);\n const particles: SpatialPosition[] = [];\n\n for (let i = 0; i < limitedCount; i++) {\n particles.push({\n x: position.x + (Math.random() - 0.5) * 2,\n y: position.y + (Math.random() - 0.5) * 2,\n z: position.z + (Math.random() - 0.5) * 2,\n });\n }\n\n this.particleSystems.set(name, {\n particles,\n color,\n lifetime: 3000,\n speed: 0.01,\n });\n }\n\n private createConnectionStream(from: string, to: string, fromPos: SpatialPosition, toPos: SpatialPosition, dataType: string): void {\n const streamName = `connection_${from}_${to}`;\n const particles: SpatialPosition[] = [];\n const steps = 20;\n\n for (let i = 0; i <= steps; i++) {\n const t = i / steps;\n particles.push({\n x: fromPos.x + (toPos.x - fromPos.x) * t,\n y: fromPos.y + (toPos.y - fromPos.y) * t,\n z: fromPos.z + (toPos.z - fromPos.z) * t,\n });\n }\n\n this.particleSystems.set(streamName, {\n particles,\n color: this.getDataTypeColor(dataType),\n lifetime: 5000,\n speed: 0.02,\n });\n }\n\n private createFlowingStream(name: string, position: SpatialPosition, data: unknown): void {\n const count = Array.isArray(data) ? Math.min(data.length, 50) : 10;\n this.createParticleEffect(`${name}_flow`, position, '#45b7d1', count);\n }\n\n private createExecutionEffect(name: string, position: SpatialPosition): void {\n this.createParticleEffect(`${name}_execution`, position, '#ff4500', 30);\n }\n\n private createDataVisualization(name: string, data: unknown, position: SpatialPosition): void {\n let count = 10;\n if (Array.isArray(data)) {\n count = Math.min(data.length, 100);\n } else if (typeof data === 'object' && data !== null) {\n count = Math.min(Object.keys(data).length * 5, 50);\n }\n this.createParticleEffect(`${name}_visualization`, position, '#32cd32', count);\n }\n\n private getDataTypeColor(dataType: string): string {\n const colors: Record<string, string> = {\n 'string': '#ff6b35',\n 'number': '#4ecdc4',\n 'boolean': '#45b7d1',\n 'object': '#96ceb4',\n 'array': '#ffeaa7',\n 'any': '#dda0dd',\n 'move': '#ff69b4',\n };\n return colors[dataType] || '#ffffff';\n }\n\n // ============================================================================\n // Public API\n // ============================================================================\n\n getParticleSystems(): Map<string, ParticleSystem> {\n return new Map(this.particleSystems);\n }\n\n updateParticles(deltaTime: number): void {\n for (const [name, system] of this.particleSystems) {\n system.lifetime -= deltaTime;\n system.particles.forEach(particle => {\n particle.x += (Math.random() - 0.5) * system.speed;\n particle.y += (Math.random() - 0.5) * system.speed;\n particle.z += (Math.random() - 0.5) * system.speed;\n });\n if (system.lifetime <= 0) {\n this.particleSystems.delete(name);\n }\n }\n }\n\n getContext(): RuntimeContext {\n return { ...this.context };\n }\n\n getUIElements(): Map<string, UIElementState> {\n return new Map(this.uiElements);\n }\n\n getUIElement(name: string): UIElementState | undefined {\n return this.uiElements.get(name);\n }\n\n getAnimations(): Map<string, Animation> {\n return new Map(this.animations);\n }\n\n reset(): void {\n this.context = this.createEmptyContext();\n this.currentScope = { variables: this.context.variables };\n this.callStack = [];\n this.particleSystems.clear();\n this.executionHistory = [];\n this.eventHandlers.clear();\n this.animations.clear();\n this.uiElements.clear();\n // Note: System variables are NOT re-added on reset.\n // They will be initialized when the runtime is next used.\n }\n\n private createEmptyContext(): RuntimeContext {\n return {\n variables: new Map(),\n functions: new Map(),\n exports: new Map(),\n connections: [],\n spatialMemory: new Map(),\n hologramState: new Map(),\n executionStack: [],\n currentScale: 1,\n scaleMagnitude: 'standard',\n focusHistory: [],\n environment: {},\n templates: new Map(),\n state: createState({}),\n };\n }\n\n private async executeScale(node: ScaleNode): Promise<ExecutionResult> {\n const parentScale = this.context.currentScale;\n this.context.currentScale *= node.multiplier;\n this.context.scaleMagnitude = node.magnitude;\n\n logger.info('Scale context entering', { magnitude: node.magnitude, multiplier: this.context.currentScale });\n \n // Emit event for renderer sync\n this.emit('scale:change', { multiplier: this.context.currentScale, magnitude: node.magnitude });\n\n const results = await this.executeProgram(node.body, this.context.executionStack.length);\n\n // Restore parent scale after block\n this.context.currentScale = parentScale;\n \n // Restore renderer scale\n this.emit('scale:change', { multiplier: this.context.currentScale });\n\n return {\n success: results.every(r => r.success),\n output: `Executed scale block: ${node.magnitude}`\n };\n }\n\n private async executeFocus(node: FocusNode): Promise<ExecutionResult> {\n this.context.focusHistory.push(node.target);\n const results = await this.executeProgram(node.body, this.context.executionStack.length);\n\n return {\n success: results.every(r => r.success),\n output: `Focused on ${node.target}`\n };\n }\n\n private async executeEnvironment(node: EnvironmentNode): Promise<ExecutionResult> {\n this.context.environment = { ...this.context.environment, ...node.settings };\n return { success: true, output: 'Environment updated' };\n }\n\n private async executeComposition(node: CompositionNode): Promise<ExecutionResult> {\n return { \n success: (await this.executeProgram(node.children, this.context.executionStack.length)).every(r => r.success), \n output: `Composition ${node.name} executed` \n };\n }\n\n private async executeTemplate(node: TemplateNode): Promise<ExecutionResult> {\n this.context.templates.set(node.name, node);\n return { success: true, output: `Template ${node.name} registered` };\n }\n\n private async executeServerNode(node: ServerNode): Promise<ExecutionResult> {\n if (this.context.mode === 'public') {\n return { success: false, error: 'SecurityViolation: Server creation blocked in public mode.', executionTime: 0 };\n }\n \n logger.info(`Starting server on port ${node.port}`);\n \n return {\n success: true,\n output: `Server listening on port ${node.port}`,\n hologram: node.hologram,\n executionTime: 0\n };\n }\n\n private async executeDatabaseNode(node: DatabaseNode): Promise<ExecutionResult> {\n if (this.context.mode === 'public') {\n return { success: false, error: 'SecurityViolation: DB access blocked in public mode.', executionTime: 0 };\n }\n\n logger.info(`Executing Query: ${node.query}`);\n \n return {\n success: true,\n output: `Query executed: ${node.query}`,\n hologram: node.hologram,\n executionTime: 0\n };\n }\n\n private async executeFetchNode(node: FetchNode): Promise<ExecutionResult> {\n if (this.context.mode === 'public') {\n return { success: false, error: 'SecurityViolation: External fetch blocked in public mode.', executionTime: 0 };\n }\n\n logger.info(`Fetching: ${node.url}`);\n \n return {\n success: true,\n output: `Fetched data from ${node.url}`,\n hologram: node.hologram,\n executionTime: 0\n };\n }\n\n private async executeTarget(node: ExecuteNode): Promise<ExecutionResult> {\n const target = this.context.functions.get(node.target);\n\n if (!target) {\n return {\n success: false,\n error: `Function ${node.target} not found`,\n executionTime: 0\n };\n }\n\n const result = await this.executeFunction(target);\n this.createExecutionEffect(node.target, target.position || {x:0,y:0,z:0});\n\n return {\n success: true,\n output: `Executed ${node.target}`,\n hologram: {\n shape: 'sphere',\n color: '#ff4500',\n size: 1.2,\n glow: true,\n interactive: false,\n },\n executionTime: result.executionTime\n };\n }\n\n private async executeStateDeclaration(node: any): Promise<ExecutionResult> {\n const stateDirective = node.directives?.find((d: any) => d.type === 'state');\n if (stateDirective) {\n this.context.state.update(stateDirective.body);\n }\n return { success: true, output: 'State updated' };\n }\n\n private applyDirectives(node: ASTNode): void {\n if (!node.directives) return;\n\n for (const d of node.directives) {\n if (d.type === 'trait') {\n logger.info(`Applying trait ${d.name} to ${node.type}`);\n // Optional: Trigger custom initialization for specific traits\n if (d.name as string === 'chat') {\n this.emit('show-chat', d.config);\n }\n } else if (d.type === 'state') {\n this.context.state.update(d.body);\n } else if (d.type === 'lifecycle') {\n if (d.hook === 'on_mount') {\n this.evaluateExpression(d.body);\n }\n }\n }\n }\n\n getExecutionHistory(): ExecutionResult[] {\n return [...this.executionHistory];\n }\n\n getHologramStates(): Map<string, HologramProperties> {\n return new Map(this.context.hologramState);\n }\n\n getCallStack(): string[] {\n return [...this.callStack];\n }\n\n getState(): Record<string, HoloScriptValue> {\n return this.context.state.getSnapshot();\n }\n}\n"]}
@@ -343,5 +343,5 @@ function createTypeChecker() {
343
343
 
344
344
  exports.HoloScriptTypeChecker = HoloScriptTypeChecker;
345
345
  exports.createTypeChecker = createTypeChecker;
346
- //# sourceMappingURL=chunk-VMZN4EVR.cjs.map
347
- //# sourceMappingURL=chunk-VMZN4EVR.cjs.map
346
+ //# sourceMappingURL=chunk-MFNO57XL.cjs.map
347
+ //# sourceMappingURL=chunk-MFNO57XL.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/HoloScriptTypeChecker.ts"],"names":[],"mappings":"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","file":"chunk-MFNO57XL.cjs","sourcesContent":["/**\n * HoloScript Type Checker\n *\n * Static type analysis for HoloScript code.\n * Validates types, detects errors, and provides type information.\n */\n\nimport type {\n ASTNode,\n OrbNode,\n MethodNode,\n ConnectionNode,\n GateNode,\n StreamNode,\n VariableDeclarationNode,\n ForLoopNode,\n WhileLoopNode,\n ForEachLoopNode,\n ImportNode,\n ExportNode,\n HoloScriptValue,\n} from './types';\n\n// Type system types\nexport type HoloScriptType =\n | 'number'\n | 'string'\n | 'boolean'\n | 'array'\n | 'object'\n | 'function'\n | 'void'\n | 'any'\n | 'unknown'\n | 'never'\n | 'orb'\n | 'stream'\n | 'connection'\n | 'gate';\n\nexport interface TypeInfo {\n type: HoloScriptType;\n elementType?: HoloScriptType; // For arrays\n properties?: Map<string, TypeInfo>; // For objects/orbs\n parameters?: ParameterType[]; // For functions\n returnType?: HoloScriptType; // For functions\n nullable?: boolean;\n}\n\nexport interface ParameterType {\n name: string;\n type: HoloScriptType;\n optional?: boolean;\n defaultValue?: HoloScriptValue;\n}\n\nexport interface TypeDiagnostic {\n severity: 'error' | 'warning' | 'info';\n message: string;\n line: number;\n column: number;\n code: string;\n suggestions?: string[];\n}\n\nexport interface TypeCheckResult {\n valid: boolean;\n diagnostics: TypeDiagnostic[];\n typeMap: Map<string, TypeInfo>;\n}\n\n// Built-in type definitions\nconst BUILTIN_FUNCTIONS: Map<string, TypeInfo> = new Map([\n ['add', { type: 'function', parameters: [{ name: 'a', type: 'number' }, { name: 'b', type: 'number' }], returnType: 'number' }],\n ['subtract', { type: 'function', parameters: [{ name: 'a', type: 'number' }, { name: 'b', type: 'number' }], returnType: 'number' }],\n ['multiply', { type: 'function', parameters: [{ name: 'a', type: 'number' }, { name: 'b', type: 'number' }], returnType: 'number' }],\n ['divide', { type: 'function', parameters: [{ name: 'a', type: 'number' }, { name: 'b', type: 'number' }], returnType: 'number' }],\n ['concat', { type: 'function', parameters: [{ name: 'a', type: 'string' }, { name: 'b', type: 'string' }], returnType: 'string' }],\n ['length', { type: 'function', parameters: [{ name: 'value', type: 'any' }], returnType: 'number' }],\n ['push', { type: 'function', parameters: [{ name: 'arr', type: 'array' }, { name: 'item', type: 'any' }], returnType: 'array' }],\n ['pop', { type: 'function', parameters: [{ name: 'arr', type: 'array' }], returnType: 'any' }],\n ['log', { type: 'function', parameters: [{ name: 'message', type: 'any' }], returnType: 'void' }],\n ['print', { type: 'function', parameters: [{ name: 'message', type: 'any' }], returnType: 'void' }],\n ['show', { type: 'function', parameters: [{ name: 'target', type: 'orb' }], returnType: 'void' }],\n ['hide', { type: 'function', parameters: [{ name: 'target', type: 'orb' }], returnType: 'void' }],\n ['pulse', { type: 'function', parameters: [{ name: 'target', type: 'orb' }], returnType: 'void' }],\n ['animate', { type: 'function', parameters: [{ name: 'target', type: 'orb' }, { name: 'config', type: 'object' }], returnType: 'void' }],\n ['spawn', { type: 'function', parameters: [{ name: 'type', type: 'string' }, { name: 'position', type: 'object' }], returnType: 'orb' }],\n ['isNumber', { type: 'function', parameters: [{ name: 'value', type: 'any' }], returnType: 'boolean' }],\n ['isString', { type: 'function', parameters: [{ name: 'value', type: 'any' }], returnType: 'boolean' }],\n ['isArray', { type: 'function', parameters: [{ name: 'value', type: 'any' }], returnType: 'boolean' }],\n]);\n\nexport class HoloScriptTypeChecker {\n private typeMap: Map<string, TypeInfo> = new Map();\n private diagnostics: TypeDiagnostic[] = [];\n private currentLine: number = 0;\n private currentColumn: number = 0;\n\n constructor() {\n // Initialize with built-in functions\n BUILTIN_FUNCTIONS.forEach((type, name) => {\n this.typeMap.set(name, type);\n });\n }\n\n /**\n * Type check an AST\n */\n check(ast: ASTNode[]): TypeCheckResult {\n this.diagnostics = [];\n\n // First pass: collect declarations\n for (const node of ast) {\n this.collectDeclaration(node);\n }\n\n // Second pass: validate types\n for (const node of ast) {\n this.checkNode(node);\n }\n\n return {\n valid: this.diagnostics.filter(d => d.severity === 'error').length === 0,\n diagnostics: this.diagnostics,\n typeMap: new Map(this.typeMap),\n };\n }\n\n /**\n * Collect type declarations\n */\n private collectDeclaration(node: ASTNode): void {\n switch (node.type) {\n case 'orb':\n this.collectOrbDeclaration(node as OrbNode);\n break;\n case 'method':\n this.collectMethodDeclaration(node as MethodNode);\n break;\n case 'variable-declaration':\n this.collectVariableDeclaration(node as VariableDeclarationNode);\n break;\n case 'stream':\n this.collectStreamDeclaration(node as StreamNode);\n break;\n }\n }\n\n private collectOrbDeclaration(node: OrbNode): void {\n const properties = new Map<string, TypeInfo>();\n\n // Add default orb properties\n properties.set('position', { type: 'object', properties: new Map([\n ['x', { type: 'number' }],\n ['y', { type: 'number' }],\n ['z', { type: 'number' }],\n ])});\n properties.set('color', { type: 'string' });\n properties.set('glow', { type: 'boolean' });\n properties.set('interactive', { type: 'boolean' });\n properties.set('visible', { type: 'boolean' });\n\n // Add user-defined properties\n for (const [key, value] of Object.entries(node.properties)) {\n properties.set(key, this.inferType(value));\n }\n\n this.typeMap.set(node.name, {\n type: 'orb',\n properties,\n });\n }\n\n private collectMethodDeclaration(node: MethodNode): void {\n const parameters: ParameterType[] = node.parameters.map(p => ({\n name: p.name,\n type: this.parseTypeString(p.dataType),\n optional: p.defaultValue !== undefined,\n defaultValue: p.defaultValue,\n }));\n\n this.typeMap.set(node.name, {\n type: 'function',\n parameters,\n returnType: node.returnType ? this.parseTypeString(node.returnType) : 'void',\n });\n }\n\n private collectVariableDeclaration(node: VariableDeclarationNode): void {\n let type: HoloScriptType = 'any';\n\n if (node.dataType) {\n type = this.parseTypeString(node.dataType);\n } else if (node.value !== undefined) {\n type = this.inferType(node.value).type;\n }\n\n this.typeMap.set(node.name, { type });\n }\n\n private collectStreamDeclaration(node: StreamNode): void {\n this.typeMap.set(node.name, {\n type: 'stream',\n properties: new Map([\n ['source', { type: 'string' }],\n ['result', { type: 'any' }],\n ]),\n });\n }\n\n /**\n * Check a node for type errors\n */\n private checkNode(node: ASTNode): void {\n this.currentLine = node.position?.x ?? 0;\n this.currentColumn = node.position?.y ?? 0;\n\n switch (node.type) {\n case 'connection':\n this.checkConnection(node as ConnectionNode);\n break;\n case 'gate':\n this.checkGate(node as GateNode);\n break;\n case 'for-loop':\n this.checkForLoop(node as ForLoopNode);\n break;\n case 'while-loop':\n this.checkWhileLoop(node as WhileLoopNode);\n break;\n case 'foreach-loop':\n this.checkForEachLoop(node as ForEachLoopNode);\n break;\n case 'import':\n this.checkImport(node as ImportNode);\n break;\n case 'export':\n this.checkExport(node as ExportNode);\n break;\n }\n }\n\n private checkConnection(node: ConnectionNode): void {\n const fromType = this.typeMap.get(node.from);\n const toType = this.typeMap.get(node.to);\n\n if (!fromType) {\n this.addDiagnostic('error', `Unknown source '${node.from}' in connection`, 'E001');\n }\n\n if (!toType) {\n this.addDiagnostic('error', `Unknown target '${node.to}' in connection`, 'E002');\n }\n\n // Check if types are compatible\n if (fromType && toType && node.dataType !== 'any') {\n // Warn if connecting incompatible types\n if (fromType.type !== toType.type && fromType.type !== 'any' && toType.type !== 'any') {\n this.addDiagnostic('warning',\n `Connection from '${node.from}' (${fromType.type}) to '${node.to}' (${toType.type}) may be incompatible`,\n 'W001',\n [`Consider using 'as \"any\"' to bypass type checking`]\n );\n }\n }\n }\n\n private checkGate(node: GateNode): void {\n // Validate condition references valid variables\n const conditionVars = this.extractVariables(node.condition);\n for (const varName of conditionVars) {\n if (!this.typeMap.has(varName) && !this.isLiteral(varName)) {\n this.addDiagnostic('error', `Unknown variable '${varName}' in gate condition`, 'E003');\n }\n }\n }\n\n private checkForLoop(node: ForLoopNode): void {\n // Check init references\n const initVars = this.extractVariables(node.init);\n // For loops can declare new variables in init, so we add them\n for (const varName of initVars) {\n if (!this.typeMap.has(varName)) {\n this.typeMap.set(varName, { type: 'number' }); // Loop vars are typically numbers\n }\n }\n\n // Check condition\n const condVars = this.extractVariables(node.condition);\n for (const varName of condVars) {\n if (!this.typeMap.has(varName) && !this.isLiteral(varName)) {\n this.addDiagnostic('error', `Unknown variable '${varName}' in for loop condition`, 'E004');\n }\n }\n }\n\n private checkWhileLoop(node: WhileLoopNode): void {\n const condVars = this.extractVariables(node.condition);\n for (const varName of condVars) {\n if (!this.typeMap.has(varName) && !this.isLiteral(varName)) {\n this.addDiagnostic('error', `Unknown variable '${varName}' in while loop condition`, 'E005');\n }\n }\n }\n\n private checkForEachLoop(node: ForEachLoopNode): void {\n // Check collection exists\n if (!this.typeMap.has(node.collection)) {\n this.addDiagnostic('error', `Unknown collection '${node.collection}' in forEach loop`, 'E006');\n } else {\n const collectionType = this.typeMap.get(node.collection);\n if (collectionType && collectionType.type !== 'array' && collectionType.type !== 'any') {\n this.addDiagnostic('error', `'${node.collection}' is not iterable (type: ${collectionType.type})`, 'E007');\n }\n }\n\n // Add loop variable to scope\n this.typeMap.set(node.variable, { type: 'any' });\n }\n\n private checkImport(node: ImportNode): void {\n if (!node.modulePath) {\n this.addDiagnostic('error', 'Import statement missing module path', 'E008');\n }\n\n // Register imported names as 'any' type (can't resolve external modules)\n for (const name of node.imports) {\n this.typeMap.set(name, { type: 'any' });\n }\n\n if (node.defaultImport) {\n this.typeMap.set(node.defaultImport, { type: 'any' });\n }\n }\n\n private checkExport(node: ExportNode): void {\n if (node.exports) {\n for (const name of node.exports) {\n if (!this.typeMap.has(name)) {\n this.addDiagnostic('error', `Cannot export unknown identifier '${name}'`, 'E009');\n }\n }\n }\n }\n\n /**\n * Infer type from a value\n */\n public inferType(value: HoloScriptValue): TypeInfo {\n if (value === null || value === undefined) {\n return { type: 'any', nullable: true };\n }\n\n if (typeof value === 'number') {\n return { type: 'number' };\n }\n\n if (typeof value === 'string') {\n return { type: 'string' };\n }\n\n if (typeof value === 'boolean') {\n return { type: 'boolean' };\n }\n\n if (Array.isArray(value)) {\n const elementType = value.length > 0 ? this.inferType(value[0]).type : 'any';\n return { type: 'array', elementType };\n }\n\n if (typeof value === 'object') {\n const properties = new Map<string, TypeInfo>();\n for (const [key, val] of Object.entries(value)) {\n properties.set(key, this.inferType(val));\n }\n return { type: 'object', properties };\n }\n\n return { type: 'any' };\n }\n\n /**\n * Parse type string to HoloScriptType\n */\n private parseTypeString(typeStr: string): HoloScriptType {\n const normalized = typeStr.toLowerCase().trim();\n const validTypes: HoloScriptType[] = [\n 'number', 'string', 'boolean', 'array', 'object',\n 'function', 'void', 'any', 'unknown', 'never',\n 'orb', 'stream', 'connection', 'gate'\n ];\n\n if (validTypes.includes(normalized as HoloScriptType)) {\n return normalized as HoloScriptType;\n }\n\n return 'any';\n }\n\n /**\n * Extract variable names from an expression string\n */\n private extractVariables(expr: string): string[] {\n const varPattern = /\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b/g;\n const matches = expr.match(varPattern) || [];\n const keywords = ['true', 'false', 'null', 'undefined', 'if', 'else', 'for', 'while', 'return'];\n return matches.filter(m => !keywords.includes(m));\n }\n\n /**\n * Check if string is a literal\n */\n private isLiteral(str: string): boolean {\n // Number literal\n if (/^-?\\d+(\\.\\d+)?$/.test(str)) return true;\n // Boolean\n if (str === 'true' || str === 'false') return true;\n // String literal\n if (/^[\"'].*[\"']$/.test(str)) return true;\n return false;\n }\n\n /**\n * Add a diagnostic\n */\n private addDiagnostic(\n severity: 'error' | 'warning' | 'info',\n message: string,\n code: string,\n suggestions?: string[]\n ): void {\n this.diagnostics.push({\n severity,\n message,\n line: this.currentLine,\n column: this.currentColumn,\n code,\n suggestions,\n });\n }\n\n /**\n * Get type info for a name\n */\n getType(name: string): TypeInfo | undefined {\n return this.typeMap.get(name);\n }\n\n /**\n * Get all registered types\n */\n getAllTypes(): Map<string, TypeInfo> {\n return new Map(this.typeMap);\n }\n\n /**\n * Reset the type checker\n */\n reset(): void {\n this.typeMap.clear();\n this.diagnostics = [];\n\n // Re-add built-ins\n BUILTIN_FUNCTIONS.forEach((type, name) => {\n this.typeMap.set(name, type);\n });\n }\n}\n\n/**\n * Create a type checker instance\n */\nexport function createTypeChecker(): HoloScriptTypeChecker {\n return new HoloScriptTypeChecker();\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var chunk4OHVW4XR_cjs = require('./chunk-4OHVW4XR.cjs');
4
- var chunk3N67RLQP_cjs = require('./chunk-3N67RLQP.cjs');
3
+ var chunkT57ZL7KR_cjs = require('./chunk-T57ZL7KR.cjs');
4
+ var chunkL6VLNVKP_cjs = require('./chunk-L6VLNVKP.cjs');
5
5
 
6
6
  // src/HoloScriptDebugger.ts
7
7
  var HoloScriptDebugger = class {
@@ -21,8 +21,8 @@ var HoloScriptDebugger = class {
21
21
  callStack: [],
22
22
  breakpoints: []
23
23
  };
24
- this.runtime = runtime || new chunk3N67RLQP_cjs.HoloScriptRuntime();
25
- this.parser = new chunk4OHVW4XR_cjs.HoloScriptCodeParser();
24
+ this.runtime = runtime || new chunkL6VLNVKP_cjs.HoloScriptRuntime();
25
+ this.parser = new chunkT57ZL7KR_cjs.HoloScriptCodeParser();
26
26
  }
27
27
  /**
28
28
  * Load source code for debugging
@@ -420,5 +420,5 @@ function createDebugger(runtime) {
420
420
 
421
421
  exports.HoloScriptDebugger = HoloScriptDebugger;
422
422
  exports.createDebugger = createDebugger;
423
- //# sourceMappingURL=chunk-WFI4T3XB.cjs.map
424
- //# sourceMappingURL=chunk-WFI4T3XB.cjs.map
423
+ //# sourceMappingURL=chunk-R75MREOS.cjs.map
424
+ //# sourceMappingURL=chunk-R75MREOS.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/HoloScriptDebugger.ts"],"names":["HoloScriptRuntime","HoloScriptCodeParser"],"mappings":"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","file":"chunk-WFI4T3XB.cjs","sourcesContent":["/**\n * HoloScript Debugger\n *\n * Step-through debugging with breakpoints, call stack inspection,\n * and variable watch capabilities.\n */\n\nimport { HoloScriptRuntime } from './HoloScriptRuntime';\nimport { HoloScriptCodeParser } from './HoloScriptCodeParser';\nimport type { ASTNode } from './types';\n\nexport interface Breakpoint {\n id: string;\n line: number;\n column?: number;\n condition?: string;\n hitCount: number;\n enabled: boolean;\n file?: string;\n}\n\nexport interface StackFrame {\n id: number;\n name: string;\n file?: string;\n line: number;\n column: number;\n variables: Map<string, unknown>;\n node: ASTNode;\n}\n\nexport interface DebugState {\n status: 'running' | 'paused' | 'stopped' | 'stepping';\n currentLine: number;\n currentColumn: number;\n currentNode: ASTNode | null;\n callStack: StackFrame[];\n breakpoints: Breakpoint[];\n}\n\nexport type StepMode = 'into' | 'over' | 'out';\n\nexport interface DebugEvent {\n type: 'breakpoint-hit' | 'step-complete' | 'exception' | 'output' | 'state-change';\n data: unknown;\n}\n\ntype DebugEventHandler = (event: DebugEvent) => void;\n\n/**\n * HoloScript Debugger with breakpoints and step-through execution\n */\nexport class HoloScriptDebugger {\n private runtime: HoloScriptRuntime;\n private parser: HoloScriptCodeParser;\n private breakpoints: Map<string, Breakpoint> = new Map();\n private callStack: StackFrame[] = [];\n private currentAST: ASTNode[] = [];\n private currentNodeIndex: number = 0;\n private frameIdCounter: number = 0;\n private breakpointIdCounter: number = 0;\n private eventHandlers: Map<string, DebugEventHandler[]> = new Map();\n\n private state: DebugState = {\n status: 'stopped',\n currentLine: 0,\n currentColumn: 0,\n currentNode: null,\n callStack: [],\n breakpoints: [],\n };\n\n constructor(runtime?: HoloScriptRuntime) {\n this.runtime = runtime || new HoloScriptRuntime();\n this.parser = new HoloScriptCodeParser();\n }\n\n /**\n * Load source code for debugging\n */\n loadSource(code: string, file?: string): { success: boolean; errors?: string[] } {\n const parseResult = this.parser.parse(code);\n\n if (!parseResult.success) {\n return {\n success: false,\n errors: parseResult.errors.map(e => `Line ${e.line}: ${e.message}`),\n };\n }\n\n this.currentAST = parseResult.ast;\n this.currentNodeIndex = 0;\n this.state.status = 'stopped';\n this.callStack = [];\n\n // Store file reference in nodes\n if (file) {\n for (const node of this.currentAST) {\n (node as ASTNode & { file?: string }).file = file;\n }\n }\n\n return { success: true };\n }\n\n /**\n * Set a breakpoint at a line\n */\n setBreakpoint(line: number, options: Partial<Breakpoint> = {}): Breakpoint {\n const id = `bp_${++this.breakpointIdCounter}`;\n const breakpoint: Breakpoint = {\n id,\n line,\n column: options.column,\n condition: options.condition,\n hitCount: 0,\n enabled: options.enabled !== false,\n file: options.file,\n };\n\n this.breakpoints.set(id, breakpoint);\n this.updateBreakpointList();\n\n return breakpoint;\n }\n\n /**\n * Remove a breakpoint by ID\n */\n removeBreakpoint(id: string): boolean {\n const removed = this.breakpoints.delete(id);\n if (removed) {\n this.updateBreakpointList();\n }\n return removed;\n }\n\n /**\n * Remove all breakpoints at a line\n */\n removeBreakpointsAtLine(line: number): number {\n let removed = 0;\n for (const [id, bp] of this.breakpoints) {\n if (bp.line === line) {\n this.breakpoints.delete(id);\n removed++;\n }\n }\n if (removed > 0) {\n this.updateBreakpointList();\n }\n return removed;\n }\n\n /**\n * Toggle breakpoint enabled state\n */\n toggleBreakpoint(id: string): boolean {\n const bp = this.breakpoints.get(id);\n if (bp) {\n bp.enabled = !bp.enabled;\n this.updateBreakpointList();\n return bp.enabled;\n }\n return false;\n }\n\n /**\n * Get all breakpoints\n */\n getBreakpoints(): Breakpoint[] {\n return Array.from(this.breakpoints.values());\n }\n\n /**\n * Clear all breakpoints\n */\n clearBreakpoints(): void {\n this.breakpoints.clear();\n this.updateBreakpointList();\n }\n\n /**\n * Start debugging from the beginning\n */\n async start(): Promise<void> {\n this.currentNodeIndex = 0;\n this.callStack = [];\n this.frameIdCounter = 0;\n this.runtime.reset();\n this.state.status = 'running';\n\n await this.runUntilBreakpoint();\n }\n\n /**\n * Continue execution until next breakpoint or end\n */\n async continue(): Promise<void> {\n if (this.state.status !== 'paused') return;\n\n this.state.status = 'running';\n this.currentNodeIndex++;\n await this.runUntilBreakpoint();\n }\n\n /**\n * Step into the next node\n */\n async stepInto(): Promise<void> {\n if (this.state.status !== 'paused') return;\n\n this.state.status = 'stepping';\n await this.executeStep('into');\n }\n\n /**\n * Step over the current node\n */\n async stepOver(): Promise<void> {\n if (this.state.status !== 'paused') return;\n\n this.state.status = 'stepping';\n await this.executeStep('over');\n }\n\n /**\n * Step out of the current function\n */\n async stepOut(): Promise<void> {\n if (this.state.status !== 'paused') return;\n\n this.state.status = 'stepping';\n await this.executeStep('out');\n }\n\n /**\n * Stop debugging\n */\n stop(): void {\n this.state.status = 'stopped';\n this.callStack = [];\n this.currentNodeIndex = 0;\n this.emitEvent({ type: 'state-change', data: { status: 'stopped' } });\n }\n\n /**\n * Pause execution\n */\n pause(): void {\n if (this.state.status === 'running') {\n this.state.status = 'paused';\n this.emitEvent({ type: 'state-change', data: { status: 'paused' } });\n }\n }\n\n /**\n * Get current debug state\n */\n getState(): DebugState {\n return { ...this.state };\n }\n\n /**\n * Get call stack\n */\n getCallStack(): StackFrame[] {\n return [...this.callStack];\n }\n\n /**\n * Get variables at a specific stack frame\n */\n getVariables(frameId?: number): Map<string, unknown> {\n if (frameId !== undefined) {\n const frame = this.callStack.find(f => f.id === frameId);\n return frame?.variables || new Map();\n }\n\n // Return all variables from runtime context\n return new Map(this.runtime.getContext().variables);\n }\n\n /**\n * Evaluate an expression in the current context\n */\n async evaluate(expression: string): Promise<{ value: unknown; error?: string }> {\n try {\n // Try to evaluate as a variable lookup first\n const varValue = this.runtime.getVariable(expression);\n if (varValue !== undefined) {\n return { value: varValue };\n }\n\n // Try to parse and execute as an expression\n const parseResult = this.parser.parse(expression);\n if (!parseResult.success) {\n return { value: undefined, error: parseResult.errors[0]?.message };\n }\n\n // Execute the expression\n const results = await this.runtime.executeProgram(parseResult.ast);\n const lastResult = results[results.length - 1];\n\n return { value: lastResult?.output };\n } catch (error) {\n return { value: undefined, error: String(error) };\n }\n }\n\n /**\n * Set a watch expression\n */\n watch(expression: string): { id: string; expression: string } {\n const id = `watch_${Date.now()}`;\n return { id, expression };\n }\n\n /**\n * Register an event handler\n */\n on(event: string, handler: DebugEventHandler): void {\n if (!this.eventHandlers.has(event)) {\n this.eventHandlers.set(event, []);\n }\n this.eventHandlers.get(event)!.push(handler);\n }\n\n /**\n * Remove an event handler\n */\n off(event: string, handler: DebugEventHandler): void {\n const handlers = this.eventHandlers.get(event);\n if (handlers) {\n const index = handlers.indexOf(handler);\n if (index !== -1) {\n handlers.splice(index, 1);\n }\n }\n }\n\n /**\n * Get the underlying runtime\n */\n getRuntime(): HoloScriptRuntime {\n return this.runtime;\n }\n\n // Private methods\n\n private async runUntilBreakpoint(): Promise<void> {\n while (this.currentNodeIndex < this.currentAST.length) {\n if (this.state.status === 'stopped') break;\n\n const node = this.currentAST[this.currentNodeIndex];\n\n // Check for breakpoint\n if (this.shouldBreakAt(node)) {\n this.state.status = 'paused';\n this.updateCurrentState(node);\n\n const bp = this.findBreakpointAtLine(node.line ?? 0);\n if (bp) {\n bp.hitCount++;\n this.emitEvent({\n type: 'breakpoint-hit',\n data: { breakpoint: bp, node, line: node.line ?? 0 },\n });\n }\n return;\n }\n\n // Execute the node\n await this.executeNode(node);\n this.currentNodeIndex++;\n }\n\n // Execution complete\n this.state.status = 'stopped';\n this.emitEvent({ type: 'state-change', data: { status: 'stopped', reason: 'complete' } });\n }\n\n private async executeStep(mode: StepMode): Promise<void> {\n const startStackDepth = this.callStack.length;\n\n if (this.currentNodeIndex >= this.currentAST.length) {\n this.state.status = 'stopped';\n return;\n }\n\n const node = this.currentAST[this.currentNodeIndex];\n\n switch (mode) {\n case 'into':\n // Execute one node, stepping into function calls\n await this.executeNode(node);\n this.currentNodeIndex++;\n break;\n\n case 'over':\n // Execute one node, treating function calls as single steps\n await this.executeNode(node);\n this.currentNodeIndex++;\n break;\n\n case 'out':\n // Execute until we leave the current stack frame\n while (this.currentNodeIndex < this.currentAST.length) {\n await this.executeNode(this.currentAST[this.currentNodeIndex]);\n this.currentNodeIndex++;\n\n if (this.callStack.length < startStackDepth) {\n break;\n }\n }\n break;\n }\n\n // Update state after step\n if (this.currentNodeIndex < this.currentAST.length) {\n this.state.status = 'paused';\n this.updateCurrentState(this.currentAST[this.currentNodeIndex]);\n this.emitEvent({\n type: 'step-complete',\n data: { mode, node: this.currentAST[this.currentNodeIndex] },\n });\n } else {\n this.state.status = 'stopped';\n this.emitEvent({ type: 'state-change', data: { status: 'stopped', reason: 'complete' } });\n }\n }\n\n private async executeNode(node: ASTNode): Promise<void> {\n // Push stack frame for functions\n if (node.type === 'function') {\n const funcNode = node as ASTNode & { name: string };\n this.pushStackFrame(funcNode.name, node);\n }\n\n try {\n // Execute via runtime\n const result = await this.runtime.executeNode(node);\n\n if (!result.success && result.error) {\n this.emitEvent({\n type: 'exception',\n data: { error: result.error, node, line: node.line },\n });\n }\n\n if (result.output !== undefined) {\n this.emitEvent({\n type: 'output',\n data: { output: result.output, node },\n });\n }\n } catch (error) {\n this.emitEvent({\n type: 'exception',\n data: { error: String(error), node, line: node.line },\n });\n }\n\n // Pop stack frame when function completes\n if (node.type === 'function') {\n this.popStackFrame();\n }\n }\n\n private shouldBreakAt(node: ASTNode): boolean {\n const line = node.line;\n\n for (const bp of this.breakpoints.values()) {\n if (!bp.enabled) continue;\n if (bp.line !== line) continue;\n\n // Check condition if present\n if (bp.condition) {\n try {\n const value = this.runtime.getVariable(bp.condition);\n if (!value) continue;\n } catch {\n continue;\n }\n }\n\n return true;\n }\n\n return false;\n }\n\n private findBreakpointAtLine(line: number): Breakpoint | null {\n for (const bp of this.breakpoints.values()) {\n if (bp.line === line && bp.enabled) {\n return bp;\n }\n }\n return null;\n }\n\n private pushStackFrame(name: string, node: ASTNode): void {\n const frame: StackFrame = {\n id: ++this.frameIdCounter,\n name,\n file: (node as ASTNode & { file?: string }).file,\n line: node.line ?? 0,\n column: node.column ?? 0,\n variables: new Map(this.runtime.getContext().variables),\n node,\n };\n\n this.callStack.push(frame);\n this.state.callStack = [...this.callStack];\n }\n\n private popStackFrame(): StackFrame | undefined {\n const frame = this.callStack.pop();\n this.state.callStack = [...this.callStack];\n return frame;\n }\n\n private updateCurrentState(node: ASTNode): void {\n this.state.currentLine = node.line ?? 0;\n this.state.currentColumn = node.column ?? 0;\n this.state.currentNode = node;\n }\n\n private updateBreakpointList(): void {\n this.state.breakpoints = Array.from(this.breakpoints.values());\n }\n\n private emitEvent(event: DebugEvent): void {\n const handlers = this.eventHandlers.get(event.type) || [];\n for (const handler of handlers) {\n try {\n handler(event);\n } catch (error) {\n console.error('Debug event handler error:', error);\n }\n }\n\n // Also emit to 'all' handlers\n const allHandlers = this.eventHandlers.get('all') || [];\n for (const handler of allHandlers) {\n try {\n handler(event);\n } catch (error) {\n console.error('Debug event handler error:', error);\n }\n }\n }\n}\n\n/**\n * Create a debugger instance\n */\nexport function createDebugger(runtime?: HoloScriptRuntime): HoloScriptDebugger {\n return new HoloScriptDebugger(runtime);\n}\n"]}
1
+ {"version":3,"sources":["../src/HoloScriptDebugger.ts"],"names":["HoloScriptRuntime","HoloScriptCodeParser"],"mappings":"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","file":"chunk-R75MREOS.cjs","sourcesContent":["/**\n * HoloScript Debugger\n *\n * Step-through debugging with breakpoints, call stack inspection,\n * and variable watch capabilities.\n */\n\nimport { HoloScriptRuntime } from './HoloScriptRuntime';\nimport { HoloScriptCodeParser } from './HoloScriptCodeParser';\nimport type { ASTNode } from './types';\n\nexport interface Breakpoint {\n id: string;\n line: number;\n column?: number;\n condition?: string;\n hitCount: number;\n enabled: boolean;\n file?: string;\n}\n\nexport interface StackFrame {\n id: number;\n name: string;\n file?: string;\n line: number;\n column: number;\n variables: Map<string, unknown>;\n node: ASTNode;\n}\n\nexport interface DebugState {\n status: 'running' | 'paused' | 'stopped' | 'stepping';\n currentLine: number;\n currentColumn: number;\n currentNode: ASTNode | null;\n callStack: StackFrame[];\n breakpoints: Breakpoint[];\n}\n\nexport type StepMode = 'into' | 'over' | 'out';\n\nexport interface DebugEvent {\n type: 'breakpoint-hit' | 'step-complete' | 'exception' | 'output' | 'state-change';\n data: unknown;\n}\n\ntype DebugEventHandler = (event: DebugEvent) => void;\n\n/**\n * HoloScript Debugger with breakpoints and step-through execution\n */\nexport class HoloScriptDebugger {\n private runtime: HoloScriptRuntime;\n private parser: HoloScriptCodeParser;\n private breakpoints: Map<string, Breakpoint> = new Map();\n private callStack: StackFrame[] = [];\n private currentAST: ASTNode[] = [];\n private currentNodeIndex: number = 0;\n private frameIdCounter: number = 0;\n private breakpointIdCounter: number = 0;\n private eventHandlers: Map<string, DebugEventHandler[]> = new Map();\n\n private state: DebugState = {\n status: 'stopped',\n currentLine: 0,\n currentColumn: 0,\n currentNode: null,\n callStack: [],\n breakpoints: [],\n };\n\n constructor(runtime?: HoloScriptRuntime) {\n this.runtime = runtime || new HoloScriptRuntime();\n this.parser = new HoloScriptCodeParser();\n }\n\n /**\n * Load source code for debugging\n */\n loadSource(code: string, file?: string): { success: boolean; errors?: string[] } {\n const parseResult = this.parser.parse(code);\n\n if (!parseResult.success) {\n return {\n success: false,\n errors: parseResult.errors.map(e => `Line ${e.line}: ${e.message}`),\n };\n }\n\n this.currentAST = parseResult.ast;\n this.currentNodeIndex = 0;\n this.state.status = 'stopped';\n this.callStack = [];\n\n // Store file reference in nodes\n if (file) {\n for (const node of this.currentAST) {\n (node as ASTNode & { file?: string }).file = file;\n }\n }\n\n return { success: true };\n }\n\n /**\n * Set a breakpoint at a line\n */\n setBreakpoint(line: number, options: Partial<Breakpoint> = {}): Breakpoint {\n const id = `bp_${++this.breakpointIdCounter}`;\n const breakpoint: Breakpoint = {\n id,\n line,\n column: options.column,\n condition: options.condition,\n hitCount: 0,\n enabled: options.enabled !== false,\n file: options.file,\n };\n\n this.breakpoints.set(id, breakpoint);\n this.updateBreakpointList();\n\n return breakpoint;\n }\n\n /**\n * Remove a breakpoint by ID\n */\n removeBreakpoint(id: string): boolean {\n const removed = this.breakpoints.delete(id);\n if (removed) {\n this.updateBreakpointList();\n }\n return removed;\n }\n\n /**\n * Remove all breakpoints at a line\n */\n removeBreakpointsAtLine(line: number): number {\n let removed = 0;\n for (const [id, bp] of this.breakpoints) {\n if (bp.line === line) {\n this.breakpoints.delete(id);\n removed++;\n }\n }\n if (removed > 0) {\n this.updateBreakpointList();\n }\n return removed;\n }\n\n /**\n * Toggle breakpoint enabled state\n */\n toggleBreakpoint(id: string): boolean {\n const bp = this.breakpoints.get(id);\n if (bp) {\n bp.enabled = !bp.enabled;\n this.updateBreakpointList();\n return bp.enabled;\n }\n return false;\n }\n\n /**\n * Get all breakpoints\n */\n getBreakpoints(): Breakpoint[] {\n return Array.from(this.breakpoints.values());\n }\n\n /**\n * Clear all breakpoints\n */\n clearBreakpoints(): void {\n this.breakpoints.clear();\n this.updateBreakpointList();\n }\n\n /**\n * Start debugging from the beginning\n */\n async start(): Promise<void> {\n this.currentNodeIndex = 0;\n this.callStack = [];\n this.frameIdCounter = 0;\n this.runtime.reset();\n this.state.status = 'running';\n\n await this.runUntilBreakpoint();\n }\n\n /**\n * Continue execution until next breakpoint or end\n */\n async continue(): Promise<void> {\n if (this.state.status !== 'paused') return;\n\n this.state.status = 'running';\n this.currentNodeIndex++;\n await this.runUntilBreakpoint();\n }\n\n /**\n * Step into the next node\n */\n async stepInto(): Promise<void> {\n if (this.state.status !== 'paused') return;\n\n this.state.status = 'stepping';\n await this.executeStep('into');\n }\n\n /**\n * Step over the current node\n */\n async stepOver(): Promise<void> {\n if (this.state.status !== 'paused') return;\n\n this.state.status = 'stepping';\n await this.executeStep('over');\n }\n\n /**\n * Step out of the current function\n */\n async stepOut(): Promise<void> {\n if (this.state.status !== 'paused') return;\n\n this.state.status = 'stepping';\n await this.executeStep('out');\n }\n\n /**\n * Stop debugging\n */\n stop(): void {\n this.state.status = 'stopped';\n this.callStack = [];\n this.currentNodeIndex = 0;\n this.emitEvent({ type: 'state-change', data: { status: 'stopped' } });\n }\n\n /**\n * Pause execution\n */\n pause(): void {\n if (this.state.status === 'running') {\n this.state.status = 'paused';\n this.emitEvent({ type: 'state-change', data: { status: 'paused' } });\n }\n }\n\n /**\n * Get current debug state\n */\n getState(): DebugState {\n return { ...this.state };\n }\n\n /**\n * Get call stack\n */\n getCallStack(): StackFrame[] {\n return [...this.callStack];\n }\n\n /**\n * Get variables at a specific stack frame\n */\n getVariables(frameId?: number): Map<string, unknown> {\n if (frameId !== undefined) {\n const frame = this.callStack.find(f => f.id === frameId);\n return frame?.variables || new Map();\n }\n\n // Return all variables from runtime context\n return new Map(this.runtime.getContext().variables);\n }\n\n /**\n * Evaluate an expression in the current context\n */\n async evaluate(expression: string): Promise<{ value: unknown; error?: string }> {\n try {\n // Try to evaluate as a variable lookup first\n const varValue = this.runtime.getVariable(expression);\n if (varValue !== undefined) {\n return { value: varValue };\n }\n\n // Try to parse and execute as an expression\n const parseResult = this.parser.parse(expression);\n if (!parseResult.success) {\n return { value: undefined, error: parseResult.errors[0]?.message };\n }\n\n // Execute the expression\n const results = await this.runtime.executeProgram(parseResult.ast);\n const lastResult = results[results.length - 1];\n\n return { value: lastResult?.output };\n } catch (error) {\n return { value: undefined, error: String(error) };\n }\n }\n\n /**\n * Set a watch expression\n */\n watch(expression: string): { id: string; expression: string } {\n const id = `watch_${Date.now()}`;\n return { id, expression };\n }\n\n /**\n * Register an event handler\n */\n on(event: string, handler: DebugEventHandler): void {\n if (!this.eventHandlers.has(event)) {\n this.eventHandlers.set(event, []);\n }\n this.eventHandlers.get(event)!.push(handler);\n }\n\n /**\n * Remove an event handler\n */\n off(event: string, handler: DebugEventHandler): void {\n const handlers = this.eventHandlers.get(event);\n if (handlers) {\n const index = handlers.indexOf(handler);\n if (index !== -1) {\n handlers.splice(index, 1);\n }\n }\n }\n\n /**\n * Get the underlying runtime\n */\n getRuntime(): HoloScriptRuntime {\n return this.runtime;\n }\n\n // Private methods\n\n private async runUntilBreakpoint(): Promise<void> {\n while (this.currentNodeIndex < this.currentAST.length) {\n if (this.state.status === 'stopped') break;\n\n const node = this.currentAST[this.currentNodeIndex];\n\n // Check for breakpoint\n if (this.shouldBreakAt(node)) {\n this.state.status = 'paused';\n this.updateCurrentState(node);\n\n const bp = this.findBreakpointAtLine(node.line ?? 0);\n if (bp) {\n bp.hitCount++;\n this.emitEvent({\n type: 'breakpoint-hit',\n data: { breakpoint: bp, node, line: node.line ?? 0 },\n });\n }\n return;\n }\n\n // Execute the node\n await this.executeNode(node);\n this.currentNodeIndex++;\n }\n\n // Execution complete\n this.state.status = 'stopped';\n this.emitEvent({ type: 'state-change', data: { status: 'stopped', reason: 'complete' } });\n }\n\n private async executeStep(mode: StepMode): Promise<void> {\n const startStackDepth = this.callStack.length;\n\n if (this.currentNodeIndex >= this.currentAST.length) {\n this.state.status = 'stopped';\n return;\n }\n\n const node = this.currentAST[this.currentNodeIndex];\n\n switch (mode) {\n case 'into':\n // Execute one node, stepping into function calls\n await this.executeNode(node);\n this.currentNodeIndex++;\n break;\n\n case 'over':\n // Execute one node, treating function calls as single steps\n await this.executeNode(node);\n this.currentNodeIndex++;\n break;\n\n case 'out':\n // Execute until we leave the current stack frame\n while (this.currentNodeIndex < this.currentAST.length) {\n await this.executeNode(this.currentAST[this.currentNodeIndex]);\n this.currentNodeIndex++;\n\n if (this.callStack.length < startStackDepth) {\n break;\n }\n }\n break;\n }\n\n // Update state after step\n if (this.currentNodeIndex < this.currentAST.length) {\n this.state.status = 'paused';\n this.updateCurrentState(this.currentAST[this.currentNodeIndex]);\n this.emitEvent({\n type: 'step-complete',\n data: { mode, node: this.currentAST[this.currentNodeIndex] },\n });\n } else {\n this.state.status = 'stopped';\n this.emitEvent({ type: 'state-change', data: { status: 'stopped', reason: 'complete' } });\n }\n }\n\n private async executeNode(node: ASTNode): Promise<void> {\n // Push stack frame for functions\n if (node.type === 'function') {\n const funcNode = node as ASTNode & { name: string };\n this.pushStackFrame(funcNode.name, node);\n }\n\n try {\n // Execute via runtime\n const result = await this.runtime.executeNode(node);\n\n if (!result.success && result.error) {\n this.emitEvent({\n type: 'exception',\n data: { error: result.error, node, line: node.line },\n });\n }\n\n if (result.output !== undefined) {\n this.emitEvent({\n type: 'output',\n data: { output: result.output, node },\n });\n }\n } catch (error) {\n this.emitEvent({\n type: 'exception',\n data: { error: String(error), node, line: node.line },\n });\n }\n\n // Pop stack frame when function completes\n if (node.type === 'function') {\n this.popStackFrame();\n }\n }\n\n private shouldBreakAt(node: ASTNode): boolean {\n const line = node.line;\n\n for (const bp of this.breakpoints.values()) {\n if (!bp.enabled) continue;\n if (bp.line !== line) continue;\n\n // Check condition if present\n if (bp.condition) {\n try {\n const value = this.runtime.getVariable(bp.condition);\n if (!value) continue;\n } catch {\n continue;\n }\n }\n\n return true;\n }\n\n return false;\n }\n\n private findBreakpointAtLine(line: number): Breakpoint | null {\n for (const bp of this.breakpoints.values()) {\n if (bp.line === line && bp.enabled) {\n return bp;\n }\n }\n return null;\n }\n\n private pushStackFrame(name: string, node: ASTNode): void {\n const frame: StackFrame = {\n id: ++this.frameIdCounter,\n name,\n file: (node as ASTNode & { file?: string }).file,\n line: node.line ?? 0,\n column: node.column ?? 0,\n variables: new Map(this.runtime.getContext().variables),\n node,\n };\n\n this.callStack.push(frame);\n this.state.callStack = [...this.callStack];\n }\n\n private popStackFrame(): StackFrame | undefined {\n const frame = this.callStack.pop();\n this.state.callStack = [...this.callStack];\n return frame;\n }\n\n private updateCurrentState(node: ASTNode): void {\n this.state.currentLine = node.line ?? 0;\n this.state.currentColumn = node.column ?? 0;\n this.state.currentNode = node;\n }\n\n private updateBreakpointList(): void {\n this.state.breakpoints = Array.from(this.breakpoints.values());\n }\n\n private emitEvent(event: DebugEvent): void {\n const handlers = this.eventHandlers.get(event.type) || [];\n for (const handler of handlers) {\n try {\n handler(event);\n } catch (error) {\n console.error('Debug event handler error:', error);\n }\n }\n\n // Also emit to 'all' handlers\n const allHandlers = this.eventHandlers.get('all') || [];\n for (const handler of allHandlers) {\n try {\n handler(event);\n } catch (error) {\n console.error('Debug event handler error:', error);\n }\n }\n }\n}\n\n/**\n * Create a debugger instance\n */\nexport function createDebugger(runtime?: HoloScriptRuntime): HoloScriptDebugger {\n return new HoloScriptDebugger(runtime);\n}\n"]}