netra-artifacts 0.1.0-alpha.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 (479) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/LICENSE +21 -0
  3. package/README.md +239 -0
  4. package/dist/artifacts/artifactEnvelope.d.ts +46 -0
  5. package/dist/artifacts/artifactEnvelope.d.ts.map +1 -0
  6. package/dist/artifacts/artifactEnvelope.js +217 -0
  7. package/dist/artifacts/artifactEnvelope.js.map +1 -0
  8. package/dist/artifacts/artifactStatus.d.ts +9 -0
  9. package/dist/artifacts/artifactStatus.d.ts.map +1 -0
  10. package/dist/artifacts/artifactStatus.js +10 -0
  11. package/dist/artifacts/artifactStatus.js.map +1 -0
  12. package/dist/artifacts/artifactStore.d.ts +15 -0
  13. package/dist/artifacts/artifactStore.d.ts.map +1 -0
  14. package/dist/artifacts/artifactStore.js +35 -0
  15. package/dist/artifacts/artifactStore.js.map +1 -0
  16. package/dist/artifacts/htmlArtifact.d.ts +10 -0
  17. package/dist/artifacts/htmlArtifact.d.ts.map +1 -0
  18. package/dist/artifacts/htmlArtifact.js +20 -0
  19. package/dist/artifacts/htmlArtifact.js.map +1 -0
  20. package/dist/artifacts/index.d.ts +5 -0
  21. package/dist/artifacts/index.d.ts.map +1 -0
  22. package/dist/artifacts/index.js +5 -0
  23. package/dist/artifacts/index.js.map +1 -0
  24. package/dist/circuit-breaker/circuitBreaker.d.ts +35 -0
  25. package/dist/circuit-breaker/circuitBreaker.d.ts.map +1 -0
  26. package/dist/circuit-breaker/circuitBreaker.js +59 -0
  27. package/dist/circuit-breaker/circuitBreaker.js.map +1 -0
  28. package/dist/circuit-breaker/index.d.ts +3 -0
  29. package/dist/circuit-breaker/index.d.ts.map +1 -0
  30. package/dist/circuit-breaker/index.js +3 -0
  31. package/dist/circuit-breaker/index.js.map +1 -0
  32. package/dist/circuit-breaker/memoryCircuitStore.d.ts +24 -0
  33. package/dist/circuit-breaker/memoryCircuitStore.d.ts.map +1 -0
  34. package/dist/circuit-breaker/memoryCircuitStore.js +12 -0
  35. package/dist/circuit-breaker/memoryCircuitStore.js.map +1 -0
  36. package/dist/classifier/classifierPrompt.d.ts +7 -0
  37. package/dist/classifier/classifierPrompt.d.ts.map +1 -0
  38. package/dist/classifier/classifierPrompt.js +43 -0
  39. package/dist/classifier/classifierPrompt.js.map +1 -0
  40. package/dist/classifier/classifyMode.d.ts +21 -0
  41. package/dist/classifier/classifyMode.d.ts.map +1 -0
  42. package/dist/classifier/classifyMode.js +50 -0
  43. package/dist/classifier/classifyMode.js.map +1 -0
  44. package/dist/classifier/index.d.ts +4 -0
  45. package/dist/classifier/index.d.ts.map +1 -0
  46. package/dist/classifier/index.js +4 -0
  47. package/dist/classifier/index.js.map +1 -0
  48. package/dist/classifier/rules.d.ts +13 -0
  49. package/dist/classifier/rules.d.ts.map +1 -0
  50. package/dist/classifier/rules.js +118 -0
  51. package/dist/classifier/rules.js.map +1 -0
  52. package/dist/client/ArtifactChat.d.ts +15 -0
  53. package/dist/client/ArtifactChat.d.ts.map +1 -0
  54. package/dist/client/ArtifactChat.js +62 -0
  55. package/dist/client/ArtifactChat.js.map +1 -0
  56. package/dist/client/ArtifactMessage.d.ts +24 -0
  57. package/dist/client/ArtifactMessage.d.ts.map +1 -0
  58. package/dist/client/ArtifactMessage.js +29 -0
  59. package/dist/client/ArtifactMessage.js.map +1 -0
  60. package/dist/client/MarkdownMessage.d.ts +12 -0
  61. package/dist/client/MarkdownMessage.d.ts.map +1 -0
  62. package/dist/client/MarkdownMessage.js +141 -0
  63. package/dist/client/MarkdownMessage.js.map +1 -0
  64. package/dist/client/index.d.ts +8 -0
  65. package/dist/client/index.d.ts.map +1 -0
  66. package/dist/client/index.js +8 -0
  67. package/dist/client/index.js.map +1 -0
  68. package/dist/client/useArtifactStream.d.ts +9 -0
  69. package/dist/client/useArtifactStream.d.ts.map +1 -0
  70. package/dist/client/useArtifactStream.js +210 -0
  71. package/dist/client/useArtifactStream.js.map +1 -0
  72. package/dist/client.d.ts +2 -0
  73. package/dist/client.d.ts.map +1 -0
  74. package/dist/client.js +4 -0
  75. package/dist/client.js.map +1 -0
  76. package/dist/constants/defaults.d.ts +17 -0
  77. package/dist/constants/defaults.d.ts.map +1 -0
  78. package/dist/constants/defaults.js +38 -0
  79. package/dist/constants/defaults.js.map +1 -0
  80. package/dist/constants/events.d.ts +16 -0
  81. package/dist/constants/events.d.ts.map +1 -0
  82. package/dist/constants/events.js +16 -0
  83. package/dist/constants/events.js.map +1 -0
  84. package/dist/constants/index.d.ts +4 -0
  85. package/dist/constants/index.d.ts.map +1 -0
  86. package/dist/constants/index.js +4 -0
  87. package/dist/constants/index.js.map +1 -0
  88. package/dist/constants/sandbox.d.ts +19 -0
  89. package/dist/constants/sandbox.d.ts.map +1 -0
  90. package/dist/constants/sandbox.js +24 -0
  91. package/dist/constants/sandbox.js.map +1 -0
  92. package/dist/core/createArtifactResponse.d.ts +5 -0
  93. package/dist/core/createArtifactResponse.d.ts.map +1 -0
  94. package/dist/core/createArtifactResponse.js +16 -0
  95. package/dist/core/createArtifactResponse.js.map +1 -0
  96. package/dist/core/createArtifactStream.d.ts +9 -0
  97. package/dist/core/createArtifactStream.d.ts.map +1 -0
  98. package/dist/core/createArtifactStream.js +34 -0
  99. package/dist/core/createArtifactStream.js.map +1 -0
  100. package/dist/core/createIds.d.ts +3 -0
  101. package/dist/core/createIds.d.ts.map +1 -0
  102. package/dist/core/createIds.js +13 -0
  103. package/dist/core/createIds.js.map +1 -0
  104. package/dist/core/index.d.ts +6 -0
  105. package/dist/core/index.d.ts.map +1 -0
  106. package/dist/core/index.js +6 -0
  107. package/dist/core/index.js.map +1 -0
  108. package/dist/core/lifecycle.d.ts +35 -0
  109. package/dist/core/lifecycle.d.ts.map +1 -0
  110. package/dist/core/lifecycle.js +81 -0
  111. package/dist/core/lifecycle.js.map +1 -0
  112. package/dist/core/parseArtifactEnvelope.d.ts +2 -0
  113. package/dist/core/parseArtifactEnvelope.d.ts.map +1 -0
  114. package/dist/core/parseArtifactEnvelope.js +3 -0
  115. package/dist/core/parseArtifactEnvelope.js.map +1 -0
  116. package/dist/errors/ArtifactParseError.d.ts +10 -0
  117. package/dist/errors/ArtifactParseError.d.ts.map +1 -0
  118. package/dist/errors/ArtifactParseError.js +10 -0
  119. package/dist/errors/ArtifactParseError.js.map +1 -0
  120. package/dist/errors/ClassificationError.d.ts +13 -0
  121. package/dist/errors/ClassificationError.d.ts.map +1 -0
  122. package/dist/errors/ClassificationError.js +13 -0
  123. package/dist/errors/ClassificationError.js.map +1 -0
  124. package/dist/errors/StreamError.d.ts +11 -0
  125. package/dist/errors/StreamError.d.ts.map +1 -0
  126. package/dist/errors/StreamError.js +11 -0
  127. package/dist/errors/StreamError.js.map +1 -0
  128. package/dist/errors/index.d.ts +4 -0
  129. package/dist/errors/index.d.ts.map +1 -0
  130. package/dist/errors/index.js +4 -0
  131. package/dist/errors/index.js.map +1 -0
  132. package/dist/iframe/HtmlArtifactCard.d.ts +9 -0
  133. package/dist/iframe/HtmlArtifactCard.d.ts.map +1 -0
  134. package/dist/iframe/HtmlArtifactCard.js +117 -0
  135. package/dist/iframe/HtmlArtifactCard.js.map +1 -0
  136. package/dist/iframe/HtmlArtifactCodeView.d.ts +7 -0
  137. package/dist/iframe/HtmlArtifactCodeView.d.ts.map +1 -0
  138. package/dist/iframe/HtmlArtifactCodeView.js +20 -0
  139. package/dist/iframe/HtmlArtifactCodeView.js.map +1 -0
  140. package/dist/iframe/HtmlArtifactModal.d.ts +16 -0
  141. package/dist/iframe/HtmlArtifactModal.d.ts.map +1 -0
  142. package/dist/iframe/HtmlArtifactModal.js +99 -0
  143. package/dist/iframe/HtmlArtifactModal.js.map +1 -0
  144. package/dist/iframe/HtmlArtifactPreview.d.ts +15 -0
  145. package/dist/iframe/HtmlArtifactPreview.d.ts.map +1 -0
  146. package/dist/iframe/HtmlArtifactPreview.js +214 -0
  147. package/dist/iframe/HtmlArtifactPreview.js.map +1 -0
  148. package/dist/iframe/HtmlArtifactToolbar.d.ts +20 -0
  149. package/dist/iframe/HtmlArtifactToolbar.d.ts.map +1 -0
  150. package/dist/iframe/HtmlArtifactToolbar.js +14 -0
  151. package/dist/iframe/HtmlArtifactToolbar.js.map +1 -0
  152. package/dist/iframe/iframeSizing.d.ts +22 -0
  153. package/dist/iframe/iframeSizing.d.ts.map +1 -0
  154. package/dist/iframe/iframeSizing.js +74 -0
  155. package/dist/iframe/iframeSizing.js.map +1 -0
  156. package/dist/iframe/iframeSrcDoc.d.ts +34 -0
  157. package/dist/iframe/iframeSrcDoc.d.ts.map +1 -0
  158. package/dist/iframe/iframeSrcDoc.js +236 -0
  159. package/dist/iframe/iframeSrcDoc.js.map +1 -0
  160. package/dist/iframe/index.d.ts +15 -0
  161. package/dist/iframe/index.d.ts.map +1 -0
  162. package/dist/iframe/index.js +9 -0
  163. package/dist/iframe/index.js.map +1 -0
  164. package/dist/iframe/styles.d.ts +10 -0
  165. package/dist/iframe/styles.d.ts.map +1 -0
  166. package/dist/iframe/styles.js +181 -0
  167. package/dist/iframe/styles.js.map +1 -0
  168. package/dist/index.d.ts +18 -0
  169. package/dist/index.d.ts.map +1 -0
  170. package/dist/index.js +22 -0
  171. package/dist/index.js.map +1 -0
  172. package/dist/prompts/htmlArtifactPrompt.d.ts +15 -0
  173. package/dist/prompts/htmlArtifactPrompt.d.ts.map +1 -0
  174. package/dist/prompts/htmlArtifactPrompt.js +248 -0
  175. package/dist/prompts/htmlArtifactPrompt.js.map +1 -0
  176. package/dist/prompts/index.d.ts +4 -0
  177. package/dist/prompts/index.d.ts.map +1 -0
  178. package/dist/prompts/index.js +4 -0
  179. package/dist/prompts/index.js.map +1 -0
  180. package/dist/prompts/markdownPrompt.d.ts +3 -0
  181. package/dist/prompts/markdownPrompt.d.ts.map +1 -0
  182. package/dist/prompts/markdownPrompt.js +10 -0
  183. package/dist/prompts/markdownPrompt.js.map +1 -0
  184. package/dist/prompts/systemPrompt.d.ts +3 -0
  185. package/dist/prompts/systemPrompt.d.ts.map +1 -0
  186. package/dist/prompts/systemPrompt.js +3 -0
  187. package/dist/prompts/systemPrompt.js.map +1 -0
  188. package/dist/sanitizer/dangerousPatterns.d.ts +41 -0
  189. package/dist/sanitizer/dangerousPatterns.d.ts.map +1 -0
  190. package/dist/sanitizer/dangerousPatterns.js +41 -0
  191. package/dist/sanitizer/dangerousPatterns.js.map +1 -0
  192. package/dist/sanitizer/index.d.ts +4 -0
  193. package/dist/sanitizer/index.d.ts.map +1 -0
  194. package/dist/sanitizer/index.js +4 -0
  195. package/dist/sanitizer/index.js.map +1 -0
  196. package/dist/sanitizer/sanitizeConfig.d.ts +4 -0
  197. package/dist/sanitizer/sanitizeConfig.d.ts.map +1 -0
  198. package/dist/sanitizer/sanitizeConfig.js +10 -0
  199. package/dist/sanitizer/sanitizeConfig.js.map +1 -0
  200. package/dist/sanitizer/sanitizeHtml.d.ts +20 -0
  201. package/dist/sanitizer/sanitizeHtml.d.ts.map +1 -0
  202. package/dist/sanitizer/sanitizeHtml.js +81 -0
  203. package/dist/sanitizer/sanitizeHtml.js.map +1 -0
  204. package/dist/server/config.d.ts +6 -0
  205. package/dist/server/config.d.ts.map +1 -0
  206. package/dist/server/config.js +68 -0
  207. package/dist/server/config.js.map +1 -0
  208. package/dist/server/createArtifactStreamResponse.d.ts +9 -0
  209. package/dist/server/createArtifactStreamResponse.d.ts.map +1 -0
  210. package/dist/server/createArtifactStreamResponse.js +104 -0
  211. package/dist/server/createArtifactStreamResponse.js.map +1 -0
  212. package/dist/server/createHtmlArtifactStream.d.ts +30 -0
  213. package/dist/server/createHtmlArtifactStream.d.ts.map +1 -0
  214. package/dist/server/createHtmlArtifactStream.js +115 -0
  215. package/dist/server/createHtmlArtifactStream.js.map +1 -0
  216. package/dist/server/createMarkdownStream.d.ts +13 -0
  217. package/dist/server/createMarkdownStream.d.ts.map +1 -0
  218. package/dist/server/createMarkdownStream.js +27 -0
  219. package/dist/server/createMarkdownStream.js.map +1 -0
  220. package/dist/server/createSseResponse.d.ts +7 -0
  221. package/dist/server/createSseResponse.d.ts.map +1 -0
  222. package/dist/server/createSseResponse.js +11 -0
  223. package/dist/server/createSseResponse.js.map +1 -0
  224. package/dist/server/index.d.ts +12 -0
  225. package/dist/server/index.d.ts.map +1 -0
  226. package/dist/server/index.js +12 -0
  227. package/dist/server/index.js.map +1 -0
  228. package/dist/server.d.ts +2 -0
  229. package/dist/server.d.ts.map +1 -0
  230. package/dist/server.js +3 -0
  231. package/dist/server.js.map +1 -0
  232. package/dist/stream/assembleDocument.d.ts +42 -0
  233. package/dist/stream/assembleDocument.d.ts.map +1 -0
  234. package/dist/stream/assembleDocument.js +104 -0
  235. package/dist/stream/assembleDocument.js.map +1 -0
  236. package/dist/stream/buffering.d.ts +37 -0
  237. package/dist/stream/buffering.d.ts.map +1 -0
  238. package/dist/stream/buffering.js +97 -0
  239. package/dist/stream/buffering.js.map +1 -0
  240. package/dist/stream/debounce.d.ts +12 -0
  241. package/dist/stream/debounce.d.ts.map +1 -0
  242. package/dist/stream/debounce.js +36 -0
  243. package/dist/stream/debounce.js.map +1 -0
  244. package/dist/stream/decoder.d.ts +17 -0
  245. package/dist/stream/decoder.d.ts.map +1 -0
  246. package/dist/stream/decoder.js +71 -0
  247. package/dist/stream/decoder.js.map +1 -0
  248. package/dist/stream/encoder.d.ts +12 -0
  249. package/dist/stream/encoder.d.ts.map +1 -0
  250. package/dist/stream/encoder.js +19 -0
  251. package/dist/stream/encoder.js.map +1 -0
  252. package/dist/stream/events.d.ts +20 -0
  253. package/dist/stream/events.d.ts.map +1 -0
  254. package/dist/stream/events.js +65 -0
  255. package/dist/stream/events.js.map +1 -0
  256. package/dist/stream/index.d.ts +9 -0
  257. package/dist/stream/index.d.ts.map +1 -0
  258. package/dist/stream/index.js +9 -0
  259. package/dist/stream/index.js.map +1 -0
  260. package/dist/stream/predictiveHtmlParser.d.ts +52 -0
  261. package/dist/stream/predictiveHtmlParser.d.ts.map +1 -0
  262. package/dist/stream/predictiveHtmlParser.js +252 -0
  263. package/dist/stream/predictiveHtmlParser.js.map +1 -0
  264. package/dist/stream/sse.d.ts +7 -0
  265. package/dist/stream/sse.d.ts.map +1 -0
  266. package/dist/stream/sse.js +33 -0
  267. package/dist/stream/sse.js.map +1 -0
  268. package/dist/types/artifact.d.ts +88 -0
  269. package/dist/types/artifact.d.ts.map +1 -0
  270. package/dist/types/artifact.js +2 -0
  271. package/dist/types/artifact.js.map +1 -0
  272. package/dist/types/client.d.ts +98 -0
  273. package/dist/types/client.d.ts.map +1 -0
  274. package/dist/types/client.js +2 -0
  275. package/dist/types/client.js.map +1 -0
  276. package/dist/types/config.d.ts +23 -0
  277. package/dist/types/config.d.ts.map +1 -0
  278. package/dist/types/config.js +2 -0
  279. package/dist/types/config.js.map +1 -0
  280. package/dist/types/errors.d.ts +9 -0
  281. package/dist/types/errors.d.ts.map +1 -0
  282. package/dist/types/errors.js +2 -0
  283. package/dist/types/errors.js.map +1 -0
  284. package/dist/types/index.d.ts +7 -0
  285. package/dist/types/index.d.ts.map +1 -0
  286. package/dist/types/index.js +2 -0
  287. package/dist/types/index.js.map +1 -0
  288. package/dist/types/server.d.ts +111 -0
  289. package/dist/types/server.d.ts.map +1 -0
  290. package/dist/types/server.js +2 -0
  291. package/dist/types/server.js.map +1 -0
  292. package/dist/types/stream.d.ts +60 -0
  293. package/dist/types/stream.d.ts.map +1 -0
  294. package/dist/types/stream.js +7 -0
  295. package/dist/types/stream.js.map +1 -0
  296. package/dist/utils/index.d.ts +6 -0
  297. package/dist/utils/index.d.ts.map +1 -0
  298. package/dist/utils/index.js +6 -0
  299. package/dist/utils/index.js.map +1 -0
  300. package/dist/utils/invariant.d.ts +6 -0
  301. package/dist/utils/invariant.d.ts.map +1 -0
  302. package/dist/utils/invariant.js +10 -0
  303. package/dist/utils/invariant.js.map +1 -0
  304. package/dist/utils/isBrowser.d.ts +3 -0
  305. package/dist/utils/isBrowser.d.ts.map +1 -0
  306. package/dist/utils/isBrowser.js +3 -0
  307. package/dist/utils/isBrowser.js.map +1 -0
  308. package/dist/utils/mergeConfig.d.ts +6 -0
  309. package/dist/utils/mergeConfig.d.ts.map +1 -0
  310. package/dist/utils/mergeConfig.js +17 -0
  311. package/dist/utils/mergeConfig.js.map +1 -0
  312. package/dist/utils/noop.d.ts +3 -0
  313. package/dist/utils/noop.d.ts.map +1 -0
  314. package/dist/utils/noop.js +3 -0
  315. package/dist/utils/noop.js.map +1 -0
  316. package/dist/utils/safeJsonParse.d.ts +7 -0
  317. package/dist/utils/safeJsonParse.d.ts.map +1 -0
  318. package/dist/utils/safeJsonParse.js +62 -0
  319. package/dist/utils/safeJsonParse.js.map +1 -0
  320. package/dist-cjs/artifacts/artifactEnvelope.js +224 -0
  321. package/dist-cjs/artifacts/artifactEnvelope.js.map +1 -0
  322. package/dist-cjs/artifacts/artifactStatus.js +14 -0
  323. package/dist-cjs/artifacts/artifactStatus.js.map +1 -0
  324. package/dist-cjs/artifacts/artifactStore.js +39 -0
  325. package/dist-cjs/artifacts/artifactStore.js.map +1 -0
  326. package/dist-cjs/artifacts/htmlArtifact.js +24 -0
  327. package/dist-cjs/artifacts/htmlArtifact.js.map +1 -0
  328. package/dist-cjs/artifacts/index.js +21 -0
  329. package/dist-cjs/artifacts/index.js.map +1 -0
  330. package/dist-cjs/circuit-breaker/circuitBreaker.js +63 -0
  331. package/dist-cjs/circuit-breaker/circuitBreaker.js.map +1 -0
  332. package/dist-cjs/circuit-breaker/index.js +19 -0
  333. package/dist-cjs/circuit-breaker/index.js.map +1 -0
  334. package/dist-cjs/circuit-breaker/memoryCircuitStore.js +16 -0
  335. package/dist-cjs/circuit-breaker/memoryCircuitStore.js.map +1 -0
  336. package/dist-cjs/classifier/classifierPrompt.js +47 -0
  337. package/dist-cjs/classifier/classifierPrompt.js.map +1 -0
  338. package/dist-cjs/classifier/classifyMode.js +53 -0
  339. package/dist-cjs/classifier/classifyMode.js.map +1 -0
  340. package/dist-cjs/classifier/index.js +20 -0
  341. package/dist-cjs/classifier/index.js.map +1 -0
  342. package/dist-cjs/classifier/rules.js +121 -0
  343. package/dist-cjs/classifier/rules.js.map +1 -0
  344. package/dist-cjs/client/ArtifactChat.js +98 -0
  345. package/dist-cjs/client/ArtifactChat.js.map +1 -0
  346. package/dist-cjs/client/ArtifactMessage.js +32 -0
  347. package/dist-cjs/client/ArtifactMessage.js.map +1 -0
  348. package/dist-cjs/client/MarkdownMessage.js +177 -0
  349. package/dist-cjs/client/MarkdownMessage.js.map +1 -0
  350. package/dist-cjs/client/index.js +20 -0
  351. package/dist-cjs/client/index.js.map +1 -0
  352. package/dist-cjs/client/useArtifactStream.js +246 -0
  353. package/dist-cjs/client/useArtifactStream.js.map +1 -0
  354. package/dist-cjs/client.js +20 -0
  355. package/dist-cjs/client.js.map +1 -0
  356. package/dist-cjs/constants/defaults.js +41 -0
  357. package/dist-cjs/constants/defaults.js.map +1 -0
  358. package/dist-cjs/constants/events.js +19 -0
  359. package/dist-cjs/constants/events.js.map +1 -0
  360. package/dist-cjs/constants/index.js +20 -0
  361. package/dist-cjs/constants/index.js.map +1 -0
  362. package/dist-cjs/constants/sandbox.js +27 -0
  363. package/dist-cjs/constants/sandbox.js.map +1 -0
  364. package/dist-cjs/core/createArtifactResponse.js +20 -0
  365. package/dist-cjs/core/createArtifactResponse.js.map +1 -0
  366. package/dist-cjs/core/createArtifactStream.js +37 -0
  367. package/dist-cjs/core/createArtifactStream.js.map +1 -0
  368. package/dist-cjs/core/createIds.js +17 -0
  369. package/dist-cjs/core/createIds.js.map +1 -0
  370. package/dist-cjs/core/index.js +22 -0
  371. package/dist-cjs/core/index.js.map +1 -0
  372. package/dist-cjs/core/lifecycle.js +86 -0
  373. package/dist-cjs/core/lifecycle.js.map +1 -0
  374. package/dist-cjs/core/parseArtifactEnvelope.js +8 -0
  375. package/dist-cjs/core/parseArtifactEnvelope.js.map +1 -0
  376. package/dist-cjs/errors/ArtifactParseError.js +14 -0
  377. package/dist-cjs/errors/ArtifactParseError.js.map +1 -0
  378. package/dist-cjs/errors/ClassificationError.js +17 -0
  379. package/dist-cjs/errors/ClassificationError.js.map +1 -0
  380. package/dist-cjs/errors/StreamError.js +15 -0
  381. package/dist-cjs/errors/StreamError.js.map +1 -0
  382. package/dist-cjs/errors/index.js +20 -0
  383. package/dist-cjs/errors/index.js.map +1 -0
  384. package/dist-cjs/iframe/HtmlArtifactCard.js +153 -0
  385. package/dist-cjs/iframe/HtmlArtifactCard.js.map +1 -0
  386. package/dist-cjs/iframe/HtmlArtifactCodeView.js +23 -0
  387. package/dist-cjs/iframe/HtmlArtifactCodeView.js.map +1 -0
  388. package/dist-cjs/iframe/HtmlArtifactModal.js +135 -0
  389. package/dist-cjs/iframe/HtmlArtifactModal.js.map +1 -0
  390. package/dist-cjs/iframe/HtmlArtifactPreview.js +250 -0
  391. package/dist-cjs/iframe/HtmlArtifactPreview.js.map +1 -0
  392. package/dist-cjs/iframe/HtmlArtifactToolbar.js +17 -0
  393. package/dist-cjs/iframe/HtmlArtifactToolbar.js.map +1 -0
  394. package/dist-cjs/iframe/iframeSizing.js +77 -0
  395. package/dist-cjs/iframe/iframeSizing.js.map +1 -0
  396. package/dist-cjs/iframe/iframeSrcDoc.js +241 -0
  397. package/dist-cjs/iframe/iframeSrcDoc.js.map +1 -0
  398. package/dist-cjs/iframe/index.js +22 -0
  399. package/dist-cjs/iframe/index.js.map +1 -0
  400. package/dist-cjs/iframe/styles.js +218 -0
  401. package/dist-cjs/iframe/styles.js.map +1 -0
  402. package/dist-cjs/index.js +52 -0
  403. package/dist-cjs/index.js.map +1 -0
  404. package/dist-cjs/package.json +3 -0
  405. package/dist-cjs/prompts/htmlArtifactPrompt.js +252 -0
  406. package/dist-cjs/prompts/htmlArtifactPrompt.js.map +1 -0
  407. package/dist-cjs/prompts/index.js +20 -0
  408. package/dist-cjs/prompts/index.js.map +1 -0
  409. package/dist-cjs/prompts/markdownPrompt.js +13 -0
  410. package/dist-cjs/prompts/markdownPrompt.js.map +1 -0
  411. package/dist-cjs/prompts/systemPrompt.js +6 -0
  412. package/dist-cjs/prompts/systemPrompt.js.map +1 -0
  413. package/dist-cjs/sanitizer/dangerousPatterns.js +44 -0
  414. package/dist-cjs/sanitizer/dangerousPatterns.js.map +1 -0
  415. package/dist-cjs/sanitizer/index.js +43 -0
  416. package/dist-cjs/sanitizer/index.js.map +1 -0
  417. package/dist-cjs/sanitizer/sanitizeConfig.js +13 -0
  418. package/dist-cjs/sanitizer/sanitizeConfig.js.map +1 -0
  419. package/dist-cjs/sanitizer/sanitizeHtml.js +86 -0
  420. package/dist-cjs/sanitizer/sanitizeHtml.js.map +1 -0
  421. package/dist-cjs/server/config.js +72 -0
  422. package/dist-cjs/server/config.js.map +1 -0
  423. package/dist-cjs/server/createArtifactStreamResponse.js +107 -0
  424. package/dist-cjs/server/createArtifactStreamResponse.js.map +1 -0
  425. package/dist-cjs/server/createHtmlArtifactStream.js +119 -0
  426. package/dist-cjs/server/createHtmlArtifactStream.js.map +1 -0
  427. package/dist-cjs/server/createMarkdownStream.js +31 -0
  428. package/dist-cjs/server/createMarkdownStream.js.map +1 -0
  429. package/dist-cjs/server/createSseResponse.js +14 -0
  430. package/dist-cjs/server/createSseResponse.js.map +1 -0
  431. package/dist-cjs/server/index.js +34 -0
  432. package/dist-cjs/server/index.js.map +1 -0
  433. package/dist-cjs/server.js +19 -0
  434. package/dist-cjs/server.js.map +1 -0
  435. package/dist-cjs/stream/assembleDocument.js +109 -0
  436. package/dist-cjs/stream/assembleDocument.js.map +1 -0
  437. package/dist-cjs/stream/buffering.js +102 -0
  438. package/dist-cjs/stream/buffering.js.map +1 -0
  439. package/dist-cjs/stream/debounce.js +39 -0
  440. package/dist-cjs/stream/debounce.js.map +1 -0
  441. package/dist-cjs/stream/decoder.js +75 -0
  442. package/dist-cjs/stream/decoder.js.map +1 -0
  443. package/dist-cjs/stream/encoder.js +24 -0
  444. package/dist-cjs/stream/encoder.js.map +1 -0
  445. package/dist-cjs/stream/events.js +69 -0
  446. package/dist-cjs/stream/events.js.map +1 -0
  447. package/dist-cjs/stream/index.js +25 -0
  448. package/dist-cjs/stream/index.js.map +1 -0
  449. package/dist-cjs/stream/predictiveHtmlParser.js +256 -0
  450. package/dist-cjs/stream/predictiveHtmlParser.js.map +1 -0
  451. package/dist-cjs/stream/sse.js +36 -0
  452. package/dist-cjs/stream/sse.js.map +1 -0
  453. package/dist-cjs/types/artifact.js +3 -0
  454. package/dist-cjs/types/artifact.js.map +1 -0
  455. package/dist-cjs/types/client.js +3 -0
  456. package/dist-cjs/types/client.js.map +1 -0
  457. package/dist-cjs/types/config.js +3 -0
  458. package/dist-cjs/types/config.js.map +1 -0
  459. package/dist-cjs/types/errors.js +3 -0
  460. package/dist-cjs/types/errors.js.map +1 -0
  461. package/dist-cjs/types/index.js +3 -0
  462. package/dist-cjs/types/index.js.map +1 -0
  463. package/dist-cjs/types/server.js +3 -0
  464. package/dist-cjs/types/server.js.map +1 -0
  465. package/dist-cjs/types/stream.js +8 -0
  466. package/dist-cjs/types/stream.js.map +1 -0
  467. package/dist-cjs/utils/index.js +22 -0
  468. package/dist-cjs/utils/index.js.map +1 -0
  469. package/dist-cjs/utils/invariant.js +13 -0
  470. package/dist-cjs/utils/invariant.js.map +1 -0
  471. package/dist-cjs/utils/isBrowser.js +6 -0
  472. package/dist-cjs/utils/isBrowser.js.map +1 -0
  473. package/dist-cjs/utils/mergeConfig.js +20 -0
  474. package/dist-cjs/utils/mergeConfig.js.map +1 -0
  475. package/dist-cjs/utils/noop.js +7 -0
  476. package/dist-cjs/utils/noop.js.map +1 -0
  477. package/dist-cjs/utils/safeJsonParse.js +65 -0
  478. package/dist-cjs/utils/safeJsonParse.js.map +1 -0
  479. package/package.json +115 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createArtifactResponse.js","sourceRoot":"","sources":["../../src/core/createArtifactResponse.ts"],"names":[],"mappings":";;;AAUA,wDAQC;AAlBD,4DAA4D;AAC/C,QAAA,WAAW,GAA2B;IACjD,cAAc,EAAE,kCAAkC;IAClD,eAAe,EAAE,wBAAwB;IACzC,UAAU,EAAE,YAAY;IACxB,uDAAuD;IACvD,mBAAmB,EAAE,IAAI;CAC1B,CAAC;AAEF,wEAAwE;AACxE,SAAgB,sBAAsB,CACpC,MAAkC,EAClC,IAAmB;IAEnB,OAAO,IAAI,QAAQ,CAAC,MAAM,EAAE;QAC1B,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,GAAG;QAC3B,OAAO,EAAE,EAAE,GAAG,mBAAW,EAAE,GAAI,IAAI,EAAE,OAAkC,EAAE;KAC1E,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createArtifactStream = createArtifactStream;
4
+ const encoder_js_1 = require("../stream/encoder.js");
5
+ const events_js_1 = require("../stream/events.js");
6
+ /**
7
+ * Turn an event-emitting producer into an SSE byte stream. The producer is
8
+ * responsible for emitting its own `done` event on success; this wrapper
9
+ * guarantees the stream is always closed and that an uncaught producer error
10
+ * becomes a terminal `error` + `done` pair rather than a hung connection.
11
+ */
12
+ function createArtifactStream(producer) {
13
+ const encoder = new TextEncoder();
14
+ return new ReadableStream({
15
+ async start(controller) {
16
+ let closed = false;
17
+ const emit = (e) => {
18
+ if (closed)
19
+ return;
20
+ controller.enqueue((0, encoder_js_1.encodeSseEventBytes)(e, encoder));
21
+ };
22
+ try {
23
+ await producer(emit);
24
+ }
25
+ catch (err) {
26
+ const message = err instanceof Error ? err.message : String(err);
27
+ emit(events_js_1.event.error(message, false));
28
+ emit(events_js_1.event.done());
29
+ }
30
+ finally {
31
+ closed = true;
32
+ controller.close();
33
+ }
34
+ },
35
+ });
36
+ }
37
+ //# sourceMappingURL=createArtifactStream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createArtifactStream.js","sourceRoot":"","sources":["../../src/core/createArtifactStream.ts"],"names":[],"mappings":";;AAUA,oDAyBC;AAnCD,qDAA2D;AAC3D,mDAA4C;AAG5C;;;;;GAKG;AACH,SAAgB,oBAAoB,CAClC,QAAgC;IAEhC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAElC,OAAO,IAAI,cAAc,CAAa;QACpC,KAAK,CAAC,KAAK,CAAC,UAAU;YACpB,IAAI,MAAM,GAAG,KAAK,CAAC;YACnB,MAAM,IAAI,GAAS,CAAC,CAAC,EAAE,EAAE;gBACvB,IAAI,MAAM;oBAAE,OAAO;gBACnB,UAAU,CAAC,OAAO,CAAC,IAAA,gCAAmB,EAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;YACtD,CAAC,CAAC;YAEF,IAAI,CAAC;gBACH,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACjE,IAAI,CAAC,iBAAK,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;gBAClC,IAAI,CAAC,iBAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YACrB,CAAC;oBAAS,CAAC;gBACT,MAAM,GAAG,IAAI,CAAC;gBACd,UAAU,CAAC,KAAK,EAAE,CAAC;YACrB,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createMessageId = createMessageId;
4
+ exports.createArtifactId = createArtifactId;
5
+ function randomId() {
6
+ const g = globalThis;
7
+ if (g.crypto?.randomUUID)
8
+ return g.crypto.randomUUID();
9
+ return `${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 10)}`;
10
+ }
11
+ function createMessageId() {
12
+ return `msg_${randomId()}`;
13
+ }
14
+ function createArtifactId() {
15
+ return `art_${randomId()}`;
16
+ }
17
+ //# sourceMappingURL=createIds.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createIds.js","sourceRoot":"","sources":["../../src/core/createIds.ts"],"names":[],"mappings":";;AAMA,0CAEC;AAED,4CAEC;AAZD,SAAS,QAAQ;IACf,MAAM,CAAC,GAAG,UAAwD,CAAC;IACnE,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU;QAAE,OAAO,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;IACvD,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AACjF,CAAC;AAED,SAAgB,eAAe;IAC7B,OAAO,OAAO,QAAQ,EAAE,EAAE,CAAC;AAC7B,CAAC;AAED,SAAgB,gBAAgB;IAC9B,OAAO,OAAO,QAAQ,EAAE,EAAE,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./createIds.js"), exports);
18
+ __exportStar(require("./lifecycle.js"), exports);
19
+ __exportStar(require("./createArtifactStream.js"), exports);
20
+ __exportStar(require("./createArtifactResponse.js"), exports);
21
+ __exportStar(require("./parseArtifactEnvelope.js"), exports);
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,iDAA+B;AAC/B,4DAA0C;AAC1C,8DAA4C;AAC5C,6DAA2C"}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ArtifactLifecycle = exports.MessageLifecycle = void 0;
4
+ const events_js_1 = require("../stream/events.js");
5
+ const createIds_js_1 = require("./createIds.js");
6
+ /**
7
+ * Helper that manages a single assistant message's lifecycle, accumulating
8
+ * content so `done` can carry the full text without the caller re-tracking it.
9
+ */
10
+ class MessageLifecycle {
11
+ emit;
12
+ id;
13
+ content = "";
14
+ started = false;
15
+ finished = false;
16
+ constructor(emit, id = (0, createIds_js_1.createMessageId)()) {
17
+ this.emit = emit;
18
+ this.id = id;
19
+ }
20
+ start() {
21
+ if (this.started)
22
+ return;
23
+ this.started = true;
24
+ this.emit(events_js_1.event.messageStart(this.id));
25
+ }
26
+ delta(text) {
27
+ if (!text || this.finished)
28
+ return;
29
+ if (!this.started)
30
+ this.start();
31
+ this.content += text;
32
+ this.emit(events_js_1.event.messageDelta(this.id, text));
33
+ }
34
+ /** Idempotent — emits `message_done` at most once. */
35
+ done(finalContent) {
36
+ if (this.finished)
37
+ return this.content;
38
+ if (!this.started)
39
+ this.start();
40
+ if (finalContent !== undefined && this.content === "") {
41
+ this.content = finalContent;
42
+ }
43
+ this.finished = true;
44
+ this.emit(events_js_1.event.messageDone(this.id, this.content));
45
+ return this.content;
46
+ }
47
+ }
48
+ exports.MessageLifecycle = MessageLifecycle;
49
+ /** Helper managing one artifact's lifecycle (start → deltas → snapshots → done). */
50
+ class ArtifactLifecycle {
51
+ emit;
52
+ id;
53
+ started = false;
54
+ finished = false;
55
+ constructor(emit, id = (0, createIds_js_1.createArtifactId)()) {
56
+ this.emit = emit;
57
+ this.id = id;
58
+ }
59
+ start(title) {
60
+ if (this.started)
61
+ return;
62
+ this.started = true;
63
+ this.emit(events_js_1.event.artifactStart(this.id, title, "html"));
64
+ }
65
+ delta(html) {
66
+ if (!html || this.finished)
67
+ return;
68
+ this.emit(events_js_1.event.artifactDelta(this.id, html));
69
+ }
70
+ snapshot(html) {
71
+ if (this.finished)
72
+ return;
73
+ this.emit(events_js_1.event.artifactSnapshot(this.id, html));
74
+ }
75
+ /** Idempotent — emits `artifact_done` at most once. */
76
+ done(html) {
77
+ if (this.finished)
78
+ return;
79
+ if (!this.started)
80
+ this.start("Untitled artifact");
81
+ this.finished = true;
82
+ this.emit(events_js_1.event.artifactDone(this.id, html));
83
+ }
84
+ }
85
+ exports.ArtifactLifecycle = ArtifactLifecycle;
86
+ //# sourceMappingURL=lifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/core/lifecycle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StreamingEnvelopeParser = exports.parseArtifactEnvelope = void 0;
4
+ // Re-exported from the artifacts module so it's reachable from the core API too.
5
+ var artifactEnvelope_js_1 = require("../artifacts/artifactEnvelope.js");
6
+ Object.defineProperty(exports, "parseArtifactEnvelope", { enumerable: true, get: function () { return artifactEnvelope_js_1.parseArtifactEnvelope; } });
7
+ Object.defineProperty(exports, "StreamingEnvelopeParser", { enumerable: true, get: function () { return artifactEnvelope_js_1.StreamingEnvelopeParser; } });
8
+ //# sourceMappingURL=parseArtifactEnvelope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseArtifactEnvelope.js","sourceRoot":"","sources":["../../src/core/parseArtifactEnvelope.ts"],"names":[],"mappings":";;;AAAA,iFAAiF;AACjF,wEAI0C;AAHxC,4HAAA,qBAAqB,OAAA;AACrB,8HAAA,uBAAuB,OAAA"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ArtifactParseError = void 0;
4
+ /** Raised when the model envelope cannot be parsed. Always recoverable. */
5
+ class ArtifactParseError extends Error {
6
+ code = "ARTIFACT_PARSE_ERROR";
7
+ recoverable = true;
8
+ constructor(message, options) {
9
+ super(message, options);
10
+ this.name = "ArtifactParseError";
11
+ }
12
+ }
13
+ exports.ArtifactParseError = ArtifactParseError;
14
+ //# sourceMappingURL=ArtifactParseError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArtifactParseError.js","sourceRoot":"","sources":["../../src/errors/ArtifactParseError.ts"],"names":[],"mappings":";;;AAEA,2EAA2E;AAC3E,MAAa,kBAAmB,SAAQ,KAAK;IAClC,IAAI,GAAsB,sBAAsB,CAAC;IACjD,WAAW,GAAG,IAAI,CAAC;IAE5B,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AARD,gDAQC"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ClassificationError = void 0;
4
+ /**
5
+ * Raised when classification fails. Always recoverable — the server falls back
6
+ * to heuristic rules and ultimately to markdown.
7
+ */
8
+ class ClassificationError extends Error {
9
+ code = "CLASSIFICATION_ERROR";
10
+ recoverable = true;
11
+ constructor(message, options) {
12
+ super(message, options);
13
+ this.name = "ClassificationError";
14
+ }
15
+ }
16
+ exports.ClassificationError = ClassificationError;
17
+ //# sourceMappingURL=ClassificationError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClassificationError.js","sourceRoot":"","sources":["../../src/errors/ClassificationError.ts"],"names":[],"mappings":";;;AAEA;;;GAGG;AACH,MAAa,mBAAoB,SAAQ,KAAK;IACnC,IAAI,GAAsB,sBAAsB,CAAC;IACjD,WAAW,GAAG,IAAI,CAAC;IAE5B,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AARD,kDAQC"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StreamError = void 0;
4
+ /** Raised on transport/streaming failures. May or may not be recoverable. */
5
+ class StreamError extends Error {
6
+ code = "STREAM_ERROR";
7
+ recoverable;
8
+ constructor(message, options) {
9
+ super(message, options);
10
+ this.name = "StreamError";
11
+ this.recoverable = options?.recoverable ?? false;
12
+ }
13
+ }
14
+ exports.StreamError = StreamError;
15
+ //# sourceMappingURL=StreamError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StreamError.js","sourceRoot":"","sources":["../../src/errors/StreamError.ts"],"names":[],"mappings":";;;AAEA,6EAA6E;AAC7E,MAAa,WAAY,SAAQ,KAAK;IAC3B,IAAI,GAAsB,cAAc,CAAC;IACzC,WAAW,CAAU;IAE9B,YACE,OAAe,EACf,OAAoD;QAEpD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;QAC1B,IAAI,CAAC,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,KAAK,CAAC;IACnD,CAAC;CACF;AAZD,kCAYC"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./ArtifactParseError.js"), exports);
18
+ __exportStar(require("./StreamError.js"), exports);
19
+ __exportStar(require("./ClassificationError.js"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0DAAwC;AACxC,mDAAiC;AACjC,2DAAyC"}
@@ -0,0 +1,153 @@
1
+ "use strict";
2
+ "use client";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.HtmlArtifactCard = HtmlArtifactCard;
38
+ const jsx_runtime_1 = require("react/jsx-runtime");
39
+ const React = __importStar(require("react"));
40
+ const HtmlArtifactToolbar_js_1 = require("./HtmlArtifactToolbar.js");
41
+ const HtmlArtifactPreview_js_1 = require("./HtmlArtifactPreview.js");
42
+ const HtmlArtifactCodeView_js_1 = require("./HtmlArtifactCodeView.js");
43
+ const HtmlArtifactModal_js_1 = require("./HtmlArtifactModal.js");
44
+ const iframeSrcDoc_js_1 = require("./iframeSrcDoc.js");
45
+ const styles_js_1 = require("./styles.js");
46
+ const RADIUS = { md: 14, xl: 18, "2xl": 22, "3xl": 28 };
47
+ /**
48
+ * The seamless artifact card: a refined header (window dots, segmented
49
+ * preview/code tabs, pill copy/download/fullscreen actions), a sandboxed iframe
50
+ * preview that streams in layer-by-layer, and a premium ring + layered-shadow
51
+ * frame. No flat white box, no host-CSS dependency.
52
+ */
53
+ function HtmlArtifactCard(props) {
54
+ (0, styles_js_1.useArtifactStyles)();
55
+ const { artifact, variant = "elevated", radius = "2xl", showToolbar = true, defaultTab = "preview", allowFullscreen = true, allowCopy = true, allowDownload = true, allowPdf = true, presentation = "card", theme, previewOptions, className, } = props;
56
+ const [tab, setTab] = React.useState(defaultTab);
57
+ const [copied, setCopied] = React.useState(false);
58
+ const [fullscreen, setFullscreen] = React.useState(false);
59
+ const streaming = artifact.status === "streaming";
60
+ const errored = artifact.status === "error";
61
+ // While streaming, feed the raw growing HTML to the preview's progressive
62
+ // balancer (it repairs each partial frame into a valid, renderable document).
63
+ // The accumulated raw stream beats the server's coarser snapshots here; we
64
+ // fall back to a snapshot only if no raw deltas have arrived (buffered model).
65
+ const previewHtml = streaming
66
+ ? artifact.html || artifact.snapshot
67
+ : artifact.html || artifact.snapshot;
68
+ const sourceHtml = artifact.html || artifact.snapshot;
69
+ const onCopy = React.useCallback(() => {
70
+ if (typeof navigator === "undefined" || !navigator.clipboard)
71
+ return;
72
+ navigator.clipboard.writeText(sourceHtml).then(() => {
73
+ setCopied(true);
74
+ setTimeout(() => setCopied(false), 1600);
75
+ }, () => { });
76
+ }, [sourceHtml]);
77
+ const onDownload = React.useCallback(() => {
78
+ if (typeof document === "undefined")
79
+ return;
80
+ const blob = new Blob([sourceHtml], { type: "text/html;charset=utf-8" });
81
+ const url = URL.createObjectURL(blob);
82
+ const a = document.createElement("a");
83
+ const safeName = artifact.title.replace(/[^a-z0-9-_]+/gi, "-").toLowerCase() || "artifact";
84
+ a.href = url;
85
+ a.download = `${safeName}.html`;
86
+ document.body.appendChild(a);
87
+ a.click();
88
+ a.remove();
89
+ URL.revokeObjectURL(url);
90
+ }, [sourceHtml, artifact.title]);
91
+ // Export to PDF via the browser's native print pipeline ("Save as PDF").
92
+ // Renders the sanitized artifact into a hidden, same-origin iframe and prints
93
+ // just that frame — no extra dependencies, no scripts in the printed output.
94
+ const onDownloadPdf = React.useCallback(() => {
95
+ if (typeof document === "undefined" || !sourceHtml)
96
+ return;
97
+ const printable = (0, iframeSrcDoc_js_1.buildSrcDoc)(sourceHtml, {
98
+ sanitize: true,
99
+ seamless: false,
100
+ sanitizeOptions: previewOptions,
101
+ });
102
+ const frame = document.createElement("iframe");
103
+ Object.assign(frame.style, {
104
+ position: "fixed",
105
+ right: "0",
106
+ bottom: "0",
107
+ width: "0",
108
+ height: "0",
109
+ border: "0",
110
+ opacity: "0",
111
+ });
112
+ frame.setAttribute("aria-hidden", "true");
113
+ frame.title = `${artifact.title} (PDF)`;
114
+ frame.srcdoc = printable;
115
+ const remove = () => {
116
+ if (document.body.contains(frame))
117
+ frame.remove();
118
+ };
119
+ frame.onload = () => {
120
+ const win = frame.contentWindow;
121
+ if (!win)
122
+ return remove();
123
+ win.addEventListener?.("afterprint", () => setTimeout(remove, 300));
124
+ try {
125
+ win.focus();
126
+ win.print();
127
+ }
128
+ catch {
129
+ remove();
130
+ }
131
+ // Safety net if afterprint never fires (some browsers).
132
+ setTimeout(remove, 60_000);
133
+ };
134
+ document.body.appendChild(frame);
135
+ }, [sourceHtml, artifact.title, previewOptions]);
136
+ // Seamless ("camouflage") presentation: a transparent, chromeless iframe that
137
+ // sits inline like native chat content — no card frame, no window, no border.
138
+ // A faint action row appears only on hover so the clean UI stays clean.
139
+ if (presentation === "seamless") {
140
+ return ((0, jsx_runtime_1.jsxs)("div", { className: `aha-scope${className ? ` ${className}` : ""}`, children: [(0, jsx_runtime_1.jsxs)("div", { className: "aha-seamless", children: [(0, jsx_runtime_1.jsx)(HtmlArtifactPreview_js_1.HtmlArtifactPreview, { html: previewHtml, streaming: streaming, errored: errored, title: artifact.title, theme: theme, bare: true, options: { minHeight: 0, ...previewOptions } }), showToolbar && !streaming && ((0, jsx_runtime_1.jsxs)("div", { className: "aha-seamless-actions", children: [allowCopy && ((0, jsx_runtime_1.jsx)("button", { type: "button", className: "aha-iconbtn", onClick: onCopy, title: "Copy HTML", "aria-label": "Copy HTML", children: copied ? CHECK_ICON : COPY_ICON })), allowPdf && ((0, jsx_runtime_1.jsx)("button", { type: "button", className: "aha-iconbtn", onClick: onDownloadPdf, title: "Download PDF", "aria-label": "Download PDF", children: PDF_ICON })), allowFullscreen && ((0, jsx_runtime_1.jsx)("button", { type: "button", className: "aha-iconbtn", onClick: () => setFullscreen(true), title: "Fullscreen", "aria-label": "Fullscreen", children: EXPAND_ICON }))] }))] }), allowFullscreen && ((0, jsx_runtime_1.jsx)(HtmlArtifactModal_js_1.HtmlArtifactModal, { open: fullscreen, onClose: () => setFullscreen(false), title: artifact.title, children: (0, jsx_runtime_1.jsx)(HtmlArtifactPreview_js_1.HtmlArtifactPreview, { html: previewHtml, streaming: streaming, errored: errored, title: artifact.title, theme: theme, options: { ...previewOptions, autoResize: false, minHeight: 640, maxHeight: 100000 } }) }))] }));
141
+ }
142
+ return ((0, jsx_runtime_1.jsxs)("div", { className: `aha-scope${className ? ` ${className}` : ""}`, children: [(0, jsx_runtime_1.jsxs)("div", { className: "aha-card", "data-variant": variant, style: { ["--aha-radius"]: `${RADIUS[radius]}px` }, children: [showToolbar && ((0, jsx_runtime_1.jsx)(HtmlArtifactToolbar_js_1.HtmlArtifactToolbar, { title: artifact.title, tab: tab, onTabChange: setTab, allowCopy: allowCopy, allowDownload: allowDownload, allowPdf: allowPdf, allowFullscreen: allowFullscreen, copied: copied, streaming: streaming, onCopy: onCopy, onDownload: onDownload, onDownloadPdf: onDownloadPdf, onFullscreen: () => setFullscreen(true) })), tab === "preview" ? ((0, jsx_runtime_1.jsx)(HtmlArtifactPreview_js_1.HtmlArtifactPreview, { html: previewHtml, streaming: streaming, errored: errored, title: artifact.title, theme: theme, options: previewOptions })) : ((0, jsx_runtime_1.jsx)(HtmlArtifactCodeView_js_1.HtmlArtifactCodeView, { html: sourceHtml, maxHeight: previewOptions?.maxHeight ?? 900 }))] }), allowFullscreen && ((0, jsx_runtime_1.jsx)(HtmlArtifactModal_js_1.HtmlArtifactModal, { open: fullscreen, onClose: () => setFullscreen(false), title: artifact.title, children: (0, jsx_runtime_1.jsx)(HtmlArtifactPreview_js_1.HtmlArtifactPreview, { html: previewHtml, streaming: streaming, errored: errored, title: artifact.title, theme: theme, options: {
143
+ ...previewOptions,
144
+ autoResize: false,
145
+ minHeight: 640,
146
+ maxHeight: 100000,
147
+ } }) }))] }));
148
+ }
149
+ const COPY_ICON = ((0, jsx_runtime_1.jsxs)("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": true, children: [(0, jsx_runtime_1.jsx)("rect", { x: "9", y: "9", width: "13", height: "13", rx: "2.5" }), (0, jsx_runtime_1.jsx)("path", { d: "M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1" })] }));
150
+ const CHECK_ICON = ((0, jsx_runtime_1.jsx)("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.6", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": true, children: (0, jsx_runtime_1.jsx)("polyline", { points: "20 6 9 17 4 12" }) }));
151
+ const EXPAND_ICON = ((0, jsx_runtime_1.jsxs)("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": true, children: [(0, jsx_runtime_1.jsx)("polyline", { points: "15 3 21 3 21 9" }), (0, jsx_runtime_1.jsx)("polyline", { points: "9 21 3 21 3 15" }), (0, jsx_runtime_1.jsx)("line", { x1: "21", y1: "3", x2: "14", y2: "10" }), (0, jsx_runtime_1.jsx)("line", { x1: "3", y1: "21", x2: "10", y2: "14" })] }));
152
+ const PDF_ICON = ((0, jsx_runtime_1.jsxs)("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": true, children: [(0, jsx_runtime_1.jsx)("path", { d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z" }), (0, jsx_runtime_1.jsx)("polyline", { points: "14 2 14 8 20 8" }), (0, jsx_runtime_1.jsx)("path", { d: "M9 15h1.2a1.3 1.3 0 0 0 0-2.6H9V18" }), (0, jsx_runtime_1.jsx)("path", { d: "M15.5 12.4H14V18" }), (0, jsx_runtime_1.jsx)("path", { d: "M14 15.4h1.3" })] }));
153
+ //# sourceMappingURL=HtmlArtifactCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HtmlArtifactCard.js","sourceRoot":"","sources":["../../src/iframe/HtmlArtifactCard.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBb,4CA4NC;;AAjPD,6CAA+B;AAC/B,qEAA+D;AAC/D,qEAA+D;AAC/D,uEAAiE;AACjE,iEAA2D;AAC3D,uDAAgD;AAChD,2CAAgD;AAOhD,MAAM,MAAM,GAA+B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;AAEpF;;;;;GAKG;AACH,SAAgB,gBAAgB,CAAC,KAA4B;IAC3D,IAAA,6BAAiB,GAAE,CAAC;IACpB,MAAM,EACJ,QAAQ,EACR,OAAO,GAAG,UAAU,EACpB,MAAM,GAAG,KAAK,EACd,WAAW,GAAG,IAAI,EAClB,UAAU,GAAG,SAAS,EACtB,eAAe,GAAG,IAAI,EACtB,SAAS,GAAG,IAAI,EAChB,aAAa,GAAG,IAAI,EACpB,QAAQ,GAAG,IAAI,EACf,YAAY,GAAG,MAAM,EACrB,KAAK,EACL,cAAc,EACd,SAAS,GACV,GAAG,KAAK,CAAC;IAEV,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAc,UAAU,CAAC,CAAC;IAC9D,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE1D,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,KAAK,WAAW,CAAC;IAClD,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,KAAK,OAAO,CAAC;IAC5C,0EAA0E;IAC1E,8EAA8E;IAC9E,2EAA2E;IAC3E,+EAA+E;IAC/E,MAAM,WAAW,GAAG,SAAS;QAC3B,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,QAAQ;QACpC,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,QAAQ,CAAC;IACvC,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,QAAQ,CAAC;IAEtD,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QACpC,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,CAAC,SAAS,CAAC,SAAS;YAAE,OAAO;QACrE,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,IAAI,CAC5C,GAAG,EAAE;YACH,SAAS,CAAC,IAAI,CAAC,CAAC;YAChB,UAAU,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;QAC3C,CAAC,EACD,GAAG,EAAE,GAAE,CAAC,CACT,CAAC;IACJ,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QACxC,IAAI,OAAO,QAAQ,KAAK,WAAW;YAAE,OAAO;QAC5C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAC,CAAC;QACzE,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,QAAQ,GACZ,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,IAAI,UAAU,CAAC;QAC5E,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC;QACb,CAAC,CAAC,QAAQ,GAAG,GAAG,QAAQ,OAAO,CAAC;QAChC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC,CAAC,KAAK,EAAE,CAAC;QACV,CAAC,CAAC,MAAM,EAAE,CAAC;QACX,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAEjC,yEAAyE;IACzE,8EAA8E;IAC9E,6EAA6E;IAC7E,MAAM,aAAa,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QAC3C,IAAI,OAAO,QAAQ,KAAK,WAAW,IAAI,CAAC,UAAU;YAAE,OAAO;QAC3D,MAAM,SAAS,GAAG,IAAA,6BAAW,EAAC,UAAU,EAAE;YACxC,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,KAAK;YACf,eAAe,EAAE,cAAc;SAChC,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE;YACzB,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,GAAG;YACX,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,GAAG;YACX,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,GAAG;SAC0B,CAAC,CAAC;QAC1C,KAAK,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAC1C,KAAK,CAAC,KAAK,GAAG,GAAG,QAAQ,CAAC,KAAK,QAAQ,CAAC;QACxC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;QAEzB,MAAM,MAAM,GAAG,GAAG,EAAE;YAClB,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAAE,KAAK,CAAC,MAAM,EAAE,CAAC;QACpD,CAAC,CAAC;QACF,KAAK,CAAC,MAAM,GAAG,GAAG,EAAE;YAClB,MAAM,GAAG,GAAG,KAAK,CAAC,aAAa,CAAC;YAChC,IAAI,CAAC,GAAG;gBAAE,OAAO,MAAM,EAAE,CAAC;YAC1B,GAAG,CAAC,gBAAgB,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;YACpE,IAAI,CAAC;gBACH,GAAG,CAAC,KAAK,EAAE,CAAC;gBACZ,GAAG,CAAC,KAAK,EAAE,CAAC;YACd,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,EAAE,CAAC;YACX,CAAC;YACD,wDAAwD;YACxD,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7B,CAAC,CAAC;QACF,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC;IAEjD,8EAA8E;IAC9E,8EAA8E;IAC9E,wEAAwE;IACxE,IAAI,YAAY,KAAK,UAAU,EAAE,CAAC;QAChC,OAAO,CACL,iCAAK,SAAS,EAAE,YAAY,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,aAC5D,iCAAK,SAAS,EAAC,cAAc,aAC3B,uBAAC,4CAAmB,IAClB,IAAI,EAAE,WAAW,EACjB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,QAAQ,CAAC,KAAK,EACrB,KAAK,EAAE,KAAK,EACZ,IAAI,QACJ,OAAO,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,cAAc,EAAE,GAC5C,EACD,WAAW,IAAI,CAAC,SAAS,IAAI,CAC5B,iCAAK,SAAS,EAAC,sBAAsB,aAClC,SAAS,IAAI,CACZ,mCAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,aAAa,EAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAC,WAAW,gBAAY,WAAW,YACpG,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,GACzB,CACV,EACA,QAAQ,IAAI,CACX,mCAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,aAAa,EAAC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAC,cAAc,gBAAY,cAAc,YACjH,QAAQ,GACF,CACV,EACA,eAAe,IAAI,CAClB,mCAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,aAAa,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,KAAK,EAAC,YAAY,gBAAY,YAAY,YACzH,WAAW,GACL,CACV,IACG,CACP,IACG,EAEL,eAAe,IAAI,CAClB,uBAAC,wCAAiB,IAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,YAC7F,uBAAC,4CAAmB,IAClB,IAAI,EAAE,WAAW,EACjB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,QAAQ,CAAC,KAAK,EACrB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,EAAE,GAAG,cAAc,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,GACpF,GACgB,CACrB,IACG,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,iCAAK,SAAS,EAAE,YAAY,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,aAC5D,iCACE,SAAS,EAAC,UAAU,kBACN,OAAO,EACrB,KAAK,EAAE,EAAE,CAAC,cAAwB,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,aAE3D,WAAW,IAAI,CACd,uBAAC,4CAAmB,IAClB,KAAK,EAAE,QAAQ,CAAC,KAAK,EACrB,GAAG,EAAE,GAAG,EACR,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,aAAa,EAC5B,QAAQ,EAAE,QAAQ,EAClB,eAAe,EAAE,eAAe,EAChC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,GACvC,CACH,EAEA,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,CACnB,uBAAC,4CAAmB,IAClB,IAAI,EAAE,WAAW,EACjB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,QAAQ,CAAC,KAAK,EACrB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,cAAc,GACvB,CACH,CAAC,CAAC,CAAC,CACF,uBAAC,8CAAoB,IACnB,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,cAAc,EAAE,SAAS,IAAI,GAAG,GAC3C,CACH,IACG,EAEL,eAAe,IAAI,CAClB,uBAAC,wCAAiB,IAChB,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EACnC,KAAK,EAAE,QAAQ,CAAC,KAAK,YAErB,uBAAC,4CAAmB,IAClB,IAAI,EAAE,WAAW,EACjB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,QAAQ,CAAC,KAAK,EACrB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE;wBACP,GAAG,cAAc;wBACjB,UAAU,EAAE,KAAK;wBACjB,SAAS,EAAE,GAAG;wBACd,SAAS,EAAE,MAAM;qBAClB,GACD,GACgB,CACrB,IACG,CACP,CAAC;AACJ,CAAC;AAED,MAAM,SAAS,GAAG,CAChB,iCAAK,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,GAAG,EAAC,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,kCAC5I,iCAAM,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,EAAE,EAAC,KAAK,GAAG,EAAA,iCAAM,CAAC,EAAC,yDAAyD,GAAG,IACpH,CACP,CAAC;AACF,MAAM,UAAU,GAAG,CACjB,gCAAK,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,KAAK,EAAC,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,iCAC9I,qCAAU,MAAM,EAAC,gBAAgB,GAAG,GAChC,CACP,CAAC;AACF,MAAM,WAAW,GAAG,CAClB,iCAAK,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,GAAG,EAAC,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,kCAC5I,qCAAU,MAAM,EAAC,gBAAgB,GAAG,EAAA,qCAAU,MAAM,EAAC,gBAAgB,GAAG,EAAA,iCAAM,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,GAAG,EAAA,iCAAM,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,GAAG,IAClJ,CACP,CAAC;AACF,MAAM,QAAQ,GAAG,CACf,iCAAK,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,GAAG,EAAC,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,kCAC5I,iCAAM,CAAC,EAAC,4DAA4D,GAAG,EAAA,qCAAU,MAAM,EAAC,gBAAgB,GAAG,EAAA,iCAAM,CAAC,EAAC,oCAAoC,GAAG,EAAA,iCAAM,CAAC,EAAC,kBAAkB,GAAG,EAAA,iCAAM,CAAC,EAAC,cAAc,GAAG,IAC5M,CACP,CAAC"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ "use client";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.HtmlArtifactCodeView = HtmlArtifactCodeView;
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ const pre = {
7
+ margin: 0,
8
+ padding: "18px 20px",
9
+ overflow: "auto",
10
+ fontSize: 12.5,
11
+ lineHeight: 1.65,
12
+ fontFamily: 'ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace',
13
+ color: "#cdd6e4",
14
+ background: "radial-gradient(1200px 400px at 0% 0%, #11151c 0%, #0b0d12 60%, #090a0e 100%)",
15
+ whiteSpace: "pre",
16
+ tabSize: 2,
17
+ boxShadow: "inset 0 1px 0 rgba(255,255,255,0.04)",
18
+ };
19
+ /** Read-only source view of the artifact HTML. */
20
+ function HtmlArtifactCodeView({ html, maxHeight = 900, }) {
21
+ return ((0, jsx_runtime_1.jsx)("pre", { style: { ...pre, maxHeight }, children: (0, jsx_runtime_1.jsx)("code", { children: html }) }));
22
+ }
23
+ //# sourceMappingURL=HtmlArtifactCodeView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HtmlArtifactCodeView.js","sourceRoot":"","sources":["../../src/iframe/HtmlArtifactCodeView.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;AA0Bb,oDASC;;AA1BD,MAAM,GAAG,GAAwB;IAC/B,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,WAAW;IACpB,QAAQ,EAAE,MAAM;IAChB,QAAQ,EAAE,IAAI;IACd,UAAU,EAAE,IAAI;IAChB,UAAU,EACR,wFAAwF;IAC1F,KAAK,EAAE,SAAS;IAChB,UAAU,EACR,+EAA+E;IACjF,UAAU,EAAE,KAAK;IACjB,OAAO,EAAE,CAAC;IACV,SAAS,EAAE,sCAAsC;CAClD,CAAC;AAEF,kDAAkD;AAClD,SAAgB,oBAAoB,CAAC,EACnC,IAAI,EACJ,SAAS,GAAG,GAAG,GACW;IAC1B,OAAO,CACL,gCAAK,KAAK,EAAE,EAAE,GAAG,GAAG,EAAE,SAAS,EAAE,YAC/B,2CAAO,IAAI,GAAQ,GACf,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+ "use client";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.HtmlArtifactModal = HtmlArtifactModal;
38
+ const jsx_runtime_1 = require("react/jsx-runtime");
39
+ const React = __importStar(require("react"));
40
+ const styles_js_1 = require("./styles.js");
41
+ const DEVICES = [
42
+ {
43
+ id: "mobile",
44
+ label: "Mobile",
45
+ width: 390,
46
+ icon: ((0, jsx_runtime_1.jsxs)("svg", { width: "15", height: "15", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [(0, jsx_runtime_1.jsx)("rect", { x: "7", y: "3", width: "10", height: "18", rx: "2" }), (0, jsx_runtime_1.jsx)("line", { x1: "11", y1: "18", x2: "13", y2: "18" })] })),
47
+ },
48
+ {
49
+ id: "tablet",
50
+ label: "Tablet",
51
+ width: 834,
52
+ icon: ((0, jsx_runtime_1.jsxs)("svg", { width: "15", height: "15", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [(0, jsx_runtime_1.jsx)("rect", { x: "4", y: "3", width: "16", height: "18", rx: "2" }), (0, jsx_runtime_1.jsx)("line", { x1: "11", y1: "18", x2: "13", y2: "18" })] })),
53
+ },
54
+ {
55
+ id: "desktop",
56
+ label: "Desktop",
57
+ width: null,
58
+ icon: ((0, jsx_runtime_1.jsxs)("svg", { width: "15", height: "15", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [(0, jsx_runtime_1.jsx)("rect", { x: "2", y: "4", width: "20", height: "13", rx: "2" }), (0, jsx_runtime_1.jsx)("line", { x1: "8", y1: "21", x2: "16", y2: "21" }), (0, jsx_runtime_1.jsx)("line", { x1: "12", y1: "17", x2: "12", y2: "21" })] })),
59
+ },
60
+ ];
61
+ /**
62
+ * Premium fullscreen viewer with a responsive testbench: switch the artifact
63
+ * between phone / tablet / desktop widths (its own media queries then react —
64
+ * navs collapse to burgers, grids reflow), and an "invert" view that flips
65
+ * light↔dark (hue-preserving) so a transparent, light-on-dark camouflage
66
+ * artifact is crystal-clear on a light surface too.
67
+ */
68
+ function HtmlArtifactModal({ open, onClose, title, children }) {
69
+ (0, styles_js_1.useArtifactStyles)();
70
+ const [device, setDevice] = React.useState("desktop");
71
+ const [inverted, setInverted] = React.useState(false);
72
+ React.useEffect(() => {
73
+ if (!open)
74
+ return;
75
+ const onKey = (e) => {
76
+ if (e.key === "Escape")
77
+ onClose();
78
+ };
79
+ document.addEventListener("keydown", onKey);
80
+ const prevOverflow = document.body.style.overflow;
81
+ document.body.style.overflow = "hidden";
82
+ return () => {
83
+ document.removeEventListener("keydown", onKey);
84
+ document.body.style.overflow = prevOverflow;
85
+ };
86
+ }, [open, onClose]);
87
+ if (!open)
88
+ return null;
89
+ const width = DEVICES.find((d) => d.id === device)?.width ?? null;
90
+ return ((0, jsx_runtime_1.jsx)("div", { className: "aha-scope", role: "dialog", "aria-modal": "true", "aria-label": title ?? "Artifact", onClick: onClose, style: {
91
+ position: "fixed",
92
+ inset: 0,
93
+ zIndex: 2147483000,
94
+ display: "flex",
95
+ flexDirection: "column",
96
+ padding: "clamp(8px, 3vw, 44px)",
97
+ background: "radial-gradient(120% 120% at 50% 0%, rgba(10,10,14,.55), rgba(10,10,14,.78))",
98
+ backdropFilter: "blur(8px)",
99
+ animation: "aha-fade .2s ease both",
100
+ }, children: (0, jsx_runtime_1.jsxs)("div", { onClick: (e) => e.stopPropagation(), className: "aha-card", style: {
101
+ ["--aha-radius"]: "18px",
102
+ display: "flex",
103
+ flexDirection: "column",
104
+ flex: 1,
105
+ minHeight: 0,
106
+ margin: "0 auto",
107
+ width: "100%",
108
+ maxWidth: 1280,
109
+ }, children: [(0, jsx_runtime_1.jsxs)("div", { className: "aha-toolbar", children: [(0, jsx_runtime_1.jsxs)("span", { className: "aha-dots", "aria-hidden": true, children: [(0, jsx_runtime_1.jsx)("span", { className: "aha-dot", style: { background: "#ff5f57" } }), (0, jsx_runtime_1.jsx)("span", { className: "aha-dot", style: { background: "#febc2e" } }), (0, jsx_runtime_1.jsx)("span", { className: "aha-dot", style: { background: "#28c840" } })] }), (0, jsx_runtime_1.jsx)("strong", { className: "aha-title", children: title ?? "Artifact" }), (0, jsx_runtime_1.jsx)("div", { style: { flex: 1 } }), (0, jsx_runtime_1.jsx)("div", { className: "aha-seg", role: "tablist", "aria-label": "Preview width", children: DEVICES.map((d) => ((0, jsx_runtime_1.jsxs)("button", { type: "button", role: "tab", "aria-selected": device === d.id, "data-active": device === d.id, onClick: () => setDevice(d.id), title: d.label, style: { display: "inline-flex", alignItems: "center", gap: 6 }, children: [d.icon, (0, jsx_runtime_1.jsx)("span", { style: { fontSize: 12 }, children: d.label })] }, d.id))) }), (0, jsx_runtime_1.jsx)("button", { type: "button", className: "aha-iconbtn", onClick: () => setInverted((v) => !v), title: inverted ? "Normal colors" : "Invert (light view)", "aria-label": "Invert colors", "data-active": inverted, style: inverted ? { background: "var(--aha-hover)", color: "var(--aha-fg)" } : undefined, children: (0, jsx_runtime_1.jsxs)("svg", { width: "15", height: "15", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [(0, jsx_runtime_1.jsx)("circle", { cx: "12", cy: "12", r: "9" }), (0, jsx_runtime_1.jsx)("path", { d: "M12 3a9 9 0 0 0 0 18z", fill: "currentColor", stroke: "none" })] }) }), (0, jsx_runtime_1.jsx)("button", { type: "button", className: "aha-iconbtn", onClick: onClose, "aria-label": "Close", style: { fontSize: 18 }, children: "\u00D7" })] }), (0, jsx_runtime_1.jsx)("div", { style: {
110
+ flex: 1,
111
+ minHeight: 0,
112
+ overflow: "auto",
113
+ display: "flex",
114
+ justifyContent: "center",
115
+ padding: width ? "clamp(12px,2vw,28px)" : 0,
116
+ background: inverted
117
+ ? "#ffffff"
118
+ : "repeating-linear-gradient(45deg, rgba(255,255,255,0.015) 0 10px, transparent 10px 20px)",
119
+ transition: "background .25s ease",
120
+ }, children: (0, jsx_runtime_1.jsx)("div", { style: {
121
+ width: width ?? "100%",
122
+ maxWidth: "100%",
123
+ flex: width ? "0 0 auto" : "1 1 auto",
124
+ minHeight: 0,
125
+ alignSelf: "stretch",
126
+ borderRadius: width ? 16 : 0,
127
+ overflow: "hidden",
128
+ boxShadow: width ? "0 20px 60px -20px rgba(0,0,0,.6)" : "none",
129
+ // Hue-preserving light/dark flip — light-on-dark artifacts become
130
+ // dark-on-light without scrambling brand hues.
131
+ filter: inverted ? "invert(1) hue-rotate(180deg)" : "none",
132
+ transition: "width .3s cubic-bezier(.4,0,.2,1)",
133
+ }, children: children }) })] }) }));
134
+ }
135
+ //# sourceMappingURL=HtmlArtifactModal.js.map