@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/mcp.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { I as JsonSchema, Q as SkillCatalogEntry, et as SkillDocument, g as LlmToolSpec } from "./types-4pg-qp_I-Gq63X8Oa.js";
|
|
2
|
+
import { D as ExternalSkillProvider, O as ExternalToolSource, Tn as mergeCatalogEntries, Ut as ToolResult } from "./index-C-KFAZoF.js";
|
|
3
3
|
import { Transport } from "@modelcontextprotocol/sdk/shared/transport.js";
|
|
4
4
|
import { JSONRPCMessage } from "@modelcontextprotocol/sdk/types.js";
|
|
5
5
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
@@ -192,15 +192,46 @@ declare function serveSkillAsMcp(server: McpServer, skill: ServedSkill): Promise
|
|
|
192
192
|
declare const catalogMerge: typeof mergeCatalogEntries;
|
|
193
193
|
//#endregion
|
|
194
194
|
//#region src/webmcp/experimentalWebMcpAdapter.d.ts
|
|
195
|
-
/**
|
|
195
|
+
/**
|
|
196
|
+
* WebMCP 命令式 API 的工具形状(Chrome 150+)。
|
|
197
|
+
* `getTools()` 返回的工具含 `inputSchema`(JSON 字符串)、`origin`、`window`、`annotations`。
|
|
198
|
+
* 参考 https://developer.chrome.com/docs/ai/webmcp/imperative-api
|
|
199
|
+
*/
|
|
200
|
+
interface WebMcpToolLike {
|
|
201
|
+
name: string;
|
|
202
|
+
description?: string;
|
|
203
|
+
/** getTools() 返回的 inputSchema 是 JSON 字符串(非对象) */
|
|
204
|
+
inputSchema?: string;
|
|
205
|
+
origin?: string;
|
|
206
|
+
window?: unknown;
|
|
207
|
+
annotations?: {
|
|
208
|
+
readOnlyHint?: boolean;
|
|
209
|
+
untrustedContentHint?: boolean;
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* document.modelContext 鸭子类型(对齐 Chrome 150+ 的 WebMCP 命令式 API)。
|
|
214
|
+
* - 旧版(Chrome <150):navigator.modelContext.listTools() / executeTool(name, argsJson)
|
|
215
|
+
* - 新版(Chrome 150+):document.modelContext.getTools() / executeTool(tool, argsJson, { signal? })
|
|
216
|
+
* executeTool 的第一参在两种版本都能接受:新版传 tool 对象,旧版传 name 字符串。
|
|
217
|
+
*/
|
|
196
218
|
interface BrowserModelContextLike {
|
|
197
|
-
|
|
198
|
-
executeTool?: (
|
|
219
|
+
getTools?: () => Promise<unknown>;
|
|
220
|
+
executeTool?: (tool: WebMcpToolLike | string, argsJson: string, options?: {
|
|
221
|
+
signal?: AbortSignal;
|
|
222
|
+
}) => Promise<unknown>;
|
|
199
223
|
}
|
|
200
224
|
interface WebMcpToolDescriptor {
|
|
201
225
|
name: string;
|
|
202
226
|
description?: string;
|
|
203
227
|
inputSchema?: unknown;
|
|
228
|
+
origin?: string;
|
|
229
|
+
annotations?: {
|
|
230
|
+
readOnlyHint?: boolean;
|
|
231
|
+
untrustedContentHint?: boolean;
|
|
232
|
+
};
|
|
233
|
+
/** getTools() 返回的原始 tool 对象:executeTool 第一参须透传原对象(含 inputSchema JSON 字符串、window 等) */
|
|
234
|
+
raw?: unknown;
|
|
204
235
|
}
|
|
205
236
|
/**
|
|
206
237
|
* Experimental WebMCP Adapter(mcp# 分支):默认关闭显式启用;
|
|
@@ -214,9 +245,9 @@ declare class ExperimentalWebMcpAdapter {
|
|
|
214
245
|
enabled?: boolean;
|
|
215
246
|
});
|
|
216
247
|
isAvailable(): boolean;
|
|
217
|
-
/** 工具清单(
|
|
248
|
+
/** 工具清单(getTools 缺失时返回 undefined;调用失败时告警后返回 undefined) */
|
|
218
249
|
listTools(): Promise<WebMcpToolDescriptor[] | undefined>;
|
|
219
|
-
/** 工具名清单(
|
|
250
|
+
/** 工具名清单(getTools 缺失/失败时返回 undefined) */
|
|
220
251
|
listToolNames(): Promise<string[] | undefined>;
|
|
221
252
|
call(toolName: string, args: Record<string, unknown>): Promise<ToolResult>;
|
|
222
253
|
}
|
|
@@ -269,4 +300,4 @@ declare function connectRemoteEndpoint(registry: EndpointRegistry<McpClientLike>
|
|
|
269
300
|
close(): Promise<void>;
|
|
270
301
|
}>;
|
|
271
302
|
//#endregion
|
|
272
|
-
export { type BrowserModelContextLike, EndpointRegistry, ExperimentalWebMcpAdapter, type McpClientLike, McpRuntimePlugin, McpToolResolver, MessageChannelTransport, type MessageChannelTransportOptions, type MessagePortLike, type RemoteEndpointConfig, type ServedSkill, TemporarySkillProvider, type TransportState, type WebMcpToolDescriptor, catalogMerge, connectRemoteEndpoint, endpointToolLlmName, parseEndpointToolLlmName, parseWebMcpToolLlmName, serveSkillAsMcp, validateJsonRpcMessage, webMcpToolLlmName };
|
|
303
|
+
export { type BrowserModelContextLike, EndpointRegistry, ExperimentalWebMcpAdapter, type McpClientLike, McpRuntimePlugin, McpToolResolver, MessageChannelTransport, type MessageChannelTransportOptions, type MessagePortLike, type RemoteEndpointConfig, type ServedSkill, TemporarySkillProvider, type TransportState, type WebMcpToolDescriptor, type WebMcpToolLike, catalogMerge, connectRemoteEndpoint, endpointToolLlmName, parseEndpointToolLlmName, parseWebMcpToolLlmName, serveSkillAsMcp, validateJsonRpcMessage, webMcpToolLlmName };
|
package/dist/mcp.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { O as messageOf, h as assertRemoteUrlAllowed, m as WebSkillError } from "./dist-8oQRa8Xz.js";
|
|
2
|
-
import {
|
|
2
|
+
import { at as normalizeToolContent, et as mergeCatalogEntries } from "./dist-DusANsrn.js";
|
|
3
3
|
|
|
4
4
|
//#region ../mcp/dist/index.js
|
|
5
5
|
/**
|
|
@@ -392,15 +392,39 @@ const failure = (code, message) => ({
|
|
|
392
392
|
message
|
|
393
393
|
}
|
|
394
394
|
});
|
|
395
|
-
/**
|
|
395
|
+
/** getTools() 返回的工具 → 描述符:inputSchema 为 JSON 字符串时解析为对象,并保留原始对象 */
|
|
396
|
+
function toDescriptor(raw) {
|
|
397
|
+
if (typeof raw !== "object" || raw === null) return void 0;
|
|
398
|
+
const t = raw;
|
|
399
|
+
const name = String(t["name"] ?? "");
|
|
400
|
+
if (name === "") return void 0;
|
|
401
|
+
const descriptor = {
|
|
402
|
+
name,
|
|
403
|
+
raw
|
|
404
|
+
};
|
|
405
|
+
if (typeof t["description"] === "string") descriptor.description = t["description"];
|
|
406
|
+
if (typeof t["origin"] === "string") descriptor.origin = t["origin"];
|
|
407
|
+
if (typeof t["annotations"] === "object" && t["annotations"] !== null) {
|
|
408
|
+
const annotations = t["annotations"];
|
|
409
|
+
descriptor.annotations = {
|
|
410
|
+
...typeof annotations["readOnlyHint"] === "boolean" ? { readOnlyHint: annotations["readOnlyHint"] } : {},
|
|
411
|
+
...typeof annotations["untrustedContentHint"] === "boolean" ? { untrustedContentHint: annotations["untrustedContentHint"] } : {}
|
|
412
|
+
};
|
|
413
|
+
}
|
|
414
|
+
const schema = t["inputSchema"];
|
|
415
|
+
if (typeof schema === "string" && schema.trim() !== "") try {
|
|
416
|
+
descriptor.inputSchema = JSON.parse(schema);
|
|
417
|
+
} catch {
|
|
418
|
+
descriptor.inputSchema = schema;
|
|
419
|
+
}
|
|
420
|
+
else if (typeof schema === "object" && schema !== null) descriptor.inputSchema = schema;
|
|
421
|
+
return descriptor;
|
|
422
|
+
}
|
|
423
|
+
/** 从 getTools 返回值提取工具描述(容忍数组或 {tools:[]} 两种形状) */
|
|
396
424
|
function extractToolDescriptors(raw) {
|
|
397
425
|
const list = Array.isArray(raw) ? raw : typeof raw === "object" && raw !== null && Array.isArray(raw.tools) ? raw.tools : void 0;
|
|
398
426
|
if (!list) return void 0;
|
|
399
|
-
return list.filter((
|
|
400
|
-
name: String(t["name"] ?? ""),
|
|
401
|
-
...typeof t["description"] === "string" ? { description: t["description"] } : {},
|
|
402
|
-
...typeof t["inputSchema"] === "object" && t["inputSchema"] !== null ? { inputSchema: t["inputSchema"] } : {}
|
|
403
|
-
})).filter((t) => t.name !== "");
|
|
427
|
+
return list.map(toDescriptor).filter((d) => d !== void 0);
|
|
404
428
|
}
|
|
405
429
|
/**
|
|
406
430
|
* Experimental WebMCP Adapter(mcp# 分支):默认关闭显式启用;
|
|
@@ -416,35 +440,45 @@ var ExperimentalWebMcpAdapter = class {
|
|
|
416
440
|
this.#enabled = options?.enabled ?? false;
|
|
417
441
|
}
|
|
418
442
|
isAvailable() {
|
|
419
|
-
|
|
443
|
+
const api = this.#resolveApi();
|
|
444
|
+
return this.#enabled && typeof api?.executeTool === "function";
|
|
420
445
|
}
|
|
421
|
-
/** 工具清单(
|
|
446
|
+
/** 工具清单(getTools 缺失时返回 undefined;调用失败时告警后返回 undefined) */
|
|
422
447
|
async listTools() {
|
|
423
448
|
const api = this.#resolveApi();
|
|
424
|
-
if (typeof api?.
|
|
449
|
+
if (typeof api?.getTools !== "function") return void 0;
|
|
425
450
|
try {
|
|
426
|
-
return extractToolDescriptors(await api.
|
|
451
|
+
return extractToolDescriptors(await api.getTools());
|
|
427
452
|
} catch (e) {
|
|
428
|
-
console.warn(`[webskill]
|
|
453
|
+
console.warn(`[webskill] document.modelContext.getTools() failed: ${e instanceof Error ? e.message : String(e)}`);
|
|
429
454
|
return;
|
|
430
455
|
}
|
|
431
456
|
}
|
|
432
|
-
/** 工具名清单(
|
|
457
|
+
/** 工具名清单(getTools 缺失/失败时返回 undefined) */
|
|
433
458
|
async listToolNames() {
|
|
434
459
|
return (await this.listTools())?.map((t) => t.name);
|
|
435
460
|
}
|
|
436
461
|
async call(toolName, args) {
|
|
437
462
|
if (!this.#enabled) return failure("TOOL_UNSUPPORTED", "WebMCP adapter is disabled (enable it explicitly to use mcp# tools)");
|
|
438
463
|
const api = this.#resolveApi();
|
|
439
|
-
if (typeof api?.executeTool !== "function") return failure("TOOL_UNSUPPORTED", "
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
464
|
+
if (typeof api?.executeTool !== "function") return failure("TOOL_UNSUPPORTED", "document.modelContext is not available");
|
|
465
|
+
const argsJson = JSON.stringify(args);
|
|
466
|
+
if (typeof api.getTools === "function") try {
|
|
467
|
+
const descriptors = extractToolDescriptors(await api.getTools());
|
|
468
|
+
const match = descriptors?.find((t) => t.name === toolName);
|
|
469
|
+
if (descriptors !== void 0 && match === void 0) return failure("MCP_TOOL_NOT_FOUND", `WebMCP tool "${toolName}" not found`);
|
|
470
|
+
const tool = match?.raw ?? { name: toolName };
|
|
471
|
+
return {
|
|
472
|
+
ok: true,
|
|
473
|
+
content: normalizeToolContent(await api.executeTool(tool, argsJson))
|
|
474
|
+
};
|
|
475
|
+
} catch (e) {
|
|
476
|
+
return failure("TOOL_EXECUTION_FAILED", `WebMCP tool "${toolName}" failed: ${messageOf(e)}`);
|
|
477
|
+
}
|
|
444
478
|
try {
|
|
445
479
|
return {
|
|
446
480
|
ok: true,
|
|
447
|
-
content: normalizeToolContent(await api.executeTool(toolName,
|
|
481
|
+
content: normalizeToolContent(await api.executeTool(toolName, argsJson))
|
|
448
482
|
};
|
|
449
483
|
} catch (e) {
|
|
450
484
|
return failure("TOOL_EXECUTION_FAILED", `WebMCP tool "${toolName}" failed: ${messageOf(e)}`);
|
package/dist/{memoryArtifactStore-BtOeB_hm-tj3fC5ip.js → memoryArtifactStore-52Zn9npI-BMPYwvoy.js}
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { m as WebSkillError } from "./dist-8oQRa8Xz.js";
|
|
2
2
|
|
|
3
|
-
//#region ../runtime/dist/memoryArtifactStore-
|
|
3
|
+
//#region ../runtime/dist/memoryArtifactStore-52Zn9npI.js
|
|
4
4
|
/** 纯文本消息内容的构造快捷方式(引擎内部绝大多数消息仍是纯文本) */
|
|
5
5
|
const textParts = (text) => [{
|
|
6
6
|
type: "text",
|
|
@@ -8,6 +8,14 @@ const textParts = (text) => [{
|
|
|
8
8
|
}];
|
|
9
9
|
/** 取出 parts 中的文本(非文本分片在纯文本语境下无法表达,此处按丢弃处理——调用方须先校验) */
|
|
10
10
|
const partsToText = (parts) => (parts ?? []).reduce((acc, part) => part.type === "text" ? acc + part.text : acc, "");
|
|
11
|
+
/**
|
|
12
|
+
* run 的提示词文本投影:`RuntimeRun.userPrompt` 与快照都是字符串字段,
|
|
13
|
+
* 而多模态提示词里的图片/文件分片没有文本形态,用占位符标注,避免记录成空串。
|
|
14
|
+
*/
|
|
15
|
+
const promptText = (prompt) => {
|
|
16
|
+
if (typeof prompt === "string") return prompt;
|
|
17
|
+
return prompt.map((part) => part.type === "text" ? part.text : `[${part.type}: ${part.mimeType}]`).join("\n");
|
|
18
|
+
};
|
|
11
19
|
const isContentPart = (value) => {
|
|
12
20
|
if (typeof value !== "object" || value === null) return false;
|
|
13
21
|
const part = value;
|
|
@@ -75,4 +83,4 @@ var MemoryArtifactStore = class {
|
|
|
75
83
|
};
|
|
76
84
|
|
|
77
85
|
//#endregion
|
|
78
|
-
export {
|
|
86
|
+
export { textParts as a, rejectUnsupportedPart as i, partsToText as n, validateLlmMessages as o, promptText as r, MemoryArtifactStore as t };
|
package/dist/node.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { a as AuditLog, p as CandidateStore, r as ApprovalPolicy, u as CandidateSkill, v as SkillVersionStore } from "./skillVersionStore-
|
|
4
|
-
import { n as LlmEnvConfig, s as probeLlmCapabilities, t as LlmCapabilities } from "./env-
|
|
1
|
+
import { I as JsonSchema, N as FileStat, O as ArchiveLimits, P as FileSystemProvider, U as SKILLS_LOCKFILE, W as SKILL_MANIFEST_FILE, Y as SignatureAuditSink, _t as VerifyResult, at as SkillManifest, b as UiBridge, c as InteractionResponse, dt as SkillsLockfile, ht as UnsignedPolicy, it as SkillManagerPort, pt as TrustedKeyStore, s as InteractionRequest, tt as SkillInstallSource, y as RenderResultRequest } from "./types-4pg-qp_I-Gq63X8Oa.js";
|
|
2
|
+
import { A as FsArtifactStore, Ct as ScriptExecutionContext, J as NetworkPolicy, St as SchemaInferer, Ut as ToolResult, Vt as ToolDefinition, _ as BridgeCapabilities, f as ApprovalScope, fn as createScriptContext, j as FsMemoryStore, on as WebSkillRuntime, sn as WebSkillRuntimeDeps, wt as ScriptExecutor } from "./index-C-KFAZoF.js";
|
|
3
|
+
import { a as AuditLog, p as CandidateStore, r as ApprovalPolicy, u as CandidateSkill, v as SkillVersionStore } from "./skillVersionStore-BzLbzFOL-CxdAFWO2.js";
|
|
4
|
+
import { n as LlmEnvConfig, s as probeLlmCapabilities, t as LlmCapabilities } from "./env-AK3cSMEA-Dli6QU5E.js";
|
|
5
5
|
import { Readable, Writable } from "node:stream";
|
|
6
6
|
//#region ../node/dist/index.d.ts
|
|
7
7
|
//#region src/fs/nodeFs.d.ts
|
package/dist/node.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { A as parseSkillMarkdown, B as unzipWithLimits, H as verifyManifest, I as resolveArchiveLimits, L as resolveInsideRoot, M as readResponseWithLimit, N as readSkillSignature, O as messageOf, T as isValidSkillName, U as verifySkillSignature, V as validateSkills, _ as atomicWriteText, g as assertSafePathSegment, h as assertRemoteUrlAllowed, j as parseSkillPackManifest, m as WebSkillError, o as SKILLS_LOCKFILE, r as MANIFEST_EXCLUDED_FILES, s as SKILL_MANIFEST_FILE, u as SKILL_PACK_FILE, w as exportSkills, y as buildManifest } from "./dist-8oQRa8Xz.js";
|
|
2
|
-
import {
|
|
3
|
-
import { i as probeLlmCapabilities } from "./env
|
|
2
|
+
import { I as WebSkillRuntime, V as createScriptContext, at as normalizeToolContent, c as CapabilityApproval, m as FsMemoryStore, nt as networkPolicyLibSource, ot as normalizeToolError, p as FsArtifactStore, st as parseBridgeRequest, z as bridgeError } from "./dist-DusANsrn.js";
|
|
3
|
+
import { i as probeLlmCapabilities } from "./env-8cY40DXB-CGnEVZby.js";
|
|
4
4
|
import { createRequire } from "node:module";
|
|
5
5
|
import { unzipSync, zipSync } from "fflate";
|
|
6
6
|
import { existsSync, promises, realpathSync } from "node:fs";
|
|
@@ -1148,6 +1148,13 @@ var CliUiBridge = class {
|
|
|
1148
1148
|
value: answer === "y" || answer === "yes"
|
|
1149
1149
|
};
|
|
1150
1150
|
}
|
|
1151
|
+
case "file-pick": {
|
|
1152
|
+
const answer = (await this.#question(`${input.message}\nLocal file path (empty to decline): `)).trim();
|
|
1153
|
+
return answer === "" ? { id: input.id } : {
|
|
1154
|
+
id: input.id,
|
|
1155
|
+
value: { path: answer }
|
|
1156
|
+
};
|
|
1157
|
+
}
|
|
1151
1158
|
}
|
|
1152
1159
|
}
|
|
1153
1160
|
async progress(input) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as CatalogNode } from "./catalogComponents-
|
|
1
|
+
import { nt as uiCatalog } from "./dist-DnYG2-eY.js";
|
|
2
|
+
import { t as CatalogNode } from "./catalogComponents-Dr5dFMAb-Dacibl1e.js";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
import { Component, Fragment, createContext, useCallback, useContext, useEffect, useInsertionEffect, useMemo, useRef, useState, useSyncExternalStore } from "react";
|
|
5
5
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -3761,7 +3761,7 @@ function Renderer({ response, library, isStreaming = false, onAction, onStateUpd
|
|
|
3761
3761
|
const FormValidationContext = createContext(null);
|
|
3762
3762
|
|
|
3763
3763
|
//#endregion
|
|
3764
|
-
//#region ../ui-react/dist/openUiLibrary-
|
|
3764
|
+
//#region ../ui-react/dist/openUiLibrary-Bdrji9qK.js
|
|
3765
3765
|
const propsFor = (props, container) => container ? props.extend({ children: z.array(z.any()).optional() }) : props;
|
|
3766
3766
|
/**
|
|
3767
3767
|
* catalog 的 OpenUI 投影:`defineComponent` 复用同一份 zod schema 与描述,
|
package/dist/{skillVersionStore-uyefLPR1-DXOzbksv.d.ts → skillVersionStore-BzLbzFOL-CxdAFWO2.d.ts}
RENAMED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
//#region ../governance/dist/skillVersionStore-
|
|
1
|
+
import { B as PageQuery, P as FileSystemProvider, Q as SkillCatalogEntry, at as SkillManifest, z as Page } from "./types-4pg-qp_I-Gq63X8Oa.js";
|
|
2
|
+
//#region ../governance/dist/skillVersionStore-BzLbzFOL.d.ts
|
|
3
3
|
//#region src/types.d.ts
|
|
4
4
|
type CandidateStatus = 'draft' | 'pending-review' | 'approved' | 'published' | 'rejected';
|
|
5
|
-
|
|
5
|
+
/** `generated` 是 0.5.0 的技能自动生成来源(需求 12 号 AC-9.1) */
|
|
6
|
+
type CandidateSource = 'runtime-miss' | 'document' | 'manual' | 'generated';
|
|
6
7
|
type CandidateRisk = 'low' | 'medium' | 'high';
|
|
7
8
|
interface CandidateFile {
|
|
8
9
|
path: string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { m as WebSkillError } from "./dist-8oQRa8Xz.js";
|
|
2
|
-
import {
|
|
2
|
+
import { a as textParts, n as partsToText } from "./memoryArtifactStore-52Zn9npI-BMPYwvoy.js";
|
|
3
3
|
|
|
4
4
|
//#region ../runtime/dist/testing.js
|
|
5
5
|
/**
|
package/dist/testing.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { a as loadGoogleConfigFromEnv, i as loadAnthropicConfigFromEnv, n as LlmEnvConfig, o as loadLlmConfigFromEnv, r as ProviderEnvConfig } from "./env-
|
|
1
|
+
import { _ as MemoryStore, b as UiBridge, c as InteractionResponse, l as LlmClient, m as LlmStreamEvent, n as ArtifactStore, p as LlmResponse, s as InteractionRequest, t as Artifact, u as LlmCompleteInput } from "./types-4pg-qp_I-Gq63X8Oa.js";
|
|
2
|
+
import { a as loadGoogleConfigFromEnv, i as loadAnthropicConfigFromEnv, n as LlmEnvConfig, o as loadLlmConfigFromEnv, r as ProviderEnvConfig } from "./env-AK3cSMEA-Dli6QU5E.js";
|
|
3
3
|
//#region ../runtime/dist/testing.d.ts
|
|
4
4
|
//#region src/llm/mockLlmClient.d.ts
|
|
5
5
|
type MockLlmHandler = (input: LlmCompleteInput) => LlmResponse | Promise<LlmResponse>;
|
package/dist/testing.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { t as MemoryArtifactStore } from "./memoryArtifactStore-
|
|
2
|
-
import { n as loadGoogleConfigFromEnv, r as loadLlmConfigFromEnv, t as loadAnthropicConfigFromEnv } from "./env
|
|
3
|
-
import { n as MockLlmClient, r as MockUiBridge, t as InMemoryStore } from "./testing-
|
|
1
|
+
import { t as MemoryArtifactStore } from "./memoryArtifactStore-52Zn9npI-BMPYwvoy.js";
|
|
2
|
+
import { n as loadGoogleConfigFromEnv, r as loadLlmConfigFromEnv, t as loadAnthropicConfigFromEnv } from "./env-8cY40DXB-CGnEVZby.js";
|
|
3
|
+
import { n as MockLlmClient, r as MockUiBridge, t as InMemoryStore } from "./testing-CYTFqkDm.js";
|
|
4
4
|
|
|
5
5
|
export { InMemoryStore, MemoryArtifactStore, MockLlmClient, MockUiBridge, loadAnthropicConfigFromEnv, loadGoogleConfigFromEnv, loadLlmConfigFromEnv };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
//#region ../core/dist/index.d.ts
|
|
2
2
|
//#region src/errors.d.ts
|
|
3
|
-
type WebSkillErrorCode = 'FS_NOT_FOUND' | 'FS_PATH_OUTSIDE_ROOT' | 'SKILL_NOT_FOUND' | 'SKILL_INVALID_METADATA' | 'SKILL_INVALID_NAME' | 'SKILL_DUPLICATE_NAME' | 'SKILL_UNSUPPORTED_SCRIPT' | 'VALIDATION_FAILED' | 'TOOL_NOT_FOUND' | 'TOOL_EXECUTION_FAILED' | 'NETWORK_BLOCKED' | 'TOOL_UNSUPPORTED' | 'TOOL_NOT_ALLOWED' | 'TOOL_SCHEMA_UNAVAILABLE' | 'RUN_TIMEOUT' | 'RUN_MAX_TURNS_EXCEEDED' | 'RUN_FAILED' | 'RUN_CANCELLED' | 'RUN_INTERACTION_TIMEOUT' | 'UI_UNAVAILABLE' | 'LLM_UNAVAILABLE' | 'LLM_REQUEST_FAILED' | 'INSTALL_FAILED' | 'UNINSTALL_FAILED' | 'EXPORT_FAILED' | 'INTEGRITY_FAILED' | 'FS_PERMISSION_DENIED' | 'MCP_ENDPOINT_UNAVAILABLE' | 'MCP_TOOL_NOT_FOUND' | 'CANDIDATE_INVALID' | 'APPROVAL_REQUIRED' | 'SKILL_QUARANTINED' | 'SKILL_DISABLED' | 'SKILL_UNKNOWN_ALLOWED_TOOL' | 'SKILL_UNKNOWN_DEPENDENCY' | 'SKILL_CIRCULAR_DEPENDENCY' | 'GOVERNANCE_FAILED' | 'RUN_SNAPSHOT_NOT_FOUND' | 'RUN_SNAPSHOT_EXPIRED' | 'RUN_SNAPSHOT_INCOMPATIBLE' | 'RUN_SNAPSHOT_SCHEMA_UNSUPPORTED' | 'RUN_TRACE_INCOMPATIBLE' | 'SESSION_INCOMPATIBLE' | 'SIGNATURE_MISSING' | 'SIGNATURE_MALFORMED' | 'SIGNATURE_UNTRUSTED_KEY' | 'SIGNATURE_MISMATCH' | 'SIGNATURE_UNSUPPORTED' | 'MCP_STDIO_SPAWN_FAILED' | 'MCP_STDIO_EXITED' | 'MCP_STDIO_TIMEOUT';
|
|
3
|
+
type WebSkillErrorCode = 'FS_NOT_FOUND' | 'FS_PATH_OUTSIDE_ROOT' | 'SKILL_NOT_FOUND' | 'SKILL_INVALID_METADATA' | 'SKILL_INVALID_NAME' | 'SKILL_DUPLICATE_NAME' | 'SKILL_UNSUPPORTED_SCRIPT' | 'VALIDATION_FAILED' | 'TOOL_NOT_FOUND' | 'TOOL_EXECUTION_FAILED' | 'NETWORK_BLOCKED' | 'TOOL_UNSUPPORTED' | 'TOOL_NOT_ALLOWED' | 'TOOL_SCHEMA_UNAVAILABLE' | 'TOOL_RESOLUTION_EXHAUSTED' | 'RUN_TIMEOUT' | 'RUN_MAX_TURNS_EXCEEDED' | 'RUN_FAILED' | 'RUN_CANCELLED' | 'RUN_INTERACTION_TIMEOUT' | 'UI_UNAVAILABLE' | 'LLM_UNAVAILABLE' | 'LLM_REQUEST_FAILED' | 'INSTALL_FAILED' | 'UNINSTALL_FAILED' | 'EXPORT_FAILED' | 'INTEGRITY_FAILED' | 'FS_PERMISSION_DENIED' | 'MCP_ENDPOINT_UNAVAILABLE' | 'MCP_TOOL_NOT_FOUND' | 'CANDIDATE_INVALID' | 'APPROVAL_REQUIRED' | 'SKILL_QUARANTINED' | 'SKILL_DISABLED' | 'SKILL_UNKNOWN_ALLOWED_TOOL' | 'SKILL_UNKNOWN_DEPENDENCY' | 'SKILL_CIRCULAR_DEPENDENCY' | 'GOVERNANCE_FAILED' | 'RUN_SNAPSHOT_NOT_FOUND' | 'RUN_SNAPSHOT_EXPIRED' | 'RUN_SNAPSHOT_INCOMPATIBLE' | 'RUN_SNAPSHOT_SCHEMA_UNSUPPORTED' | 'RUN_TRACE_INCOMPATIBLE' | 'SESSION_INCOMPATIBLE' | 'SIGNATURE_MISSING' | 'SIGNATURE_MALFORMED' | 'SIGNATURE_UNTRUSTED_KEY' | 'SIGNATURE_MISMATCH' | 'SIGNATURE_UNSUPPORTED' | 'MCP_STDIO_SPAWN_FAILED' | 'MCP_STDIO_EXITED' | 'MCP_STDIO_TIMEOUT' | 'TS_RESOURCE_URL_REJECTED' | 'TS_TRANSPILER_UNAVAILABLE' | 'TS_TRANSPILE_FAILED' | 'TODO_LIST_INVALID' | 'TODO_ITEM_NOT_FOUND' | 'SKILL_GENERATION_DISABLED' | 'SKILL_GENERATION_LIMIT_EXCEEDED' | 'SKILL_GENERATION_VALIDATION_FAILED' | 'DELEGATION_UNAVAILABLE' | 'DELEGATION_IN_PROGRESS' | 'DELEGATION_BUDGET_EXCEEDED' | 'PROFILE_IMPORT_INVALID' | 'PROFILE_IMPORT_VERSION_UNSUPPORTED' | 'PROFILE_IMPORT_CREDENTIAL_REJECTED' | 'PROFILE_KEY_UNAVAILABLE' | 'DICTATION_UNAVAILABLE' | 'DICTATION_PERMISSION_DENIED' | 'DICTATION_FAILED' | 'PERCEPTION_NOT_ENABLED' | 'PERCEPTION_FAILED' | 'MODEL_IMAGE_UNSUPPORTED' | 'MODEL_TOOLS_UNSUPPORTED' | 'ATTACHMENT_TOO_LARGE' | 'ATTACHMENT_TYPE_REJECTED';
|
|
4
4
|
/**
|
|
5
5
|
* 所有公开 API 抛出的结构化错误,code 供上层可编程处理
|
|
6
6
|
* @stable
|
|
@@ -582,7 +582,7 @@ declare function escapeXml(text: string): string;
|
|
|
582
582
|
declare function renderAvailableSkillsXml(catalog: SkillCatalog): string;
|
|
583
583
|
declare const xmlRenderer: CatalogRenderer;
|
|
584
584
|
//#endregion
|
|
585
|
-
//#region ../runtime/dist/types-
|
|
585
|
+
//#region ../runtime/dist/types-4pg-qp_I.d.ts
|
|
586
586
|
//#region src/llm/streamTypes.d.ts
|
|
587
587
|
/** 流式 LLM 事件(OpenAI SSE / Vercel fullStream 统一映射) */
|
|
588
588
|
type LlmStreamEvent = {
|
|
@@ -682,11 +682,26 @@ interface ArtifactStore {
|
|
|
682
682
|
}
|
|
683
683
|
//#endregion
|
|
684
684
|
//#region src/interaction/types.d.ts
|
|
685
|
+
/**
|
|
686
|
+
* 交互的发起方标识(FR-11.6)。串行委派下父 agent 与子 agent 都能发起交互,
|
|
687
|
+
* 缺了这个标识用户无法判断弹出来的表单属于哪个子任务。
|
|
688
|
+
* 缺省即父 agent 自己发起。
|
|
689
|
+
* @experimental
|
|
690
|
+
*/
|
|
691
|
+
interface InteractionOrigin {
|
|
692
|
+
/** 展示用标签,通常是子任务标题 */
|
|
693
|
+
label: string;
|
|
694
|
+
/** 关联的待办条目 */
|
|
695
|
+
todoId?: string;
|
|
696
|
+
}
|
|
685
697
|
type InteractionRequest = {
|
|
698
|
+
origin?: InteractionOrigin;
|
|
699
|
+
} & ({
|
|
686
700
|
type: 'ask';
|
|
687
701
|
id: string;
|
|
688
702
|
message: string;
|
|
689
703
|
schema?: JsonSchema;
|
|
704
|
+
suggestion?: InteractionSuggestion;
|
|
690
705
|
} | {
|
|
691
706
|
type: 'confirm';
|
|
692
707
|
id: string;
|
|
@@ -705,6 +720,22 @@ type InteractionRequest = {
|
|
|
705
720
|
label: string;
|
|
706
721
|
value: unknown;
|
|
707
722
|
}>;
|
|
723
|
+
suggestion?: InteractionSuggestion;
|
|
724
|
+
} | {
|
|
725
|
+
/**
|
|
726
|
+
* 打开本地文件选择(FR-11.1)。与 `confirm` 分开:浏览器要求
|
|
727
|
+
* `input[type=file].click()` 处于用户手势的调用栈内,渲染层必须能识别
|
|
728
|
+
* 出“这个确认按钮点下去要同步打开选择器”,光看文案分辨不出。
|
|
729
|
+
* @experimental
|
|
730
|
+
*/
|
|
731
|
+
type: 'file-pick';
|
|
732
|
+
id: string;
|
|
733
|
+
message: string;
|
|
734
|
+
/** 传给 `input.accept` 的 MIME / 扩展名列表 */
|
|
735
|
+
accept?: readonly string[];
|
|
736
|
+
multiple?: boolean;
|
|
737
|
+
/** 该文件要填的表单字段名 */
|
|
738
|
+
field?: string;
|
|
708
739
|
} | {
|
|
709
740
|
/**
|
|
710
741
|
* 能力强制授权(require-approval):与脚本自发 confirm 区分,UI 渲染为授权样式
|
|
@@ -715,12 +746,22 @@ type InteractionRequest = {
|
|
|
715
746
|
capability: 'readReference' | 'writeArtifact' | 'confirm';
|
|
716
747
|
message: string;
|
|
717
748
|
details?: unknown;
|
|
718
|
-
};
|
|
749
|
+
});
|
|
719
750
|
interface InteractionResponse {
|
|
720
751
|
id: string;
|
|
721
752
|
value?: unknown;
|
|
722
753
|
cancelled?: boolean;
|
|
723
754
|
}
|
|
755
|
+
/**
|
|
756
|
+
* 依据用户画像给出的建议值(FR-19.4)。**不会预填进控件**:
|
|
757
|
+
* 渲染器只能展示它并提供「采纳」入口,用户确认后才算填写。
|
|
758
|
+
* @experimental
|
|
759
|
+
*/
|
|
760
|
+
interface InteractionSuggestion {
|
|
761
|
+
value: unknown;
|
|
762
|
+
/** 建议依据,展示给用户判断是否采纳 */
|
|
763
|
+
reason?: string;
|
|
764
|
+
}
|
|
724
765
|
/** 图表规格($chart 约定的校验后形态;渲染单一来源在 ui/chart/miniChart) */
|
|
725
766
|
interface ChartSpec {
|
|
726
767
|
kind: 'bar' | 'line' | 'pie';
|
|
@@ -859,7 +900,7 @@ interface UiBridge {
|
|
|
859
900
|
interface FormField {
|
|
860
901
|
name: string;
|
|
861
902
|
label: string;
|
|
862
|
-
type: 'text' | 'number' | 'boolean' | 'select' | 'textarea';
|
|
903
|
+
type: 'text' | 'number' | 'boolean' | 'select' | 'textarea' | 'file';
|
|
863
904
|
required?: boolean;
|
|
864
905
|
description?: string;
|
|
865
906
|
defaultValue?: unknown;
|
|
@@ -867,6 +908,15 @@ interface FormField {
|
|
|
867
908
|
label: string;
|
|
868
909
|
value: unknown;
|
|
869
910
|
}>;
|
|
911
|
+
/**
|
|
912
|
+
* 建议值(FR-19.4)。**刻意不叫 defaultValue**:渲染器会把 defaultValue 直接填进控件,
|
|
913
|
+
* 而建议值来自对用户过往行为的推断,可能过时或不适用,必须由用户看到后主动采纳。
|
|
914
|
+
* @experimental
|
|
915
|
+
*/
|
|
916
|
+
suggestion?: {
|
|
917
|
+
value: unknown;
|
|
918
|
+
reason?: string;
|
|
919
|
+
};
|
|
870
920
|
}
|
|
871
921
|
interface InteractionPolicy {
|
|
872
922
|
/** 缺必填参数策略:默认 'user'(表单问用户),'llm' 回喂自愈 */
|
|
@@ -892,4 +942,4 @@ interface MemoryStore {
|
|
|
892
942
|
transaction?<T>(scope: string, fn: (inner: MemoryStore) => Promise<T>): Promise<T>;
|
|
893
943
|
}
|
|
894
944
|
//#endregion
|
|
895
|
-
export {
|
|
945
|
+
export { SkillDiscovery as $, CryptoKeyLike as A, isValidSkillName as At, PageQuery as B, renderCatalogJson as Bt, UiSpecEvent as C, buildCatalog as Ct, UiSurfaceActionResponse as D, computeDigest as Dt, UiSurfaceActionRequest as E, checkSkillRules as Et, FsTrustedKeyStore as F, parseSkillMarkdown as Ft, SKILL_NAME_MAX_LENGTH as G, unzipWithLimits as Gt, SIGNATURE_SCHEMA_VERSION as H, resolveInsideRoot as Ht, JsonSchema as I, parseSkillPackManifest as It, SKILL_SIGNATURE_FILE as J, verifySkillSignature as Jt, SKILL_NAME_PATTERN as K, validateSkills as Kt, MANIFEST_EXCLUDED_FILES as L, readResponseWithLimit as Lt, DiscoveryResult as M, keyIdOf as Mt, FileStat as N, messageOf as Nt, ArchiveLimits as O, escapeXml as Ot, FileSystemProvider as P, normalizePath as Pt, SkillCatalogEntry as Q, MemoryFS as R, readSkillSignature as Rt, UiSpecDrafts as S, atomicWriteText as St, UiSpecSnapshot as T, checkDependencyCycles as Tt, SKILLS_LOCKFILE as U, signSkill as Ut, RemoteUrlPolicy as V, resolveArchiveLimits as Vt, SKILL_MANIFEST_FILE as W, signaturePayloadBytes as Wt, SignatureVerdict as X, SignatureAuditSink as Y, xmlRenderer as Yt, SkillCatalog as Z, MemoryStore as _, VerifyResult as _t, InteractionOrigin as a, SkillManifest as at, UiBridge as b, assertRemoteUrlAllowed as bt, InteractionResponse as c, SkillReader as ct, LlmContentPart as d, SkillsLockfile as dt, SkillDocument as et, LlmMessage as f, TrustedKey as ft, LlmToolSpec as g, ValidationReport as gt, LlmToolCall as h, UnsignedPolicy as ht, FormField as i, SkillManagerPort as it, DEFAULT_ARCHIVE_LIMITS as j, jsonRenderer as jt, CatalogRenderer as k, exportSkills as kt, LlmClient as l, SkillSignature as lt, LlmStreamEvent as m, UiSpecNode as mt, ArtifactStore as n, SkillIssue as nt, InteractionPolicy as o, SkillMetadata as ot, LlmResponse as p, TrustedKeyStore as pt, SKILL_PACK_FILE as q, verifyManifest as qt, ChartSpec as r, SkillLocation as rt, InteractionRequest as s, SkillPackManifest as st, Artifact as t, SkillInstallSource as tt, LlmCompleteInput as u, SkillSource as ut, RenderBlock as v, WebSkillError as vt, UiSpecPatch as w, buildManifest as wt, UiSpecActionCapability as x, assertSafePathSegment as xt, RenderResultRequest as y, WebSkillErrorCode as yt, Page as z, renderAvailableSkillsXml as zt };
|
package/dist/ui-react.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { C as UiSpecEvent, D as UiSurfaceActionResponse, E as UiSurfaceActionRequest, S as UiSpecDrafts, T as UiSpecSnapshot, b as UiBridge, c as InteractionResponse, mt as UiSpecNode, s as InteractionRequest, x as UiSpecActionCapability, y as RenderResultRequest } from "./types-4pg-qp_I-Gq63X8Oa.js";
|
|
2
|
+
import { b as InteractionSpecLabels } from "./index-BMocOEi0.js";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
import { ComponentType, ReactNode } from "react";
|
|
5
5
|
import "react/jsx-runtime";
|
|
@@ -256,8 +256,24 @@ declare class UiSurfaceStore {
|
|
|
256
256
|
}
|
|
257
257
|
//#endregion
|
|
258
258
|
//#region src/bridgeState.d.ts
|
|
259
|
+
/**
|
|
260
|
+
* 一次被丢弃的 surface action(FR-11.7)。
|
|
261
|
+
*
|
|
262
|
+
* 丢弃本身是对的(重放/串扰防护),但静默丢弃会让「点了没反应」变成无从排查的现象。
|
|
263
|
+
* @experimental
|
|
264
|
+
*/
|
|
265
|
+
interface DroppedSurfaceActionWarning {
|
|
266
|
+
/** duplicate:nonce 已被消费;no-pending:当前没有等待中的动作;mismatch:与待决动作不是同一个 */
|
|
267
|
+
reason: 'duplicate' | 'no-pending' | 'mismatch';
|
|
268
|
+
nonce: string;
|
|
269
|
+
message: string;
|
|
270
|
+
/** 丢弃发生时的待决状态,用于定位串扰 */
|
|
271
|
+
pending: UiSurfaceActionRequest | null;
|
|
272
|
+
}
|
|
259
273
|
interface ReactBridgeStateOptions {
|
|
260
274
|
onSurfaceDraftChange?(runId: string, surfaceId: string, value: Record<string, unknown>): Promise<void> | void;
|
|
275
|
+
/** 覆盖默认的 console.warn 上报(测试与宿主遥测用)。@experimental */
|
|
276
|
+
onDroppedSurfaceAction?(warning: DroppedSurfaceActionWarning): void;
|
|
261
277
|
}
|
|
262
278
|
/**
|
|
263
279
|
* React 桥接状态:UiBridge 实现 + useSyncExternalStore 兼容订阅。
|
|
@@ -287,7 +303,10 @@ declare class ReactBridgeState implements UiBridge {
|
|
|
287
303
|
renderResult(input: RenderResultRequest): Promise<void>;
|
|
288
304
|
renderSurface(event: UiSpecEvent): Promise<void>;
|
|
289
305
|
requestSurfaceAction(input: UiSurfaceActionRequest): Promise<UiSurfaceActionResponse>;
|
|
290
|
-
/**
|
|
306
|
+
/**
|
|
307
|
+
* Resolves exactly one pending action capability; stale or duplicate nonces are ignored.
|
|
308
|
+
* Every ignored response is reported through `onDroppedSurfaceAction` (FR-11.7).
|
|
309
|
+
*/
|
|
291
310
|
resolveSurfaceAction(response: UiSurfaceActionResponse): boolean;
|
|
292
311
|
cancelSurfaceAction(nonce: string): void;
|
|
293
312
|
onTextDelta(runId: string, delta: string): Promise<void>;
|
|
@@ -317,6 +336,8 @@ interface CustomSurfaceActionEvent {
|
|
|
317
336
|
actionId: string;
|
|
318
337
|
intent: UiSpecActionCapability['intent'];
|
|
319
338
|
nonce?: string;
|
|
339
|
+
/** 提交动作所属的表单容器;一张 surface 只有一个表单时省略 */
|
|
340
|
+
scopeId?: string;
|
|
320
341
|
value?: Record<string, unknown>;
|
|
321
342
|
}
|
|
322
343
|
interface RegisteredSurfaceProps<Props> {
|
|
@@ -482,10 +503,10 @@ type CatalogNodeProps = {
|
|
|
482
503
|
children?: ReactNode;
|
|
483
504
|
};
|
|
484
505
|
/**
|
|
485
|
-
* catalog
|
|
506
|
+
* catalog 展示类组件的实现:json-render 与 OpenUI 两档共用同一份,
|
|
486
507
|
* 避免"一个 catalog、多套 registry"退化成多套各自演进的视觉。
|
|
487
508
|
* 交互(表单值收集 / action 回传)由各档的宿主组件负责。
|
|
488
509
|
*/
|
|
489
510
|
declare const catalogComponentImpls: Record<string, (input: CatalogNodeProps) => ReactNode>;
|
|
490
511
|
//#endregion
|
|
491
|
-
export { type CatalogNodeProps, type CustomSurfaceActionEvent, InteractionForm, type JsonRenderActionDispatch, JsonRenderSpecSurface, type JsonRenderSpecSurfaceProps, NATIVE_SPEC_COMPONENTS, NativeSpecSurface, type NativeSpecSurfaceProps, OpenUiSpecSurface, type OpenUiSpecSurfaceProps, ReactBridgeState, type RegisteredSurfaceProps, ResultBlocks, SpecInteractionChannel, type SpecInteractionSession, StreamingText, type SurfaceRegistration, SurfaceRegistry, type UiSurfaceActionEvent, UiSurfaceList, type UiSurfaceListProps, UiSurfaceSnapshotList, type UiSurfaceSnapshotListProps, UiSurfaceStore, catalogComponentImpls, createJsonRenderRegistry, probeJsonRenderAvailability };
|
|
512
|
+
export { type CatalogNodeProps, type CustomSurfaceActionEvent, type DroppedSurfaceActionWarning, InteractionForm, type JsonRenderActionDispatch, JsonRenderSpecSurface, type JsonRenderSpecSurfaceProps, NATIVE_SPEC_COMPONENTS, NativeSpecSurface, type NativeSpecSurfaceProps, OpenUiSpecSurface, type OpenUiSpecSurfaceProps, ReactBridgeState, type ReactBridgeStateOptions, type RegisteredSurfaceProps, ResultBlocks, SpecInteractionChannel, type SpecInteractionSession, StreamingText, type SurfaceRegistration, SurfaceRegistry, type UiSurfaceActionEvent, UiSurfaceList, type UiSurfaceListProps, UiSurfaceSnapshotList, type UiSurfaceSnapshotListProps, UiSurfaceStore, catalogComponentImpls, createJsonRenderRegistry, probeJsonRenderAvailability };
|