@webskill/sdk 0.11.0 → 0.13.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 (33) hide show
  1. package/dist/agent.d.ts +3 -3
  2. package/dist/agent.js +3 -3
  3. package/dist/browser.d.ts +29 -6
  4. package/dist/browser.js +629 -75
  5. package/dist/{catalogComponents-BFoqpT1v-CjUBZ3bc.js → catalogComponents-BgAJN0p8-CYEXSk45.js} +606 -926
  6. package/dist/{dist-DTHZS2k1.js → dist-DqcL6jKO.js} +155 -39
  7. package/dist/{dist-B-cOu08W.js → dist-ExSQky4C.js} +754 -69
  8. package/dist/{dist-qnlI2Iup.js → dist-GK6dtjRv.js} +222 -9
  9. package/dist/{echarts-DhNm2ene.js → echarts-De78wXqV.js} +599 -61
  10. package/dist/governance.d.ts +3 -3
  11. package/dist/{index-DACk2_XZ.d.ts → index-C3XdItd_.d.ts} +92 -8
  12. package/dist/{index-D3mONFHD.d.ts → index-DkvBhJQy.d.ts} +187 -6
  13. package/dist/{index-DWbs58LF.d.ts → index-iBm9tJL_.d.ts} +122 -23
  14. package/dist/index.d.ts +4 -4
  15. package/dist/index.js +3 -3
  16. package/dist/mcp.d.ts +47 -3
  17. package/dist/mcp.js +79 -2
  18. package/dist/node.d.ts +3 -3
  19. package/dist/node.js +9 -3
  20. package/dist/{openUiLibrary-D5u8oIvx-BLOAQCho.js → openUiLibrary-BKXW7Iwx-CWWBVOkE.js} +3 -3
  21. package/dist/processSandboxEntry.js +2 -1
  22. package/dist/sandboxWorkerEntry.js +2 -1
  23. package/dist/{skillVersionStore-D-qHk9ZE-BcmFLykd.d.ts → skillVersionStore-D-qHk9ZE-DheTIwAB.d.ts} +1 -1
  24. package/dist/testing.d.ts +1 -1
  25. package/dist/{types-C26b05fW-CdrRCRDb.d.ts → types-DLctJep_-B5G4uk2u.d.ts} +3 -2
  26. package/dist/ui-react.d.ts +13 -4
  27. package/dist/ui-react.js +77 -259
  28. package/dist/ui-vue.d.ts +1 -1
  29. package/dist/ui-vue.js +1 -1
  30. package/dist/ui.d.ts +4 -4
  31. package/dist/ui.js +3 -3
  32. package/dist/{webskillLitCatalog-DME6PBkV-CmYNLlIT.js → webskillLitCatalog-D_zCqeQF-C9lrvvMr.js} +2 -2
  33. package/package.json +2 -1
@@ -1,7 +1,7 @@
1
1
  import { h as WebSkillError } from "./dist-Bev6i6Ip.js";
2
2
  import { toJSONSchema, z } from "zod";
3
3
 
4
- //#region ../ui/dist/webskillCatalog-DrmnCbsR.js
4
+ //#region ../ui/dist/webskillCatalog-nTgkL9Xe.js
5
5
  const DEFAULT_INTERACTION_TEXTS = {
6
6
  submit: "Submit",
7
7
  cancel: "Cancel",
@@ -39,6 +39,19 @@ function resolveSurfaceFormTexts(texts) {
39
39
  ...texts
40
40
  } : DEFAULT_SURFACE_FORM_TEXTS;
41
41
  }
42
+ const DEFAULT_SURFACE_HOST_CONTROL_TEXTS = {
43
+ previousPage: "Previous page",
44
+ previous: "Previous",
45
+ nextPage: "Next page",
46
+ next: "Next",
47
+ carousel: "Carousel"
48
+ };
49
+ function resolveSurfaceHostControlTexts(texts) {
50
+ return texts ? {
51
+ ...DEFAULT_SURFACE_HOST_CONTROL_TEXTS,
52
+ ...texts
53
+ } : DEFAULT_SURFACE_HOST_CONTROL_TEXTS;
54
+ }
42
55
  /** 提交值按请求类型归形(WebFormBridge 与框架组件库共享单一来源) */
43
56
  function shapeInteractionValue(model, values) {
44
57
  switch (model.kind) {
@@ -216,23 +229,27 @@ function renderMiniMarkdown(text, doc) {
216
229
  }
217
230
  return root;
218
231
  }
232
+ /** 与 catalog `Chart` 的 props 枚举逐字一致(`ui/catalog/uiCatalog.ts`) */
219
233
  const KINDS = /* @__PURE__ */ new Set([
220
234
  "bar",
221
235
  "line",
222
- "pie"
236
+ "area",
237
+ "pie",
238
+ "scatter",
239
+ "stacked-bar",
240
+ "dual-axis"
223
241
  ]);
224
242
  const list = (value) => Array.isArray(value) ? value : [];
225
243
  /**
226
244
  * catalog `Chart` 节点 props → `ChartSpec`。四档共用这一份转换:
227
245
  * 此前 native / OpenUI / json-render / A2UI 各抄了一遍,改一处就会漂移。
228
- * catalog `area` 在 `ChartSpec` 里没有对应枚举,按折线渲染——
229
- * 原先的裸 cast 会把非法枚举一路带进渲染器,画出空图。
246
+ * 非法枚举**原样保留**,由 `toEchartsOption` 给出可见降级提示——
247
+ * 此前偷偷改写成 `'line'`,画出的图与模型的意图无关且不可察觉。
230
248
  */
231
249
  function chartSpecFromProps(props) {
232
- const type = typeof props["type"] === "string" ? props["type"] : "bar";
233
250
  const series = list(props["series"]);
234
251
  return {
235
- kind: KINDS.has(type) ? type : "line",
252
+ kind: typeof props["type"] === "string" ? props["type"] : "",
236
253
  labels: list(props["labels"]),
237
254
  series: series.map((item) => ({
238
255
  ...typeof item.name === "string" ? { name: item.name } : {},
@@ -242,24 +259,70 @@ function chartSpecFromProps(props) {
242
259
  };
243
260
  }
244
261
  const seriesNames = (chart) => chart.series.map((series) => series.name ?? "");
262
+ /** 字号默认值的**全仓唯一来源**;`12` 是 echarts 的全局默认,显式写出后渲染不变 */
263
+ const DEFAULT_CHART_FONT_SIZES = {
264
+ title: 14,
265
+ axisLabel: 12,
266
+ legend: 12
267
+ };
268
+ /** 逐字段兜底:宿主通常只想调大其中一两项 */
269
+ function resolveChartFontSizes(sizes) {
270
+ return {
271
+ ...DEFAULT_CHART_FONT_SIZES,
272
+ ...sizes
273
+ };
274
+ }
245
275
  /** echarts 的图例条目来源:饼图按标签分项,其余按系列名 */
246
276
  const legendEntries = (chart) => chart.kind === "pie" ? chart.labels : seriesNames(chart);
277
+ /**
278
+ * 非饼图的 series 形状表:catalog 声明的每种类型对应「基础 type + 零到一个修饰」。
279
+ * 饼图不在表内——它的 data 要按 labels 重组,形状与其余六种不同。
280
+ */
281
+ const SERIES_SHAPE = {
282
+ bar: { type: "bar" },
283
+ line: { type: "line" },
284
+ area: {
285
+ type: "line",
286
+ areaStyle: {}
287
+ },
288
+ scatter: { type: "scatter" },
289
+ "stacked-bar": {
290
+ type: "bar",
291
+ stack: "total"
292
+ },
293
+ "dual-axis": { type: "line" }
294
+ };
295
+ const FALLBACK_KIND = "bar";
296
+ const fallbackNotice = (kind) => kind === "" ? `Missing chart type; rendered as a ${FALLBACK_KIND} chart.` : `Unsupported chart type "${kind}"; rendered as a ${FALLBACK_KIND} chart.`;
247
297
  /** `ChartSpec` → ECharts option:图表类型、数据系列、图例的唯一定义处 */
248
- function toEchartsOption(chart) {
298
+ function toEchartsOption(chart, fontSizes) {
299
+ const font = resolveChartFontSizes(fontSizes);
300
+ const known = KINDS.has(chart.kind);
301
+ const shape = SERIES_SHAPE[known ? chart.kind : FALLBACK_KIND];
302
+ const notice = known ? void 0 : fallbackNotice(chart.kind);
303
+ const valueAxis = {
304
+ type: "value",
305
+ axisLabel: { fontSize: font.axisLabel }
306
+ };
249
307
  return {
250
308
  animation: false,
251
- title: chart.title ? {
252
- text: chart.title,
309
+ title: chart.title || notice ? {
310
+ text: chart.title ?? "",
253
311
  left: "center",
254
- textStyle: { fontSize: 14 }
312
+ textStyle: { fontSize: font.title },
313
+ ...notice ? { subtext: notice } : {}
255
314
  } : void 0,
256
315
  tooltip: { trigger: chart.kind === "pie" ? "item" : "axis" },
257
- legend: { bottom: 0 },
316
+ legend: {
317
+ bottom: 0,
318
+ textStyle: { fontSize: font.legend }
319
+ },
258
320
  xAxis: chart.kind === "pie" ? void 0 : {
259
321
  type: "category",
260
- data: chart.labels
322
+ data: chart.labels,
323
+ axisLabel: { fontSize: font.axisLabel }
261
324
  },
262
- yAxis: chart.kind === "pie" ? void 0 : { type: "value" },
325
+ yAxis: chart.kind === "pie" ? void 0 : chart.kind === "dual-axis" ? [valueAxis, { ...valueAxis }] : valueAxis,
263
326
  series: chart.kind === "pie" ? chart.series.map((series) => ({
264
327
  type: "pie",
265
328
  name: series.name,
@@ -267,10 +330,11 @@ function toEchartsOption(chart) {
267
330
  name: label,
268
331
  value: series.data[index] ?? 0
269
332
  }))
270
- })) : chart.series.map((series) => ({
271
- type: chart.kind,
333
+ })) : chart.series.map((series, index) => ({
334
+ ...shape,
272
335
  name: series.name,
273
- data: series.data
336
+ data: series.data,
337
+ ...chart.kind === "dual-axis" ? { yAxisIndex: index === 0 ? 0 : 1 } : {}
274
338
  }))
275
339
  };
276
340
  }
@@ -286,6 +350,12 @@ function applyChartDomContract(container, chart) {
286
350
  else container.removeAttribute("aria-label");
287
351
  }
288
352
  /**
353
+ * 一篇文档常同时挂载多张图表;共用同一个模块 promise,
354
+ * 避免每个挂载点各自发起一次动态 import。
355
+ */
356
+ let echartsModule;
357
+ const loadEcharts = () => echartsModule ??= import("./echarts-De78wXqV.js");
358
+ /**
289
359
  * 框架无关的 echarts 挂载点:三档的 React 组件与 A2UI 档的 Lit 元素共用同一实现,
290
360
  * 图表不再因档位而异。echarts 走动态 import,不打进首屏。
291
361
  */
@@ -294,26 +364,29 @@ function mountEchart(container) {
294
364
  let instance;
295
365
  let queued;
296
366
  let observer;
297
- const apply = (chart) => {
298
- instance?.setOption(toEchartsOption(chart), {
367
+ const apply = (chart, fontSizes) => {
368
+ instance?.setOption(toEchartsOption(chart, fontSizes), {
299
369
  notMerge: true,
300
370
  lazyUpdate: true
301
371
  });
302
372
  };
303
- import("./echarts-DhNm2ene.js").then((echarts) => {
373
+ loadEcharts().then((echarts) => {
304
374
  if (disposed) return;
305
375
  instance = echarts.init(container);
306
376
  if (typeof ResizeObserver !== "undefined") {
307
377
  observer = new ResizeObserver(() => instance?.resize());
308
378
  observer.observe(container);
309
379
  }
310
- if (queued) apply(queued);
380
+ if (queued) apply(queued.chart, queued.fontSizes);
311
381
  });
312
382
  return {
313
- setChart(chart) {
383
+ setChart(chart, fontSizes) {
314
384
  applyChartDomContract(container, chart);
315
- queued = chart;
316
- apply(chart);
385
+ queued = {
386
+ chart,
387
+ ...fontSizes ? { fontSizes } : {}
388
+ };
389
+ apply(chart, fontSizes);
317
390
  },
318
391
  dispose() {
319
392
  disposed = true;
@@ -537,8 +610,8 @@ function sanitizeUiSpec(catalog, byName, spec) {
537
610
  degradations
538
611
  };
539
612
  }
540
- function componentSchema(def) {
541
- const props = toJSONSchema(def.props, { io: "input" });
613
+ function componentSchema(def, rootDefs) {
614
+ const props = liftDefs(toJSONSchema(def.props, { io: "input" }), def.name, rootDefs);
542
615
  const node = {
543
616
  type: "object",
544
617
  description: def.description,
@@ -568,6 +641,37 @@ function componentSchema(def) {
568
641
  function isRecord$2(value) {
569
642
  return typeof value === "object" && value !== null && !Array.isArray(value);
570
643
  }
644
+ const DEFS_REF_PREFIX = "#/$defs/";
645
+ function rewriteDefRefs(node, renames) {
646
+ if (Array.isArray(node)) return node.map((child) => rewriteDefRefs(child, renames));
647
+ if (!isRecord$2(node)) return node;
648
+ const out = {};
649
+ for (const [key, value] of Object.entries(node)) {
650
+ if (key === "$ref" && typeof value === "string" && value.startsWith(DEFS_REF_PREFIX)) {
651
+ const [head, ...tail] = value.slice(8).split("/");
652
+ const mapped = head === void 0 ? void 0 : renames.get(head);
653
+ out[key] = mapped === void 0 ? value : [`${DEFS_REF_PREFIX}${mapped}`, ...tail].join("/");
654
+ continue;
655
+ }
656
+ out[key] = rewriteDefRefs(value, renames);
657
+ }
658
+ return out;
659
+ }
660
+ /**
661
+ * zod 每个组件各自产出 `$defs.__schemaN`,其 `#/$defs/...` 指的是那次转换自己的根;
662
+ * 直接嵌进 catalog 大 schema 后那个 `#` 变成了 catalog 根,引用从产物根解析不到。
663
+ * 提到根并以组件名限定,避免不同组件的同名定义互相覆盖。
664
+ */
665
+ function liftDefs(schema, owner, rootDefs) {
666
+ const defs = schema["$defs"];
667
+ if (!isRecord$2(defs)) return schema;
668
+ const renames = /* @__PURE__ */ new Map();
669
+ for (const name of Object.keys(defs)) renames.set(name, `${owner}_${name}`);
670
+ for (const [name, def] of Object.entries(defs)) rootDefs[renames.get(name)] = rewriteDefRefs(def, renames);
671
+ const body = {};
672
+ for (const [key, value] of Object.entries(schema)) if (key !== "$defs") body[key] = value;
673
+ return rewriteDefRefs(body, renames);
674
+ }
571
675
  function typeOf(schema) {
572
676
  if (Array.isArray(schema.enum)) return schema.enum.map((option) => JSON.stringify(option)).join(" | ");
573
677
  if (schema["const"] !== void 0) return JSON.stringify(schema["const"]);
@@ -692,13 +796,18 @@ function defineUiCatalog(input) {
692
796
  componentNames: input.components.map((def) => def.name),
693
797
  actionNames: input.actions.map((action) => action.name),
694
798
  component: (name) => byName.get(name),
695
- toJsonSchema: () => ({
696
- $schema: "https://json-schema.org/draft/2020-12/schema",
697
- $id: input.id,
698
- title: input.title,
699
- description: input.instructions,
700
- oneOf: input.components.map(componentSchema)
701
- }),
799
+ toJsonSchema: () => {
800
+ const $defs = {};
801
+ const oneOf = input.components.map((def) => componentSchema(def, $defs));
802
+ return {
803
+ $schema: "https://json-schema.org/draft/2020-12/schema",
804
+ $id: input.id,
805
+ title: input.title,
806
+ description: input.instructions,
807
+ ...Object.keys($defs).length > 0 ? { $defs } : {},
808
+ oneOf
809
+ };
810
+ },
702
811
  toPrompt: (options = {}) => promptFor(input, options),
703
812
  validate: (spec) => {
704
813
  const issues = [];
@@ -1899,7 +2008,8 @@ function renderPie(chart, svg, doc) {
1899
2008
  });
1900
2009
  }
1901
2010
  /**
1902
- * ChartSpec → SVG(bar 等宽柱 + 值标签;line 折线 + 点;pie 扇形 + 图例;空数据容错)
2011
+ * ChartSpec → SVG(bar 等宽柱 + 值标签;line 折线 + 点;pie 扇形 + 图例;空数据容错)。
2012
+ * mini 档只有这三种画法,其余类型走最接近的一种并在图内注明是近似呈现。
1903
2013
  * @stable
1904
2014
  */
1905
2015
  function renderMiniChart(chart, doc) {
@@ -1918,6 +2028,7 @@ function renderMiniChart(chart, doc) {
1918
2028
  }));
1919
2029
  switch (chart.kind) {
1920
2030
  case "bar":
2031
+ case "stacked-bar":
1921
2032
  renderBar(chart, svg, doc);
1922
2033
  break;
1923
2034
  case "line":
@@ -1926,7 +2037,11 @@ function renderMiniChart(chart, doc) {
1926
2037
  case "pie":
1927
2038
  renderPie(chart, svg, doc);
1928
2039
  break;
2040
+ default:
2041
+ renderLine(chart, svg, doc);
2042
+ break;
1929
2043
  }
2044
+ if (chart.kind !== "bar" && chart.kind !== "line" && chart.kind !== "pie") svg.appendChild(text(doc, WIDTH / 2, HEIGHT - 4, `Approximate rendering of "${chart.kind}"`, { "text-anchor": "middle" }));
1930
2045
  return svg;
1931
2046
  }
1932
2047
  /** A2UI/OpenUI 降级:chart → table(labels 为首列,series 各为一列) */
@@ -2057,7 +2172,7 @@ const WHITELIST = new Set(DOCUMENT_COMPONENTS);
2057
2172
  *
2058
2173
  * 逐个占位独立处理:一个坏占位只降级它自己,不会让整篇文档变空白。
2059
2174
  */
2060
- function mountViewerComponents(root) {
2175
+ function mountViewerComponents(root, options) {
2061
2176
  const handles = [];
2062
2177
  for (const node of Array.from(root.querySelectorAll(`[${VIEWER_COMPONENT_ATTR}]`))) {
2063
2178
  const element = node;
@@ -2068,7 +2183,7 @@ function mountViewerComponents(root) {
2068
2183
  }
2069
2184
  const props = readProps(element, name);
2070
2185
  if (!props) continue;
2071
- const handle = render(element, name, props);
2186
+ const handle = render(element, name, props, options?.fontSizes);
2072
2187
  if (handle) handles.push(handle);
2073
2188
  }
2074
2189
  return { dispose: () => {
@@ -2102,13 +2217,13 @@ function readProps(element, name) {
2102
2217
  }
2103
2218
  return result.data;
2104
2219
  }
2105
- function render(element, name, props) {
2220
+ function render(element, name, props, fontSizes) {
2106
2221
  const doc = element.ownerDocument;
2107
2222
  element.replaceChildren();
2108
2223
  switch (name) {
2109
2224
  case "Chart": {
2110
2225
  const handle = mountEchart(element);
2111
- handle.setChart(chartSpecFromProps(props));
2226
+ handle.setChart(chartSpecFromProps(props), fontSizes);
2112
2227
  return handle;
2113
2228
  }
2114
2229
  case "Table":
@@ -3083,6 +3198,7 @@ function createUiCatalogToolSource(options = {}) {
3083
3198
  systemPrompt: () => Promise.resolve(`${catalog.toPrompt()}\n\n${NO_DUPLICATE_RENDER}`),
3084
3199
  listToolSpecs: () => Promise.resolve(presets.length > 0 ? [renderTool(), presetTool()] : [renderTool()]),
3085
3200
  canHandle: (name) => name === "render_ui" || presets.length > 0 && name === "describe_ui_preset",
3201
+ argCaptureTrust: (name) => name === "render_ui" || name === "describe_ui_preset" ? { tier: "reviewed" } : void 0,
3086
3202
  call: (name, args) => {
3087
3203
  if (name === "describe_ui_preset") {
3088
3204
  const requested = args["preset"];
@@ -3365,7 +3481,7 @@ function fromA2uiSpecAction(event) {
3365
3481
  */
3366
3482
  async function loadWebSkillLitCatalog() {
3367
3483
  try {
3368
- const { webskillLitCatalog } = await import("./webskillLitCatalog-DME6PBkV-CmYNLlIT.js");
3484
+ const { webskillLitCatalog } = await import("./webskillLitCatalog-D_zCqeQF-C9lrvvMr.js");
3369
3485
  return webskillLitCatalog();
3370
3486
  } catch (cause) {
3371
3487
  throw new WebSkillError("UI_UNAVAILABLE", "The WebSkill A2UI catalog is unavailable; install @a2ui/lit, @a2ui/web_core and lit to render catalog surfaces with A2UI", cause);
@@ -3390,4 +3506,4 @@ async function loadOpenUiPeers() {
3390
3506
  }
3391
3507
 
3392
3508
  //#endregion
3393
- export { uiPreset as $, ensureStyles as A, mountViewerComponents as B, applySuggestion as C, collectSpecActions as D, collectScopedValues as E, fromVercelToolResult as F, renderRenderResult as G, qualifyFieldName as H, gaugePercent as I, toA2uiSurfaceAction as J, resolveColumnWidths as K, interactionToUiSpec as L, fromA2uiSpecAction as M, fromA2uiSurfaceAction as N, collectValues as O, fromUiSurfaceActionDispatch as P, toVercelToolInvocation as Q, loadOpenUiPeers as R, WebFormBridge as S, uiCatalog as St, collectFormScopes as T, renderBlocks as U, normalizeColumnWidths as V, renderMiniChart as W, toOpenUiSpecLang as X, toJsonRenderSpec as Y, toUiSurfaceActionDispatch as Z, VIEWER_FALLBACK_ATTR as _, mountEchart as _t, A2UI_VERSION as a, DEFAULT_INTERACTION_TEXTS as at, WEBSKILL_STYLES_CSS as b, resolveSurfaceFormTexts as bt, DOCUMENT_COMPONENTS as c, UI_CATALOG_GROUPS as ct, SPEC_TABLE_MIN_COLUMN_VAR as d, a2uiComponentSchema as dt, A2UI_CHILDREN_PROP as et, SPEC_TABLE_MIN_COLUMN_WIDTH as f, a2uiComponentShapes as ft, VIEWER_COMPONENT_ATTR as g, interactionToFormModel as gt, VERCEL_INTERACTION_TOOL_NAME as h, defineUiCatalog as ht, A2UI_SURFACE_ACTION as i, CATALOG_SCHEMA_MAX as it, evaluateFieldCondition as j, createUiCatalogToolSource as k, MAX_CONDITION_DEPTH as l, UI_CATALOG_PROMPT_BUDGET_BYTES as lt, UI_PRESET_NAMES as m, chartSpecFromProps as mt, A2UI_SPEC_ACTION as n, CATALOG_BUDGET_STAGE as nt, CHART_PALETTE as o, DEFAULT_SURFACE_FORM_TEXTS as ot, UI_PRESETS as p, buildA2uiCatalogDefinition as pt, toA2uiSpecMessages as q, A2UI_SPEC_FORM_PATH as r, CATALOG_PROMPT_MAX as rt, DESCRIBE_UI_PRESET_TOOL as s, PLANNED_INCREMENT as st, A2UI_BASIC_CATALOG_ID as t, A2UI_COMMON_TYPES as tt, RENDER_UI_TOOL as u, WEBSKILL_A2UI_CATALOG_ID as ut, VIEWER_PROPS_ATTR as v, renderMiniMarkdown as vt, chartToTable as w, WEBSKILL_SURFACE_ACTION as x, shapeInteractionValue as xt, VercelUiBridge as y, resolveInteractionTexts as yt, loadWebSkillLitCatalog as z };
3509
+ export { uiPreset as $, ensureStyles as A, mountViewerComponents as B, applySuggestion as C, resolveSurfaceFormTexts as Ct, collectSpecActions as D, uiCatalog as Dt, collectScopedValues as E, toEchartsOption as Et, fromVercelToolResult as F, renderRenderResult as G, qualifyFieldName as H, gaugePercent as I, toA2uiSurfaceAction as J, resolveColumnWidths as K, interactionToUiSpec as L, fromA2uiSpecAction as M, fromA2uiSurfaceAction as N, collectValues as O, fromUiSurfaceActionDispatch as P, toVercelToolInvocation as Q, loadOpenUiPeers as R, WebFormBridge as S, resolveInteractionTexts as St, collectFormScopes as T, shapeInteractionValue as Tt, renderBlocks as U, normalizeColumnWidths as V, renderMiniChart as W, toOpenUiSpecLang as X, toJsonRenderSpec as Y, toUiSurfaceActionDispatch as Z, VIEWER_FALLBACK_ATTR as _, defineUiCatalog as _t, A2UI_VERSION as a, DEFAULT_CHART_FONT_SIZES as at, WEBSKILL_STYLES_CSS as b, renderMiniMarkdown as bt, DOCUMENT_COMPONENTS as c, DEFAULT_SURFACE_HOST_CONTROL_TEXTS as ct, SPEC_TABLE_MIN_COLUMN_VAR as d, UI_CATALOG_PROMPT_BUDGET_BYTES as dt, A2UI_CHILDREN_PROP as et, SPEC_TABLE_MIN_COLUMN_WIDTH as f, WEBSKILL_A2UI_CATALOG_ID as ft, VIEWER_COMPONENT_ATTR as g, chartSpecFromProps as gt, VERCEL_INTERACTION_TOOL_NAME as h, buildA2uiCatalogDefinition as ht, A2UI_SURFACE_ACTION as i, CATALOG_SCHEMA_MAX as it, evaluateFieldCondition as j, createUiCatalogToolSource as k, MAX_CONDITION_DEPTH as l, PLANNED_INCREMENT as lt, UI_PRESET_NAMES as m, a2uiComponentShapes as mt, A2UI_SPEC_ACTION as n, CATALOG_BUDGET_STAGE as nt, CHART_PALETTE as o, DEFAULT_INTERACTION_TEXTS as ot, UI_PRESETS as p, a2uiComponentSchema as pt, toA2uiSpecMessages as q, A2UI_SPEC_FORM_PATH as r, CATALOG_PROMPT_MAX as rt, DESCRIBE_UI_PRESET_TOOL as s, DEFAULT_SURFACE_FORM_TEXTS as st, A2UI_BASIC_CATALOG_ID as t, A2UI_COMMON_TYPES as tt, RENDER_UI_TOOL as u, UI_CATALOG_GROUPS as ut, VIEWER_PROPS_ATTR as v, interactionToFormModel as vt, chartToTable as w, resolveSurfaceHostControlTexts as wt, WEBSKILL_SURFACE_ACTION as x, resolveChartFontSizes as xt, VercelUiBridge as y, mountEchart as yt, loadWebSkillLitCatalog as z };