@ggui-ai/ui-gen 0.27.0 → 0.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (315) hide show
  1. package/dist/{adapter-h4_V69LI.d.ts → adapter-DLQ-5COm.d.ts} +1 -1
  2. package/dist/adapters/base.js +2 -27
  3. package/dist/adapters/base.js.map +1 -1
  4. package/dist/adapters/generation-dispatch.d.ts +14 -6
  5. package/dist/adapters/generation-dispatch.js +40 -19095
  6. package/dist/adapters/generation-dispatch.js.map +1 -1
  7. package/dist/adapters/index.d.ts +1 -1
  8. package/dist/adapters/index.js +25 -3561
  9. package/dist/adapters/index.js.map +1 -1
  10. package/dist/adapters/types.js +2 -9
  11. package/dist/adapters/types.js.map +1 -1
  12. package/dist/advanced/index.d.ts +13 -12
  13. package/dist/advanced/index.js +63 -21789
  14. package/dist/advanced/index.js.map +1 -1
  15. package/dist/{bank-Ctdp3FUA.d.ts → bank-LWaiAtaA.d.ts} +1 -1
  16. package/dist/blueprint-validator.js +6 -2301
  17. package/dist/blueprint-validator.js.map +1 -1
  18. package/dist/boilerplate.d.ts +3 -2
  19. package/dist/boilerplate.js +6 -1867
  20. package/dist/boilerplate.js.map +1 -1
  21. package/dist/check/index.d.ts +3 -2
  22. package/dist/check/index.js +6 -1923
  23. package/dist/check/index.js.map +1 -1
  24. package/dist/chunk-33B3BAWS.js +24 -0
  25. package/dist/chunk-33B3BAWS.js.map +1 -0
  26. package/dist/chunk-3HSGA6NI.js +591 -0
  27. package/dist/chunk-3HSGA6NI.js.map +1 -0
  28. package/dist/chunk-3NNNGNTO.js +1707 -0
  29. package/dist/chunk-3NNNGNTO.js.map +1 -0
  30. package/dist/chunk-3T2HMTON.js +79 -0
  31. package/dist/chunk-3T2HMTON.js.map +1 -0
  32. package/dist/chunk-3ZSSDV3L.js +123 -0
  33. package/dist/chunk-3ZSSDV3L.js.map +1 -0
  34. package/dist/chunk-4MBR5GA3.js +99 -0
  35. package/dist/chunk-4MBR5GA3.js.map +1 -0
  36. package/dist/chunk-56NJFD55.js +337 -0
  37. package/dist/chunk-56NJFD55.js.map +1 -0
  38. package/dist/chunk-5AGTY555.js +26 -0
  39. package/dist/chunk-5AGTY555.js.map +1 -0
  40. package/dist/chunk-5EJM7EGY.js +115 -0
  41. package/dist/chunk-5EJM7EGY.js.map +1 -0
  42. package/dist/chunk-5KXCQLLR.js +529 -0
  43. package/dist/chunk-5KXCQLLR.js.map +1 -0
  44. package/dist/chunk-5VBXHVEH.js +171 -0
  45. package/dist/chunk-5VBXHVEH.js.map +1 -0
  46. package/dist/chunk-6KDDEING.js +515 -0
  47. package/dist/chunk-6KDDEING.js.map +1 -0
  48. package/dist/chunk-6VDRWAP6.js +123 -0
  49. package/dist/chunk-6VDRWAP6.js.map +1 -0
  50. package/dist/chunk-732IBFEJ.js +2400 -0
  51. package/dist/chunk-732IBFEJ.js.map +1 -0
  52. package/dist/chunk-73AURS3I.js +46 -0
  53. package/dist/chunk-73AURS3I.js.map +1 -0
  54. package/dist/chunk-77H5SKLX.js +8 -0
  55. package/dist/chunk-77H5SKLX.js.map +1 -0
  56. package/dist/chunk-7QE3AHLE.js +35 -0
  57. package/dist/chunk-7QE3AHLE.js.map +1 -0
  58. package/dist/chunk-A375NNWN.js +11 -0
  59. package/dist/chunk-A375NNWN.js.map +1 -0
  60. package/dist/chunk-AOU33EFS.js +140 -0
  61. package/dist/chunk-AOU33EFS.js.map +1 -0
  62. package/dist/chunk-BA4QYA6E.js +461 -0
  63. package/dist/chunk-BA4QYA6E.js.map +1 -0
  64. package/dist/chunk-DBP764GL.js +3 -0
  65. package/dist/chunk-DBP764GL.js.map +1 -0
  66. package/dist/chunk-DUU3ZJDQ.js +41 -0
  67. package/dist/chunk-DUU3ZJDQ.js.map +1 -0
  68. package/dist/chunk-DXKRBXNU.js +30 -0
  69. package/dist/chunk-DXKRBXNU.js.map +1 -0
  70. package/dist/chunk-FB7OEEAH.js +1467 -0
  71. package/dist/chunk-FB7OEEAH.js.map +1 -0
  72. package/dist/chunk-FLRNMZV2.js +18 -0
  73. package/dist/chunk-FLRNMZV2.js.map +1 -0
  74. package/dist/chunk-FWJIMKFZ.js +2032 -0
  75. package/dist/chunk-FWJIMKFZ.js.map +1 -0
  76. package/dist/chunk-FXRHWYIQ.js +163 -0
  77. package/dist/chunk-FXRHWYIQ.js.map +1 -0
  78. package/dist/chunk-G3PMV62Z.js +33 -0
  79. package/dist/chunk-G3PMV62Z.js.map +1 -0
  80. package/dist/chunk-GAJI7Y3P.js +13 -0
  81. package/dist/chunk-GAJI7Y3P.js.map +1 -0
  82. package/dist/chunk-GYINWMPR.js +2052 -0
  83. package/dist/chunk-GYINWMPR.js.map +1 -0
  84. package/dist/chunk-HD6ABIK7.js +484 -0
  85. package/dist/chunk-HD6ABIK7.js.map +1 -0
  86. package/dist/chunk-HDQVHYO6.js +100 -0
  87. package/dist/chunk-HDQVHYO6.js.map +1 -0
  88. package/dist/chunk-IHUT3SIW.js +7 -0
  89. package/dist/chunk-IHUT3SIW.js.map +1 -0
  90. package/dist/chunk-JDH5EGNZ.js +126 -0
  91. package/dist/chunk-JDH5EGNZ.js.map +1 -0
  92. package/dist/chunk-JMD4RGSV.js +37 -0
  93. package/dist/chunk-JMD4RGSV.js.map +1 -0
  94. package/dist/chunk-KJWGZL5B.js +33 -0
  95. package/dist/chunk-KJWGZL5B.js.map +1 -0
  96. package/dist/chunk-MKMDQFZ7.js +86 -0
  97. package/dist/chunk-MKMDQFZ7.js.map +1 -0
  98. package/dist/chunk-NF6JUZWF.js +85 -0
  99. package/dist/chunk-NF6JUZWF.js.map +1 -0
  100. package/dist/chunk-O2YC6XDC.js +1933 -0
  101. package/dist/chunk-O2YC6XDC.js.map +1 -0
  102. package/dist/chunk-OVLH5ICV.js +29 -0
  103. package/dist/chunk-OVLH5ICV.js.map +1 -0
  104. package/dist/chunk-PBOYHGSD.js +106 -0
  105. package/dist/chunk-PBOYHGSD.js.map +1 -0
  106. package/dist/chunk-PJFH7QWA.js +81 -0
  107. package/dist/chunk-PJFH7QWA.js.map +1 -0
  108. package/dist/chunk-PUH4CXGZ.js +284 -0
  109. package/dist/chunk-PUH4CXGZ.js.map +1 -0
  110. package/dist/chunk-QLXXPGTV.js +18 -0
  111. package/dist/chunk-QLXXPGTV.js.map +1 -0
  112. package/dist/chunk-R5GIGPW2.js +2845 -0
  113. package/dist/chunk-R5GIGPW2.js.map +1 -0
  114. package/dist/chunk-RH4IUSTO.js +83 -0
  115. package/dist/chunk-RH4IUSTO.js.map +1 -0
  116. package/dist/chunk-S2GVXKKY.js +153 -0
  117. package/dist/chunk-S2GVXKKY.js.map +1 -0
  118. package/dist/chunk-TVHGKFJS.js +58 -0
  119. package/dist/chunk-TVHGKFJS.js.map +1 -0
  120. package/dist/chunk-U7GALWLG.js +66 -0
  121. package/dist/chunk-U7GALWLG.js.map +1 -0
  122. package/dist/chunk-VTC263LT.js +256 -0
  123. package/dist/chunk-VTC263LT.js.map +1 -0
  124. package/dist/chunk-WEOXFEVE.js +739 -0
  125. package/dist/chunk-WEOXFEVE.js.map +1 -0
  126. package/dist/chunk-WYHP46LT.js +28 -0
  127. package/dist/chunk-WYHP46LT.js.map +1 -0
  128. package/dist/chunk-XGLO5LGG.js +274 -0
  129. package/dist/chunk-XGLO5LGG.js.map +1 -0
  130. package/dist/chunk-XRBCRKA2.js +29 -0
  131. package/dist/chunk-XRBCRKA2.js.map +1 -0
  132. package/dist/chunk-XW7ADFFV.js +340 -0
  133. package/dist/chunk-XW7ADFFV.js.map +1 -0
  134. package/dist/chunk-YIQ42IUX.js +34 -0
  135. package/dist/chunk-YIQ42IUX.js.map +1 -0
  136. package/dist/chunk-YJZTUY7B.js +101 -0
  137. package/dist/chunk-YJZTUY7B.js.map +1 -0
  138. package/dist/chunk-Z3CXME3K.js +107 -0
  139. package/dist/chunk-Z3CXME3K.js.map +1 -0
  140. package/dist/classifier/index.js +2 -527
  141. package/dist/classifier/index.js.map +1 -1
  142. package/dist/client-JBPCXU7W.js +4 -0
  143. package/dist/client-JBPCXU7W.js.map +1 -0
  144. package/dist/compose.js +3 -367
  145. package/dist/compose.js.map +1 -1
  146. package/dist/cost-tracker-HHGQ4FTW.js +67 -0
  147. package/dist/cost-tracker-HHGQ4FTW.js.map +1 -0
  148. package/dist/{create-ui-generator-BrZHF0cf.d.ts → create-ui-generator-BY-WeaPi.d.ts} +3 -3
  149. package/dist/{design-mode-DGWN_Gkm.d.ts → design-mode-XyOQmzE0.d.ts} +4 -3
  150. package/dist/{dispatch-B07TI30d.d.ts → dispatch-8LzTddKw.d.ts} +3 -2
  151. package/dist/dist-UALN6ZVB.js +543 -0
  152. package/dist/dist-UALN6ZVB.js.map +1 -0
  153. package/dist/dupe-break-X6K7QFIS.js +4 -0
  154. package/dist/dupe-break-X6K7QFIS.js.map +1 -0
  155. package/dist/evaluation/axis-checks/index.d.ts +5 -4
  156. package/dist/evaluation/axis-checks/index.js +6 -1818
  157. package/dist/evaluation/axis-checks/index.js.map +1 -1
  158. package/dist/evaluation/axis-checks/registry.d.ts +3 -2
  159. package/dist/evaluation/axis-checks/registry.js +3 -1748
  160. package/dist/evaluation/axis-checks/registry.js.map +1 -1
  161. package/dist/evaluation/index.d.ts +49 -132
  162. package/dist/evaluation/index.js +302 -6368
  163. package/dist/evaluation/index.js.map +1 -1
  164. package/dist/evaluation/types.d.ts +3 -2
  165. package/dist/evaluation/types.js +2 -5
  166. package/dist/evaluation/types.js.map +1 -1
  167. package/dist/fragments/index.js +2 -338
  168. package/dist/fragments/index.js.map +1 -1
  169. package/dist/{generate-tSO_shQ0.d.ts → generate-DQ4ci90s.d.ts} +1 -1
  170. package/dist/harness/check/runtime-render/index.d.ts +35 -15
  171. package/dist/harness/check/runtime-render/index.js +6 -2390
  172. package/dist/harness/check/runtime-render/index.js.map +1 -1
  173. package/dist/harness/check/runtime-render/render-check-worker.js +4 -1739
  174. package/dist/harness/check/runtime-render/render-check-worker.js.map +1 -1
  175. package/dist/harness/index.d.ts +3 -2
  176. package/dist/harness/index.js +23 -5124
  177. package/dist/harness/index.js.map +1 -1
  178. package/dist/harness/llm-trace-sink.js +2 -24
  179. package/dist/harness/llm-trace-sink.js.map +1 -1
  180. package/dist/harness/prompts.d.ts +2 -2
  181. package/dist/harness/prompts.js +8 -324
  182. package/dist/harness/prompts.js.map +1 -1
  183. package/dist/harness/result-types.d.ts +18 -6
  184. package/dist/harness/result-types.js +2 -0
  185. package/dist/harness/result-types.js.map +1 -1
  186. package/dist/harness/runtime.d.ts +22 -5
  187. package/dist/harness/runtime.js +10 -2313
  188. package/dist/harness/runtime.js.map +1 -1
  189. package/dist/harness/types-public.d.ts +3 -2
  190. package/dist/harness/types-public.js +16 -2954
  191. package/dist/harness/types-public.js.map +1 -1
  192. package/dist/harness/validator-trace-sink.d.ts +3 -2
  193. package/dist/harness/validator-trace-sink.js +2 -26
  194. package/dist/harness/validator-trace-sink.js.map +1 -1
  195. package/dist/hash.js +2 -39
  196. package/dist/hash.js.map +1 -1
  197. package/dist/hashline-5OKREIRM.js +4 -0
  198. package/dist/hashline-5OKREIRM.js.map +1 -0
  199. package/dist/index.d.ts +51 -12
  200. package/dist/index.js +57 -21850
  201. package/dist/index.js.map +1 -1
  202. package/dist/llm-evaluator-PN3WFCS4.js +653 -0
  203. package/dist/llm-evaluator-PN3WFCS4.js.map +1 -0
  204. package/dist/magic-string.es-2NZTC4GZ.js +1307 -0
  205. package/dist/magic-string.es-2NZTC4GZ.js.map +1 -0
  206. package/dist/patch.d.ts +3 -2
  207. package/dist/patch.js +2 -56
  208. package/dist/patch.js.map +1 -1
  209. package/dist/policy-VCYKGSAC.js +5 -0
  210. package/dist/policy-VCYKGSAC.js.map +1 -0
  211. package/dist/policy.js +2 -35
  212. package/dist/policy.js.map +1 -1
  213. package/dist/primitive-index-2OF6F4TZ.js +131 -0
  214. package/dist/primitive-index-2OF6F4TZ.js.map +1 -0
  215. package/dist/primitive-slice-WTMBLYFJ.js +235 -0
  216. package/dist/primitive-slice-WTMBLYFJ.js.map +1 -0
  217. package/dist/{prompts-BhNUuRoZ.d.ts → prompts-CLZGywMP.d.ts} +1 -1
  218. package/dist/provider-adapter-contract.js +10407 -14204
  219. package/dist/provider-adapter-contract.js.map +1 -1
  220. package/dist/provider-adapter.js +2 -44
  221. package/dist/provider-adapter.js.map +1 -1
  222. package/dist/providers/index.d.ts +89 -1
  223. package/dist/providers/index.js +115 -44
  224. package/dist/providers/index.js.map +1 -1
  225. package/dist/raw-C6KBH5I3.js +141 -0
  226. package/dist/raw-C6KBH5I3.js.map +1 -0
  227. package/dist/raw-FXSBXQTZ.js +7 -0
  228. package/dist/raw-FXSBXQTZ.js.map +1 -0
  229. package/dist/raw-MURDUPGK.js +8 -0
  230. package/dist/raw-MURDUPGK.js.map +1 -0
  231. package/dist/raw-T3GW3UVX.js +8 -0
  232. package/dist/raw-T3GW3UVX.js.map +1 -0
  233. package/dist/render-check-host-ZNIS6BJ5.js +5 -0
  234. package/dist/render-check-host-ZNIS6BJ5.js.map +1 -0
  235. package/dist/sdk-4JNSDNSR.js +6 -0
  236. package/dist/sdk-4JNSDNSR.js.map +1 -0
  237. package/dist/sdk-DIVJMHCX.js +7 -0
  238. package/dist/sdk-DIVJMHCX.js.map +1 -0
  239. package/dist/sdk-QRJOCRTS.js +7 -0
  240. package/dist/sdk-QRJOCRTS.js.map +1 -0
  241. package/dist/tag-balance-CTHCTRJ7.js +123 -0
  242. package/dist/tag-balance-CTHCTRJ7.js.map +1 -0
  243. package/dist/tools/get-primitives-ts.d.ts +1 -1
  244. package/dist/tools/get-primitives-ts.js +3 -1
  245. package/dist/tools/get-primitives-ts.js.map +1 -1
  246. package/dist/tools/render-check-worker.js +3 -40
  247. package/dist/tools/render-check-worker.js.map +1 -1
  248. package/dist/{types-public-h8IMnYuh.d.ts → types-public-hYlrerZh.d.ts} +35 -2
  249. package/dist/validation/index.d.ts +2 -2
  250. package/dist/validation/index.js +3 -498
  251. package/dist/validation/index.js.map +1 -1
  252. package/dist/{visual-evaluator-C2strxqD.d.ts → visual-evaluator-KskajxD5.d.ts} +14 -4
  253. package/dist/visual-evaluator-TGEXYQTP.js +12 -0
  254. package/dist/visual-evaluator-TGEXYQTP.js.map +1 -0
  255. package/dist/workflows.d.ts +3 -2
  256. package/dist/workflows.js +2 -151
  257. package/dist/workflows.js.map +1 -1
  258. package/package.json +21 -17
  259. package/src/adapters/claude/sdk.ts +4 -2
  260. package/src/adapters/claude/tool-bridge.ts +2 -1
  261. package/src/adapters/generation-dispatch.ts +9 -0
  262. package/src/adapters/openai/raw.ts +4 -0
  263. package/src/adapters/openai/sdk.ts +6 -1
  264. package/src/adapters/openai/tokens.ts +21 -7
  265. package/src/adapters/provider-router.ts +1 -0
  266. package/src/adapters/tool-bridge.ts +1 -1
  267. package/src/adapters/tools.ts +1 -1
  268. package/src/advanced/feedback.ts +1 -2
  269. package/src/advanced/generator.ts +4 -3
  270. package/src/boilerplate/free-design-prompt.ts +7 -0
  271. package/src/boilerplate/generate.ts +18 -5
  272. package/src/boilerplate/hard-sections.ts +8 -3
  273. package/src/boilerplate/react-hooks.ts +56 -0
  274. package/src/boilerplate/system-prompt.ts +12 -3
  275. package/src/check/run-tier0.ts +233 -8
  276. package/src/check/type-checker.ts +128 -16
  277. package/src/coding-agent/tools.ts +26 -3
  278. package/src/create-ui-generator.ts +4 -2
  279. package/src/design-mode.ts +4 -9
  280. package/src/evaluation/axis-checks/checks/state-merge.ts +3 -5
  281. package/src/evaluation/axis-checks/checks/state-payload.ts +1 -28
  282. package/src/evaluation/axis-checks/checks/tint.ts +197 -0
  283. package/src/evaluation/axis-checks/helpers.ts +246 -0
  284. package/src/evaluation/axis-checks/registry.ts +2 -0
  285. package/src/evaluation/criteria/__fixtures__/edge-v2-draw2.json +4629 -0
  286. package/src/evaluation/criteria/bank.ts +1 -1
  287. package/src/evaluation/criteria/edge-instruments.ts +14 -0
  288. package/src/evaluation/criteria/edge-probe-v2.ts +352 -0
  289. package/src/evaluation/criteria/edge-v2.ts +242 -0
  290. package/src/evaluation/criteria/resolve.ts +24 -5
  291. package/src/evaluation/evaluator.ts +2 -2
  292. package/src/evaluation/index.ts +3 -5
  293. package/src/evaluation/llm-evaluator.ts +2 -2
  294. package/src/evaluation/mcp-server.ts +0 -50
  295. package/src/evaluation/types-public.ts +6 -1
  296. package/src/evaluation/visual-evaluator.ts +162 -31
  297. package/src/harness/check/runtime-render/index.ts +28 -4
  298. package/src/harness/check/runtime-render/render-check.ts +20 -21
  299. package/src/harness/claude-agent-sdk-loader.ts +93 -0
  300. package/src/harness/claude-code-login-query.ts +1 -1
  301. package/src/harness/coding/assemble-result.ts +1 -0
  302. package/src/harness/coding/dupe-break.ts +70 -0
  303. package/src/harness/coding/generate-task-runner.ts +6 -1
  304. package/src/harness/coding/run-coding-turn.ts +59 -1
  305. package/src/harness/coding/run-eval-round.ts +9 -0
  306. package/src/harness/llm-router.ts +50 -2
  307. package/src/harness/result-types.ts +12 -0
  308. package/src/harness/runtime.ts +17 -0
  309. package/src/index.ts +10 -1
  310. package/src/providers/anthropic-tool-call.ts +263 -0
  311. package/src/providers/index.ts +13 -0
  312. package/src/tools/get-primitives-ts.ts +1 -1
  313. package/src/tools/render-check.ts +4 -4
  314. package/src/validation/primitives.ts +2 -1
  315. package/src/evaluation/loop.ts +0 -218
@@ -0,0 +1,123 @@
1
+ import { createCapture, captureMarkers, captureSourceCode, captureCompiledCode } from './chunk-YJZTUY7B.js';
2
+ import { GeneratorAdapter, hasCredentials } from './chunk-XRBCRKA2.js';
3
+ import { toolArgsToJsonObject, zodToJsonSchema } from './chunk-7QE3AHLE.js';
4
+
5
+ // src/adapters/google/raw.ts
6
+ async function loadGoogleGenAI() {
7
+ return import('@google/genai');
8
+ }
9
+ var GoogleRawAdapter = class extends GeneratorAdapter {
10
+ provider = "google";
11
+ mode = "raw";
12
+ displayName = "Google Gemini (Interactions API)";
13
+ client = null;
14
+ constructor(config = {}) {
15
+ super(config);
16
+ }
17
+ isAvailable() {
18
+ return hasCredentials(this.config, "GEMINI_API_KEY", "GOOGLE_API_KEY");
19
+ }
20
+ async generate(params) {
21
+ const startTime = Date.now();
22
+ if (!this.client) {
23
+ const { GoogleGenAI } = await loadGoogleGenAI();
24
+ this.client = new GoogleGenAI({
25
+ apiKey: this.config.apiKey || process.env.GEMINI_API_KEY || process.env.GOOGLE_API_KEY,
26
+ httpOptions: { timeout: 3e5 }
27
+ // 5 min — Pro models can be slow
28
+ });
29
+ }
30
+ const tools = params.tools.map(toInteractionTool);
31
+ const capture = createCapture();
32
+ let totalInputTokens = 0;
33
+ let totalOutputTokens = 0;
34
+ let turnsUsed = 0;
35
+ const thinkingLevel = this.config.thinkingLevel;
36
+ const generationConfig = thinkingLevel ? { thinking_level: thinkingLevel } : void 0;
37
+ let interaction = await this.client.interactions.create({
38
+ model: params.model,
39
+ system_instruction: params.systemPrompt,
40
+ tools,
41
+ input: params.userPrompt,
42
+ ...generationConfig ? { generation_config: generationConfig } : {}
43
+ });
44
+ for (let turn = 0; turn < params.maxTurns; turn++) {
45
+ turnsUsed = turn + 1;
46
+ if (interaction.usage) {
47
+ totalInputTokens += interaction.usage.total_input_tokens ?? 0;
48
+ totalOutputTokens += interaction.usage.total_output_tokens ?? 0;
49
+ }
50
+ for (const step of interaction.steps) {
51
+ if (step.type === "model_output") {
52
+ for (const content of step.content ?? []) {
53
+ if (content.type === "text") {
54
+ captureMarkers(capture, content.text);
55
+ }
56
+ }
57
+ }
58
+ }
59
+ const functionCalls = interaction.steps.filter(
60
+ (s) => s.type === "function_call"
61
+ );
62
+ if (functionCalls.length === 0) break;
63
+ const results = [];
64
+ for (const fc of functionCalls) {
65
+ const toolDef = params.tools.find((t) => t.name === fc.name);
66
+ if (!toolDef) {
67
+ results.push({
68
+ type: "function_result",
69
+ call_id: fc.id,
70
+ name: fc.name,
71
+ result: JSON.stringify({ error: `Tool '${fc.name}' not found` }),
72
+ is_error: true
73
+ });
74
+ continue;
75
+ }
76
+ const args = toolArgsToJsonObject(fc.arguments);
77
+ captureSourceCode(capture, fc.name, args);
78
+ const result = await toolDef.handler(args);
79
+ captureCompiledCode(capture, fc.name, result);
80
+ results.push({
81
+ type: "function_result",
82
+ call_id: fc.id,
83
+ name: fc.name,
84
+ result: result.content[0]?.text ?? ""
85
+ });
86
+ }
87
+ interaction = await this.client.interactions.create({
88
+ model: params.model,
89
+ previous_interaction_id: interaction.id,
90
+ input: results,
91
+ ...generationConfig ? { generation_config: generationConfig } : {}
92
+ });
93
+ }
94
+ if (!capture.compiledCode) {
95
+ throw new Error("Google raw adapter: no compiled code produced after all turns");
96
+ }
97
+ return {
98
+ compiledCode: capture.compiledCode,
99
+ sourceCode: capture.sourceCode,
100
+ stream: capture.stream,
101
+ generatorMeta: capture.generatorMeta,
102
+ tokens: {
103
+ input: totalInputTokens,
104
+ output: totalOutputTokens,
105
+ total: totalInputTokens + totalOutputTokens
106
+ },
107
+ generationTimeMs: Date.now() - startTime,
108
+ turnsUsed
109
+ };
110
+ }
111
+ };
112
+ function toInteractionTool(def) {
113
+ return {
114
+ type: "function",
115
+ name: def.name,
116
+ description: def.description,
117
+ parameters: zodToJsonSchema(def.inputSchema)
118
+ };
119
+ }
120
+
121
+ export { GoogleRawAdapter };
122
+ //# sourceMappingURL=chunk-6VDRWAP6.js.map
123
+ //# sourceMappingURL=chunk-6VDRWAP6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/adapters/google/raw.ts"],"names":[],"mappings":"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","file":"chunk-6VDRWAP6.js","sourcesContent":["// packages/ui-gen/src/adapters/google/raw.ts\n//\n// Google adapter using the Interactions API (@google/genai >= 2.0.0,\n// 'steps' schema). Uses interactions.create() with\n// previous_interaction_id for server-side state management. System\n// prompt and tools sent on turn 1, subsequent turns only send\n// function_result steps — server remembers context.\n\nimport type { GoogleGenAI as GoogleGenAIType, Interactions } from '@google/genai';\nimport { GeneratorAdapter, hasCredentials } from '../base';\nimport type { AdapterConfig, GenerateParams } from '../base';\nimport type { AdapterResult, ToolDefinition, ProviderName, AdapterMode } from '../types';\nimport { zodToJsonSchema, toolArgsToJsonObject } from '../tool-bridge';\nimport { createCapture, captureSourceCode, captureCompiledCode, captureMarkers } from '../extract-code';\n\nasync function loadGoogleGenAI() {\n return import('@google/genai');\n}\n\nexport class GoogleRawAdapter extends GeneratorAdapter {\n readonly provider: ProviderName = 'google';\n readonly mode: AdapterMode = 'raw';\n readonly displayName = 'Google Gemini (Interactions API)';\n\n private client: GoogleGenAIType | null = null;\n\n constructor(config: AdapterConfig = {}) {\n super(config);\n }\n\n isAvailable(): boolean {\n return hasCredentials(this.config, 'GEMINI_API_KEY', 'GOOGLE_API_KEY');\n }\n\n async generate(params: GenerateParams): Promise<AdapterResult> {\n const startTime = Date.now();\n\n if (!this.client) {\n const { GoogleGenAI } = await loadGoogleGenAI();\n this.client = new GoogleGenAI({\n apiKey: this.config.apiKey || process.env.GEMINI_API_KEY || process.env.GOOGLE_API_KEY,\n httpOptions: { timeout: 300_000 }, // 5 min — Pro models can be slow\n });\n }\n\n const tools = params.tools.map(toInteractionTool);\n const capture = createCapture();\n let totalInputTokens = 0;\n let totalOutputTokens = 0;\n let turnsUsed = 0;\n\n // Thinking control. Gemini 3.x Flash defaults thinking ON — the\n // dominant latency cost in UI generation, where the task is\n // contract-bounded code emission, not open-ended reasoning. The\n // Interactions API exposes this as `generation_config.thinking_level`\n // ('minimal' is the floor — there is no true off — then 'low' /\n // 'medium' / 'high'). When the caller pins a level we forward it on\n // every turn. Omitted → provider default (unchanged behavior).\n const thinkingLevel = this.config.thinkingLevel;\n const generationConfig = thinkingLevel\n ? { thinking_level: thinkingLevel }\n : undefined;\n\n // Turn 1: send system instruction + tools + user prompt\n let interaction = await this.client.interactions.create({\n model: params.model,\n system_instruction: params.systemPrompt,\n tools,\n input: params.userPrompt,\n ...(generationConfig ? { generation_config: generationConfig } : {}),\n });\n\n for (let turn = 0; turn < params.maxTurns; turn++) {\n turnsUsed = turn + 1;\n\n // Track tokens\n if (interaction.usage) {\n totalInputTokens += interaction.usage.total_input_tokens ?? 0;\n totalOutputTokens += interaction.usage.total_output_tokens ?? 0;\n }\n\n // Scan model-output text for streamSpec/generatorMeta markers.\n // `steps` is a discriminated union — even at thinking_level\n // 'minimal' a `thought` step is present, so iterate by\n // discriminant and skip step types we don't consume.\n for (const step of interaction.steps) {\n if (step.type === 'model_output') {\n for (const content of step.content ?? []) {\n if (content.type === 'text') {\n captureMarkers(capture, content.text);\n }\n }\n }\n }\n\n // Collect function calls\n const functionCalls = interaction.steps.filter(\n (s): s is Interactions.FunctionCallStep => s.type === 'function_call',\n );\n\n if (functionCalls.length === 0) break;\n\n // Execute tools and build function_result inputs\n const results: Interactions.FunctionResultStep[] = [];\n\n for (const fc of functionCalls) {\n const toolDef = params.tools.find((t) => t.name === fc.name);\n if (!toolDef) {\n results.push({\n type: 'function_result',\n call_id: fc.id,\n name: fc.name,\n result: JSON.stringify({ error: `Tool '${fc.name}' not found` }),\n is_error: true,\n });\n continue;\n }\n\n const args = toolArgsToJsonObject(fc.arguments);\n captureSourceCode(capture, fc.name, args);\n\n const result = await toolDef.handler(args);\n captureCompiledCode(capture, fc.name, result);\n\n results.push({\n type: 'function_result',\n call_id: fc.id,\n name: fc.name,\n result: result.content[0]?.text ?? '',\n });\n }\n\n // Next turn: only send function results — server has the history\n interaction = await this.client.interactions.create({\n model: params.model,\n previous_interaction_id: interaction.id,\n input: results,\n ...(generationConfig ? { generation_config: generationConfig } : {}),\n });\n }\n\n if (!capture.compiledCode) {\n throw new Error('Google raw adapter: no compiled code produced after all turns');\n }\n\n return {\n compiledCode: capture.compiledCode,\n sourceCode: capture.sourceCode,\n stream: capture.stream,\n generatorMeta: capture.generatorMeta,\n tokens: {\n input: totalInputTokens,\n output: totalOutputTokens,\n total: totalInputTokens + totalOutputTokens,\n },\n generationTimeMs: Date.now() - startTime,\n turnsUsed,\n };\n }\n}\n\n/** Convert ToolDefinition to Interactions API function tool format. */\nfunction toInteractionTool(def: ToolDefinition): Interactions.Function {\n return {\n type: 'function',\n name: def.name,\n description: def.description,\n parameters: zodToJsonSchema(def.inputSchema),\n };\n}\n"]}