@adonis-agora/agent 0.72.0 → 0.74.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (196) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/dist/configure.d.ts +5 -4
  3. package/dist/configure.d.ts.map +1 -1
  4. package/dist/configure.js +8 -4
  5. package/dist/configure.js.map +1 -1
  6. package/dist/providers/agent_provider.d.ts.map +1 -1
  7. package/dist/providers/agent_provider.js +15 -1
  8. package/dist/providers/agent_provider.js.map +1 -1
  9. package/dist/src/a2ui/adapter.d.ts.map +1 -1
  10. package/dist/src/a2ui/adapter.js +1 -0
  11. package/dist/src/a2ui/adapter.js.map +1 -1
  12. package/dist/src/a2ui/core.d.ts.map +1 -1
  13. package/dist/src/a2ui/core.js +11 -1
  14. package/dist/src/a2ui/core.js.map +1 -1
  15. package/dist/src/action-proposal-executor.d.ts.map +1 -1
  16. package/dist/src/action-proposal-executor.js +3 -0
  17. package/dist/src/action-proposal-executor.js.map +1 -1
  18. package/dist/src/ag-ui/adapter.d.ts.map +1 -1
  19. package/dist/src/ag-ui/adapter.js +2 -0
  20. package/dist/src/ag-ui/adapter.js.map +1 -1
  21. package/dist/src/ag-ui/core/encoder.d.ts.map +1 -1
  22. package/dist/src/ag-ui/core/encoder.js +3 -0
  23. package/dist/src/ag-ui/core/encoder.js.map +1 -1
  24. package/dist/src/agent-deps-factory.d.ts +3 -1
  25. package/dist/src/agent-deps-factory.d.ts.map +1 -1
  26. package/dist/src/agent-deps-factory.js +3 -0
  27. package/dist/src/agent-deps-factory.js.map +1 -1
  28. package/dist/src/agent-deps.d.ts +3 -1
  29. package/dist/src/agent-deps.d.ts.map +1 -1
  30. package/dist/src/agent-deps.js.map +1 -1
  31. package/dist/src/agent-loop.d.ts +7 -1
  32. package/dist/src/agent-loop.d.ts.map +1 -1
  33. package/dist/src/agent-loop.js +52 -2
  34. package/dist/src/agent-loop.js.map +1 -1
  35. package/dist/src/agent-service.d.ts +6 -0
  36. package/dist/src/agent-service.d.ts.map +1 -1
  37. package/dist/src/agent-service.js +5 -3
  38. package/dist/src/agent-service.js.map +1 -1
  39. package/dist/src/channels/adapters/evolution_api.d.ts.map +1 -1
  40. package/dist/src/channels/adapters/evolution_api.js +35 -0
  41. package/dist/src/channels/adapters/evolution_api.js.map +1 -1
  42. package/dist/src/channels/adapters/telegram.d.ts.map +1 -1
  43. package/dist/src/channels/adapters/telegram.js +25 -7
  44. package/dist/src/channels/adapters/telegram.js.map +1 -1
  45. package/dist/src/channels/adapters/whatsapp_cloud.d.ts.map +1 -1
  46. package/dist/src/channels/adapters/whatsapp_cloud.js +44 -0
  47. package/dist/src/channels/adapters/whatsapp_cloud.js.map +1 -1
  48. package/dist/src/channels/handler.d.ts +29 -1
  49. package/dist/src/channels/handler.d.ts.map +1 -1
  50. package/dist/src/channels/handler.js +231 -9
  51. package/dist/src/channels/handler.js.map +1 -1
  52. package/dist/src/channels/index.d.ts +2 -2
  53. package/dist/src/channels/index.d.ts.map +1 -1
  54. package/dist/src/channels/index.js.map +1 -1
  55. package/dist/src/channels/types.d.ts +40 -0
  56. package/dist/src/channels/types.d.ts.map +1 -1
  57. package/dist/src/genui/catalog.d.ts +12 -1
  58. package/dist/src/genui/catalog.d.ts.map +1 -1
  59. package/dist/src/genui/catalog.js +18 -1
  60. package/dist/src/genui/catalog.js.map +1 -1
  61. package/dist/src/genui/channels.d.ts +252 -0
  62. package/dist/src/genui/channels.d.ts.map +1 -0
  63. package/dist/src/genui/channels.js +516 -0
  64. package/dist/src/genui/channels.js.map +1 -0
  65. package/dist/src/genui/chart-image.d.ts +46 -0
  66. package/dist/src/genui/chart-image.d.ts.map +1 -0
  67. package/dist/src/genui/chart-image.js +155 -0
  68. package/dist/src/genui/chart-image.js.map +1 -0
  69. package/dist/src/genui/factory.d.ts +23 -1
  70. package/dist/src/genui/factory.d.ts.map +1 -1
  71. package/dist/src/genui/factory.js +13 -1
  72. package/dist/src/genui/factory.js.map +1 -1
  73. package/dist/src/genui/index.d.ts.map +1 -1
  74. package/dist/src/genui/index.js +64 -3
  75. package/dist/src/genui/index.js.map +1 -1
  76. package/dist/src/genui/kit/adonis.d.ts +4 -0
  77. package/dist/src/genui/kit/adonis.d.ts.map +1 -0
  78. package/dist/src/genui/kit/adonis.js +38 -0
  79. package/dist/src/genui/kit/adonis.js.map +1 -0
  80. package/dist/src/genui/kit/bundle.d.ts +25 -0
  81. package/dist/src/genui/kit/bundle.d.ts.map +1 -0
  82. package/dist/src/genui/kit/bundle.js +144 -0
  83. package/dist/src/genui/kit/bundle.js.map +1 -0
  84. package/dist/src/genui/kit/discover.d.ts +41 -0
  85. package/dist/src/genui/kit/discover.d.ts.map +1 -0
  86. package/dist/src/genui/kit/discover.js +100 -0
  87. package/dist/src/genui/kit/discover.js.map +1 -0
  88. package/dist/src/genui/kit/docs.d.ts +22 -0
  89. package/dist/src/genui/kit/docs.d.ts.map +1 -0
  90. package/dist/src/genui/kit/docs.js +237 -0
  91. package/dist/src/genui/kit/docs.js.map +1 -0
  92. package/dist/src/genui/kit/files.d.ts +27 -0
  93. package/dist/src/genui/kit/files.d.ts.map +1 -0
  94. package/dist/src/genui/kit/files.js +126 -0
  95. package/dist/src/genui/kit/files.js.map +1 -0
  96. package/dist/src/genui/kit/index.d.ts +12 -0
  97. package/dist/src/genui/kit/index.d.ts.map +1 -0
  98. package/dist/src/genui/kit/index.js +12 -0
  99. package/dist/src/genui/kit/index.js.map +1 -0
  100. package/dist/src/genui/kit/plugin.d.ts +52 -0
  101. package/dist/src/genui/kit/plugin.d.ts.map +1 -0
  102. package/dist/src/genui/kit/plugin.js +314 -0
  103. package/dist/src/genui/kit/plugin.js.map +1 -0
  104. package/dist/src/genui/kit/write.d.ts +14 -0
  105. package/dist/src/genui/kit/write.d.ts.map +1 -0
  106. package/dist/src/genui/kit/write.js +39 -0
  107. package/dist/src/genui/kit/write.js.map +1 -0
  108. package/dist/src/genui/public.d.ts +7 -3
  109. package/dist/src/genui/public.d.ts.map +1 -1
  110. package/dist/src/genui/public.js +5 -1
  111. package/dist/src/genui/public.js.map +1 -1
  112. package/dist/src/genui/sandbox-jsx.d.ts +29 -0
  113. package/dist/src/genui/sandbox-jsx.d.ts.map +1 -0
  114. package/dist/src/genui/sandbox-jsx.js +656 -0
  115. package/dist/src/genui/sandbox-jsx.js.map +1 -0
  116. package/dist/src/genui/sandbox-kit.d.ts +88 -0
  117. package/dist/src/genui/sandbox-kit.d.ts.map +1 -0
  118. package/dist/src/genui/sandbox-kit.js +89 -0
  119. package/dist/src/genui/sandbox-kit.js.map +1 -0
  120. package/dist/src/genui/sandbox-theme.d.ts +61 -0
  121. package/dist/src/genui/sandbox-theme.d.ts.map +1 -0
  122. package/dist/src/genui/sandbox-theme.js +255 -0
  123. package/dist/src/genui/sandbox-theme.js.map +1 -0
  124. package/dist/src/genui/sandbox.d.ts +73 -2
  125. package/dist/src/genui/sandbox.d.ts.map +1 -1
  126. package/dist/src/genui/sandbox.js +106 -16
  127. package/dist/src/genui/sandbox.js.map +1 -1
  128. package/dist/src/genui/text.d.ts.map +1 -1
  129. package/dist/src/genui/text.js +33 -1
  130. package/dist/src/genui/text.js.map +1 -1
  131. package/dist/src/genui/tools.d.ts +26 -0
  132. package/dist/src/genui/tools.d.ts.map +1 -1
  133. package/dist/src/genui/tools.js +94 -14
  134. package/dist/src/genui/tools.js.map +1 -1
  135. package/dist/src/genui/tree.d.ts +25 -2
  136. package/dist/src/genui/tree.d.ts.map +1 -1
  137. package/dist/src/genui/tree.js +161 -4
  138. package/dist/src/genui/tree.js.map +1 -1
  139. package/dist/src/hooks/genui_kit.d.ts +20 -0
  140. package/dist/src/hooks/genui_kit.d.ts.map +1 -0
  141. package/dist/src/hooks/genui_kit.js +55 -0
  142. package/dist/src/hooks/genui_kit.js.map +1 -0
  143. package/dist/src/index.d.ts +2 -2
  144. package/dist/src/index.d.ts.map +1 -1
  145. package/dist/src/index.js +2 -2
  146. package/dist/src/index.js.map +1 -1
  147. package/dist/src/negotiated-tool-ui.d.ts +27 -0
  148. package/dist/src/negotiated-tool-ui.d.ts.map +1 -1
  149. package/dist/src/negotiated-tool-ui.js +52 -0
  150. package/dist/src/negotiated-tool-ui.js.map +1 -1
  151. package/dist/src/react/core/genui/sandbox-assets.d.ts +32 -0
  152. package/dist/src/react/core/genui/sandbox-assets.d.ts.map +1 -0
  153. package/dist/src/react/core/genui/sandbox-assets.js +174 -0
  154. package/dist/src/react/core/genui/sandbox-assets.js.map +1 -0
  155. package/dist/src/react/core/genui/sandbox.d.ts +9 -0
  156. package/dist/src/react/core/genui/sandbox.d.ts.map +1 -1
  157. package/dist/src/react/core/genui/sandbox.js +119 -19
  158. package/dist/src/react/core/genui/sandbox.js.map +1 -1
  159. package/dist/src/react/core/index.d.ts +1 -1
  160. package/dist/src/react/core/index.d.ts.map +1 -1
  161. package/dist/src/react/core/index.js +1 -1
  162. package/dist/src/react/core/index.js.map +1 -1
  163. package/dist/src/react/core/presentation/phrasing.d.ts +3 -2
  164. package/dist/src/react/core/presentation/phrasing.d.ts.map +1 -1
  165. package/dist/src/react/core/presentation/phrasing.js +4 -27
  166. package/dist/src/react/core/presentation/phrasing.js.map +1 -1
  167. package/dist/src/react/core/presentation/tool-activity.d.ts +8 -0
  168. package/dist/src/react/core/presentation/tool-activity.d.ts.map +1 -1
  169. package/dist/src/react/core/presentation/tool-activity.js +28 -1
  170. package/dist/src/react/core/presentation/tool-activity.js.map +1 -1
  171. package/dist/src/react/core/transcript/model.d.ts +6 -0
  172. package/dist/src/react/core/transcript/model.d.ts.map +1 -1
  173. package/dist/src/react/core/transcript/model.js +6 -1
  174. package/dist/src/react/core/transcript/model.js.map +1 -1
  175. package/dist/src/react/core/transcript/use-chat-transcript.d.ts +5 -0
  176. package/dist/src/react/core/transcript/use-chat-transcript.d.ts.map +1 -1
  177. package/dist/src/react/core/transcript/use-chat-transcript.js +3 -0
  178. package/dist/src/react/core/transcript/use-chat-transcript.js.map +1 -1
  179. package/dist/src/spi/tool.d.ts +7 -0
  180. package/dist/src/spi/tool.d.ts.map +1 -1
  181. package/dist/src/tool-presentation.d.ts +15 -0
  182. package/dist/src/tool-presentation.d.ts.map +1 -1
  183. package/dist/src/tool-presentation.js +48 -0
  184. package/dist/src/tool-presentation.js.map +1 -1
  185. package/dist/src/tool-registry.d.ts.map +1 -1
  186. package/dist/src/tool-registry.js +2 -0
  187. package/dist/src/tool-registry.js.map +1 -1
  188. package/dist/src/types.d.ts +10 -0
  189. package/dist/src/types.d.ts.map +1 -1
  190. package/dist/src/vite/index.d.ts +24 -0
  191. package/dist/src/vite/index.d.ts.map +1 -0
  192. package/dist/src/vite/index.js +29 -0
  193. package/dist/src/vite/index.js.map +1 -0
  194. package/package.json +38 -2
  195. package/skills/agent-setup/SKILL.md +3 -1
  196. package/skills/agent-tools/SKILL.md +5 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox-jsx.js","sourceRoot":"","sources":["../../../src/genui/sandbox-jsx.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,88 @@
1
+ /** One prop of a kit component, as its TypeScript type declares it. */
2
+ export interface SandboxKitPropDoc {
3
+ name: string;
4
+ /** The type as TypeScript prints it: `"default" | "outline"`, `(value: number[]) => void`. */
5
+ type: string;
6
+ required: boolean;
7
+ description?: string;
8
+ /** From a `@default` JSDoc tag. */
9
+ default?: string;
10
+ }
11
+ /** One kit component — an export of the kit entry the model may use as `<Name />`. */
12
+ export interface SandboxKitComponentDoc {
13
+ name: string;
14
+ description?: string;
15
+ props: SandboxKitPropDoc[];
16
+ /** The element whose native attributes it also takes (`button`), when it spreads them. */
17
+ inherits?: string;
18
+ }
19
+ /** The kit's docs: its components, and the theme variables its stylesheets declare. */
20
+ export interface SandboxKitDocs {
21
+ version: 1;
22
+ components: SandboxKitComponentDoc[];
23
+ /** The theme variables (name → light value) the app's CSS declares — what the prompt names. */
24
+ theme?: {
25
+ vars: Record<string, string>;
26
+ };
27
+ }
28
+ /**
29
+ * What the Vite plugin writes (dev) and emits (build), and what the server discovers: the docs, plus
30
+ * where the browser fetches the kit bundle and the Tailwind runtime from (same origin).
31
+ */
32
+ export interface SandboxKitDescriptor extends SandboxKitDocs {
33
+ kit: {
34
+ url: string;
35
+ hash?: string;
36
+ } | null;
37
+ /** The runtime's url, and the app's own Tailwind directives (custom variants, utilities). */
38
+ tailwind: {
39
+ url: string;
40
+ css?: string;
41
+ } | null;
42
+ }
43
+ /**
44
+ * What a sandbox renderer needs from the server (`GET <agent>/config` → `genui.sandbox`): whether to
45
+ * pass the theme in, and where the Tailwind runtime and the kit bundle are.
46
+ */
47
+ export interface SandboxClientConfig {
48
+ theme: boolean;
49
+ tailwind?: {
50
+ url: string;
51
+ css?: string;
52
+ };
53
+ kit?: {
54
+ url: string;
55
+ hash?: string;
56
+ };
57
+ }
58
+ /** What the opt-in assets weigh, inlined into every sandbox frame that uses them. */
59
+ export declare const SANDBOX_ASSET_SIZES: {
60
+ /** `@tailwindcss/browser` v4 (minified, as inlined; ≈75 KB gzipped over the wire, once). */
61
+ readonly tailwind: '≈280 KB';
62
+ /** React + ReactDOM in the kit bundle, before the app's own components. */
63
+ readonly kit: '≈230 KB + your components';
64
+ };
65
+ /** The kit as the model reads it: one entry per component, its props from their types. */
66
+ export declare function kitDocsToModelText(docs: SandboxKitDocs): string;
67
+ /** The rules for writing the sandbox as JSX with the kit. */
68
+ export declare function kitJsxInstructions(): string;
69
+ /** The Tailwind rule, for the sandbox description. */
70
+ export declare function tailwindInstructions(): string;
71
+ /**
72
+ * The script that draws the model's JSX in the frame: it holds the transpiler, compiles what the
73
+ * host posts (`{ type: jsxMessage, code, final }`), runs it in a scope with the kit components and
74
+ * React's hooks, and renders `App` into `#agora-sandbox-root`. A partial program is drawn only once
75
+ * it closes into code that parses and renders; until then — and whenever a later version fails —
76
+ * the last good one stays on screen. Errors are reported (to the host) only for the final program.
77
+ * A partial program is not tried before its JSX has begun (nothing to draw before then).
78
+ */
79
+ export declare function sandboxJsxRuntime(options: {
80
+ token: string;
81
+ jsxMessage: string;
82
+ /** Code to draw at once (a document built for a whole program). */
83
+ initial?: {
84
+ code: string;
85
+ final: boolean;
86
+ };
87
+ }): string;
88
+ //# sourceMappingURL=sandbox-kit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox-kit.d.ts","sourceRoot":"","sources":["../../../src/genui/sandbox-kit.ts"],"names":[],"mappings":"AAQA,uEAAuE;AACvE,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,8FAA8F;IAC9F,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,sFAAsF;AACtF,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,uFAAuF;AACvF,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,CAAC,CAAC;IACX,UAAU,EAAE,sBAAsB,EAAE,CAAC;IACrC,+FAA+F;IAC/F,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;CAC1C;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAqB,SAAQ,cAAc;IAC1D,GAAG,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC3C,6FAA6F;IAC7F,QAAQ,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAChD;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,GAAG,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACtC;AAED,qFAAqF;AACrF,eAAO,MAAM,mBAAmB;IAC9B,4FAA4F;aAC5F,QAAQ,EAAE,SAAS;IACnB,2EAA2E;aAC3E,GAAG,EAAE,2BAA2B;CACxB,CAAC;AAUX,0FAA0F;AAC1F,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAY/D;AAED,6DAA6D;AAC7D,wBAAgB,kBAAkB,IAAI,MAAM,CAM3C;AAED,sDAAsD;AACtD,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,OAAO,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC;CAC5C,GAAG,MAAM,CAiCT"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * The app's design system inside the sandbox — the isomorphic half: what the kit docs look like,
3
+ * what the model is told about them, what the browser is told about the assets, and the script that
4
+ * draws the model's JSX in the frame. The Node half (docs generation, the bundle, the Vite plugin,
5
+ * discovery) is `genui/kit`.
6
+ */
7
+ import { prepareSandboxJsx, transpileJsx } from './sandbox-jsx.js';
8
+ /** What the opt-in assets weigh, inlined into every sandbox frame that uses them. */
9
+ export const SANDBOX_ASSET_SIZES = {
10
+ /** `@tailwindcss/browser` v4 (minified, as inlined; ≈75 KB gzipped over the wire, once). */
11
+ tailwind: '≈280 KB',
12
+ /** React + ReactDOM in the kit bundle, before the app's own components. */
13
+ kit: '≈230 KB + your components',
14
+ };
15
+ /** A prop's line in the model text: `variant?: "default" | "outline" = "default" — the look`. */
16
+ function propLine(prop) {
17
+ const type = prop.type.length > 160 ? `${prop.type.slice(0, 157)}…` : prop.type;
18
+ return `${prop.name}${prop.required ? '' : '?'}: ${type}${prop.default !== undefined ? ` = ${prop.default}` : ''}${prop.description ? ` — ${prop.description.replace(/\s+/g, ' ').slice(0, 140)}` : ''}`;
19
+ }
20
+ /** The kit as the model reads it: one entry per component, its props from their types. */
21
+ export function kitDocsToModelText(docs) {
22
+ const lines = [
23
+ 'Kit components (the app design system — use these first; each is in scope by name, and on the global `Kit`):',
24
+ ];
25
+ for (const component of docs.components) {
26
+ const head = `- <${component.name}>${component.description ? ` ${component.description.replace(/\s+/g, ' ').slice(0, 200)}` : ''}`;
27
+ lines.push(head);
28
+ for (const prop of component.props)
29
+ lines.push(` ${propLine(prop)}`);
30
+ if (component.inherits !== undefined)
31
+ lines.push(` …and every <${component.inherits}> attribute (className, onClick, …)`);
32
+ }
33
+ return lines.join('\n');
34
+ }
35
+ /** The rules for writing the sandbox as JSX with the kit. */
36
+ export function kitJsxInstructions() {
37
+ return [
38
+ 'Write the view as JSX in `jsx` (instead of `html`/`jsFunctions`): plain JavaScript + JSX, no TypeScript, no imports — define `function App()` and return the UI; it is rendered for you.',
39
+ 'React hooks (useState, useEffect, useMemo, useRef, useCallback, useReducer) and every kit component are in scope by name. Use kit components for controls and surfaces, plain elements for the rest.',
40
+ 'Keep state in App; call agent.send({ text, ...values }) from a click handler to hand values back.',
41
+ ].join(' ');
42
+ }
43
+ /** The Tailwind rule, for the sandbox description. */
44
+ export function tailwindInstructions() {
45
+ return 'Tailwind CSS v4 utility classes work (className="flex gap-2 p-4 rounded-lg bg-card text-card-foreground"), offline — prefer them to custom CSS.';
46
+ }
47
+ /**
48
+ * The script that draws the model's JSX in the frame: it holds the transpiler, compiles what the
49
+ * host posts (`{ type: jsxMessage, code, final }`), runs it in a scope with the kit components and
50
+ * React's hooks, and renders `App` into `#agora-sandbox-root`. A partial program is drawn only once
51
+ * it closes into code that parses and renders; until then — and whenever a later version fails —
52
+ * the last good one stays on screen. Errors are reported (to the host) only for the final program.
53
+ * A partial program is not tried before its JSX has begun (nothing to draw before then).
54
+ */
55
+ export function sandboxJsxRuntime(options) {
56
+ const t = JSON.stringify(options.token);
57
+ const type = JSON.stringify(options.jsxMessage);
58
+ const initial = options.initial === undefined ? 'null' : JSON.stringify(options.initial);
59
+ return `(function(){var transpileJsx=${transpileJsx.toString()};var prepareSandboxJsx=${prepareSandboxJsx.toString()};
60
+ var T=${t},TYPE=${type},R=window.React,D=window.ReactDOM,K=window.Kit||{};
61
+ if(window.__GENUI_KIT_CSS__){var ks=document.createElement('style');ks.textContent=window.__GENUI_KIT_CSS__;document.head.appendChild(ks)}
62
+ var kitNames=Object.keys(K).filter(function(k){return /^[A-Z][\\w$]*$/.test(k)});
63
+ var hookNames=['useState','useEffect','useMemo','useRef','useCallback','useReducer','useId','useLayoutEffect','Fragment'].filter(function(k){return R&&R[k]!==undefined});
64
+ var root=null,lastGood=null,seq=0,lastCode=null;
65
+ window.addEventListener('error',function(e){if(window.__agoraQuiet){e.preventDefault();e.stopImmediatePropagation()}},true);
66
+ function report(e){window.__agoraQuiet=false;try{window.dispatchEvent(new ErrorEvent('error',{message:String(e&&e.message||e)}))}catch(_){}}
67
+ var Boundary=R?(function(){function B(p){R.Component.call(this,p);this.state={failed:false}}
68
+ B.prototype=Object.create(R.Component.prototype);B.prototype.constructor=B;
69
+ B.getDerivedStateFromError=function(){return{failed:true}};
70
+ B.prototype.componentDidCatch=function(e){if(this.props.final)report(e)};
71
+ B.prototype.componentDidMount=function(){if(!this.state.failed)lastGood=this.props.app};
72
+ B.prototype.render=function(){if(this.state.failed)return this.props.keep?R.createElement(this.props.keep):null;return this.props.children};
73
+ return B})():null;
74
+ function draw(code,final){if(!R||!D)return false;if(code===lastCode&&!final)return true;
75
+ if(!final&&!/(return|=>)\\s*\\(?\\s*</.test(code))return false;var js;
76
+ try{js=transpileJsx(prepareSandboxJsx(code),{partial:!final})}catch(e){if(final)report(e);return false}
77
+ window.__genuiApp=undefined;window.__genuiOk=false;window.__agoraQuiet=!final;
78
+ var s=document.createElement('script');
79
+ s.textContent='(function(){var Kit=window.Kit||{},React=window.React;var {'+kitNames.join(',')+'}=Kit;var {'+hookNames.join(',')+'}=React;(function(){\\n'+js+'\\n;window.__genuiApp=typeof App==="function"?App:undefined})()})();window.__genuiOk=true;';
80
+ document.head.appendChild(s);s.remove();window.__agoraQuiet=false;
81
+ if(!window.__genuiOk||typeof window.__genuiApp!=='function'){return false}
82
+ lastCode=code;var App=window.__genuiApp;
83
+ if(!root)root=D.createRoot(document.getElementById('agora-sandbox-root'));
84
+ root.render(R.createElement(Boundary,{key:++seq,app:App,keep:lastGood,final:final},R.createElement(App)));
85
+ return true}
86
+ window.addEventListener('message',function(e){if(e.source!==window.parent)return;var d=e.data;if(!d||d.token!==T||d.type!==TYPE)return;draw(String(d.code||''),d.final===true)});
87
+ var init=${initial};if(init){draw(init.code,init.final)}})();`;
88
+ }
89
+ //# sourceMappingURL=sandbox-kit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox-kit.js","sourceRoot":"","sources":["../../../src/genui/sandbox-kit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * The app's theme inside the sandbox: the host page's CSS custom properties (`--background`,
3
+ * `--primary`, `--radius`…) read from `:root` and handed to the frame, and — with Tailwind on — an
4
+ * `@theme` that maps them to utilities (`bg-primary`, `text-muted-foreground`, `rounded-lg`).
5
+ *
6
+ * Isomorphic: the browser renderer collects and pushes the values, the server and the Vite plugin
7
+ * only need the names (what the model is told it may use).
8
+ */
9
+ /** `--name: value` declarations in a stylesheet's text (what the Vite plugin scans). */
10
+ export declare function themeVarsFromCss(css: string): Record<string, string>;
11
+ /** A value that is a color — a function, a hex, a named color, or shadcn's bare `H S% L%` channels. */
12
+ export declare function isColorValue(value: string): boolean;
13
+ /** shadcn v3's `222.2 84% 4.9%`: hue saturation lightness, to be wrapped in `hsl(…)`. */
14
+ export declare function isHslChannels(value: string): boolean;
15
+ /** What a set of theme variables gives the model to work with. */
16
+ export interface ThemeTokens {
17
+ /** Color names (`primary`, `muted-foreground`) — `var(--primary)`, and `bg-primary` with Tailwind. */
18
+ colors: string[];
19
+ /** There is a `--radius` (`rounded-sm`…`rounded-xl` follow it). */
20
+ radius: boolean;
21
+ /** Font variables (`--font-sans`). */
22
+ fonts: string[];
23
+ /** Everything else, by name. */
24
+ other: string[];
25
+ }
26
+ /** Sort theme variables into colors, radius, fonts and the rest, by value (else by name). */
27
+ export declare function themeTokens(vars: Record<string, string> | readonly string[]): ThemeTokens;
28
+ /** What the model is told about the theme (inside the sandbox description). */
29
+ export declare function themeToModelText(vars: Record<string, string> | readonly string[] | undefined, options?: {
30
+ tailwind?: boolean;
31
+ }): string;
32
+ /**
33
+ * `:root { --x: value; … }` — the theme as the frame gets it. `colorScheme` is the host root's
34
+ * computed `color-scheme`: mirrored when the host sets one (a frame whose scheme differs from its
35
+ * page's is painted opaque), left out when it is `normal`.
36
+ */
37
+ export declare function hostThemeCss(vars: Record<string, string>, options?: {
38
+ colorScheme?: string;
39
+ }): string;
40
+ /**
41
+ * The `@theme` that maps the host's variables to Tailwind utilities — colors to `--color-*`
42
+ * (`hsl(…)`-wrapped for bare channels), `--radius` to the radius scale, fonts as they are — and a
43
+ * `dark` variant that follows the `dark` class and `data-theme` the frame mirrors from the host.
44
+ */
45
+ export declare function tailwindThemeCss(vars: Record<string, string>): string;
46
+ /**
47
+ * The Tailwind directives of an app stylesheet the sandbox's Tailwind should know too: its
48
+ * `@custom-variant`s (shadcn's `data-open:`, `data-horizontal:`…), `@utility`s and `@theme` blocks —
49
+ * not its `@import`s, `@source`s or base styles. What `genuiSandboxKit({ tailwindCss })` collects.
50
+ */
51
+ export declare function tailwindDirectivesFromCss(css: string): string;
52
+ /** Light or dark: the host's `dark` class / `data-theme`, else the system preference. */
53
+ export declare function isHostDark(doc: Document): boolean;
54
+ /** The host's theme as it is NOW: each declared variable's computed value on `:root`. */
55
+ export declare function collectHostThemeVars(doc: Document): Record<string, string>;
56
+ /**
57
+ * Call `onChange` when the host's theme may have changed: its root's class, style or `data-theme`,
58
+ * a stylesheet added or removed, or the system's color scheme. Returns the unsubscribe.
59
+ */
60
+ export declare function watchHostTheme(doc: Document, onChange: () => void): () => void;
61
+ //# sourceMappingURL=sandbox-theme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox-theme.d.ts","sourceRoot":"","sources":["../../../src/genui/sandbox-theme.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,wFAAwF;AACxF,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAUpE;AAED,uGAAuG;AACvG,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAQnD;AAED,yFAAyF;AACzF,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED,kEAAkE;AAClE,MAAM,WAAW,WAAW;IAC1B,sGAAsG;IACtG,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,mEAAmE;IACnE,MAAM,EAAE,OAAO,CAAC;IAChB,sCAAsC;IACtC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,gCAAgC;IAChC,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,6FAA6F;AAC7F,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,MAAM,EAAE,GAAG,WAAW,CAsBzF;AAED,+EAA+E;AAC/E,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,EAC5D,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GACnC,MAAM,CAyBR;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAO,GACrC,MAAM,CAOR;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CA2BrE;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CA8B7D;AAED,yFAAyF;AACzF,wBAAgB,UAAU,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAQjD;AAkCD,yFAAyF;AACzF,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAS1E;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAoB9E"}
@@ -0,0 +1,255 @@
1
+ /**
2
+ * The app's theme inside the sandbox: the host page's CSS custom properties (`--background`,
3
+ * `--primary`, `--radius`…) read from `:root` and handed to the frame, and — with Tailwind on — an
4
+ * `@theme` that maps them to utilities (`bg-primary`, `text-muted-foreground`, `rounded-lg`).
5
+ *
6
+ * Isomorphic: the browser renderer collects and pushes the values, the server and the Vite plugin
7
+ * only need the names (what the model is told it may use).
8
+ */
9
+ /** Custom properties Tailwind and the browser keep for themselves — never the app's theme. */
10
+ const INTERNAL_VAR = /^--(tw-|vite-|agora-)/;
11
+ /** `--name: value` declarations in a stylesheet's text (what the Vite plugin scans). */
12
+ export function themeVarsFromCss(css) {
13
+ const vars = {};
14
+ const declaration = /(?:^|[;{\s])(--[A-Za-z0-9_-]+)\s*:\s*([^;{}]+)/g;
15
+ for (const match of css.matchAll(declaration)) {
16
+ const name = match[1];
17
+ if (INTERNAL_VAR.test(name))
18
+ continue;
19
+ // The first value seen is the light one (`:root` comes before `.dark` in every theme file).
20
+ if (!(name in vars))
21
+ vars[name] = match[2].trim();
22
+ }
23
+ return vars;
24
+ }
25
+ /** A value that is a color — a function, a hex, a named color, or shadcn's bare `H S% L%` channels. */
26
+ export function isColorValue(value) {
27
+ const v = value.trim().toLowerCase();
28
+ return (/^#[0-9a-f]{3,8}$/.test(v) ||
29
+ /^(rgb|rgba|hsl|hsla|hwb|lab|lch|oklab|oklch|color|color-mix)\(/.test(v) ||
30
+ isHslChannels(v) ||
31
+ ['transparent', 'black', 'white', 'currentcolor'].includes(v));
32
+ }
33
+ /** shadcn v3's `222.2 84% 4.9%`: hue saturation lightness, to be wrapped in `hsl(…)`. */
34
+ export function isHslChannels(value) {
35
+ return /^-?[\d.]+(deg)?\s+[\d.]+%\s+[\d.]+%(\s*\/\s*[\d.]+%?)?$/.test(value.trim());
36
+ }
37
+ /** Sort theme variables into colors, radius, fonts and the rest, by value (else by name). */
38
+ export function themeTokens(vars) {
39
+ const entries = Array.isArray(vars)
40
+ ? vars.map((name) => [name, undefined])
41
+ : Object.entries(vars);
42
+ const tokens = { colors: [], radius: false, fonts: [], other: [] };
43
+ for (const [name, value] of entries) {
44
+ if (INTERNAL_VAR.test(name))
45
+ continue;
46
+ const bare = name.replace(/^--/, '');
47
+ if (bare === 'radius')
48
+ tokens.radius = true;
49
+ else if (bare.startsWith('font-'))
50
+ tokens.fonts.push(bare);
51
+ else if (bare.startsWith('color-'))
52
+ tokens.colors.push(bare.slice('color-'.length));
53
+ else if (value !== undefined
54
+ ? isColorValue(value)
55
+ : /(^|-)(background|foreground|primary|secondary|muted|accent|destructive|border|input|ring|card|popover|chart|sidebar)/.test(bare))
56
+ tokens.colors.push(bare);
57
+ else
58
+ tokens.other.push(bare);
59
+ }
60
+ return tokens;
61
+ }
62
+ /** What the model is told about the theme (inside the sandbox description). */
63
+ export function themeToModelText(vars, options = {}) {
64
+ const tokens = themeTokens(vars ?? []);
65
+ if (tokens.colors.length === 0 && !tokens.radius && tokens.fonts.length === 0) {
66
+ return "The app's theme is on :root as CSS custom properties (for example var(--background), var(--foreground), var(--primary)); use them with a fallback, e.g. var(--primary, #2563eb), so the view matches the app in light and dark mode. The page background shows through: leave the body transparent.";
67
+ }
68
+ const parts = [
69
+ `The app's theme is on :root as CSS custom properties and follows light/dark mode: colors ${tokens.colors
70
+ .map((name) => `var(--${name})`)
71
+ .join(', ')}${tokens.radius ? '; radius var(--radius)' : ''}${tokens.fonts.length > 0
72
+ ? `; fonts ${tokens.fonts.map((name) => `var(--${name})`).join(', ')}`
73
+ : ''}. Use them instead of hard-coded colors, and leave the body transparent (the page background shows through).`,
74
+ ];
75
+ if (options.tailwind === true) {
76
+ parts.push(`With Tailwind they are utilities: ${tokens.colors
77
+ .slice(0, 12)
78
+ .map((name) => `bg-${name}`)
79
+ .join(', ')}, text-*, border-* of the same names${tokens.radius ? ', rounded-sm/md/lg/xl (from --radius)' : ''}.`);
80
+ }
81
+ return parts.join(' ');
82
+ }
83
+ /**
84
+ * `:root { --x: value; … }` — the theme as the frame gets it. `colorScheme` is the host root's
85
+ * computed `color-scheme`: mirrored when the host sets one (a frame whose scheme differs from its
86
+ * page's is painted opaque), left out when it is `normal`.
87
+ */
88
+ export function hostThemeCss(vars, options = {}) {
89
+ const body = Object.entries(vars)
90
+ .filter(([name, value]) => !INTERNAL_VAR.test(name) && value.trim() !== '')
91
+ .map(([name, value]) => `${name}:${value.replace(/[<>{}]/g, '')}`)
92
+ .join(';');
93
+ const scheme = options.colorScheme?.trim();
94
+ return `:root{${scheme && scheme !== 'normal' ? `color-scheme:${scheme.replace(/[<>{};]/g, '')};` : ''}${body}}`;
95
+ }
96
+ /**
97
+ * The `@theme` that maps the host's variables to Tailwind utilities — colors to `--color-*`
98
+ * (`hsl(…)`-wrapped for bare channels), `--radius` to the radius scale, fonts as they are — and a
99
+ * `dark` variant that follows the `dark` class and `data-theme` the frame mirrors from the host.
100
+ */
101
+ export function tailwindThemeCss(vars) {
102
+ const lines = [];
103
+ for (const [name, value] of Object.entries(vars)) {
104
+ if (INTERNAL_VAR.test(name))
105
+ continue;
106
+ const bare = name.replace(/^--/, '');
107
+ if (bare === 'radius') {
108
+ lines.push('--radius-sm: calc(var(--radius) - 4px)', '--radius-md: calc(var(--radius) - 2px)', '--radius-lg: var(--radius)', '--radius-xl: calc(var(--radius) + 4px)');
109
+ }
110
+ else if (bare.startsWith('font-')) {
111
+ lines.push(`--${bare}: var(--${bare})`);
112
+ }
113
+ else if (bare.startsWith('color-')) {
114
+ lines.push(`--${bare}: var(--${bare})`);
115
+ }
116
+ else if (isColorValue(value)) {
117
+ lines.push(isHslChannels(value)
118
+ ? `--color-${bare}: hsl(var(--${bare}))`
119
+ : `--color-${bare}: var(--${bare})`);
120
+ }
121
+ }
122
+ return `@custom-variant dark (&:where(.dark, .dark *, [data-theme=dark], [data-theme=dark] *));\n@theme inline {\n${lines
123
+ .map((line) => ` ${line};`)
124
+ .join('\n')}\n}`;
125
+ }
126
+ /**
127
+ * The Tailwind directives of an app stylesheet the sandbox's Tailwind should know too: its
128
+ * `@custom-variant`s (shadcn's `data-open:`, `data-horizontal:`…), `@utility`s and `@theme` blocks —
129
+ * not its `@import`s, `@source`s or base styles. What `genuiSandboxKit({ tailwindCss })` collects.
130
+ */
131
+ export function tailwindDirectivesFromCss(css) {
132
+ const text = css.replace(/\/\*[\s\S]*?\*\//g, '');
133
+ const out = [];
134
+ const directive = /@(custom-variant|utility|theme)\b/g;
135
+ let depth = 0;
136
+ for (let index = 0; index < text.length; index++) {
137
+ const c = text[index];
138
+ if (c === '{')
139
+ depth++;
140
+ else if (c === '}')
141
+ depth = Math.max(0, depth - 1);
142
+ else if (c === '@' && depth === 0) {
143
+ directive.lastIndex = index;
144
+ const match = directive.exec(text);
145
+ if (match === null || match.index !== index)
146
+ continue;
147
+ // One statement (`@custom-variant dark (&:where(.dark *));`) or one balanced block.
148
+ let end = index;
149
+ let inner = 0;
150
+ for (; end < text.length; end++) {
151
+ const ch = text[end];
152
+ if (ch === ';' && inner === 0)
153
+ break;
154
+ if (ch === '{')
155
+ inner++;
156
+ else if (ch === '}') {
157
+ inner--;
158
+ if (inner === 0)
159
+ break;
160
+ }
161
+ }
162
+ out.push(text.slice(index, end + 1).trim());
163
+ index = end;
164
+ }
165
+ }
166
+ return out.join('\n');
167
+ }
168
+ /** Light or dark: the host's `dark` class / `data-theme`, else the system preference. */
169
+ export function isHostDark(doc) {
170
+ const root = doc.documentElement;
171
+ if (root.classList.contains('dark'))
172
+ return true;
173
+ if (root.classList.contains('light'))
174
+ return false;
175
+ const attribute = root.getAttribute('data-theme') ?? root.getAttribute('data-mode');
176
+ if (attribute === 'dark')
177
+ return true;
178
+ if (attribute === 'light')
179
+ return false;
180
+ return doc.defaultView?.matchMedia?.('(prefers-color-scheme: dark)').matches === true;
181
+ }
182
+ /** Every custom property any same-origin stylesheet declares (and the root's inline style sets). */
183
+ function declaredVarNames(doc) {
184
+ const names = new Set();
185
+ const visit = (rules) => {
186
+ if (rules === undefined)
187
+ return;
188
+ for (const rule of Array.from(rules)) {
189
+ const style = rule.style;
190
+ if (style !== undefined) {
191
+ for (let index = 0; index < style.length; index++) {
192
+ const name = style.item(index);
193
+ if (name.startsWith('--') && !INTERNAL_VAR.test(name))
194
+ names.add(name);
195
+ }
196
+ }
197
+ const nested = rule.cssRules;
198
+ if (nested !== undefined)
199
+ visit(nested);
200
+ }
201
+ };
202
+ for (const sheet of Array.from(doc.styleSheets)) {
203
+ try {
204
+ visit(sheet.cssRules);
205
+ }
206
+ catch {
207
+ /* a cross-origin stylesheet: its rules are not readable */
208
+ }
209
+ }
210
+ const inline = doc.documentElement.style;
211
+ for (let index = 0; index < inline.length; index++) {
212
+ const name = inline.item(index);
213
+ if (name.startsWith('--') && !INTERNAL_VAR.test(name))
214
+ names.add(name);
215
+ }
216
+ return names;
217
+ }
218
+ /** The host's theme as it is NOW: each declared variable's computed value on `:root`. */
219
+ export function collectHostThemeVars(doc) {
220
+ const computed = doc.defaultView?.getComputedStyle(doc.documentElement);
221
+ const vars = {};
222
+ if (computed === undefined)
223
+ return vars;
224
+ for (const name of [...declaredVarNames(doc)].sort()) {
225
+ const value = computed.getPropertyValue(name).trim();
226
+ if (value !== '')
227
+ vars[name] = value;
228
+ }
229
+ return vars;
230
+ }
231
+ /**
232
+ * Call `onChange` when the host's theme may have changed: its root's class, style or `data-theme`,
233
+ * a stylesheet added or removed, or the system's color scheme. Returns the unsubscribe.
234
+ */
235
+ export function watchHostTheme(doc, onChange) {
236
+ let timer;
237
+ const changed = () => {
238
+ clearTimeout(timer);
239
+ timer = setTimeout(onChange, 30);
240
+ };
241
+ const observer = typeof MutationObserver === 'function' ? new MutationObserver(changed) : undefined;
242
+ observer?.observe(doc.documentElement, {
243
+ attributes: true,
244
+ attributeFilter: ['class', 'style', 'data-theme', 'data-mode'],
245
+ });
246
+ observer?.observe(doc.head, { childList: true });
247
+ const media = doc.defaultView?.matchMedia?.('(prefers-color-scheme: dark)');
248
+ media?.addEventListener?.('change', changed);
249
+ return () => {
250
+ clearTimeout(timer);
251
+ observer?.disconnect();
252
+ media?.removeEventListener?.('change', changed);
253
+ };
254
+ }
255
+ //# sourceMappingURL=sandbox-theme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox-theme.js","sourceRoot":"","sources":["../../../src/genui/sandbox-theme.ts"],"names":[],"mappings":"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"}