@qontinui/ui-bridge 0.2.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. package/dist/ai/index.d.mts +312 -155
  2. package/dist/ai/index.d.ts +312 -155
  3. package/dist/ai/index.js +2363 -67
  4. package/dist/ai/index.js.map +1 -1
  5. package/dist/ai/index.mjs +2328 -68
  6. package/dist/ai/index.mjs.map +1 -1
  7. package/dist/annotations/index.d.mts +218 -0
  8. package/dist/annotations/index.d.ts +218 -0
  9. package/dist/annotations/index.js +246 -0
  10. package/dist/annotations/index.js.map +1 -0
  11. package/dist/annotations/index.mjs +241 -0
  12. package/dist/annotations/index.mjs.map +1 -0
  13. package/dist/assertions-BSR3afVr.d.ts +161 -0
  14. package/dist/assertions-CTw1hfOx.d.mts +161 -0
  15. package/dist/babel-plugin/index.js +504 -0
  16. package/dist/babel-plugin/index.js.map +1 -0
  17. package/dist/babel-plugin/index.mjs +488 -0
  18. package/dist/babel-plugin/index.mjs.map +1 -0
  19. package/dist/browser-capture-Bms60T6f.d.mts +47 -0
  20. package/dist/browser-capture-CsTU29mb.d.ts +47 -0
  21. package/dist/control/index.d.mts +26 -7
  22. package/dist/control/index.d.ts +26 -7
  23. package/dist/control/index.js +276 -48
  24. package/dist/control/index.js.map +1 -1
  25. package/dist/control/index.mjs +276 -48
  26. package/dist/control/index.mjs.map +1 -1
  27. package/dist/core/index.d.mts +115 -44
  28. package/dist/core/index.d.ts +115 -44
  29. package/dist/core/index.js +0 -1560
  30. package/dist/core/index.js.map +1 -1
  31. package/dist/core/index.mjs +1 -1549
  32. package/dist/core/index.mjs.map +1 -1
  33. package/dist/debug/index.d.mts +5 -3
  34. package/dist/debug/index.d.ts +5 -3
  35. package/dist/debug/index.js +925 -1
  36. package/dist/debug/index.js.map +1 -1
  37. package/dist/debug/index.mjs +924 -2
  38. package/dist/debug/index.mjs.map +1 -1
  39. package/dist/index.d.mts +13 -9
  40. package/dist/index.d.ts +13 -9
  41. package/dist/index.js +8310 -3777
  42. package/dist/index.js.map +1 -1
  43. package/dist/index.mjs +8246 -3766
  44. package/dist/index.mjs.map +1 -1
  45. package/dist/{metrics-NC3csD0R.d.mts → metrics-DuA2qIIz.d.mts} +2 -2
  46. package/dist/{metrics-C9XRi_mL.d.ts → metrics-KFAAKNEB.d.ts} +2 -2
  47. package/dist/native/control/index.js +448 -0
  48. package/dist/native/control/index.js.map +1 -0
  49. package/dist/native/control/index.mjs +445 -0
  50. package/dist/native/control/index.mjs.map +1 -0
  51. package/dist/native/core/index.js +486 -0
  52. package/dist/native/core/index.js.map +1 -0
  53. package/dist/native/core/index.mjs +475 -0
  54. package/dist/native/core/index.mjs.map +1 -0
  55. package/dist/native/debug/index.js +408 -0
  56. package/dist/native/debug/index.js.map +1 -0
  57. package/dist/native/debug/index.mjs +406 -0
  58. package/dist/native/debug/index.mjs.map +1 -0
  59. package/dist/native/index.js +2232 -0
  60. package/dist/native/index.js.map +1 -0
  61. package/dist/native/index.mjs +2204 -0
  62. package/dist/native/index.mjs.map +1 -0
  63. package/dist/native/react/index.js +1377 -0
  64. package/dist/native/react/index.js.map +1 -0
  65. package/dist/native/react/index.mjs +1365 -0
  66. package/dist/native/react/index.mjs.map +1 -0
  67. package/dist/native/server/index.js +440 -0
  68. package/dist/native/server/index.js.map +1 -0
  69. package/dist/native/server/index.mjs +435 -0
  70. package/dist/native/server/index.mjs.map +1 -0
  71. package/dist/react/index.d.mts +121 -9
  72. package/dist/react/index.d.ts +121 -9
  73. package/dist/react/index.js +2239 -91
  74. package/dist/react/index.js.map +1 -1
  75. package/dist/react/index.mjs +2239 -92
  76. package/dist/react/index.mjs.map +1 -1
  77. package/dist/{registry-CIEDjbQ9.d.ts → registry-C6dDtn1v.d.ts} +34 -15
  78. package/dist/{registry-SsSDq46X.d.mts → registry-POtcxnal.d.mts} +34 -15
  79. package/dist/render-log/index.d.mts +1 -1
  80. package/dist/render-log/index.d.ts +1 -1
  81. package/dist/server/express.d.mts +37 -0
  82. package/dist/server/express.d.ts +37 -0
  83. package/dist/server/express.js +298 -0
  84. package/dist/server/express.js.map +1 -0
  85. package/dist/server/express.mjs +294 -0
  86. package/dist/server/express.mjs.map +1 -0
  87. package/dist/server/handlers.d.mts +124 -0
  88. package/dist/server/handlers.d.ts +124 -0
  89. package/dist/server/handlers.js +7183 -0
  90. package/dist/server/handlers.js.map +1 -0
  91. package/dist/server/handlers.mjs +7180 -0
  92. package/dist/server/handlers.mjs.map +1 -0
  93. package/dist/server/index.d.mts +12 -0
  94. package/dist/server/index.d.ts +12 -0
  95. package/dist/server/index.js +8384 -0
  96. package/dist/server/index.js.map +1 -0
  97. package/dist/server/index.mjs +8369 -0
  98. package/dist/server/index.mjs.map +1 -0
  99. package/dist/server/nextjs.d.mts +128 -0
  100. package/dist/server/nextjs.d.ts +128 -0
  101. package/dist/server/nextjs.js +390 -0
  102. package/dist/server/nextjs.js.map +1 -0
  103. package/dist/server/nextjs.mjs +385 -0
  104. package/dist/server/nextjs.mjs.map +1 -0
  105. package/dist/server/standalone.d.mts +7 -0
  106. package/dist/server/standalone.d.ts +7 -0
  107. package/dist/server/standalone.js +845 -0
  108. package/dist/server/standalone.js.map +1 -0
  109. package/dist/server/standalone.mjs +841 -0
  110. package/dist/server/standalone.mjs.map +1 -0
  111. package/dist/specs/index.d.mts +365 -0
  112. package/dist/specs/index.d.ts +365 -0
  113. package/dist/specs/index.js +2809 -0
  114. package/dist/specs/index.js.map +1 -0
  115. package/dist/specs/index.mjs +2786 -0
  116. package/dist/specs/index.mjs.map +1 -0
  117. package/dist/standalone-B6GLIEmR.d.ts +216 -0
  118. package/dist/standalone-CjdYqj3P.d.mts +216 -0
  119. package/dist/swc-plugin/index.d.mts +79 -0
  120. package/dist/swc-plugin/index.d.ts +79 -0
  121. package/dist/swc-plugin/index.js +15 -0
  122. package/dist/swc-plugin/index.js.map +1 -0
  123. package/dist/swc-plugin/index.mjs +9 -0
  124. package/dist/swc-plugin/index.mjs.map +1 -0
  125. package/dist/types-B2EfvEaq.d.ts +236 -0
  126. package/dist/{types-Dr6tH-bm.d.mts → types-C7gVYRnF.d.ts} +72 -2
  127. package/dist/{types-oCTrRxSw.d.ts → types-CJGrBEhC.d.mts} +72 -2
  128. package/dist/types-CebMQj76.d.ts +1275 -0
  129. package/dist/types-D_ypYl3T.d.mts +1275 -0
  130. package/dist/types-UBtp7R0u.d.mts +132 -0
  131. package/dist/types-UBtp7R0u.d.ts +132 -0
  132. package/dist/types-gO696T_t.d.mts +236 -0
  133. package/dist/{types-CPMbN_Iw.d.mts → types-suaYwWWg.d.mts} +519 -152
  134. package/dist/{types-CPMbN_Iw.d.ts → types-suaYwWWg.d.ts} +519 -152
  135. package/package.json +123 -4
  136. package/swc-plugin-wasm/ui_bridge_swc_plugin.wasm +0 -0
  137. package/dist/types-BvCfFuEV.d.ts +0 -534
  138. package/dist/types-CFT3Dnx4.d.mts +0 -534
  139. package/dist/websocket-client-CX4QJesI.d.ts +0 -124
  140. package/dist/websocket-client-C_Na0OSp.d.mts +0 -124
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/server/types.ts","../../src/server/nextjs.ts"],"names":[],"mappings":"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","file":"nextjs.js","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 PageNavigateRequest,\n PageNavigationResponse,\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 Intent,\n IntentSearchResponse,\n IntentExecutionResult,\n RecoveryAttemptRequest,\n RecoveryAttemptResult,\n PageDataMap,\n PageRegionMap,\n StructuredDataExtraction,\n CrossAppComparisonReport,\n ComponentInfo,\n} from '../ai';\nimport type {\n UIState,\n UIStateGroup,\n UITransition,\n PathResult,\n TransitionResult,\n NavigationResult,\n StateSnapshot,\n} from '../core';\nimport type { ElementAnnotation, AnnotationConfig, AnnotationCoverage } from '../annotations';\nimport type { CapturedError } from '../debug/browser-capture-types';\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<\n APIResponse<{\n state: Record<string, unknown>;\n computed: Record<string, unknown>;\n timestamp: number;\n }>\n >;\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 getConsoleErrors: (params?: {\n since?: number;\n limit?: number;\n }) => Promise<APIResponse<{ errors: CapturedError[]; count: number }>>;\n clearConsoleErrors: () => Promise<APIResponse<{ cleared: boolean }>>;\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: (\n criteria: SemanticSearchCriteria\n ) => Promise<APIResponse<SemanticSearchResponse>>;\n\n // State management endpoints\n getStates: () => Promise<APIResponse<UIState[]>>;\n getState: (id: string) => Promise<APIResponse<UIState>>;\n getActiveStates: () => Promise<APIResponse<UIState[]>>;\n activateState: (id: string) => Promise<APIResponse<void>>;\n deactivateState: (id: string) => Promise<APIResponse<void>>;\n getStateGroups: () => Promise<APIResponse<UIStateGroup[]>>;\n activateStateGroup: (id: string) => Promise<APIResponse<void>>;\n deactivateStateGroup: (id: string) => Promise<APIResponse<void>>;\n getTransitions: () => Promise<APIResponse<UITransition[]>>;\n canExecuteTransition: (\n id: string\n ) => Promise<APIResponse<{ canExecute: boolean; reason?: string }>>;\n executeTransition: (id: string) => Promise<APIResponse<TransitionResult>>;\n findPath: (request: { targetStates: string[] }) => Promise<APIResponse<PathResult>>;\n navigateTo: (request: { targetStates: string[] }) => Promise<APIResponse<NavigationResult>>;\n getStateSnapshot: () => Promise<APIResponse<StateSnapshot>>;\n\n // Intent endpoints\n executeIntent: (request: {\n intentId: string;\n params?: Record<string, unknown>;\n }) => Promise<APIResponse<IntentExecutionResult>>;\n findIntent: (request: { query: string }) => Promise<APIResponse<IntentSearchResponse>>;\n listIntents: () => Promise<APIResponse<Intent[]>>;\n registerIntent: (intent: Intent) => Promise<APIResponse<Intent>>;\n executeIntentFromQuery: (request: {\n query: string;\n params?: Record<string, unknown>;\n }) => Promise<APIResponse<IntentExecutionResult>>;\n\n // Recovery endpoints\n attemptRecovery: (request: RecoveryAttemptRequest) => Promise<APIResponse<RecoveryAttemptResult>>;\n\n // Cross-app analysis endpoints\n analyzePageData: () => Promise<APIResponse<PageDataMap>>;\n analyzePageRegions: () => Promise<APIResponse<PageRegionMap>>;\n analyzeStructuredData: () => Promise<APIResponse<StructuredDataExtraction>>;\n crossAppCompare: (request: {\n sourceSnapshot: SemanticSnapshot;\n targetSnapshot: SemanticSnapshot;\n sourceComponents?: ComponentInfo[];\n targetComponents?: ComponentInfo[];\n }) => Promise<APIResponse<CrossAppComparisonReport>>;\n\n // Page navigation endpoints\n pageRefresh: () => Promise<APIResponse<PageNavigationResponse>>;\n pageNavigate: (request: PageNavigateRequest) => Promise<APIResponse<PageNavigationResponse>>;\n pageGoBack: () => Promise<APIResponse<PageNavigationResponse>>;\n pageGoForward: () => Promise<APIResponse<PageNavigationResponse>>;\n\n // Annotation endpoints\n getAnnotations: () => Promise<APIResponse<Record<string, ElementAnnotation>>>;\n getAnnotation: (id: string) => Promise<APIResponse<ElementAnnotation>>;\n setAnnotation: (\n id: string,\n annotation: ElementAnnotation\n ) => Promise<APIResponse<ElementAnnotation>>;\n deleteAnnotation: (id: string) => Promise<APIResponse<void>>;\n importAnnotations: (config: AnnotationConfig) => Promise<APIResponse<{ count: number }>>;\n exportAnnotations: () => Promise<APIResponse<AnnotationConfig>>;\n getAnnotationCoverage: () => Promise<APIResponse<AnnotationCoverage>>;\n\n // Performance diagnostics endpoints\n getPerformanceEntries: () => Promise<APIResponse<unknown>>;\n clearPerformanceEntries: () => Promise<APIResponse<{ cleared: boolean }>>;\n getBrowserEvents: (params?: {\n type?: string;\n since?: number;\n limit?: number;\n }) => Promise<APIResponse<{ events: unknown[]; count: number }>>;\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 {\n method: 'GET',\n path: '/control/component/:id/state',\n handler: 'getComponentState',\n params: ['id'],\n },\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 { method: 'GET', path: '/control/console-errors', handler: 'getConsoleErrors' },\n { method: 'POST', path: '/control/console-errors/clear', handler: 'clearConsoleErrors' },\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 // State management (static routes before parameterized)\n { method: 'GET', path: '/control/states', handler: 'getStates' },\n { method: 'GET', path: '/control/states/active', handler: 'getActiveStates' },\n { method: 'GET', path: '/control/states/snapshot', handler: 'getStateSnapshot' },\n { method: 'POST', path: '/control/states/find-path', handler: 'findPath', bodyRequired: true },\n { method: 'POST', path: '/control/states/navigate', handler: 'navigateTo', bodyRequired: true },\n { method: 'GET', path: '/control/state/:id', handler: 'getState', params: ['id'] },\n { method: 'POST', path: '/control/state/:id/activate', handler: 'activateState', params: ['id'] },\n {\n method: 'POST',\n path: '/control/state/:id/deactivate',\n handler: 'deactivateState',\n params: ['id'],\n },\n { method: 'GET', path: '/control/state-groups', handler: 'getStateGroups' },\n {\n method: 'POST',\n path: '/control/state-group/:id/activate',\n handler: 'activateStateGroup',\n params: ['id'],\n },\n {\n method: 'POST',\n path: '/control/state-group/:id/deactivate',\n handler: 'deactivateStateGroup',\n params: ['id'],\n },\n { method: 'GET', path: '/control/transitions', handler: 'getTransitions' },\n {\n method: 'GET',\n path: '/control/transition/:id/can-execute',\n handler: 'canExecuteTransition',\n params: ['id'],\n },\n {\n method: 'POST',\n path: '/control/transition/:id/execute',\n handler: 'executeTransition',\n params: ['id'],\n },\n\n // Intent endpoints\n { method: 'GET', path: '/ai/intents', handler: 'listIntents' },\n { method: 'POST', path: '/ai/intents/execute', handler: 'executeIntent', bodyRequired: true },\n { method: 'POST', path: '/ai/intents/find', handler: 'findIntent', bodyRequired: true },\n { method: 'POST', path: '/ai/intents/register', handler: 'registerIntent', bodyRequired: true },\n {\n method: 'POST',\n path: '/ai/intents/execute-from-query',\n handler: 'executeIntentFromQuery',\n bodyRequired: true,\n },\n\n // Recovery endpoints\n {\n method: 'POST',\n path: '/ai/recovery/attempt',\n handler: 'attemptRecovery',\n bodyRequired: true,\n },\n\n // Cross-app analysis endpoints\n { method: 'GET', path: '/ai/analyze/data', handler: 'analyzePageData' },\n { method: 'GET', path: '/ai/analyze/regions', handler: 'analyzePageRegions' },\n { method: 'GET', path: '/ai/analyze/structured-data', handler: 'analyzeStructuredData' },\n {\n method: 'POST',\n path: '/ai/analyze/cross-app-compare',\n handler: 'crossAppCompare',\n bodyRequired: true,\n },\n\n // Page navigation\n { method: 'POST', path: '/control/page/refresh', handler: 'pageRefresh' },\n { method: 'POST', path: '/control/page/navigate', handler: 'pageNavigate', bodyRequired: true },\n { method: 'POST', path: '/control/page/back', handler: 'pageGoBack' },\n { method: 'POST', path: '/control/page/forward', handler: 'pageGoForward' },\n\n // Annotations (static routes before parameterized)\n { method: 'GET', path: '/annotations', handler: 'getAnnotations' },\n { method: 'GET', path: '/annotations/export', handler: 'exportAnnotations' },\n { method: 'GET', path: '/annotations/coverage', handler: 'getAnnotationCoverage' },\n { method: 'POST', path: '/annotations/import', handler: 'importAnnotations', bodyRequired: true },\n { method: 'GET', path: '/annotations/:id', handler: 'getAnnotation', params: ['id'] },\n {\n method: 'PUT',\n path: '/annotations/:id',\n handler: 'setAnnotation',\n params: ['id'],\n bodyRequired: true,\n },\n { method: 'DELETE', path: '/annotations/:id', handler: 'deleteAnnotation', params: ['id'] },\n\n // Performance diagnostics\n { method: 'GET', path: '/control/performance-entries', handler: 'getPerformanceEntries' },\n {\n method: 'POST',\n path: '/control/performance-entries/clear',\n handler: 'clearPerformanceEntries',\n },\n { method: 'GET', path: '/control/browser-events', handler: 'getBrowserEvents' },\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 * Next.js Adapter\n *\n * Next.js API route handlers for UI Bridge server.\n */\n\n// Define NextRequest interface locally to avoid requiring next as a dependency\ninterface NextRequest extends Request {\n nextUrl: URL;\n}\nimport type {\n UIBridgeServerConfig,\n UIBridgeServerHandlers,\n APIResponse,\n RouteDefinition,\n RenderLogQuery,\n} from './types';\nimport { UI_BRIDGE_ROUTES } from './types';\nimport type {\n ControlActionRequest,\n ComponentActionRequest,\n FindRequest,\n WorkflowRunRequest,\n} from '../control';\n\n/**\n * Next.js specific configuration\n */\nexport interface NextJSAdapterConfig extends UIBridgeServerConfig {\n /** Runtime for edge/serverless */\n runtime?: 'edge' | 'nodejs';\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 * Create JSON response\n */\nfunction jsonResponse(data: unknown, status = 200): Response {\n return new Response(JSON.stringify(data), {\n status,\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n}\n\n/**\n * Route handler factory for Next.js App Router\n */\nexport type NextRouteHandler = (\n request: NextRequest,\n context: { params: Record<string, string> }\n) => Promise<Response>;\n\n/**\n * Create Next.js route handlers for UI Bridge\n *\n * Use this to create route handlers for the App Router.\n *\n * @example\n * ```ts\n * // app/api/ui-bridge/[...path]/route.ts\n * import { createNextRouteHandlers } from 'ui-bridge-server/nextjs';\n * import { handlers } from '@/lib/ui-bridge';\n *\n * export const { GET, POST, DELETE } = createNextRouteHandlers(handlers);\n * ```\n */\nexport function createNextRouteHandlers(\n handlers: UIBridgeServerHandlers,\n config: NextJSAdapterConfig = {}\n): {\n GET: NextRouteHandler;\n POST: NextRouteHandler;\n PUT: NextRouteHandler;\n DELETE: NextRouteHandler;\n} {\n const authenticate = config.authenticate;\n\n async function handleRequest(\n request: NextRequest,\n context: { params: Record<string, string> }\n ): Promise<Response> {\n try {\n // Authentication\n if (authenticate) {\n const authenticated = await authenticate(request);\n if (!authenticated) {\n return jsonResponse(wrapError('Unauthorized', 'UNAUTHORIZED'), 401);\n }\n }\n\n // Extract path from catch-all route\n const pathParam = context.params.path;\n const path = Array.isArray(pathParam) ? '/' + pathParam.join('/') : '/' + pathParam;\n const method = request.method;\n\n // Find matching route\n const route = findMatchingRoute(path, method);\n if (!route) {\n return jsonResponse(wrapError('Not found', 'NOT_FOUND'), 404);\n }\n\n // Extract URL params\n const params = extractParams(path, route);\n\n // Get handler\n const handlerName = route.handler as keyof UIBridgeServerHandlers;\n const handler = handlers[handlerName];\n\n if (!handler) {\n return jsonResponse(wrapError('Handler not found', 'NOT_IMPLEMENTED'), 501);\n }\n\n // Build arguments\n const args: unknown[] = [];\n\n // Add URL params\n if (route.params) {\n for (const param of route.params) {\n args.push(params[param]);\n }\n }\n\n // Add body for POST/PUT/PATCH requests or when body is required\n if (route.bodyRequired || method === 'POST' || method === 'PUT' || method === 'PATCH') {\n try {\n const body = await request.json();\n args.push(body);\n } catch {\n // No body or invalid JSON\n args.push({});\n }\n }\n\n // Add query params for GET requests\n if (method === 'GET') {\n const searchParams = Object.fromEntries(request.nextUrl.searchParams);\n if (Object.keys(searchParams).length > 0) {\n args.push(searchParams);\n }\n }\n\n // Call handler\n const result = await (handler as (...args: unknown[]) => Promise<APIResponse<unknown>>)(\n ...args\n );\n return jsonResponse(result);\n } catch (error) {\n console.error('UI Bridge error:', error);\n return jsonResponse(wrapError(error as Error, 'INTERNAL_ERROR'), 500);\n }\n }\n\n return {\n GET: handleRequest,\n POST: handleRequest,\n PUT: handleRequest,\n DELETE: handleRequest,\n };\n}\n\n/**\n * Find a matching route definition\n */\nfunction findMatchingRoute(path: string, method: string): RouteDefinition | null {\n for (const route of UI_BRIDGE_ROUTES) {\n if (route.method !== method) continue;\n\n // Convert route path to regex\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 URL path based on route definition\n */\nfunction extractParams(path: string, route: RouteDefinition): Record<string, string> {\n const params: Record<string, string> = {};\n if (!route.params) return params;\n\n // Extract param values from path\n const routeParts = route.path.split('/');\n const pathParts = path.split('/');\n\n for (let i = 0; i < routeParts.length; i++) {\n const routePart = routeParts[i];\n if (routePart.startsWith(':')) {\n const paramName = routePart.slice(1);\n params[paramName] = pathParts[i];\n }\n }\n\n return params;\n}\n\n/**\n * Individual route handler creators for more granular control\n */\nexport function createRenderLogHandlers(handlers: UIBridgeServerHandlers) {\n return {\n async GET(request: NextRequest): Promise<Response> {\n const searchParams = Object.fromEntries(request.nextUrl.searchParams);\n const query: RenderLogQuery = {\n type: searchParams.type as RenderLogQuery['type'],\n since: searchParams.since ? parseInt(searchParams.since) : undefined,\n until: searchParams.until ? parseInt(searchParams.until) : undefined,\n limit: searchParams.limit ? parseInt(searchParams.limit) : undefined,\n };\n const result = await handlers.getRenderLog(query);\n return jsonResponse(result);\n },\n async DELETE(): Promise<Response> {\n const result = await handlers.clearRenderLog();\n return jsonResponse(result);\n },\n };\n}\n\nexport function createControlHandlers(handlers: UIBridgeServerHandlers) {\n return {\n elements: {\n async GET(): Promise<Response> {\n const result = await handlers.getElements();\n return jsonResponse(result);\n },\n },\n element: {\n async GET(_request: NextRequest, context: { params: { id: string } }): Promise<Response> {\n const result = await handlers.getElement(context.params.id);\n return jsonResponse(result);\n },\n async POST(request: NextRequest, context: { params: { id: string } }): Promise<Response> {\n const body = (await request.json()) as ControlActionRequest;\n const result = await handlers.executeElementAction(context.params.id, body);\n return jsonResponse(result);\n },\n },\n components: {\n async GET(): Promise<Response> {\n const result = await handlers.getComponents();\n return jsonResponse(result);\n },\n },\n component: {\n async GET(_request: NextRequest, context: { params: { id: string } }): Promise<Response> {\n const result = await handlers.getComponent(context.params.id);\n return jsonResponse(result);\n },\n async POST(\n request: NextRequest,\n context: { params: { id: string; actionId: string } }\n ): Promise<Response> {\n const body = (await request.json()) as Omit<ComponentActionRequest, 'action'>;\n const result = await handlers.executeComponentAction(context.params.id, {\n ...body,\n action: context.params.actionId,\n });\n return jsonResponse(result);\n },\n },\n find: {\n async POST(request: NextRequest): Promise<Response> {\n const body = (await request.json()) as FindRequest;\n const result = await handlers.find(body);\n return jsonResponse(result);\n },\n },\n discover: {\n /**\n * @deprecated Use /control/find instead\n */\n async POST(request: NextRequest): Promise<Response> {\n const body = (await request.json()) as FindRequest;\n const result = await handlers.discover(body);\n return jsonResponse(result);\n },\n },\n snapshot: {\n async GET(): Promise<Response> {\n const result = await handlers.getControlSnapshot();\n return jsonResponse(result);\n },\n },\n workflows: {\n async GET(): Promise<Response> {\n const result = await handlers.getWorkflows();\n return jsonResponse(result);\n },\n },\n workflow: {\n async POST(request: NextRequest, context: { params: { id: string } }): Promise<Response> {\n const body = (await request.json()) as WorkflowRunRequest;\n const result = await handlers.runWorkflow(context.params.id, body);\n return jsonResponse(result);\n },\n },\n };\n}\n\nexport function createDebugHandlers(handlers: UIBridgeServerHandlers) {\n return {\n actionHistory: {\n async GET(request: NextRequest): Promise<Response> {\n const limit = request.nextUrl.searchParams.get('limit');\n const result = await handlers.getActionHistory(limit ? parseInt(limit) : undefined);\n return jsonResponse(result);\n },\n },\n metrics: {\n async GET(): Promise<Response> {\n const result = await handlers.getMetrics();\n return jsonResponse(result);\n },\n },\n highlight: {\n async POST(_request: NextRequest, context: { params: { id: string } }): Promise<Response> {\n const result = await handlers.highlightElement(context.params.id);\n return jsonResponse(result);\n },\n },\n };\n}\n"]}
@@ -0,0 +1,385 @@
1
+ // src/server/types.ts
2
+ var UI_BRIDGE_ROUTES = [
3
+ // Render log
4
+ { method: "GET", path: "/render-log", handler: "getRenderLog" },
5
+ { method: "DELETE", path: "/render-log", handler: "clearRenderLog" },
6
+ { method: "POST", path: "/render-log/snapshot", handler: "captureSnapshot" },
7
+ { method: "GET", path: "/render-log/path", handler: "getRenderLogPath" },
8
+ // Control - Elements
9
+ { method: "GET", path: "/control/elements", handler: "getElements" },
10
+ { method: "GET", path: "/control/element/:id", handler: "getElement", params: ["id"] },
11
+ { method: "GET", path: "/control/element/:id/state", handler: "getElementState", params: ["id"] },
12
+ {
13
+ method: "POST",
14
+ path: "/control/element/:id/action",
15
+ handler: "executeElementAction",
16
+ params: ["id"],
17
+ bodyRequired: true
18
+ },
19
+ // Control - Components
20
+ { method: "GET", path: "/control/components", handler: "getComponents" },
21
+ { method: "GET", path: "/control/component/:id", handler: "getComponent", params: ["id"] },
22
+ {
23
+ method: "GET",
24
+ path: "/control/component/:id/state",
25
+ handler: "getComponentState",
26
+ params: ["id"]
27
+ },
28
+ {
29
+ method: "POST",
30
+ path: "/control/component/:id/action/:actionId",
31
+ handler: "executeComponentAction",
32
+ params: ["id", "actionId"],
33
+ bodyRequired: true
34
+ },
35
+ // Find (formerly Discovery)
36
+ { method: "POST", path: "/control/find", handler: "find" },
37
+ { method: "POST", path: "/control/discover", handler: "discover" },
38
+ // @deprecated Use /control/find
39
+ { method: "GET", path: "/control/snapshot", handler: "getControlSnapshot" },
40
+ // Workflows
41
+ { method: "GET", path: "/control/workflows", handler: "getWorkflows" },
42
+ { method: "POST", path: "/control/workflow/:id/run", handler: "runWorkflow", params: ["id"] },
43
+ {
44
+ method: "GET",
45
+ path: "/control/workflow/:runId/status",
46
+ handler: "getWorkflowStatus",
47
+ params: ["runId"]
48
+ },
49
+ // Debug
50
+ { method: "GET", path: "/debug/action-history", handler: "getActionHistory" },
51
+ { method: "GET", path: "/debug/metrics", handler: "getMetrics" },
52
+ { method: "POST", path: "/debug/highlight/:id", handler: "highlightElement", params: ["id"] },
53
+ { method: "GET", path: "/debug/element-tree", handler: "getElementTree" },
54
+ { method: "GET", path: "/control/console-errors", handler: "getConsoleErrors" },
55
+ { method: "POST", path: "/control/console-errors/clear", handler: "clearConsoleErrors" },
56
+ // AI-native endpoints
57
+ { method: "POST", path: "/ai/search", handler: "aiSearch", bodyRequired: true },
58
+ { method: "POST", path: "/ai/execute", handler: "aiExecute", bodyRequired: true },
59
+ { method: "POST", path: "/ai/assert", handler: "aiAssert", bodyRequired: true },
60
+ { method: "POST", path: "/ai/assert/batch", handler: "aiAssertBatch", bodyRequired: true },
61
+ { method: "GET", path: "/ai/snapshot", handler: "getSemanticSnapshot" },
62
+ { method: "GET", path: "/ai/diff", handler: "getSemanticDiff" },
63
+ { method: "GET", path: "/ai/summary", handler: "getPageSummary" },
64
+ { method: "POST", path: "/ai/semantic-search", handler: "aiSemanticSearch", bodyRequired: true },
65
+ // State management (static routes before parameterized)
66
+ { method: "GET", path: "/control/states", handler: "getStates" },
67
+ { method: "GET", path: "/control/states/active", handler: "getActiveStates" },
68
+ { method: "GET", path: "/control/states/snapshot", handler: "getStateSnapshot" },
69
+ { method: "POST", path: "/control/states/find-path", handler: "findPath", bodyRequired: true },
70
+ { method: "POST", path: "/control/states/navigate", handler: "navigateTo", bodyRequired: true },
71
+ { method: "GET", path: "/control/state/:id", handler: "getState", params: ["id"] },
72
+ { method: "POST", path: "/control/state/:id/activate", handler: "activateState", params: ["id"] },
73
+ {
74
+ method: "POST",
75
+ path: "/control/state/:id/deactivate",
76
+ handler: "deactivateState",
77
+ params: ["id"]
78
+ },
79
+ { method: "GET", path: "/control/state-groups", handler: "getStateGroups" },
80
+ {
81
+ method: "POST",
82
+ path: "/control/state-group/:id/activate",
83
+ handler: "activateStateGroup",
84
+ params: ["id"]
85
+ },
86
+ {
87
+ method: "POST",
88
+ path: "/control/state-group/:id/deactivate",
89
+ handler: "deactivateStateGroup",
90
+ params: ["id"]
91
+ },
92
+ { method: "GET", path: "/control/transitions", handler: "getTransitions" },
93
+ {
94
+ method: "GET",
95
+ path: "/control/transition/:id/can-execute",
96
+ handler: "canExecuteTransition",
97
+ params: ["id"]
98
+ },
99
+ {
100
+ method: "POST",
101
+ path: "/control/transition/:id/execute",
102
+ handler: "executeTransition",
103
+ params: ["id"]
104
+ },
105
+ // Intent endpoints
106
+ { method: "GET", path: "/ai/intents", handler: "listIntents" },
107
+ { method: "POST", path: "/ai/intents/execute", handler: "executeIntent", bodyRequired: true },
108
+ { method: "POST", path: "/ai/intents/find", handler: "findIntent", bodyRequired: true },
109
+ { method: "POST", path: "/ai/intents/register", handler: "registerIntent", bodyRequired: true },
110
+ {
111
+ method: "POST",
112
+ path: "/ai/intents/execute-from-query",
113
+ handler: "executeIntentFromQuery",
114
+ bodyRequired: true
115
+ },
116
+ // Recovery endpoints
117
+ {
118
+ method: "POST",
119
+ path: "/ai/recovery/attempt",
120
+ handler: "attemptRecovery",
121
+ bodyRequired: true
122
+ },
123
+ // Cross-app analysis endpoints
124
+ { method: "GET", path: "/ai/analyze/data", handler: "analyzePageData" },
125
+ { method: "GET", path: "/ai/analyze/regions", handler: "analyzePageRegions" },
126
+ { method: "GET", path: "/ai/analyze/structured-data", handler: "analyzeStructuredData" },
127
+ {
128
+ method: "POST",
129
+ path: "/ai/analyze/cross-app-compare",
130
+ handler: "crossAppCompare",
131
+ bodyRequired: true
132
+ },
133
+ // Page navigation
134
+ { method: "POST", path: "/control/page/refresh", handler: "pageRefresh" },
135
+ { method: "POST", path: "/control/page/navigate", handler: "pageNavigate", bodyRequired: true },
136
+ { method: "POST", path: "/control/page/back", handler: "pageGoBack" },
137
+ { method: "POST", path: "/control/page/forward", handler: "pageGoForward" },
138
+ // Annotations (static routes before parameterized)
139
+ { method: "GET", path: "/annotations", handler: "getAnnotations" },
140
+ { method: "GET", path: "/annotations/export", handler: "exportAnnotations" },
141
+ { method: "GET", path: "/annotations/coverage", handler: "getAnnotationCoverage" },
142
+ { method: "POST", path: "/annotations/import", handler: "importAnnotations", bodyRequired: true },
143
+ { method: "GET", path: "/annotations/:id", handler: "getAnnotation", params: ["id"] },
144
+ {
145
+ method: "PUT",
146
+ path: "/annotations/:id",
147
+ handler: "setAnnotation",
148
+ params: ["id"],
149
+ bodyRequired: true
150
+ },
151
+ { method: "DELETE", path: "/annotations/:id", handler: "deleteAnnotation", params: ["id"] },
152
+ // Performance diagnostics
153
+ { method: "GET", path: "/control/performance-entries", handler: "getPerformanceEntries" },
154
+ {
155
+ method: "POST",
156
+ path: "/control/performance-entries/clear",
157
+ handler: "clearPerformanceEntries"
158
+ },
159
+ { method: "GET", path: "/control/browser-events", handler: "getBrowserEvents" }
160
+ ];
161
+
162
+ // src/server/nextjs.ts
163
+ function wrapError(error, code) {
164
+ return {
165
+ success: false,
166
+ error: typeof error === "string" ? error : error.message,
167
+ code,
168
+ timestamp: Date.now()
169
+ };
170
+ }
171
+ function jsonResponse(data, status = 200) {
172
+ return new Response(JSON.stringify(data), {
173
+ status,
174
+ headers: {
175
+ "Content-Type": "application/json"
176
+ }
177
+ });
178
+ }
179
+ function createNextRouteHandlers(handlers, config = {}) {
180
+ const authenticate = config.authenticate;
181
+ async function handleRequest(request, context) {
182
+ try {
183
+ if (authenticate) {
184
+ const authenticated = await authenticate(request);
185
+ if (!authenticated) {
186
+ return jsonResponse(wrapError("Unauthorized", "UNAUTHORIZED"), 401);
187
+ }
188
+ }
189
+ const pathParam = context.params.path;
190
+ const path = Array.isArray(pathParam) ? "/" + pathParam.join("/") : "/" + pathParam;
191
+ const method = request.method;
192
+ const route = findMatchingRoute(path, method);
193
+ if (!route) {
194
+ return jsonResponse(wrapError("Not found", "NOT_FOUND"), 404);
195
+ }
196
+ const params = extractParams(path, route);
197
+ const handlerName = route.handler;
198
+ const handler = handlers[handlerName];
199
+ if (!handler) {
200
+ return jsonResponse(wrapError("Handler not found", "NOT_IMPLEMENTED"), 501);
201
+ }
202
+ const args = [];
203
+ if (route.params) {
204
+ for (const param of route.params) {
205
+ args.push(params[param]);
206
+ }
207
+ }
208
+ if (route.bodyRequired || method === "POST" || method === "PUT" || method === "PATCH") {
209
+ try {
210
+ const body = await request.json();
211
+ args.push(body);
212
+ } catch {
213
+ args.push({});
214
+ }
215
+ }
216
+ if (method === "GET") {
217
+ const searchParams = Object.fromEntries(request.nextUrl.searchParams);
218
+ if (Object.keys(searchParams).length > 0) {
219
+ args.push(searchParams);
220
+ }
221
+ }
222
+ const result = await handler(
223
+ ...args
224
+ );
225
+ return jsonResponse(result);
226
+ } catch (error) {
227
+ console.error("UI Bridge error:", error);
228
+ return jsonResponse(wrapError(error, "INTERNAL_ERROR"), 500);
229
+ }
230
+ }
231
+ return {
232
+ GET: handleRequest,
233
+ POST: handleRequest,
234
+ PUT: handleRequest,
235
+ DELETE: handleRequest
236
+ };
237
+ }
238
+ function findMatchingRoute(path, method) {
239
+ for (const route of UI_BRIDGE_ROUTES) {
240
+ if (route.method !== method) continue;
241
+ const routeRegex = route.path.replace(/:[^/]+/g, "([^/]+)").replace(/\//g, "\\/");
242
+ const regex = new RegExp(`^${routeRegex}$`);
243
+ if (regex.test(path)) {
244
+ return route;
245
+ }
246
+ }
247
+ return null;
248
+ }
249
+ function extractParams(path, route) {
250
+ const params = {};
251
+ if (!route.params) return params;
252
+ const routeParts = route.path.split("/");
253
+ const pathParts = path.split("/");
254
+ for (let i = 0; i < routeParts.length; i++) {
255
+ const routePart = routeParts[i];
256
+ if (routePart.startsWith(":")) {
257
+ const paramName = routePart.slice(1);
258
+ params[paramName] = pathParts[i];
259
+ }
260
+ }
261
+ return params;
262
+ }
263
+ function createRenderLogHandlers(handlers) {
264
+ return {
265
+ async GET(request) {
266
+ const searchParams = Object.fromEntries(request.nextUrl.searchParams);
267
+ const query = {
268
+ type: searchParams.type,
269
+ since: searchParams.since ? parseInt(searchParams.since) : void 0,
270
+ until: searchParams.until ? parseInt(searchParams.until) : void 0,
271
+ limit: searchParams.limit ? parseInt(searchParams.limit) : void 0
272
+ };
273
+ const result = await handlers.getRenderLog(query);
274
+ return jsonResponse(result);
275
+ },
276
+ async DELETE() {
277
+ const result = await handlers.clearRenderLog();
278
+ return jsonResponse(result);
279
+ }
280
+ };
281
+ }
282
+ function createControlHandlers(handlers) {
283
+ return {
284
+ elements: {
285
+ async GET() {
286
+ const result = await handlers.getElements();
287
+ return jsonResponse(result);
288
+ }
289
+ },
290
+ element: {
291
+ async GET(_request, context) {
292
+ const result = await handlers.getElement(context.params.id);
293
+ return jsonResponse(result);
294
+ },
295
+ async POST(request, context) {
296
+ const body = await request.json();
297
+ const result = await handlers.executeElementAction(context.params.id, body);
298
+ return jsonResponse(result);
299
+ }
300
+ },
301
+ components: {
302
+ async GET() {
303
+ const result = await handlers.getComponents();
304
+ return jsonResponse(result);
305
+ }
306
+ },
307
+ component: {
308
+ async GET(_request, context) {
309
+ const result = await handlers.getComponent(context.params.id);
310
+ return jsonResponse(result);
311
+ },
312
+ async POST(request, context) {
313
+ const body = await request.json();
314
+ const result = await handlers.executeComponentAction(context.params.id, {
315
+ ...body,
316
+ action: context.params.actionId
317
+ });
318
+ return jsonResponse(result);
319
+ }
320
+ },
321
+ find: {
322
+ async POST(request) {
323
+ const body = await request.json();
324
+ const result = await handlers.find(body);
325
+ return jsonResponse(result);
326
+ }
327
+ },
328
+ discover: {
329
+ /**
330
+ * @deprecated Use /control/find instead
331
+ */
332
+ async POST(request) {
333
+ const body = await request.json();
334
+ const result = await handlers.discover(body);
335
+ return jsonResponse(result);
336
+ }
337
+ },
338
+ snapshot: {
339
+ async GET() {
340
+ const result = await handlers.getControlSnapshot();
341
+ return jsonResponse(result);
342
+ }
343
+ },
344
+ workflows: {
345
+ async GET() {
346
+ const result = await handlers.getWorkflows();
347
+ return jsonResponse(result);
348
+ }
349
+ },
350
+ workflow: {
351
+ async POST(request, context) {
352
+ const body = await request.json();
353
+ const result = await handlers.runWorkflow(context.params.id, body);
354
+ return jsonResponse(result);
355
+ }
356
+ }
357
+ };
358
+ }
359
+ function createDebugHandlers(handlers) {
360
+ return {
361
+ actionHistory: {
362
+ async GET(request) {
363
+ const limit = request.nextUrl.searchParams.get("limit");
364
+ const result = await handlers.getActionHistory(limit ? parseInt(limit) : void 0);
365
+ return jsonResponse(result);
366
+ }
367
+ },
368
+ metrics: {
369
+ async GET() {
370
+ const result = await handlers.getMetrics();
371
+ return jsonResponse(result);
372
+ }
373
+ },
374
+ highlight: {
375
+ async POST(_request, context) {
376
+ const result = await handlers.highlightElement(context.params.id);
377
+ return jsonResponse(result);
378
+ }
379
+ }
380
+ };
381
+ }
382
+
383
+ export { createControlHandlers, createDebugHandlers, createNextRouteHandlers, createRenderLogHandlers };
384
+ //# sourceMappingURL=nextjs.mjs.map
385
+ //# sourceMappingURL=nextjs.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/server/types.ts","../../src/server/nextjs.ts"],"names":[],"mappings":"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","file":"nextjs.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 PageNavigateRequest,\n PageNavigationResponse,\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 Intent,\n IntentSearchResponse,\n IntentExecutionResult,\n RecoveryAttemptRequest,\n RecoveryAttemptResult,\n PageDataMap,\n PageRegionMap,\n StructuredDataExtraction,\n CrossAppComparisonReport,\n ComponentInfo,\n} from '../ai';\nimport type {\n UIState,\n UIStateGroup,\n UITransition,\n PathResult,\n TransitionResult,\n NavigationResult,\n StateSnapshot,\n} from '../core';\nimport type { ElementAnnotation, AnnotationConfig, AnnotationCoverage } from '../annotations';\nimport type { CapturedError } from '../debug/browser-capture-types';\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<\n APIResponse<{\n state: Record<string, unknown>;\n computed: Record<string, unknown>;\n timestamp: number;\n }>\n >;\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 getConsoleErrors: (params?: {\n since?: number;\n limit?: number;\n }) => Promise<APIResponse<{ errors: CapturedError[]; count: number }>>;\n clearConsoleErrors: () => Promise<APIResponse<{ cleared: boolean }>>;\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: (\n criteria: SemanticSearchCriteria\n ) => Promise<APIResponse<SemanticSearchResponse>>;\n\n // State management endpoints\n getStates: () => Promise<APIResponse<UIState[]>>;\n getState: (id: string) => Promise<APIResponse<UIState>>;\n getActiveStates: () => Promise<APIResponse<UIState[]>>;\n activateState: (id: string) => Promise<APIResponse<void>>;\n deactivateState: (id: string) => Promise<APIResponse<void>>;\n getStateGroups: () => Promise<APIResponse<UIStateGroup[]>>;\n activateStateGroup: (id: string) => Promise<APIResponse<void>>;\n deactivateStateGroup: (id: string) => Promise<APIResponse<void>>;\n getTransitions: () => Promise<APIResponse<UITransition[]>>;\n canExecuteTransition: (\n id: string\n ) => Promise<APIResponse<{ canExecute: boolean; reason?: string }>>;\n executeTransition: (id: string) => Promise<APIResponse<TransitionResult>>;\n findPath: (request: { targetStates: string[] }) => Promise<APIResponse<PathResult>>;\n navigateTo: (request: { targetStates: string[] }) => Promise<APIResponse<NavigationResult>>;\n getStateSnapshot: () => Promise<APIResponse<StateSnapshot>>;\n\n // Intent endpoints\n executeIntent: (request: {\n intentId: string;\n params?: Record<string, unknown>;\n }) => Promise<APIResponse<IntentExecutionResult>>;\n findIntent: (request: { query: string }) => Promise<APIResponse<IntentSearchResponse>>;\n listIntents: () => Promise<APIResponse<Intent[]>>;\n registerIntent: (intent: Intent) => Promise<APIResponse<Intent>>;\n executeIntentFromQuery: (request: {\n query: string;\n params?: Record<string, unknown>;\n }) => Promise<APIResponse<IntentExecutionResult>>;\n\n // Recovery endpoints\n attemptRecovery: (request: RecoveryAttemptRequest) => Promise<APIResponse<RecoveryAttemptResult>>;\n\n // Cross-app analysis endpoints\n analyzePageData: () => Promise<APIResponse<PageDataMap>>;\n analyzePageRegions: () => Promise<APIResponse<PageRegionMap>>;\n analyzeStructuredData: () => Promise<APIResponse<StructuredDataExtraction>>;\n crossAppCompare: (request: {\n sourceSnapshot: SemanticSnapshot;\n targetSnapshot: SemanticSnapshot;\n sourceComponents?: ComponentInfo[];\n targetComponents?: ComponentInfo[];\n }) => Promise<APIResponse<CrossAppComparisonReport>>;\n\n // Page navigation endpoints\n pageRefresh: () => Promise<APIResponse<PageNavigationResponse>>;\n pageNavigate: (request: PageNavigateRequest) => Promise<APIResponse<PageNavigationResponse>>;\n pageGoBack: () => Promise<APIResponse<PageNavigationResponse>>;\n pageGoForward: () => Promise<APIResponse<PageNavigationResponse>>;\n\n // Annotation endpoints\n getAnnotations: () => Promise<APIResponse<Record<string, ElementAnnotation>>>;\n getAnnotation: (id: string) => Promise<APIResponse<ElementAnnotation>>;\n setAnnotation: (\n id: string,\n annotation: ElementAnnotation\n ) => Promise<APIResponse<ElementAnnotation>>;\n deleteAnnotation: (id: string) => Promise<APIResponse<void>>;\n importAnnotations: (config: AnnotationConfig) => Promise<APIResponse<{ count: number }>>;\n exportAnnotations: () => Promise<APIResponse<AnnotationConfig>>;\n getAnnotationCoverage: () => Promise<APIResponse<AnnotationCoverage>>;\n\n // Performance diagnostics endpoints\n getPerformanceEntries: () => Promise<APIResponse<unknown>>;\n clearPerformanceEntries: () => Promise<APIResponse<{ cleared: boolean }>>;\n getBrowserEvents: (params?: {\n type?: string;\n since?: number;\n limit?: number;\n }) => Promise<APIResponse<{ events: unknown[]; count: number }>>;\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 {\n method: 'GET',\n path: '/control/component/:id/state',\n handler: 'getComponentState',\n params: ['id'],\n },\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 { method: 'GET', path: '/control/console-errors', handler: 'getConsoleErrors' },\n { method: 'POST', path: '/control/console-errors/clear', handler: 'clearConsoleErrors' },\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 // State management (static routes before parameterized)\n { method: 'GET', path: '/control/states', handler: 'getStates' },\n { method: 'GET', path: '/control/states/active', handler: 'getActiveStates' },\n { method: 'GET', path: '/control/states/snapshot', handler: 'getStateSnapshot' },\n { method: 'POST', path: '/control/states/find-path', handler: 'findPath', bodyRequired: true },\n { method: 'POST', path: '/control/states/navigate', handler: 'navigateTo', bodyRequired: true },\n { method: 'GET', path: '/control/state/:id', handler: 'getState', params: ['id'] },\n { method: 'POST', path: '/control/state/:id/activate', handler: 'activateState', params: ['id'] },\n {\n method: 'POST',\n path: '/control/state/:id/deactivate',\n handler: 'deactivateState',\n params: ['id'],\n },\n { method: 'GET', path: '/control/state-groups', handler: 'getStateGroups' },\n {\n method: 'POST',\n path: '/control/state-group/:id/activate',\n handler: 'activateStateGroup',\n params: ['id'],\n },\n {\n method: 'POST',\n path: '/control/state-group/:id/deactivate',\n handler: 'deactivateStateGroup',\n params: ['id'],\n },\n { method: 'GET', path: '/control/transitions', handler: 'getTransitions' },\n {\n method: 'GET',\n path: '/control/transition/:id/can-execute',\n handler: 'canExecuteTransition',\n params: ['id'],\n },\n {\n method: 'POST',\n path: '/control/transition/:id/execute',\n handler: 'executeTransition',\n params: ['id'],\n },\n\n // Intent endpoints\n { method: 'GET', path: '/ai/intents', handler: 'listIntents' },\n { method: 'POST', path: '/ai/intents/execute', handler: 'executeIntent', bodyRequired: true },\n { method: 'POST', path: '/ai/intents/find', handler: 'findIntent', bodyRequired: true },\n { method: 'POST', path: '/ai/intents/register', handler: 'registerIntent', bodyRequired: true },\n {\n method: 'POST',\n path: '/ai/intents/execute-from-query',\n handler: 'executeIntentFromQuery',\n bodyRequired: true,\n },\n\n // Recovery endpoints\n {\n method: 'POST',\n path: '/ai/recovery/attempt',\n handler: 'attemptRecovery',\n bodyRequired: true,\n },\n\n // Cross-app analysis endpoints\n { method: 'GET', path: '/ai/analyze/data', handler: 'analyzePageData' },\n { method: 'GET', path: '/ai/analyze/regions', handler: 'analyzePageRegions' },\n { method: 'GET', path: '/ai/analyze/structured-data', handler: 'analyzeStructuredData' },\n {\n method: 'POST',\n path: '/ai/analyze/cross-app-compare',\n handler: 'crossAppCompare',\n bodyRequired: true,\n },\n\n // Page navigation\n { method: 'POST', path: '/control/page/refresh', handler: 'pageRefresh' },\n { method: 'POST', path: '/control/page/navigate', handler: 'pageNavigate', bodyRequired: true },\n { method: 'POST', path: '/control/page/back', handler: 'pageGoBack' },\n { method: 'POST', path: '/control/page/forward', handler: 'pageGoForward' },\n\n // Annotations (static routes before parameterized)\n { method: 'GET', path: '/annotations', handler: 'getAnnotations' },\n { method: 'GET', path: '/annotations/export', handler: 'exportAnnotations' },\n { method: 'GET', path: '/annotations/coverage', handler: 'getAnnotationCoverage' },\n { method: 'POST', path: '/annotations/import', handler: 'importAnnotations', bodyRequired: true },\n { method: 'GET', path: '/annotations/:id', handler: 'getAnnotation', params: ['id'] },\n {\n method: 'PUT',\n path: '/annotations/:id',\n handler: 'setAnnotation',\n params: ['id'],\n bodyRequired: true,\n },\n { method: 'DELETE', path: '/annotations/:id', handler: 'deleteAnnotation', params: ['id'] },\n\n // Performance diagnostics\n { method: 'GET', path: '/control/performance-entries', handler: 'getPerformanceEntries' },\n {\n method: 'POST',\n path: '/control/performance-entries/clear',\n handler: 'clearPerformanceEntries',\n },\n { method: 'GET', path: '/control/browser-events', handler: 'getBrowserEvents' },\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 * Next.js Adapter\n *\n * Next.js API route handlers for UI Bridge server.\n */\n\n// Define NextRequest interface locally to avoid requiring next as a dependency\ninterface NextRequest extends Request {\n nextUrl: URL;\n}\nimport type {\n UIBridgeServerConfig,\n UIBridgeServerHandlers,\n APIResponse,\n RouteDefinition,\n RenderLogQuery,\n} from './types';\nimport { UI_BRIDGE_ROUTES } from './types';\nimport type {\n ControlActionRequest,\n ComponentActionRequest,\n FindRequest,\n WorkflowRunRequest,\n} from '../control';\n\n/**\n * Next.js specific configuration\n */\nexport interface NextJSAdapterConfig extends UIBridgeServerConfig {\n /** Runtime for edge/serverless */\n runtime?: 'edge' | 'nodejs';\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 * Create JSON response\n */\nfunction jsonResponse(data: unknown, status = 200): Response {\n return new Response(JSON.stringify(data), {\n status,\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n}\n\n/**\n * Route handler factory for Next.js App Router\n */\nexport type NextRouteHandler = (\n request: NextRequest,\n context: { params: Record<string, string> }\n) => Promise<Response>;\n\n/**\n * Create Next.js route handlers for UI Bridge\n *\n * Use this to create route handlers for the App Router.\n *\n * @example\n * ```ts\n * // app/api/ui-bridge/[...path]/route.ts\n * import { createNextRouteHandlers } from 'ui-bridge-server/nextjs';\n * import { handlers } from '@/lib/ui-bridge';\n *\n * export const { GET, POST, DELETE } = createNextRouteHandlers(handlers);\n * ```\n */\nexport function createNextRouteHandlers(\n handlers: UIBridgeServerHandlers,\n config: NextJSAdapterConfig = {}\n): {\n GET: NextRouteHandler;\n POST: NextRouteHandler;\n PUT: NextRouteHandler;\n DELETE: NextRouteHandler;\n} {\n const authenticate = config.authenticate;\n\n async function handleRequest(\n request: NextRequest,\n context: { params: Record<string, string> }\n ): Promise<Response> {\n try {\n // Authentication\n if (authenticate) {\n const authenticated = await authenticate(request);\n if (!authenticated) {\n return jsonResponse(wrapError('Unauthorized', 'UNAUTHORIZED'), 401);\n }\n }\n\n // Extract path from catch-all route\n const pathParam = context.params.path;\n const path = Array.isArray(pathParam) ? '/' + pathParam.join('/') : '/' + pathParam;\n const method = request.method;\n\n // Find matching route\n const route = findMatchingRoute(path, method);\n if (!route) {\n return jsonResponse(wrapError('Not found', 'NOT_FOUND'), 404);\n }\n\n // Extract URL params\n const params = extractParams(path, route);\n\n // Get handler\n const handlerName = route.handler as keyof UIBridgeServerHandlers;\n const handler = handlers[handlerName];\n\n if (!handler) {\n return jsonResponse(wrapError('Handler not found', 'NOT_IMPLEMENTED'), 501);\n }\n\n // Build arguments\n const args: unknown[] = [];\n\n // Add URL params\n if (route.params) {\n for (const param of route.params) {\n args.push(params[param]);\n }\n }\n\n // Add body for POST/PUT/PATCH requests or when body is required\n if (route.bodyRequired || method === 'POST' || method === 'PUT' || method === 'PATCH') {\n try {\n const body = await request.json();\n args.push(body);\n } catch {\n // No body or invalid JSON\n args.push({});\n }\n }\n\n // Add query params for GET requests\n if (method === 'GET') {\n const searchParams = Object.fromEntries(request.nextUrl.searchParams);\n if (Object.keys(searchParams).length > 0) {\n args.push(searchParams);\n }\n }\n\n // Call handler\n const result = await (handler as (...args: unknown[]) => Promise<APIResponse<unknown>>)(\n ...args\n );\n return jsonResponse(result);\n } catch (error) {\n console.error('UI Bridge error:', error);\n return jsonResponse(wrapError(error as Error, 'INTERNAL_ERROR'), 500);\n }\n }\n\n return {\n GET: handleRequest,\n POST: handleRequest,\n PUT: handleRequest,\n DELETE: handleRequest,\n };\n}\n\n/**\n * Find a matching route definition\n */\nfunction findMatchingRoute(path: string, method: string): RouteDefinition | null {\n for (const route of UI_BRIDGE_ROUTES) {\n if (route.method !== method) continue;\n\n // Convert route path to regex\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 URL path based on route definition\n */\nfunction extractParams(path: string, route: RouteDefinition): Record<string, string> {\n const params: Record<string, string> = {};\n if (!route.params) return params;\n\n // Extract param values from path\n const routeParts = route.path.split('/');\n const pathParts = path.split('/');\n\n for (let i = 0; i < routeParts.length; i++) {\n const routePart = routeParts[i];\n if (routePart.startsWith(':')) {\n const paramName = routePart.slice(1);\n params[paramName] = pathParts[i];\n }\n }\n\n return params;\n}\n\n/**\n * Individual route handler creators for more granular control\n */\nexport function createRenderLogHandlers(handlers: UIBridgeServerHandlers) {\n return {\n async GET(request: NextRequest): Promise<Response> {\n const searchParams = Object.fromEntries(request.nextUrl.searchParams);\n const query: RenderLogQuery = {\n type: searchParams.type as RenderLogQuery['type'],\n since: searchParams.since ? parseInt(searchParams.since) : undefined,\n until: searchParams.until ? parseInt(searchParams.until) : undefined,\n limit: searchParams.limit ? parseInt(searchParams.limit) : undefined,\n };\n const result = await handlers.getRenderLog(query);\n return jsonResponse(result);\n },\n async DELETE(): Promise<Response> {\n const result = await handlers.clearRenderLog();\n return jsonResponse(result);\n },\n };\n}\n\nexport function createControlHandlers(handlers: UIBridgeServerHandlers) {\n return {\n elements: {\n async GET(): Promise<Response> {\n const result = await handlers.getElements();\n return jsonResponse(result);\n },\n },\n element: {\n async GET(_request: NextRequest, context: { params: { id: string } }): Promise<Response> {\n const result = await handlers.getElement(context.params.id);\n return jsonResponse(result);\n },\n async POST(request: NextRequest, context: { params: { id: string } }): Promise<Response> {\n const body = (await request.json()) as ControlActionRequest;\n const result = await handlers.executeElementAction(context.params.id, body);\n return jsonResponse(result);\n },\n },\n components: {\n async GET(): Promise<Response> {\n const result = await handlers.getComponents();\n return jsonResponse(result);\n },\n },\n component: {\n async GET(_request: NextRequest, context: { params: { id: string } }): Promise<Response> {\n const result = await handlers.getComponent(context.params.id);\n return jsonResponse(result);\n },\n async POST(\n request: NextRequest,\n context: { params: { id: string; actionId: string } }\n ): Promise<Response> {\n const body = (await request.json()) as Omit<ComponentActionRequest, 'action'>;\n const result = await handlers.executeComponentAction(context.params.id, {\n ...body,\n action: context.params.actionId,\n });\n return jsonResponse(result);\n },\n },\n find: {\n async POST(request: NextRequest): Promise<Response> {\n const body = (await request.json()) as FindRequest;\n const result = await handlers.find(body);\n return jsonResponse(result);\n },\n },\n discover: {\n /**\n * @deprecated Use /control/find instead\n */\n async POST(request: NextRequest): Promise<Response> {\n const body = (await request.json()) as FindRequest;\n const result = await handlers.discover(body);\n return jsonResponse(result);\n },\n },\n snapshot: {\n async GET(): Promise<Response> {\n const result = await handlers.getControlSnapshot();\n return jsonResponse(result);\n },\n },\n workflows: {\n async GET(): Promise<Response> {\n const result = await handlers.getWorkflows();\n return jsonResponse(result);\n },\n },\n workflow: {\n async POST(request: NextRequest, context: { params: { id: string } }): Promise<Response> {\n const body = (await request.json()) as WorkflowRunRequest;\n const result = await handlers.runWorkflow(context.params.id, body);\n return jsonResponse(result);\n },\n },\n };\n}\n\nexport function createDebugHandlers(handlers: UIBridgeServerHandlers) {\n return {\n actionHistory: {\n async GET(request: NextRequest): Promise<Response> {\n const limit = request.nextUrl.searchParams.get('limit');\n const result = await handlers.getActionHistory(limit ? parseInt(limit) : undefined);\n return jsonResponse(result);\n },\n },\n metrics: {\n async GET(): Promise<Response> {\n const result = await handlers.getMetrics();\n return jsonResponse(result);\n },\n },\n highlight: {\n async POST(_request: NextRequest, context: { params: { id: string } }): Promise<Response> {\n const result = await handlers.highlightElement(context.params.id);\n return jsonResponse(result);\n },\n },\n };\n}\n"]}
@@ -0,0 +1,7 @@
1
+ import '../types-gO696T_t.mjs';
2
+ export { S as StandaloneServer, a as StandaloneServerConfig, c as createStandaloneServer, s as startCLI } from '../standalone-CjdYqj3P.mjs';
3
+ import '../types-suaYwWWg.mjs';
4
+ import '../types-CJGrBEhC.mjs';
5
+ import '../types-D_ypYl3T.mjs';
6
+ import '../render-log/index.mjs';
7
+ import '../types-UBtp7R0u.mjs';
@@ -0,0 +1,7 @@
1
+ import '../types-B2EfvEaq.js';
2
+ export { S as StandaloneServer, a as StandaloneServerConfig, c as createStandaloneServer, s as startCLI } from '../standalone-B6GLIEmR.js';
3
+ import '../types-suaYwWWg.js';
4
+ import '../types-C7gVYRnF.js';
5
+ import '../types-CebMQj76.js';
6
+ import '../render-log/index.js';
7
+ import '../types-UBtp7R0u.js';