@qontinui/ui-bridge 0.2.0 → 0.3.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 (108) hide show
  1. package/dist/ai/index.d.mts +4 -4
  2. package/dist/ai/index.d.ts +4 -4
  3. package/dist/babel-plugin/index.js +515 -0
  4. package/dist/babel-plugin/index.js.map +1 -0
  5. package/dist/babel-plugin/index.mjs +499 -0
  6. package/dist/babel-plugin/index.mjs.map +1 -0
  7. package/dist/control/index.d.mts +5 -5
  8. package/dist/control/index.d.ts +5 -5
  9. package/dist/core/index.d.mts +115 -44
  10. package/dist/core/index.d.ts +115 -44
  11. package/dist/core/index.js +0 -1560
  12. package/dist/core/index.js.map +1 -1
  13. package/dist/core/index.mjs +1 -1549
  14. package/dist/core/index.mjs.map +1 -1
  15. package/dist/debug/index.d.mts +3 -3
  16. package/dist/debug/index.d.ts +3 -3
  17. package/dist/index.d.mts +7 -8
  18. package/dist/index.d.ts +7 -8
  19. package/dist/index.js +859 -873
  20. package/dist/index.js.map +1 -1
  21. package/dist/index.mjs +860 -862
  22. package/dist/index.mjs.map +1 -1
  23. package/dist/{metrics-C9XRi_mL.d.ts → metrics-BfiT_rhZ.d.ts} +2 -2
  24. package/dist/{metrics-NC3csD0R.d.mts → metrics-DTA2bwG7.d.mts} +2 -2
  25. package/dist/native/control/index.js +453 -0
  26. package/dist/native/control/index.js.map +1 -0
  27. package/dist/native/control/index.mjs +450 -0
  28. package/dist/native/control/index.mjs.map +1 -0
  29. package/dist/native/core/index.js +486 -0
  30. package/dist/native/core/index.js.map +1 -0
  31. package/dist/native/core/index.mjs +475 -0
  32. package/dist/native/core/index.mjs.map +1 -0
  33. package/dist/native/debug/index.js +451 -0
  34. package/dist/native/debug/index.js.map +1 -0
  35. package/dist/native/debug/index.mjs +449 -0
  36. package/dist/native/debug/index.mjs.map +1 -0
  37. package/dist/native/index.js +2274 -0
  38. package/dist/native/index.js.map +1 -0
  39. package/dist/native/index.mjs +2246 -0
  40. package/dist/native/index.mjs.map +1 -0
  41. package/dist/native/react/index.js +1401 -0
  42. package/dist/native/react/index.js.map +1 -0
  43. package/dist/native/react/index.mjs +1389 -0
  44. package/dist/native/react/index.mjs.map +1 -0
  45. package/dist/native/server/index.js +415 -0
  46. package/dist/native/server/index.js.map +1 -0
  47. package/dist/native/server/index.mjs +410 -0
  48. package/dist/native/server/index.mjs.map +1 -0
  49. package/dist/react/index.d.mts +20 -7
  50. package/dist/react/index.d.ts +20 -7
  51. package/dist/react/index.js +42 -4
  52. package/dist/react/index.js.map +1 -1
  53. package/dist/react/index.mjs +42 -4
  54. package/dist/react/index.mjs.map +1 -1
  55. package/dist/{registry-CIEDjbQ9.d.ts → registry-BKLEm-yk.d.ts} +9 -15
  56. package/dist/{registry-SsSDq46X.d.mts → registry-BmZgyCz8.d.mts} +9 -15
  57. package/dist/render-log/index.d.mts +1 -1
  58. package/dist/render-log/index.d.ts +1 -1
  59. package/dist/server/express.d.mts +36 -0
  60. package/dist/server/express.d.ts +36 -0
  61. package/dist/server/express.js +196 -0
  62. package/dist/server/express.js.map +1 -0
  63. package/dist/server/express.mjs +192 -0
  64. package/dist/server/express.mjs.map +1 -0
  65. package/dist/server/handlers.d.mts +93 -0
  66. package/dist/server/handlers.d.ts +93 -0
  67. package/dist/server/handlers.js +4278 -0
  68. package/dist/server/handlers.js.map +1 -0
  69. package/dist/server/handlers.mjs +4275 -0
  70. package/dist/server/handlers.mjs.map +1 -0
  71. package/dist/server/index.d.mts +10 -0
  72. package/dist/server/index.d.ts +10 -0
  73. package/dist/server/index.js +5352 -0
  74. package/dist/server/index.js.map +1 -0
  75. package/dist/server/index.mjs +5337 -0
  76. package/dist/server/index.mjs.map +1 -0
  77. package/dist/server/nextjs.d.mts +126 -0
  78. package/dist/server/nextjs.d.ts +126 -0
  79. package/dist/server/nextjs.js +287 -0
  80. package/dist/server/nextjs.js.map +1 -0
  81. package/dist/server/nextjs.mjs +282 -0
  82. package/dist/server/nextjs.mjs.map +1 -0
  83. package/dist/server/standalone.d.mts +6 -0
  84. package/dist/server/standalone.d.ts +6 -0
  85. package/dist/server/standalone.js +719 -0
  86. package/dist/server/standalone.js.map +1 -0
  87. package/dist/server/standalone.mjs +715 -0
  88. package/dist/server/standalone.mjs.map +1 -0
  89. package/dist/standalone-BURj8J3G.d.ts +212 -0
  90. package/dist/standalone-Dwmel29d.d.mts +212 -0
  91. package/dist/swc-plugin/index.d.mts +79 -0
  92. package/dist/swc-plugin/index.d.ts +79 -0
  93. package/dist/swc-plugin/index.js +15 -0
  94. package/dist/swc-plugin/index.js.map +1 -0
  95. package/dist/swc-plugin/index.mjs +9 -0
  96. package/dist/swc-plugin/index.mjs.map +1 -0
  97. package/dist/{types-CFT3Dnx4.d.mts → types-B5Q0GVo0.d.mts} +115 -3
  98. package/dist/{types-Dr6tH-bm.d.mts → types-B7J7noLK.d.mts} +1 -1
  99. package/dist/{types-oCTrRxSw.d.ts → types-BkNRILUa.d.ts} +1 -1
  100. package/dist/types-CEQLnFMv.d.mts +156 -0
  101. package/dist/types-CHnlwiTK.d.ts +156 -0
  102. package/dist/{types-BvCfFuEV.d.ts → types-DfPqwU-i.d.ts} +115 -3
  103. package/dist/{types-CPMbN_Iw.d.mts → types-jKVgTI6_.d.mts} +356 -160
  104. package/dist/{types-CPMbN_Iw.d.ts → types-jKVgTI6_.d.ts} +356 -160
  105. package/package.json +106 -3
  106. package/swc-plugin-wasm/ui_bridge_swc_plugin.wasm +0 -0
  107. package/dist/websocket-client-CX4QJesI.d.ts +0 -124
  108. package/dist/websocket-client-C_Na0OSp.d.mts +0 -124
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/server/types.ts","../../src/server/websocket-handler.ts","../../src/server/standalone.ts"],"names":[],"mappings":"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","file":"standalone.mjs","sourcesContent":["/**\n * UI Bridge Server Types\n *\n * Shared types for server adapters.\n */\n\nimport type { UIBridgeConfig } from '../core';\nimport type {\n ControlActionRequest,\n ControlActionResponse,\n ComponentActionRequest,\n ComponentActionResponse,\n FindRequest,\n FindResponse,\n ControlSnapshot,\n WorkflowRunRequest,\n WorkflowRunResponse,\n} from '../control';\nimport type { RenderLogEntry, RenderLogEntryType } from '../render-log';\nimport type {\n SearchCriteria,\n SearchResponse,\n NLActionRequest,\n NLActionResponse,\n AssertionRequest,\n AssertionResult,\n BatchAssertionRequest,\n BatchAssertionResult,\n SemanticSnapshot,\n SemanticDiff,\n SemanticSearchCriteria,\n SemanticSearchResponse,\n} from '../ai';\n\n/**\n * Server configuration\n */\nexport interface UIBridgeServerConfig extends UIBridgeConfig {\n /** Base path for API routes */\n basePath?: string;\n /** Enable CORS */\n cors?: boolean | CORSOptions;\n /** Authentication middleware */\n authenticate?: (req: unknown) => boolean | Promise<boolean>;\n /** Rate limiting */\n rateLimit?: RateLimitOptions;\n}\n\n/**\n * CORS options\n */\nexport interface CORSOptions {\n /** Allowed origins */\n origin?: string | string[] | boolean;\n /** Allowed methods */\n methods?: string[];\n /** Allowed headers */\n headers?: string[];\n /** Expose headers */\n exposeHeaders?: string[];\n /** Allow credentials */\n credentials?: boolean;\n /** Max age for preflight cache */\n maxAge?: number;\n}\n\n/**\n * Rate limit options\n */\nexport interface RateLimitOptions {\n /** Time window in milliseconds */\n windowMs?: number;\n /** Max requests per window */\n max?: number;\n /** Message when rate limited */\n message?: string;\n}\n\n/**\n * API response wrapper\n */\nexport interface APIResponse<T = unknown> {\n /** Whether the request succeeded */\n success: boolean;\n /** Response data */\n data?: T;\n /** Error message if failed */\n error?: string;\n /** Error code */\n code?: string;\n /** Request timestamp */\n timestamp: number;\n}\n\n/**\n * Render log query parameters\n */\nexport interface RenderLogQuery {\n /** Filter by entry type */\n type?: RenderLogEntryType;\n /** Filter entries since timestamp */\n since?: number;\n /** Filter entries until timestamp */\n until?: number;\n /** Limit number of results */\n limit?: number;\n}\n\n/**\n * Server handler interface\n *\n * Implementations provide these handlers for different frameworks.\n */\nexport interface UIBridgeServerHandlers {\n // Render log endpoints\n getRenderLog: (query?: RenderLogQuery) => Promise<APIResponse<RenderLogEntry[]>>;\n clearRenderLog: () => Promise<APIResponse<void>>;\n captureSnapshot: () => Promise<APIResponse<unknown>>;\n getRenderLogPath: () => Promise<APIResponse<{ path: string }>>;\n\n // Control endpoints\n getElements: () => Promise<APIResponse<ControlSnapshot['elements']>>;\n getElement: (id: string) => Promise<APIResponse<ControlSnapshot['elements'][0]>>;\n getElementState: (id: string) => Promise<APIResponse<unknown>>;\n executeElementAction: (\n id: string,\n request: ControlActionRequest\n ) => Promise<APIResponse<ControlActionResponse>>;\n\n // Component endpoints\n getComponents: () => Promise<APIResponse<ControlSnapshot['components']>>;\n getComponent: (id: string) => Promise<APIResponse<ControlSnapshot['components'][0]>>;\n getComponentState: (id: string) => Promise<APIResponse<{ state: Record<string, unknown>; computed: Record<string, unknown>; timestamp: number }>>;\n executeComponentAction: (\n id: string,\n request: ComponentActionRequest\n ) => Promise<APIResponse<ComponentActionResponse>>;\n\n // Find endpoints\n find: (request?: FindRequest) => Promise<APIResponse<FindResponse>>;\n /**\n * @deprecated Use find() instead\n */\n discover: (request?: FindRequest) => Promise<APIResponse<FindResponse>>;\n getControlSnapshot: () => Promise<APIResponse<ControlSnapshot>>;\n\n // Workflow endpoints\n getWorkflows: () => Promise<APIResponse<ControlSnapshot['workflows']>>;\n runWorkflow: (\n id: string,\n request?: WorkflowRunRequest\n ) => Promise<APIResponse<WorkflowRunResponse>>;\n getWorkflowStatus: (runId: string) => Promise<APIResponse<WorkflowRunResponse>>;\n\n // Debug endpoints\n getActionHistory: (limit?: number) => Promise<APIResponse<unknown[]>>;\n getMetrics: () => Promise<APIResponse<unknown>>;\n highlightElement: (id: string) => Promise<APIResponse<void>>;\n getElementTree: () => Promise<APIResponse<unknown>>;\n\n // AI-native endpoints\n aiSearch: (criteria: SearchCriteria) => Promise<APIResponse<SearchResponse>>;\n aiExecute: (request: NLActionRequest) => Promise<APIResponse<NLActionResponse>>;\n aiAssert: (request: AssertionRequest) => Promise<APIResponse<AssertionResult>>;\n aiAssertBatch: (request: BatchAssertionRequest) => Promise<APIResponse<BatchAssertionResult>>;\n getSemanticSnapshot: () => Promise<APIResponse<SemanticSnapshot>>;\n getSemanticDiff: (since?: number) => Promise<APIResponse<SemanticDiff | null>>;\n getPageSummary: () => Promise<APIResponse<string>>;\n\n // Semantic search (embedding-based)\n aiSemanticSearch: (criteria: SemanticSearchCriteria) => Promise<APIResponse<SemanticSearchResponse>>;\n}\n\n/**\n * Route definition\n */\nexport interface RouteDefinition {\n method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';\n path: string;\n handler: string; // Key in UIBridgeServerHandlers\n params?: string[]; // URL params to extract\n bodyRequired?: boolean;\n}\n\n/**\n * All UI Bridge routes\n */\nexport const UI_BRIDGE_ROUTES: RouteDefinition[] = [\n // Render log\n { method: 'GET', path: '/render-log', handler: 'getRenderLog' },\n { method: 'DELETE', path: '/render-log', handler: 'clearRenderLog' },\n { method: 'POST', path: '/render-log/snapshot', handler: 'captureSnapshot' },\n { method: 'GET', path: '/render-log/path', handler: 'getRenderLogPath' },\n\n // Control - Elements\n { method: 'GET', path: '/control/elements', handler: 'getElements' },\n { method: 'GET', path: '/control/element/:id', handler: 'getElement', params: ['id'] },\n { method: 'GET', path: '/control/element/:id/state', handler: 'getElementState', params: ['id'] },\n {\n method: 'POST',\n path: '/control/element/:id/action',\n handler: 'executeElementAction',\n params: ['id'],\n bodyRequired: true,\n },\n\n // Control - Components\n { method: 'GET', path: '/control/components', handler: 'getComponents' },\n { method: 'GET', path: '/control/component/:id', handler: 'getComponent', params: ['id'] },\n { method: 'GET', path: '/control/component/:id/state', handler: 'getComponentState', params: ['id'] },\n {\n method: 'POST',\n path: '/control/component/:id/action/:actionId',\n handler: 'executeComponentAction',\n params: ['id', 'actionId'],\n bodyRequired: true,\n },\n\n // Find (formerly Discovery)\n { method: 'POST', path: '/control/find', handler: 'find' },\n { method: 'POST', path: '/control/discover', handler: 'discover' }, // @deprecated Use /control/find\n { method: 'GET', path: '/control/snapshot', handler: 'getControlSnapshot' },\n\n // Workflows\n { method: 'GET', path: '/control/workflows', handler: 'getWorkflows' },\n { method: 'POST', path: '/control/workflow/:id/run', handler: 'runWorkflow', params: ['id'] },\n {\n method: 'GET',\n path: '/control/workflow/:runId/status',\n handler: 'getWorkflowStatus',\n params: ['runId'],\n },\n\n // Debug\n { method: 'GET', path: '/debug/action-history', handler: 'getActionHistory' },\n { method: 'GET', path: '/debug/metrics', handler: 'getMetrics' },\n { method: 'POST', path: '/debug/highlight/:id', handler: 'highlightElement', params: ['id'] },\n { method: 'GET', path: '/debug/element-tree', handler: 'getElementTree' },\n\n // AI-native endpoints\n { method: 'POST', path: '/ai/search', handler: 'aiSearch', bodyRequired: true },\n { method: 'POST', path: '/ai/execute', handler: 'aiExecute', bodyRequired: true },\n { method: 'POST', path: '/ai/assert', handler: 'aiAssert', bodyRequired: true },\n { method: 'POST', path: '/ai/assert/batch', handler: 'aiAssertBatch', bodyRequired: true },\n { method: 'GET', path: '/ai/snapshot', handler: 'getSemanticSnapshot' },\n { method: 'GET', path: '/ai/diff', handler: 'getSemanticDiff' },\n { method: 'GET', path: '/ai/summary', handler: 'getPageSummary' },\n { method: 'POST', path: '/ai/semantic-search', handler: 'aiSemanticSearch', bodyRequired: true },\n];\n\n/**\n * WebSocket message types\n */\nexport type WebSocketMessageType =\n | 'subscribe'\n | 'unsubscribe'\n | 'event'\n | 'snapshot'\n | 'action'\n | 'error';\n\n/**\n * WebSocket message\n */\nexport interface WebSocketMessage<T = unknown> {\n type: WebSocketMessageType;\n channel?: string;\n data?: T;\n error?: string;\n timestamp: number;\n}\n","/**\n * WebSocket Handler for UI Bridge Server\n *\n * Handles WebSocket connections and message routing.\n */\n\nimport type { UIBridgeServerHandlers } from './types';\nimport type {\n BridgeEvent,\n BridgeEventType,\n WSClientMessage,\n WSServerMessage,\n WSWelcomeMessage,\n WSPongMessage,\n WSSubscribedMessage,\n WSUnsubscribedMessage,\n WSEventMessage,\n WSResponseMessage,\n WSErrorMessage,\n} from '../core';\n\n/**\n * WebSocket-like interface for compatibility\n */\nexport interface WebSocketLike {\n send(data: string): void;\n close(): void;\n readyState: number;\n onmessage?: ((event: { data: string }) => void) | null;\n onclose?: (() => void) | null;\n onerror?: ((error: unknown) => void) | null;\n}\n\n/**\n * Client subscription state\n */\ninterface ClientSubscription {\n events: Set<BridgeEventType>;\n elementIds: Set<string>;\n componentIds: Set<string>;\n}\n\n/**\n * Connected client info\n */\ninterface ConnectedClient {\n id: string;\n ws: WebSocketLike;\n subscription: ClientSubscription;\n connectedAt: number;\n}\n\n/**\n * Generate unique ID\n */\nfunction generateId(): string {\n return `${Date.now()}-${Math.random().toString(36).slice(2, 11)}`;\n}\n\n/**\n * UI Bridge server version\n */\nconst VERSION = '0.1.0';\n\n/**\n * WebSocket handler for UI Bridge server\n */\nexport class UIBridgeWSHandler {\n private handlers: UIBridgeServerHandlers;\n private clients = new Map<string, ConnectedClient>();\n private verbose: boolean;\n private log: (message: string) => void;\n\n constructor(\n handlers: UIBridgeServerHandlers,\n options: { verbose?: boolean; log?: (message: string) => void } = {}\n ) {\n this.handlers = handlers;\n this.verbose = options.verbose ?? false;\n this.log = options.log ?? console.log;\n }\n\n /**\n * Handle new WebSocket connection\n */\n handleConnection(ws: WebSocketLike): string {\n const clientId = generateId();\n\n const client: ConnectedClient = {\n id: clientId,\n ws,\n subscription: {\n events: new Set(),\n elementIds: new Set(),\n componentIds: new Set(),\n },\n connectedAt: Date.now(),\n };\n\n this.clients.set(clientId, client);\n\n if (this.verbose) {\n this.log(`[WS] Client connected: ${clientId}`);\n }\n\n // Set up message handler\n ws.onmessage = (event: { data: string }) => {\n this.handleMessage(clientId, event.data);\n };\n\n // Set up close handler\n ws.onclose = () => {\n this.handleDisconnect(clientId);\n };\n\n // Send welcome message\n this.sendToClient(clientId, {\n id: generateId(),\n type: 'welcome',\n timestamp: Date.now(),\n payload: {\n version: VERSION,\n features: {\n renderLog: true,\n control: true,\n debug: true,\n },\n clientId,\n },\n } as WSWelcomeMessage);\n\n return clientId;\n }\n\n /**\n * Handle client disconnect\n */\n handleDisconnect(clientId: string): void {\n this.clients.delete(clientId);\n\n if (this.verbose) {\n this.log(`[WS] Client disconnected: ${clientId}`);\n }\n }\n\n /**\n * Handle incoming message\n */\n private async handleMessage(clientId: string, data: string): Promise<void> {\n const client = this.clients.get(clientId);\n if (!client) return;\n\n let message: WSClientMessage;\n try {\n message = JSON.parse(data) as WSClientMessage;\n } catch (error) {\n this.sendError(clientId, undefined, 'PARSE_ERROR', 'Invalid JSON message');\n return;\n }\n\n if (this.verbose) {\n this.log(`[WS] ${clientId} -> ${message.type}`);\n }\n\n try {\n switch (message.type) {\n case 'ping':\n this.handlePing(clientId, message.id);\n break;\n\n case 'subscribe':\n await this.handleSubscribe(clientId, message);\n break;\n\n case 'unsubscribe':\n await this.handleUnsubscribe(clientId, message);\n break;\n\n case 'find':\n await this.handleFind(clientId, message);\n break;\n\n case 'discover':\n // @deprecated Use 'find' instead\n await this.handleFind(clientId, message as unknown as WSClientMessage & { type: 'find' });\n break;\n\n case 'getElement':\n await this.handleGetElement(clientId, message);\n break;\n\n case 'getSnapshot':\n await this.handleGetSnapshot(clientId, message);\n break;\n\n case 'executeAction':\n await this.handleExecuteAction(clientId, message);\n break;\n\n case 'executeComponentAction':\n await this.handleExecuteComponentAction(clientId, message);\n break;\n\n case 'executeWorkflow':\n await this.handleExecuteWorkflow(clientId, message);\n break;\n\n default:\n this.sendError(\n clientId,\n (message as WSClientMessage).id,\n 'UNKNOWN_MESSAGE',\n `Unknown message type: ${(message as WSClientMessage).type}`\n );\n }\n } catch (error) {\n const err = error instanceof Error ? error : new Error(String(error));\n this.sendError(clientId, message.id, 'HANDLER_ERROR', err.message);\n }\n }\n\n /**\n * Handle ping message\n */\n private handlePing(clientId: string, _requestId: string): void {\n this.sendToClient(clientId, {\n id: generateId(),\n type: 'pong',\n timestamp: Date.now(),\n } as WSPongMessage);\n }\n\n /**\n * Handle subscribe message\n */\n private async handleSubscribe(\n clientId: string,\n message: WSClientMessage & { type: 'subscribe' }\n ): Promise<void> {\n const client = this.clients.get(clientId);\n if (!client) return;\n\n const { events, elementIds, componentIds } = message.payload;\n\n // Add to subscriptions\n if (events?.length) {\n for (const event of events) {\n client.subscription.events.add(event);\n }\n }\n if (elementIds?.length) {\n for (const id of elementIds) {\n client.subscription.elementIds.add(id);\n }\n }\n if (componentIds?.length) {\n for (const id of componentIds) {\n client.subscription.componentIds.add(id);\n }\n }\n\n this.sendToClient(clientId, {\n id: generateId(),\n type: 'subscribed',\n timestamp: Date.now(),\n payload: {\n events: Array.from(client.subscription.events),\n },\n } as WSSubscribedMessage);\n }\n\n /**\n * Handle unsubscribe message\n */\n private async handleUnsubscribe(\n clientId: string,\n message: WSClientMessage & { type: 'unsubscribe' }\n ): Promise<void> {\n const client = this.clients.get(clientId);\n if (!client) return;\n\n const { events } = message.payload;\n\n let removedEvents: BridgeEventType[];\n if (events?.length) {\n removedEvents = events.filter((e: BridgeEventType) => client.subscription.events.has(e));\n for (const event of events) {\n client.subscription.events.delete(event);\n }\n } else {\n removedEvents = Array.from(client.subscription.events);\n client.subscription.events.clear();\n client.subscription.elementIds.clear();\n client.subscription.componentIds.clear();\n }\n\n this.sendToClient(clientId, {\n id: generateId(),\n type: 'unsubscribed',\n timestamp: Date.now(),\n payload: {\n events: removedEvents,\n },\n } as WSUnsubscribedMessage);\n }\n\n /**\n * Handle find message\n */\n private async handleFind(\n clientId: string,\n message: WSClientMessage & { type: 'find' }\n ): Promise<void> {\n const result = await this.handlers.find(message.payload || {});\n\n if (result.success && result.data) {\n this.sendResponse(clientId, message.id, true, { elements: result.data.elements });\n } else {\n this.sendResponse(clientId, message.id, false, undefined, result.error);\n }\n }\n\n /**\n * Handle getElement message\n */\n private async handleGetElement(\n clientId: string,\n message: WSClientMessage & { type: 'getElement' }\n ): Promise<void> {\n const { elementId } = message.payload;\n const result = await this.handlers.getElement(elementId);\n\n if (result.success) {\n this.sendResponse(clientId, message.id, true, { element: result.data });\n } else {\n this.sendResponse(clientId, message.id, false, undefined, result.error);\n }\n }\n\n /**\n * Handle getSnapshot message\n */\n private async handleGetSnapshot(\n clientId: string,\n message: WSClientMessage & { type: 'getSnapshot' }\n ): Promise<void> {\n const result = await this.handlers.getControlSnapshot();\n\n if (result.success) {\n this.sendResponse(clientId, message.id, true, result.data);\n } else {\n this.sendResponse(clientId, message.id, false, undefined, result.error);\n }\n }\n\n /**\n * Handle executeAction message\n */\n private async handleExecuteAction(\n clientId: string,\n message: WSClientMessage & { type: 'executeAction' }\n ): Promise<void> {\n const { elementId, action } = message.payload;\n const result = await this.handlers.executeElementAction(elementId, action);\n\n this.sendResponse(clientId, message.id, result.success, result.data, result.error);\n }\n\n /**\n * Handle executeComponentAction message\n */\n private async handleExecuteComponentAction(\n clientId: string,\n message: WSClientMessage & { type: 'executeComponentAction' }\n ): Promise<void> {\n const { componentId, action, params } = message.payload;\n const result = await this.handlers.executeComponentAction(componentId, { action, params });\n\n this.sendResponse(clientId, message.id, result.success, result.data, result.error);\n }\n\n /**\n * Handle executeWorkflow message\n */\n private async handleExecuteWorkflow(\n clientId: string,\n message: WSClientMessage & { type: 'executeWorkflow' }\n ): Promise<void> {\n const { workflowId, params } = message.payload;\n\n // Note: Progress streaming would need to be added to the handlers interface\n // For now, we just run the workflow without progress callbacks\n const result = await this.handlers.runWorkflow(workflowId, { params });\n\n this.sendResponse(clientId, message.id, result.success, result.data, result.error);\n }\n\n /**\n * Broadcast event to all subscribed clients\n */\n broadcastEvent(event: BridgeEvent): void {\n for (const [clientId, client] of this.clients) {\n // Check if client is subscribed to this event type\n if (\n client.subscription.events.size === 0 ||\n client.subscription.events.has(event.type)\n ) {\n // Check element/component filters if applicable\n const eventData = event.data as { elementId?: string; componentId?: string };\n\n if (\n eventData.elementId &&\n client.subscription.elementIds.size > 0 &&\n !client.subscription.elementIds.has(eventData.elementId)\n ) {\n continue;\n }\n\n if (\n eventData.componentId &&\n client.subscription.componentIds.size > 0 &&\n !client.subscription.componentIds.has(eventData.componentId)\n ) {\n continue;\n }\n\n this.sendToClient(clientId, {\n id: generateId(),\n type: 'event',\n timestamp: Date.now(),\n payload: event,\n } as WSEventMessage);\n }\n }\n }\n\n /**\n * Send message to specific client\n */\n private sendToClient(clientId: string, message: WSServerMessage): void {\n const client = this.clients.get(clientId);\n if (!client || client.ws.readyState !== 1) return;\n\n try {\n client.ws.send(JSON.stringify(message));\n\n if (this.verbose && message.type !== 'pong') {\n this.log(`[WS] ${clientId} <- ${message.type}`);\n }\n } catch (error) {\n console.error(`Failed to send message to ${clientId}:`, error);\n }\n }\n\n /**\n * Send response message\n */\n private sendResponse<T>(\n clientId: string,\n requestId: string,\n success: boolean,\n data?: T,\n error?: string\n ): void {\n this.sendToClient(clientId, {\n id: generateId(),\n type: 'response',\n timestamp: Date.now(),\n requestId,\n payload: {\n success,\n data,\n error,\n },\n } as WSResponseMessage<T>);\n }\n\n /**\n * Send error message\n */\n private sendError(\n clientId: string,\n requestId: string | undefined,\n code: string,\n message: string\n ): void {\n this.sendToClient(clientId, {\n id: generateId(),\n type: 'error',\n timestamp: Date.now(),\n requestId,\n payload: {\n code,\n message,\n },\n } as WSErrorMessage);\n }\n\n /**\n * Get connected client count\n */\n get clientCount(): number {\n return this.clients.size;\n }\n\n /**\n * Get all connected client IDs\n */\n get clientIds(): string[] {\n return Array.from(this.clients.keys());\n }\n\n /**\n * Disconnect all clients\n */\n disconnectAll(): void {\n for (const [_clientId, client] of this.clients) {\n try {\n client.ws.close();\n } catch {\n // Ignore close errors\n }\n }\n this.clients.clear();\n }\n}\n","/**\n * Standalone Server\n *\n * Standalone HTTP server for UI Bridge that can run independently.\n * Supports both HTTP and WebSocket connections.\n */\n\nimport type {\n UIBridgeServerConfig,\n UIBridgeServerHandlers,\n APIResponse,\n WebSocketMessage,\n} from './types';\nimport { UI_BRIDGE_ROUTES } from './types';\nimport { UIBridgeWSHandler, type WebSocketLike } from './websocket-handler';\nimport type { BridgeEvent } from '../core';\n\n/**\n * Standalone server configuration\n */\nexport interface StandaloneServerConfig extends UIBridgeServerConfig {\n /** Host to bind to */\n host?: string;\n /** Port to listen on */\n port?: number;\n /** Enable WebSocket support */\n websocket?: boolean;\n /** WebSocket port (defaults to port) */\n websocketPort?: number;\n /** Logging function */\n log?: (message: string) => void;\n}\n\n/**\n * Default configuration\n */\nconst DEFAULT_CONFIG: Required<\n Pick<StandaloneServerConfig, 'host' | 'port' | 'websocket' | 'websocketPort' | 'log'>\n> = {\n host: 'localhost',\n port: 9876,\n websocket: false,\n websocketPort: 9876,\n log: console.log,\n};\n\n/**\n * Wrap error in API format\n */\nfunction wrapError(error: Error | string, code?: string): APIResponse<never> {\n return {\n success: false,\n error: typeof error === 'string' ? error : error.message,\n code,\n timestamp: Date.now(),\n };\n}\n\n/**\n * Simple HTTP server implementation using Node.js built-in http module\n * with optional WebSocket support.\n */\nexport class StandaloneServer {\n private server: import('http').Server | null = null;\n private wsServer: unknown = null; // WebSocket.Server from 'ws' package\n private config: Required<\n Pick<StandaloneServerConfig, 'host' | 'port' | 'websocket' | 'websocketPort' | 'log'>\n > &\n StandaloneServerConfig;\n private handlers: UIBridgeServerHandlers;\n private wsHandler: UIBridgeWSHandler | null = null;\n private wsConnections: Set<WebSocketLike> = new Set();\n\n constructor(handlers: UIBridgeServerHandlers, config: StandaloneServerConfig = {}) {\n this.handlers = handlers;\n this.config = { ...DEFAULT_CONFIG, ...config };\n\n // Create WebSocket handler if enabled\n if (this.config.websocket) {\n this.wsHandler = new UIBridgeWSHandler(handlers, {\n verbose: true,\n log: this.config.log,\n });\n }\n }\n\n /**\n * Start the server\n */\n async start(): Promise<void> {\n const http = await import('http');\n\n this.server = http.createServer(async (req, res) => {\n await this.handleRequest(req, res);\n });\n\n // Start WebSocket server if enabled\n if (this.config.websocket && this.wsHandler) {\n await this.startWebSocketServer();\n }\n\n return new Promise((resolve, reject) => {\n this.server!.listen(this.config.port, this.config.host, () => {\n this.config.log(\n `UI Bridge server listening on http://${this.config.host}:${this.config.port}`\n );\n if (this.config.websocket) {\n const wsPort = this.config.websocketPort || this.config.port;\n this.config.log(\n `UI Bridge WebSocket server listening on ws://${this.config.host}:${wsPort}`\n );\n }\n resolve();\n });\n\n this.server!.on('error', reject);\n });\n }\n\n /**\n * Start WebSocket server\n */\n private async startWebSocketServer(): Promise<void> {\n try {\n // Dynamically import ws package\n const { WebSocketServer } = await import('ws');\n\n const wsPort = this.config.websocketPort || this.config.port;\n const useSamePort = wsPort === this.config.port;\n\n if (useSamePort && this.server) {\n // Attach to same HTTP server (upgrade handling)\n this.wsServer = new WebSocketServer({ server: this.server });\n } else {\n // Create separate WebSocket server\n this.wsServer = new WebSocketServer({\n host: this.config.host,\n port: wsPort,\n });\n }\n\n const wss = this.wsServer as {\n on(event: 'connection', callback: (ws: WebSocketLike) => void): void;\n on(event: 'error', callback: (error: Error) => void): void;\n close(): void;\n };\n\n wss.on('connection', (ws) => {\n this.wsConnections.add(ws);\n this.wsHandler!.handleConnection(ws);\n\n ws.onclose = () => {\n this.wsConnections.delete(ws);\n };\n });\n\n wss.on('error', (error) => {\n this.config.log(`WebSocket server error: ${error.message}`);\n });\n } catch (error) {\n // ws package not installed - WebSocket support disabled\n this.config.log(\n 'Warning: WebSocket support requires the \"ws\" package. Install it with: npm install ws'\n );\n this.wsHandler = null;\n }\n }\n\n /**\n * Stop the server\n */\n async stop(): Promise<void> {\n // Close WebSocket handler\n if (this.wsHandler) {\n this.wsHandler.disconnectAll();\n }\n\n // Close WebSocket server\n if (this.wsServer) {\n const wss = this.wsServer as { close(): void };\n wss.close();\n this.wsServer = null;\n }\n\n // Close WebSocket connections\n for (const ws of this.wsConnections) {\n ws.close();\n }\n this.wsConnections.clear();\n\n return new Promise((resolve, reject) => {\n if (!this.server) {\n resolve();\n return;\n }\n\n this.server.close((err) => {\n if (err) reject(err);\n else resolve();\n });\n });\n }\n\n /**\n * Handle an HTTP request\n */\n private async handleRequest(\n req: import('http').IncomingMessage,\n res: import('http').ServerResponse\n ): Promise<void> {\n const url = new URL(req.url || '/', `http://${req.headers.host}`);\n const method = req.method || 'GET';\n const basePath = this.config.basePath || '/ui-bridge';\n\n // Add CORS headers\n if (this.config.cors) {\n res.setHeader('Access-Control-Allow-Origin', '*');\n res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');\n res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization');\n }\n\n // Handle preflight\n if (method === 'OPTIONS') {\n res.writeHead(204);\n res.end();\n return;\n }\n\n // Health check\n if (url.pathname === '/health') {\n this.sendJSON(res, { status: 'ok', timestamp: Date.now() });\n return;\n }\n\n // Remove base path\n let path = url.pathname;\n if (path.startsWith(basePath)) {\n path = path.slice(basePath.length) || '/';\n }\n\n // Find matching route\n const route = this.findRoute(path, method);\n if (!route) {\n this.sendJSON(res, wrapError('Not found', 'NOT_FOUND'), 404);\n return;\n }\n\n try {\n // Parse body for POST requests\n let body: unknown = {};\n if (method === 'POST') {\n body = await this.parseBody(req);\n }\n\n // Extract params\n const params = this.extractParams(path, route.path);\n\n // Get handler\n const handlerName = route.handler as keyof UIBridgeServerHandlers;\n const handler = this.handlers[handlerName];\n\n if (!handler) {\n this.sendJSON(res, wrapError('Not implemented', 'NOT_IMPLEMENTED'), 501);\n return;\n }\n\n // Build arguments\n const args: unknown[] = [];\n\n if (route.params) {\n for (const param of route.params) {\n args.push(params[param]);\n }\n }\n\n if (method === 'POST') {\n args.push(body);\n }\n\n if (method === 'GET') {\n const query = Object.fromEntries(url.searchParams);\n if (Object.keys(query).length > 0) {\n args.push(query);\n }\n }\n\n // Call handler\n const result = await (handler as (...args: unknown[]) => Promise<APIResponse<unknown>>)(\n ...args\n );\n this.sendJSON(res, result);\n } catch (error) {\n this.config.log(`Error handling ${method} ${path}: ${error}`);\n this.sendJSON(res, wrapError(error as Error, 'INTERNAL_ERROR'), 500);\n }\n }\n\n /**\n * Find a matching route\n */\n private findRoute(path: string, method: string): (typeof UI_BRIDGE_ROUTES)[0] | null {\n for (const route of UI_BRIDGE_ROUTES) {\n if (route.method !== method) continue;\n\n const routeRegex = route.path.replace(/:[^/]+/g, '([^/]+)').replace(/\\//g, '\\\\/');\n\n const regex = new RegExp(`^${routeRegex}$`);\n if (regex.test(path)) {\n return route;\n }\n }\n return null;\n }\n\n /**\n * Extract params from path\n */\n private extractParams(path: string, routePath: string): Record<string, string> {\n const params: Record<string, string> = {};\n const routeParts = routePath.split('/');\n const pathParts = path.split('/');\n\n for (let i = 0; i < routeParts.length; i++) {\n if (routeParts[i].startsWith(':')) {\n params[routeParts[i].slice(1)] = pathParts[i];\n }\n }\n\n return params;\n }\n\n /**\n * Parse request body\n */\n private parseBody(req: import('http').IncomingMessage): Promise<unknown> {\n return new Promise((resolve, reject) => {\n let data = '';\n req.on('data', (chunk) => (data += chunk));\n req.on('end', () => {\n try {\n resolve(data ? JSON.parse(data) : {});\n } catch {\n resolve({});\n }\n });\n req.on('error', reject);\n });\n }\n\n /**\n * Send JSON response\n */\n private sendJSON(res: import('http').ServerResponse, data: unknown, status = 200): void {\n res.writeHead(status, { 'Content-Type': 'application/json' });\n res.end(JSON.stringify(data));\n }\n\n /**\n * Broadcast a message to all WebSocket connections (legacy)\n */\n broadcast(message: WebSocketMessage): void {\n const data = JSON.stringify(message);\n for (const ws of this.wsConnections) {\n if (ws.readyState === 1) {\n // OPEN\n ws.send(data);\n }\n }\n }\n\n /**\n * Broadcast an event to all subscribed WebSocket clients\n */\n broadcastEvent(event: BridgeEvent): void {\n if (this.wsHandler) {\n this.wsHandler.broadcastEvent(event);\n }\n }\n\n /**\n * Get WebSocket handler for direct access\n */\n getWSHandler(): UIBridgeWSHandler | null {\n return this.wsHandler;\n }\n\n /**\n * Get number of connected WebSocket clients\n */\n get wsClientCount(): number {\n return this.wsHandler?.clientCount ?? 0;\n }\n\n /**\n * Get the server address\n */\n getAddress(): { host: string; port: number } | null {\n const address = this.server?.address();\n if (!address || typeof address === 'string') return null;\n return { host: this.config.host, port: address.port };\n }\n}\n\n/**\n * Create and start a standalone server\n */\nexport async function createStandaloneServer(\n handlers: UIBridgeServerHandlers,\n config?: StandaloneServerConfig\n): Promise<StandaloneServer> {\n const server = new StandaloneServer(handlers, config);\n await server.start();\n return server;\n}\n\n/**\n * CLI entry point\n */\nexport async function startCLI(\n handlers: UIBridgeServerHandlers,\n args: string[] = process.argv.slice(2)\n): Promise<void> {\n const config: StandaloneServerConfig = {};\n\n // Parse CLI args\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n const nextArg = args[i + 1];\n\n if (arg === '--port' || arg === '-p') {\n config.port = parseInt(nextArg);\n i++;\n } else if (arg === '--host' || arg === '-h') {\n config.host = nextArg;\n i++;\n } else if (arg === '--cors') {\n config.cors = true;\n }\n }\n\n const server = await createStandaloneServer(handlers, config);\n\n // Handle shutdown\n process.on('SIGINT', async () => {\n console.log('\\nShutting down...');\n await server.stop();\n process.exit(0);\n });\n\n process.on('SIGTERM', async () => {\n await server.stop();\n process.exit(0);\n });\n}\n"]}
@@ -0,0 +1,212 @@
1
+ import { c as UIBridgeServerHandlers, U as UIBridgeServerConfig, W as WebSocketMessage } from './types-CHnlwiTK.js';
2
+ import { i as BridgeEvent } from './types-jKVgTI6_.js';
3
+
4
+ /**
5
+ * WebSocket Handler for UI Bridge Server
6
+ *
7
+ * Handles WebSocket connections and message routing.
8
+ */
9
+
10
+ /**
11
+ * WebSocket-like interface for compatibility
12
+ */
13
+ interface WebSocketLike {
14
+ send(data: string): void;
15
+ close(): void;
16
+ readyState: number;
17
+ onmessage?: ((event: {
18
+ data: string;
19
+ }) => void) | null;
20
+ onclose?: (() => void) | null;
21
+ onerror?: ((error: unknown) => void) | null;
22
+ }
23
+ /**
24
+ * WebSocket handler for UI Bridge server
25
+ */
26
+ declare class UIBridgeWSHandler {
27
+ private handlers;
28
+ private clients;
29
+ private verbose;
30
+ private log;
31
+ constructor(handlers: UIBridgeServerHandlers, options?: {
32
+ verbose?: boolean;
33
+ log?: (message: string) => void;
34
+ });
35
+ /**
36
+ * Handle new WebSocket connection
37
+ */
38
+ handleConnection(ws: WebSocketLike): string;
39
+ /**
40
+ * Handle client disconnect
41
+ */
42
+ handleDisconnect(clientId: string): void;
43
+ /**
44
+ * Handle incoming message
45
+ */
46
+ private handleMessage;
47
+ /**
48
+ * Handle ping message
49
+ */
50
+ private handlePing;
51
+ /**
52
+ * Handle subscribe message
53
+ */
54
+ private handleSubscribe;
55
+ /**
56
+ * Handle unsubscribe message
57
+ */
58
+ private handleUnsubscribe;
59
+ /**
60
+ * Handle find message
61
+ */
62
+ private handleFind;
63
+ /**
64
+ * Handle getElement message
65
+ */
66
+ private handleGetElement;
67
+ /**
68
+ * Handle getSnapshot message
69
+ */
70
+ private handleGetSnapshot;
71
+ /**
72
+ * Handle executeAction message
73
+ */
74
+ private handleExecuteAction;
75
+ /**
76
+ * Handle executeComponentAction message
77
+ */
78
+ private handleExecuteComponentAction;
79
+ /**
80
+ * Handle executeWorkflow message
81
+ */
82
+ private handleExecuteWorkflow;
83
+ /**
84
+ * Broadcast event to all subscribed clients
85
+ */
86
+ broadcastEvent(event: BridgeEvent): void;
87
+ /**
88
+ * Send message to specific client
89
+ */
90
+ private sendToClient;
91
+ /**
92
+ * Send response message
93
+ */
94
+ private sendResponse;
95
+ /**
96
+ * Send error message
97
+ */
98
+ private sendError;
99
+ /**
100
+ * Get connected client count
101
+ */
102
+ get clientCount(): number;
103
+ /**
104
+ * Get all connected client IDs
105
+ */
106
+ get clientIds(): string[];
107
+ /**
108
+ * Disconnect all clients
109
+ */
110
+ disconnectAll(): void;
111
+ }
112
+
113
+ /**
114
+ * Standalone Server
115
+ *
116
+ * Standalone HTTP server for UI Bridge that can run independently.
117
+ * Supports both HTTP and WebSocket connections.
118
+ */
119
+
120
+ /**
121
+ * Standalone server configuration
122
+ */
123
+ interface StandaloneServerConfig extends UIBridgeServerConfig {
124
+ /** Host to bind to */
125
+ host?: string;
126
+ /** Port to listen on */
127
+ port?: number;
128
+ /** Enable WebSocket support */
129
+ websocket?: boolean;
130
+ /** WebSocket port (defaults to port) */
131
+ websocketPort?: number;
132
+ /** Logging function */
133
+ log?: (message: string) => void;
134
+ }
135
+ /**
136
+ * Simple HTTP server implementation using Node.js built-in http module
137
+ * with optional WebSocket support.
138
+ */
139
+ declare class StandaloneServer {
140
+ private server;
141
+ private wsServer;
142
+ private config;
143
+ private handlers;
144
+ private wsHandler;
145
+ private wsConnections;
146
+ constructor(handlers: UIBridgeServerHandlers, config?: StandaloneServerConfig);
147
+ /**
148
+ * Start the server
149
+ */
150
+ start(): Promise<void>;
151
+ /**
152
+ * Start WebSocket server
153
+ */
154
+ private startWebSocketServer;
155
+ /**
156
+ * Stop the server
157
+ */
158
+ stop(): Promise<void>;
159
+ /**
160
+ * Handle an HTTP request
161
+ */
162
+ private handleRequest;
163
+ /**
164
+ * Find a matching route
165
+ */
166
+ private findRoute;
167
+ /**
168
+ * Extract params from path
169
+ */
170
+ private extractParams;
171
+ /**
172
+ * Parse request body
173
+ */
174
+ private parseBody;
175
+ /**
176
+ * Send JSON response
177
+ */
178
+ private sendJSON;
179
+ /**
180
+ * Broadcast a message to all WebSocket connections (legacy)
181
+ */
182
+ broadcast(message: WebSocketMessage): void;
183
+ /**
184
+ * Broadcast an event to all subscribed WebSocket clients
185
+ */
186
+ broadcastEvent(event: BridgeEvent): void;
187
+ /**
188
+ * Get WebSocket handler for direct access
189
+ */
190
+ getWSHandler(): UIBridgeWSHandler | null;
191
+ /**
192
+ * Get number of connected WebSocket clients
193
+ */
194
+ get wsClientCount(): number;
195
+ /**
196
+ * Get the server address
197
+ */
198
+ getAddress(): {
199
+ host: string;
200
+ port: number;
201
+ } | null;
202
+ }
203
+ /**
204
+ * Create and start a standalone server
205
+ */
206
+ declare function createStandaloneServer(handlers: UIBridgeServerHandlers, config?: StandaloneServerConfig): Promise<StandaloneServer>;
207
+ /**
208
+ * CLI entry point
209
+ */
210
+ declare function startCLI(handlers: UIBridgeServerHandlers, args?: string[]): Promise<void>;
211
+
212
+ export { StandaloneServer as S, UIBridgeWSHandler as U, type WebSocketLike as W, type StandaloneServerConfig as a, createStandaloneServer as c, startCLI as s };
@@ -0,0 +1,212 @@
1
+ import { c as UIBridgeServerHandlers, U as UIBridgeServerConfig, W as WebSocketMessage } from './types-CEQLnFMv.mjs';
2
+ import { i as BridgeEvent } from './types-jKVgTI6_.mjs';
3
+
4
+ /**
5
+ * WebSocket Handler for UI Bridge Server
6
+ *
7
+ * Handles WebSocket connections and message routing.
8
+ */
9
+
10
+ /**
11
+ * WebSocket-like interface for compatibility
12
+ */
13
+ interface WebSocketLike {
14
+ send(data: string): void;
15
+ close(): void;
16
+ readyState: number;
17
+ onmessage?: ((event: {
18
+ data: string;
19
+ }) => void) | null;
20
+ onclose?: (() => void) | null;
21
+ onerror?: ((error: unknown) => void) | null;
22
+ }
23
+ /**
24
+ * WebSocket handler for UI Bridge server
25
+ */
26
+ declare class UIBridgeWSHandler {
27
+ private handlers;
28
+ private clients;
29
+ private verbose;
30
+ private log;
31
+ constructor(handlers: UIBridgeServerHandlers, options?: {
32
+ verbose?: boolean;
33
+ log?: (message: string) => void;
34
+ });
35
+ /**
36
+ * Handle new WebSocket connection
37
+ */
38
+ handleConnection(ws: WebSocketLike): string;
39
+ /**
40
+ * Handle client disconnect
41
+ */
42
+ handleDisconnect(clientId: string): void;
43
+ /**
44
+ * Handle incoming message
45
+ */
46
+ private handleMessage;
47
+ /**
48
+ * Handle ping message
49
+ */
50
+ private handlePing;
51
+ /**
52
+ * Handle subscribe message
53
+ */
54
+ private handleSubscribe;
55
+ /**
56
+ * Handle unsubscribe message
57
+ */
58
+ private handleUnsubscribe;
59
+ /**
60
+ * Handle find message
61
+ */
62
+ private handleFind;
63
+ /**
64
+ * Handle getElement message
65
+ */
66
+ private handleGetElement;
67
+ /**
68
+ * Handle getSnapshot message
69
+ */
70
+ private handleGetSnapshot;
71
+ /**
72
+ * Handle executeAction message
73
+ */
74
+ private handleExecuteAction;
75
+ /**
76
+ * Handle executeComponentAction message
77
+ */
78
+ private handleExecuteComponentAction;
79
+ /**
80
+ * Handle executeWorkflow message
81
+ */
82
+ private handleExecuteWorkflow;
83
+ /**
84
+ * Broadcast event to all subscribed clients
85
+ */
86
+ broadcastEvent(event: BridgeEvent): void;
87
+ /**
88
+ * Send message to specific client
89
+ */
90
+ private sendToClient;
91
+ /**
92
+ * Send response message
93
+ */
94
+ private sendResponse;
95
+ /**
96
+ * Send error message
97
+ */
98
+ private sendError;
99
+ /**
100
+ * Get connected client count
101
+ */
102
+ get clientCount(): number;
103
+ /**
104
+ * Get all connected client IDs
105
+ */
106
+ get clientIds(): string[];
107
+ /**
108
+ * Disconnect all clients
109
+ */
110
+ disconnectAll(): void;
111
+ }
112
+
113
+ /**
114
+ * Standalone Server
115
+ *
116
+ * Standalone HTTP server for UI Bridge that can run independently.
117
+ * Supports both HTTP and WebSocket connections.
118
+ */
119
+
120
+ /**
121
+ * Standalone server configuration
122
+ */
123
+ interface StandaloneServerConfig extends UIBridgeServerConfig {
124
+ /** Host to bind to */
125
+ host?: string;
126
+ /** Port to listen on */
127
+ port?: number;
128
+ /** Enable WebSocket support */
129
+ websocket?: boolean;
130
+ /** WebSocket port (defaults to port) */
131
+ websocketPort?: number;
132
+ /** Logging function */
133
+ log?: (message: string) => void;
134
+ }
135
+ /**
136
+ * Simple HTTP server implementation using Node.js built-in http module
137
+ * with optional WebSocket support.
138
+ */
139
+ declare class StandaloneServer {
140
+ private server;
141
+ private wsServer;
142
+ private config;
143
+ private handlers;
144
+ private wsHandler;
145
+ private wsConnections;
146
+ constructor(handlers: UIBridgeServerHandlers, config?: StandaloneServerConfig);
147
+ /**
148
+ * Start the server
149
+ */
150
+ start(): Promise<void>;
151
+ /**
152
+ * Start WebSocket server
153
+ */
154
+ private startWebSocketServer;
155
+ /**
156
+ * Stop the server
157
+ */
158
+ stop(): Promise<void>;
159
+ /**
160
+ * Handle an HTTP request
161
+ */
162
+ private handleRequest;
163
+ /**
164
+ * Find a matching route
165
+ */
166
+ private findRoute;
167
+ /**
168
+ * Extract params from path
169
+ */
170
+ private extractParams;
171
+ /**
172
+ * Parse request body
173
+ */
174
+ private parseBody;
175
+ /**
176
+ * Send JSON response
177
+ */
178
+ private sendJSON;
179
+ /**
180
+ * Broadcast a message to all WebSocket connections (legacy)
181
+ */
182
+ broadcast(message: WebSocketMessage): void;
183
+ /**
184
+ * Broadcast an event to all subscribed WebSocket clients
185
+ */
186
+ broadcastEvent(event: BridgeEvent): void;
187
+ /**
188
+ * Get WebSocket handler for direct access
189
+ */
190
+ getWSHandler(): UIBridgeWSHandler | null;
191
+ /**
192
+ * Get number of connected WebSocket clients
193
+ */
194
+ get wsClientCount(): number;
195
+ /**
196
+ * Get the server address
197
+ */
198
+ getAddress(): {
199
+ host: string;
200
+ port: number;
201
+ } | null;
202
+ }
203
+ /**
204
+ * Create and start a standalone server
205
+ */
206
+ declare function createStandaloneServer(handlers: UIBridgeServerHandlers, config?: StandaloneServerConfig): Promise<StandaloneServer>;
207
+ /**
208
+ * CLI entry point
209
+ */
210
+ declare function startCLI(handlers: UIBridgeServerHandlers, args?: string[]): Promise<void>;
211
+
212
+ export { StandaloneServer as S, UIBridgeWSHandler as U, type WebSocketLike as W, type StandaloneServerConfig as a, createStandaloneServer as c, startCLI as s };
@@ -0,0 +1,79 @@
1
+ /**
2
+ * UI Bridge SWC Plugin Configuration
3
+ */
4
+ interface UIBridgeSwcPluginConfig {
5
+ /**
6
+ * Elements to automatically instrument
7
+ * @default ['button', 'input', 'select', 'textarea', 'a', 'form']
8
+ */
9
+ elements?: string[];
10
+ /**
11
+ * Prefix for generated IDs
12
+ * @default 'ui'
13
+ */
14
+ idPrefix?: string;
15
+ /**
16
+ * Attribute name for the generated ID
17
+ * @default 'data-ui-id'
18
+ */
19
+ idAttribute?: string;
20
+ /**
21
+ * Attribute name for aliases
22
+ * @default 'data-ui-aliases'
23
+ */
24
+ aliasesAttribute?: string;
25
+ /**
26
+ * Attribute name for element type
27
+ * @default 'data-ui-type'
28
+ */
29
+ typeAttribute?: string;
30
+ /**
31
+ * Generate aliases from text content
32
+ * @default true
33
+ */
34
+ generateAliases?: boolean;
35
+ /**
36
+ * Include component name in generated ID
37
+ * @default true
38
+ */
39
+ includeComponentName?: boolean;
40
+ /**
41
+ * Include file path in generated ID
42
+ * @default false
43
+ */
44
+ includeFilePath?: boolean;
45
+ /**
46
+ * Hash the generated ID for shorter strings
47
+ * @default false
48
+ */
49
+ hashIds?: boolean;
50
+ /**
51
+ * Maximum alias count per element
52
+ * @default 5
53
+ */
54
+ maxAliases?: number;
55
+ /**
56
+ * Skip elements that already have data-ui-id
57
+ * @default true
58
+ */
59
+ skipExisting?: boolean;
60
+ /**
61
+ * Only instrument elements inside components with specific names
62
+ * @default []
63
+ */
64
+ onlyInComponents?: string[];
65
+ /**
66
+ * Skip instrumentation for elements inside these components
67
+ * @default []
68
+ */
69
+ skipInComponents?: string[];
70
+ /**
71
+ * Enable verbose logging during build
72
+ * @default false
73
+ */
74
+ verbose?: boolean;
75
+ }
76
+
77
+ declare const pluginPath: string;
78
+
79
+ export { type UIBridgeSwcPluginConfig, pluginPath as default };