netra-artifacts 0.1.0-alpha.1 → 0.1.0-alpha.10

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 (175) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/README.md +14 -9
  3. package/dist/artifacts/htmlArtifact.d.ts +1 -0
  4. package/dist/artifacts/htmlArtifact.d.ts.map +1 -1
  5. package/dist/artifacts/htmlArtifact.js +1 -0
  6. package/dist/artifacts/htmlArtifact.js.map +1 -1
  7. package/dist/classifier/classifierPrompt.d.ts +1 -1
  8. package/dist/classifier/classifierPrompt.d.ts.map +1 -1
  9. package/dist/classifier/classifierPrompt.js +3 -2
  10. package/dist/classifier/classifierPrompt.js.map +1 -1
  11. package/dist/classifier/rules.d.ts.map +1 -1
  12. package/dist/classifier/rules.js +3 -0
  13. package/dist/classifier/rules.js.map +1 -1
  14. package/dist/client/ArtifactChat.d.ts +7 -0
  15. package/dist/client/ArtifactChat.d.ts.map +1 -1
  16. package/dist/client/ArtifactChat.js +29 -2
  17. package/dist/client/ArtifactChat.js.map +1 -1
  18. package/dist/client/ArtifactMessage.d.ts.map +1 -1
  19. package/dist/client/ArtifactMessage.js +1 -1
  20. package/dist/client/ArtifactMessage.js.map +1 -1
  21. package/dist/client/index.d.ts +1 -0
  22. package/dist/client/index.d.ts.map +1 -1
  23. package/dist/client/index.js +1 -0
  24. package/dist/client/index.js.map +1 -1
  25. package/dist/client/starterPrompts.d.ts +28 -0
  26. package/dist/client/starterPrompts.d.ts.map +1 -0
  27. package/dist/client/starterPrompts.js +100 -0
  28. package/dist/client/starterPrompts.js.map +1 -0
  29. package/dist/client/useArtifactStream.d.ts.map +1 -1
  30. package/dist/client/useArtifactStream.js +14 -2
  31. package/dist/client/useArtifactStream.js.map +1 -1
  32. package/dist/constants/defaults.d.ts.map +1 -1
  33. package/dist/constants/defaults.js +4 -0
  34. package/dist/constants/defaults.js.map +1 -1
  35. package/dist/constants/index.d.ts +1 -0
  36. package/dist/constants/index.d.ts.map +1 -1
  37. package/dist/constants/index.js +1 -0
  38. package/dist/constants/index.js.map +1 -1
  39. package/dist/constants/sandbox.d.ts +5 -7
  40. package/dist/constants/sandbox.d.ts.map +1 -1
  41. package/dist/constants/sandbox.js +5 -8
  42. package/dist/constants/sandbox.js.map +1 -1
  43. package/dist/constants/trustedCdnHosts.d.ts +27 -0
  44. package/dist/constants/trustedCdnHosts.d.ts.map +1 -0
  45. package/dist/constants/trustedCdnHosts.js +58 -0
  46. package/dist/constants/trustedCdnHosts.js.map +1 -0
  47. package/dist/core/lifecycle.d.ts +4 -1
  48. package/dist/core/lifecycle.d.ts.map +1 -1
  49. package/dist/core/lifecycle.js +4 -2
  50. package/dist/core/lifecycle.js.map +1 -1
  51. package/dist/iframe/HtmlArtifactCard.d.ts.map +1 -1
  52. package/dist/iframe/HtmlArtifactCard.js +2 -1
  53. package/dist/iframe/HtmlArtifactCard.js.map +1 -1
  54. package/dist/iframe/HtmlArtifactPreview.d.ts.map +1 -1
  55. package/dist/iframe/HtmlArtifactPreview.js +122 -11
  56. package/dist/iframe/HtmlArtifactPreview.js.map +1 -1
  57. package/dist/iframe/iframeSizing.d.ts +2 -1
  58. package/dist/iframe/iframeSizing.d.ts.map +1 -1
  59. package/dist/iframe/iframeSizing.js +21 -1
  60. package/dist/iframe/iframeSizing.js.map +1 -1
  61. package/dist/iframe/iframeSrcDoc.d.ts +10 -4
  62. package/dist/iframe/iframeSrcDoc.d.ts.map +1 -1
  63. package/dist/iframe/iframeSrcDoc.js +98 -13
  64. package/dist/iframe/iframeSrcDoc.js.map +1 -1
  65. package/dist/prompts/htmlArtifactPrompt.d.ts +8 -0
  66. package/dist/prompts/htmlArtifactPrompt.d.ts.map +1 -1
  67. package/dist/prompts/htmlArtifactPrompt.js +169 -65
  68. package/dist/prompts/htmlArtifactPrompt.js.map +1 -1
  69. package/dist/prompts/index.d.ts +1 -0
  70. package/dist/prompts/index.d.ts.map +1 -1
  71. package/dist/prompts/index.js +1 -0
  72. package/dist/prompts/index.js.map +1 -1
  73. package/dist/prompts/threejsGamePrompt.d.ts +17 -0
  74. package/dist/prompts/threejsGamePrompt.d.ts.map +1 -0
  75. package/dist/prompts/threejsGamePrompt.js +233 -0
  76. package/dist/prompts/threejsGamePrompt.js.map +1 -0
  77. package/dist/sanitizer/dangerousPatterns.d.ts +2 -1
  78. package/dist/sanitizer/dangerousPatterns.d.ts.map +1 -1
  79. package/dist/sanitizer/dangerousPatterns.js +2 -1
  80. package/dist/sanitizer/dangerousPatterns.js.map +1 -1
  81. package/dist/sanitizer/sanitizeConfig.d.ts.map +1 -1
  82. package/dist/sanitizer/sanitizeConfig.js +1 -4
  83. package/dist/sanitizer/sanitizeConfig.js.map +1 -1
  84. package/dist/sanitizer/sanitizeHtml.d.ts.map +1 -1
  85. package/dist/sanitizer/sanitizeHtml.js +251 -4
  86. package/dist/sanitizer/sanitizeHtml.js.map +1 -1
  87. package/dist/server/config.d.ts.map +1 -1
  88. package/dist/server/config.js +12 -1
  89. package/dist/server/config.js.map +1 -1
  90. package/dist/server/createArtifactStreamResponse.js +3 -0
  91. package/dist/server/createArtifactStreamResponse.js.map +1 -1
  92. package/dist/server/createHtmlArtifactStream.d.ts +2 -0
  93. package/dist/server/createHtmlArtifactStream.d.ts.map +1 -1
  94. package/dist/server/createHtmlArtifactStream.js +4 -1
  95. package/dist/server/createHtmlArtifactStream.js.map +1 -1
  96. package/dist/stream/buffering.d.ts +1 -1
  97. package/dist/stream/buffering.d.ts.map +1 -1
  98. package/dist/stream/buffering.js +6 -1
  99. package/dist/stream/buffering.js.map +1 -1
  100. package/dist/stream/events.d.ts +1 -1
  101. package/dist/stream/events.d.ts.map +1 -1
  102. package/dist/stream/events.js +2 -1
  103. package/dist/stream/events.js.map +1 -1
  104. package/dist/stream/predictiveHtmlParser.d.ts.map +1 -1
  105. package/dist/stream/predictiveHtmlParser.js +13 -3
  106. package/dist/stream/predictiveHtmlParser.js.map +1 -1
  107. package/dist/types/artifact.d.ts +6 -0
  108. package/dist/types/artifact.d.ts.map +1 -1
  109. package/dist/types/client.d.ts +11 -4
  110. package/dist/types/client.d.ts.map +1 -1
  111. package/dist/types/config.d.ts +17 -3
  112. package/dist/types/config.d.ts.map +1 -1
  113. package/dist/types/server.d.ts +14 -1
  114. package/dist/types/server.d.ts.map +1 -1
  115. package/dist/types/stream.d.ts +2 -0
  116. package/dist/types/stream.d.ts.map +1 -1
  117. package/dist-cjs/artifacts/htmlArtifact.js +1 -0
  118. package/dist-cjs/artifacts/htmlArtifact.js.map +1 -1
  119. package/dist-cjs/classifier/classifierPrompt.js +3 -2
  120. package/dist-cjs/classifier/classifierPrompt.js.map +1 -1
  121. package/dist-cjs/classifier/rules.js +3 -0
  122. package/dist-cjs/classifier/rules.js.map +1 -1
  123. package/dist-cjs/client/ArtifactChat.js +29 -2
  124. package/dist-cjs/client/ArtifactChat.js.map +1 -1
  125. package/dist-cjs/client/ArtifactMessage.js +1 -1
  126. package/dist-cjs/client/ArtifactMessage.js.map +1 -1
  127. package/dist-cjs/client/index.js +3 -1
  128. package/dist-cjs/client/index.js.map +1 -1
  129. package/dist-cjs/client/starterPrompts.js +103 -0
  130. package/dist-cjs/client/starterPrompts.js.map +1 -0
  131. package/dist-cjs/client/useArtifactStream.js +14 -2
  132. package/dist-cjs/client/useArtifactStream.js.map +1 -1
  133. package/dist-cjs/constants/defaults.js +4 -0
  134. package/dist-cjs/constants/defaults.js.map +1 -1
  135. package/dist-cjs/constants/index.js +1 -0
  136. package/dist-cjs/constants/index.js.map +1 -1
  137. package/dist-cjs/constants/sandbox.js +5 -8
  138. package/dist-cjs/constants/sandbox.js.map +1 -1
  139. package/dist-cjs/constants/trustedCdnHosts.js +63 -0
  140. package/dist-cjs/constants/trustedCdnHosts.js.map +1 -0
  141. package/dist-cjs/core/lifecycle.js +4 -2
  142. package/dist-cjs/core/lifecycle.js.map +1 -1
  143. package/dist-cjs/iframe/HtmlArtifactCard.js +2 -1
  144. package/dist-cjs/iframe/HtmlArtifactCard.js.map +1 -1
  145. package/dist-cjs/iframe/HtmlArtifactPreview.js +122 -11
  146. package/dist-cjs/iframe/HtmlArtifactPreview.js.map +1 -1
  147. package/dist-cjs/iframe/iframeSizing.js +21 -1
  148. package/dist-cjs/iframe/iframeSizing.js.map +1 -1
  149. package/dist-cjs/iframe/iframeSrcDoc.js +97 -12
  150. package/dist-cjs/iframe/iframeSrcDoc.js.map +1 -1
  151. package/dist-cjs/prompts/htmlArtifactPrompt.js +169 -65
  152. package/dist-cjs/prompts/htmlArtifactPrompt.js.map +1 -1
  153. package/dist-cjs/prompts/index.js +1 -0
  154. package/dist-cjs/prompts/index.js.map +1 -1
  155. package/dist-cjs/prompts/threejsGamePrompt.js +237 -0
  156. package/dist-cjs/prompts/threejsGamePrompt.js.map +1 -0
  157. package/dist-cjs/sanitizer/dangerousPatterns.js +2 -1
  158. package/dist-cjs/sanitizer/dangerousPatterns.js.map +1 -1
  159. package/dist-cjs/sanitizer/sanitizeConfig.js +1 -4
  160. package/dist-cjs/sanitizer/sanitizeConfig.js.map +1 -1
  161. package/dist-cjs/sanitizer/sanitizeHtml.js +251 -4
  162. package/dist-cjs/sanitizer/sanitizeHtml.js.map +1 -1
  163. package/dist-cjs/server/config.js +12 -1
  164. package/dist-cjs/server/config.js.map +1 -1
  165. package/dist-cjs/server/createArtifactStreamResponse.js +3 -0
  166. package/dist-cjs/server/createArtifactStreamResponse.js.map +1 -1
  167. package/dist-cjs/server/createHtmlArtifactStream.js +4 -1
  168. package/dist-cjs/server/createHtmlArtifactStream.js.map +1 -1
  169. package/dist-cjs/stream/buffering.js +6 -1
  170. package/dist-cjs/stream/buffering.js.map +1 -1
  171. package/dist-cjs/stream/events.js +2 -1
  172. package/dist-cjs/stream/events.js.map +1 -1
  173. package/dist-cjs/stream/predictiveHtmlParser.js +13 -3
  174. package/dist-cjs/stream/predictiveHtmlParser.js.map +1 -1
  175. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -5,8 +5,32 @@ adheres to [Semantic Versioning](https://semver.org/).
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ### Added
9
+
10
+ - **Starter prompt templates.** `STARTER_PROMPTS` (exported from
11
+ `netra-artifacts/client`) ships 8 prebuilt templates — each a short show
12
+ `label` plus a rich `prompt` actually sent to the model — covering an HTML
13
+ artifact, markdown answer, three.js game, generative-UI-from-JSON, image-rich
14
+ page, YouTube video page, pricing page, and sign-up form. `ArtifactChat`
15
+ renders them as chips below the composer; each carries per-request `body`
16
+ overrides (`mode`/`game`/`allowVideoEmbeds`/…) now merged by `sendMessage`'s
17
+ new second argument. Pass `starterPrompts={[]}` to hide them.
18
+ - **Single-file three.js games.** New `allowModuleImports` sanitize/preview flag
19
+ keeps a `<script type="importmap">` whose targets resolve to a trusted,
20
+ version-pinned ESM CDN (`esm.sh`, `cdn.jsdelivr.net`, `unpkg.com`,
21
+ `cdn.skypack.dev`), so a self-contained game can `import … from "three"` with
22
+ no build step. The game frame runs in the isolated `allow-scripts` sandbox
23
+ (no `allow-same-origin`) with a defense-in-depth CSP pinning script/connect to
24
+ those CDNs. New `game` server option switches the HTML prompt to a dedicated
25
+ three.js game builder (pinned import map + module + fixed-timestep loop) and
26
+ implies `allowModuleImports`. New `threejs-games` agent skill + single-file
27
+ setup guidance in `threejs-fundamentals`.
28
+
8
29
  ### Changed
9
30
 
31
+ - Trusted YouTube embeds and inline JavaScript are now explicit opt-ins. The
32
+ script-capable iframe sandbox omits `allow-same-origin`, and an internal
33
+ postMessage resize bridge keeps isolated video/script previews auto-sized.
10
34
  - HTML-artifact prompt reworked to a **hybrid styling model**: one small shared
11
35
  `<style>` design system (box-sizing reset + fluid `clamp()` type/space scale +
12
36
  element defaults + `.wrap/.stack/.grid/.row/.card/.scroll-x` utility classes)
package/README.md CHANGED
@@ -41,14 +41,17 @@ const google = createGoogleGenerativeAI({
41
41
  });
42
42
 
43
43
  export async function POST(req: Request) {
44
- const { messages } = await req.json();
44
+ // Spread the body so per-request fields from the client (mode, game,
45
+ // allowVideoEmbeds, allowModuleImports) — e.g. those sent by the built-in
46
+ // starter prompts — are forwarded into the options.
47
+ const body = await req.json();
45
48
  const model = google("gemini-2.5-flash");
46
49
 
47
50
  return createArtifactStreamResponse({
48
- messages,
51
+ ...body,
49
52
  generateTextStream: (args) => streamText({ model, ...args }).textStream,
50
53
  generateText: async (args) => (await generateText({ model, ...args })).text,
51
- mode: "auto",
54
+ mode: body.mode ?? "auto",
52
55
  snapshotIntervalMs: 0,
53
56
  allowExternalFonts: true,
54
57
  });
@@ -98,6 +101,7 @@ export async function POST(req: Request) {
98
101
  allowStyleTags: true,
99
102
  allowSvg: true,
100
103
  allowExternalFonts: false,
104
+ allowVideoEmbeds: false,
101
105
  },
102
106
  snapshotIntervalMs: 0,
103
107
  },
@@ -212,17 +216,18 @@ type ArtifactStreamEvent =
212
216
 
213
217
  ## Security
214
218
 
215
- Artifacts are static HTML/CSS:
219
+ Artifacts are static HTML/CSS by default:
216
220
 
217
- - Scripts are stripped
221
+ - Scripts are stripped unless `allowScripts` is explicitly enabled
218
222
  - Event handler attributes are stripped
219
223
  - Dangerous URLs are stripped
220
- - Iframes, embeds, object tags, and refresh meta tags are stripped
221
- - The preview iframe never receives `allow-scripts`
224
+ - Iframes, embeds, object tags, and refresh meta tags are stripped unless `allowVideoEmbeds` keeps a normalized trusted YouTube iframe
225
+ - `<script type="importmap">` is stripped unless `allowModuleImports` is set, and then only mappings that resolve to a trusted, version-pinned ESM CDN survive — enabling single-file ESM games (e.g. three.js) with a defense-in-depth CSP on the frame
226
+ - The preview iframe receives `allow-scripts` only for opt-in inline scripts, trusted video embeds, or module-import games, and that script-capable path omits `allow-same-origin`
222
227
  - `allowExternalFonts` only keeps approved Google Fonts hosts
223
228
 
224
- Use Netra for safe previews of generated static HTML, not for executing
225
- generated application logic.
229
+ Use Netra's default mode for safe previews of generated static HTML. Opt into
230
+ scripts only for artifacts you are comfortable executing in an isolated iframe.
226
231
 
227
232
  ## Checks
228
233
 
@@ -4,6 +4,7 @@ export declare function createHtmlArtifact(params: {
4
4
  id: string;
5
5
  title?: string;
6
6
  status?: ArtifactStatus;
7
+ camouflage?: boolean;
7
8
  }): HtmlArtifact;
8
9
  /** Immutably apply a partial update, refreshing `updatedAt`. */
9
10
  export declare function updateHtmlArtifact(artifact: HtmlArtifact, patch: Partial<Omit<HtmlArtifact, "id" | "type" | "createdAt">>): HtmlArtifact;
@@ -1 +1 @@
1
- {"version":3,"file":"htmlArtifact.d.ts","sourceRoot":"","sources":["../../src/artifacts/htmlArtifact.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEzE,+DAA+D;AAC/D,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,cAAc,CAAC;CACzB,GAAG,YAAY,CAYf;AAED,gEAAgE;AAChE,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,YAAY,EACtB,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG,MAAM,GAAG,WAAW,CAAC,CAAC,GAC9D,YAAY,CAEd"}
1
+ {"version":3,"file":"htmlArtifact.d.ts","sourceRoot":"","sources":["../../src/artifacts/htmlArtifact.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEzE,+DAA+D;AAC/D,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,GAAG,YAAY,CAaf;AAED,gEAAgE;AAChE,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,YAAY,EACtB,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG,MAAM,GAAG,WAAW,CAAC,CAAC,GAC9D,YAAY,CAEd"}
@@ -8,6 +8,7 @@ export function createHtmlArtifact(params) {
8
8
  type: "html",
9
9
  html: "",
10
10
  snapshot: "",
11
+ camouflage: params.camouflage,
11
12
  status: params.status ?? ARTIFACT_STATUS.STREAMING,
12
13
  createdAt: now,
13
14
  updatedAt: now,
@@ -1 +1 @@
1
- {"version":3,"file":"htmlArtifact.js","sourceRoot":"","sources":["../../src/artifacts/htmlArtifact.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGtD,+DAA+D;AAC/D,MAAM,UAAU,kBAAkB,CAAC,MAIlC;IACC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,mBAAmB;QAC1C,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,EAAE;QACR,QAAQ,EAAE,EAAE;QACZ,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,eAAe,CAAC,SAAS;QAClD,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,GAAG;KACf,CAAC;AACJ,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,kBAAkB,CAChC,QAAsB,EACtB,KAA+D;IAE/D,OAAO,EAAE,GAAG,QAAQ,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;AAC1D,CAAC"}
1
+ {"version":3,"file":"htmlArtifact.js","sourceRoot":"","sources":["../../src/artifacts/htmlArtifact.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGtD,+DAA+D;AAC/D,MAAM,UAAU,kBAAkB,CAAC,MAKlC;IACC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,mBAAmB;QAC1C,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,EAAE;QACR,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,eAAe,CAAC,SAAS;QAClD,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,GAAG;KACf,CAAC;AACJ,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,kBAAkB,CAChC,QAAsB,EACtB,KAA+D;IAE/D,OAAO,EAAE,GAAG,QAAQ,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;AAC1D,CAAC"}
@@ -2,6 +2,6 @@
2
2
  * The classifier prompt. The model must return ONLY JSON of the shape
3
3
  * `{ "mode": "markdown" | "artifact" | "generative_ui", "reason": "short reason" }`.
4
4
  */
5
- export declare const CLASSIFIER_SYSTEM_PROMPT = "You are a routing classifier for an AI assistant that can answer in three ways:\n\n1. \"markdown\" \u2014 a normal text/markdown chat answer.\n2. \"artifact\" \u2014 a standalone, self-contained, STATIC HTML/CSS document rendered in a framed preview card (no JavaScript).\n3. \"generative_ui\" \u2014 a chromeless, transparent, STATIC HTML/CSS UI rendered inline so it blends with the host app (no JavaScript).\n\nDecide which mode best serves the user's most recent request.\n\nChoose \"markdown\" when text is enough:\n- explanations, Q&A, definitions, summaries\n- debugging help, error analysis, code review\n- writing code, functions, queries, scripts\n- system design, architecture, best practices, advice\n- comparisons that read fine as prose or a small table\n- general writing and conversation\n\nChoose \"artifact\" when a visual, standalone document/page adds real value:\n- standalone forms (sign-up, login, contact, survey)\n- landing pages, hero sections, pricing cards, product pages\n- dashboards, stat grids, report/stat visualizations\n- invoices, receipts, certificates, resumes/CVs\n- email/newsletter templates\n- profile/business cards, onboarding screens\n- comparison cards, timelines, funnels, galleries\n- CSS/SVG charts (bar, line, donut, progress) when the user wants a visual\n\nChoose \"generative_ui\" when the user specifically wants UI that should feel native/inline in the host app:\n- generative UI, inline UI, seamless/camouflaged/native UI\n- widgets, components, interface states, UI kits/systems, component variations\n- app/interface prototypes or explorations intended to sit inside the chat surface\n\nBe conservative: if the request is primarily about understanding, reasoning, or code, prefer \"markdown\". Do not pick an HTML mode just because a topic could be visualized \u2014 only when the user actually wants a rendered UI/document.\n\nReturn ONLY minified JSON, no prose, no code fences:\n{\"mode\":\"markdown\"|\"artifact\"|\"generative_ui\",\"reason\":\"short reason\"}";
5
+ export declare const CLASSIFIER_SYSTEM_PROMPT = "You are a routing classifier for an AI assistant that can answer in three ways:\n\n1. \"markdown\" \u2014 a normal text/markdown chat answer.\n2. \"artifact\" \u2014 a standalone, self-contained, STATIC HTML/CSS document rendered in a framed preview card (no JavaScript).\n3. \"generative_ui\" \u2014 a chromeless, transparent, STATIC HTML/CSS UI rendered inline so it blends with the host app (no JavaScript).\n\nDecide which mode best serves the user's most recent request.\n\nChoose \"markdown\" when text is enough:\n- explanations, Q&A, definitions, summaries\n- debugging help, error analysis, code review\n- writing code, functions, queries, scripts\n- system design, architecture, best practices, advice\n- comparisons that read fine as prose or a small table\n- general writing and conversation\n\nChoose \"artifact\" when a visual, standalone document/page adds real value:\n- standalone forms (sign-up, login, contact, survey)\n- landing pages, hero sections, pricing cards, product pages\n- dashboards, stat grids, report/stat visualizations\n- invoices, receipts, certificates, resumes/CVs\n- email/newsletter templates\n- profile/business cards, onboarding screens\n- comparison cards, timelines, funnels, galleries\n- video/youtube player embeds when the user supplies or asks for a video link\n- CSS/SVG charts (bar, line, donut, progress) when the user wants a visual\n\nChoose \"generative_ui\" when the user specifically wants UI that should feel native/inline in the host app:\n- generative UI, inline UI, seamless/camouflaged/native UI\n- widgets, components, interface states, UI kits/systems, component variations\n- app/interface prototypes or explorations intended to sit inside the chat surface\n\nBe conservative: if the request is primarily about understanding, reasoning, or code, prefer \"markdown\". Do not pick an HTML mode just because a topic could be visualized \u2014 only when the user actually wants a rendered UI/document.\n\nReturn ONLY minified JSON, no prose, no code fences:\n{\"mode\":\"markdown\"|\"artifact\"|\"generative_ui\",\"reason\":\"short reason\"}";
6
6
  export declare function buildClassifierUserPrompt(query: string): string;
7
7
  //# sourceMappingURL=classifierPrompt.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"classifierPrompt.d.ts","sourceRoot":"","sources":["../../src/classifier/classifierPrompt.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,wBAAwB,2+DAkCkC,CAAC;AAExE,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/D"}
1
+ {"version":3,"file":"classifierPrompt.d.ts","sourceRoot":"","sources":["../../src/classifier/classifierPrompt.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,wBAAwB,0jEAmCkC,CAAC;AAExE,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/D"}
@@ -25,8 +25,9 @@ Choose "artifact" when a visual, standalone document/page adds real value:
25
25
  - invoices, receipts, certificates, resumes/CVs
26
26
  - email/newsletter templates
27
27
  - profile/business cards, onboarding screens
28
- - comparison cards, timelines, funnels, galleries
29
- - CSS/SVG charts (bar, line, donut, progress) when the user wants a visual
28
+ - comparison cards, timelines, funnels, galleries
29
+ - video/youtube player embeds when the user supplies or asks for a video link
30
+ - CSS/SVG charts (bar, line, donut, progress) when the user wants a visual
30
31
 
31
32
  Choose "generative_ui" when the user specifically wants UI that should feel native/inline in the host app:
32
33
  - generative UI, inline UI, seamless/camouflaged/native UI
@@ -1 +1 @@
1
- {"version":3,"file":"classifierPrompt.js","sourceRoot":"","sources":["../../src/classifier/classifierPrompt.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uEAkC+B,CAAC;AAExE,MAAM,UAAU,yBAAyB,CAAC,KAAa;IACrD,OAAO,gCAAgC,KAAK,qCAAqC,CAAC;AACpF,CAAC"}
1
+ {"version":3,"file":"classifierPrompt.js","sourceRoot":"","sources":["../../src/classifier/classifierPrompt.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uEAmC+B,CAAC;AAExE,MAAM,UAAU,yBAAyB,CAAC,KAAa;IACrD,OAAO,gCAAgC,KAAK,qCAAqC,CAAC;AACpF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/classifier/rules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAC;CACpB;AA6ED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB,CAwCjE"}
1
+ {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/classifier/rules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAC;CACpB;AAgFD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB,CAwCjE"}
@@ -29,6 +29,9 @@ const VISUAL_SIGNALS = [
29
29
  /\bmenu\b.*\b(restaurant|cafe|food)\b/i,
30
30
  /\btimeline\b/i,
31
31
  /\bgallery\b/i,
32
+ /\b(video|youtube)\s*(player|embed|preview|card|page|ui|artifact)\b/i,
33
+ /\b(embed|show|play|render|make|create|build)\b[\s\S]*\b(youtube|video)\b/i,
34
+ /https?:\/\/(?:www\.)?(?:youtube\.com|youtu\.be)\//i,
32
35
  /\b(bar|line|pie|donut|doughnut)\s*chart\b/i,
33
36
  /\b(report|stats?)\s*(visuali[sz]ation|view)\b/i,
34
37
  /\bsign[\s-]?up\s*form\b|\blogin\s*form\b|\bcontact\s*form\b/i,
@@ -1 +1 @@
1
- {"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/classifier/rules.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/classifier/rules.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,17 @@
1
1
  import * as React from "react";
2
+ import { type StarterPrompt } from "./starterPrompts.js";
2
3
  import type { HtmlArtifactCardProps, UseArtifactStreamOptions } from "../types/client.js";
3
4
  export interface ArtifactChatProps extends UseArtifactStreamOptions {
4
5
  placeholder?: string;
5
6
  emptyState?: React.ReactNode;
6
7
  cardProps?: Partial<Omit<HtmlArtifactCardProps, "artifact">>;
7
8
  className?: string;
9
+ /**
10
+ * Template chips shown below the composer. Defaults to {@link STARTER_PROMPTS}.
11
+ * Pass `[]` to hide them. Clicking one sends its detailed prompt with its
12
+ * per-request `body` overrides (mode/game/allowVideoEmbeds/…).
13
+ */
14
+ starterPrompts?: StarterPrompt[];
8
15
  }
9
16
  /**
10
17
  * A batteries-included chat surface: message list, streaming status, and a
@@ -1 +1 @@
1
- {"version":3,"file":"ArtifactChat.d.ts","sourceRoot":"","sources":["../../src/client/ArtifactChat.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAE1F,MAAM,WAAW,iBAAkB,SAAQ,wBAAwB;IACjE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,UAAU,CAAC,CAAC,CAAC;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,2CAgGpD"}
1
+ {"version":3,"file":"ArtifactChat.d.ts","sourceRoot":"","sources":["../../src/client/ArtifactChat.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,KAAK,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAE1F,MAAM,WAAW,iBAAkB,SAAQ,wBAAwB;IACjE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,UAAU,CAAC,CAAC,CAAC;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;CAClC;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,2CA4IpD"}
@@ -3,17 +3,23 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import * as React from "react";
4
4
  import { useArtifactStream } from "./useArtifactStream.js";
5
5
  import { ArtifactMessage } from "./ArtifactMessage.js";
6
+ import { STARTER_PROMPTS } from "./starterPrompts.js";
6
7
  /**
7
8
  * A batteries-included chat surface: message list, streaming status, and a
8
9
  * composer. Drop it in with just an `endpoint` to get the full experience, or
9
10
  * compose `useArtifactStream` + `ArtifactMessage` yourself for custom layouts.
10
11
  */
11
12
  export function ArtifactChat(props) {
12
- const { placeholder = "Ask anything, or describe a UI to generate…", emptyState, cardProps, className, ...streamOptions } = props;
13
+ const { placeholder = "Ask anything, or describe a UI to generate…", emptyState, cardProps, className, starterPrompts = STARTER_PROMPTS, ...streamOptions } = props;
13
14
  const { messages, artifacts, status, sendMessage, stop } = useArtifactStream(streamOptions);
14
15
  const [input, setInput] = React.useState("");
15
16
  const scrollRef = React.useRef(null);
16
17
  const busy = status === "submitted" || status === "streaming";
18
+ const showStarters = !busy && messages.length === 0 && starterPrompts.length > 0;
19
+ const runStarter = (p) => {
20
+ setInput("");
21
+ void sendMessage(p.prompt, p.body);
22
+ };
17
23
  React.useEffect(() => {
18
24
  scrollRef.current?.scrollTo({ top: scrollRef.current.scrollHeight, behavior: "smooth" });
19
25
  }, [messages, artifacts]);
@@ -44,7 +50,28 @@ export function ArtifactChat(props) {
44
50
  fontSize: 14.5,
45
51
  outline: "none",
46
52
  background: "#fff",
47
- } }), busy ? (_jsx("button", { type: "button", onClick: stop, style: btn("#ef4444"), children: "Stop" })) : (_jsx("button", { type: "submit", disabled: !input.trim(), style: btn("#2563eb", !input.trim()), children: "Send" }))] })] }));
53
+ } }), busy ? (_jsx("button", { type: "button", onClick: stop, style: btn("#ef4444"), children: "Stop" })) : (_jsx("button", { type: "submit", disabled: !input.trim(), style: btn("#2563eb", !input.trim()), children: "Send" }))] }), showStarters && (_jsx("div", { role: "list", "aria-label": "Starter prompts", style: {
54
+ display: "flex",
55
+ flexWrap: "wrap",
56
+ gap: 8,
57
+ padding: "0 10px 12px",
58
+ }, children: starterPrompts.map((p) => (_jsxs("button", { type: "button", role: "listitem", onClick: () => runStarter(p), title: p.hint, style: chip(), children: [_jsx("span", { "aria-hidden": "true", style: { fontSize: 15 }, children: p.emoji }), _jsx("span", { style: { fontWeight: 600 }, children: p.label }), _jsxs("span", { style: { color: "#9ca3af", fontWeight: 400 }, children: ["\u00B7 ", p.hint] })] }, p.id))) }))] }));
59
+ }
60
+ function chip() {
61
+ return {
62
+ display: "inline-flex",
63
+ alignItems: "center",
64
+ gap: 7,
65
+ border: "1px solid rgba(0,0,0,0.12)",
66
+ borderRadius: 999,
67
+ padding: "7px 13px",
68
+ fontSize: 13,
69
+ lineHeight: 1.2,
70
+ color: "var(--aha-fg, #1f2430)",
71
+ background: "rgba(0,0,0,0.02)",
72
+ cursor: "pointer",
73
+ whiteSpace: "nowrap",
74
+ };
48
75
  }
49
76
  function btn(bg, disabled = false) {
50
77
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"ArtifactChat.js","sourceRoot":"","sources":["../../src/client/ArtifactChat.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ArtifactChat.js","sourceRoot":"","sources":["../../src/client/ArtifactChat.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ArtifactMessage.d.ts","sourceRoot":"","sources":["../../src/client/ArtifactMessage.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE7E,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,WAAW,CAAC;IACrB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACzC,uCAAuC;IACvC,SAAS,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,UAAU,CAAC,CAAC,CAAC;IAC7D;;;;OAIG;IACH,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;CACvD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,2CAyC1D"}
1
+ {"version":3,"file":"ArtifactMessage.d.ts","sourceRoot":"","sources":["../../src/client/ArtifactMessage.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE7E,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,WAAW,CAAC;IACrB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACzC,uCAAuC;IACvC,SAAS,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,UAAU,CAAC,CAAC,CAAC;IAC7D;;;;OAIG;IACH,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;CACvD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,2CA6C1D"}
@@ -24,6 +24,6 @@ export function ArtifactMessage(props) {
24
24
  }, children: message.content }) }));
25
25
  }
26
26
  return (_jsxs("div", { style: { margin: "10px 0", display: "flex", flexDirection: "column", gap: 12 }, children: [message.content.trim() !== "" &&
27
- (renderMarkdown ? (renderMarkdown(message.content)) : (_jsx(MarkdownMessage, { content: message.content }))), resolved && (_jsx(HtmlArtifactCard, { artifact: resolved, ...cardProps }))] }));
27
+ (renderMarkdown ? (renderMarkdown(message.content)) : (_jsx(MarkdownMessage, { content: message.content }))), resolved && (_jsx(HtmlArtifactCard, { artifact: resolved, ...cardProps, presentation: resolved.camouflage ? "seamless" : cardProps?.presentation }))] }));
28
28
  }
29
29
  //# sourceMappingURL=ArtifactMessage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ArtifactMessage.js","sourceRoot":"","sources":["../../src/client/ArtifactMessage.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAoBjE;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,KAA2B;IACzD,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAC1E,MAAM,QAAQ,GACZ,QAAQ;QACR,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAErE,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC5B,OAAO,CACL,cAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,YAC3E,cACE,KAAK,EAAE;oBACL,QAAQ,EAAE,iBAAiB;oBAC3B,UAAU,EAAE,iCAAiC;oBAC7C,KAAK,EAAE,MAAM;oBACb,OAAO,EAAE,WAAW;oBACpB,YAAY,EAAE,oBAAoB;oBAClC,QAAQ,EAAE,IAAI;oBACd,UAAU,EAAE,GAAG;oBACf,UAAU,EAAE,UAAU;oBACtB,SAAS,EAAE,YAAY;iBACxB,YAEA,OAAO,CAAC,OAAO,GACZ,GACF,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,eAAK,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE,aAChF,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE;gBAC5B,CAAC,cAAc,CAAC,CAAC,CAAC,CAChB,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAChC,CAAC,CAAC,CAAC,CACF,KAAC,eAAe,IAAC,OAAO,EAAE,OAAO,CAAC,OAAO,GAAI,CAC9C,CAAC,EACH,QAAQ,IAAI,CACX,KAAC,gBAAgB,IAAC,QAAQ,EAAE,QAAQ,KAAM,SAAS,GAAI,CACxD,IACG,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"ArtifactMessage.js","sourceRoot":"","sources":["../../src/client/ArtifactMessage.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAoBjE;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,KAA2B;IACzD,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAC1E,MAAM,QAAQ,GACZ,QAAQ;QACR,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAErE,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC5B,OAAO,CACL,cAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,YAC3E,cACE,KAAK,EAAE;oBACL,QAAQ,EAAE,iBAAiB;oBAC3B,UAAU,EAAE,iCAAiC;oBAC7C,KAAK,EAAE,MAAM;oBACb,OAAO,EAAE,WAAW;oBACpB,YAAY,EAAE,oBAAoB;oBAClC,QAAQ,EAAE,IAAI;oBACd,UAAU,EAAE,GAAG;oBACf,UAAU,EAAE,UAAU;oBACtB,SAAS,EAAE,YAAY;iBACxB,YAEA,OAAO,CAAC,OAAO,GACZ,GACF,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,eAAK,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE,aAChF,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE;gBAC5B,CAAC,cAAc,CAAC,CAAC,CAAC,CAChB,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAChC,CAAC,CAAC,CAAC,CACF,KAAC,eAAe,IAAC,OAAO,EAAE,OAAO,CAAC,OAAO,GAAI,CAC9C,CAAC,EACH,QAAQ,IAAI,CACX,KAAC,gBAAgB,IACf,QAAQ,EAAE,QAAQ,KACd,SAAS,EACb,YAAY,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,EAAE,YAAY,GACxE,CACH,IACG,CACP,CAAC;AACJ,CAAC"}
@@ -2,6 +2,7 @@ export { useArtifactStream } from "./useArtifactStream.js";
2
2
  export { ArtifactChat, type ArtifactChatProps } from "./ArtifactChat.js";
3
3
  export { ArtifactMessage, type ArtifactMessageProps } from "./ArtifactMessage.js";
4
4
  export { MarkdownMessage, type MarkdownMessageProps } from "./MarkdownMessage.js";
5
+ export { STARTER_PROMPTS, type StarterPrompt } from "./starterPrompts.js";
5
6
  export { HtmlArtifactCard, HtmlArtifactPreview, HtmlArtifactModal, HtmlArtifactToolbar, HtmlArtifactCodeView, } from "../iframe/index.js";
6
7
  export type { ChatMessage, ArtifactStreamStatus, UseArtifactStreamOptions, UseArtifactStreamReturn, HtmlArtifactCardProps, HtmlArtifactPreviewOptions, } from "../types/client.js";
7
8
  export type { HtmlArtifact, ArtifactTheme, ArtifactPresentation, } from "../types/artifact.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAGlF,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EACV,WAAW,EACX,oBAAoB,EACpB,wBAAwB,EACxB,uBAAuB,EACvB,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,YAAY,EACZ,aAAa,EACb,oBAAoB,GACrB,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAG1E,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EACV,WAAW,EACX,oBAAoB,EACpB,wBAAwB,EACxB,uBAAuB,EACvB,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,YAAY,EACZ,aAAa,EACb,oBAAoB,GACrB,MAAM,sBAAsB,CAAC"}
@@ -3,6 +3,7 @@ export { useArtifactStream } from "./useArtifactStream.js";
3
3
  export { ArtifactChat } from "./ArtifactChat.js";
4
4
  export { ArtifactMessage } from "./ArtifactMessage.js";
5
5
  export { MarkdownMessage } from "./MarkdownMessage.js";
6
+ export { STARTER_PROMPTS } from "./starterPrompts.js";
6
7
  // Re-export the iframe surface for convenience from the client entry.
7
8
  export { HtmlArtifactCard, HtmlArtifactPreview, HtmlArtifactModal, HtmlArtifactToolbar, HtmlArtifactCodeView, } from "../iframe/index.js";
8
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAA0B,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,eAAe,EAA6B,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAE,eAAe,EAA6B,MAAM,sBAAsB,CAAC;AAElF,sEAAsE;AACtE,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAA0B,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,eAAe,EAA6B,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAE,eAAe,EAA6B,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAE,eAAe,EAAsB,MAAM,qBAAqB,CAAC;AAE1E,sEAAsE;AACtE,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Prebuilt starter prompts shown below the composer. Each has a short `label`
3
+ * (the chip the user sees) and a rich `prompt` (the detailed message actually
4
+ * sent to the model). The prompts are written in a natural, human voice —
5
+ * describing the desired RESULT, not implementation — so users never feel they
6
+ * need to know any technical details. `body` carries per-request overrides
7
+ * merged into the POST body by `sendMessage` (e.g. `{ game: true }`).
8
+ *
9
+ * NOTE: for the `body` overrides to take effect, the server route must forward
10
+ * those fields into `createArtifactStreamResponse` options, e.g.:
11
+ * `createArtifactStreamResponse({ ...(await req.json()), generateTextStream })`.
12
+ */
13
+ export interface StarterPrompt {
14
+ /** Stable id. */
15
+ id: string;
16
+ /** Short chip text shown to the user. */
17
+ label: string;
18
+ /** One-line description of what it produces. */
19
+ hint: string;
20
+ /** Leading glyph for the chip. */
21
+ emoji: string;
22
+ /** The full, natural-language message sent to the chat. */
23
+ prompt: string;
24
+ /** Per-request body overrides merged into the POST body for this prompt. */
25
+ body?: Record<string, unknown>;
26
+ }
27
+ export declare const STARTER_PROMPTS: StarterPrompt[];
28
+ //# sourceMappingURL=starterPrompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"starterPrompts.d.ts","sourceRoot":"","sources":["../../src/client/starterPrompts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,aAAa;IAC5B,iBAAiB;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAqCD,eAAO,MAAM,eAAe,EAAE,aAAa,EA6E1C,CAAC"}
@@ -0,0 +1,100 @@
1
+ /** YouTube videos used by the video-embed starter. */
2
+ const VIDEO_URLS = [
3
+ "https://www.youtube.com/embed/dQw4w9WgXcQ?si=O39oVkrE_1PpJrRX",
4
+ "https://www.youtube.com/embed/_e8BFrAPedM?si=L3FxEEFbGARDVAtG",
5
+ "https://www.youtube.com/embed/H7gWCJNPpzk?si=trRfbxLq0ercujsX",
6
+ "https://www.youtube.com/embed/wQs0uhFhMaI?si=iFm1GedCmKw5SsGi",
7
+ "https://www.youtube.com/embed/glXx2r3ePcs?si=1iALmW5BiMPvEpTi",
8
+ ];
9
+ /** Prebuilt generative-UI data payload (kept realistic and complete). */
10
+ const ORDER_JSON = JSON.stringify({
11
+ order: { id: "NX-48217", placed: "2026-05-28T14:02:00Z", status: "out_for_delivery", eta: "2026-05-30T18:00:00Z" },
12
+ customer: { name: "Aria Nakamura", tier: "Gold" },
13
+ shipment: {
14
+ carrier: "Aerolane",
15
+ tracking: "AL93 4471 0028",
16
+ steps: [
17
+ { label: "Ordered", at: "May 28, 2:02 PM", done: true },
18
+ { label: "Packed", at: "May 28, 7:40 PM", done: true },
19
+ { label: "Shipped", at: "May 29, 9:15 AM", done: true },
20
+ { label: "Out for delivery", at: "May 30, 8:10 AM", done: true },
21
+ { label: "Delivered", at: "Est. May 30, 6:00 PM", done: false },
22
+ ],
23
+ },
24
+ items: [
25
+ { name: "Aurora Wireless Headphones", qty: 1, price: 248.0 },
26
+ { name: "USB-C Braided Cable (2m)", qty: 2, price: 19.0 },
27
+ ],
28
+ totals: { subtotal: 286.0, shipping: 0, tax: 22.88, total: 308.88, currency: "USD" },
29
+ }, null, 2);
30
+ export const STARTER_PROMPTS = [
31
+ {
32
+ id: "artifact-dashboard",
33
+ label: "Analytics dashboard",
34
+ hint: "A polished stats dashboard",
35
+ emoji: "📊",
36
+ body: { mode: "artifact" },
37
+ prompt: "I run a small software company and I want a slick analytics dashboard to show off how we're doing. Up top, give me the headline numbers — revenue, active users, churn and monthly recurring revenue — each with a little sense of whether it's going up or down. Underneath, I'd love a big chart of revenue growing over the past year, a breakdown of where our traffic comes from, and a neat table of the latest sign-ups or transactions. Make it look premium and dark, the kind of screen a startup would screenshot and be proud of.",
38
+ },
39
+ {
40
+ id: "markdown-explainer",
41
+ label: "Explain a concept",
42
+ hint: "A clear written explainer",
43
+ emoji: "📝",
44
+ body: { mode: "markdown" },
45
+ prompt: "Explain the difference between Flexbox and CSS Grid like you're patiently teaching a junior developer who's a little confused. Keep it friendly and practical — when should I reach for one over the other? Walk me through each, give me a simple side-by-side comparison, show a tiny example or two, and finish with an easy rule of thumb I'll actually remember.",
46
+ },
47
+ {
48
+ id: "game-runner",
49
+ label: "Make a 3D game",
50
+ hint: "A playable cartoon game",
51
+ emoji: "🎮",
52
+ body: { game: true },
53
+ prompt: "Make me a fun little 3D game I can play right here in the browser. I'm picturing something bright and cartoonish — I control a bouncy little character and zip around a colorful world collecting glowing things while my score climbs and it slowly gets trickier. Give it a cheerful, toy-like look with a soft glow, a friendly start screen, a score counter, and the ability to pause and start over. Make it genuinely fun to mess around with for a minute.",
54
+ },
55
+ {
56
+ id: "genui-order",
57
+ label: "Turn data into a card",
58
+ hint: "Generative UI from your data",
59
+ emoji: "🧩",
60
+ body: { mode: "generative_ui" },
61
+ prompt: "I've got the details of a customer's order and I'd love it turned into a clean, friendly order-tracking card — the kind of thing the customer would see when they check 'where's my stuff'. Show how far along the delivery is, what they bought, and what it all came to, and make it feel calm and reassuring. Here's the order:\n\n```json\n" +
62
+ ORDER_JSON +
63
+ "\n```",
64
+ },
65
+ {
66
+ id: "image-landing",
67
+ label: "Travel landing page",
68
+ hint: "A beautiful homepage",
69
+ emoji: "🖼️",
70
+ body: { mode: "artifact" },
71
+ prompt: "Design a gorgeous homepage for a boutique travel company called Wayfare that plans dreamy, once-in-a-lifetime trips for people. I want a big, beautiful opening image with an inviting headline and a little 'where do you want to go?' search. Below that, show a few featured destinations as elegant cards with photos, a starting price and a rating, then a glowing quote from a happy traveler, and end with a warm invitation to join their list. Make the whole thing feel editorial, warm and high-end — like flipping through a luxury travel magazine.",
72
+ },
73
+ {
74
+ id: "video-gallery",
75
+ label: "Video watch page",
76
+ hint: "A streaming-style page",
77
+ emoji: "▶️",
78
+ body: { mode: "artifact", allowVideoEmbeds: true },
79
+ prompt: "Build me a video watch page like a streaming site. Put one big main video player at the top with its title and the channel underneath, and a list of more videos down the side (or below on a phone) as clickable thumbnails I can play. Use these videos — the first one as the main player and the rest in the 'up next' list:\n" +
80
+ VIDEO_URLS.map((u) => `- ${u}`).join("\n") +
81
+ "\nMake it clean and dark like a real video site.",
82
+ },
83
+ {
84
+ id: "pricing",
85
+ label: "Pricing page",
86
+ hint: "Plans that convert",
87
+ emoji: "💳",
88
+ body: { mode: "artifact" },
89
+ prompt: "I need a pricing page for my app with three plans — a free Starter to get people in the door, a Pro plan that's the one I really want most people to choose, and a bigger Scale plan for serious teams. Show what's included in each, make the Pro one clearly stand out as the popular pick, let people switch between paying monthly or yearly, and pop a short FAQ at the bottom for the usual questions. Make it modern and trustworthy so people feel confident hitting subscribe.",
90
+ },
91
+ {
92
+ id: "signup-form",
93
+ label: "Sign-up screen",
94
+ hint: "A welcoming form",
95
+ emoji: "✍️",
96
+ body: { mode: "artifact", allowForms: true },
97
+ prompt: "Create a beautiful sign-up screen for a modern app that feels genuinely welcoming. I'd like a clean card with the logo, quick options to continue with Google or GitHub, then the usual fields — name, email, and a password with a little hint about how strong it is — an agree-to-the-terms checkbox, and a big friendly 'Create account' button, with a small 'already have an account? sign in' link. Keep it soft, polished and inviting, sitting on a gentle gradient background.",
98
+ },
99
+ ];
100
+ //# sourceMappingURL=starterPrompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"starterPrompts.js","sourceRoot":"","sources":["../../src/client/starterPrompts.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useArtifactStream.d.ts","sourceRoot":"","sources":["../../src/client/useArtifactStream.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAGV,wBAAwB,EACxB,uBAAuB,EACxB,MAAM,oBAAoB,CAAC;AAG5B;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,wBAAwB,GAChC,uBAAuB,CAyOzB"}
1
+ {"version":3,"file":"useArtifactStream.d.ts","sourceRoot":"","sources":["../../src/client/useArtifactStream.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAGV,wBAAwB,EACxB,uBAAuB,EACxB,MAAM,oBAAoB,CAAC;AAG5B;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,wBAAwB,GAChC,uBAAuB,CAqPzB"}
@@ -30,6 +30,7 @@ export function useArtifactStream(options) {
30
30
  type: "html",
31
31
  html: "",
32
32
  snapshot: "",
33
+ camouflage: false,
33
34
  status: "streaming",
34
35
  createdAt: now,
35
36
  updatedAt: now,
@@ -67,7 +68,7 @@ export function useArtifactStream(options) {
67
68
  setMode(null);
68
69
  setError(null);
69
70
  }, [stop]);
70
- const sendMessage = React.useCallback(async (text) => {
71
+ const sendMessage = React.useCallback(async (text, bodyOverrides) => {
71
72
  const trimmed = text.trim();
72
73
  if (!trimmed || status === "streaming" || status === "submitted")
73
74
  return;
@@ -92,6 +93,7 @@ export function useArtifactStream(options) {
92
93
  headers: { "Content-Type": "application/json", ...headers },
93
94
  body: JSON.stringify({
94
95
  ...body,
96
+ ...bodyOverrides,
95
97
  messages: history.map(({ role, content }) => ({ role, content })),
96
98
  }),
97
99
  });
@@ -133,6 +135,7 @@ export function useArtifactStream(options) {
133
135
  assistantId = ensureAssistantMessage(assistantId, currentMode);
134
136
  patchArtifact(ev.artifactId, {
135
137
  title: ev.title,
138
+ camouflage: ev.camouflage === true,
136
139
  status: "streaming",
137
140
  });
138
141
  patchMessage(assistantId, { artifactId: ev.artifactId });
@@ -195,7 +198,16 @@ export function useArtifactStream(options) {
195
198
  if (abortRef.current === controller)
196
199
  abortRef.current = null;
197
200
  }
198
- }, [endpoint, headers, body, status, patchArtifact, patchMessage, onError]);
201
+ }, [
202
+ endpoint,
203
+ headers,
204
+ body,
205
+ status,
206
+ patchArtifact,
207
+ patchMessage,
208
+ ensureAssistantMessage,
209
+ onError,
210
+ ]);
199
211
  return {
200
212
  messages,
201
213
  artifacts,
@@ -1 +1 @@
1
- {"version":3,"file":"useArtifactStream.js","sourceRoot":"","sources":["../../src/client/useArtifactStream.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useArtifactStream.js","sourceRoot":"","sources":["../../src/client/useArtifactStream.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/constants/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,0BAA0B,EAC3B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAG1D,2EAA2E;AAC3E,eAAO,MAAM,iBAAiB,iGACgE,CAAC;AAE/F,oDAAoD;AACpD,eAAO,MAAM,wBAAwB,EAAE,QAAQ,CAAC,eAAe,CAO9D,CAAC;AAEF,4CAA4C;AAC5C,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,0BAA0B,CAexE,CAAC;AAEF,4EAA4E;AAC5E,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAE9C,8BAA8B;AAC9B,eAAO,MAAM,wBAAwB;;;;CAI3B,CAAC"}
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/constants/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,0BAA0B,EAC3B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAG1D,2EAA2E;AAC3E,eAAO,MAAM,iBAAiB,iGACgE,CAAC;AAE/F,oDAAoD;AACpD,eAAO,MAAM,wBAAwB,EAAE,QAAQ,CAAC,eAAe,CAS9D,CAAC;AAEF,4CAA4C;AAC5C,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,0BAA0B,CAiBxE,CAAC;AAEF,4EAA4E;AAC5E,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAE9C,8BAA8B;AAC9B,eAAO,MAAM,wBAAwB;;;;CAI3B,CAAC"}