@wix/web5-core 1.56.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 (947) hide show
  1. package/README.md +8 -0
  2. package/dist/cjs/client/clientBundleOverride.js +48 -0
  3. package/dist/cjs/client/clientBundleOverride.js.map +1 -0
  4. package/dist/cjs/client/devEnvironment.js +4 -0
  5. package/dist/cjs/client/devEnvironment.js.map +1 -0
  6. package/dist/cjs/client/loadClientBundle.js +85 -0
  7. package/dist/cjs/client/loadClientBundle.js.map +1 -0
  8. package/dist/cjs/client/wixAuthFetch.js +73 -0
  9. package/dist/cjs/client/wixAuthFetch.js.map +1 -0
  10. package/dist/cjs/clients.js +15 -0
  11. package/dist/cjs/clients.js.map +1 -0
  12. package/dist/cjs/color/colorUtils.js +126 -0
  13. package/dist/cjs/color/colorUtils.js.map +1 -0
  14. package/dist/cjs/component/componentDefinitions/CalloutSectionDefinition.js +67 -0
  15. package/dist/cjs/component/componentDefinitions/CalloutSectionDefinition.js.map +1 -0
  16. package/dist/cjs/component/componentDefinitions/ComparisonSectionDefinition.js +141 -0
  17. package/dist/cjs/component/componentDefinitions/ComparisonSectionDefinition.js.map +1 -0
  18. package/dist/cjs/component/componentDefinitions/CtaBannerSectionDefinition.js +85 -0
  19. package/dist/cjs/component/componentDefinitions/CtaBannerSectionDefinition.js.map +1 -0
  20. package/dist/cjs/component/componentDefinitions/EntitySectionDefinition.js +171 -0
  21. package/dist/cjs/component/componentDefinitions/EntitySectionDefinition.js.map +1 -0
  22. package/dist/cjs/component/componentDefinitions/ErrorSectionDefinition.js +81 -0
  23. package/dist/cjs/component/componentDefinitions/ErrorSectionDefinition.js.map +1 -0
  24. package/dist/cjs/component/componentDefinitions/FallbackSectionDefinition.js +29 -0
  25. package/dist/cjs/component/componentDefinitions/FallbackSectionDefinition.js.map +1 -0
  26. package/dist/cjs/component/componentDefinitions/FeatureCardsSectionDefinition.js +119 -0
  27. package/dist/cjs/component/componentDefinitions/FeatureCardsSectionDefinition.js.map +1 -0
  28. package/dist/cjs/component/componentDefinitions/FeatureSection9PlusDefinition.js +75 -0
  29. package/dist/cjs/component/componentDefinitions/FeatureSection9PlusDefinition.js.map +1 -0
  30. package/dist/cjs/component/componentDefinitions/HeroEntitySectionDefinition.js +124 -0
  31. package/dist/cjs/component/componentDefinitions/HeroEntitySectionDefinition.js.map +1 -0
  32. package/dist/cjs/component/componentDefinitions/HeroSectionDefinition.js +209 -0
  33. package/dist/cjs/component/componentDefinitions/HeroSectionDefinition.js.map +1 -0
  34. package/dist/cjs/component/componentDefinitions/HtmlCommentSectionDefinition.js +19 -0
  35. package/dist/cjs/component/componentDefinitions/HtmlCommentSectionDefinition.js.map +1 -0
  36. package/dist/cjs/component/componentDefinitions/KpiSectionDefinition.js +114 -0
  37. package/dist/cjs/component/componentDefinitions/KpiSectionDefinition.js.map +1 -0
  38. package/dist/cjs/component/componentDefinitions/NextStepsSectionDefinition.js +136 -0
  39. package/dist/cjs/component/componentDefinitions/NextStepsSectionDefinition.js.map +1 -0
  40. package/dist/cjs/component/componentDefinitions/SearchSectionDefinition.js +18 -0
  41. package/dist/cjs/component/componentDefinitions/SearchSectionDefinition.js.map +1 -0
  42. package/dist/cjs/component/componentDefinitions/SkipNodesSectionDefinition.js +20 -0
  43. package/dist/cjs/component/componentDefinitions/SkipNodesSectionDefinition.js.map +1 -0
  44. package/dist/cjs/component/componentDefinitions/TextBlockSectionDefinition.js +65 -0
  45. package/dist/cjs/component/componentDefinitions/TextBlockSectionDefinition.js.map +1 -0
  46. package/dist/cjs/component/componentDefinitions/index.js +48 -0
  47. package/dist/cjs/component/componentDefinitions/index.js.map +1 -0
  48. package/dist/cjs/component/componentDefinitions/listItemsSectionDefinition.js +86 -0
  49. package/dist/cjs/component/componentDefinitions/listItemsSectionDefinition.js.map +1 -0
  50. package/dist/cjs/component/componentDefinitions/parse-utils.js +434 -0
  51. package/dist/cjs/component/componentDefinitions/parse-utils.js.map +1 -0
  52. package/dist/cjs/component/componentDefinitions/specHelpers.js +36 -0
  53. package/dist/cjs/component/componentDefinitions/specHelpers.js.map +1 -0
  54. package/dist/cjs/component/componentParser.js +365 -0
  55. package/dist/cjs/component/componentParser.js.map +1 -0
  56. package/dist/cjs/component/diagnosticTypes.js +30 -0
  57. package/dist/cjs/component/diagnosticTypes.js.map +1 -0
  58. package/dist/cjs/component/parser-types.js +4 -0
  59. package/dist/cjs/component/parser-types.js.map +1 -0
  60. package/dist/cjs/component/section-definition.js +4 -0
  61. package/dist/cjs/component/section-definition.js.map +1 -0
  62. package/dist/cjs/component/types.js +4 -0
  63. package/dist/cjs/component/types.js.map +1 -0
  64. package/dist/cjs/components/placement/PlacementPayloadContext.js +29 -0
  65. package/dist/cjs/components/placement/PlacementPayloadContext.js.map +1 -0
  66. package/dist/cjs/components/placement/PlacementResponseRenderer.css +269 -0
  67. package/dist/cjs/components/placement/PlacementResponseRenderer.js +259 -0
  68. package/dist/cjs/components/placement/PlacementResponseRenderer.js.map +1 -0
  69. package/dist/cjs/components/placement/buildPlacementDependencies.js +214 -0
  70. package/dist/cjs/components/placement/buildPlacementDependencies.js.map +1 -0
  71. package/dist/cjs/components/ui/BottomContainer.js +26 -0
  72. package/dist/cjs/components/ui/BottomContainer.js.map +1 -0
  73. package/dist/cjs/components/ui/CalloutBlock.js +156 -0
  74. package/dist/cjs/components/ui/CalloutBlock.js.map +1 -0
  75. package/dist/cjs/components/ui/Disclaimer.css +35 -0
  76. package/dist/cjs/components/ui/Disclaimer.js +56 -0
  77. package/dist/cjs/components/ui/Disclaimer.js.map +1 -0
  78. package/dist/cjs/components/ui/FeedbackBar.css +267 -0
  79. package/dist/cjs/components/ui/FeedbackBar.js +417 -0
  80. package/dist/cjs/components/ui/FeedbackBar.js.map +1 -0
  81. package/dist/cjs/components/ui/Loader.js +73 -0
  82. package/dist/cjs/components/ui/Loader.js.map +1 -0
  83. package/dist/cjs/components/ui/MarkdownText.js +419 -0
  84. package/dist/cjs/components/ui/MarkdownText.js.map +1 -0
  85. package/dist/cjs/components/ui/OptimizedImage.js +414 -0
  86. package/dist/cjs/components/ui/OptimizedImage.js.map +1 -0
  87. package/dist/cjs/components/ui/PlacementLoader.css +101 -0
  88. package/dist/cjs/components/ui/PlacementLoader.js +62 -0
  89. package/dist/cjs/components/ui/PlacementLoader.js.map +1 -0
  90. package/dist/cjs/components/ui/PromptEntryEmptyState.css +172 -0
  91. package/dist/cjs/components/ui/PromptEntryEmptyState.js +96 -0
  92. package/dist/cjs/components/ui/PromptEntryEmptyState.js.map +1 -0
  93. package/dist/cjs/components/ui/SearchSection.css +538 -0
  94. package/dist/cjs/components/ui/SearchSection.js +550 -0
  95. package/dist/cjs/components/ui/SearchSection.js.map +1 -0
  96. package/dist/cjs/components/ui/SectionSkeleton.css +109 -0
  97. package/dist/cjs/components/ui/SectionSkeleton.js +190 -0
  98. package/dist/cjs/components/ui/SectionSkeleton.js.map +1 -0
  99. package/dist/cjs/components/ui/SmartIcon.js +122 -0
  100. package/dist/cjs/components/ui/SmartIcon.js.map +1 -0
  101. package/dist/cjs/components/ui/UnifiedLink.js +169 -0
  102. package/dist/cjs/components/ui/UnifiedLink.js.map +1 -0
  103. package/dist/cjs/components/ui/UserQuery.js +348 -0
  104. package/dist/cjs/components/ui/UserQuery.js.map +1 -0
  105. package/dist/cjs/components/ui/icons/ArrowTopRightIcon.js +37 -0
  106. package/dist/cjs/components/ui/icons/ArrowTopRightIcon.js.map +1 -0
  107. package/dist/cjs/components/ui/icons/ArrowUpIcon.js +61 -0
  108. package/dist/cjs/components/ui/icons/ArrowUpIcon.js.map +1 -0
  109. package/dist/cjs/components/ui/icons/CheckIcon.js +37 -0
  110. package/dist/cjs/components/ui/icons/CheckIcon.js.map +1 -0
  111. package/dist/cjs/components/ui/icons/CommentIcon.js +34 -0
  112. package/dist/cjs/components/ui/icons/CommentIcon.js.map +1 -0
  113. package/dist/cjs/components/ui/icons/PlusIcon.js +51 -0
  114. package/dist/cjs/components/ui/icons/PlusIcon.js.map +1 -0
  115. package/dist/cjs/components/ui/icons/RedoIcon.js +51 -0
  116. package/dist/cjs/components/ui/icons/RedoIcon.js.map +1 -0
  117. package/dist/cjs/components/ui/icons/ShareIcon.js +81 -0
  118. package/dist/cjs/components/ui/icons/ShareIcon.js.map +1 -0
  119. package/dist/cjs/components/ui/icons/UndoIcon.js +51 -0
  120. package/dist/cjs/components/ui/icons/UndoIcon.js.map +1 -0
  121. package/dist/cjs/components/ui/table.js +159 -0
  122. package/dist/cjs/components/ui/table.js.map +1 -0
  123. package/dist/cjs/context/ChipsContext.js +12 -0
  124. package/dist/cjs/context/ChipsContext.js.map +1 -0
  125. package/dist/cjs/context/ComponentDependenciesContext.js +32 -0
  126. package/dist/cjs/context/ComponentDependenciesContext.js.map +1 -0
  127. package/dist/cjs/entity/defaultExtractor.js +117 -0
  128. package/dist/cjs/entity/defaultExtractor.js.map +1 -0
  129. package/dist/cjs/entity/enrichEntitiesFromPayload.js +39 -0
  130. package/dist/cjs/entity/enrichEntitiesFromPayload.js.map +1 -0
  131. package/dist/cjs/entity/fetchEntityListData.js +78 -0
  132. package/dist/cjs/entity/fetchEntityListData.js.map +1 -0
  133. package/dist/cjs/entity/index.js +41 -0
  134. package/dist/cjs/entity/index.js.map +1 -0
  135. package/dist/cjs/entity/types.js +4 -0
  136. package/dist/cjs/entity/types.js.map +1 -0
  137. package/dist/cjs/errors/conversationErrorTypes.js +56 -0
  138. package/dist/cjs/errors/conversationErrorTypes.js.map +1 -0
  139. package/dist/cjs/errors/errorTemplates.js +86 -0
  140. package/dist/cjs/errors/errorTemplates.js.map +1 -0
  141. package/dist/cjs/errors/index.js +13 -0
  142. package/dist/cjs/errors/index.js.map +1 -0
  143. package/dist/cjs/external-types.d.js +2 -0
  144. package/dist/cjs/external-types.d.js.map +1 -0
  145. package/dist/cjs/featureToggles/FeatureToggleContext.js +44 -0
  146. package/dist/cjs/featureToggles/FeatureToggleContext.js.map +1 -0
  147. package/dist/cjs/hooks/useConversation.js +10 -0
  148. package/dist/cjs/hooks/useConversation.js.map +1 -0
  149. package/dist/cjs/hooks/useDebugImageContext.js +10 -0
  150. package/dist/cjs/hooks/useDebugImageContext.js.map +1 -0
  151. package/dist/cjs/hooks/useEntityTransforms.js +10 -0
  152. package/dist/cjs/hooks/useEntityTransforms.js.map +1 -0
  153. package/dist/cjs/hooks/useMarkdownUtils.js +10 -0
  154. package/dist/cjs/hooks/useMarkdownUtils.js.map +1 -0
  155. package/dist/cjs/hooks/useResolveGenericEntityData.js +10 -0
  156. package/dist/cjs/hooks/useResolveGenericEntityData.js.map +1 -0
  157. package/dist/cjs/hooks/useResolveSearchSpringEntityData.js +146 -0
  158. package/dist/cjs/hooks/useResolveSearchSpringEntityData.js.map +1 -0
  159. package/dist/cjs/hooks/useResolveShopifyEntityData.js +190 -0
  160. package/dist/cjs/hooks/useResolveShopifyEntityData.js.map +1 -0
  161. package/dist/cjs/hooks/useResolvedImageSources.js +160 -0
  162. package/dist/cjs/hooks/useResolvedImageSources.js.map +1 -0
  163. package/dist/cjs/hooks/useWeb5Link.js +10 -0
  164. package/dist/cjs/hooks/useWeb5Link.js.map +1 -0
  165. package/dist/cjs/image/contextualImageTypes.js +4 -0
  166. package/dist/cjs/image/contextualImageTypes.js.map +1 -0
  167. package/dist/cjs/image/imageSearchFilterTypes.js +19 -0
  168. package/dist/cjs/image/imageSearchFilterTypes.js.map +1 -0
  169. package/dist/cjs/image/imageSearchFilters.js +22 -0
  170. package/dist/cjs/image/imageSearchFilters.js.map +1 -0
  171. package/dist/cjs/index.js +285 -0
  172. package/dist/cjs/index.js.map +1 -0
  173. package/dist/cjs/lib/utils.js +33 -0
  174. package/dist/cjs/lib/utils.js.map +1 -0
  175. package/dist/cjs/markdownBlocks.js +645 -0
  176. package/dist/cjs/markdownBlocks.js.map +1 -0
  177. package/dist/cjs/match/astToParts.js +374 -0
  178. package/dist/cjs/match/astToParts.js.map +1 -0
  179. package/dist/cjs/match/extractProps.js +654 -0
  180. package/dist/cjs/match/extractProps.js.map +1 -0
  181. package/dist/cjs/match/index.js +11 -0
  182. package/dist/cjs/match/index.js.map +1 -0
  183. package/dist/cjs/match/matchAllSections.js +34 -0
  184. package/dist/cjs/match/matchAllSections.js.map +1 -0
  185. package/dist/cjs/match/matchMarkdown.js +39 -0
  186. package/dist/cjs/match/matchMarkdown.js.map +1 -0
  187. package/dist/cjs/parts/parts.js +183 -0
  188. package/dist/cjs/parts/parts.js.map +1 -0
  189. package/dist/cjs/patternAnalyzer/conflictDetector.js +103 -0
  190. package/dist/cjs/patternAnalyzer/conflictDetector.js.map +1 -0
  191. package/dist/cjs/patternAnalyzer/index.js +40 -0
  192. package/dist/cjs/patternAnalyzer/index.js.map +1 -0
  193. package/dist/cjs/patternAnalyzer/markdownGenerator.js +347 -0
  194. package/dist/cjs/patternAnalyzer/markdownGenerator.js.map +1 -0
  195. package/dist/cjs/patternAnalyzer/mergeDetector.js +505 -0
  196. package/dist/cjs/patternAnalyzer/mergeDetector.js.map +1 -0
  197. package/dist/cjs/patternAnalyzer/parserValidator.js +56 -0
  198. package/dist/cjs/patternAnalyzer/parserValidator.js.map +1 -0
  199. package/dist/cjs/patternAnalyzer/patternWriter.js +106 -0
  200. package/dist/cjs/patternAnalyzer/patternWriter.js.map +1 -0
  201. package/dist/cjs/patternAnalyzer/run.js +140 -0
  202. package/dist/cjs/patternAnalyzer/run.js.map +1 -0
  203. package/dist/cjs/patternAnalyzer/types.js +4 -0
  204. package/dist/cjs/patternAnalyzer/types.js.map +1 -0
  205. package/dist/cjs/patternValidator/ERROR_MESSAGES.md +110 -0
  206. package/dist/cjs/patternValidator/README.md +757 -0
  207. package/dist/cjs/patternValidator/automaton.js +349 -0
  208. package/dist/cjs/patternValidator/automaton.js.map +1 -0
  209. package/dist/cjs/patternValidator/index.js +196 -0
  210. package/dist/cjs/patternValidator/index.js.map +1 -0
  211. package/dist/cjs/patternValidator/lexer.js +218 -0
  212. package/dist/cjs/patternValidator/lexer.js.map +1 -0
  213. package/dist/cjs/patternValidator/matcher.js +722 -0
  214. package/dist/cjs/patternValidator/matcher.js.map +1 -0
  215. package/dist/cjs/patternValidator/parser.js +533 -0
  216. package/dist/cjs/patternValidator/parser.js.map +1 -0
  217. package/dist/cjs/patternValidator/types.js +4 -0
  218. package/dist/cjs/patternValidator/types.js.map +1 -0
  219. package/dist/cjs/patternValidator/validator.test.js +1277 -0
  220. package/dist/cjs/patternValidator/validator.test.js.map +1 -0
  221. package/dist/cjs/registry/ComponentRegistry.js +438 -0
  222. package/dist/cjs/registry/ComponentRegistry.js.map +1 -0
  223. package/dist/cjs/registry/Intent.js +19 -0
  224. package/dist/cjs/registry/Intent.js.map +1 -0
  225. package/dist/cjs/registry/index.js +9 -0
  226. package/dist/cjs/registry/index.js.map +1 -0
  227. package/dist/cjs/registry/types.js +4 -0
  228. package/dist/cjs/registry/types.js.map +1 -0
  229. package/dist/cjs/services/cart/addToCart.js +147 -0
  230. package/dist/cjs/services/cart/addToCart.js.map +1 -0
  231. package/dist/cjs/services/cart/index.js +7 -0
  232. package/dist/cjs/services/cart/index.js.map +1 -0
  233. package/dist/cjs/services/searchspring/index.js +10 -0
  234. package/dist/cjs/services/searchspring/index.js.map +1 -0
  235. package/dist/cjs/services/searchspring/searchSpringClient.js +49 -0
  236. package/dist/cjs/services/searchspring/searchSpringClient.js.map +1 -0
  237. package/dist/cjs/services/searchspring/transformSSProduct.js +70 -0
  238. package/dist/cjs/services/searchspring/transformSSProduct.js.map +1 -0
  239. package/dist/cjs/services/searchspring/types.js +4 -0
  240. package/dist/cjs/services/searchspring/types.js.map +1 -0
  241. package/dist/cjs/services/shopify/globals.d.js +4 -0
  242. package/dist/cjs/services/shopify/globals.d.js.map +1 -0
  243. package/dist/cjs/services/shopify/index.js +22 -0
  244. package/dist/cjs/services/shopify/index.js.map +1 -0
  245. package/dist/cjs/services/shopify/queries.js +214 -0
  246. package/dist/cjs/services/shopify/queries.js.map +1 -0
  247. package/dist/cjs/services/shopify/resolveStoreDomain.js +28 -0
  248. package/dist/cjs/services/shopify/resolveStoreDomain.js.map +1 -0
  249. package/dist/cjs/services/shopify/shopifyEntityResolver.js +109 -0
  250. package/dist/cjs/services/shopify/shopifyEntityResolver.js.map +1 -0
  251. package/dist/cjs/services/shopify/shopifyStorefrontClient.js +58 -0
  252. package/dist/cjs/services/shopify/shopifyStorefrontClient.js.map +1 -0
  253. package/dist/cjs/services/shopify/transformShopifyEntity.js +137 -0
  254. package/dist/cjs/services/shopify/transformShopifyEntity.js.map +1 -0
  255. package/dist/cjs/services/shopify/types.js +4 -0
  256. package/dist/cjs/services/shopify/types.js.map +1 -0
  257. package/dist/cjs/styles/base-tokens.css +152 -0
  258. package/dist/cjs/styles/base-utilities.css +424 -0
  259. package/dist/cjs/styles/components.css +6 -0
  260. package/dist/cjs/styles/prompt-input-tokens.css +136 -0
  261. package/dist/cjs/styles/tailwind-theme.css +138 -0
  262. package/dist/cjs/test-types.d.js +2 -0
  263. package/dist/cjs/test-types.d.js.map +1 -0
  264. package/dist/cjs/testUtils.js +25 -0
  265. package/dist/cjs/testUtils.js.map +1 -0
  266. package/dist/cjs/types/answerUpdatedEvent.js +20 -0
  267. package/dist/cjs/types/answerUpdatedEvent.js.map +1 -0
  268. package/dist/cjs/types/blog.js +4 -0
  269. package/dist/cjs/types/blog.js.map +1 -0
  270. package/dist/cjs/types/callout.js +6 -0
  271. package/dist/cjs/types/callout.js.map +1 -0
  272. package/dist/cjs/types/dependencies.js +4 -0
  273. package/dist/cjs/types/dependencies.js.map +1 -0
  274. package/dist/cjs/types/entity.js +4 -0
  275. package/dist/cjs/types/entity.js.map +1 -0
  276. package/dist/cjs/types/link-types.js +62 -0
  277. package/dist/cjs/types/link-types.js.map +1 -0
  278. package/dist/cjs/types/page-section.js +4 -0
  279. package/dist/cjs/types/page-section.js.map +1 -0
  280. package/dist/cjs/types/placement.js +4 -0
  281. package/dist/cjs/types/placement.js.map +1 -0
  282. package/dist/cjs/types/redirectEvent.js +27 -0
  283. package/dist/cjs/types/redirectEvent.js.map +1 -0
  284. package/dist/cjs/types/userQueryEvent.js +19 -0
  285. package/dist/cjs/types/userQueryEvent.js.map +1 -0
  286. package/dist/cjs/utils/analyticsEvents.js +91 -0
  287. package/dist/cjs/utils/analyticsEvents.js.map +1 -0
  288. package/dist/cjs/utils/componentTracking.js +90 -0
  289. package/dist/cjs/utils/componentTracking.js.map +1 -0
  290. package/dist/cjs/utils/contentKeywordMatcher.js +56 -0
  291. package/dist/cjs/utils/contentKeywordMatcher.js.map +1 -0
  292. package/dist/cjs/utils/conversationApi.js +52 -0
  293. package/dist/cjs/utils/conversationApi.js.map +1 -0
  294. package/dist/cjs/utils/conversationMode.js +23 -0
  295. package/dist/cjs/utils/conversationMode.js.map +1 -0
  296. package/dist/cjs/utils/diagnosticsCollector.js +58 -0
  297. package/dist/cjs/utils/diagnosticsCollector.js.map +1 -0
  298. package/dist/cjs/utils/entityLinkParser.js +256 -0
  299. package/dist/cjs/utils/entityLinkParser.js.map +1 -0
  300. package/dist/cjs/utils/htmlCommentParser.js +122 -0
  301. package/dist/cjs/utils/htmlCommentParser.js.map +1 -0
  302. package/dist/cjs/utils/image-utils.js +49 -0
  303. package/dist/cjs/utils/image-utils.js.map +1 -0
  304. package/dist/cjs/utils/intentExtractor.js +47 -0
  305. package/dist/cjs/utils/intentExtractor.js.map +1 -0
  306. package/dist/cjs/utils/markdownPreprocessor.js +268 -0
  307. package/dist/cjs/utils/markdownPreprocessor.js.map +1 -0
  308. package/dist/cjs/utils/navigationStack.js +35 -0
  309. package/dist/cjs/utils/navigationStack.js.map +1 -0
  310. package/dist/cjs/utils/nodeMatchers.js +43 -0
  311. package/dist/cjs/utils/nodeMatchers.js.map +1 -0
  312. package/dist/cjs/utils/propsExtractor.js +66 -0
  313. package/dist/cjs/utils/propsExtractor.js.map +1 -0
  314. package/dist/cjs/utils/sessionManager.js +161 -0
  315. package/dist/cjs/utils/sessionManager.js.map +1 -0
  316. package/dist/cjs/utils/unifiedMarkdownParser.js +44 -0
  317. package/dist/cjs/utils/unifiedMarkdownParser.js.map +1 -0
  318. package/dist/cjs/utils/web5LinkValidator.js +56 -0
  319. package/dist/cjs/utils/web5LinkValidator.js.map +1 -0
  320. package/dist/cjs/utils/web5LinkValidator.test.js +115 -0
  321. package/dist/cjs/utils/web5LinkValidator.test.js.map +1 -0
  322. package/dist/esm/client/clientBundleOverride.js +43 -0
  323. package/dist/esm/client/clientBundleOverride.js.map +1 -0
  324. package/dist/esm/client/devEnvironment.js +2 -0
  325. package/dist/esm/client/devEnvironment.js.map +1 -0
  326. package/dist/esm/client/loadClientBundle.js +82 -0
  327. package/dist/esm/client/loadClientBundle.js.map +1 -0
  328. package/dist/esm/client/wixAuthFetch.js +68 -0
  329. package/dist/esm/client/wixAuthFetch.js.map +1 -0
  330. package/dist/esm/clients.js +11 -0
  331. package/dist/esm/clients.js.map +1 -0
  332. package/dist/esm/color/colorUtils.js +118 -0
  333. package/dist/esm/color/colorUtils.js.map +1 -0
  334. package/dist/esm/component/componentDefinitions/CalloutSectionDefinition.js +61 -0
  335. package/dist/esm/component/componentDefinitions/CalloutSectionDefinition.js.map +1 -0
  336. package/dist/esm/component/componentDefinitions/ComparisonSectionDefinition.js +135 -0
  337. package/dist/esm/component/componentDefinitions/ComparisonSectionDefinition.js.map +1 -0
  338. package/dist/esm/component/componentDefinitions/CtaBannerSectionDefinition.js +79 -0
  339. package/dist/esm/component/componentDefinitions/CtaBannerSectionDefinition.js.map +1 -0
  340. package/dist/esm/component/componentDefinitions/EntitySectionDefinition.js +165 -0
  341. package/dist/esm/component/componentDefinitions/EntitySectionDefinition.js.map +1 -0
  342. package/dist/esm/component/componentDefinitions/ErrorSectionDefinition.js +75 -0
  343. package/dist/esm/component/componentDefinitions/ErrorSectionDefinition.js.map +1 -0
  344. package/dist/esm/component/componentDefinitions/FallbackSectionDefinition.js +23 -0
  345. package/dist/esm/component/componentDefinitions/FallbackSectionDefinition.js.map +1 -0
  346. package/dist/esm/component/componentDefinitions/FeatureCardsSectionDefinition.js +113 -0
  347. package/dist/esm/component/componentDefinitions/FeatureCardsSectionDefinition.js.map +1 -0
  348. package/dist/esm/component/componentDefinitions/FeatureSection9PlusDefinition.js +69 -0
  349. package/dist/esm/component/componentDefinitions/FeatureSection9PlusDefinition.js.map +1 -0
  350. package/dist/esm/component/componentDefinitions/HeroEntitySectionDefinition.js +119 -0
  351. package/dist/esm/component/componentDefinitions/HeroEntitySectionDefinition.js.map +1 -0
  352. package/dist/esm/component/componentDefinitions/HeroSectionDefinition.js +203 -0
  353. package/dist/esm/component/componentDefinitions/HeroSectionDefinition.js.map +1 -0
  354. package/dist/esm/component/componentDefinitions/HtmlCommentSectionDefinition.js +13 -0
  355. package/dist/esm/component/componentDefinitions/HtmlCommentSectionDefinition.js.map +1 -0
  356. package/dist/esm/component/componentDefinitions/KpiSectionDefinition.js +108 -0
  357. package/dist/esm/component/componentDefinitions/KpiSectionDefinition.js.map +1 -0
  358. package/dist/esm/component/componentDefinitions/NextStepsSectionDefinition.js +130 -0
  359. package/dist/esm/component/componentDefinitions/NextStepsSectionDefinition.js.map +1 -0
  360. package/dist/esm/component/componentDefinitions/SearchSectionDefinition.js +12 -0
  361. package/dist/esm/component/componentDefinitions/SearchSectionDefinition.js.map +1 -0
  362. package/dist/esm/component/componentDefinitions/SkipNodesSectionDefinition.js +14 -0
  363. package/dist/esm/component/componentDefinitions/SkipNodesSectionDefinition.js.map +1 -0
  364. package/dist/esm/component/componentDefinitions/TextBlockSectionDefinition.js +59 -0
  365. package/dist/esm/component/componentDefinitions/TextBlockSectionDefinition.js.map +1 -0
  366. package/dist/esm/component/componentDefinitions/index.js +45 -0
  367. package/dist/esm/component/componentDefinitions/index.js.map +1 -0
  368. package/dist/esm/component/componentDefinitions/listItemsSectionDefinition.js +80 -0
  369. package/dist/esm/component/componentDefinitions/listItemsSectionDefinition.js.map +1 -0
  370. package/dist/esm/component/componentDefinitions/parse-utils.js +412 -0
  371. package/dist/esm/component/componentDefinitions/parse-utils.js.map +1 -0
  372. package/dist/esm/component/componentDefinitions/specHelpers.js +31 -0
  373. package/dist/esm/component/componentDefinitions/specHelpers.js.map +1 -0
  374. package/dist/esm/component/componentParser.js +358 -0
  375. package/dist/esm/component/componentParser.js.map +1 -0
  376. package/dist/esm/component/diagnosticTypes.js +26 -0
  377. package/dist/esm/component/diagnosticTypes.js.map +1 -0
  378. package/dist/esm/component/parser-types.js +2 -0
  379. package/dist/esm/component/parser-types.js.map +1 -0
  380. package/dist/esm/component/section-definition.js +2 -0
  381. package/dist/esm/component/section-definition.js.map +1 -0
  382. package/dist/esm/component/types.js +2 -0
  383. package/dist/esm/component/types.js.map +1 -0
  384. package/dist/esm/components/placement/PlacementPayloadContext.js +24 -0
  385. package/dist/esm/components/placement/PlacementPayloadContext.js.map +1 -0
  386. package/dist/esm/components/placement/PlacementResponseRenderer.css +269 -0
  387. package/dist/esm/components/placement/PlacementResponseRenderer.js +173 -0
  388. package/dist/esm/components/placement/PlacementResponseRenderer.js.map +1 -0
  389. package/dist/esm/components/placement/buildPlacementDependencies.js +212 -0
  390. package/dist/esm/components/placement/buildPlacementDependencies.js.map +1 -0
  391. package/dist/esm/components/ui/BottomContainer.js +14 -0
  392. package/dist/esm/components/ui/BottomContainer.js.map +1 -0
  393. package/dist/esm/components/ui/CalloutBlock.js +118 -0
  394. package/dist/esm/components/ui/CalloutBlock.js.map +1 -0
  395. package/dist/esm/components/ui/Disclaimer.css +35 -0
  396. package/dist/esm/components/ui/Disclaimer.js +32 -0
  397. package/dist/esm/components/ui/Disclaimer.js.map +1 -0
  398. package/dist/esm/components/ui/FeedbackBar.css +267 -0
  399. package/dist/esm/components/ui/FeedbackBar.js +221 -0
  400. package/dist/esm/components/ui/FeedbackBar.js.map +1 -0
  401. package/dist/esm/components/ui/Loader.js +43 -0
  402. package/dist/esm/components/ui/Loader.js.map +1 -0
  403. package/dist/esm/components/ui/MarkdownText.js +283 -0
  404. package/dist/esm/components/ui/MarkdownText.js.map +1 -0
  405. package/dist/esm/components/ui/OptimizedImage.js +354 -0
  406. package/dist/esm/components/ui/OptimizedImage.js.map +1 -0
  407. package/dist/esm/components/ui/PlacementLoader.css +101 -0
  408. package/dist/esm/components/ui/PlacementLoader.js +28 -0
  409. package/dist/esm/components/ui/PlacementLoader.js.map +1 -0
  410. package/dist/esm/components/ui/PromptEntryEmptyState.css +172 -0
  411. package/dist/esm/components/ui/PromptEntryEmptyState.js +36 -0
  412. package/dist/esm/components/ui/PromptEntryEmptyState.js.map +1 -0
  413. package/dist/esm/components/ui/SearchSection.css +538 -0
  414. package/dist/esm/components/ui/SearchSection.js +317 -0
  415. package/dist/esm/components/ui/SearchSection.js.map +1 -0
  416. package/dist/esm/components/ui/SectionSkeleton.css +109 -0
  417. package/dist/esm/components/ui/SectionSkeleton.js +100 -0
  418. package/dist/esm/components/ui/SectionSkeleton.js.map +1 -0
  419. package/dist/esm/components/ui/SmartIcon.js +91 -0
  420. package/dist/esm/components/ui/SmartIcon.js.map +1 -0
  421. package/dist/esm/components/ui/UnifiedLink.js +105 -0
  422. package/dist/esm/components/ui/UnifiedLink.js.map +1 -0
  423. package/dist/esm/components/ui/UserQuery.js +167 -0
  424. package/dist/esm/components/ui/UserQuery.js.map +1 -0
  425. package/dist/esm/components/ui/icons/ArrowTopRightIcon.js +17 -0
  426. package/dist/esm/components/ui/icons/ArrowTopRightIcon.js.map +1 -0
  427. package/dist/esm/components/ui/icons/ArrowUpIcon.js +29 -0
  428. package/dist/esm/components/ui/icons/ArrowUpIcon.js.map +1 -0
  429. package/dist/esm/components/ui/icons/CheckIcon.js +17 -0
  430. package/dist/esm/components/ui/icons/CheckIcon.js.map +1 -0
  431. package/dist/esm/components/ui/icons/CommentIcon.js +15 -0
  432. package/dist/esm/components/ui/icons/CommentIcon.js.map +1 -0
  433. package/dist/esm/components/ui/icons/PlusIcon.js +25 -0
  434. package/dist/esm/components/ui/icons/PlusIcon.js.map +1 -0
  435. package/dist/esm/components/ui/icons/RedoIcon.js +25 -0
  436. package/dist/esm/components/ui/icons/RedoIcon.js.map +1 -0
  437. package/dist/esm/components/ui/icons/ShareIcon.js +37 -0
  438. package/dist/esm/components/ui/icons/ShareIcon.js.map +1 -0
  439. package/dist/esm/components/ui/icons/UndoIcon.js +25 -0
  440. package/dist/esm/components/ui/icons/UndoIcon.js.map +1 -0
  441. package/dist/esm/components/ui/table.js +92 -0
  442. package/dist/esm/components/ui/table.js.map +1 -0
  443. package/dist/esm/context/ChipsContext.js +7 -0
  444. package/dist/esm/context/ChipsContext.js.map +1 -0
  445. package/dist/esm/context/ComponentDependenciesContext.js +19 -0
  446. package/dist/esm/context/ComponentDependenciesContext.js.map +1 -0
  447. package/dist/esm/entity/defaultExtractor.js +111 -0
  448. package/dist/esm/entity/defaultExtractor.js.map +1 -0
  449. package/dist/esm/entity/enrichEntitiesFromPayload.js +35 -0
  450. package/dist/esm/entity/enrichEntitiesFromPayload.js.map +1 -0
  451. package/dist/esm/entity/fetchEntityListData.js +76 -0
  452. package/dist/esm/entity/fetchEntityListData.js.map +1 -0
  453. package/dist/esm/entity/index.js +29 -0
  454. package/dist/esm/entity/index.js.map +1 -0
  455. package/dist/esm/entity/types.js +2 -0
  456. package/dist/esm/entity/types.js.map +1 -0
  457. package/dist/esm/errors/conversationErrorTypes.js +50 -0
  458. package/dist/esm/errors/conversationErrorTypes.js.map +1 -0
  459. package/dist/esm/errors/errorTemplates.js +81 -0
  460. package/dist/esm/errors/errorTemplates.js.map +1 -0
  461. package/dist/esm/errors/index.js +3 -0
  462. package/dist/esm/errors/index.js.map +1 -0
  463. package/dist/esm/external-types.d.js +2 -0
  464. package/dist/esm/external-types.d.js.map +1 -0
  465. package/dist/esm/featureToggles/FeatureToggleContext.js +30 -0
  466. package/dist/esm/featureToggles/FeatureToggleContext.js.map +1 -0
  467. package/dist/esm/hooks/useConversation.js +6 -0
  468. package/dist/esm/hooks/useConversation.js.map +1 -0
  469. package/dist/esm/hooks/useDebugImageContext.js +6 -0
  470. package/dist/esm/hooks/useDebugImageContext.js.map +1 -0
  471. package/dist/esm/hooks/useEntityTransforms.js +6 -0
  472. package/dist/esm/hooks/useEntityTransforms.js.map +1 -0
  473. package/dist/esm/hooks/useMarkdownUtils.js +6 -0
  474. package/dist/esm/hooks/useMarkdownUtils.js.map +1 -0
  475. package/dist/esm/hooks/useResolveGenericEntityData.js +6 -0
  476. package/dist/esm/hooks/useResolveGenericEntityData.js.map +1 -0
  477. package/dist/esm/hooks/useResolveSearchSpringEntityData.js +146 -0
  478. package/dist/esm/hooks/useResolveSearchSpringEntityData.js.map +1 -0
  479. package/dist/esm/hooks/useResolveShopifyEntityData.js +191 -0
  480. package/dist/esm/hooks/useResolveShopifyEntityData.js.map +1 -0
  481. package/dist/esm/hooks/useResolvedImageSources.js +169 -0
  482. package/dist/esm/hooks/useResolvedImageSources.js.map +1 -0
  483. package/dist/esm/hooks/useWeb5Link.js +6 -0
  484. package/dist/esm/hooks/useWeb5Link.js.map +1 -0
  485. package/dist/esm/image/contextualImageTypes.js +2 -0
  486. package/dist/esm/image/contextualImageTypes.js.map +1 -0
  487. package/dist/esm/image/imageSearchFilterTypes.js +15 -0
  488. package/dist/esm/image/imageSearchFilterTypes.js.map +1 -0
  489. package/dist/esm/image/imageSearchFilters.js +18 -0
  490. package/dist/esm/image/imageSearchFilters.js.map +1 -0
  491. package/dist/esm/index.js +152 -0
  492. package/dist/esm/index.js.map +1 -0
  493. package/dist/esm/lib/utils.js +33 -0
  494. package/dist/esm/lib/utils.js.map +1 -0
  495. package/dist/esm/markdownBlocks.js +641 -0
  496. package/dist/esm/markdownBlocks.js.map +1 -0
  497. package/dist/esm/match/astToParts.js +371 -0
  498. package/dist/esm/match/astToParts.js.map +1 -0
  499. package/dist/esm/match/extractProps.js +634 -0
  500. package/dist/esm/match/extractProps.js.map +1 -0
  501. package/dist/esm/match/index.js +4 -0
  502. package/dist/esm/match/index.js.map +1 -0
  503. package/dist/esm/match/matchAllSections.js +31 -0
  504. package/dist/esm/match/matchAllSections.js.map +1 -0
  505. package/dist/esm/match/matchMarkdown.js +36 -0
  506. package/dist/esm/match/matchMarkdown.js.map +1 -0
  507. package/dist/esm/parts/parts.js +171 -0
  508. package/dist/esm/parts/parts.js.map +1 -0
  509. package/dist/esm/patternAnalyzer/conflictDetector.js +99 -0
  510. package/dist/esm/patternAnalyzer/conflictDetector.js.map +1 -0
  511. package/dist/esm/patternAnalyzer/index.js +36 -0
  512. package/dist/esm/patternAnalyzer/index.js.map +1 -0
  513. package/dist/esm/patternAnalyzer/markdownGenerator.js +344 -0
  514. package/dist/esm/patternAnalyzer/markdownGenerator.js.map +1 -0
  515. package/dist/esm/patternAnalyzer/mergeDetector.js +504 -0
  516. package/dist/esm/patternAnalyzer/mergeDetector.js.map +1 -0
  517. package/dist/esm/patternAnalyzer/parserValidator.js +52 -0
  518. package/dist/esm/patternAnalyzer/parserValidator.js.map +1 -0
  519. package/dist/esm/patternAnalyzer/patternWriter.js +102 -0
  520. package/dist/esm/patternAnalyzer/patternWriter.js.map +1 -0
  521. package/dist/esm/patternAnalyzer/run.js +138 -0
  522. package/dist/esm/patternAnalyzer/run.js.map +1 -0
  523. package/dist/esm/patternAnalyzer/types.js +2 -0
  524. package/dist/esm/patternAnalyzer/types.js.map +1 -0
  525. package/dist/esm/patternValidator/ERROR_MESSAGES.md +110 -0
  526. package/dist/esm/patternValidator/README.md +757 -0
  527. package/dist/esm/patternValidator/automaton.js +345 -0
  528. package/dist/esm/patternValidator/automaton.js.map +1 -0
  529. package/dist/esm/patternValidator/index.js +190 -0
  530. package/dist/esm/patternValidator/index.js.map +1 -0
  531. package/dist/esm/patternValidator/lexer.js +214 -0
  532. package/dist/esm/patternValidator/lexer.js.map +1 -0
  533. package/dist/esm/patternValidator/matcher.js +717 -0
  534. package/dist/esm/patternValidator/matcher.js.map +1 -0
  535. package/dist/esm/patternValidator/parser.js +531 -0
  536. package/dist/esm/patternValidator/parser.js.map +1 -0
  537. package/dist/esm/patternValidator/types.js +2 -0
  538. package/dist/esm/patternValidator/types.js.map +1 -0
  539. package/dist/esm/patternValidator/validator.test.js +1275 -0
  540. package/dist/esm/patternValidator/validator.test.js.map +1 -0
  541. package/dist/esm/registry/ComponentRegistry.js +435 -0
  542. package/dist/esm/registry/ComponentRegistry.js.map +1 -0
  543. package/dist/esm/registry/Intent.js +15 -0
  544. package/dist/esm/registry/Intent.js.map +1 -0
  545. package/dist/esm/registry/index.js +3 -0
  546. package/dist/esm/registry/index.js.map +1 -0
  547. package/dist/esm/registry/types.js +2 -0
  548. package/dist/esm/registry/types.js.map +1 -0
  549. package/dist/esm/services/cart/addToCart.js +146 -0
  550. package/dist/esm/services/cart/addToCart.js.map +1 -0
  551. package/dist/esm/services/cart/index.js +2 -0
  552. package/dist/esm/services/cart/index.js.map +1 -0
  553. package/dist/esm/services/searchspring/index.js +3 -0
  554. package/dist/esm/services/searchspring/index.js.map +1 -0
  555. package/dist/esm/services/searchspring/searchSpringClient.js +44 -0
  556. package/dist/esm/services/searchspring/searchSpringClient.js.map +1 -0
  557. package/dist/esm/services/searchspring/transformSSProduct.js +66 -0
  558. package/dist/esm/services/searchspring/transformSSProduct.js.map +1 -0
  559. package/dist/esm/services/searchspring/types.js +2 -0
  560. package/dist/esm/services/searchspring/types.js.map +1 -0
  561. package/dist/esm/services/shopify/globals.d.js +7 -0
  562. package/dist/esm/services/shopify/globals.d.js.map +1 -0
  563. package/dist/esm/services/shopify/index.js +6 -0
  564. package/dist/esm/services/shopify/index.js.map +1 -0
  565. package/dist/esm/services/shopify/queries.js +210 -0
  566. package/dist/esm/services/shopify/queries.js.map +1 -0
  567. package/dist/esm/services/shopify/resolveStoreDomain.js +25 -0
  568. package/dist/esm/services/shopify/resolveStoreDomain.js.map +1 -0
  569. package/dist/esm/services/shopify/shopifyEntityResolver.js +105 -0
  570. package/dist/esm/services/shopify/shopifyEntityResolver.js.map +1 -0
  571. package/dist/esm/services/shopify/shopifyStorefrontClient.js +52 -0
  572. package/dist/esm/services/shopify/shopifyStorefrontClient.js.map +1 -0
  573. package/dist/esm/services/shopify/transformShopifyEntity.js +130 -0
  574. package/dist/esm/services/shopify/transformShopifyEntity.js.map +1 -0
  575. package/dist/esm/services/shopify/types.js +2 -0
  576. package/dist/esm/services/shopify/types.js.map +1 -0
  577. package/dist/esm/styles/base-tokens.css +152 -0
  578. package/dist/esm/styles/base-utilities.css +424 -0
  579. package/dist/esm/styles/components.css +6 -0
  580. package/dist/esm/styles/prompt-input-tokens.css +136 -0
  581. package/dist/esm/styles/tailwind-theme.css +138 -0
  582. package/dist/esm/test-types.d.js +2 -0
  583. package/dist/esm/test-types.d.js.map +1 -0
  584. package/dist/esm/testUtils.js +20 -0
  585. package/dist/esm/testUtils.js.map +1 -0
  586. package/dist/esm/types/answerUpdatedEvent.js +16 -0
  587. package/dist/esm/types/answerUpdatedEvent.js.map +1 -0
  588. package/dist/esm/types/blog.js +2 -0
  589. package/dist/esm/types/blog.js.map +1 -0
  590. package/dist/esm/types/callout.js +2 -0
  591. package/dist/esm/types/callout.js.map +1 -0
  592. package/dist/esm/types/dependencies.js +2 -0
  593. package/dist/esm/types/dependencies.js.map +1 -0
  594. package/dist/esm/types/entity.js +2 -0
  595. package/dist/esm/types/entity.js.map +1 -0
  596. package/dist/esm/types/link-types.js +52 -0
  597. package/dist/esm/types/link-types.js.map +1 -0
  598. package/dist/esm/types/page-section.js +2 -0
  599. package/dist/esm/types/page-section.js.map +1 -0
  600. package/dist/esm/types/placement.js +2 -0
  601. package/dist/esm/types/placement.js.map +1 -0
  602. package/dist/esm/types/redirectEvent.js +23 -0
  603. package/dist/esm/types/redirectEvent.js.map +1 -0
  604. package/dist/esm/types/userQueryEvent.js +15 -0
  605. package/dist/esm/types/userQueryEvent.js.map +1 -0
  606. package/dist/esm/utils/analyticsEvents.js +84 -0
  607. package/dist/esm/utils/analyticsEvents.js.map +1 -0
  608. package/dist/esm/utils/componentTracking.js +84 -0
  609. package/dist/esm/utils/componentTracking.js.map +1 -0
  610. package/dist/esm/utils/contentKeywordMatcher.js +50 -0
  611. package/dist/esm/utils/contentKeywordMatcher.js.map +1 -0
  612. package/dist/esm/utils/conversationApi.js +45 -0
  613. package/dist/esm/utils/conversationApi.js.map +1 -0
  614. package/dist/esm/utils/conversationMode.js +18 -0
  615. package/dist/esm/utils/conversationMode.js.map +1 -0
  616. package/dist/esm/utils/diagnosticsCollector.js +52 -0
  617. package/dist/esm/utils/diagnosticsCollector.js.map +1 -0
  618. package/dist/esm/utils/entityLinkParser.js +246 -0
  619. package/dist/esm/utils/entityLinkParser.js.map +1 -0
  620. package/dist/esm/utils/htmlCommentParser.js +117 -0
  621. package/dist/esm/utils/htmlCommentParser.js.map +1 -0
  622. package/dist/esm/utils/image-utils.js +45 -0
  623. package/dist/esm/utils/image-utils.js.map +1 -0
  624. package/dist/esm/utils/intentExtractor.js +45 -0
  625. package/dist/esm/utils/intentExtractor.js.map +1 -0
  626. package/dist/esm/utils/markdownPreprocessor.js +257 -0
  627. package/dist/esm/utils/markdownPreprocessor.js.map +1 -0
  628. package/dist/esm/utils/navigationStack.js +27 -0
  629. package/dist/esm/utils/navigationStack.js.map +1 -0
  630. package/dist/esm/utils/nodeMatchers.js +38 -0
  631. package/dist/esm/utils/nodeMatchers.js.map +1 -0
  632. package/dist/esm/utils/propsExtractor.js +58 -0
  633. package/dist/esm/utils/propsExtractor.js.map +1 -0
  634. package/dist/esm/utils/sessionManager.js +151 -0
  635. package/dist/esm/utils/sessionManager.js.map +1 -0
  636. package/dist/esm/utils/unifiedMarkdownParser.js +36 -0
  637. package/dist/esm/utils/unifiedMarkdownParser.js.map +1 -0
  638. package/dist/esm/utils/web5LinkValidator.js +52 -0
  639. package/dist/esm/utils/web5LinkValidator.js.map +1 -0
  640. package/dist/esm/utils/web5LinkValidator.test.js +113 -0
  641. package/dist/esm/utils/web5LinkValidator.test.js.map +1 -0
  642. package/dist/types/client/clientBundleOverride.d.ts +26 -0
  643. package/dist/types/client/clientBundleOverride.d.ts.map +1 -0
  644. package/dist/types/client/devEnvironment.d.ts +24 -0
  645. package/dist/types/client/devEnvironment.d.ts.map +1 -0
  646. package/dist/types/client/loadClientBundle.d.ts +27 -0
  647. package/dist/types/client/loadClientBundle.d.ts.map +1 -0
  648. package/dist/types/client/wixAuthFetch.d.ts +12 -0
  649. package/dist/types/client/wixAuthFetch.d.ts.map +1 -0
  650. package/dist/types/clients.d.ts +10 -0
  651. package/dist/types/clients.d.ts.map +1 -0
  652. package/dist/types/color/colorUtils.d.ts +9 -0
  653. package/dist/types/color/colorUtils.d.ts.map +1 -0
  654. package/dist/types/component/componentDefinitions/CalloutSectionDefinition.d.ts +11 -0
  655. package/dist/types/component/componentDefinitions/CalloutSectionDefinition.d.ts.map +1 -0
  656. package/dist/types/component/componentDefinitions/ComparisonSectionDefinition.d.ts +11 -0
  657. package/dist/types/component/componentDefinitions/ComparisonSectionDefinition.d.ts.map +1 -0
  658. package/dist/types/component/componentDefinitions/CtaBannerSectionDefinition.d.ts +11 -0
  659. package/dist/types/component/componentDefinitions/CtaBannerSectionDefinition.d.ts.map +1 -0
  660. package/dist/types/component/componentDefinitions/EntitySectionDefinition.d.ts +11 -0
  661. package/dist/types/component/componentDefinitions/EntitySectionDefinition.d.ts.map +1 -0
  662. package/dist/types/component/componentDefinitions/ErrorSectionDefinition.d.ts +12 -0
  663. package/dist/types/component/componentDefinitions/ErrorSectionDefinition.d.ts.map +1 -0
  664. package/dist/types/component/componentDefinitions/FallbackSectionDefinition.d.ts +16 -0
  665. package/dist/types/component/componentDefinitions/FallbackSectionDefinition.d.ts.map +1 -0
  666. package/dist/types/component/componentDefinitions/FeatureCardsSectionDefinition.d.ts +11 -0
  667. package/dist/types/component/componentDefinitions/FeatureCardsSectionDefinition.d.ts.map +1 -0
  668. package/dist/types/component/componentDefinitions/FeatureSection9PlusDefinition.d.ts +11 -0
  669. package/dist/types/component/componentDefinitions/FeatureSection9PlusDefinition.d.ts.map +1 -0
  670. package/dist/types/component/componentDefinitions/HeroEntitySectionDefinition.d.ts +23 -0
  671. package/dist/types/component/componentDefinitions/HeroEntitySectionDefinition.d.ts.map +1 -0
  672. package/dist/types/component/componentDefinitions/HeroSectionDefinition.d.ts +12 -0
  673. package/dist/types/component/componentDefinitions/HeroSectionDefinition.d.ts.map +1 -0
  674. package/dist/types/component/componentDefinitions/HtmlCommentSectionDefinition.d.ts +11 -0
  675. package/dist/types/component/componentDefinitions/HtmlCommentSectionDefinition.d.ts.map +1 -0
  676. package/dist/types/component/componentDefinitions/KpiSectionDefinition.d.ts +11 -0
  677. package/dist/types/component/componentDefinitions/KpiSectionDefinition.d.ts.map +1 -0
  678. package/dist/types/component/componentDefinitions/NextStepsSectionDefinition.d.ts +11 -0
  679. package/dist/types/component/componentDefinitions/NextStepsSectionDefinition.d.ts.map +1 -0
  680. package/dist/types/component/componentDefinitions/SearchSectionDefinition.d.ts +10 -0
  681. package/dist/types/component/componentDefinitions/SearchSectionDefinition.d.ts.map +1 -0
  682. package/dist/types/component/componentDefinitions/SkipNodesSectionDefinition.d.ts +12 -0
  683. package/dist/types/component/componentDefinitions/SkipNodesSectionDefinition.d.ts.map +1 -0
  684. package/dist/types/component/componentDefinitions/TextBlockSectionDefinition.d.ts +11 -0
  685. package/dist/types/component/componentDefinitions/TextBlockSectionDefinition.d.ts.map +1 -0
  686. package/dist/types/component/componentDefinitions/index.d.ts +26 -0
  687. package/dist/types/component/componentDefinitions/index.d.ts.map +1 -0
  688. package/dist/types/component/componentDefinitions/listItemsSectionDefinition.d.ts +11 -0
  689. package/dist/types/component/componentDefinitions/listItemsSectionDefinition.d.ts.map +1 -0
  690. package/dist/types/component/componentDefinitions/parse-utils.d.ts +88 -0
  691. package/dist/types/component/componentDefinitions/parse-utils.d.ts.map +1 -0
  692. package/dist/types/component/componentDefinitions/specHelpers.d.ts +16 -0
  693. package/dist/types/component/componentDefinitions/specHelpers.d.ts.map +1 -0
  694. package/dist/types/component/componentParser.d.ts +63 -0
  695. package/dist/types/component/componentParser.d.ts.map +1 -0
  696. package/dist/types/component/diagnosticTypes.d.ts +23 -0
  697. package/dist/types/component/diagnosticTypes.d.ts.map +1 -0
  698. package/dist/types/component/parser-types.d.ts +71 -0
  699. package/dist/types/component/parser-types.d.ts.map +1 -0
  700. package/dist/types/component/section-definition.d.ts +32 -0
  701. package/dist/types/component/section-definition.d.ts.map +1 -0
  702. package/dist/types/component/types.d.ts +315 -0
  703. package/dist/types/component/types.d.ts.map +1 -0
  704. package/dist/types/components/placement/PlacementPayloadContext.d.ts +20 -0
  705. package/dist/types/components/placement/PlacementPayloadContext.d.ts.map +1 -0
  706. package/dist/types/components/placement/PlacementResponseRenderer.d.ts +106 -0
  707. package/dist/types/components/placement/PlacementResponseRenderer.d.ts.map +1 -0
  708. package/dist/types/components/placement/buildPlacementDependencies.d.ts +44 -0
  709. package/dist/types/components/placement/buildPlacementDependencies.d.ts.map +1 -0
  710. package/dist/types/components/ui/BottomContainer.d.ts +9 -0
  711. package/dist/types/components/ui/BottomContainer.d.ts.map +1 -0
  712. package/dist/types/components/ui/CalloutBlock.d.ts +9 -0
  713. package/dist/types/components/ui/CalloutBlock.d.ts.map +1 -0
  714. package/dist/types/components/ui/Disclaimer.d.ts +21 -0
  715. package/dist/types/components/ui/Disclaimer.d.ts.map +1 -0
  716. package/dist/types/components/ui/FeedbackBar.d.ts +41 -0
  717. package/dist/types/components/ui/FeedbackBar.d.ts.map +1 -0
  718. package/dist/types/components/ui/Loader.d.ts +9 -0
  719. package/dist/types/components/ui/Loader.d.ts.map +1 -0
  720. package/dist/types/components/ui/MarkdownText.d.ts +9 -0
  721. package/dist/types/components/ui/MarkdownText.d.ts.map +1 -0
  722. package/dist/types/components/ui/OptimizedImage.d.ts +59 -0
  723. package/dist/types/components/ui/OptimizedImage.d.ts.map +1 -0
  724. package/dist/types/components/ui/PlacementLoader.d.ts +15 -0
  725. package/dist/types/components/ui/PlacementLoader.d.ts.map +1 -0
  726. package/dist/types/components/ui/PromptEntryEmptyState.d.ts +21 -0
  727. package/dist/types/components/ui/PromptEntryEmptyState.d.ts.map +1 -0
  728. package/dist/types/components/ui/SearchSection.d.ts +37 -0
  729. package/dist/types/components/ui/SearchSection.d.ts.map +1 -0
  730. package/dist/types/components/ui/SectionSkeleton.d.ts +27 -0
  731. package/dist/types/components/ui/SectionSkeleton.d.ts.map +1 -0
  732. package/dist/types/components/ui/SmartIcon.d.ts +19 -0
  733. package/dist/types/components/ui/SmartIcon.d.ts.map +1 -0
  734. package/dist/types/components/ui/UnifiedLink.d.ts +22 -0
  735. package/dist/types/components/ui/UnifiedLink.d.ts.map +1 -0
  736. package/dist/types/components/ui/UserQuery.d.ts +33 -0
  737. package/dist/types/components/ui/UserQuery.d.ts.map +1 -0
  738. package/dist/types/components/ui/icons/ArrowTopRightIcon.d.ts +3 -0
  739. package/dist/types/components/ui/icons/ArrowTopRightIcon.d.ts.map +1 -0
  740. package/dist/types/components/ui/icons/ArrowUpIcon.d.ts +3 -0
  741. package/dist/types/components/ui/icons/ArrowUpIcon.d.ts.map +1 -0
  742. package/dist/types/components/ui/icons/CheckIcon.d.ts +3 -0
  743. package/dist/types/components/ui/icons/CheckIcon.d.ts.map +1 -0
  744. package/dist/types/components/ui/icons/CommentIcon.d.ts +3 -0
  745. package/dist/types/components/ui/icons/CommentIcon.d.ts.map +1 -0
  746. package/dist/types/components/ui/icons/PlusIcon.d.ts +3 -0
  747. package/dist/types/components/ui/icons/PlusIcon.d.ts.map +1 -0
  748. package/dist/types/components/ui/icons/RedoIcon.d.ts +3 -0
  749. package/dist/types/components/ui/icons/RedoIcon.d.ts.map +1 -0
  750. package/dist/types/components/ui/icons/ShareIcon.d.ts +3 -0
  751. package/dist/types/components/ui/icons/ShareIcon.d.ts.map +1 -0
  752. package/dist/types/components/ui/icons/UndoIcon.d.ts +3 -0
  753. package/dist/types/components/ui/icons/UndoIcon.d.ts.map +1 -0
  754. package/dist/types/components/ui/table.d.ts +11 -0
  755. package/dist/types/components/ui/table.d.ts.map +1 -0
  756. package/dist/types/context/ChipsContext.d.ts +8 -0
  757. package/dist/types/context/ChipsContext.d.ts.map +1 -0
  758. package/dist/types/context/ComponentDependenciesContext.d.ts +8 -0
  759. package/dist/types/context/ComponentDependenciesContext.d.ts.map +1 -0
  760. package/dist/types/entity/defaultExtractor.d.ts +14 -0
  761. package/dist/types/entity/defaultExtractor.d.ts.map +1 -0
  762. package/dist/types/entity/enrichEntitiesFromPayload.d.ts +27 -0
  763. package/dist/types/entity/enrichEntitiesFromPayload.d.ts.map +1 -0
  764. package/dist/types/entity/fetchEntityListData.d.ts +20 -0
  765. package/dist/types/entity/fetchEntityListData.d.ts.map +1 -0
  766. package/dist/types/entity/index.d.ts +16 -0
  767. package/dist/types/entity/index.d.ts.map +1 -0
  768. package/dist/types/entity/types.d.ts +13 -0
  769. package/dist/types/entity/types.d.ts.map +1 -0
  770. package/dist/types/errors/conversationErrorTypes.d.ts +20 -0
  771. package/dist/types/errors/conversationErrorTypes.d.ts.map +1 -0
  772. package/dist/types/errors/errorTemplates.d.ts +27 -0
  773. package/dist/types/errors/errorTemplates.d.ts.map +1 -0
  774. package/dist/types/errors/index.d.ts +3 -0
  775. package/dist/types/errors/index.d.ts.map +1 -0
  776. package/dist/types/featureToggles/FeatureToggleContext.d.ts +18 -0
  777. package/dist/types/featureToggles/FeatureToggleContext.d.ts.map +1 -0
  778. package/dist/types/hooks/useConversation.d.ts +3 -0
  779. package/dist/types/hooks/useConversation.d.ts.map +1 -0
  780. package/dist/types/hooks/useDebugImageContext.d.ts +2 -0
  781. package/dist/types/hooks/useDebugImageContext.d.ts.map +1 -0
  782. package/dist/types/hooks/useEntityTransforms.d.ts +3 -0
  783. package/dist/types/hooks/useEntityTransforms.d.ts.map +1 -0
  784. package/dist/types/hooks/useMarkdownUtils.d.ts +3 -0
  785. package/dist/types/hooks/useMarkdownUtils.d.ts.map +1 -0
  786. package/dist/types/hooks/useResolveGenericEntityData.d.ts +11 -0
  787. package/dist/types/hooks/useResolveGenericEntityData.d.ts.map +1 -0
  788. package/dist/types/hooks/useResolveSearchSpringEntityData.d.ts +20 -0
  789. package/dist/types/hooks/useResolveSearchSpringEntityData.d.ts.map +1 -0
  790. package/dist/types/hooks/useResolveShopifyEntityData.d.ts +21 -0
  791. package/dist/types/hooks/useResolveShopifyEntityData.d.ts.map +1 -0
  792. package/dist/types/hooks/useResolvedImageSources.d.ts +6 -0
  793. package/dist/types/hooks/useResolvedImageSources.d.ts.map +1 -0
  794. package/dist/types/hooks/useWeb5Link.d.ts +3 -0
  795. package/dist/types/hooks/useWeb5Link.d.ts.map +1 -0
  796. package/dist/types/image/contextualImageTypes.d.ts +17 -0
  797. package/dist/types/image/contextualImageTypes.d.ts.map +1 -0
  798. package/dist/types/image/imageSearchFilterTypes.d.ts +14 -0
  799. package/dist/types/image/imageSearchFilterTypes.d.ts.map +1 -0
  800. package/dist/types/image/imageSearchFilters.d.ts +16 -0
  801. package/dist/types/image/imageSearchFilters.d.ts.map +1 -0
  802. package/dist/types/index.d.ts +88 -0
  803. package/dist/types/index.d.ts.map +1 -0
  804. package/dist/types/lib/utils.d.ts +3 -0
  805. package/dist/types/lib/utils.d.ts.map +1 -0
  806. package/dist/types/markdownBlocks.d.ts +44 -0
  807. package/dist/types/markdownBlocks.d.ts.map +1 -0
  808. package/dist/types/match/astToParts.d.ts +15 -0
  809. package/dist/types/match/astToParts.d.ts.map +1 -0
  810. package/dist/types/match/extractProps.d.ts +207 -0
  811. package/dist/types/match/extractProps.d.ts.map +1 -0
  812. package/dist/types/match/index.d.ts +4 -0
  813. package/dist/types/match/index.d.ts.map +1 -0
  814. package/dist/types/match/matchAllSections.d.ts +15 -0
  815. package/dist/types/match/matchAllSections.d.ts.map +1 -0
  816. package/dist/types/match/matchMarkdown.d.ts +25 -0
  817. package/dist/types/match/matchMarkdown.d.ts.map +1 -0
  818. package/dist/types/parts/parts.d.ts +144 -0
  819. package/dist/types/parts/parts.d.ts.map +1 -0
  820. package/dist/types/patternAnalyzer/conflictDetector.d.ts +19 -0
  821. package/dist/types/patternAnalyzer/conflictDetector.d.ts.map +1 -0
  822. package/dist/types/patternAnalyzer/index.d.ts +10 -0
  823. package/dist/types/patternAnalyzer/index.d.ts.map +1 -0
  824. package/dist/types/patternAnalyzer/markdownGenerator.d.ts +9 -0
  825. package/dist/types/patternAnalyzer/markdownGenerator.d.ts.map +1 -0
  826. package/dist/types/patternAnalyzer/mergeDetector.d.ts +14 -0
  827. package/dist/types/patternAnalyzer/mergeDetector.d.ts.map +1 -0
  828. package/dist/types/patternAnalyzer/parserValidator.d.ts +13 -0
  829. package/dist/types/patternAnalyzer/parserValidator.d.ts.map +1 -0
  830. package/dist/types/patternAnalyzer/patternWriter.d.ts +8 -0
  831. package/dist/types/patternAnalyzer/patternWriter.d.ts.map +1 -0
  832. package/dist/types/patternAnalyzer/run.d.ts +2 -0
  833. package/dist/types/patternAnalyzer/run.d.ts.map +1 -0
  834. package/dist/types/patternAnalyzer/types.d.ts +59 -0
  835. package/dist/types/patternAnalyzer/types.d.ts.map +1 -0
  836. package/dist/types/patternValidator/automaton.d.ts +3 -0
  837. package/dist/types/patternValidator/automaton.d.ts.map +1 -0
  838. package/dist/types/patternValidator/index.d.ts +48 -0
  839. package/dist/types/patternValidator/index.d.ts.map +1 -0
  840. package/dist/types/patternValidator/lexer.d.ts +3 -0
  841. package/dist/types/patternValidator/lexer.d.ts.map +1 -0
  842. package/dist/types/patternValidator/matcher.d.ts +14 -0
  843. package/dist/types/patternValidator/matcher.d.ts.map +1 -0
  844. package/dist/types/patternValidator/parser.d.ts +14 -0
  845. package/dist/types/patternValidator/parser.d.ts.map +1 -0
  846. package/dist/types/patternValidator/types.d.ts +125 -0
  847. package/dist/types/patternValidator/types.d.ts.map +1 -0
  848. package/dist/types/patternValidator/validator.test.d.ts +2 -0
  849. package/dist/types/patternValidator/validator.test.d.ts.map +1 -0
  850. package/dist/types/registry/ComponentRegistry.d.ts +64 -0
  851. package/dist/types/registry/ComponentRegistry.d.ts.map +1 -0
  852. package/dist/types/registry/Intent.d.ts +12 -0
  853. package/dist/types/registry/Intent.d.ts.map +1 -0
  854. package/dist/types/registry/index.d.ts +4 -0
  855. package/dist/types/registry/index.d.ts.map +1 -0
  856. package/dist/types/registry/types.d.ts +99 -0
  857. package/dist/types/registry/types.d.ts.map +1 -0
  858. package/dist/types/services/cart/addToCart.d.ts +26 -0
  859. package/dist/types/services/cart/addToCart.d.ts.map +1 -0
  860. package/dist/types/services/cart/index.d.ts +2 -0
  861. package/dist/types/services/cart/index.d.ts.map +1 -0
  862. package/dist/types/services/searchspring/index.d.ts +4 -0
  863. package/dist/types/services/searchspring/index.d.ts.map +1 -0
  864. package/dist/types/services/searchspring/searchSpringClient.d.ts +13 -0
  865. package/dist/types/services/searchspring/searchSpringClient.d.ts.map +1 -0
  866. package/dist/types/services/searchspring/transformSSProduct.d.ts +7 -0
  867. package/dist/types/services/searchspring/transformSSProduct.d.ts.map +1 -0
  868. package/dist/types/services/searchspring/types.d.ts +48 -0
  869. package/dist/types/services/searchspring/types.d.ts.map +1 -0
  870. package/dist/types/services/shopify/index.d.ts +7 -0
  871. package/dist/types/services/shopify/index.d.ts.map +1 -0
  872. package/dist/types/services/shopify/queries.d.ts +13 -0
  873. package/dist/types/services/shopify/queries.d.ts.map +1 -0
  874. package/dist/types/services/shopify/resolveStoreDomain.d.ts +14 -0
  875. package/dist/types/services/shopify/resolveStoreDomain.d.ts.map +1 -0
  876. package/dist/types/services/shopify/shopifyEntityResolver.d.ts +21 -0
  877. package/dist/types/services/shopify/shopifyEntityResolver.d.ts.map +1 -0
  878. package/dist/types/services/shopify/shopifyStorefrontClient.d.ts +19 -0
  879. package/dist/types/services/shopify/shopifyStorefrontClient.d.ts.map +1 -0
  880. package/dist/types/services/shopify/transformShopifyEntity.d.ts +11 -0
  881. package/dist/types/services/shopify/transformShopifyEntity.d.ts.map +1 -0
  882. package/dist/types/services/shopify/types.d.ts +109 -0
  883. package/dist/types/services/shopify/types.d.ts.map +1 -0
  884. package/dist/types/testUtils.d.ts +7 -0
  885. package/dist/types/testUtils.d.ts.map +1 -0
  886. package/dist/types/types/answerUpdatedEvent.d.ts +29 -0
  887. package/dist/types/types/answerUpdatedEvent.d.ts.map +1 -0
  888. package/dist/types/types/blog.d.ts +22 -0
  889. package/dist/types/types/blog.d.ts.map +1 -0
  890. package/dist/types/types/callout.d.ts +7 -0
  891. package/dist/types/types/callout.d.ts.map +1 -0
  892. package/dist/types/types/dependencies.d.ts +191 -0
  893. package/dist/types/types/dependencies.d.ts.map +1 -0
  894. package/dist/types/types/entity.d.ts +38 -0
  895. package/dist/types/types/entity.d.ts.map +1 -0
  896. package/dist/types/types/link-types.d.ts +38 -0
  897. package/dist/types/types/link-types.d.ts.map +1 -0
  898. package/dist/types/types/page-section.d.ts +27 -0
  899. package/dist/types/types/page-section.d.ts.map +1 -0
  900. package/dist/types/types/placement.d.ts +94 -0
  901. package/dist/types/types/placement.d.ts.map +1 -0
  902. package/dist/types/types/redirectEvent.d.ts +42 -0
  903. package/dist/types/types/redirectEvent.d.ts.map +1 -0
  904. package/dist/types/types/userQueryEvent.d.ts +24 -0
  905. package/dist/types/types/userQueryEvent.d.ts.map +1 -0
  906. package/dist/types/utils/analyticsEvents.d.ts +24 -0
  907. package/dist/types/utils/analyticsEvents.d.ts.map +1 -0
  908. package/dist/types/utils/componentTracking.d.ts +55 -0
  909. package/dist/types/utils/componentTracking.d.ts.map +1 -0
  910. package/dist/types/utils/contentKeywordMatcher.d.ts +14 -0
  911. package/dist/types/utils/contentKeywordMatcher.d.ts.map +1 -0
  912. package/dist/types/utils/conversationApi.d.ts +26 -0
  913. package/dist/types/utils/conversationApi.d.ts.map +1 -0
  914. package/dist/types/utils/conversationMode.d.ts +16 -0
  915. package/dist/types/utils/conversationMode.d.ts.map +1 -0
  916. package/dist/types/utils/diagnosticsCollector.d.ts +33 -0
  917. package/dist/types/utils/diagnosticsCollector.d.ts.map +1 -0
  918. package/dist/types/utils/entityLinkParser.d.ts +97 -0
  919. package/dist/types/utils/entityLinkParser.d.ts.map +1 -0
  920. package/dist/types/utils/htmlCommentParser.d.ts +13 -0
  921. package/dist/types/utils/htmlCommentParser.d.ts.map +1 -0
  922. package/dist/types/utils/image-utils.d.ts +10 -0
  923. package/dist/types/utils/image-utils.d.ts.map +1 -0
  924. package/dist/types/utils/intentExtractor.d.ts +11 -0
  925. package/dist/types/utils/intentExtractor.d.ts.map +1 -0
  926. package/dist/types/utils/markdownPreprocessor.d.ts +95 -0
  927. package/dist/types/utils/markdownPreprocessor.d.ts.map +1 -0
  928. package/dist/types/utils/navigationStack.d.ts +6 -0
  929. package/dist/types/utils/navigationStack.d.ts.map +1 -0
  930. package/dist/types/utils/nodeMatchers.d.ts +10 -0
  931. package/dist/types/utils/nodeMatchers.d.ts.map +1 -0
  932. package/dist/types/utils/propsExtractor.d.ts +51 -0
  933. package/dist/types/utils/propsExtractor.d.ts.map +1 -0
  934. package/dist/types/utils/sessionManager.d.ts +57 -0
  935. package/dist/types/utils/sessionManager.d.ts.map +1 -0
  936. package/dist/types/utils/unifiedMarkdownParser.d.ts +9 -0
  937. package/dist/types/utils/unifiedMarkdownParser.d.ts.map +1 -0
  938. package/dist/types/utils/web5LinkValidator.d.ts +14 -0
  939. package/dist/types/utils/web5LinkValidator.d.ts.map +1 -0
  940. package/dist/types/utils/web5LinkValidator.test.d.ts +2 -0
  941. package/dist/types/utils/web5LinkValidator.test.d.ts.map +1 -0
  942. package/package.json +103 -0
  943. package/src/styles/base-tokens.css +152 -0
  944. package/src/styles/base-utilities.css +424 -0
  945. package/src/styles/components.css +6 -0
  946. package/src/styles/prompt-input-tokens.css +136 -0
  947. package/src/styles/tailwind-theme.css +138 -0
@@ -0,0 +1,257 @@
1
+ /**
2
+ * Markdown preprocessing utilities
3
+ *
4
+ * These functions fix common markdown formatting issues before AST parsing.
5
+ * They are applied in a specific order to ensure proper processing.
6
+ */
7
+
8
+ /**
9
+ * Escape web5:// links by URL-encoding the URL part
10
+ * e.g. [text](web5://some text with spaces) → [text](web5://some%20text%20with%20spaces)
11
+ *
12
+ * @param markdown - The markdown string to process
13
+ * @returns The markdown string with web5:// URLs properly encoded
14
+ */
15
+ export function escapeWeb5Links(markdown) {
16
+ // Match markdown links with web5:// protocol
17
+ // Pattern: [text](web5://...)
18
+ return markdown.replace(/\[([^\]]+)\]\((web5|entity|image):\/\/([^)]+)\)/g, (match, linkText, protocol, url) => {
19
+ try {
20
+ // Decode first to avoid double-encoding (e.g. %20 → %2520)
21
+ const decodedUrl = decodeURIComponent(url);
22
+ // Use encodeURI (not encodeURIComponent) to preserve URL structure
23
+ // characters like /, ?, &, = while encoding spaces and unsafe chars
24
+ const encodedUrl = encodeURI(decodedUrl);
25
+ return `[${linkText}](${protocol}://${encodedUrl})`;
26
+ } catch {
27
+ // decodeURIComponent throws on a malformed percent sequence (raw `%`
28
+ // or truncated `%X`), encodeURI on a lone surrogate. During streaming
29
+ // this happens when chunks are concatenated mid-escape or a multi-byte
30
+ // char is split. Leave the link untouched rather than throw — an
31
+ // uncaught error here aborts the whole streaming parse and surfaces as
32
+ // a 908 conversation-streaming-error even though the page rendered.
33
+ return match;
34
+ }
35
+ });
36
+ }
37
+
38
+ /**
39
+ * Fix malformed markdown links with whitespace (spaces, tabs, newlines) between ] and (
40
+ * e.g. [text] (url) → [text](url)
41
+ * e.g. [text]\n(url) → [text](url)
42
+ *
43
+ * @param markdown - The markdown string to process
44
+ * @returns The markdown string with fixed link formatting
45
+ */
46
+ export function fixMalformedLinks(markdown) {
47
+ // \s matches spaces, tabs, and newlines; + means one or more
48
+ // Also handle cases with newlines explicitly
49
+ return markdown.replace(/\][\s\r\n]+\(/g, '](');
50
+ }
51
+
52
+ /**
53
+ * Recover inline CTA chips where the LLM emitted emphasized text followed by a
54
+ * dangling markdown link close, e.g. `**label →**](web5://ask/query)`.
55
+ */
56
+ export function recoverOrphanedEmphasisLinks(markdown) {
57
+ const diagnostics = [];
58
+ const result = markdown.replace(/(^|[^\[])\*\*([^\n\]*]+?)\*\*\]\((web5:\/\/(?:ask|action)\/[^)]+)\)/g, (match, prefix, linkText, href) => {
59
+ const normalized = `${prefix}[${linkText.trim()}](${href})`;
60
+ diagnostics.push({
61
+ type: 'orphaned_emphasis_link_recovered',
62
+ original: match,
63
+ normalized
64
+ });
65
+ return normalized;
66
+ });
67
+ return {
68
+ result,
69
+ diagnostics
70
+ };
71
+ }
72
+
73
+ /**
74
+ * Trim trailing whitespace from lines that contain text
75
+ *
76
+ * @param markdown - The markdown string to process
77
+ * @returns The markdown string with trailing whitespace trimmed from text lines
78
+ */
79
+ export function trimTrailingWhitespace(markdown) {
80
+ const lines = markdown.split('\n');
81
+ const processedLines = [];
82
+ for (const line of lines) {
83
+ const trimmedLine = line.trim();
84
+
85
+ // If the line has content, trim trailing whitespace (keep leading spaces for indentation)
86
+ if (trimmedLine.length > 0) {
87
+ processedLines.push(line.trimEnd());
88
+ } else {
89
+ // Lines with only whitespace become empty lines
90
+ processedLines.push('');
91
+ }
92
+ }
93
+ return processedLines.join('\n');
94
+ }
95
+
96
+ /**
97
+ * Normalize malformed web5://icon URLs to the canonical web5://icon/{name} format.
98
+ * Handles variants like web5://icon:arrow, web5://icon-arrow, web5://icon arrow → web5://icon/arrow.
99
+ * Only alphanumeric characters and dashes are kept in the icon name.
100
+ */
101
+ export function normalizeIconUrls(markdown) {
102
+ const diagnostics = [];
103
+ const result = markdown.replace(/web5:\/\/icon(?:([:/-][^)\s]+)|(?:\s+([a-zA-Z0-9-]+)))/g, (match, rest, spaceName) => {
104
+ const cleanName = (spaceName ?? rest ?? '').replace(/[^a-zA-Z0-9-]/g, '').replace(/^-+|-+$/g, '');
105
+ const normalized = `web5://icon/${cleanName}`;
106
+ if (match !== normalized) {
107
+ diagnostics.push({
108
+ type: 'icon_url_normalized',
109
+ original: match,
110
+ normalized
111
+ });
112
+ }
113
+ return normalized;
114
+ });
115
+ return {
116
+ result,
117
+ diagnostics
118
+ };
119
+ }
120
+ function isFenceToggle(line) {
121
+ return /^\s*(`{3,}|~{3,})/.test(line);
122
+ }
123
+ function splitPipeRow(line) {
124
+ const trimmed = line.trim();
125
+ if (!trimmed.startsWith('|') || !trimmed.endsWith('|')) {
126
+ return [];
127
+ }
128
+ return trimmed.slice(1, -1).split('|').map(cell => cell.trim());
129
+ }
130
+ function isPipeRow(line) {
131
+ return splitPipeRow(line).length >= 2;
132
+ }
133
+ function isTableDelimiterRow(line) {
134
+ const cells = splitPipeRow(line);
135
+ return cells.length >= 2 && cells.every(cell => /^:?-{3,}:?$/.test(cell.replace(/\s+/g, '')));
136
+ }
137
+
138
+ /**
139
+ * Repair LLM-emitted pipe tables that omit the GFM delimiter row.
140
+ * Without this line remark-gfm parses the rows as plain paragraphs, so
141
+ * registry sections such as comparison never receive a `table` part.
142
+ */
143
+ export function insertMissingTableSeparators(markdown) {
144
+ const diagnostics = [];
145
+ const lines = markdown.split('\n');
146
+ const result = [];
147
+ let inFence = false;
148
+ for (let i = 0; i < lines.length; i++) {
149
+ const line = lines[i];
150
+ const previousLine = result[result.length - 1] ?? '';
151
+ const nextLine = lines[i + 1] ?? '';
152
+ if (isFenceToggle(line)) {
153
+ inFence = !inFence;
154
+ result.push(line);
155
+ continue;
156
+ }
157
+ result.push(line);
158
+ if (inFence || !isPipeRow(line) || isPipeRow(previousLine)) {
159
+ continue;
160
+ }
161
+ if (!isPipeRow(nextLine) || isTableDelimiterRow(nextLine)) {
162
+ continue;
163
+ }
164
+ const headerCells = splitPipeRow(line);
165
+ const nextCells = splitPipeRow(nextLine);
166
+ if (headerCells.length !== nextCells.length) {
167
+ continue;
168
+ }
169
+ const separator = `| ${headerCells.map(() => '---').join(' | ')} |`;
170
+ result.push(separator);
171
+ diagnostics.push({
172
+ type: 'table_separator_inserted',
173
+ original: line,
174
+ normalized: `${line}\n${separator}`
175
+ });
176
+ }
177
+ return {
178
+ result: result.join('\n'),
179
+ diagnostics
180
+ };
181
+ }
182
+
183
+ /**
184
+ * Decode URL-encoded text in markdown link labels.
185
+ * e.g. [Some%20Text](https://example.com) → [Some Text](https://example.com)
186
+ * e.g. [Which+solution%3F](web5://...) → [Which solution?](web5://...)
187
+ *
188
+ * Only decodes the text portion [text], never the URL portion (url).
189
+ * Handles both `+` (form-encoded space) and `%XX` escapes; falls back to
190
+ * the original string on malformed percent sequences.
191
+ */
192
+ export function decodeLinkText(markdown) {
193
+ const diagnostics = [];
194
+ const result = markdown.replace(/\[([^\]]+)\]\(/g, (match, linkText) => {
195
+ try {
196
+ const decoded = decodeURIComponent(linkText.replace(/\+/g, '%20'));
197
+ if (decoded !== linkText) {
198
+ diagnostics.push({
199
+ type: 'link_text_decoded',
200
+ original: linkText,
201
+ normalized: decoded
202
+ });
203
+ }
204
+ return `[${decoded}](`;
205
+ } catch {
206
+ // If decodeURIComponent fails (e.g. malformed percent sequence like %ZZ),
207
+ // leave the text unchanged
208
+ return match;
209
+ }
210
+ });
211
+ return {
212
+ result,
213
+ diagnostics
214
+ };
215
+ }
216
+
217
+ /**
218
+ * Preprocess markdown to fix common formatting issues before AST parsing.
219
+ *
220
+ * The preprocessing steps are applied in the following order:
221
+ * 1. Recover orphaned emphasized web5 links
222
+ * 2. Fix malformed links (remove whitespace between ] and () - must happen before web5 links are matched)
223
+ * 3. Decode URL-encoded link text
224
+ * 4. Escape web5:// links (URL-encode URLs)
225
+ * 5. Normalize icon URLs
226
+ * 6. Insert missing table separators for obvious pipe tables
227
+ * 7. Trim trailing whitespace from lines
228
+ *
229
+ * @param markdown - The raw markdown string to preprocess
230
+ * @returns The preprocessed markdown string ready for AST parsing
231
+ */
232
+ export function preprocessMarkdown(markdown) {
233
+ const {
234
+ result: recoveredLinks,
235
+ diagnostics: recoveredLinkDiagnostics
236
+ } = recoverOrphanedEmphasisLinks(markdown);
237
+ let processed = fixMalformedLinks(recoveredLinks);
238
+ const {
239
+ result: decodedText,
240
+ diagnostics: decodeDiagnostics
241
+ } = decodeLinkText(processed);
242
+ processed = escapeWeb5Links(decodedText);
243
+ const {
244
+ result: normalized,
245
+ diagnostics: iconDiagnostics
246
+ } = normalizeIconUrls(processed);
247
+ const {
248
+ result: tableNormalized,
249
+ diagnostics: tableDiagnostics
250
+ } = insertMissingTableSeparators(normalized);
251
+ processed = trimTrailingWhitespace(tableNormalized);
252
+ return {
253
+ markdown: processed,
254
+ diagnostics: [...recoveredLinkDiagnostics, ...decodeDiagnostics, ...iconDiagnostics, ...tableDiagnostics]
255
+ };
256
+ }
257
+ //# sourceMappingURL=markdownPreprocessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["escapeWeb5Links","markdown","replace","match","linkText","protocol","url","decodedUrl","decodeURIComponent","encodedUrl","encodeURI","fixMalformedLinks","recoverOrphanedEmphasisLinks","diagnostics","result","prefix","href","normalized","trim","push","type","original","trimTrailingWhitespace","lines","split","processedLines","line","trimmedLine","length","trimEnd","join","normalizeIconUrls","rest","spaceName","cleanName","isFenceToggle","test","splitPipeRow","trimmed","startsWith","endsWith","slice","map","cell","isPipeRow","isTableDelimiterRow","cells","every","insertMissingTableSeparators","inFence","i","previousLine","nextLine","headerCells","nextCells","separator","decodeLinkText","decoded","preprocessMarkdown","recoveredLinks","recoveredLinkDiagnostics","processed","decodedText","decodeDiagnostics","iconDiagnostics","tableNormalized","tableDiagnostics"],"sources":["../../../src/utils/markdownPreprocessor.ts"],"sourcesContent":["/**\n * Markdown preprocessing utilities\n *\n * These functions fix common markdown formatting issues before AST parsing.\n * They are applied in a specific order to ensure proper processing.\n */\n\nexport interface PreprocessorDiagnostic {\n type: string;\n original: string;\n normalized: string;\n}\n\nexport interface PreprocessResult {\n markdown: string;\n diagnostics: PreprocessorDiagnostic[];\n}\n\n/**\n * Escape web5:// links by URL-encoding the URL part\n * e.g. [text](web5://some text with spaces) → [text](web5://some%20text%20with%20spaces)\n *\n * @param markdown - The markdown string to process\n * @returns The markdown string with web5:// URLs properly encoded\n */\nexport function escapeWeb5Links(markdown: string): string {\n // Match markdown links with web5:// protocol\n // Pattern: [text](web5://...)\n return markdown.replace(\n /\\[([^\\]]+)\\]\\((web5|entity|image):\\/\\/([^)]+)\\)/g,\n (match, linkText, protocol, url) => {\n try {\n // Decode first to avoid double-encoding (e.g. %20 → %2520)\n const decodedUrl = decodeURIComponent(url);\n // Use encodeURI (not encodeURIComponent) to preserve URL structure\n // characters like /, ?, &, = while encoding spaces and unsafe chars\n const encodedUrl = encodeURI(decodedUrl);\n return `[${linkText}](${protocol}://${encodedUrl})`;\n } catch {\n // decodeURIComponent throws on a malformed percent sequence (raw `%`\n // or truncated `%X`), encodeURI on a lone surrogate. During streaming\n // this happens when chunks are concatenated mid-escape or a multi-byte\n // char is split. Leave the link untouched rather than throw — an\n // uncaught error here aborts the whole streaming parse and surfaces as\n // a 908 conversation-streaming-error even though the page rendered.\n return match;\n }\n },\n );\n}\n\n/**\n * Fix malformed markdown links with whitespace (spaces, tabs, newlines) between ] and (\n * e.g. [text] (url) → [text](url)\n * e.g. [text]\\n(url) → [text](url)\n *\n * @param markdown - The markdown string to process\n * @returns The markdown string with fixed link formatting\n */\nexport function fixMalformedLinks(markdown: string): string {\n // \\s matches spaces, tabs, and newlines; + means one or more\n // Also handle cases with newlines explicitly\n return markdown.replace(/\\][\\s\\r\\n]+\\(/g, '](');\n}\n\n/**\n * Recover inline CTA chips where the LLM emitted emphasized text followed by a\n * dangling markdown link close, e.g. `**label →**](web5://ask/query)`.\n */\nexport function recoverOrphanedEmphasisLinks(markdown: string): {\n result: string;\n diagnostics: PreprocessorDiagnostic[];\n} {\n const diagnostics: PreprocessorDiagnostic[] = [];\n const result = markdown.replace(\n /(^|[^\\[])\\*\\*([^\\n\\]*]+?)\\*\\*\\]\\((web5:\\/\\/(?:ask|action)\\/[^)]+)\\)/g,\n (match, prefix: string, linkText: string, href: string) => {\n const normalized = `${prefix}[${linkText.trim()}](${href})`;\n diagnostics.push({\n type: 'orphaned_emphasis_link_recovered',\n original: match,\n normalized,\n });\n return normalized;\n },\n );\n return { result, diagnostics };\n}\n\n/**\n * Trim trailing whitespace from lines that contain text\n *\n * @param markdown - The markdown string to process\n * @returns The markdown string with trailing whitespace trimmed from text lines\n */\nexport function trimTrailingWhitespace(markdown: string): string {\n const lines = markdown.split('\\n');\n const processedLines: string[] = [];\n\n for (const line of lines) {\n const trimmedLine = line.trim();\n\n // If the line has content, trim trailing whitespace (keep leading spaces for indentation)\n if (trimmedLine.length > 0) {\n processedLines.push(line.trimEnd());\n } else {\n // Lines with only whitespace become empty lines\n processedLines.push('');\n }\n }\n\n return processedLines.join('\\n');\n}\n\n/**\n * Normalize malformed web5://icon URLs to the canonical web5://icon/{name} format.\n * Handles variants like web5://icon:arrow, web5://icon-arrow, web5://icon arrow → web5://icon/arrow.\n * Only alphanumeric characters and dashes are kept in the icon name.\n */\nexport function normalizeIconUrls(markdown: string): {\n result: string;\n diagnostics: PreprocessorDiagnostic[];\n} {\n const diagnostics: PreprocessorDiagnostic[] = [];\n const result = markdown.replace(\n /web5:\\/\\/icon(?:([:/-][^)\\s]+)|(?:\\s+([a-zA-Z0-9-]+)))/g,\n (match, rest: string | undefined, spaceName: string | undefined) => {\n const cleanName = (spaceName ?? rest ?? '')\n .replace(/[^a-zA-Z0-9-]/g, '')\n .replace(/^-+|-+$/g, '');\n const normalized = `web5://icon/${cleanName}`;\n if (match !== normalized) {\n diagnostics.push({\n type: 'icon_url_normalized',\n original: match,\n normalized,\n });\n }\n return normalized;\n },\n );\n return { result, diagnostics };\n}\n\nfunction isFenceToggle(line: string): boolean {\n return /^\\s*(`{3,}|~{3,})/.test(line);\n}\n\nfunction splitPipeRow(line: string): string[] {\n const trimmed = line.trim();\n if (!trimmed.startsWith('|') || !trimmed.endsWith('|')) {\n return [];\n }\n return trimmed\n .slice(1, -1)\n .split('|')\n .map((cell) => cell.trim());\n}\n\nfunction isPipeRow(line: string): boolean {\n return splitPipeRow(line).length >= 2;\n}\n\nfunction isTableDelimiterRow(line: string): boolean {\n const cells = splitPipeRow(line);\n return (\n cells.length >= 2 &&\n cells.every((cell) => /^:?-{3,}:?$/.test(cell.replace(/\\s+/g, '')))\n );\n}\n\n/**\n * Repair LLM-emitted pipe tables that omit the GFM delimiter row.\n * Without this line remark-gfm parses the rows as plain paragraphs, so\n * registry sections such as comparison never receive a `table` part.\n */\nexport function insertMissingTableSeparators(markdown: string): {\n result: string;\n diagnostics: PreprocessorDiagnostic[];\n} {\n const diagnostics: PreprocessorDiagnostic[] = [];\n const lines = markdown.split('\\n');\n const result: string[] = [];\n let inFence = false;\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n const previousLine = result[result.length - 1] ?? '';\n const nextLine = lines[i + 1] ?? '';\n\n if (isFenceToggle(line)) {\n inFence = !inFence;\n result.push(line);\n continue;\n }\n\n result.push(line);\n\n if (inFence || !isPipeRow(line) || isPipeRow(previousLine)) {\n continue;\n }\n if (!isPipeRow(nextLine) || isTableDelimiterRow(nextLine)) {\n continue;\n }\n\n const headerCells = splitPipeRow(line);\n const nextCells = splitPipeRow(nextLine);\n if (headerCells.length !== nextCells.length) {\n continue;\n }\n\n const separator = `| ${headerCells.map(() => '---').join(' | ')} |`;\n result.push(separator);\n diagnostics.push({\n type: 'table_separator_inserted',\n original: line,\n normalized: `${line}\\n${separator}`,\n });\n }\n\n return { result: result.join('\\n'), diagnostics };\n}\n\n/**\n * Decode URL-encoded text in markdown link labels.\n * e.g. [Some%20Text](https://example.com) → [Some Text](https://example.com)\n * e.g. [Which+solution%3F](web5://...) → [Which solution?](web5://...)\n *\n * Only decodes the text portion [text], never the URL portion (url).\n * Handles both `+` (form-encoded space) and `%XX` escapes; falls back to\n * the original string on malformed percent sequences.\n */\nexport function decodeLinkText(markdown: string): {\n result: string;\n diagnostics: PreprocessorDiagnostic[];\n} {\n const diagnostics: PreprocessorDiagnostic[] = [];\n const result = markdown.replace(\n /\\[([^\\]]+)\\]\\(/g,\n (match, linkText: string) => {\n try {\n const decoded = decodeURIComponent(linkText.replace(/\\+/g, '%20'));\n if (decoded !== linkText) {\n diagnostics.push({\n type: 'link_text_decoded',\n original: linkText,\n normalized: decoded,\n });\n }\n return `[${decoded}](`;\n } catch {\n // If decodeURIComponent fails (e.g. malformed percent sequence like %ZZ),\n // leave the text unchanged\n return match;\n }\n },\n );\n return { result, diagnostics };\n}\n\n/**\n * Preprocess markdown to fix common formatting issues before AST parsing.\n *\n * The preprocessing steps are applied in the following order:\n * 1. Recover orphaned emphasized web5 links\n * 2. Fix malformed links (remove whitespace between ] and () - must happen before web5 links are matched)\n * 3. Decode URL-encoded link text\n * 4. Escape web5:// links (URL-encode URLs)\n * 5. Normalize icon URLs\n * 6. Insert missing table separators for obvious pipe tables\n * 7. Trim trailing whitespace from lines\n *\n * @param markdown - The raw markdown string to preprocess\n * @returns The preprocessed markdown string ready for AST parsing\n */\nexport function preprocessMarkdown(markdown: string): PreprocessResult {\n const { result: recoveredLinks, diagnostics: recoveredLinkDiagnostics } =\n recoverOrphanedEmphasisLinks(markdown);\n let processed = fixMalformedLinks(recoveredLinks);\n const { result: decodedText, diagnostics: decodeDiagnostics } =\n decodeLinkText(processed);\n processed = escapeWeb5Links(decodedText);\n const { result: normalized, diagnostics: iconDiagnostics } =\n normalizeIconUrls(processed);\n const { result: tableNormalized, diagnostics: tableDiagnostics } =\n insertMissingTableSeparators(normalized);\n processed = trimTrailingWhitespace(tableNormalized);\n return {\n markdown: processed,\n diagnostics: [\n ...recoveredLinkDiagnostics,\n ...decodeDiagnostics,\n ...iconDiagnostics,\n ...tableDiagnostics,\n ],\n };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,27 @@
1
+ const FORWARD_STACK_KEY = 'web5_conversation_forward_stack';
2
+ export function getForwardStack() {
3
+ try {
4
+ const raw = sessionStorage.getItem(FORWARD_STACK_KEY);
5
+ return raw ? JSON.parse(raw) : [];
6
+ } catch {
7
+ return [];
8
+ }
9
+ }
10
+ export function setForwardStack(stack) {
11
+ sessionStorage.setItem(FORWARD_STACK_KEY, JSON.stringify(stack));
12
+ }
13
+ export function clearForwardStack() {
14
+ sessionStorage.removeItem(FORWARD_STACK_KEY);
15
+ }
16
+ export function pushToForwardStack(triggerId) {
17
+ const stack = getForwardStack();
18
+ stack.push(triggerId);
19
+ setForwardStack(stack);
20
+ }
21
+ export function popFromForwardStack() {
22
+ const stack = getForwardStack();
23
+ const triggerId = stack.pop();
24
+ setForwardStack(stack);
25
+ return triggerId;
26
+ }
27
+ //# sourceMappingURL=navigationStack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["FORWARD_STACK_KEY","getForwardStack","raw","sessionStorage","getItem","JSON","parse","setForwardStack","stack","setItem","stringify","clearForwardStack","removeItem","pushToForwardStack","triggerId","push","popFromForwardStack","pop"],"sources":["../../../src/utils/navigationStack.ts"],"sourcesContent":["const FORWARD_STACK_KEY = 'web5_conversation_forward_stack';\n\nexport function getForwardStack(): string[] {\n try {\n const raw = sessionStorage.getItem(FORWARD_STACK_KEY);\n return raw ? JSON.parse(raw) : [];\n } catch {\n return [];\n }\n}\n\nexport function setForwardStack(stack: string[]) {\n sessionStorage.setItem(FORWARD_STACK_KEY, JSON.stringify(stack));\n}\n\nexport function clearForwardStack() {\n sessionStorage.removeItem(FORWARD_STACK_KEY);\n}\n\nexport function pushToForwardStack(triggerId: string) {\n const stack = getForwardStack();\n stack.push(triggerId);\n setForwardStack(stack);\n}\n\nexport function popFromForwardStack(): string | undefined {\n const stack = getForwardStack();\n const triggerId = stack.pop();\n setForwardStack(stack);\n return triggerId;\n}\n"],"mappings":"AAAA,MAAMA,iBAAiB,GAAG,iCAAiC;AAE3D,OAAO,SAASC,eAAeA,CAAA,EAAa;EAC1C,IAAI;IACF,MAAMC,GAAG,GAAGC,cAAc,CAACC,OAAO,CAACJ,iBAAiB,CAAC;IACrD,OAAOE,GAAG,GAAGG,IAAI,CAACC,KAAK,CAACJ,GAAG,CAAC,GAAG,EAAE;EACnC,CAAC,CAAC,MAAM;IACN,OAAO,EAAE;EACX;AACF;AAEA,OAAO,SAASK,eAAeA,CAACC,KAAe,EAAE;EAC/CL,cAAc,CAACM,OAAO,CAACT,iBAAiB,EAAEK,IAAI,CAACK,SAAS,CAACF,KAAK,CAAC,CAAC;AAClE;AAEA,OAAO,SAASG,iBAAiBA,CAAA,EAAG;EAClCR,cAAc,CAACS,UAAU,CAACZ,iBAAiB,CAAC;AAC9C;AAEA,OAAO,SAASa,kBAAkBA,CAACC,SAAiB,EAAE;EACpD,MAAMN,KAAK,GAAGP,eAAe,CAAC,CAAC;EAC/BO,KAAK,CAACO,IAAI,CAACD,SAAS,CAAC;EACrBP,eAAe,CAACC,KAAK,CAAC;AACxB;AAEA,OAAO,SAASQ,mBAAmBA,CAAA,EAAuB;EACxD,MAAMR,KAAK,GAAGP,eAAe,CAAC,CAAC;EAC/B,MAAMa,SAAS,GAAGN,KAAK,CAACS,GAAG,CAAC,CAAC;EAC7BV,eAAe,CAACC,KAAK,CAAC;EACtB,OAAOM,SAAS;AAClB","ignoreList":[]}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Check if an HTML node is a comment
3
+ */
4
+ export function isHtmlComment(node) {
5
+ if (node.type !== 'html') {
6
+ return false;
7
+ }
8
+ const value = node.value;
9
+ return value.trim().startsWith('<!--') && value.trim().endsWith('-->');
10
+ }
11
+
12
+ /**
13
+ * Check if a node has images nested within it (for paragraphs with images)
14
+ */
15
+ export function hasImage(node) {
16
+ if (node.type === 'image') {
17
+ return true;
18
+ }
19
+ const checkChildren = children => {
20
+ if (!children) {
21
+ return false;
22
+ }
23
+ for (const child of children) {
24
+ if (child.type === 'image') {
25
+ return true;
26
+ }
27
+ if (child.children && checkChildren(child.children)) {
28
+ return true;
29
+ }
30
+ }
31
+ return false;
32
+ };
33
+ if ('children' in node && node.children) {
34
+ return checkChildren(node.children);
35
+ }
36
+ return false;
37
+ }
38
+ //# sourceMappingURL=nodeMatchers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["isHtmlComment","node","type","value","trim","startsWith","endsWith","hasImage","checkChildren","children","child"],"sources":["../../../src/utils/nodeMatchers.ts"],"sourcesContent":["import type { RootContent } from 'mdast';\n\n/**\n * Check if an HTML node is a comment\n */\nexport function isHtmlComment(node: any): boolean {\n if (node.type !== 'html') {\n return false;\n }\n const value = node.value as string;\n return value.trim().startsWith('<!--') && value.trim().endsWith('-->');\n}\n\n/**\n * Check if a node has images nested within it (for paragraphs with images)\n */\nexport function hasImage(node: RootContent): boolean {\n if (node.type === 'image') {\n return true;\n }\n\n const checkChildren = (children: any[]): boolean => {\n if (!children) {\n return false;\n }\n for (const child of children) {\n if (child.type === 'image') {\n return true;\n }\n if (child.children && checkChildren(child.children)) {\n return true;\n }\n }\n return false;\n };\n\n if ('children' in node && node.children) {\n return checkChildren(node.children);\n }\n\n return false;\n}\n"],"mappings":"AAEA;AACA;AACA;AACA,OAAO,SAASA,aAAaA,CAACC,IAAS,EAAW;EAChD,IAAIA,IAAI,CAACC,IAAI,KAAK,MAAM,EAAE;IACxB,OAAO,KAAK;EACd;EACA,MAAMC,KAAK,GAAGF,IAAI,CAACE,KAAe;EAClC,OAAOA,KAAK,CAACC,IAAI,CAAC,CAAC,CAACC,UAAU,CAAC,MAAM,CAAC,IAAIF,KAAK,CAACC,IAAI,CAAC,CAAC,CAACE,QAAQ,CAAC,KAAK,CAAC;AACxE;;AAEA;AACA;AACA;AACA,OAAO,SAASC,QAAQA,CAACN,IAAiB,EAAW;EACnD,IAAIA,IAAI,CAACC,IAAI,KAAK,OAAO,EAAE;IACzB,OAAO,IAAI;EACb;EAEA,MAAMM,aAAa,GAAIC,QAAe,IAAc;IAClD,IAAI,CAACA,QAAQ,EAAE;MACb,OAAO,KAAK;IACd;IACA,KAAK,MAAMC,KAAK,IAAID,QAAQ,EAAE;MAC5B,IAAIC,KAAK,CAACR,IAAI,KAAK,OAAO,EAAE;QAC1B,OAAO,IAAI;MACb;MACA,IAAIQ,KAAK,CAACD,QAAQ,IAAID,aAAa,CAACE,KAAK,CAACD,QAAQ,CAAC,EAAE;QACnD,OAAO,IAAI;MACb;IACF;IACA,OAAO,KAAK;EACd,CAAC;EAED,IAAI,UAAU,IAAIR,IAAI,IAAIA,IAAI,CAACQ,QAAQ,EAAE;IACvC,OAAOD,aAAa,CAACP,IAAI,CAACQ,QAAQ,CAAC;EACrC;EAEA,OAAO,KAAK;AACd","ignoreList":[]}
@@ -0,0 +1,58 @@
1
+ export const findImageInNode = node => {
2
+ if (node.type === 'image') {
3
+ return node.url || '';
4
+ }
5
+ if ('children' in node && node.children) {
6
+ for (const child of node.children) {
7
+ const imageUrl = findImageInNode(child);
8
+ if (imageUrl) {
9
+ return imageUrl;
10
+ }
11
+ }
12
+ }
13
+ return null;
14
+ };
15
+ export const findImageInChildren = children => {
16
+ for (const child of children) {
17
+ if (child.type === 'image') {
18
+ return child.url || '';
19
+ }
20
+ if ('children' in child && child.children) {
21
+ const imageUrl = findImageInChildren(child.children);
22
+ if (imageUrl) {
23
+ return imageUrl;
24
+ }
25
+ }
26
+ }
27
+ return '';
28
+ };
29
+ export function generateSectionId(componentName, index) {
30
+ return `markdown-section-${componentName.toLowerCase()}-${index}`;
31
+ }
32
+ export function createPageSection(_ref) {
33
+ let {
34
+ component,
35
+ sectionType,
36
+ componentName,
37
+ semantic,
38
+ componentOptions,
39
+ index,
40
+ id,
41
+ sourceMarkdown,
42
+ debugProps
43
+ } = _ref;
44
+ return {
45
+ id: id ?? generateSectionId(sectionType, index),
46
+ sectionType,
47
+ componentName,
48
+ semantic,
49
+ componentOptions,
50
+ component,
51
+ sourceMarkdown: sourceMarkdown ?? '',
52
+ debugProps
53
+ };
54
+ }
55
+ export function generateId() {
56
+ return `${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
57
+ }
58
+ //# sourceMappingURL=propsExtractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["findImageInNode","node","type","url","children","child","imageUrl","findImageInChildren","generateSectionId","componentName","index","toLowerCase","createPageSection","_ref","component","sectionType","semantic","componentOptions","id","sourceMarkdown","debugProps","generateId","Date","now","Math","random","toString","substr"],"sources":["../../../src/utils/propsExtractor.ts"],"sourcesContent":["import type { RootContent } from 'mdast';\nimport type { PageSection } from '../types/page-section';\nimport { ReactElement } from 'react';\n\nexport interface Product {\n id: string;\n imageUrl: string;\n productName: string;\n description?: string;\n price?: string;\n onClick?: string;\n linkText?: string;\n linkUrl?: string;\n colorSwatches?: string[];\n badgeText?: string;\n rating?: number;\n reviewCount?: number;\n}\n\nexport interface ComparisonProduct {\n id: string;\n imageUrl: string;\n name: string;\n price: string;\n onClick?: string;\n features: Record<string, string>;\n}\n\nexport interface ProductComparisonSectionProps {\n title: string;\n subtitle?: string;\n products: ComparisonProduct[];\n backgroundColor?: string;\n highlightDifferences?: boolean;\n showImages?: boolean;\n onProductClick?: string;\n ready: boolean;\n}\n\nexport const findImageInNode = (node: RootContent): string | null => {\n if (node.type === 'image') {\n return node.url || '';\n }\n if ('children' in node && node.children) {\n for (const child of node.children) {\n const imageUrl = findImageInNode(child);\n if (imageUrl) {\n return imageUrl;\n }\n }\n }\n return null;\n};\n\nexport const findImageInChildren = (children: RootContent[]): string => {\n for (const child of children) {\n if (child.type === 'image') {\n return child.url || '';\n }\n if ('children' in child && child.children) {\n const imageUrl = findImageInChildren(child.children);\n if (imageUrl) {\n return imageUrl;\n }\n }\n }\n return '';\n};\n\nexport function generateSectionId(\n componentName: string,\n index: number,\n): string {\n return `markdown-section-${componentName.toLowerCase()}-${index}`;\n}\n\nexport function createPageSection({\n component,\n sectionType,\n componentName,\n semantic,\n componentOptions,\n index,\n id,\n sourceMarkdown,\n debugProps,\n}: {\n component: ReactElement | null;\n sectionType: string;\n componentName?: string;\n semantic?: string;\n componentOptions?: Record<string, any>;\n index: number;\n id?: string;\n sourceMarkdown?: string;\n debugProps?: any;\n}): PageSection {\n return {\n id: id ?? generateSectionId(sectionType, index),\n sectionType,\n componentName,\n semantic,\n componentOptions,\n component,\n sourceMarkdown: sourceMarkdown ?? '',\n debugProps,\n };\n}\n\nexport function generateId(): string {\n return `${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;\n}\n"],"mappings":"AAuCA,OAAO,MAAMA,eAAe,GAAIC,IAAiB,IAAoB;EACnE,IAAIA,IAAI,CAACC,IAAI,KAAK,OAAO,EAAE;IACzB,OAAOD,IAAI,CAACE,GAAG,IAAI,EAAE;EACvB;EACA,IAAI,UAAU,IAAIF,IAAI,IAAIA,IAAI,CAACG,QAAQ,EAAE;IACvC,KAAK,MAAMC,KAAK,IAAIJ,IAAI,CAACG,QAAQ,EAAE;MACjC,MAAME,QAAQ,GAAGN,eAAe,CAACK,KAAK,CAAC;MACvC,IAAIC,QAAQ,EAAE;QACZ,OAAOA,QAAQ;MACjB;IACF;EACF;EACA,OAAO,IAAI;AACb,CAAC;AAED,OAAO,MAAMC,mBAAmB,GAAIH,QAAuB,IAAa;EACtE,KAAK,MAAMC,KAAK,IAAID,QAAQ,EAAE;IAC5B,IAAIC,KAAK,CAACH,IAAI,KAAK,OAAO,EAAE;MAC1B,OAAOG,KAAK,CAACF,GAAG,IAAI,EAAE;IACxB;IACA,IAAI,UAAU,IAAIE,KAAK,IAAIA,KAAK,CAACD,QAAQ,EAAE;MACzC,MAAME,QAAQ,GAAGC,mBAAmB,CAACF,KAAK,CAACD,QAAQ,CAAC;MACpD,IAAIE,QAAQ,EAAE;QACZ,OAAOA,QAAQ;MACjB;IACF;EACF;EACA,OAAO,EAAE;AACX,CAAC;AAED,OAAO,SAASE,iBAAiBA,CAC/BC,aAAqB,EACrBC,KAAa,EACL;EACR,OAAO,oBAAoBD,aAAa,CAACE,WAAW,CAAC,CAAC,IAAID,KAAK,EAAE;AACnE;AAEA,OAAO,SAASE,iBAAiBA,CAAAC,IAAA,EAoBjB;EAAA,IApBkB;IAChCC,SAAS;IACTC,WAAW;IACXN,aAAa;IACbO,QAAQ;IACRC,gBAAgB;IAChBP,KAAK;IACLQ,EAAE;IACFC,cAAc;IACdC;EAWF,CAAC,GAAAP,IAAA;EACC,OAAO;IACLK,EAAE,EAAEA,EAAE,IAAIV,iBAAiB,CAACO,WAAW,EAAEL,KAAK,CAAC;IAC/CK,WAAW;IACXN,aAAa;IACbO,QAAQ;IACRC,gBAAgB;IAChBH,SAAS;IACTK,cAAc,EAAEA,cAAc,IAAI,EAAE;IACpCC;EACF,CAAC;AACH;AAEA,OAAO,SAASC,UAAUA,CAAA,EAAW;EACnC,OAAO,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,IAAIC,IAAI,CAACC,MAAM,CAAC,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC,CAACC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AACnE","ignoreList":[]}
@@ -0,0 +1,151 @@
1
+ /**
2
+ * Session identity shared across every surface that calls `/conversation`.
3
+ *
4
+ * Lives in web5-core (lifted from web50-server-ui, same move as
5
+ * `conversationBackend.ts`) so the main app and the embed-placement bundle
6
+ * send the same `sessionId` structure — a GUID persisted in sessionStorage
7
+ * under one key/codec. Surfaces on the same origin literally share the id;
8
+ * on different origins they still agree on the wire shape.
9
+ */
10
+
11
+ const SESSION_ID_KEY = 'sessionId';
12
+
13
+ /**
14
+ * Generates a random GUID
15
+ */
16
+ const generateGuid = () => {
17
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {
18
+ const r = Math.random() * 16 | 0;
19
+ const v = c === 'x' ? r : r & 0x3 | 0x8;
20
+ return v.toString(16);
21
+ });
22
+ };
23
+ const readStoredSessionId = () => {
24
+ try {
25
+ const raw = sessionStorage.getItem(SESSION_ID_KEY);
26
+ return raw ? JSON.parse(raw) : null;
27
+ } catch {
28
+ // sessionStorage can throw in privacy mode / non-DOM environments.
29
+ return null;
30
+ }
31
+ };
32
+
33
+ /**
34
+ * Gets or creates a session ID from sessionStorage.
35
+ * If no session ID exists, creates a new one and stores it.
36
+ * If it exists, returns the existing one without overriding.
37
+ * Falls back to an ephemeral GUID when sessionStorage is unavailable
38
+ * (SSR, storage disabled).
39
+ */
40
+ export const getOrCreateSessionId = () => {
41
+ const existing = readStoredSessionId();
42
+ if (existing) {
43
+ return existing;
44
+ }
45
+ const id = generateGuid();
46
+ try {
47
+ sessionStorage.setItem(SESSION_ID_KEY, JSON.stringify(id));
48
+ } catch {
49
+ // Quota exceeded / storage disabled — ephemeral id still works
50
+ }
51
+ return id;
52
+ };
53
+
54
+ /**
55
+ * Gets the current session ID without creating a new one
56
+ */
57
+ export const getSessionId = () => {
58
+ return readStoredSessionId();
59
+ };
60
+ const CHAT_ID_KEY = 'chatId';
61
+ let chatId = null;
62
+ const readStoredChatId = () => {
63
+ try {
64
+ const raw = sessionStorage.getItem(CHAT_ID_KEY);
65
+ return raw ? JSON.parse(raw) : null;
66
+ } catch {
67
+ // sessionStorage can throw in privacy mode / non-DOM environments.
68
+ return null;
69
+ }
70
+ };
71
+ const persistChatId = id => {
72
+ try {
73
+ sessionStorage.setItem(CHAT_ID_KEY, JSON.stringify(id));
74
+ } catch {
75
+ // Quota exceeded / storage disabled — ephemeral id still works.
76
+ }
77
+ };
78
+
79
+ /**
80
+ * Mints a `chat-id-<epoch>-<random>` id. The random suffix prevents two
81
+ * pages (or two visitors on the same site) that start a conversation in
82
+ * the same millisecond from colliding on the same conversation id — the
83
+ * backend locks per conversation and rejects the loser with
84
+ * "Conversation is busy".
85
+ */
86
+ const mintChatId = () => `chat-id-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
87
+
88
+ /**
89
+ * Session-stable chat id (`chat-id-<epoch>-<random>`), persisted in
90
+ * sessionStorage under the same key/codec convention as the session id.
91
+ *
92
+ * Persisted (changed from the original in-memory-only page-visit scope) so
93
+ * the chat CARRIES OVER across same-origin navigations — main web5 page →
94
+ * product page and between PDPs. On the markdown-history backend the chat id
95
+ * is the conversation id, so this threads all of a visit's turns into one
96
+ * conversation (history/BO grouping) and keeps the BE's history cache
97
+ * (`msid_chatId`) warm across pages — classify's `<last_turn>` sees the
98
+ * previous page's turn. Placement prompt isolation is NOT affected: the BE's
99
+ * running-context key prefers the per-placement `session_id` that
100
+ * embed-placement sends, falling back to this chat id only for surfaces
101
+ * that don't send one (the main app).
102
+ *
103
+ * In-memory memo remains the fast path and the fallback when storage is
104
+ * unavailable (SSR, privacy mode) — there the id is page-load-stable, the
105
+ * previous behavior.
106
+ */
107
+ export const getChatId = () => {
108
+ if (chatId !== null) return chatId;
109
+ const stored = readStoredChatId();
110
+ if (stored) {
111
+ chatId = stored;
112
+ return chatId;
113
+ }
114
+ chatId = mintChatId();
115
+ persistChatId(chatId);
116
+ return chatId;
117
+ };
118
+
119
+ /**
120
+ * Mint a fresh chat id, replacing the memoized AND persisted one. Call when
121
+ * the user starts a NEW conversation (main app's first send of a fresh
122
+ * thread) — the previous conversation's id must not leak into the new one,
123
+ * or into the placement calls of the pages visited next.
124
+ */
125
+ export const startNewChatId = () => {
126
+ chatId = mintChatId();
127
+ persistChatId(chatId);
128
+ return chatId;
129
+ };
130
+
131
+ /**
132
+ * Adopt an externally resolved chat id — e.g. a conversation restored from
133
+ * history by trigger id — as the session's current chat. Memoized and
134
+ * persisted so the next pages' placement calls continue that conversation.
135
+ */
136
+ export const setChatId = id => {
137
+ if (!id) return;
138
+ chatId = id;
139
+ persistChatId(id);
140
+ };
141
+
142
+ /** Test-only: reset the memoized chat id and its persisted copy. */
143
+ export const resetChatIdForTests = () => {
144
+ chatId = null;
145
+ try {
146
+ sessionStorage.removeItem(CHAT_ID_KEY);
147
+ } catch {
148
+ // Storage unavailable — nothing persisted to clear.
149
+ }
150
+ };
151
+ //# sourceMappingURL=sessionManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["SESSION_ID_KEY","generateGuid","replace","c","r","Math","random","v","toString","readStoredSessionId","raw","sessionStorage","getItem","JSON","parse","getOrCreateSessionId","existing","id","setItem","stringify","getSessionId","CHAT_ID_KEY","chatId","readStoredChatId","persistChatId","mintChatId","Date","now","slice","getChatId","stored","startNewChatId","setChatId","resetChatIdForTests","removeItem"],"sources":["../../../src/utils/sessionManager.ts"],"sourcesContent":["/**\n * Session identity shared across every surface that calls `/conversation`.\n *\n * Lives in web5-core (lifted from web50-server-ui, same move as\n * `conversationBackend.ts`) so the main app and the embed-placement bundle\n * send the same `sessionId` structure — a GUID persisted in sessionStorage\n * under one key/codec. Surfaces on the same origin literally share the id;\n * on different origins they still agree on the wire shape.\n */\n\nconst SESSION_ID_KEY = 'sessionId';\n\n/**\n * Generates a random GUID\n */\nconst generateGuid = (): string => {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n};\n\nconst readStoredSessionId = (): string | null => {\n try {\n const raw = sessionStorage.getItem(SESSION_ID_KEY);\n return raw ? (JSON.parse(raw) as string) : null;\n } catch {\n // sessionStorage can throw in privacy mode / non-DOM environments.\n return null;\n }\n};\n\n/**\n * Gets or creates a session ID from sessionStorage.\n * If no session ID exists, creates a new one and stores it.\n * If it exists, returns the existing one without overriding.\n * Falls back to an ephemeral GUID when sessionStorage is unavailable\n * (SSR, storage disabled).\n */\nexport const getOrCreateSessionId = (): string => {\n const existing = readStoredSessionId();\n if (existing) {\n return existing;\n }\n const id = generateGuid();\n try {\n sessionStorage.setItem(SESSION_ID_KEY, JSON.stringify(id));\n } catch {\n // Quota exceeded / storage disabled — ephemeral id still works\n }\n return id;\n};\n\n/**\n * Gets the current session ID without creating a new one\n */\nexport const getSessionId = (): string | null => {\n return readStoredSessionId();\n};\n\nconst CHAT_ID_KEY = 'chatId';\n\nlet chatId: string | null = null;\n\nconst readStoredChatId = (): string | null => {\n try {\n const raw = sessionStorage.getItem(CHAT_ID_KEY);\n return raw ? (JSON.parse(raw) as string) : null;\n } catch {\n // sessionStorage can throw in privacy mode / non-DOM environments.\n return null;\n }\n};\n\nconst persistChatId = (id: string): void => {\n try {\n sessionStorage.setItem(CHAT_ID_KEY, JSON.stringify(id));\n } catch {\n // Quota exceeded / storage disabled — ephemeral id still works.\n }\n};\n\n/**\n * Mints a `chat-id-<epoch>-<random>` id. The random suffix prevents two\n * pages (or two visitors on the same site) that start a conversation in\n * the same millisecond from colliding on the same conversation id — the\n * backend locks per conversation and rejects the loser with\n * \"Conversation is busy\".\n */\nconst mintChatId = (): string =>\n `chat-id-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;\n\n/**\n * Session-stable chat id (`chat-id-<epoch>-<random>`), persisted in\n * sessionStorage under the same key/codec convention as the session id.\n *\n * Persisted (changed from the original in-memory-only page-visit scope) so\n * the chat CARRIES OVER across same-origin navigations — main web5 page →\n * product page and between PDPs. On the markdown-history backend the chat id\n * is the conversation id, so this threads all of a visit's turns into one\n * conversation (history/BO grouping) and keeps the BE's history cache\n * (`msid_chatId`) warm across pages — classify's `<last_turn>` sees the\n * previous page's turn. Placement prompt isolation is NOT affected: the BE's\n * running-context key prefers the per-placement `session_id` that\n * embed-placement sends, falling back to this chat id only for surfaces\n * that don't send one (the main app).\n *\n * In-memory memo remains the fast path and the fallback when storage is\n * unavailable (SSR, privacy mode) — there the id is page-load-stable, the\n * previous behavior.\n */\nexport const getChatId = (): string => {\n if (chatId !== null) return chatId;\n const stored = readStoredChatId();\n if (stored) {\n chatId = stored;\n return chatId;\n }\n chatId = mintChatId();\n persistChatId(chatId);\n return chatId;\n};\n\n/**\n * Mint a fresh chat id, replacing the memoized AND persisted one. Call when\n * the user starts a NEW conversation (main app's first send of a fresh\n * thread) — the previous conversation's id must not leak into the new one,\n * or into the placement calls of the pages visited next.\n */\nexport const startNewChatId = (): string => {\n chatId = mintChatId();\n persistChatId(chatId);\n return chatId;\n};\n\n/**\n * Adopt an externally resolved chat id — e.g. a conversation restored from\n * history by trigger id — as the session's current chat. Memoized and\n * persisted so the next pages' placement calls continue that conversation.\n */\nexport const setChatId = (id: string): void => {\n if (!id) return;\n chatId = id;\n persistChatId(id);\n};\n\n/** Test-only: reset the memoized chat id and its persisted copy. */\nexport const resetChatIdForTests = (): void => {\n chatId = null;\n try {\n sessionStorage.removeItem(CHAT_ID_KEY);\n } catch {\n // Storage unavailable — nothing persisted to clear.\n }\n};\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,36 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ import { unified } from 'unified';
3
+ import remarkParse from 'remark-parse';
4
+ import remarkGfm from 'remark-gfm';
5
+ import { toMarkdown } from 'mdast-util-to-markdown';
6
+ import { gfmToMarkdown } from 'mdast-util-gfm';
7
+ export class UnifiedMarkdownParser {
8
+ constructor() {
9
+ _defineProperty(this, "processor", void 0);
10
+ this.processor = unified().use(remarkParse).use(remarkGfm);
11
+ }
12
+ parse(markdown) {
13
+ try {
14
+ return this.processor.parse(markdown);
15
+ } catch (error) {
16
+ console.error('Unified parse error:', error);
17
+ return {
18
+ type: 'root',
19
+ children: []
20
+ };
21
+ }
22
+ }
23
+ }
24
+ export function parseMarkdownToAst(markdown) {
25
+ const parser = new UnifiedMarkdownParser();
26
+ return parser.parse(markdown);
27
+ }
28
+ export const parseAstToMarkdown = nodes => {
29
+ return toMarkdown({
30
+ type: 'root',
31
+ children: nodes
32
+ }, {
33
+ extensions: [gfmToMarkdown()]
34
+ });
35
+ };
36
+ //# sourceMappingURL=unifiedMarkdownParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["unified","remarkParse","remarkGfm","toMarkdown","gfmToMarkdown","UnifiedMarkdownParser","constructor","_defineProperty","processor","use","parse","markdown","error","console","type","children","parseMarkdownToAst","parser","parseAstToMarkdown","nodes","extensions"],"sources":["../../../src/utils/unifiedMarkdownParser.ts"],"sourcesContent":["import { unified } from 'unified';\nimport remarkParse from 'remark-parse';\nimport type { Root, Node, RootContent } from 'mdast';\nimport remarkGfm from 'remark-gfm';\nimport { toMarkdown } from 'mdast-util-to-markdown';\nimport { gfmToMarkdown } from 'mdast-util-gfm';\n\nexport class UnifiedMarkdownParser {\n private processor;\n\n constructor() {\n this.processor = unified().use(remarkParse).use(remarkGfm);\n }\n\n parse(markdown: string): Root {\n try {\n return this.processor.parse(markdown) as Root;\n } catch (error) {\n console.error('Unified parse error:', error);\n return { type: 'root', children: [] };\n }\n }\n}\n\nexport function parseMarkdownToAst(markdown: string): Root {\n const parser = new UnifiedMarkdownParser();\n return parser.parse(markdown);\n}\n\nexport const parseAstToMarkdown = (nodes: Node[]): string => {\n return toMarkdown(\n { type: 'root', children: nodes as RootContent[] },\n {\n extensions: [gfmToMarkdown()],\n },\n );\n};\n"],"mappings":";AAAA,SAASA,OAAO,QAAQ,SAAS;AACjC,OAAOC,WAAW,MAAM,cAAc;AAEtC,OAAOC,SAAS,MAAM,YAAY;AAClC,SAASC,UAAU,QAAQ,wBAAwB;AACnD,SAASC,aAAa,QAAQ,gBAAgB;AAE9C,OAAO,MAAMC,qBAAqB,CAAC;EAGjCC,WAAWA,CAAA,EAAG;IAAAC,eAAA;IACZ,IAAI,CAACC,SAAS,GAAGR,OAAO,CAAC,CAAC,CAACS,GAAG,CAACR,WAAW,CAAC,CAACQ,GAAG,CAACP,SAAS,CAAC;EAC5D;EAEAQ,KAAKA,CAACC,QAAgB,EAAQ;IAC5B,IAAI;MACF,OAAO,IAAI,CAACH,SAAS,CAACE,KAAK,CAACC,QAAQ,CAAC;IACvC,CAAC,CAAC,OAAOC,KAAK,EAAE;MACdC,OAAO,CAACD,KAAK,CAAC,sBAAsB,EAAEA,KAAK,CAAC;MAC5C,OAAO;QAAEE,IAAI,EAAE,MAAM;QAAEC,QAAQ,EAAE;MAAG,CAAC;IACvC;EACF;AACF;AAEA,OAAO,SAASC,kBAAkBA,CAACL,QAAgB,EAAQ;EACzD,MAAMM,MAAM,GAAG,IAAIZ,qBAAqB,CAAC,CAAC;EAC1C,OAAOY,MAAM,CAACP,KAAK,CAACC,QAAQ,CAAC;AAC/B;AAEA,OAAO,MAAMO,kBAAkB,GAAIC,KAAa,IAAa;EAC3D,OAAOhB,UAAU,CACf;IAAEW,IAAI,EAAE,MAAM;IAAEC,QAAQ,EAAEI;EAAuB,CAAC,EAClD;IACEC,UAAU,EAAE,CAAChB,aAAa,CAAC,CAAC;EAC9B,CACF,CAAC;AACH,CAAC","ignoreList":[]}