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,34 @@
1
+ import type { HtmlArtifactPreviewOptions } from "../types/client.js";
2
+ import type { ArtifactTheme } from "../types/artifact.js";
3
+ /**
4
+ * Render a host {@link ArtifactTheme} into a `<style>` block exposing its values
5
+ * as CSS custom properties inside the iframe, plus sensible base color/font so
6
+ * artifacts inherit the host look. Background is intentionally left transparent
7
+ * (the host surface shows through — essential for seamless mode).
8
+ */
9
+ export declare function themeToCss(theme: ArtifactTheme): string;
10
+ export interface BuildSrcDocOptions {
11
+ sanitize?: boolean;
12
+ seamless?: boolean;
13
+ /** Force the document + any single full-page wrapper transparent (camouflage). */
14
+ camouflage?: boolean;
15
+ /** Host theme injected as CSS variables + base color/font into the iframe. */
16
+ theme?: ArtifactTheme;
17
+ sanitizeOptions?: Pick<HtmlArtifactPreviewOptions, "allowForms" | "allowInlineStyles" | "allowStyleTags" | "allowSvg" | "allowExternalFonts">;
18
+ }
19
+ /**
20
+ * Produce the final `srcDoc` string for the preview iframe: sanitized (by
21
+ * default), wrapped into a complete document if needed, with seamless base
22
+ * styles and `<base target="_blank">` so any links open in a new tab.
23
+ */
24
+ export declare function buildSrcDoc(rawHtml: string, options?: BuildSrcDocOptions): string;
25
+ /**
26
+ * Resolve the sandbox attribute. An explicit `sandbox` wins; otherwise we build
27
+ * a minimal token set from the flags. Forbidden tokens (notably `allow-scripts`)
28
+ * are stripped no matter what.
29
+ */
30
+ export declare function resolveSandbox(options: {
31
+ sandbox?: string;
32
+ allowForms?: boolean;
33
+ }): string;
34
+ //# sourceMappingURL=iframeSrcDoc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iframeSrcDoc.d.ts","sourceRoot":"","sources":["../../src/iframe/iframeSrcDoc.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAkB1D;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAsBvD;AAwKD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kFAAkF;IAClF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,8EAA8E;IAC9E,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,eAAe,CAAC,EAAE,IAAI,CACpB,0BAA0B,EACxB,YAAY,GACZ,mBAAmB,GACnB,gBAAgB,GAChB,UAAU,GACV,oBAAoB,CACvB,CAAC;CACH;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,kBAAuB,GAC/B,MAAM,CAsBR;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,GAAG,MAAM,CAUT"}
@@ -0,0 +1,236 @@
1
+ import { sanitizeHtml } from "../sanitizer/sanitizeHtml.js";
2
+ import { cleanArtifactHtml } from "../artifacts/artifactEnvelope.js";
3
+ import { DEFAULT_SANDBOX, FORBIDDEN_SANDBOX_TOKENS } from "../constants/sandbox.js";
4
+ /**
5
+ * Minimal reset injected for the framed (pure artifact) path: margin/box-sizing
6
+ * only. It must NOT force a background — a standalone artifact owns its own
7
+ * background (often set inline on <html>/<body>), and an !important transparent
8
+ * rule here would override it and reveal the card surface (a white sheet in
9
+ * light mode). Camouflage transparency is handled separately by
10
+ * {@link inlineCamouflageHtml}.
11
+ */
12
+ const SEAMLESS_BASE = `<style>html,body{margin:0;padding:0;}*{box-sizing:border-box;}</style>`;
13
+ const LIGHT_COLOR = /(?:#fff(?:fff)?\b|#f[0-9a-f]{2}f[0-9a-f]{2}f[0-9a-f]{2}\b|#(?:f8fafc|f9fafb|f8f9fa|f5f5f5|f4f4f5|f3f4f6|f1f5f9|fafafa|fcfcfd|fdfdfd)\b|white\b|rgba?\(\s*(?:23[0-9]|24[0-9]|25[0-5])\s*,\s*(?:23[0-9]|24[0-9]|25[0-5])\s*,\s*(?:23[0-9]|24[0-9]|25[0-5])(?:\s*,\s*(?:0?\.[5-9]\d*|1(?:\.0+)?))?\s*\)|hsla?\(\s*(?:0|[12]?\d{1,2}|3[0-5]\d|360)\s*,\s*(?:0|[1-9]\d?|100)%\s*,\s*(?:8[8-9]|9\d|100)%[^)]*\))/i;
14
+ const LIGHT_GRADIENT = /(?:linear|radial|conic)-gradient\([^;}]*(?:#fff(?:fff)?\b|white\b|rgba?\(\s*255\s*,\s*255\s*,\s*255)[^;}]*\)/i;
15
+ /**
16
+ * Render a host {@link ArtifactTheme} into a `<style>` block exposing its values
17
+ * as CSS custom properties inside the iframe, plus sensible base color/font so
18
+ * artifacts inherit the host look. Background is intentionally left transparent
19
+ * (the host surface shows through — essential for seamless mode).
20
+ */
21
+ export function themeToCss(theme) {
22
+ const vars = [];
23
+ const push = (name, value) => {
24
+ if (value)
25
+ vars.push(`${name}:${value}`);
26
+ };
27
+ push("--background", theme.background);
28
+ push("--foreground", theme.foreground);
29
+ push("--primary", theme.primary);
30
+ push("--accent", theme.accent);
31
+ push("--muted", theme.muted);
32
+ push("--border", theme.border);
33
+ push("--surface", theme.surface);
34
+ push("--radius", theme.radius);
35
+ push("--font", theme.fontFamily);
36
+ const root = vars.length ? `:root{${vars.join(";")}}` : "";
37
+ const base = [];
38
+ if (theme.foreground)
39
+ base.push("color:var(--foreground)");
40
+ if (theme.fontFamily)
41
+ base.push("font-family:var(--font)");
42
+ const baseRule = base.length ? `html,body{${base.join(";")}}` : "";
43
+ if (!root && !baseRule)
44
+ return "";
45
+ return `<style>${root}${baseRule}</style>`;
46
+ }
47
+ /** True if the string already looks like a full HTML document. */
48
+ function isFullDocument(html) {
49
+ return /<html[\s>]/i.test(html) || /<!DOCTYPE/i.test(html);
50
+ }
51
+ function injectIntoHead(doc, injection) {
52
+ if (/<\/head\s*>/i.test(doc)) {
53
+ return doc.replace(/<\/head\s*>/i, `${injection}</head>`);
54
+ }
55
+ if (/<head[^>]*>/i.test(doc)) {
56
+ return doc.replace(/<head([^>]*)>/i, `<head$1>${injection}`);
57
+ }
58
+ if (/<html[^>]*>/i.test(doc)) {
59
+ return doc.replace(/<html([^>]*)>/i, `<html$1><head>${injection}</head>`);
60
+ }
61
+ return injection + doc;
62
+ }
63
+ function themeToInlineVars(theme) {
64
+ if (!theme)
65
+ return "";
66
+ const vars = [];
67
+ const push = (name, value) => {
68
+ if (value)
69
+ vars.push(`${name}:${value}`);
70
+ };
71
+ push("--background", theme.background);
72
+ push("--foreground", theme.foreground);
73
+ push("--primary", theme.primary);
74
+ push("--accent", theme.accent);
75
+ push("--muted", theme.muted);
76
+ push("--border", theme.border);
77
+ push("--surface", theme.surface);
78
+ push("--radius", theme.radius);
79
+ push("--font", theme.fontFamily);
80
+ return vars.join(";");
81
+ }
82
+ function normalizeCamouflageHtml(html) {
83
+ return html
84
+ .replace(/<style\b([^>]*)>([\s\S]*?)<\/style>/gi, (_tag, attrs, css) => {
85
+ return `<style${attrs}>${normalizeCamouflageCss(css)}</style>`;
86
+ })
87
+ .replace(/\sstyle\s*=\s*(["'])([\s\S]*?)\1/gi, (_attr, quote, css) => {
88
+ const normalized = normalizeInlineCamouflageStyle(css);
89
+ return normalized ? ` style=${quote}${normalized}${quote}` : "";
90
+ });
91
+ }
92
+ const CAMOUFLAGE_TAGS = /<(html|body|main|section|article|aside|header|footer|nav|form|div)\b([^>]*)>/gi;
93
+ function appendInlineStyle(attrs, style) {
94
+ if (!style)
95
+ return attrs;
96
+ const styleAttr = attrs.match(/\sstyle\s*=\s*(["'])([\s\S]*?)\1/i);
97
+ if (!styleAttr)
98
+ return `${attrs} style="${style}"`;
99
+ const quote = styleAttr[1] ?? `"`;
100
+ const existing = styleAttr[2]?.trim();
101
+ const merged = existing ? `${existing};${style}` : style;
102
+ return attrs.replace(/\sstyle\s*=\s*(["'])([\s\S]*?)\1/i, ` style=${quote}${merged}${quote}`);
103
+ }
104
+ function inlineCamouflageHtml(html, theme) {
105
+ const themeVars = themeToInlineVars(theme);
106
+ const rootStyle = [
107
+ themeVars,
108
+ "margin:0!important",
109
+ "padding:0!important",
110
+ "background:transparent!important",
111
+ "background-color:transparent!important",
112
+ "background-image:none!important",
113
+ "color-scheme:normal!important",
114
+ "box-sizing:border-box",
115
+ "color:var(--foreground,#f4f4f8)!important",
116
+ theme?.fontFamily ? "font-family:var(--font)!important" : "",
117
+ ]
118
+ .filter(Boolean)
119
+ .join(";");
120
+ const bodyStyle = [
121
+ "margin:0!important",
122
+ "padding:0!important",
123
+ "background:transparent!important",
124
+ "background-color:transparent!important",
125
+ "background-image:none!important",
126
+ "box-sizing:border-box",
127
+ "color:var(--foreground,#f4f4f8)!important",
128
+ theme?.fontFamily ? "font-family:var(--font)!important" : "",
129
+ ]
130
+ .filter(Boolean)
131
+ .join(";");
132
+ const blockStyle = [
133
+ "background-color:transparent!important",
134
+ "background-image:none!important",
135
+ "box-sizing:border-box",
136
+ "color:var(--foreground,#f4f4f8)!important",
137
+ "border-color:var(--border,rgba(255,255,255,0.12))!important",
138
+ ].join(";");
139
+ return html.replace(CAMOUFLAGE_TAGS, (tag, name, attrs) => {
140
+ const lowerName = name.toLowerCase();
141
+ if (lowerName === "html")
142
+ return `<${name}${appendInlineStyle(attrs, rootStyle)}>`;
143
+ if (lowerName === "body")
144
+ return `<${name}${appendInlineStyle(attrs, bodyStyle)}>`;
145
+ return `<${name}${appendInlineStyle(attrs, blockStyle)}>`;
146
+ });
147
+ }
148
+ function normalizeInlineCamouflageStyle(style) {
149
+ return style
150
+ .split(";")
151
+ .map((declaration) => normalizeCamouflageDeclaration(declaration))
152
+ .filter(Boolean)
153
+ .join(";");
154
+ }
155
+ function normalizeCamouflageCss(css) {
156
+ return css
157
+ .replace(/([^{}]+)\{([^{}]*)\}/g, (rule, selector, body) => {
158
+ const normalizedBody = body
159
+ .split(";")
160
+ .map((declaration) => normalizeCamouflageDeclaration(declaration, /\b(html|body)\b/i.test(selector)))
161
+ .filter(Boolean)
162
+ .join(";");
163
+ return normalizedBody ? `${selector}{${normalizedBody}}` : rule;
164
+ });
165
+ }
166
+ function normalizeCamouflageDeclaration(declaration, forceTransparent = false) {
167
+ const trimmed = declaration.trim();
168
+ if (!trimmed)
169
+ return "";
170
+ const match = trimmed.match(/^(-?[\w-]+)\s*:\s*([\s\S]+)$/);
171
+ if (!match)
172
+ return trimmed;
173
+ const property = match[1]?.toLowerCase() ?? "";
174
+ const value = match[2] ?? "";
175
+ const important = /!important/i.test(value) ? " !important" : "";
176
+ const cleanValue = value.replace(/!important/gi, "").trim();
177
+ if (property === "background-image" && (forceTransparent || LIGHT_GRADIENT.test(cleanValue) || LIGHT_COLOR.test(cleanValue))) {
178
+ return `${property}:none${important}`;
179
+ }
180
+ if (property.startsWith("--") && LIGHT_COLOR.test(cleanValue)) {
181
+ return `${property}:transparent`;
182
+ }
183
+ if (property === "background" || property === "background-color") {
184
+ if (forceTransparent)
185
+ return `${property}:transparent${important}`;
186
+ if (LIGHT_COLOR.test(cleanValue) || LIGHT_GRADIENT.test(cleanValue)) {
187
+ return `${property}:transparent${important}`;
188
+ }
189
+ }
190
+ if (property === "color" && LIGHT_COLOR.test(cleanValue)) {
191
+ return `${property}:var(--foreground,#f4f4f8)${important}`;
192
+ }
193
+ return trimmed;
194
+ }
195
+ /**
196
+ * Produce the final `srcDoc` string for the preview iframe: sanitized (by
197
+ * default), wrapped into a complete document if needed, with seamless base
198
+ * styles and `<base target="_blank">` so any links open in a new tab.
199
+ */
200
+ export function buildSrcDoc(rawHtml, options = {}) {
201
+ const { sanitize = true, seamless = true, camouflage = false, theme, sanitizeOptions } = options;
202
+ let html = cleanArtifactHtml(rawHtml ?? "");
203
+ if (sanitize) {
204
+ html = sanitizeHtml(html, { ...sanitizeOptions, allowScripts: false }).html;
205
+ }
206
+ if (camouflage) {
207
+ html = normalizeCamouflageHtml(html);
208
+ }
209
+ const themeStyles = theme && !camouflage ? themeToCss(theme) : "";
210
+ const injection = `<base target="_blank" />${seamless && !camouflage ? SEAMLESS_BASE : ""}${themeStyles}`;
211
+ let doc;
212
+ if (isFullDocument(html)) {
213
+ doc = injectIntoHead(html, injection);
214
+ }
215
+ else {
216
+ doc = `<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" />${injection}</head><body>${html}</body></html>`;
217
+ }
218
+ return camouflage ? inlineCamouflageHtml(doc, theme) : doc;
219
+ }
220
+ /**
221
+ * Resolve the sandbox attribute. An explicit `sandbox` wins; otherwise we build
222
+ * a minimal token set from the flags. Forbidden tokens (notably `allow-scripts`)
223
+ * are stripped no matter what.
224
+ */
225
+ export function resolveSandbox(options) {
226
+ const explicit = options.sandbox;
227
+ if (explicit !== undefined) {
228
+ return explicit
229
+ .split(/\s+/)
230
+ .filter(Boolean)
231
+ .filter((t) => !FORBIDDEN_SANDBOX_TOKENS.includes(t))
232
+ .join(" ");
233
+ }
234
+ return options.allowForms === false ? "" : DEFAULT_SANDBOX;
235
+ }
236
+ //# sourceMappingURL=iframeSrcDoc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iframeSrcDoc.js","sourceRoot":"","sources":["../../src/iframe/iframeSrcDoc.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ export { HtmlArtifactCard } from "./HtmlArtifactCard.js";
2
+ export { HtmlArtifactPreview } from "./HtmlArtifactPreview.js";
3
+ export { HtmlArtifactModal } from "./HtmlArtifactModal.js";
4
+ export { HtmlArtifactToolbar } from "./HtmlArtifactToolbar.js";
5
+ export { HtmlArtifactCodeView } from "./HtmlArtifactCodeView.js";
6
+ export { buildSrcDoc, resolveSandbox } from "./iframeSrcDoc.js";
7
+ export { useIframeAutoSize } from "./iframeSizing.js";
8
+ export { useArtifactStyles, ARTIFACT_CSS } from "./styles.js";
9
+ export type { HtmlArtifactToolbarProps } from "./HtmlArtifactToolbar.js";
10
+ export type { HtmlArtifactPreviewProps } from "./HtmlArtifactPreview.js";
11
+ export type { HtmlArtifactModalProps } from "./HtmlArtifactModal.js";
12
+ export type { HtmlArtifactCodeViewProps } from "./HtmlArtifactCodeView.js";
13
+ export type { BuildSrcDocOptions } from "./iframeSrcDoc.js";
14
+ export type { AutoSizeOptions } from "./iframeSizing.js";
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/iframe/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE9D,YAAY,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACzE,YAAY,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACzE,YAAY,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACrE,YAAY,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAC3E,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,9 @@
1
+ export { HtmlArtifactCard } from "./HtmlArtifactCard.js";
2
+ export { HtmlArtifactPreview } from "./HtmlArtifactPreview.js";
3
+ export { HtmlArtifactModal } from "./HtmlArtifactModal.js";
4
+ export { HtmlArtifactToolbar } from "./HtmlArtifactToolbar.js";
5
+ export { HtmlArtifactCodeView } from "./HtmlArtifactCodeView.js";
6
+ export { buildSrcDoc, resolveSandbox } from "./iframeSrcDoc.js";
7
+ export { useIframeAutoSize } from "./iframeSizing.js";
8
+ export { useArtifactStyles, ARTIFACT_CSS } from "./styles.js";
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/iframe/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Self-contained, premium chrome styles for the artifact card. Injected once
3
+ * into <head> so components can use hover/focus/dark states without depending
4
+ * on the host app's CSS. Uses the CSS `light-dark()` function (the card sets
5
+ * `color-scheme: light dark`) so it adapts to the OS theme automatically.
6
+ */
7
+ export declare const ARTIFACT_CSS = "\n.aha-scope{\n color-scheme: light dark;\n --aha-bg: light-dark(#fbfbfc, #0c0c0f);\n --aha-elev: light-dark(#ffffff, #161619);\n --aha-fg: light-dark(#15161a, #f4f4f6);\n --aha-muted: light-dark(#6b7280, #9aa0ab);\n --aha-faint: light-dark(#9ca3af, #6b7280);\n --aha-hairline: light-dark(rgba(0,0,0,.07), rgba(255,255,255,.08));\n --aha-ring: light-dark(oklch(0 0 0 / .08), oklch(1 0 0 / .11));\n --aha-hover: light-dark(rgba(0,0,0,.05), rgba(255,255,255,.07));\n --aha-accent: light-dark(#3b3bff, #8aa0ff);\n font-family: ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", sans-serif;\n -webkit-font-smoothing: antialiased;\n}\n\n/* The premium ring + border + layered shadow treatment (no flat white box). */\n.aha-card{\n position: relative;\n border-radius: var(--aha-radius, 22px);\n background: var(--aha-bg);\n color: var(--aha-fg);\n overflow: hidden;\n box-shadow:\n 0 0 0 1px var(--aha-ring),\n light-dark(oklch(0 0 0 / .04), oklch(0 0 0 / .20)) 0px 2px 2px -1px,\n light-dark(oklch(0 0 0 / .035), oklch(0 0 0 / .22)) 0px 10px 20px -6px,\n light-dark(oklch(0 0 0 / .05), oklch(0 0 0 / .35)) 0px 30px 60px -18px;\n transition: box-shadow .25s ease, transform .25s ease;\n}\n.aha-card[data-variant=\"glass\"]{\n background: light-dark(rgba(255,255,255,.72), rgba(22,22,26,.66));\n backdrop-filter: blur(20px) saturate(140%);\n}\n\n.aha-toolbar{\n display:flex; align-items:center; gap:10px;\n padding: 9px 10px 9px 14px;\n background: light-dark(rgba(252,252,253,.82), rgba(20,20,24,.7));\n backdrop-filter: blur(12px);\n border-bottom: 1px solid var(--aha-hairline);\n position: relative; z-index: 2;\n}\n.aha-dots{ display:inline-flex; gap:6px; margin-right:4px; }\n.aha-dot{ width:11px; height:11px; border-radius:50%; }\n.aha-title{\n font-size:13px; font-weight:600; letter-spacing:-0.01em;\n color: var(--aha-fg);\n white-space:nowrap; overflow:hidden; text-overflow:ellipsis;\n min-width:0; flex: 0 1 auto;\n}\n.aha-stream-dot{\n width:7px;height:7px;border-radius:50%;flex:none;\n background:#22c55e; box-shadow:0 0 0 0 rgba(34,197,94,.55);\n animation: aha-pulse 1.5s infinite;\n}\n\n.aha-seg{\n display:inline-flex; padding:3px; gap:2px; border-radius:11px;\n background: light-dark(rgba(0,0,0,.05), rgba(255,255,255,.06));\n box-shadow: inset 0 0 0 1px var(--aha-ring);\n}\n.aha-seg button{\n appearance:none; border:none; cursor:pointer;\n font-size:12px; font-weight:600; letter-spacing:-0.01em;\n padding:5px 13px; border-radius:8px; color: var(--aha-muted);\n background:transparent; transition: all .15s ease;\n}\n.aha-seg button[data-active=\"true\"]{\n color: var(--aha-fg);\n background: var(--aha-elev);\n box-shadow: 0 1px 2px light-dark(rgba(0,0,0,.10), rgba(0,0,0,.4)), 0 0 0 .5px var(--aha-ring);\n}\n\n.aha-iconbtn{\n display:inline-flex; align-items:center; justify-content:center;\n width:32px; height:32px; border-radius:999px; flex:none;\n border:none; cursor:pointer; padding:0;\n color: var(--aha-muted); background:transparent;\n transition: background .15s ease, color .15s ease, transform .1s ease;\n}\n.aha-iconbtn:hover{ background: var(--aha-hover); color: var(--aha-fg); }\n.aha-iconbtn:active{ transform: scale(.94); }\n\n/* Seamless (\"camouflage\") presentation: chromeless, transparent, inline. The\n action row stays invisible until hover so the surface reads as native UI. */\n.aha-seamless{ position:relative; }\n.aha-seamless-actions{\n position:absolute; top:8px; right:8px; z-index:4;\n display:flex; gap:4px; padding:3px; border-radius:999px;\n background: color-mix(in srgb, var(--aha-bg) 70%, transparent);\n border:1px solid var(--aha-border);\n backdrop-filter: blur(8px);\n opacity:0; transform: translateY(-2px);\n transition: opacity .18s ease, transform .18s ease;\n}\n.aha-seamless:hover .aha-seamless-actions,\n.aha-seamless:focus-within .aha-seamless-actions{ opacity:1; transform: translateY(0); }\n\n/* Streaming progress shimmer along the top edge of the preview. */\n.aha-progress{\n position:absolute; top:0; left:0; right:0; height:2px; z-index:3;\n background: linear-gradient(90deg, transparent, var(--aha-accent), transparent);\n background-size: 40% 100%;\n animation: aha-progress 1.1s linear infinite;\n}\n\n.aha-frame{ display:block; width:100%; border:none; background:transparent; }\n.aha-frame[data-fade=\"in\"]{ animation: aha-fade .45s ease both; }\n\n.aha-skel{\n display:grid; gap:14px; padding:26px;\n background: light-dark(linear-gradient(180deg,#fcfcfd,#f4f5f7), linear-gradient(180deg,#121215,#0d0d10));\n}\n.aha-skel .row{\n height:16px; border-radius:8px;\n background: light-dark(\n linear-gradient(90deg, rgba(0,0,0,.05) 25%, rgba(0,0,0,.10) 37%, rgba(0,0,0,.05) 63%),\n linear-gradient(90deg, rgba(255,255,255,.05) 25%, rgba(255,255,255,.10) 37%, rgba(255,255,255,.05) 63%));\n background-size: 400% 100%;\n animation: aha-shimmer 1.4s ease infinite;\n opacity:0; animation-fill-mode: both;\n}\n/* Stagger the skeleton in so it reads as a layout being built up. */\n.aha-skel .row:nth-child(1){ width:42%; animation-delay:0s,.0s; }\n.aha-skel .row:nth-child(2){ width:88%; }\n.aha-skel .row:nth-child(3){ width:74%; }\n.aha-skel .row:nth-child(4){ height:130px; }\n.aha-skel .row:nth-child(5){ width:60%; }\n.aha-skel .row:nth-child(6){ width:80%; }\n.aha-skel .row{ animation: aha-shimmer 1.4s ease infinite, aha-rise .5s ease both; }\n.aha-skel .row:nth-child(2){ animation-delay: 0s, .07s; }\n.aha-skel .row:nth-child(3){ animation-delay: 0s, .14s; }\n.aha-skel .row:nth-child(4){ animation-delay: 0s, .21s; }\n.aha-skel .row:nth-child(5){ animation-delay: 0s, .28s; }\n.aha-skel .row:nth-child(6){ animation-delay: 0s, .35s; }\n\n.aha-overlay{\n display:flex; align-items:center; justify-content:center; text-align:center;\n padding:24px; color: var(--aha-muted); font-size:13px;\n background: light-dark(rgba(255,255,255,.82), rgba(12,12,15,.82));\n backdrop-filter: blur(3px);\n}\n\n@keyframes aha-pulse{0%{box-shadow:0 0 0 0 rgba(34,197,94,.5)}70%{box-shadow:0 0 0 6px rgba(34,197,94,0)}100%{box-shadow:0 0 0 0 rgba(34,197,94,0)}}\n@keyframes aha-shimmer{0%{background-position:100% 0}100%{background-position:-100% 0}}\n@keyframes aha-progress{0%{background-position:120% 0}100%{background-position:-20% 0}}\n@keyframes aha-fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}\n@keyframes aha-rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}\n@media (prefers-reduced-motion: reduce){\n .aha-frame[data-fade=\"in\"], .aha-skel .row, .aha-progress, .aha-stream-dot{ animation: none !important; }\n .aha-skel .row{ opacity:1; }\n}\n";
8
+ /** Inject the artifact stylesheet once per document. */
9
+ export declare function useArtifactStyles(): void;
10
+ //# sourceMappingURL=styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/iframe/styles.ts"],"names":[],"mappings":"AAMA;;;;;GAKG;AACH,eAAO,MAAM,YAAY,giNAyJxB,CAAC;AAIF,wDAAwD;AACxD,wBAAgB,iBAAiB,IAAI,IAAI,CAaxC"}
@@ -0,0 +1,181 @@
1
+ "use client";
2
+ import * as React from "react";
3
+ const STYLE_ID = "aha-artifact-styles";
4
+ /**
5
+ * Self-contained, premium chrome styles for the artifact card. Injected once
6
+ * into <head> so components can use hover/focus/dark states without depending
7
+ * on the host app's CSS. Uses the CSS `light-dark()` function (the card sets
8
+ * `color-scheme: light dark`) so it adapts to the OS theme automatically.
9
+ */
10
+ export const ARTIFACT_CSS = `
11
+ .aha-scope{
12
+ color-scheme: light dark;
13
+ --aha-bg: light-dark(#fbfbfc, #0c0c0f);
14
+ --aha-elev: light-dark(#ffffff, #161619);
15
+ --aha-fg: light-dark(#15161a, #f4f4f6);
16
+ --aha-muted: light-dark(#6b7280, #9aa0ab);
17
+ --aha-faint: light-dark(#9ca3af, #6b7280);
18
+ --aha-hairline: light-dark(rgba(0,0,0,.07), rgba(255,255,255,.08));
19
+ --aha-ring: light-dark(oklch(0 0 0 / .08), oklch(1 0 0 / .11));
20
+ --aha-hover: light-dark(rgba(0,0,0,.05), rgba(255,255,255,.07));
21
+ --aha-accent: light-dark(#3b3bff, #8aa0ff);
22
+ font-family: ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
23
+ -webkit-font-smoothing: antialiased;
24
+ }
25
+
26
+ /* The premium ring + border + layered shadow treatment (no flat white box). */
27
+ .aha-card{
28
+ position: relative;
29
+ border-radius: var(--aha-radius, 22px);
30
+ background: var(--aha-bg);
31
+ color: var(--aha-fg);
32
+ overflow: hidden;
33
+ box-shadow:
34
+ 0 0 0 1px var(--aha-ring),
35
+ light-dark(oklch(0 0 0 / .04), oklch(0 0 0 / .20)) 0px 2px 2px -1px,
36
+ light-dark(oklch(0 0 0 / .035), oklch(0 0 0 / .22)) 0px 10px 20px -6px,
37
+ light-dark(oklch(0 0 0 / .05), oklch(0 0 0 / .35)) 0px 30px 60px -18px;
38
+ transition: box-shadow .25s ease, transform .25s ease;
39
+ }
40
+ .aha-card[data-variant="glass"]{
41
+ background: light-dark(rgba(255,255,255,.72), rgba(22,22,26,.66));
42
+ backdrop-filter: blur(20px) saturate(140%);
43
+ }
44
+
45
+ .aha-toolbar{
46
+ display:flex; align-items:center; gap:10px;
47
+ padding: 9px 10px 9px 14px;
48
+ background: light-dark(rgba(252,252,253,.82), rgba(20,20,24,.7));
49
+ backdrop-filter: blur(12px);
50
+ border-bottom: 1px solid var(--aha-hairline);
51
+ position: relative; z-index: 2;
52
+ }
53
+ .aha-dots{ display:inline-flex; gap:6px; margin-right:4px; }
54
+ .aha-dot{ width:11px; height:11px; border-radius:50%; }
55
+ .aha-title{
56
+ font-size:13px; font-weight:600; letter-spacing:-0.01em;
57
+ color: var(--aha-fg);
58
+ white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
59
+ min-width:0; flex: 0 1 auto;
60
+ }
61
+ .aha-stream-dot{
62
+ width:7px;height:7px;border-radius:50%;flex:none;
63
+ background:#22c55e; box-shadow:0 0 0 0 rgba(34,197,94,.55);
64
+ animation: aha-pulse 1.5s infinite;
65
+ }
66
+
67
+ .aha-seg{
68
+ display:inline-flex; padding:3px; gap:2px; border-radius:11px;
69
+ background: light-dark(rgba(0,0,0,.05), rgba(255,255,255,.06));
70
+ box-shadow: inset 0 0 0 1px var(--aha-ring);
71
+ }
72
+ .aha-seg button{
73
+ appearance:none; border:none; cursor:pointer;
74
+ font-size:12px; font-weight:600; letter-spacing:-0.01em;
75
+ padding:5px 13px; border-radius:8px; color: var(--aha-muted);
76
+ background:transparent; transition: all .15s ease;
77
+ }
78
+ .aha-seg button[data-active="true"]{
79
+ color: var(--aha-fg);
80
+ background: var(--aha-elev);
81
+ box-shadow: 0 1px 2px light-dark(rgba(0,0,0,.10), rgba(0,0,0,.4)), 0 0 0 .5px var(--aha-ring);
82
+ }
83
+
84
+ .aha-iconbtn{
85
+ display:inline-flex; align-items:center; justify-content:center;
86
+ width:32px; height:32px; border-radius:999px; flex:none;
87
+ border:none; cursor:pointer; padding:0;
88
+ color: var(--aha-muted); background:transparent;
89
+ transition: background .15s ease, color .15s ease, transform .1s ease;
90
+ }
91
+ .aha-iconbtn:hover{ background: var(--aha-hover); color: var(--aha-fg); }
92
+ .aha-iconbtn:active{ transform: scale(.94); }
93
+
94
+ /* Seamless ("camouflage") presentation: chromeless, transparent, inline. The
95
+ action row stays invisible until hover so the surface reads as native UI. */
96
+ .aha-seamless{ position:relative; }
97
+ .aha-seamless-actions{
98
+ position:absolute; top:8px; right:8px; z-index:4;
99
+ display:flex; gap:4px; padding:3px; border-radius:999px;
100
+ background: color-mix(in srgb, var(--aha-bg) 70%, transparent);
101
+ border:1px solid var(--aha-border);
102
+ backdrop-filter: blur(8px);
103
+ opacity:0; transform: translateY(-2px);
104
+ transition: opacity .18s ease, transform .18s ease;
105
+ }
106
+ .aha-seamless:hover .aha-seamless-actions,
107
+ .aha-seamless:focus-within .aha-seamless-actions{ opacity:1; transform: translateY(0); }
108
+
109
+ /* Streaming progress shimmer along the top edge of the preview. */
110
+ .aha-progress{
111
+ position:absolute; top:0; left:0; right:0; height:2px; z-index:3;
112
+ background: linear-gradient(90deg, transparent, var(--aha-accent), transparent);
113
+ background-size: 40% 100%;
114
+ animation: aha-progress 1.1s linear infinite;
115
+ }
116
+
117
+ .aha-frame{ display:block; width:100%; border:none; background:transparent; }
118
+ .aha-frame[data-fade="in"]{ animation: aha-fade .45s ease both; }
119
+
120
+ .aha-skel{
121
+ display:grid; gap:14px; padding:26px;
122
+ background: light-dark(linear-gradient(180deg,#fcfcfd,#f4f5f7), linear-gradient(180deg,#121215,#0d0d10));
123
+ }
124
+ .aha-skel .row{
125
+ height:16px; border-radius:8px;
126
+ background: light-dark(
127
+ linear-gradient(90deg, rgba(0,0,0,.05) 25%, rgba(0,0,0,.10) 37%, rgba(0,0,0,.05) 63%),
128
+ linear-gradient(90deg, rgba(255,255,255,.05) 25%, rgba(255,255,255,.10) 37%, rgba(255,255,255,.05) 63%));
129
+ background-size: 400% 100%;
130
+ animation: aha-shimmer 1.4s ease infinite;
131
+ opacity:0; animation-fill-mode: both;
132
+ }
133
+ /* Stagger the skeleton in so it reads as a layout being built up. */
134
+ .aha-skel .row:nth-child(1){ width:42%; animation-delay:0s,.0s; }
135
+ .aha-skel .row:nth-child(2){ width:88%; }
136
+ .aha-skel .row:nth-child(3){ width:74%; }
137
+ .aha-skel .row:nth-child(4){ height:130px; }
138
+ .aha-skel .row:nth-child(5){ width:60%; }
139
+ .aha-skel .row:nth-child(6){ width:80%; }
140
+ .aha-skel .row{ animation: aha-shimmer 1.4s ease infinite, aha-rise .5s ease both; }
141
+ .aha-skel .row:nth-child(2){ animation-delay: 0s, .07s; }
142
+ .aha-skel .row:nth-child(3){ animation-delay: 0s, .14s; }
143
+ .aha-skel .row:nth-child(4){ animation-delay: 0s, .21s; }
144
+ .aha-skel .row:nth-child(5){ animation-delay: 0s, .28s; }
145
+ .aha-skel .row:nth-child(6){ animation-delay: 0s, .35s; }
146
+
147
+ .aha-overlay{
148
+ display:flex; align-items:center; justify-content:center; text-align:center;
149
+ padding:24px; color: var(--aha-muted); font-size:13px;
150
+ background: light-dark(rgba(255,255,255,.82), rgba(12,12,15,.82));
151
+ backdrop-filter: blur(3px);
152
+ }
153
+
154
+ @keyframes aha-pulse{0%{box-shadow:0 0 0 0 rgba(34,197,94,.5)}70%{box-shadow:0 0 0 6px rgba(34,197,94,0)}100%{box-shadow:0 0 0 0 rgba(34,197,94,0)}}
155
+ @keyframes aha-shimmer{0%{background-position:100% 0}100%{background-position:-100% 0}}
156
+ @keyframes aha-progress{0%{background-position:120% 0}100%{background-position:-20% 0}}
157
+ @keyframes aha-fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
158
+ @keyframes aha-rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
159
+ @media (prefers-reduced-motion: reduce){
160
+ .aha-frame[data-fade="in"], .aha-skel .row, .aha-progress, .aha-stream-dot{ animation: none !important; }
161
+ .aha-skel .row{ opacity:1; }
162
+ }
163
+ `;
164
+ let injected = false;
165
+ /** Inject the artifact stylesheet once per document. */
166
+ export function useArtifactStyles() {
167
+ React.useEffect(() => {
168
+ if (injected || typeof document === "undefined")
169
+ return;
170
+ if (document.getElementById(STYLE_ID)) {
171
+ injected = true;
172
+ return;
173
+ }
174
+ const el = document.createElement("style");
175
+ el.id = STYLE_ID;
176
+ el.textContent = ARTIFACT_CSS;
177
+ document.head.appendChild(el);
178
+ injected = true;
179
+ }, []);
180
+ }
181
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/iframe/styles.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,QAAQ,GAAG,qBAAqB,CAAC;AAEvC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyJ3B,CAAC;AAEF,IAAI,QAAQ,GAAG,KAAK,CAAC;AAErB,wDAAwD;AACxD,MAAM,UAAU,iBAAiB;IAC/B,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,WAAW;YAAE,OAAO;QACxD,IAAI,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtC,QAAQ,GAAG,IAAI,CAAC;YAChB,OAAO;QACT,CAAC;QACD,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC3C,EAAE,CAAC,EAAE,GAAG,QAAQ,CAAC;QACjB,EAAE,CAAC,WAAW,GAAG,YAAY,CAAC;QAC9B,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC9B,QAAQ,GAAG,IAAI,CAAC;IAClB,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Root entry — isomorphic exports only (no React, no AI SDK import), safe to
3
+ * pull into any environment. Use the `./server` and `./client` subpaths for
4
+ * the AI-SDK and React surfaces respectively.
5
+ */
6
+ export * from "./types/index.js";
7
+ export * from "./stream/index.js";
8
+ export * from "./sanitizer/index.js";
9
+ export * from "./artifacts/index.js";
10
+ export * from "./constants/index.js";
11
+ export * from "./utils/index.js";
12
+ export * from "./errors/index.js";
13
+ export * from "./prompts/index.js";
14
+ export { classifyByRules, type RuleClassification } from "./classifier/rules.js";
15
+ export { CLASSIFIER_SYSTEM_PROMPT, buildClassifierUserPrompt, } from "./classifier/classifierPrompt.js";
16
+ export { CircuitBreaker, MemoryCircuitStore, defaultCircuitStore, } from "./circuit-breaker/index.js";
17
+ export { createMessageId, createArtifactId, MessageLifecycle, ArtifactLifecycle, createArtifactStream, createArtifactResponse, SSE_HEADERS, type Emit, type ArtifactStreamProducer, } from "./core/index.js";
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AAInC,OAAO,EAAE,eAAe,EAAE,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACjF,OAAO,EACL,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,kCAAkC,CAAC;AAG1C,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,sBAAsB,EACtB,WAAW,EACX,KAAK,IAAI,EACT,KAAK,sBAAsB,GAC5B,MAAM,iBAAiB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Root entry — isomorphic exports only (no React, no AI SDK import), safe to
3
+ * pull into any environment. Use the `./server` and `./client` subpaths for
4
+ * the AI-SDK and React surfaces respectively.
5
+ */
6
+ export * from "./types/index.js";
7
+ export * from "./stream/index.js";
8
+ export * from "./sanitizer/index.js";
9
+ export * from "./artifacts/index.js";
10
+ export * from "./constants/index.js";
11
+ export * from "./utils/index.js";
12
+ export * from "./errors/index.js";
13
+ export * from "./prompts/index.js";
14
+ // Heuristic classifier + prompt are dependency-free; the model-based
15
+ // `classifyMode` lives behind the `./server` entry (it imports the AI SDK).
16
+ export { classifyByRules } from "./classifier/rules.js";
17
+ export { CLASSIFIER_SYSTEM_PROMPT, buildClassifierUserPrompt, } from "./classifier/classifierPrompt.js";
18
+ // Circuit breaker is isomorphic.
19
+ export { CircuitBreaker, MemoryCircuitStore, defaultCircuitStore, } from "./circuit-breaker/index.js";
20
+ // Core stream/response helpers (framework-agnostic).
21
+ export { createMessageId, createArtifactId, MessageLifecycle, ArtifactLifecycle, createArtifactStream, createArtifactResponse, SSE_HEADERS, } from "./core/index.js";
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AAEnC,qEAAqE;AACrE,4EAA4E;AAC5E,OAAO,EAAE,eAAe,EAA2B,MAAM,uBAAuB,CAAC;AACjF,OAAO,EACL,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,kCAAkC,CAAC;AAE1C,iCAAiC;AACjC,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,4BAA4B,CAAC;AAEpC,qDAAqD;AACrD,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,sBAAsB,EACtB,WAAW,GAGZ,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { ArtifactPresentation, ArtifactStyleProfile, ArtifactTheme } from "../types/artifact.js";
2
+ export interface HtmlPromptOptions {
3
+ styleProfile?: ArtifactStyleProfile;
4
+ allowExternalFonts?: boolean;
5
+ allowForms?: boolean;
6
+ /** Host theme to match exactly (colours, radius, font). */
7
+ theme?: ArtifactTheme;
8
+ /** `seamless` artifacts must be transparent and chromeless to blend inline. */
9
+ presentation?: ArtifactPresentation;
10
+ }
11
+ /** Build the HTML-artifact system prompt, tuned by style profile and flags. */
12
+ export declare function buildHtmlArtifactPrompt(options?: HtmlPromptOptions): string;
13
+ /** Default prompt with no style profile, system fonts, forms allowed. */
14
+ export declare const HTML_ARTIFACT_SYSTEM_PROMPT: string;
15
+ //# sourceMappingURL=htmlArtifactPrompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"htmlArtifactPrompt.d.ts","sourceRoot":"","sources":["../../src/prompts/htmlArtifactPrompt.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,EACd,MAAM,sBAAsB,CAAC;AAE9B,MAAM,WAAW,iBAAiB;IAChC,YAAY,CAAC,EAAE,oBAAoB,CAAC;IACpC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,2DAA2D;IAC3D,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,+EAA+E;IAC/E,YAAY,CAAC,EAAE,oBAAoB,CAAC;CACrC;AAsND,+EAA+E;AAC/E,wBAAgB,uBAAuB,CAAC,OAAO,GAAE,iBAAsB,GAAG,MAAM,CAqC/E;AAED,yEAAyE;AACzE,eAAO,MAAM,2BAA2B,QAA4B,CAAC"}