@webskill/sdk 0.7.0 → 0.8.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.
- package/dist/agent.d.ts +1 -1
- package/dist/agent.js +1 -1
- package/dist/browser.d.ts +151 -4
- package/dist/browser.js +250 -25
- package/dist/{catalogComponents-Dr5dFMAb-DKH_7VPI.js → catalogComponents-DfxxfUvn-D55Gbb2l.js} +3435 -437
- package/dist/{dist-8oQRa8Xz.js → dist-59XlqDuv.js} +93 -6
- package/dist/{dist-DnYG2-eY.js → dist-CJqQsIm9.js} +498 -118
- package/dist/{dist-D0qW6e40.js → dist-DmI5SBBF.js} +192 -17
- package/dist/{eventTypes-DjIQpt8Y-Bj3vghj4.js → eventTypes-g1BXL6x5-CibcOftR.js} +7 -2
- package/dist/governance.d.ts +16 -3
- package/dist/governance.js +24 -5
- package/dist/{index-DkbABR43.d.ts → index-K-eewlGL.d.ts} +138 -75
- package/dist/{index-BwsK9lGk.d.ts → index-P9J2LTfU.d.ts} +163 -6
- package/dist/{index-Ba3xFtfz.d.ts → index-fLskQfAS.d.ts} +2 -2
- package/dist/index.d.ts +3 -3
- package/dist/index.js +4 -4
- package/dist/mcp.d.ts +8 -2
- package/dist/mcp.js +12 -2
- package/dist/{memoryArtifactStore-52Zn9npI-BMPYwvoy.js → memoryArtifactStore-52Zn9npI-upv5OWYf.js} +1 -1
- package/dist/node.d.ts +3 -3
- package/dist/node.js +3 -3
- package/dist/{openUiLibrary-Bdrji9qK-D2LxmM-a.js → openUiLibrary-DURlAxjk-CU6AzfSW.js} +3 -3
- package/dist/{skillVersionStore-Bl-ElD45-CWPvGvoq.d.ts → skillVersionStore-Bl-ElD45-gRfSaAby.d.ts} +1 -1
- package/dist/{testing-CYTFqkDm.js → testing-BCUO5gZR.js} +2 -2
- package/dist/testing.d.ts +1 -1
- package/dist/testing.js +2 -2
- package/dist/{types-CcxRLdJG-DCXyw1US.d.ts → types-B3n0cMZu-BdcqQ35O.d.ts} +46 -6
- package/dist/ui-react.d.ts +13 -6
- package/dist/ui-react.js +153 -84
- package/dist/ui-vue.d.ts +1 -1
- package/dist/ui-vue.js +2 -2
- package/dist/ui.d.ts +4 -4
- package/dist/ui.js +3 -3
- package/dist/{webskillLitCatalog-_mugzRHx-B_54vxum.js → webskillLitCatalog-DwTwSBFt-DiXXpNZA.js} +22 -3
- package/package.json +2 -2
package/dist/ui-react.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { r as __exportAll$1 } from "./rolldown-runtime-BOF7iYI8.js";
|
|
2
|
-
import { m as WebSkillError } from "./dist-
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { C as Markdown, S as Input, _ as
|
|
2
|
+
import { m as WebSkillError } from "./dist-59XlqDuv.js";
|
|
3
|
+
import { Ot as validateUiSpecEvent, kt as validateUiSpecNode } from "./dist-DmI5SBBF.js";
|
|
4
|
+
import { F as normalizeColumnWidths, M as interactionToUiSpec, R as renderMiniChart, U as toJsonRenderSpec, W as toOpenUiSpecLang, Z as DEFAULT_SURFACE_FORM_TEXTS, ct as renderMiniMarkdown, dt as shapeInteractionValue, ft as uiCatalog, it as chartSpecFromProps, ot as interactionToFormModel, w as collectValues, y as applySuggestion } from "./dist-CJqQsIm9.js";
|
|
5
|
+
import { C as DropdownMenuContent, D as Separator, E as Markdown, S as DropdownMenuCheckboxItem, T as Input, _ as useSurfaceFormTexts, a as SpecProgress, b as DataTable, c as SurfaceButton, d as SurfaceFormButtons, f as SurfaceFormTextsProvider, g as useSurfaceForm, h as useCatalogSurfaceForm, i as SpecGrid, l as SurfaceField, m as str, n as CatalogSurfaceProvider, o as SpecTabs, p as catalogComponentImpls, r as EChart, s as SpecTimeline, u as SurfaceFieldArray, v as Badge, w as DropdownMenuTrigger, x as DropdownMenu, y as Button } from "./catalogComponents-DfxxfUvn-D55Gbb2l.js";
|
|
6
6
|
import { z } from "zod";
|
|
7
7
|
import * as React$1 from "react";
|
|
8
8
|
import React, { createContext, useCallback, useContext, useEffect, useLayoutEffect, useMemo, useRef, useState, useSyncExternalStore } from "react";
|
|
@@ -6819,7 +6819,7 @@ function InteractionForm({ bridge }) {
|
|
|
6819
6819
|
id: `webskill-error-${control.name}`,
|
|
6820
6820
|
role: "alert",
|
|
6821
6821
|
className: "webskill-form__error",
|
|
6822
|
-
children:
|
|
6822
|
+
children: DEFAULT_SURFACE_FORM_TEXTS.required
|
|
6823
6823
|
}) : null
|
|
6824
6824
|
]
|
|
6825
6825
|
}, control.name)),
|
|
@@ -6912,15 +6912,63 @@ function StreamingText({ bridge }) {
|
|
|
6912
6912
|
});
|
|
6913
6913
|
}
|
|
6914
6914
|
/**
|
|
6915
|
+
* 渲染前的逐节点降级(FR-23.3)。
|
|
6916
|
+
*
|
|
6917
|
+
* 三档过去都是「整树 validate,失败即整块换成一行红字」——一个节点的一个 prop 不合法
|
|
6918
|
+
* 就让整个 surface 消失。到了渲染层这份 spec 可能来自快照重放或更早的语法版本,
|
|
6919
|
+
* 此刻整块拒绝而 run 还在等它的响应,正是 AC-G11 要防的「整块消失」。
|
|
6920
|
+
*/
|
|
6921
|
+
function useSanitizedSpec(spec) {
|
|
6922
|
+
return useMemo(() => uiCatalog.sanitize(spec), [spec]);
|
|
6923
|
+
}
|
|
6924
|
+
const isOutOfCatalog = (degradation) => degradation.kind === "unknown-component";
|
|
6925
|
+
/**
|
|
6926
|
+
* 越界组件名的响亮拒绝。
|
|
6927
|
+
*
|
|
6928
|
+
* 它是**对 spec 本身**的判定,与渲染器装没装无关,所以要渲染在可选依赖的门禁之前——
|
|
6929
|
+
* 放到门禁后面,未安装该档时这条越界信号就消失了。
|
|
6930
|
+
*/
|
|
6931
|
+
function SurfaceRejectionAlert({ degradations }) {
|
|
6932
|
+
const rejected = degradations.filter(isOutOfCatalog);
|
|
6933
|
+
if (rejected.length === 0) return null;
|
|
6934
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
6935
|
+
role: "alert",
|
|
6936
|
+
className: "webskill-surface--error text-sm text-destructive",
|
|
6937
|
+
children: ["Invalid UI spec: ", rejected.map((item) => `${item.path}: ${item.detail}`).join("; ")]
|
|
6938
|
+
});
|
|
6939
|
+
}
|
|
6940
|
+
/** 其余降级的中性说明(AC-23.8):不是错误,是「这个档 / 这份 spec 有一部分做不到」 */
|
|
6941
|
+
function SurfaceSimplifiedNote({ degradations }) {
|
|
6942
|
+
const simplified = degradations.filter((degradation) => !isOutOfCatalog(degradation));
|
|
6943
|
+
if (simplified.length === 0) return null;
|
|
6944
|
+
return /* @__PURE__ */ jsx("div", {
|
|
6945
|
+
role: "note",
|
|
6946
|
+
"data-webskill-degraded": simplified.length,
|
|
6947
|
+
className: "webskill-surface--unsupported text-xs text-muted",
|
|
6948
|
+
children: simplified.map((item) => `${item.path} (${item.kind})`).join("; ")
|
|
6949
|
+
});
|
|
6950
|
+
}
|
|
6951
|
+
/** 两级合并渲染;可选依赖有门禁的档要分开用上面两个 */
|
|
6952
|
+
function SurfaceDegradationNote({ degradations }) {
|
|
6953
|
+
return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(SurfaceRejectionAlert, { degradations }), /* @__PURE__ */ jsx(SurfaceSimplifiedNote, { degradations })] });
|
|
6954
|
+
}
|
|
6955
|
+
/**
|
|
6915
6956
|
* catalog `Table` 节点的渲染实现:排序 / 筛选 / 分页 / 列显隐 / 虚拟滚动。
|
|
6916
6957
|
* 这些是宿主侧的呈现能力,不进 catalog props——模型只声明 columns 与 rows。
|
|
6917
6958
|
* 它们都带 `data-webskill-host-control`,跨渲染器语义对括据此排除宿主控件。
|
|
6918
6959
|
*/
|
|
6919
|
-
function SpecTable({ columns, rows, label }) {
|
|
6960
|
+
function SpecTable({ columns, rows, label, columnWidths, onDegraded }) {
|
|
6920
6961
|
const [sorting, setSorting] = useState([]);
|
|
6921
6962
|
const [globalFilter, setGlobalFilter] = useState("");
|
|
6922
6963
|
const [columnVisibility, setColumnVisibility] = useState({});
|
|
6923
6964
|
const scrollRef = useRef(null);
|
|
6965
|
+
const normalized = normalizeColumnWidths(columnWidths, columns.length);
|
|
6966
|
+
const weightTotal = normalized.weights.reduce((sum, weight) => sum + weight, 0);
|
|
6967
|
+
const widthPercents = normalized.weights.map((weight) => weightTotal > 0 ? weight / weightTotal * 100 : 0);
|
|
6968
|
+
const rejected = normalized.rejected;
|
|
6969
|
+
useEffect(() => {
|
|
6970
|
+
if (rejected !== void 0) onDegraded?.(rejected);
|
|
6971
|
+
}, [rejected, onDegraded]);
|
|
6924
6972
|
const table = useReactTable({
|
|
6925
6973
|
data: rows,
|
|
6926
6974
|
columns: columns.map((header, index) => ({
|
|
@@ -6983,30 +7031,34 @@ function SpecTable({ columns, rows, label }) {
|
|
|
6983
7031
|
/* @__PURE__ */ jsxs(DataTable, {
|
|
6984
7032
|
"aria-label": label,
|
|
6985
7033
|
containerClassName: "webskill-surface__table-scroll",
|
|
6986
|
-
children: [
|
|
6987
|
-
|
|
6988
|
-
|
|
6989
|
-
|
|
6990
|
-
|
|
6991
|
-
|
|
6992
|
-
|
|
6993
|
-
|
|
6994
|
-
|
|
6995
|
-
|
|
6996
|
-
|
|
6997
|
-
|
|
6998
|
-
|
|
6999
|
-
|
|
7000
|
-
|
|
7001
|
-
|
|
7002
|
-
|
|
7003
|
-
|
|
7004
|
-
|
|
7005
|
-
|
|
7006
|
-
|
|
7007
|
-
|
|
7034
|
+
children: [
|
|
7035
|
+
/* @__PURE__ */ jsx("colgroup", { children: widthPercents.map((percent, index) => /* @__PURE__ */ jsx("col", { style: { width: `${percent}%` } }, index)) }),
|
|
7036
|
+
/* @__PURE__ */ jsx("thead", {
|
|
7037
|
+
className: "webskill-surface__table-header",
|
|
7038
|
+
children: /* @__PURE__ */ jsx("tr", { children: table.getFlatHeaders().map((header) => /* @__PURE__ */ jsx("th", {
|
|
7039
|
+
scope: "col",
|
|
7040
|
+
...header.column.id === "selection" ? { "data-webskill-host-control": "" } : {},
|
|
7041
|
+
"aria-sort": header.column.getIsSorted() === "asc" ? "ascending" : header.column.getIsSorted() === "desc" ? "descending" : "none",
|
|
7042
|
+
children: header.column.getCanSort() ? /* @__PURE__ */ jsx("button", {
|
|
7043
|
+
type: "button",
|
|
7044
|
+
"data-webskill-host-control": "",
|
|
7045
|
+
onClick: header.column.getToggleSortingHandler(),
|
|
7046
|
+
children: flexRender(header.column.columnDef.header, header.getContext())
|
|
7047
|
+
}) : flexRender(header.column.columnDef.header, header.getContext())
|
|
7048
|
+
}, header.id)) })
|
|
7049
|
+
}),
|
|
7050
|
+
/* @__PURE__ */ jsx("tbody", {
|
|
7051
|
+
ref: scrollRef,
|
|
7052
|
+
className: "webskill-surface__table-body",
|
|
7053
|
+
children: renderedRows.map((virtualRow) => {
|
|
7054
|
+
const row = modelRows[virtualRow.index];
|
|
7055
|
+
return /* @__PURE__ */ jsx("tr", { children: row.getVisibleCells().map((cell) => /* @__PURE__ */ jsx("td", {
|
|
7056
|
+
...cell.column.id === "selection" ? { "data-webskill-host-control": "" } : {},
|
|
7057
|
+
children: flexRender(cell.column.columnDef.cell, cell.getContext())
|
|
7058
|
+
}, cell.id)) }, row.id);
|
|
7059
|
+
})
|
|
7008
7060
|
})
|
|
7009
|
-
|
|
7061
|
+
]
|
|
7010
7062
|
}),
|
|
7011
7063
|
/* @__PURE__ */ jsxs("div", {
|
|
7012
7064
|
className: "webskill-surface__table-pagination",
|
|
@@ -7096,11 +7148,17 @@ function renderNode(node, context, key, scope) {
|
|
|
7096
7148
|
}) : null
|
|
7097
7149
|
]
|
|
7098
7150
|
}, key);
|
|
7099
|
-
case "Table":
|
|
7100
|
-
columns
|
|
7101
|
-
rows
|
|
7102
|
-
|
|
7103
|
-
|
|
7151
|
+
case "Table": {
|
|
7152
|
+
const columns = Array.isArray(props["columns"]) ? props["columns"] : [];
|
|
7153
|
+
const rows = Array.isArray(props["rows"]) ? props["rows"] : [];
|
|
7154
|
+
const columnWidths = Array.isArray(props["columnWidths"]) ? props["columnWidths"] : void 0;
|
|
7155
|
+
return /* @__PURE__ */ jsx(SpecTable, {
|
|
7156
|
+
columns,
|
|
7157
|
+
rows,
|
|
7158
|
+
label: str(props, "title", "Data"),
|
|
7159
|
+
...columnWidths ? { columnWidths } : {}
|
|
7160
|
+
}, key);
|
|
7161
|
+
}
|
|
7104
7162
|
case "Chart": return /* @__PURE__ */ jsx(EChart, { chart: chartSpecFromProps(props) }, key);
|
|
7105
7163
|
case "Tabs": return /* @__PURE__ */ jsx(SpecTabs, {
|
|
7106
7164
|
props,
|
|
@@ -7117,7 +7175,7 @@ function renderNode(node, context, key, scope) {
|
|
|
7117
7175
|
children: [/* @__PURE__ */ jsx("span", {
|
|
7118
7176
|
className: "text-ink",
|
|
7119
7177
|
children: str(props, "label", str(props, "path"))
|
|
7120
|
-
}), /* @__PURE__ */ jsx(Button, {
|
|
7178
|
+
}), context.readOnly ? null : /* @__PURE__ */ jsx(Button, {
|
|
7121
7179
|
size: "sm",
|
|
7122
7180
|
variant: "secondary",
|
|
7123
7181
|
"data-webskill-surface-action": context.resolveActionId("download", node.id),
|
|
@@ -7150,6 +7208,11 @@ function renderNode(node, context, key, scope) {
|
|
|
7150
7208
|
props,
|
|
7151
7209
|
scope
|
|
7152
7210
|
}, key);
|
|
7211
|
+
case "FieldArray": return /* @__PURE__ */ jsx(SurfaceFieldArray, {
|
|
7212
|
+
form: context,
|
|
7213
|
+
props,
|
|
7214
|
+
scope
|
|
7215
|
+
}, key);
|
|
7153
7216
|
case "Button": return /* @__PURE__ */ jsx(SurfaceButton, {
|
|
7154
7217
|
form: context,
|
|
7155
7218
|
props,
|
|
@@ -7204,29 +7267,35 @@ function renderNode(node, context, key, scope) {
|
|
|
7204
7267
|
* 节点树取代六类 surface 后,这里是 native 档唯一的渲染实现。
|
|
7205
7268
|
*/
|
|
7206
7269
|
function NativeSpecSurface({ surfaceId, spec, actions, registry, runId, draft, onAction, onDraftChange, shell = "card" }) {
|
|
7270
|
+
const sanitized = useSanitizedSpec(spec);
|
|
7271
|
+
const form = useSurfaceForm({
|
|
7272
|
+
surfaceId,
|
|
7273
|
+
spec: sanitized.node ?? spec,
|
|
7274
|
+
actions,
|
|
7275
|
+
runId,
|
|
7276
|
+
draft,
|
|
7277
|
+
onAction,
|
|
7278
|
+
onDraftChange
|
|
7279
|
+
});
|
|
7207
7280
|
const context = {
|
|
7208
|
-
...
|
|
7209
|
-
surfaceId,
|
|
7210
|
-
spec,
|
|
7211
|
-
actions,
|
|
7212
|
-
runId,
|
|
7213
|
-
draft,
|
|
7214
|
-
onAction,
|
|
7215
|
-
onDraftChange
|
|
7216
|
-
}),
|
|
7281
|
+
...form,
|
|
7217
7282
|
registry,
|
|
7218
7283
|
onAction
|
|
7219
7284
|
};
|
|
7220
|
-
const
|
|
7221
|
-
|
|
7222
|
-
|
|
7223
|
-
className: "webskill-surface--error text-sm text-destructive",
|
|
7224
|
-
children: ["Invalid UI spec: ", validation.issues.map((issue) => `${issue.path}: ${issue.message}`).join("; ")]
|
|
7225
|
-
});
|
|
7226
|
-
return /* @__PURE__ */ jsx("div", {
|
|
7285
|
+
const texts = useSurfaceFormTexts();
|
|
7286
|
+
const { node, degradations } = sanitized;
|
|
7287
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
7227
7288
|
className: shell === "none" ? "webskill-surface--spec" : "webskill-surface webskill-surface--spec",
|
|
7228
7289
|
"data-testid": "native-spec-surface",
|
|
7229
|
-
children:
|
|
7290
|
+
children: [
|
|
7291
|
+
node ? renderNode(node, context, "root") : null,
|
|
7292
|
+
form.readOnly && actions.length > 0 ? /* @__PURE__ */ jsx("p", {
|
|
7293
|
+
"data-testid": "surface-readonly-note",
|
|
7294
|
+
className: "mt-2 text-xs text-muted",
|
|
7295
|
+
children: texts.readOnlySnapshot
|
|
7296
|
+
}) : null,
|
|
7297
|
+
/* @__PURE__ */ jsx(SurfaceDegradationNote, { degradations })
|
|
7298
|
+
]
|
|
7230
7299
|
});
|
|
7231
7300
|
}
|
|
7232
7301
|
function Surface({ snapshot, registry, onAction, drafts, onDraftChange }) {
|
|
@@ -7324,27 +7393,27 @@ function JsonRenderSpecSurface({ spec, surfaceId, actions, onAction }) {
|
|
|
7324
7393
|
cancelled = true;
|
|
7325
7394
|
};
|
|
7326
7395
|
}, []);
|
|
7327
|
-
const
|
|
7328
|
-
|
|
7329
|
-
|
|
7330
|
-
className: "webskill-surface--error text-sm text-destructive",
|
|
7331
|
-
children: ["Invalid UI spec: ", validation.issues.map((issue) => `${issue.path}: ${issue.message}`).join("; ")]
|
|
7332
|
-
});
|
|
7333
|
-
if (unavailable) return /* @__PURE__ */ jsx("div", {
|
|
7396
|
+
const sanitized = useSanitizedSpec(spec);
|
|
7397
|
+
const rejection = /* @__PURE__ */ jsx(SurfaceRejectionAlert, { degradations: sanitized.degradations });
|
|
7398
|
+
if (unavailable) return /* @__PURE__ */ jsxs(Fragment$1, { children: [rejection, /* @__PURE__ */ jsx("div", {
|
|
7334
7399
|
role: "alert",
|
|
7335
7400
|
className: "webskill-surface--unsupported text-sm text-muted",
|
|
7336
7401
|
children: "The json-render renderer is not installed: add @json-render/core and @json-render/react to this host."
|
|
7337
|
-
});
|
|
7338
|
-
if (!module) return
|
|
7339
|
-
return /* @__PURE__ */
|
|
7402
|
+
})] });
|
|
7403
|
+
if (!module) return rejection;
|
|
7404
|
+
return /* @__PURE__ */ jsxs(CatalogSurfaceProvider, {
|
|
7340
7405
|
surfaceId,
|
|
7341
|
-
spec,
|
|
7406
|
+
spec: sanitized.node ?? spec,
|
|
7342
7407
|
actions: actions ?? [],
|
|
7343
7408
|
...onAction ? { onAction } : {},
|
|
7344
|
-
children:
|
|
7345
|
-
|
|
7346
|
-
|
|
7347
|
-
|
|
7409
|
+
children: [
|
|
7410
|
+
rejection,
|
|
7411
|
+
sanitized.node ? /* @__PURE__ */ jsx(JsonRenderBody, {
|
|
7412
|
+
spec: sanitized.node,
|
|
7413
|
+
module
|
|
7414
|
+
}) : null,
|
|
7415
|
+
/* @__PURE__ */ jsx(SurfaceSimplifiedNote, { degradations: sanitized.degradations })
|
|
7416
|
+
]
|
|
7348
7417
|
});
|
|
7349
7418
|
}
|
|
7350
7419
|
/** registry 的 action 出口绑定到本 surface:json-render 派发的动作与组件内点击回传同一份载荷 */
|
|
@@ -7518,7 +7587,7 @@ function OpenUiSpecSurface({ spec, surfaceId, actions, onAction }) {
|
|
|
7518
7587
|
const [unavailable, setUnavailable] = useState(false);
|
|
7519
7588
|
useEffect(() => {
|
|
7520
7589
|
let cancelled = false;
|
|
7521
|
-
import("./openUiLibrary-
|
|
7590
|
+
import("./openUiLibrary-DURlAxjk-CU6AzfSW.js").then((loaded) => {
|
|
7522
7591
|
if (!cancelled) setModule(loaded);
|
|
7523
7592
|
}).catch(() => {
|
|
7524
7593
|
if (!cancelled) setUnavailable(true);
|
|
@@ -7527,34 +7596,34 @@ function OpenUiSpecSurface({ spec, surfaceId, actions, onAction }) {
|
|
|
7527
7596
|
cancelled = true;
|
|
7528
7597
|
};
|
|
7529
7598
|
}, []);
|
|
7530
|
-
const
|
|
7531
|
-
|
|
7532
|
-
|
|
7533
|
-
className: "webskill-surface--error text-sm text-destructive",
|
|
7534
|
-
children: ["Invalid UI spec: ", validation.issues.map((issue) => `${issue.path}: ${issue.message}`).join("; ")]
|
|
7535
|
-
});
|
|
7536
|
-
if (unavailable) return /* @__PURE__ */ jsx("div", {
|
|
7599
|
+
const sanitized = useSanitizedSpec(spec);
|
|
7600
|
+
const rejection = /* @__PURE__ */ jsx(SurfaceRejectionAlert, { degradations: sanitized.degradations });
|
|
7601
|
+
if (unavailable) return /* @__PURE__ */ jsxs(Fragment$1, { children: [rejection, /* @__PURE__ */ jsx("div", {
|
|
7537
7602
|
role: "alert",
|
|
7538
7603
|
className: "webskill-surface--unsupported text-sm text-muted",
|
|
7539
7604
|
children: "The OpenUI renderer is not installed: add @openuidev/react-lang to this host."
|
|
7540
|
-
});
|
|
7541
|
-
if (!module) return
|
|
7605
|
+
})] });
|
|
7606
|
+
if (!module) return rejection;
|
|
7542
7607
|
const { Renderer, webskillOpenUiLibrary } = module;
|
|
7543
7608
|
return /* @__PURE__ */ jsx(CatalogSurfaceProvider, {
|
|
7544
7609
|
surfaceId,
|
|
7545
|
-
spec,
|
|
7610
|
+
spec: sanitized.node ?? spec,
|
|
7546
7611
|
actions: actions ?? [],
|
|
7547
7612
|
...onAction ? { onAction } : {},
|
|
7548
|
-
children: /* @__PURE__ */
|
|
7613
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
7549
7614
|
className: "webskill-surface webskill-surface--spec",
|
|
7550
7615
|
"data-testid": "openui-spec-surface",
|
|
7551
|
-
children:
|
|
7552
|
-
|
|
7553
|
-
|
|
7554
|
-
|
|
7616
|
+
children: [
|
|
7617
|
+
sanitized.node ? /* @__PURE__ */ jsx(Renderer, {
|
|
7618
|
+
response: toOpenUiSpecLang(sanitized.node),
|
|
7619
|
+
library: webskillOpenUiLibrary
|
|
7620
|
+
}) : null,
|
|
7621
|
+
rejection,
|
|
7622
|
+
/* @__PURE__ */ jsx(SurfaceSimplifiedNote, { degradations: sanitized.degradations })
|
|
7623
|
+
]
|
|
7555
7624
|
})
|
|
7556
7625
|
});
|
|
7557
7626
|
}
|
|
7558
7627
|
|
|
7559
7628
|
//#endregion
|
|
7560
|
-
export { InteractionForm, JsonRenderSpecSurface, NATIVE_SPEC_COMPONENTS, NativeSpecSurface, OpenUiSpecSurface, ReactBridgeState, ResultBlocks, SpecInteractionChannel, StreamingText, SurfaceRegistry, UiSurfaceList, UiSurfaceSnapshotList, UiSurfaceStore, catalogComponentImpls, createJsonRenderRegistry, probeJsonRenderAvailability };
|
|
7629
|
+
export { InteractionForm, JsonRenderSpecSurface, NATIVE_SPEC_COMPONENTS, NativeSpecSurface, OpenUiSpecSurface, ReactBridgeState, ResultBlocks, SpecInteractionChannel, StreamingText, SurfaceFormTextsProvider, SurfaceRegistry, UiSurfaceList, UiSurfaceSnapshotList, UiSurfaceStore, catalogComponentImpls, createJsonRenderRegistry, probeJsonRenderAvailability, useSurfaceFormTexts };
|
package/dist/ui-vue.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { c as InteractionResponse, s as InteractionRequest, x as UiBridge, y as RenderResultRequest } from "./types-
|
|
1
|
+
import { c as InteractionResponse, s as InteractionRequest, x as UiBridge, y as RenderResultRequest } from "./types-B3n0cMZu-BdcqQ35O.js";
|
|
2
2
|
import { PropType } from "vue";
|
|
3
3
|
//#region ../ui-vue/dist/index.d.ts
|
|
4
4
|
//#region src/bridgeState.d.ts
|
package/dist/ui-vue.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { R as renderMiniChart, Z as DEFAULT_SURFACE_FORM_TEXTS, ct as renderMiniMarkdown, dt as shapeInteractionValue, ot as interactionToFormModel, w as collectValues, y as applySuggestion } from "./dist-CJqQsIm9.js";
|
|
2
2
|
import { defineComponent, h, reactive, ref } from "vue";
|
|
3
3
|
|
|
4
4
|
//#region ../ui-vue/dist/index.js
|
|
@@ -164,7 +164,7 @@ const InteractionForm = defineComponent({
|
|
|
164
164
|
id: `webskill-error-${control.name}`,
|
|
165
165
|
role: "alert",
|
|
166
166
|
class: "webskill-form__error"
|
|
167
|
-
},
|
|
167
|
+
}, DEFAULT_SURFACE_FORM_TEXTS.required) : null
|
|
168
168
|
])),
|
|
169
169
|
h("div", { class: "webskill-form__actions" }, [h("button", {
|
|
170
170
|
type: "submit",
|
package/dist/ui.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { $ as
|
|
4
|
-
export { A2UI_BASIC_CATALOG_ID, A2UI_COMMON_TYPES, A2UI_SPEC_ACTION, A2UI_SPEC_FORM_PATH, A2UI_SURFACE_ACTION, A2UI_VERSION, type A2uiCatalogComponent, type A2uiCatalogDefinition, type A2uiCatalogHandle, type A2uiComponentShape, type A2uiMessage, type A2uiSpecActionEvent, type A2uiSpecMessageOptions, CHART_PALETTE, type CollectedValues, type ControlModel, DESCRIBE_UI_PRESET_TOOL, type EchartHandle, type FormModel, type InteractionSpecLabels, type JsonRenderSpec, type LoadedOpenUiPeers, type OpenUiRendererProps, type OpenUiRuntime, RENDER_UI_TOOL, UI_CATALOG_GROUPS, UI_CATALOG_PROMPT_BUDGET_BYTES, UI_PRESETS, UI_PRESET_NAMES, type UiActionDef, type UiCatalog, type UiCatalogInput, type UiCatalogPromptOptions, type UiCatalogToolSourceOptions, type UiComponentDef, type UiFormScope, type UiPreset, type UiPresetName, type UiSpecIssue, type UiSpecNode, type UiSpecValidation, type UiSurfaceActionDispatch, VERCEL_INTERACTION_TOOL_NAME, type VercelToolInvocation, VercelUiBridge, WEBSKILL_A2UI_CATALOG_ID, WEBSKILL_STYLES_CSS, WEBSKILL_SURFACE_ACTION, WebFormBridge, type ZodRuntime, a2uiComponentSchema, a2uiComponentShapes, applySuggestion, buildA2uiCatalogDefinition, buildRenderResult, chartSpecFromProps, chartToTable, collectFormScopes, collectScopedValues, collectSpecActions, collectValues, createUiCatalogToolSource, defineUiCatalog, ensureStyles, fromA2uiSpecAction, fromA2uiSurfaceAction, fromUiSurfaceActionDispatch, fromVercelToolResult, interactionToFormModel, interactionToUiSpec, loadOpenUiPeers, loadWebSkillLitCatalog, mountEchart, qualifyFieldName, renderBlocks, renderMiniChart, renderMiniMarkdown, renderRenderResult, shapeInteractionValue, toA2uiSpecMessages, toA2uiSurfaceAction, toJsonRenderSpec, toOpenUiSpecLang, toUiSurfaceActionDispatch, toVercelToolInvocation, uiCatalog, uiPreset };
|
|
1
|
+
import { vt as UiSpecNode } from "./types-B3n0cMZu-BdcqQ35O.js";
|
|
2
|
+
import { vn as buildRenderResult } from "./index-K-eewlGL.js";
|
|
3
|
+
import { $ as UiSpecIssue, A as MAX_CONDITION_DEPTH, At as interactionToUiSpec, B as UI_CATALOG_PROMPT_BUDGET_BYTES, Bt as resolveColumnWidths, C as FieldCondition, Ct as ensureStyles, D as InteractionTexts, Dt as fromUiSurfaceActionDispatch, E as InteractionSpecLabels, Et as fromA2uiSurfaceAction, F as SPEC_TABLE_MIN_COLUMN_VAR, Ft as qualifyFieldName, G as UiCatalogInput, Gt as toA2uiSurfaceAction, H as UI_PRESET_NAMES, Ht as resolveSurfaceFormTexts, I as SPEC_TABLE_MIN_COLUMN_WIDTH, It as renderBlocks, J as UiComponentDef, Jt as toUiSurfaceActionDispatch, K as UiCatalogPromptOptions, Kt as toJsonRenderSpec, L as SpecColumnMeta, Lt as renderMiniChart, M as OpenUiRendererProps, Mt as loadWebSkillLitCatalog, N as OpenUiRuntime, Nt as mountEchart, O as JsonRenderSpec, Ot as fromVercelToolResult, P as RENDER_UI_TOOL, Pt as normalizeColumnWidths, Q as UiSpecDegradation, R as SurfaceFormTexts, Rt as renderMiniMarkdown, S as EvaluateFieldConditionOptions, St as defineUiCatalog, T as FormModel, Tt as fromA2uiSpecAction, U as UiActionDef, Ut as shapeInteractionValue, V as UI_PRESETS, Vt as resolveInteractionTexts, W as UiCatalog, Wt as toA2uiSpecMessages, X as UiPreset, Xt as uiCatalog, Y as UiFormScope, Yt as toVercelToolInvocation, Z as UiPresetName, Zt as uiPreset, _ as ControlModel, _t as collectFormScopes, a as A2UI_SURFACE_ACTION, at as VercelUiBridge, b as DESCRIBE_UI_PRESET_TOOL, bt as collectValues, c as A2uiCatalogDefinition, ct as WEBSKILL_SURFACE_ACTION, d as A2uiMessage, dt as a2uiComponentSchema, et as UiSpecSanitization, f as A2uiSpecActionEvent, ft as a2uiComponentShapes, g as ColumnWidthsRejection, gt as chartToTable, h as CollectedValues, ht as chartSpecFromProps, i as A2UI_SPEC_FORM_PATH, it as VercelToolInvocation, j as NormalizedColumnWidths, jt as loadOpenUiPeers, k as LoadedOpenUiPeers, kt as interactionToFormModel, l as A2uiCatalogHandle, lt as WebFormBridge, m as CHART_PALETTE, mt as buildA2uiCatalogDefinition, n as A2UI_COMMON_TYPES, nt as UiSurfaceActionDispatch, o as A2UI_VERSION, ot as WEBSKILL_A2UI_CATALOG_ID, p as A2uiSpecMessageOptions, pt as applySuggestion, q as UiCatalogToolSourceOptions, qt as toOpenUiSpecLang, r as A2UI_SPEC_ACTION, rt as VERCEL_INTERACTION_TOOL_NAME, s as A2uiCatalogComponent, st as WEBSKILL_STYLES_CSS, t as A2UI_BASIC_CATALOG_ID, tt as UiSpecValidation, u as A2uiComponentShape, ut as ZodRuntime, v as DEFAULT_INTERACTION_TEXTS, vt as collectScopedValues, w as FieldConditionResult, wt as evaluateFieldCondition, x as EchartHandle, xt as createUiCatalogToolSource, y as DEFAULT_SURFACE_FORM_TEXTS, yt as collectSpecActions, z as UI_CATALOG_GROUPS, zt as renderRenderResult } from "./index-P9J2LTfU.js";
|
|
4
|
+
export { A2UI_BASIC_CATALOG_ID, A2UI_COMMON_TYPES, A2UI_SPEC_ACTION, A2UI_SPEC_FORM_PATH, A2UI_SURFACE_ACTION, A2UI_VERSION, type A2uiCatalogComponent, type A2uiCatalogDefinition, type A2uiCatalogHandle, type A2uiComponentShape, type A2uiMessage, type A2uiSpecActionEvent, type A2uiSpecMessageOptions, CHART_PALETTE, type CollectedValues, type ColumnWidthsRejection, type ControlModel, DEFAULT_INTERACTION_TEXTS, DEFAULT_SURFACE_FORM_TEXTS, DESCRIBE_UI_PRESET_TOOL, type EchartHandle, type EvaluateFieldConditionOptions, type FieldCondition, type FieldConditionResult, type FormModel, type InteractionSpecLabels, type InteractionTexts, type JsonRenderSpec, type LoadedOpenUiPeers, MAX_CONDITION_DEPTH, type NormalizedColumnWidths, type OpenUiRendererProps, type OpenUiRuntime, RENDER_UI_TOOL, SPEC_TABLE_MIN_COLUMN_VAR, SPEC_TABLE_MIN_COLUMN_WIDTH, type SpecColumnMeta, type SurfaceFormTexts, UI_CATALOG_GROUPS, UI_CATALOG_PROMPT_BUDGET_BYTES, UI_PRESETS, UI_PRESET_NAMES, type UiActionDef, type UiCatalog, type UiCatalogInput, type UiCatalogPromptOptions, type UiCatalogToolSourceOptions, type UiComponentDef, type UiFormScope, type UiPreset, type UiPresetName, type UiSpecDegradation, type UiSpecIssue, type UiSpecNode, type UiSpecSanitization, type UiSpecValidation, type UiSurfaceActionDispatch, VERCEL_INTERACTION_TOOL_NAME, type VercelToolInvocation, VercelUiBridge, WEBSKILL_A2UI_CATALOG_ID, WEBSKILL_STYLES_CSS, WEBSKILL_SURFACE_ACTION, WebFormBridge, type ZodRuntime, a2uiComponentSchema, a2uiComponentShapes, applySuggestion, buildA2uiCatalogDefinition, buildRenderResult, chartSpecFromProps, chartToTable, collectFormScopes, collectScopedValues, collectSpecActions, collectValues, createUiCatalogToolSource, defineUiCatalog, ensureStyles, evaluateFieldCondition, fromA2uiSpecAction, fromA2uiSurfaceAction, fromUiSurfaceActionDispatch, fromVercelToolResult, interactionToFormModel, interactionToUiSpec, loadOpenUiPeers, loadWebSkillLitCatalog, mountEchart, normalizeColumnWidths, qualifyFieldName, renderBlocks, renderMiniChart, renderMiniMarkdown, renderRenderResult, resolveColumnWidths, resolveInteractionTexts, resolveSurfaceFormTexts, shapeInteractionValue, toA2uiSpecMessages, toA2uiSurfaceAction, toJsonRenderSpec, toOpenUiSpecLang, toUiSurfaceActionDispatch, toVercelToolInvocation, uiCatalog, uiPreset };
|
package/dist/ui.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { V as buildRenderResult } from "./dist-
|
|
2
|
-
import { $ as
|
|
1
|
+
import { V as buildRenderResult } from "./dist-DmI5SBBF.js";
|
|
2
|
+
import { $ as UI_CATALOG_PROMPT_BUDGET_BYTES, A as fromUiSurfaceActionDispatch, B as resolveColumnWidths, C as collectSpecActions, D as evaluateFieldCondition, E as ensureStyles, F as normalizeColumnWidths, G as toUiSurfaceActionDispatch, H as toA2uiSurfaceAction, I as qualifyFieldName, K as toVercelToolInvocation, L as renderBlocks, M as interactionToUiSpec, N as loadOpenUiPeers, O as fromA2uiSpecAction, P as loadWebSkillLitCatalog, Q as UI_CATALOG_GROUPS, R as renderMiniChart, S as collectScopedValues, T as createUiCatalogToolSource, U as toJsonRenderSpec, V as toA2uiSpecMessages, W as toOpenUiSpecLang, X as DEFAULT_INTERACTION_TEXTS, Y as A2UI_COMMON_TYPES, Z as DEFAULT_SURFACE_FORM_TEXTS, _ as WEBSKILL_SURFACE_ACTION, a as A2UI_VERSION, at as defineUiCatalog, b as chartToTable, c as MAX_CONDITION_DEPTH, ct as renderMiniMarkdown, d as SPEC_TABLE_MIN_COLUMN_WIDTH, dt as shapeInteractionValue, et as WEBSKILL_A2UI_CATALOG_ID, f as UI_PRESETS, ft as uiCatalog, g as WEBSKILL_STYLES_CSS, h as VercelUiBridge, i as A2UI_SURFACE_ACTION, it as chartSpecFromProps, j as fromVercelToolResult, k as fromA2uiSurfaceAction, l as RENDER_UI_TOOL, lt as resolveInteractionTexts, m as VERCEL_INTERACTION_TOOL_NAME, n as A2UI_SPEC_ACTION, nt as a2uiComponentShapes, o as CHART_PALETTE, ot as interactionToFormModel, p as UI_PRESET_NAMES, q as uiPreset, r as A2UI_SPEC_FORM_PATH, rt as buildA2uiCatalogDefinition, s as DESCRIBE_UI_PRESET_TOOL, st as mountEchart, t as A2UI_BASIC_CATALOG_ID, tt as a2uiComponentSchema, u as SPEC_TABLE_MIN_COLUMN_VAR, ut as resolveSurfaceFormTexts, v as WebFormBridge, w as collectValues, x as collectFormScopes, y as applySuggestion, z as renderRenderResult } from "./dist-CJqQsIm9.js";
|
|
3
3
|
|
|
4
|
-
export { A2UI_BASIC_CATALOG_ID, A2UI_COMMON_TYPES, A2UI_SPEC_ACTION, A2UI_SPEC_FORM_PATH, A2UI_SURFACE_ACTION, A2UI_VERSION, CHART_PALETTE, DESCRIBE_UI_PRESET_TOOL, RENDER_UI_TOOL, UI_CATALOG_GROUPS, UI_CATALOG_PROMPT_BUDGET_BYTES, UI_PRESETS, UI_PRESET_NAMES, VERCEL_INTERACTION_TOOL_NAME, VercelUiBridge, WEBSKILL_A2UI_CATALOG_ID, WEBSKILL_STYLES_CSS, WEBSKILL_SURFACE_ACTION, WebFormBridge, a2uiComponentSchema, a2uiComponentShapes, applySuggestion, buildA2uiCatalogDefinition, buildRenderResult, chartSpecFromProps, chartToTable, collectFormScopes, collectScopedValues, collectSpecActions, collectValues, createUiCatalogToolSource, defineUiCatalog, ensureStyles, fromA2uiSpecAction, fromA2uiSurfaceAction, fromUiSurfaceActionDispatch, fromVercelToolResult, interactionToFormModel, interactionToUiSpec, loadOpenUiPeers, loadWebSkillLitCatalog, mountEchart, qualifyFieldName, renderBlocks, renderMiniChart, renderMiniMarkdown, renderRenderResult, shapeInteractionValue, toA2uiSpecMessages, toA2uiSurfaceAction, toJsonRenderSpec, toOpenUiSpecLang, toUiSurfaceActionDispatch, toVercelToolInvocation, uiCatalog, uiPreset };
|
|
4
|
+
export { A2UI_BASIC_CATALOG_ID, A2UI_COMMON_TYPES, A2UI_SPEC_ACTION, A2UI_SPEC_FORM_PATH, A2UI_SURFACE_ACTION, A2UI_VERSION, CHART_PALETTE, DEFAULT_INTERACTION_TEXTS, DEFAULT_SURFACE_FORM_TEXTS, DESCRIBE_UI_PRESET_TOOL, MAX_CONDITION_DEPTH, RENDER_UI_TOOL, SPEC_TABLE_MIN_COLUMN_VAR, SPEC_TABLE_MIN_COLUMN_WIDTH, UI_CATALOG_GROUPS, UI_CATALOG_PROMPT_BUDGET_BYTES, UI_PRESETS, UI_PRESET_NAMES, VERCEL_INTERACTION_TOOL_NAME, VercelUiBridge, WEBSKILL_A2UI_CATALOG_ID, WEBSKILL_STYLES_CSS, WEBSKILL_SURFACE_ACTION, WebFormBridge, a2uiComponentSchema, a2uiComponentShapes, applySuggestion, buildA2uiCatalogDefinition, buildRenderResult, chartSpecFromProps, chartToTable, collectFormScopes, collectScopedValues, collectSpecActions, collectValues, createUiCatalogToolSource, defineUiCatalog, ensureStyles, evaluateFieldCondition, fromA2uiSpecAction, fromA2uiSurfaceAction, fromUiSurfaceActionDispatch, fromVercelToolResult, interactionToFormModel, interactionToUiSpec, loadOpenUiPeers, loadWebSkillLitCatalog, mountEchart, normalizeColumnWidths, qualifyFieldName, renderBlocks, renderMiniChart, renderMiniMarkdown, renderRenderResult, resolveColumnWidths, resolveInteractionTexts, resolveSurfaceFormTexts, shapeInteractionValue, toA2uiSpecMessages, toA2uiSurfaceAction, toJsonRenderSpec, toOpenUiSpecLang, toUiSurfaceActionDispatch, toVercelToolInvocation, uiCatalog, uiPreset };
|
package/dist/{webskillLitCatalog-_mugzRHx-B_54vxum.js → webskillLitCatalog-DwTwSBFt-DiXXpNZA.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { J as
|
|
1
|
+
import { J as A2UI_CHILDREN_PROP, Z as DEFAULT_SURFACE_FORM_TEXTS, ct as renderMiniMarkdown, et as WEBSKILL_A2UI_CATALOG_ID, ft as uiCatalog, it as chartSpecFromProps, nt as a2uiComponentShapes, st as mountEchart } from "./dist-CJqQsIm9.js";
|
|
2
2
|
import { A2uiController, A2uiLitElement } from "@a2ui/lit/v0_9";
|
|
3
3
|
import { Catalog } from "@a2ui/web_core/v0_9";
|
|
4
4
|
import { z } from "zod/v3";
|
|
@@ -1419,7 +1419,7 @@ var f = class extends i {
|
|
|
1419
1419
|
};
|
|
1420
1420
|
|
|
1421
1421
|
//#endregion
|
|
1422
|
-
//#region ../ui/dist/webskillLitCatalog-
|
|
1422
|
+
//#region ../ui/dist/webskillLitCatalog-DwTwSBFt.js
|
|
1423
1423
|
/**
|
|
1424
1424
|
* Lit 元素上的 echarts 挂载指令。
|
|
1425
1425
|
* A2UI 档的 catalog `Chart` 渲染在 shadow root 里,实例必须随元素断开而 dispose,
|
|
@@ -1539,6 +1539,16 @@ const sharedStyles = i$4`
|
|
|
1539
1539
|
overflow: auto;
|
|
1540
1540
|
border: 1px solid var(--border);
|
|
1541
1541
|
border-radius: var(--radius);
|
|
1542
|
+
container-type: inline-size;
|
|
1543
|
+
container-name: webskill-table;
|
|
1544
|
+
}
|
|
1545
|
+
/* 窄档降到 SPEC_TABLE_MIN_COLUMN_WIDTH.mobile。native 档的同名规则在 surfaces.css,
|
|
1546
|
+
那边的选择器进不了 shadow root,所以两侧各写一遍——变量名与取值必须同步(T-25-F) */
|
|
1547
|
+
@container webskill-table (width < 30rem) {
|
|
1548
|
+
th,
|
|
1549
|
+
td {
|
|
1550
|
+
--webskill-table-min-col: 5rem;
|
|
1551
|
+
}
|
|
1542
1552
|
}
|
|
1543
1553
|
table {
|
|
1544
1554
|
width: max-content;
|
|
@@ -1548,7 +1558,7 @@ const sharedStyles = i$4`
|
|
|
1548
1558
|
}
|
|
1549
1559
|
th,
|
|
1550
1560
|
td {
|
|
1551
|
-
min-width: 8rem;
|
|
1561
|
+
min-width: var(--webskill-table-min-col, 8rem);
|
|
1552
1562
|
border-bottom: 1px solid var(--border);
|
|
1553
1563
|
padding: 0.375rem 0.5rem;
|
|
1554
1564
|
text-align: left;
|
|
@@ -1738,6 +1748,15 @@ const renderers = {
|
|
|
1738
1748
|
<form @submit=${(event) => event.preventDefault()}>
|
|
1739
1749
|
${props["title"] ? T`<h3>${str(props, "title")}</h3>` : A} ${children(props, host)}
|
|
1740
1750
|
</form>
|
|
1751
|
+
`,
|
|
1752
|
+
FieldArray: (props, host) => T`
|
|
1753
|
+
<fieldset data-webskill-surface-array=${str(props, "name")}>
|
|
1754
|
+
<legend>${str(props, "label", str(props, "name"))}</legend>
|
|
1755
|
+
${children(props, host)}
|
|
1756
|
+
<p role="note" data-webskill-degraded="field-array">
|
|
1757
|
+
${str(props, "degradedNote", DEFAULT_SURFACE_FORM_TEXTS.arrayFirstItemOnly)}
|
|
1758
|
+
</p>
|
|
1759
|
+
</fieldset>
|
|
1741
1760
|
`,
|
|
1742
1761
|
Field: (props) => {
|
|
1743
1762
|
const name = str(props, "name");
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webskill/sdk",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "WebSkill
|
|
3
|
+
"version": "0.8.0",
|
|
4
|
+
"description": "WebSkill — browser/Node agent skill runtime (skills, tools, MCP, governance, UI)",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"engines": {
|