@webskill/sdk 0.4.0 → 0.6.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 +2 -0
- package/dist/agent.js +909 -0
- package/dist/browser.d.ts +233 -4
- package/dist/browser.js +869 -19
- package/dist/{catalogComponents-KsujmL4b-Clx1kCnU.js → catalogComponents-Dr5dFMAb-Dacibl1e.js} +372 -126
- package/dist/{dist-D9Lcn5Pp.js → dist-DnYG2-eY.js} +642 -39
- package/dist/{dist-C-Sh0MDU.js → dist-DusANsrn.js} +1035 -99
- package/dist/{env--jJB-TSX-04klhTYi.js → env-8cY40DXB-CGnEVZby.js} +7 -6
- package/dist/{env-BPUBZCwJ-4jat_SVG.d.ts → env-AK3cSMEA-Dli6QU5E.d.ts} +4 -3
- package/dist/governance.d.ts +46 -4
- package/dist/governance.js +45 -2
- package/dist/{index-CHXxDccV.d.ts → index-BMocOEi0.d.ts} +106 -10
- package/dist/index-BuTpBMzr.d.ts +474 -0
- package/dist/{index-DLfR2Y6I.d.ts → index-C-KFAZoF.d.ts} +337 -18
- package/dist/index.d.ts +3 -3
- package/dist/index.js +3 -3
- package/dist/mcp.d.ts +39 -8
- package/dist/mcp.js +53 -19
- package/dist/{memoryArtifactStore-BtOeB_hm-tj3fC5ip.js → memoryArtifactStore-52Zn9npI-BMPYwvoy.js} +10 -2
- package/dist/node.d.ts +4 -4
- package/dist/node.js +9 -2
- package/dist/{openUiLibrary-YLS-cxyT-C96jWDQq.js → openUiLibrary-Bdrji9qK-DzAxRlTY.js} +3 -3
- package/dist/{skillVersionStore-uyefLPR1-DXOzbksv.d.ts → skillVersionStore-BzLbzFOL-CxdAFWO2.d.ts} +4 -3
- package/dist/{testing-DDCJWvgA.js → testing-CYTFqkDm.js} +1 -1
- package/dist/testing.d.ts +2 -2
- package/dist/testing.js +3 -3
- package/dist/{types-7Wcg--Vh-1YlQ4jF9.d.ts → types-4pg-qp_I-Gq63X8Oa.d.ts} +55 -5
- package/dist/ui-react.d.ts +26 -5
- package/dist/ui-react.js +147 -29
- package/dist/ui-vue.d.ts +1 -1
- package/dist/ui-vue.js +30 -6
- package/dist/ui.d.ts +4 -4
- package/dist/ui.js +3 -3
- package/dist/{webskillLitCatalog-CSTbhBe_-CYIs5BX8.js → webskillLitCatalog-_mugzRHx-B_54vxum.js} +88 -2
- package/package.json +6 -1
package/dist/ui-react.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { r as __exportAll$1 } from "./rolldown-runtime-BOF7iYI8.js";
|
|
2
2
|
import { m as WebSkillError } from "./dist-8oQRa8Xz.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { _ as
|
|
3
|
+
import { Ct as validateUiSpecEvent, wt as validateUiSpecNode } from "./dist-DusANsrn.js";
|
|
4
|
+
import { B as toOpenUiSpecLang, I as shapeInteractionValue, O as interactionToFormModel, P as renderMiniChart, Q as chartSpecFromProps, g as applySuggestion, k as interactionToUiSpec, nt as uiCatalog, tt as renderMiniMarkdown, x as collectValues, z as toJsonRenderSpec } from "./dist-DnYG2-eY.js";
|
|
5
|
+
import { C as Input, S as DropdownMenuTrigger, T as Separator, _ as Checkbox, a as SpecProgress, b as DropdownMenuCheckboxItem, c as SurfaceButton, d as catalogComponentImpls, f as str, g as Button, h as Badge, i as SpecGrid, l as SurfaceField, m as useSurfaceForm, n as CatalogSurfaceProvider, o as SpecTabs, p as useCatalogSurfaceForm, r as EChart, s as SpecTimeline, u as SurfaceFormButtons, v as DataTable, w as Markdown, x as DropdownMenuContent, y as DropdownMenu } from "./catalogComponents-Dr5dFMAb-Dacibl1e.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";
|
|
@@ -6367,9 +6367,19 @@ function applyPatch(node, patch) {
|
|
|
6367
6367
|
}
|
|
6368
6368
|
return copy;
|
|
6369
6369
|
}
|
|
6370
|
+
/** 键序无关的序列化:同一份内容不能因写入顺序不同而算两个 surface(FR-21.5) */
|
|
6371
|
+
function stableStringify(value) {
|
|
6372
|
+
if (Array.isArray(value)) return `[${value.map(stableStringify).join(",")}]`;
|
|
6373
|
+
if (isRecord(value)) return `{${Object.keys(value).sort().map((key) => `${JSON.stringify(key)}:${stableStringify(value[key])}`).join(",")}}`;
|
|
6374
|
+
return JSON.stringify(value) ?? "null";
|
|
6375
|
+
}
|
|
6370
6376
|
/** Observable, revision-checked snapshot store for framework-neutral UI surfaces. @experimental */
|
|
6371
6377
|
var UiSurfaceStore = class {
|
|
6372
6378
|
#entries = /* @__PURE__ */ new Map();
|
|
6379
|
+
/** 内容指纹 → 首次开的 surface id;仅在同一 runId 内合并 */
|
|
6380
|
+
#fingerprints = /* @__PURE__ */ new Map();
|
|
6381
|
+
/** 后到的重复 id → 已存在的 surface id,让后续 patch/complete 仍然寻址得到 */
|
|
6382
|
+
#aliases = /* @__PURE__ */ new Map();
|
|
6373
6383
|
#listeners = /* @__PURE__ */ new Set();
|
|
6374
6384
|
#snapshots = [];
|
|
6375
6385
|
#patchEmitTimer;
|
|
@@ -6383,23 +6393,36 @@ var UiSurfaceStore = class {
|
|
|
6383
6393
|
apply(event) {
|
|
6384
6394
|
event = validateUiSpecEvent(event);
|
|
6385
6395
|
switch (event.type) {
|
|
6386
|
-
case "open":
|
|
6387
|
-
|
|
6396
|
+
case "open": {
|
|
6397
|
+
const snapshot = {
|
|
6388
6398
|
id: event.id,
|
|
6389
6399
|
node: structuredClone(event.node),
|
|
6390
6400
|
...event.actions ? { actions: structuredClone(event.actions) } : {},
|
|
6391
6401
|
revision: 0,
|
|
6392
6402
|
status: "active",
|
|
6393
6403
|
...event.runId ? { runId: event.runId } : {}
|
|
6394
|
-
}
|
|
6404
|
+
};
|
|
6405
|
+
const fingerprint = this.#fingerprint(event);
|
|
6406
|
+
const merged = fingerprint === void 0 ? void 0 : this.#fingerprints.get(fingerprint);
|
|
6407
|
+
if (merged !== void 0 && this.#entries.has(merged)) {
|
|
6408
|
+
this.#aliases.set(event.id, merged);
|
|
6409
|
+
this.#entries.set(merged, {
|
|
6410
|
+
...snapshot,
|
|
6411
|
+
id: merged
|
|
6412
|
+
});
|
|
6413
|
+
} else {
|
|
6414
|
+
if (fingerprint !== void 0) this.#fingerprints.set(fingerprint, event.id);
|
|
6415
|
+
this.#entries.set(event.id, snapshot);
|
|
6416
|
+
}
|
|
6395
6417
|
break;
|
|
6418
|
+
}
|
|
6396
6419
|
case "patch": {
|
|
6397
6420
|
const current = this.#entry(event.id);
|
|
6398
6421
|
this.#assertRunId(current, event.runId);
|
|
6399
6422
|
if (current.status !== "active" || event.revision !== current.revision + 1) throw new WebSkillError("VALIDATION_FAILED", `Surface patch revision is invalid for "${event.id}"`);
|
|
6400
6423
|
let node = current.node;
|
|
6401
6424
|
for (const operation of event.operations) node = applyPatch(node, operation);
|
|
6402
|
-
this.#entries.set(
|
|
6425
|
+
this.#entries.set(current.id, {
|
|
6403
6426
|
...current,
|
|
6404
6427
|
node: validateUiSpecNode(node),
|
|
6405
6428
|
revision: event.revision
|
|
@@ -6410,7 +6433,7 @@ var UiSurfaceStore = class {
|
|
|
6410
6433
|
const current = this.#entry(event.id);
|
|
6411
6434
|
this.#assertRunId(current, event.runId);
|
|
6412
6435
|
if (event.revision !== current.revision) throw new WebSkillError("VALIDATION_FAILED", `Surface completion revision is invalid for "${event.id}"`);
|
|
6413
|
-
this.#entries.set(
|
|
6436
|
+
this.#entries.set(current.id, {
|
|
6414
6437
|
...current,
|
|
6415
6438
|
status: "complete"
|
|
6416
6439
|
});
|
|
@@ -6419,7 +6442,7 @@ var UiSurfaceStore = class {
|
|
|
6419
6442
|
case "error": {
|
|
6420
6443
|
const current = this.#entry(event.id);
|
|
6421
6444
|
this.#assertRunId(current, event.runId);
|
|
6422
|
-
this.#entries.set(
|
|
6445
|
+
this.#entries.set(current.id, {
|
|
6423
6446
|
...current,
|
|
6424
6447
|
status: "error",
|
|
6425
6448
|
error: {
|
|
@@ -6432,7 +6455,7 @@ var UiSurfaceStore = class {
|
|
|
6432
6455
|
case "cancel": {
|
|
6433
6456
|
const current = this.#entry(event.id);
|
|
6434
6457
|
this.#assertRunId(current, event.runId);
|
|
6435
|
-
this.#entries.set(
|
|
6458
|
+
this.#entries.set(current.id, {
|
|
6436
6459
|
...current,
|
|
6437
6460
|
status: "cancelled"
|
|
6438
6461
|
});
|
|
@@ -6446,8 +6469,16 @@ var UiSurfaceStore = class {
|
|
|
6446
6469
|
this.#emit();
|
|
6447
6470
|
}
|
|
6448
6471
|
}
|
|
6472
|
+
/** 跨 run 的相同界面是合法重复(用户又问了一次),所以无 runId 时不合并 */
|
|
6473
|
+
#fingerprint(event) {
|
|
6474
|
+
if (event.runId === void 0) return void 0;
|
|
6475
|
+
return `${event.runId}\u0000${stableStringify({
|
|
6476
|
+
node: event.node,
|
|
6477
|
+
actions: event.actions ?? null
|
|
6478
|
+
})}`;
|
|
6479
|
+
}
|
|
6449
6480
|
#entry(id) {
|
|
6450
|
-
const entry = this.#entries.get(id);
|
|
6481
|
+
const entry = this.#entries.get(this.#aliases.get(id) ?? id);
|
|
6451
6482
|
if (!entry) throw new WebSkillError("VALIDATION_FAILED", `Unknown UI surface "${id}"`);
|
|
6452
6483
|
return entry;
|
|
6453
6484
|
}
|
|
@@ -6489,8 +6520,10 @@ var ReactBridgeState = class {
|
|
|
6489
6520
|
#processedSurfaceActionNonces = /* @__PURE__ */ new Set();
|
|
6490
6521
|
#surfaceDrafts = /* @__PURE__ */ new Map();
|
|
6491
6522
|
#onSurfaceDraftChange;
|
|
6523
|
+
#onDroppedSurfaceAction;
|
|
6492
6524
|
constructor(options = {}) {
|
|
6493
6525
|
this.#onSurfaceDraftChange = options.onSurfaceDraftChange;
|
|
6526
|
+
this.#onDroppedSurfaceAction = options.onDroppedSurfaceAction;
|
|
6494
6527
|
this.surfaceStore.subscribe(() => this.#emit());
|
|
6495
6528
|
}
|
|
6496
6529
|
get surfaceSnapshots() {
|
|
@@ -6559,12 +6592,25 @@ var ReactBridgeState = class {
|
|
|
6559
6592
|
this.#surfaceActionResolvers.set(input.nonce, resolve);
|
|
6560
6593
|
});
|
|
6561
6594
|
}
|
|
6562
|
-
/**
|
|
6595
|
+
/**
|
|
6596
|
+
* Resolves exactly one pending action capability; stale or duplicate nonces are ignored.
|
|
6597
|
+
* Every ignored response is reported through `onDroppedSurfaceAction` (FR-11.7).
|
|
6598
|
+
*/
|
|
6563
6599
|
resolveSurfaceAction(response) {
|
|
6564
|
-
if (this.#processedSurfaceActionNonces.has(response.nonce))
|
|
6600
|
+
if (this.#processedSurfaceActionNonces.has(response.nonce)) {
|
|
6601
|
+
this.#reportDropped("duplicate", response);
|
|
6602
|
+
return false;
|
|
6603
|
+
}
|
|
6565
6604
|
const resolver = this.#surfaceActionResolvers.get(response.nonce);
|
|
6566
6605
|
const pending = this.pendingSurfaceAction;
|
|
6567
|
-
if (!resolver || !pending
|
|
6606
|
+
if (!resolver || !pending) {
|
|
6607
|
+
this.#reportDropped("no-pending", response);
|
|
6608
|
+
return false;
|
|
6609
|
+
}
|
|
6610
|
+
if (pending.runId !== response.runId || pending.surfaceId !== response.surfaceId || pending.actionId !== response.actionId || pending.nonce !== response.nonce) {
|
|
6611
|
+
this.#reportDropped("mismatch", response);
|
|
6612
|
+
return false;
|
|
6613
|
+
}
|
|
6568
6614
|
this.#processedSurfaceActionNonces.add(response.nonce);
|
|
6569
6615
|
this.#surfaceActionResolvers.delete(response.nonce);
|
|
6570
6616
|
this.pendingSurfaceAction = null;
|
|
@@ -6585,6 +6631,21 @@ var ReactBridgeState = class {
|
|
|
6585
6631
|
cancelled: true
|
|
6586
6632
|
});
|
|
6587
6633
|
}
|
|
6634
|
+
#reportDropped(reason, response) {
|
|
6635
|
+
const pending = this.pendingSurfaceAction;
|
|
6636
|
+
const state = pending === null ? "no action is pending" : `pending action is ${pending.surfaceId}/${pending.actionId} (nonce ${pending.nonce}, run ${pending.runId})`;
|
|
6637
|
+
const warning = {
|
|
6638
|
+
reason,
|
|
6639
|
+
nonce: response.nonce,
|
|
6640
|
+
message: `Dropped UI surface action ${response.surfaceId}/${response.actionId} with nonce ${response.nonce}: ${reason}; ${state}`,
|
|
6641
|
+
pending
|
|
6642
|
+
};
|
|
6643
|
+
if (this.#onDroppedSurfaceAction) {
|
|
6644
|
+
this.#onDroppedSurfaceAction(warning);
|
|
6645
|
+
return;
|
|
6646
|
+
}
|
|
6647
|
+
console.warn(`[webskill] ${warning.message}`);
|
|
6648
|
+
}
|
|
6588
6649
|
async onTextDelta(runId, delta) {
|
|
6589
6650
|
if (this.streamingRunId !== runId) {
|
|
6590
6651
|
this.streamingRunId = runId;
|
|
@@ -6594,6 +6655,40 @@ var ReactBridgeState = class {
|
|
|
6594
6655
|
this.#emit();
|
|
6595
6656
|
}
|
|
6596
6657
|
};
|
|
6658
|
+
/**
|
|
6659
|
+
* 建议值以**建议**形态出现(FR-19.4):控件初始值仍为空,
|
|
6660
|
+
* 用户点「使用」才写入。切勿改成 defaultValue。
|
|
6661
|
+
*/
|
|
6662
|
+
function Suggestion({ control, onUse }) {
|
|
6663
|
+
if (control.suggestion === void 0) return null;
|
|
6664
|
+
const preview = String(control.suggestion.value);
|
|
6665
|
+
const reason = control.suggestion.reason;
|
|
6666
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
6667
|
+
className: "webskill-form__suggestion",
|
|
6668
|
+
"data-webskill-suggestion": control.name,
|
|
6669
|
+
children: [
|
|
6670
|
+
/* @__PURE__ */ jsxs("span", {
|
|
6671
|
+
className: "webskill-form__suggestion-value",
|
|
6672
|
+
children: ["Suggested: ", preview]
|
|
6673
|
+
}),
|
|
6674
|
+
reason ? /* @__PURE__ */ jsxs("span", {
|
|
6675
|
+
className: "webskill-form__suggestion-reason",
|
|
6676
|
+
children: [
|
|
6677
|
+
"(",
|
|
6678
|
+
reason,
|
|
6679
|
+
")"
|
|
6680
|
+
]
|
|
6681
|
+
}) : null,
|
|
6682
|
+
/* @__PURE__ */ jsx("button", {
|
|
6683
|
+
type: "button",
|
|
6684
|
+
className: "webskill-form__suggestion-use",
|
|
6685
|
+
"data-webskill-suggestion-use": control.name,
|
|
6686
|
+
onClick: onUse,
|
|
6687
|
+
children: "Use"
|
|
6688
|
+
})
|
|
6689
|
+
]
|
|
6690
|
+
});
|
|
6691
|
+
}
|
|
6597
6692
|
function Control({ control, invalid }) {
|
|
6598
6693
|
const controlId = `webskill-field-${control.name}`;
|
|
6599
6694
|
const label = /* @__PURE__ */ jsxs("label", {
|
|
@@ -6709,15 +6804,24 @@ function InteractionForm({ bridge }) {
|
|
|
6709
6804
|
}) : null,
|
|
6710
6805
|
model.controls.map((control) => /* @__PURE__ */ jsxs("div", {
|
|
6711
6806
|
className: invalid.includes(control.name) ? "webskill-form__control--invalid" : void 0,
|
|
6712
|
-
children: [
|
|
6713
|
-
|
|
6714
|
-
|
|
6715
|
-
|
|
6716
|
-
|
|
6717
|
-
|
|
6718
|
-
|
|
6719
|
-
|
|
6720
|
-
|
|
6807
|
+
children: [
|
|
6808
|
+
/* @__PURE__ */ jsx(Control, {
|
|
6809
|
+
control,
|
|
6810
|
+
invalid: invalid.includes(control.name)
|
|
6811
|
+
}),
|
|
6812
|
+
/* @__PURE__ */ jsx(Suggestion, {
|
|
6813
|
+
control,
|
|
6814
|
+
onUse: () => {
|
|
6815
|
+
if (formRef.current) applySuggestion(control, formRef.current);
|
|
6816
|
+
}
|
|
6817
|
+
}),
|
|
6818
|
+
invalid.includes(control.name) ? /* @__PURE__ */ jsx("div", {
|
|
6819
|
+
id: `webskill-error-${control.name}`,
|
|
6820
|
+
role: "alert",
|
|
6821
|
+
className: "webskill-form__error",
|
|
6822
|
+
children: "This field is required"
|
|
6823
|
+
}) : null
|
|
6824
|
+
]
|
|
6721
6825
|
}, control.name)),
|
|
6722
6826
|
/* @__PURE__ */ jsxs("div", {
|
|
6723
6827
|
className: "webskill-form__actions",
|
|
@@ -6955,9 +7059,10 @@ const TONE_CLASS = {
|
|
|
6955
7059
|
info: "text-info",
|
|
6956
7060
|
destructive: "text-destructive"
|
|
6957
7061
|
};
|
|
6958
|
-
function renderNode(node, context, key) {
|
|
7062
|
+
function renderNode(node, context, key, scope) {
|
|
6959
7063
|
const props = node.props ?? {};
|
|
6960
|
-
const
|
|
7064
|
+
const nodeScope = node.component === "Form" ? context.scopeOfNode(node) : scope;
|
|
7065
|
+
const children = (node.children ?? []).map((child, index) => renderNode(child, context, `${key}.${index}`, nodeScope));
|
|
6961
7066
|
switch (node.component) {
|
|
6962
7067
|
case "Stack": return /* @__PURE__ */ jsx("div", {
|
|
6963
7068
|
className: `flex gap-3 ${str(props, "direction", "vertical") === "horizontal" ? "flex-row items-center" : "flex-col"}`,
|
|
@@ -7015,6 +7120,16 @@ function renderNode(node, context, key) {
|
|
|
7015
7120
|
label: str(props, "title", "Data")
|
|
7016
7121
|
}, key);
|
|
7017
7122
|
case "Chart": return /* @__PURE__ */ jsx(EChart, { chart: chartSpecFromProps(props) }, key);
|
|
7123
|
+
case "Tabs": return /* @__PURE__ */ jsx(SpecTabs, {
|
|
7124
|
+
props,
|
|
7125
|
+
children
|
|
7126
|
+
}, key);
|
|
7127
|
+
case "Grid": return /* @__PURE__ */ jsx(SpecGrid, {
|
|
7128
|
+
props,
|
|
7129
|
+
children
|
|
7130
|
+
}, key);
|
|
7131
|
+
case "Timeline": return /* @__PURE__ */ jsx(SpecTimeline, { props }, key);
|
|
7132
|
+
case "Progress": return /* @__PURE__ */ jsx(SpecProgress, { props }, key);
|
|
7018
7133
|
case "FileLink": return /* @__PURE__ */ jsxs("div", {
|
|
7019
7134
|
className: "flex items-center gap-2 text-sm",
|
|
7020
7135
|
children: [/* @__PURE__ */ jsx("span", {
|
|
@@ -7032,7 +7147,7 @@ function renderNode(node, context, key) {
|
|
|
7032
7147
|
className: "flex flex-col gap-3",
|
|
7033
7148
|
onSubmit: (event) => {
|
|
7034
7149
|
event.preventDefault();
|
|
7035
|
-
context.submit("submit");
|
|
7150
|
+
context.submit("submit", void 0, nodeScope);
|
|
7036
7151
|
},
|
|
7037
7152
|
noValidate: true,
|
|
7038
7153
|
children: [
|
|
@@ -7043,17 +7158,20 @@ function renderNode(node, context, key) {
|
|
|
7043
7158
|
children,
|
|
7044
7159
|
/* @__PURE__ */ jsx(SurfaceFormButtons, {
|
|
7045
7160
|
form: context,
|
|
7046
|
-
props
|
|
7161
|
+
props,
|
|
7162
|
+
scope: nodeScope
|
|
7047
7163
|
})
|
|
7048
7164
|
]
|
|
7049
7165
|
}, key);
|
|
7050
7166
|
case "Field": return /* @__PURE__ */ jsx(SurfaceField, {
|
|
7051
7167
|
form: context,
|
|
7052
|
-
props
|
|
7168
|
+
props,
|
|
7169
|
+
scope
|
|
7053
7170
|
}, key);
|
|
7054
7171
|
case "Button": return /* @__PURE__ */ jsx(SurfaceButton, {
|
|
7055
7172
|
form: context,
|
|
7056
7173
|
props,
|
|
7174
|
+
scope,
|
|
7057
7175
|
...node.id ? { nodeId: node.id } : {}
|
|
7058
7176
|
}, key);
|
|
7059
7177
|
case "Alert": return /* @__PURE__ */ jsxs("div", {
|
|
@@ -7418,7 +7536,7 @@ function OpenUiSpecSurface({ spec, surfaceId, actions, onAction }) {
|
|
|
7418
7536
|
const [unavailable, setUnavailable] = useState(false);
|
|
7419
7537
|
useEffect(() => {
|
|
7420
7538
|
let cancelled = false;
|
|
7421
|
-
import("./openUiLibrary-
|
|
7539
|
+
import("./openUiLibrary-Bdrji9qK-DzAxRlTY.js").then((loaded) => {
|
|
7422
7540
|
if (!cancelled) setModule(loaded);
|
|
7423
7541
|
}).catch(() => {
|
|
7424
7542
|
if (!cancelled) setUnavailable(true);
|
package/dist/ui-vue.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { b as UiBridge, c as InteractionResponse, s as InteractionRequest, y as RenderResultRequest } from "./types-4pg-qp_I-Gq63X8Oa.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 { I as shapeInteractionValue, O as interactionToFormModel, P as renderMiniChart, g as applySuggestion, tt as renderMiniMarkdown, x as collectValues } from "./dist-DnYG2-eY.js";
|
|
2
2
|
import { defineComponent, h, reactive, ref } from "vue";
|
|
3
3
|
|
|
4
4
|
//#region ../ui-vue/dist/index.js
|
|
@@ -46,6 +46,24 @@ var VueBridgeState = class {
|
|
|
46
46
|
this.state.streamingText += delta;
|
|
47
47
|
}
|
|
48
48
|
};
|
|
49
|
+
/** 建议值以**建议**形态出现(FR-19.4):控件初始值仍为空,用户点「使用」才写入 */
|
|
50
|
+
function renderSuggestion(control, onUse) {
|
|
51
|
+
if (control.suggestion === void 0) return null;
|
|
52
|
+
const reason = control.suggestion.reason;
|
|
53
|
+
return h("div", {
|
|
54
|
+
class: "webskill-form__suggestion",
|
|
55
|
+
"data-webskill-suggestion": control.name
|
|
56
|
+
}, [
|
|
57
|
+
h("span", { class: "webskill-form__suggestion-value" }, `Suggested: ${String(control.suggestion.value)}`),
|
|
58
|
+
...reason ? [h("span", { class: "webskill-form__suggestion-reason" }, `(${reason})`)] : [],
|
|
59
|
+
h("button", {
|
|
60
|
+
type: "button",
|
|
61
|
+
class: "webskill-form__suggestion-use",
|
|
62
|
+
"data-webskill-suggestion-use": control.name,
|
|
63
|
+
onClick: onUse
|
|
64
|
+
}, "Use")
|
|
65
|
+
]);
|
|
66
|
+
}
|
|
49
67
|
function renderControl(control, invalid) {
|
|
50
68
|
const controlId = `webskill-field-${control.name}`;
|
|
51
69
|
const label = h("label", {
|
|
@@ -137,11 +155,17 @@ const InteractionForm = defineComponent({
|
|
|
137
155
|
}, [
|
|
138
156
|
model.title ? h("div", { class: "webskill-form__title" }, model.title) : null,
|
|
139
157
|
model.message && (model.kind === "form" || model.kind === "authorize") ? h("p", { class: "webskill-form__message" }, model.message) : null,
|
|
140
|
-
...model.controls.map((control) => h("div", { key: control.name }, [
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
158
|
+
...model.controls.map((control) => h("div", { key: control.name }, [
|
|
159
|
+
renderControl(control, invalid.value.includes(control.name)),
|
|
160
|
+
renderSuggestion(control, () => {
|
|
161
|
+
if (formRef.value) applySuggestion(control, formRef.value);
|
|
162
|
+
}),
|
|
163
|
+
invalid.value.includes(control.name) ? h("div", {
|
|
164
|
+
id: `webskill-error-${control.name}`,
|
|
165
|
+
role: "alert",
|
|
166
|
+
class: "webskill-form__error"
|
|
167
|
+
}, "This field is required") : null
|
|
168
|
+
])),
|
|
145
169
|
h("div", { class: "webskill-form__actions" }, [h("button", {
|
|
146
170
|
type: "submit",
|
|
147
171
|
class: "webskill-form__button webskill-form__button--primary"
|
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, type EchartHandle, type FormModel, type InteractionSpecLabels, type JsonRenderSpec, type LoadedOpenUiPeers, type OpenUiRendererProps, type OpenUiRuntime, RENDER_UI_TOOL, UI_CATALOG_GROUPS, type UiActionDef, type UiCatalog, type UiCatalogInput, type UiCatalogPromptOptions, type UiCatalogToolSourceOptions, type UiComponentDef, 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, buildA2uiCatalogDefinition, buildRenderResult, chartSpecFromProps, chartToTable, collectSpecActions, collectValues, createUiCatalogToolSource, defineUiCatalog, ensureStyles, fromA2uiSpecAction, fromA2uiSurfaceAction, fromUiSurfaceActionDispatch, fromVercelToolResult, interactionToFormModel, interactionToUiSpec, loadOpenUiPeers, loadWebSkillLitCatalog, mountEchart, renderBlocks, renderMiniChart, renderMiniMarkdown, renderRenderResult, shapeInteractionValue, toA2uiSpecMessages, toA2uiSurfaceAction, toJsonRenderSpec, toOpenUiSpecLang, toUiSurfaceActionDispatch, toVercelToolInvocation, uiCatalog };
|
|
1
|
+
import { mt as UiSpecNode } from "./types-4pg-qp_I-Gq63X8Oa.js";
|
|
2
|
+
import { dn as buildRenderResult } from "./index-C-KFAZoF.js";
|
|
3
|
+
import { $ as buildA2uiCatalogDefinition, A as UiActionDef, At as uiCatalog, B as UiSpecValidation, C as OpenUiRendererProps, Ct as shapeInteractionValue, D as UI_CATALOG_PROMPT_BUDGET_BYTES, Dt as toOpenUiSpecLang, E as UI_CATALOG_GROUPS, Et as toJsonRenderSpec, F as UiComponentDef, G as WEBSKILL_A2UI_CATALOG_ID, H as VERCEL_INTERACTION_TOOL_NAME, I as UiFormScope, J as WebFormBridge, K as WEBSKILL_STYLES_CSS, L as UiPreset, M as UiCatalogInput, N as UiCatalogPromptOptions, O as UI_PRESETS, Ot as toUiSurfaceActionDispatch, P as UiCatalogToolSourceOptions, Q as applySuggestion, R as UiPresetName, S as LoadedOpenUiPeers, St as renderRenderResult, T as RENDER_UI_TOOL, Tt as toA2uiSurfaceAction, U as VercelToolInvocation, V as UiSurfaceActionDispatch, W as VercelUiBridge, X as a2uiComponentSchema, Y as ZodRuntime, Z as a2uiComponentShapes, _ as DESCRIBE_UI_PRESET_TOOL, _t as mountEchart, a as A2UI_SURFACE_ACTION, at as collectValues, b as InteractionSpecLabels, bt as renderMiniChart, c as A2uiCatalogDefinition, ct as ensureStyles, d as A2uiMessage, dt as fromUiSurfaceActionDispatch, et as chartSpecFromProps, f as A2uiSpecActionEvent, ft as fromVercelToolResult, g as ControlModel, gt as loadWebSkillLitCatalog, h as CollectedValues, ht as loadOpenUiPeers, i as A2UI_SPEC_FORM_PATH, it as collectSpecActions, j as UiCatalog, jt as uiPreset, k as UI_PRESET_NAMES, kt as toVercelToolInvocation, l as A2uiCatalogHandle, lt as fromA2uiSpecAction, m as CHART_PALETTE, mt as interactionToUiSpec, n as A2UI_COMMON_TYPES, nt as collectFormScopes, o as A2UI_VERSION, ot as createUiCatalogToolSource, p as A2uiSpecMessageOptions, pt as interactionToFormModel, q as WEBSKILL_SURFACE_ACTION, r as A2UI_SPEC_ACTION, rt as collectScopedValues, s as A2uiCatalogComponent, st as defineUiCatalog, t as A2UI_BASIC_CATALOG_ID, tt as chartToTable, u as A2uiComponentShape, ut as fromA2uiSurfaceAction, v as EchartHandle, vt as qualifyFieldName, w as OpenUiRuntime, wt as toA2uiSpecMessages, x as JsonRenderSpec, xt as renderMiniMarkdown, y as FormModel, yt as renderBlocks, z as UiSpecIssue } from "./index-BMocOEi0.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 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 };
|
package/dist/ui.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { A as
|
|
1
|
+
import { B as buildRenderResult } from "./dist-DusANsrn.js";
|
|
2
|
+
import { $ as defineUiCatalog, A as loadOpenUiPeers, B as toOpenUiSpecLang, C as ensureStyles, D as fromVercelToolResult, E as fromUiSurfaceActionDispatch, F as renderRenderResult, G as A2UI_COMMON_TYPES, H as toVercelToolInvocation, I as shapeInteractionValue, J as WEBSKILL_A2UI_CATALOG_ID, K as UI_CATALOG_GROUPS, L as toA2uiSpecMessages, M as qualifyFieldName, N as renderBlocks, O as interactionToFormModel, P as renderMiniChart, Q as chartSpecFromProps, R as toA2uiSurfaceAction, S as createUiCatalogToolSource, T as fromA2uiSurfaceAction, U as uiPreset, V as toUiSurfaceActionDispatch, X as a2uiComponentShapes, Y as a2uiComponentSchema, Z as buildA2uiCatalogDefinition, _ as chartToTable, a as A2UI_VERSION, b as collectSpecActions, c as RENDER_UI_TOOL, d as VERCEL_INTERACTION_TOOL_NAME, et as mountEchart, f as VercelUiBridge, g as applySuggestion, h as WebFormBridge, i as A2UI_SURFACE_ACTION, j as loadWebSkillLitCatalog, k as interactionToUiSpec, l as UI_PRESETS, m as WEBSKILL_SURFACE_ACTION, n as A2UI_SPEC_ACTION, nt as uiCatalog, o as CHART_PALETTE, p as WEBSKILL_STYLES_CSS, q as UI_CATALOG_PROMPT_BUDGET_BYTES, r as A2UI_SPEC_FORM_PATH, s as DESCRIBE_UI_PRESET_TOOL, t as A2UI_BASIC_CATALOG_ID, tt as renderMiniMarkdown, u as UI_PRESET_NAMES, v as collectFormScopes, w as fromA2uiSpecAction, x as collectValues, y as collectScopedValues, z as toJsonRenderSpec } from "./dist-DnYG2-eY.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, RENDER_UI_TOOL, UI_CATALOG_GROUPS, VERCEL_INTERACTION_TOOL_NAME, VercelUiBridge, WEBSKILL_A2UI_CATALOG_ID, WEBSKILL_STYLES_CSS, WEBSKILL_SURFACE_ACTION, WebFormBridge, a2uiComponentSchema, a2uiComponentShapes, buildA2uiCatalogDefinition, buildRenderResult, chartSpecFromProps, chartToTable, collectSpecActions, collectValues, createUiCatalogToolSource, defineUiCatalog, ensureStyles, fromA2uiSpecAction, fromA2uiSurfaceAction, fromUiSurfaceActionDispatch, fromVercelToolResult, interactionToFormModel, interactionToUiSpec, loadOpenUiPeers, loadWebSkillLitCatalog, mountEchart, renderBlocks, renderMiniChart, renderMiniMarkdown, renderRenderResult, shapeInteractionValue, toA2uiSpecMessages, toA2uiSurfaceAction, toJsonRenderSpec, toOpenUiSpecLang, toUiSurfaceActionDispatch, toVercelToolInvocation, uiCatalog };
|
|
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 };
|
package/dist/{webskillLitCatalog-CSTbhBe_-CYIs5BX8.js → webskillLitCatalog-_mugzRHx-B_54vxum.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { J as WEBSKILL_A2UI_CATALOG_ID, Q as chartSpecFromProps, W as A2UI_CHILDREN_PROP, X as a2uiComponentShapes, et as mountEchart, nt as uiCatalog, tt as renderMiniMarkdown } from "./dist-DnYG2-eY.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-_mugzRHx.js
|
|
1423
1423
|
/**
|
|
1424
1424
|
* Lit 元素上的 echarts 挂载指令。
|
|
1425
1425
|
* A2UI 档的 catalog `Chart` 渲染在 shadow root 里,实例必须随元素断开而 dispose,
|
|
@@ -1598,6 +1598,33 @@ const sharedStyles = i$4`
|
|
|
1598
1598
|
.error {
|
|
1599
1599
|
color: var(--destructive);
|
|
1600
1600
|
}
|
|
1601
|
+
.tabs {
|
|
1602
|
+
display: flex;
|
|
1603
|
+
gap: 0.25rem;
|
|
1604
|
+
border-bottom: 1px solid var(--border);
|
|
1605
|
+
}
|
|
1606
|
+
.grid {
|
|
1607
|
+
display: grid;
|
|
1608
|
+
gap: 0.75rem;
|
|
1609
|
+
}
|
|
1610
|
+
ol.timeline {
|
|
1611
|
+
display: flex;
|
|
1612
|
+
flex-direction: column;
|
|
1613
|
+
gap: 0.5rem;
|
|
1614
|
+
margin: 0;
|
|
1615
|
+
padding-left: 1rem;
|
|
1616
|
+
}
|
|
1617
|
+
.bar {
|
|
1618
|
+
height: 0.5rem;
|
|
1619
|
+
border-radius: 999px;
|
|
1620
|
+
background: var(--secondary);
|
|
1621
|
+
overflow: hidden;
|
|
1622
|
+
}
|
|
1623
|
+
.bar > span {
|
|
1624
|
+
display: block;
|
|
1625
|
+
height: 100%;
|
|
1626
|
+
background: var(--foreground);
|
|
1627
|
+
}
|
|
1601
1628
|
`;
|
|
1602
1629
|
const str = (props, key, fallback = "") => typeof props[key] === "string" ? props[key] : fallback;
|
|
1603
1630
|
const list = (value) => Array.isArray(value) ? value : [];
|
|
@@ -1618,6 +1645,34 @@ const renderers = {
|
|
|
1618
1645
|
</section>
|
|
1619
1646
|
`,
|
|
1620
1647
|
Separator: () => T`<hr />`,
|
|
1648
|
+
Tabs: (props, host) => {
|
|
1649
|
+
const labels = list(props["labels"]);
|
|
1650
|
+
const panels = props.children ?? [];
|
|
1651
|
+
const active = Math.min(host.view["tab"] ?? 0, Math.max(panels.length - 1, 0));
|
|
1652
|
+
return T`
|
|
1653
|
+
<div class="stack" data-direction="vertical">
|
|
1654
|
+
<div class="tabs" role="tablist">
|
|
1655
|
+
${labels.map((label, index) => T`<button
|
|
1656
|
+
type="button"
|
|
1657
|
+
role="tab"
|
|
1658
|
+
aria-selected=${index === active ? "true" : "false"}
|
|
1659
|
+
@click=${() => {
|
|
1660
|
+
host.view["tab"] = index;
|
|
1661
|
+
host.refresh();
|
|
1662
|
+
}}
|
|
1663
|
+
>
|
|
1664
|
+
${label}
|
|
1665
|
+
</button>`)}
|
|
1666
|
+
</div>
|
|
1667
|
+
${panels[active] ? host.renderChild(panels[active]) : A}
|
|
1668
|
+
</div>
|
|
1669
|
+
`;
|
|
1670
|
+
},
|
|
1671
|
+
Grid: (props, host) => T`
|
|
1672
|
+
<div class="grid" style=${`grid-template-columns: repeat(${Number(props["columns"] ?? 2)}, minmax(0, 1fr))`}>
|
|
1673
|
+
${children(props, host)}
|
|
1674
|
+
</div>
|
|
1675
|
+
`,
|
|
1621
1676
|
Heading: (props) => {
|
|
1622
1677
|
const text = str(props, "text");
|
|
1623
1678
|
if (props["level"] === 2) return T`<h2>${text}</h2>`;
|
|
@@ -1651,6 +1706,33 @@ const renderers = {
|
|
|
1651
1706
|
</div>
|
|
1652
1707
|
`,
|
|
1653
1708
|
Chart: (props) => T`<div class="chart" ${echart(chartSpecFromProps(props))}></div>`,
|
|
1709
|
+
Timeline: (props) => T`
|
|
1710
|
+
<ol class="timeline">
|
|
1711
|
+
${list(props["items"]).map((item) => T`<li>
|
|
1712
|
+
<strong>${String(item["title"] ?? "")}</strong>
|
|
1713
|
+
${item["time"] ? T`<p class="muted">${String(item["time"])}</p>` : A}
|
|
1714
|
+
${item["description"] ? T`<p>${String(item["description"])}</p>` : A}
|
|
1715
|
+
</li>`)}
|
|
1716
|
+
</ol>
|
|
1717
|
+
`,
|
|
1718
|
+
Progress: (props) => {
|
|
1719
|
+
const value = Math.max(0, Math.min(100, Number(props["value"] ?? 0)));
|
|
1720
|
+
return T`
|
|
1721
|
+
<div class="metric">
|
|
1722
|
+
${props["label"] ? T`<span class="muted">${str(props, "label")}</span>` : A}
|
|
1723
|
+
<div
|
|
1724
|
+
class="bar"
|
|
1725
|
+
role="progressbar"
|
|
1726
|
+
aria-valuenow=${value}
|
|
1727
|
+
aria-valuemin="0"
|
|
1728
|
+
aria-valuemax="100"
|
|
1729
|
+
aria-label=${str(props, "label", "Progress")}
|
|
1730
|
+
>
|
|
1731
|
+
<span style=${`width: ${value}%`}></span>
|
|
1732
|
+
</div>
|
|
1733
|
+
</div>
|
|
1734
|
+
`;
|
|
1735
|
+
},
|
|
1654
1736
|
FileLink: (props) => T`<p>${str(props, "label", str(props, "path"))}</p>`,
|
|
1655
1737
|
Form: (props, host) => T`
|
|
1656
1738
|
<form @submit=${(event) => event.preventDefault()}>
|
|
@@ -1752,12 +1834,16 @@ function apiSchema(shape) {
|
|
|
1752
1834
|
function defineElement(api, render) {
|
|
1753
1835
|
class WebSkillA2uiElement extends A2uiLitElement {
|
|
1754
1836
|
static styles = sharedStyles;
|
|
1837
|
+
view = {};
|
|
1755
1838
|
createController() {
|
|
1756
1839
|
return new A2uiController(this, api);
|
|
1757
1840
|
}
|
|
1758
1841
|
renderChild(ref) {
|
|
1759
1842
|
return this.renderNode(ref);
|
|
1760
1843
|
}
|
|
1844
|
+
refresh() {
|
|
1845
|
+
this.requestUpdate();
|
|
1846
|
+
}
|
|
1761
1847
|
render() {
|
|
1762
1848
|
const props = this.controller?.props;
|
|
1763
1849
|
return props ? render(props, this) : A;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webskill/sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "WebSkill \u2014 browser/Node agent skill runtime (skills, tools, MCP, governance, UI)",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -40,6 +40,10 @@
|
|
|
40
40
|
"types": "./dist/governance.d.ts",
|
|
41
41
|
"import": "./dist/governance.js"
|
|
42
42
|
},
|
|
43
|
+
"./agent": {
|
|
44
|
+
"types": "./dist/agent.d.ts",
|
|
45
|
+
"import": "./dist/agent.js"
|
|
46
|
+
},
|
|
43
47
|
"./testing": {
|
|
44
48
|
"types": "./dist/testing.d.ts",
|
|
45
49
|
"import": "./dist/testing.js"
|
|
@@ -92,6 +96,7 @@
|
|
|
92
96
|
},
|
|
93
97
|
"devDependencies": {
|
|
94
98
|
"@types/node": "24.13.3",
|
|
99
|
+
"@webskill/agent": "workspace:*",
|
|
95
100
|
"@webskill/browser": "workspace:*",
|
|
96
101
|
"@webskill/core": "workspace:*",
|
|
97
102
|
"@webskill/governance": "workspace:*",
|