@webskill/sdk 0.15.0 → 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/dist/agent.d.ts +3 -3
  2. package/dist/agent.js +466 -66
  3. package/dist/{approval-BnLLCOG0.js → approval-CBPnGPIm.js} +57 -4
  4. package/dist/browser.d.ts +214 -7
  5. package/dist/browser.js +487 -47
  6. package/dist/{eventTypes-Y07N8IAC.js → eventTypes-CwciaqCU.js} +23 -0
  7. package/dist/governance.d.ts +26 -3
  8. package/dist/governance.js +1 -1
  9. package/dist/{index-CQYo4tcT.d.ts → index-1sQZ4VBN.d.ts} +324 -16
  10. package/dist/{index-Oc3H89TJ.d.ts → index-BDyXe-a5.d.ts} +1 -1
  11. package/dist/{index-CU2md8R1.d.ts → index-CaLsVI-m.d.ts} +7 -2
  12. package/dist/index.d.ts +3 -3
  13. package/dist/index.js +3 -3
  14. package/dist/mcp.d.ts +2 -2
  15. package/dist/{miniChart-owdCdaw-.js → miniChart-lauNtZu8.js} +2 -7
  16. package/dist/node.d.ts +3 -3
  17. package/dist/node.js +14 -8
  18. package/dist/{openUiLibrary-CY_ADoe0.js → openUiLibrary-BJtCG5B1.js} +1 -1
  19. package/dist/{openUiSpecLang-DuOCdw9G.js → openUiSpecLang-B4QQ9Tfo.js} +4 -3
  20. package/dist/{skillVersionStore-B24Jjjry-C4zomhMZ.d.ts → skillVersionStore-B24Jjjry-v2CCU0Xo.d.ts} +1 -1
  21. package/dist/testing.d.ts +1 -1
  22. package/dist/{types-C3V6lAeO-BIf7UB2e.d.ts → types-Btpdd1y--BcxQ10Fa.d.ts} +20 -3
  23. package/dist/{types-TUydnxaj.js → types-BuacBov_.js} +14 -3
  24. package/dist/ui-react.d.ts +9 -3
  25. package/dist/ui-react.js +15 -4
  26. package/dist/ui-vue.d.ts +1 -1
  27. package/dist/ui-vue.js +2 -2
  28. package/dist/ui.d.ts +3 -3
  29. package/dist/ui.js +4 -4
  30. package/dist/{webSkillApi-DOOyz2G5.js → webSkillApi-Ce2OO5S5.js} +1 -1
  31. package/dist/{webskillLitCatalog-DSqVFQjK.js → webskillLitCatalog-BBkQjKuN.js} +2 -2
  32. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -3,13 +3,13 @@ import { A as SKILL_MANIFEST_FILE, C as keyIdOf, D as verifySkillSignature, E as
3
3
  import { a as atomicWriteText, i as ATOMIC_TMP_SUFFIX_PATTERN, n as normalizePath, o as isAtomicTempPath, r as resolveInsideRoot, t as assertSafePathSegment } from "./pathSecurity-B1owvJAF.js";
4
4
  import { t as assertRemoteUrlAllowed } from "./urlSafety-CiSuCJvX.js";
5
5
  import { a as TEXT_EXTENSIONS, c as formatAttachmentText, i as IMAGE_MIME_TYPES, l as UNTRUSTED_LINE_LIMIT, n as DOCX_MIME, o as XLSX_MIME, r as FILE_MIME_TYPES, s as classifyAttachment, t as ATTACHMENT_TEXT_LIMIT, u as sanitizeUntrustedLine } from "./kind-DxgS8LM-.js";
6
- import { $ as scriptToolName, A as readUserProfile, B as createScriptContext, C as TraceRecorder, D as mergeProfileEntries, E as appendBehaviorRecords, F as DEFAULT_USER_PROFILE_LIMITS, G as ASK_USER_TOOL_NAME, H as ASK_USER_INPUT_SCHEMA, I as EMPTY_USER_PROFILE, J as READ_SKILL_FILE_TOOL_NAME, K as READ_SKILL_FILE_INPUT_SCHEMA, L as SerializingMemoryStore, M as USER_PROFILE_NO_INVENTION_RULE, N as USER_PROFILE_PROMPT_HEADER, O as readBehaviorRecords, P as renderUserProfileContext, Q as schemaSourceLabel, R as EventBus, S as extractTodoTraceEvents, T as USER_PROFILE_KEY, U as ASK_USER_MAX_FIELDS, V as ASK_USER_FIELD_TYPES, W as ASK_USER_TOOL, X as formatSkillScriptManifest, Y as ALLOWED_TOOLS_EXCLUSION_REASON, Z as listSkillScripts, _ as RUN_SNAPSHOT_SCHEMA_VERSION, a as networkPolicyLibSource, at as xmlRenderer, b as MAX_TOOL_STEP_ARG_BYTES, c as bridgeError, d as FsMemoryStore, et as resolveToolName, f as WebSkillRuntime, g as FsRunSnapshotStore, h as redactToolStepArgs, i as isNetworkAllowed, it as renderAvailableSkillsXml, j as sampleBehaviorRecords, k as readProfileEntries, l as parseBridgeRequest, m as SENSITIVE_ANNOTATION, n as normalizeErrorCode, nt as ProgressiveRouter, o as networkUrlHost, p as AgentLoop, q as READ_SKILL_FILE_TOOL, r as normalizeToolError, rt as escapeXml, s as UPLOAD_FILES_UNAVAILABLE, t as CapabilityApproval, tt as toLlmToolSpec, u as FsArtifactStore, v as isUnsupportedRunSnapshot, w as BEHAVIOR_RECORDS_KEY, x as extractSkillCandidate, y as DEFAULT_LOOP_LIMITS, z as schemaToForm } from "./approval-BnLLCOG0.js";
6
+ import { $ as scriptToolName, A as readUserProfile, B as createScriptContext, C as TraceRecorder, D as mergeProfileEntries, E as appendBehaviorRecords, F as DEFAULT_USER_PROFILE_LIMITS, G as ASK_USER_TOOL_NAME, H as ASK_USER_INPUT_SCHEMA, I as EMPTY_USER_PROFILE, J as READ_SKILL_FILE_TOOL_NAME, K as READ_SKILL_FILE_INPUT_SCHEMA, L as SerializingMemoryStore, M as USER_PROFILE_NO_INVENTION_RULE, N as USER_PROFILE_PROMPT_HEADER, O as readBehaviorRecords, P as renderUserProfileContext, Q as schemaSourceLabel, R as EventBus, S as extractTodoTraceEvents, T as USER_PROFILE_KEY, U as ASK_USER_MAX_FIELDS, V as ASK_USER_FIELD_TYPES, W as ASK_USER_TOOL, X as formatSkillScriptManifest, Y as ALLOWED_TOOLS_EXCLUSION_REASON, Z as listSkillScripts, _ as RUN_SNAPSHOT_SCHEMA_VERSION, a as networkPolicyLibSource, at as xmlRenderer, b as MAX_TOOL_STEP_ARG_BYTES, c as bridgeError, d as FsMemoryStore, et as resolveToolName, f as WebSkillRuntime, g as FsRunSnapshotStore, h as redactToolStepArgs, i as isNetworkAllowed, it as renderAvailableSkillsXml, j as sampleBehaviorRecords, k as readProfileEntries, l as parseBridgeRequest, m as SENSITIVE_ANNOTATION, n as normalizeErrorCode, nt as ProgressiveRouter, o as networkUrlHost, p as AgentLoop, q as READ_SKILL_FILE_TOOL, r as normalizeToolError, rt as escapeXml, s as UPLOAD_FILES_UNAVAILABLE, t as CapabilityApproval, tt as toLlmToolSpec, u as FsArtifactStore, v as isUnsupportedRunSnapshot, w as BEHAVIOR_RECORDS_KEY, x as extractSkillCandidate, y as DEFAULT_LOOP_LIMITS, z as schemaToForm } from "./approval-CBPnGPIm.js";
7
7
  import { a as GoogleGenAiClient, c as findUnpairedToolCalls, d as partsToText, f as promptText, i as toVercelToolSpecs, l as interruptedToolResult, n as fromVercelResult, o as AnthropicClient, p as textParts, r as fromVercelStreamPart, s as OpenAiCompatibleClient, u as sealToolCallPairs } from "./llm-B7lLH0ZI.js";
8
8
  import { c as DEFAULT_MAX_DOCUMENT_BYTES, d as TEXT_BUDGETED_CONTENT_TYPES, i as UNSUPPORTED_DOCUMENT_MESSAGE, l as DEFAULT_MAX_DOCUMENT_TEXT_BYTES, n as READ_LINKED_DOCUMENT_TOOL_NAME, o as toBase64, r as SUPPORTED_DOCUMENT_MIME, s as DEFAULT_MAX_DATA_SOURCE_BYTES, t as READ_LINKED_DOCUMENT_TOOL, u as DEFAULT_MAX_UPLOAD_FILE_BYTES } from "./linkedDocument-xNXF-z8n.js";
9
9
  import { n as normalizeToolContent, t as mergeCatalogEntries } from "./external-_ZRQe-V9.js";
10
10
  import { n as extractChartSpec, t as buildRenderResult } from "./renderResult-D9Q-Vu2x.js";
11
11
  import { n as validateUiSpecEvent, r as validateUiSpecNode, t as extractUiSpecEvents } from "./surface-DVGiCmwq.js";
12
- import { t as createWebSkillApi } from "./webSkillApi-DOOyz2G5.js";
12
+ import { t as createWebSkillApi } from "./webSkillApi-Ce2OO5S5.js";
13
13
 
14
14
  //#region ../core/src/fs/memoryFs.ts
15
15
  const ROOT = "/";
@@ -1004,7 +1004,7 @@ var FsToolStepStore = class {
1004
1004
  * Version of the published `@webskill/sdk` package, injected at build time.
1005
1005
  * @stable
1006
1006
  */
1007
- const SDK_VERSION = "0.15.0";
1007
+ const SDK_VERSION = "0.17.0";
1008
1008
 
1009
1009
  //#endregion
1010
1010
  export { ALLOWED_TOOLS_EXCLUSION_REASON, ASK_USER_FIELD_TYPES, ASK_USER_INPUT_SCHEMA, ASK_USER_MAX_FIELDS, ASK_USER_TOOL, ASK_USER_TOOL_NAME, ATOMIC_TMP_SUFFIX_PATTERN, ATTACHMENT_TEXT_LIMIT, AgentLoop, AnthropicClient, BEHAVIOR_RECORDS_KEY, CapabilityApproval, DEFAULT_ARCHIVE_LIMITS, DEFAULT_LOOP_LIMITS, DEFAULT_MAX_DATA_SOURCE_BYTES, DEFAULT_MAX_DOCUMENT_BYTES, DEFAULT_MAX_DOCUMENT_TEXT_BYTES, DEFAULT_MAX_UPLOAD_FILE_BYTES, DEFAULT_USER_PROFILE_LIMITS, DOCX_MIME, EMPTY_USER_PROFILE, EventBus, FILE_MIME_TYPES, FS_SESSION_PAGE_SIZE, FsArtifactStore, FsMemoryStore, FsRunSnapshotStore, FsRunTraceStore, FsSessionStore, FsToolStepStore, FsTrustedKeyStore, FullDisclosureRouter, GoogleGenAiClient, HookRunner, IMAGE_MIME_TYPES, MANIFEST_EXCLUDED_FILES, MAX_TOOL_STEP_ARG_BYTES, MemoryFS, OpenAiCompatibleClient, ProgressiveRouter, READ_LINKED_DOCUMENT_TOOL, READ_LINKED_DOCUMENT_TOOL_NAME, READ_SKILL_FILE_INPUT_SCHEMA, READ_SKILL_FILE_TOOL, READ_SKILL_FILE_TOOL_NAME, RUN_SNAPSHOT_SCHEMA_VERSION, RUN_TRACE_SCHEMA_VERSION, SDK_VERSION, SENSITIVE_ANNOTATION, SESSION_SCHEMA_VERSION, SIGNATURE_SCHEMA_VERSION, SKILLS_LOCKFILE, SKILL_MANIFEST_FILE, SKILL_NAME_MAX_LENGTH, SKILL_NAME_PATTERN, SKILL_PACK_FILE, SKILL_SIGNATURE_FILE, SUPPORTED_DOCUMENT_MIME, SerializingMemoryStore, SkillDiscovery, SkillReader, TEXT_BUDGETED_CONTENT_TYPES, TEXT_EXTENSIONS, TraceRecorder, UNSUPPORTED_DOCUMENT_MESSAGE, UNTRUSTED_LINE_LIMIT, UPLOAD_FILES_UNAVAILABLE, USER_PROFILE_EXPORT_VERSION, USER_PROFILE_KEY, USER_PROFILE_NO_INVENTION_RULE, USER_PROFILE_PROMPT_HEADER, USER_PROFILE_REFINE_PROMPT, WebSkillError, WebSkillRuntime, XLSX_MIME, appendBehaviorRecords, applyUserProfileImport, assertRemoteUrlAllowed, assertSafePathSegment, atomicWriteText, bridgeError, buildCatalog, buildManifest, buildRenderResult, checkDependencyCycles, checkSkillRules, classifyAttachment, computeDigest, createScriptContext, createWebSkillApi, detectSkillArchiveShape, detectSkillArchiveShapeFromFs, diffUserProfile, escapeXml, exportSkills, exportUserProfile, extractChartSpec, extractSkillCandidate, extractTodoTraceEvents, extractUiSpecEvents, findUnpairedToolCalls, formatAttachmentText, formatSkillScriptManifest, fromVercelResult, fromVercelStreamPart, interruptedToolResult, isAtomicTempPath, isNetworkAllowed, isUnsupportedRunSnapshot, isValidSkillName, jsonRenderer, keyIdOf, listSkillScripts, mergeCatalogEntries, mergeProfileEntries, messageOf, networkPolicyLibSource, networkUrlHost, normalizeErrorCode, normalizePath, normalizeToolContent, normalizeToolError, parseBridgeRequest, parseSkillMarkdown, parseSkillPackManifest, parseUserProfileExport, partsToText, readBehaviorRecords, readProfileEntries, readResponseWithLimit, readSkillSignature, readUserProfile, redactToolStepArgs, refineUserProfile, renderAvailableSkillsXml, renderCatalogJson, renderUserProfileContext, resolveArchiveLimits, resolveInsideRoot, resolveToolName, sampleBehaviorRecords, sanitizeUntrustedLine, schemaSourceLabel, schemaToForm, scriptToolName, sealToolCallPairs, signSkill, signaturePayloadBytes, stripArchiveRoot, summarizeRunUsage, summarizeToolCalls, textParts, toBase64, toLlmToolSpec, toRecordDigests, toVercelToolSpecs, unzipWithLimits, validateSkills, validateUiSpecEvent, validateUiSpecNode, verifyManifest, verifySkillSignature, xmlRenderer };
package/dist/mcp.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { K as JsonSchema, _ as LlmToolSpec, ft as SkillDocument, ut as SkillCatalogEntry } from "./types-C3V6lAeO-BIf7UB2e.js";
2
- import { R as ExternalSkillProvider, _n as ToolDisclosure, fr as mergeCatalogEntries, yn as ToolResult, z as ExternalToolSource } from "./index-Oc3H89TJ.js";
1
+ import { K as JsonSchema, _ as LlmToolSpec, ft as SkillDocument, ut as SkillCatalogEntry } from "./types-Btpdd1y--BcxQ10Fa.js";
2
+ import { R as ExternalSkillProvider, _n as ToolDisclosure, fr as mergeCatalogEntries, yn as ToolResult, z as ExternalToolSource } from "./index-BDyXe-a5.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";
@@ -54,7 +54,7 @@ function resolveSurfaceHostControlTexts(texts) {
54
54
  function shapeInteractionValue(model, values) {
55
55
  switch (model.kind) {
56
56
  case "ask": return values["answer"];
57
- case "confirm": return values["confirmed"] === true;
57
+ case "confirm": return true;
58
58
  case "select": return values["selected"];
59
59
  case "authorize": return true;
60
60
  case "file-pick": return values["file"];
@@ -81,12 +81,7 @@ function interactionToFormModel(request, texts) {
81
81
  case "confirm": return {
82
82
  kind: "confirm",
83
83
  message: request.message,
84
- controls: [{
85
- name: "confirmed",
86
- label: request.message,
87
- control: "boolean",
88
- defaultValue: request.defaultValue ?? true
89
- }],
84
+ controls: [],
90
85
  submitLabel: t.confirm,
91
86
  cancelLabel: t.cancel
92
87
  };
package/dist/node.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- import { $ as SKILLS_LOCKFILE, Ct as SkillsLockfile, Et as TrustedKeyStore, H as FileStat, K as JsonSchema, N as ArchiveLimits, S as UiBridge, U as FileSystemProvider, _t as SkillManifest, at as SignatureAuditSink, b as RenderResultRequest, c as InteractionResponse, et as SKILL_MANIFEST_FILE, gt as SkillManagerPort, jt as VerifyResult, kt as UnsignedPolicy, pt as SkillInstallSource, s as InteractionRequest } from "./types-C3V6lAeO-BIf7UB2e.js";
2
- import { Gn as WebSkillRuntimeDeps, Gt as SchemaInferer, H as FsMemoryStore, Kt as ScriptExecutionContext, V as FsArtifactStore, Wn as WebSkillRuntime, Zn as createScriptContext, ct as NetworkPolicy, gn as ToolDefinition, m as ApprovalScope, qt as ScriptExecutor, y as BridgeCapabilities, yn as ToolResult } from "./index-Oc3H89TJ.js";
3
- import { a as AuditLog, b as SkillVersionStore, d as CandidateSkill, m as CandidateStore, r as ApprovalPolicy } from "./skillVersionStore-B24Jjjry-C4zomhMZ.js";
1
+ import { $ as SKILLS_LOCKFILE, Ct as SkillsLockfile, Et as TrustedKeyStore, H as FileStat, K as JsonSchema, N as ArchiveLimits, S as UiBridge, U as FileSystemProvider, _t as SkillManifest, at as SignatureAuditSink, b as RenderResultRequest, c as InteractionResponse, et as SKILL_MANIFEST_FILE, gt as SkillManagerPort, jt as VerifyResult, kt as UnsignedPolicy, pt as SkillInstallSource, s as InteractionRequest } from "./types-Btpdd1y--BcxQ10Fa.js";
2
+ import { Gn as WebSkillRuntimeDeps, Gt as SchemaInferer, H as FsMemoryStore, Kt as ScriptExecutionContext, V as FsArtifactStore, Wn as WebSkillRuntime, Zn as createScriptContext, ct as NetworkPolicy, gn as ToolDefinition, m as ApprovalScope, qt as ScriptExecutor, y as BridgeCapabilities, yn as ToolResult } from "./index-BDyXe-a5.js";
3
+ import { a as AuditLog, b as SkillVersionStore, d as CandidateSkill, m as CandidateStore, r as ApprovalPolicy } from "./skillVersionStore-B24Jjjry-v2CCU0Xo.js";
4
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
package/dist/node.js CHANGED
@@ -2,10 +2,10 @@ import { n as messageOf, t as WebSkillError } from "./errors-BDZNpC13.js";
2
2
  import { A as SKILL_MANIFEST_FILE, D as verifySkillSignature, M as buildManifest, O as MANIFEST_EXCLUDED_FILES, P as verifyManifest, b as parseSkillMarkdown, c as unzipWithLimits, f as SKILL_PACK_FILE, k as SKILLS_LOCKFILE, m as parseSkillPackManifest, o as readResponseWithLimit, p as exportSkills, s as resolveArchiveLimits, t as validateSkills, w as readSkillSignature, y as isValidSkillName } from "./skill-CAJMsLod.js";
3
3
  import { a as atomicWriteText, o as isAtomicTempPath, r as resolveInsideRoot, t as assertSafePathSegment } from "./pathSecurity-B1owvJAF.js";
4
4
  import { t as assertRemoteUrlAllowed } from "./urlSafety-CiSuCJvX.js";
5
- import { B as createScriptContext, a as networkPolicyLibSource, c as bridgeError, d as FsMemoryStore, f as WebSkillRuntime, l as parseBridgeRequest, r as normalizeToolError, s as UPLOAD_FILES_UNAVAILABLE, t as CapabilityApproval, u as FsArtifactStore } from "./approval-BnLLCOG0.js";
5
+ import { B as createScriptContext, a as networkPolicyLibSource, c as bridgeError, d as FsMemoryStore, f as WebSkillRuntime, l as parseBridgeRequest, r as normalizeToolError, s as UPLOAD_FILES_UNAVAILABLE, t as CapabilityApproval, u as FsArtifactStore } from "./approval-CBPnGPIm.js";
6
6
  import { n as normalizeToolContent } from "./external-_ZRQe-V9.js";
7
7
  import { i as probeLlmCapabilities } from "./env-Bj1MI2Ww.js";
8
- import { t as AUDIT_EVENT_TYPES } from "./eventTypes-Y07N8IAC.js";
8
+ import { t as AUDIT_EVENT_TYPES } from "./eventTypes-CwciaqCU.js";
9
9
  import { createRequire } from "node:module";
10
10
  import { unzipSync, zipSync } from "fflate";
11
11
  import { existsSync, promises, realpathSync } from "node:fs";
@@ -500,13 +500,16 @@ var SandboxedScriptExecutor = class {
500
500
  }
501
501
  /** 能力桥宿主侧处理:能力关闭/授权拒绝即 TOOL_UNSUPPORTED;判定逻辑共用 runtime/sandbox/approval */
502
502
  async #handleBridge(request, context) {
503
- const gate = async (capability, message, details) => {
503
+ const gate = async (capability, message, details = {}) => {
504
504
  const decision = await this.#approval.authorize({
505
505
  runId: context.runId,
506
506
  capability,
507
507
  mode: this.#capabilities[capability],
508
508
  message,
509
- ...details !== void 0 ? { details } : {}
509
+ details: {
510
+ skill: context.skillName,
511
+ ...details
512
+ }
510
513
  });
511
514
  if (decision === "allowed") return void 0;
512
515
  return bridgeError(request.id, "TOOL_UNSUPPORTED", decision === "disabled" ? `Capability "${capability}" is disabled by the sandbox capability settings` : `Capability "${capability}" was denied by the user`);
@@ -564,7 +567,7 @@ var SandboxedScriptExecutor = class {
564
567
  }
565
568
  case "confirm": {
566
569
  if (!context.confirm) return bridgeError(request.id, "TOOL_UNSUPPORTED", "Capability \"confirm\" is disabled");
567
- const denied = await gate("confirm", `Script "${context.skillName}" asks for confirmation: ${request.message}`);
570
+ const denied = await gate("confirm", `Script "${context.skillName}" asks for confirmation: ${request.message}`, { question: request.message });
568
571
  if (denied) return denied;
569
572
  return {
570
573
  id: request.id,
@@ -895,13 +898,16 @@ var ProcessSandboxExecutor = class {
895
898
  }
896
899
  /** 能力桥宿主侧处理:与 worker_threads 沙箱同一判定(runtime/sandbox/approval 单一来源) */
897
900
  async #handleBridge(request, context) {
898
- const gate = async (capability, message, details) => {
901
+ const gate = async (capability, message, details = {}) => {
899
902
  const decision = await this.#approval.authorize({
900
903
  runId: context.runId,
901
904
  capability,
902
905
  mode: this.#capabilities[capability],
903
906
  message,
904
- ...details !== void 0 ? { details } : {}
907
+ details: {
908
+ skill: context.skillName,
909
+ ...details
910
+ }
905
911
  });
906
912
  if (decision === "allowed") return void 0;
907
913
  return bridgeError(request.id, "TOOL_UNSUPPORTED", decision === "disabled" ? `Capability "${capability}" is disabled by the sandbox capability settings` : `Capability "${capability}" was denied by the user`);
@@ -959,7 +965,7 @@ var ProcessSandboxExecutor = class {
959
965
  }
960
966
  case "confirm": {
961
967
  if (!context.confirm) return bridgeError(request.id, "TOOL_UNSUPPORTED", "Capability \"confirm\" is disabled");
962
- const denied = await gate("confirm", `Script "${context.skillName}" asks for confirmation: ${request.message}`);
968
+ const denied = await gate("confirm", `Script "${context.skillName}" asks for confirmation: ${request.message}`, { question: request.message });
963
969
  if (denied) return denied;
964
970
  return {
965
971
  id: request.id,
@@ -1,4 +1,4 @@
1
- import { h as uiCatalog } from "./openUiSpecLang-DuOCdw9G.js";
1
+ import { h as uiCatalog } from "./openUiSpecLang-B4QQ9Tfo.js";
2
2
  import { t as CatalogNode } from "./ui-react.js";
3
3
  import { Renderer, createLibrary, defineComponent } from "./dist-CTsxblSD.js";
4
4
  import { z } from "zod";
@@ -1,4 +1,4 @@
1
- import { u as interactionToFormModel } from "./miniChart-owdCdaw-.js";
1
+ import { u as interactionToFormModel } from "./miniChart-lauNtZu8.js";
2
2
  import { toJSONSchema, z } from "zod";
3
3
 
4
4
  //#region ../ui/src/chart/echart.ts
@@ -1800,12 +1800,13 @@ function interactionToUiSpec(request, labels = {}) {
1800
1800
  },
1801
1801
  children: model.controls.map(toField)
1802
1802
  };
1803
- if (model.controls.length > 0 || !model.message) return form;
1803
+ const message = labels.message ?? model.message;
1804
+ if (model.controls.length > 0 || !message) return form;
1804
1805
  return {
1805
1806
  component: "Stack",
1806
1807
  children: [{
1807
1808
  component: "Text",
1808
- props: { text: model.message }
1809
+ props: { text: message }
1809
1810
  }, form]
1810
1811
  };
1811
1812
  }
@@ -1,4 +1,4 @@
1
- import { U as FileSystemProvider, X as PageQuery, Y as Page, _t as SkillManifest, ut as SkillCatalogEntry } from "./types-C3V6lAeO-BIf7UB2e.js";
1
+ import { U as FileSystemProvider, X as PageQuery, Y as Page, _t as SkillManifest, ut as SkillCatalogEntry } from "./types-Btpdd1y--BcxQ10Fa.js";
2
2
  //#region ../governance/dist/skillVersionStore-B24Jjjry.d.ts
3
3
  //#region src/types.d.ts
4
4
  type CandidateStatus = 'draft' | 'pending-review' | 'approved' | 'published' | 'rejected';
package/dist/testing.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { S 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, v as MemoryStore } from "./types-C3V6lAeO-BIf7UB2e.js";
1
+ import { S 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, v as MemoryStore } from "./types-Btpdd1y--BcxQ10Fa.js";
2
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
@@ -3,10 +3,21 @@
3
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' | 'SKILL_MANIFEST_PROTECTED' | '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' |
4
4
  /** 历史里有未应答的工具调用,但当初为何中断已无从得知(分册 11 读取侧补齐) */
5
5
  'RUN_INTERRUPTED' | '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' | 'MCP_OAUTH_REQUIRED' | 'MCP_OAUTH_FAILED' | 'MCP_OAUTH_NOT_CONFIGURED' | 'PAGE_ACTION_OUT_OF_SCOPE' | 'PAGE_ACTION_STALE_REF' | 'PAGE_ACTION_DECLINED' |
6
+ /**
7
+ * 0.16.0 分册 12:模型侧标签页控制的三条拒绝。
8
+ * `EXPIRED` 与 `UNKNOWN` 分开,是因为模型的下一步不同:前者重新列举,后者是它记错了。
9
+ */
10
+ 'PAGE_TAB_EXPIRED' | 'PAGE_TAB_UNKNOWN' |
11
+ /** 用户自己打开的那一页不归任务所有,模型不得关闭(SC-3) */
12
+ 'PAGE_TAB_NOT_CLOSABLE' |
13
+ /** 0.16.0 分册 14:宿主的 reader 没实现 `readSubtree`,该能力整个不存在(D-14-4) */
14
+ 'PERCEPTION_SUBTREE_UNSUPPORTED' |
15
+ /** 子树落在宿主声明的可读区域之外,或被 `exclude` 连根剪掉;遍历不会开始 */
16
+ 'PERCEPTION_SUBTREE_OUT_OF_SCOPE' | 'PERCEPTION_SUBTREE_UNKNOWN_REF' |
6
17
  /** 0.11.0 分册 18:用户拒绝把数据交给文档投放面 */
7
18
  'DOCUMENT_SURFACE_DECLINED' |
8
19
  /** 0.11.0 分册 18:viewer 未在期限内回报就绪(路由挂了 / 外壳脚本没跑起来) */
9
- 'DOCUMENT_SURFACE_UNAVAILABLE' | '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_DOCUMENT_UNSUPPORTED' | 'MODEL_TOOLS_UNSUPPORTED' | 'ATTACHMENT_TOO_LARGE' | 'ATTACHMENT_TYPE_REJECTED' |
20
+ 'DOCUMENT_SURFACE_UNAVAILABLE' | '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' | 'CAMERA_UNAVAILABLE' | 'CAMERA_PERMISSION_DENIED' | 'CAMERA_CAPTURE_FAILED' | 'PERCEPTION_NOT_ENABLED' | 'PERCEPTION_FAILED' | 'MODEL_IMAGE_UNSUPPORTED' | 'MODEL_DOCUMENT_UNSUPPORTED' | 'MODEL_TOOLS_UNSUPPORTED' | 'ATTACHMENT_TOO_LARGE' | 'ATTACHMENT_TYPE_REJECTED' |
10
21
  /** 脚本取了宿主未声明的数据源;拒绝发生在发出任何请求之前(0.11.0 分册 16) */
11
22
  'DATA_SOURCE_NOT_FOUND' |
12
23
  /** 取数结果超预算。与 ATTACHMENT_TOO_LARGE 同口径:拒绝而不截断 */
@@ -705,7 +716,7 @@ declare function escapeXml(text: string): string;
705
716
  declare function renderAvailableSkillsXml(catalog: SkillCatalog): string;
706
717
  declare const xmlRenderer: CatalogRenderer;
707
718
  //#endregion
708
- //#region ../runtime/dist/types-C3V6lAeO.d.ts
719
+ //#region ../runtime/dist/types-Btpdd1y-.d.ts
709
720
  //#region src/llm/streamTypes.d.ts
710
721
  /** 流式 LLM 事件(OpenAI SSE / Vercel fullStream 统一映射) */
711
722
  type LlmStreamEvent = {
@@ -928,8 +939,14 @@ type InteractionRequest = {
928
939
  id: string;
929
940
  capability: 'readReference' | 'readAsset' | 'writeArtifact' | 'confirm' | 'fetchData' | 'pageAction' | 'readLinkedDocument' |
930
941
  /** 读取本机下载目录(0.14.0 分册 20) */
931
- 'readDownloadedFile';
942
+ 'readDownloadedFile' |
943
+ /** 读取本轮上传的文件(0.15.0 分册 17;0.17.0 分册 19 从 `confirm` 改到这里) */
944
+ 'readUploadFile';
932
945
  message: string;
946
+ /**
947
+ * 结构化载荷。`message` 是无字典层的英文兜底,持有字典的宿主据本字段重写正文
948
+ * (分册 19 FR-19.6):只发散文的话,本地化在渲染层无从下手。
949
+ */
933
950
  details?: unknown;
934
951
  });
935
952
  interface InteractionResponse {
@@ -58,7 +58,8 @@ function toActionFrameScopes(scope) {
58
58
  }];
59
59
  }
60
60
  /**
61
- * 本版的操作集(FR-25.1)。导航、拖拽、滚动仍不在内。
61
+ * 本版的操作集(FR-25.1 / 0.16.0 FR-13.6)。拖拽、滚动仍不在内;
62
+ * 导航只有 `back` 一个,且它**不接受地址**——可达面被浏览器历史封死(SC-1)。
62
63
  *
63
64
  * `select`/`set`/`attach` 与既有三个走**同一条** policy 路径,
64
65
  * 范围白名单、逐次确认、审计三条硬约束因此天然覆盖到它们——
@@ -71,8 +72,18 @@ const PAGE_ACTION_KINDS = [
71
72
  "submit",
72
73
  "select",
73
74
  "set",
74
- "attach"
75
+ "attach",
76
+ "back"
75
77
  ];
78
+ /**
79
+ * `back` 的目标占位(0.16.0 分册 13 §4.1)。
80
+ *
81
+ * **模型不能表达它**:工具源在 `action === 'back'` 时拒绝任何 `ref` 入参。
82
+ * 它存在只为了让 `back` 不必改 `PageActionRequest.ref` 的类型——
83
+ * 改它会波及所有实现过 executor 的宓主。
84
+ * @experimental
85
+ */
86
+ const PAGE_DOCUMENT_REF = "@document";
76
87
 
77
88
  //#endregion
78
- export { frameSteps as a, frameLabel as i, toActionFrameScopes as n, toFrameScopes as r, PAGE_ACTION_KINDS as t };
89
+ export { frameLabel as a, toFrameScopes as i, PAGE_DOCUMENT_REF as n, frameSteps as o, toActionFrameScopes as r, PAGE_ACTION_KINDS as t };
@@ -1,6 +1,6 @@
1
- import { C as UiSpecActionCapability, D as UiSpecSnapshot, O as UiSurfaceActionRequest, Ot as UiSpecNode, S as UiBridge, T as UiSpecEvent, b as RenderResultRequest, c as InteractionResponse, k as UiSurfaceActionResponse, s as InteractionRequest, w as UiSpecDrafts } from "./types-C3V6lAeO-BIf7UB2e.js";
2
- import { N as DocumentSurfacePort } from "./index-Oc3H89TJ.js";
3
- import { J as SurfaceHostControlTexts, P as InteractionSpecLabels, q as SurfaceFormTexts, v as ChartFontSizes } from "./index-CU2md8R1.js";
1
+ import { C as UiSpecActionCapability, D as UiSpecSnapshot, O as UiSurfaceActionRequest, Ot as UiSpecNode, S as UiBridge, T as UiSpecEvent, b as RenderResultRequest, c as InteractionResponse, k as UiSurfaceActionResponse, s as InteractionRequest, w as UiSpecDrafts } from "./types-Btpdd1y--BcxQ10Fa.js";
2
+ import { N as DocumentSurfacePort } from "./index-BDyXe-a5.js";
3
+ import { J as SurfaceHostControlTexts, P as InteractionSpecLabels, q as SurfaceFormTexts, v as ChartFontSizes } from "./index-CaLsVI-m.js";
4
4
  import { z } from "zod";
5
5
  import React$1, { ComponentType, ReactNode } from "react";
6
6
  import "react/jsx-runtime";
@@ -502,6 +502,12 @@ declare class SpecInteractionChannel {
502
502
  request(input: InteractionRequest): Promise<InteractionResponse>;
503
503
  /** runtime 交互超时/取消:以 cancelled resolve 挂起的 request(防悬挂 + 残留) */
504
504
  cancel(id: string): void;
505
+ /**
506
+ * 否决:以 `value: false` resolve 挂起的 request。
507
+ * 哪些请求的「取消」算否决、哪些算中止,是宿主外壳的决定(UI-UX8 D14),
508
+ * 本通道只提供入口:裸用本通道的宿主不调就维持原来的 cancelled 语义。
509
+ */
510
+ decline(id: string): void;
505
511
  /** react 层动作回传:submit 归形提交值,其余意图(cancel)按取消收尾 */
506
512
  handleAction(event: CustomSurfaceActionEvent): void;
507
513
  /** react 层初始化失败:挂起请求 reject 并记录原因(桥读取后降级 native) */
package/dist/ui-react.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import { a as __toCommonJS, i as __require, n as __esmMin, o as __toESM, r as __exportAll, t as __commonJSMin } from "./rolldown-runtime-BHkdefai.js";
2
2
  import { n as messageOf, t as WebSkillError } from "./errors-BDZNpC13.js";
3
3
  import { n as validateUiSpecEvent, r as validateUiSpecNode } from "./surface-DVGiCmwq.js";
4
- import { a as applySuggestion, c as DEFAULT_SURFACE_FORM_TEXTS, f as resolveSurfaceFormTexts, i as renderMiniMarkdown, l as DEFAULT_SURFACE_HOST_CONTROL_TEXTS, m as shapeInteractionValue, o as collectValues, p as resolveSurfaceHostControlTexts, r as renderMiniChart, u as interactionToFormModel } from "./miniChart-owdCdaw-.js";
5
- import { C as chartSpecFromProps, S as DEFAULT_CHART_FONT_SIZES, T as resolveChartFontSizes, d as collectScopedValues, f as qualifyFieldName, h as uiCatalog, l as evaluateFieldCondition, n as interactionToUiSpec, o as normalizeColumnWidths, r as toJsonRenderSpec, s as resolveColumnWidths, t as toOpenUiSpecLang, u as collectFormScopes, w as mountEchart, x as gaugePercent } from "./openUiSpecLang-DuOCdw9G.js";
4
+ import { a as applySuggestion, c as DEFAULT_SURFACE_FORM_TEXTS, f as resolveSurfaceFormTexts, i as renderMiniMarkdown, l as DEFAULT_SURFACE_HOST_CONTROL_TEXTS, m as shapeInteractionValue, o as collectValues, p as resolveSurfaceHostControlTexts, r as renderMiniChart, u as interactionToFormModel } from "./miniChart-lauNtZu8.js";
5
+ import { C as chartSpecFromProps, S as DEFAULT_CHART_FONT_SIZES, T as resolveChartFontSizes, d as collectScopedValues, f as qualifyFieldName, h as uiCatalog, l as evaluateFieldCondition, n as interactionToUiSpec, o as normalizeColumnWidths, r as toJsonRenderSpec, s as resolveColumnWidths, t as toOpenUiSpecLang, u as collectFormScopes, w as mountEchart, x as gaugePercent } from "./openUiSpecLang-B4QQ9Tfo.js";
6
6
  import minpath from "node:path";
7
7
  import { fileURLToPath as urlToPath } from "node:url";
8
8
  import { z } from "zod";
@@ -579,7 +579,7 @@ function InteractionForm({ bridge }) {
579
579
  className: "webskill-form__title",
580
580
  children: model.title
581
581
  }) : null,
582
- model.message && (model.kind === "form" || model.kind === "authorize") ? /* @__PURE__ */ jsx("p", {
582
+ model.message && (model.kind === "form" || model.kind === "authorize" || model.kind === "confirm") ? /* @__PURE__ */ jsx("p", {
583
583
  className: "webskill-form__message",
584
584
  children: model.message
585
585
  }) : null,
@@ -131278,6 +131278,17 @@ var SpecInteractionChannel = class {
131278
131278
  cancelled: true
131279
131279
  });
131280
131280
  }
131281
+ /**
131282
+ * 否决:以 `value: false` resolve 挂起的 request。
131283
+ * 哪些请求的「取消」算否决、哪些算中止,是宿主外壳的决定(UI-UX8 D14),
131284
+ * 本通道只提供入口:裸用本通道的宿主不调就维持原来的 cancelled 语义。
131285
+ */
131286
+ decline(id) {
131287
+ if (this.#current?.session.request.id === id) this.#settle({
131288
+ id,
131289
+ value: false
131290
+ });
131291
+ }
131281
131292
  /** react 层动作回传:submit 归形提交值,其余意图(cancel)按取消收尾 */
131282
131293
  handleAction(event) {
131283
131294
  const pending = this.#current;
@@ -131326,7 +131337,7 @@ function OpenUiSpecSurface({ spec, surfaceId, actions, onAction }) {
131326
131337
  const [unavailable, setUnavailable] = useState(false);
131327
131338
  useEffect(() => {
131328
131339
  let cancelled = false;
131329
- import("./openUiLibrary-CY_ADoe0.js").then((loaded) => {
131340
+ import("./openUiLibrary-BJtCG5B1.js").then((loaded) => {
131330
131341
  if (!cancelled) setModule(loaded);
131331
131342
  }).catch(() => {
131332
131343
  if (!cancelled) setUnavailable(true);
package/dist/ui-vue.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { S as UiBridge, b as RenderResultRequest, c as InteractionResponse, s as InteractionRequest } from "./types-C3V6lAeO-BIf7UB2e.js";
1
+ import { S as UiBridge, b as RenderResultRequest, c as InteractionResponse, s as InteractionRequest } from "./types-Btpdd1y--BcxQ10Fa.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 { a as applySuggestion, c as DEFAULT_SURFACE_FORM_TEXTS, i as renderMiniMarkdown, m as shapeInteractionValue, o as collectValues, r as renderMiniChart, u as interactionToFormModel } from "./miniChart-owdCdaw-.js";
1
+ import { a as applySuggestion, c as DEFAULT_SURFACE_FORM_TEXTS, i as renderMiniMarkdown, m as shapeInteractionValue, o as collectValues, r as renderMiniChart, u as interactionToFormModel } from "./miniChart-lauNtZu8.js";
2
2
  import { defineComponent, h, reactive, ref } from "vue";
3
3
 
4
4
  //#region ../ui-vue/src/bridgeState.ts
@@ -157,7 +157,7 @@ const InteractionForm = defineComponent({
157
157
  }
158
158
  }, [
159
159
  model.title ? h("div", { class: "webskill-form__title" }, model.title) : null,
160
- model.message && (model.kind === "form" || model.kind === "authorize") ? h("p", { class: "webskill-form__message" }, model.message) : null,
160
+ model.message && (model.kind === "form" || model.kind === "authorize" || model.kind === "confirm") ? h("p", { class: "webskill-form__message" }, model.message) : null,
161
161
  ...model.controls.map((control) => h("div", { key: control.name }, [
162
162
  renderControl(control, invalid.value.includes(control.name)),
163
163
  renderSuggestion(control, () => {
package/dist/ui.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Ot as UiSpecNode } from "./types-C3V6lAeO-BIf7UB2e.js";
2
- import { Xn as buildRenderResult } from "./index-Oc3H89TJ.js";
3
- import { $ as UiActionDef, $t as qualifyFieldName, A as EvaluateFieldConditionOptions, At as buildA2uiCatalogDefinition, B as OpenUiRendererProps, Bt as evaluateFieldCondition, C as DEFAULT_INTERACTION_TEXTS, Ct as WEBSKILL_STYLES_CSS, D as DOCUMENT_COMPONENTS, Dt as a2uiComponentSchema, E as DESCRIBE_UI_PRESET_TOOL, Et as ZodRuntime, F as InteractionTexts, Ft as collectSpecActions, G as SPEC_TABLE_MIN_COLUMN_WIDTH, Gt as gaugePercent, H as PLANNED_INCREMENT, Ht as fromA2uiSurfaceAction, I as JsonRenderSpec, It as collectValues, J as SurfaceHostControlTexts, Jt as loadOpenUiPeers, K as SpecColumnMeta, Kt as interactionToFormModel, L as LoadedOpenUiPeers, Lt as createUiCatalogToolSource, M as FieldConditionResult, Mt as chartToTable, N as FormModel, Nt as collectFormScopes, O as DocumentComponentName, Ot as a2uiComponentShapes, P as InteractionSpecLabels, Pt as collectScopedValues, Q as UI_PRESET_NAMES, Qt as normalizeColumnWidths, R as MAX_CONDITION_DEPTH, Rt as defineUiCatalog, S as DEFAULT_CHART_FONT_SIZES, St as WEBSKILL_A2UI_CATALOG_ID, T as DEFAULT_SURFACE_HOST_CONTROL_TEXTS, Tt as WebFormBridge, U as RENDER_UI_TOOL, Ut as fromUiSurfaceActionDispatch, V as OpenUiRuntime, Vt as fromA2uiSpecAction, W as SPEC_TABLE_MIN_COLUMN_VAR, Wt as fromVercelToolResult, X as UI_CATALOG_PROMPT_BUDGET_BYTES, Xt as mountEchart, Y as UI_CATALOG_GROUPS, Yt as loadWebSkillLitCatalog, Z as UI_PRESETS, Zt as mountViewerComponents, _ as CHART_PALETTE, _n as uiCatalog, _t as VIEWER_PROPS_ATTR, a as A2UI_SURFACE_ACTION, an as resolveColumnWidths, at as UiFormScope, b as ColumnWidthsRejection, bt as ViewerComponentsHandle, c as A2uiCatalogDefinition, cn as resolveSurfaceHostControlTexts, ct as UiSpecDegradation, d as A2uiMessage, dn as toA2uiSurfaceAction, dt as UiSpecSanitization, en as renderBlocks, et as UiCatalog, f as A2uiSpecActionEvent, fn as toEchartsOption, ft as UiSpecValidation, g as CATALOG_SCHEMA_MAX, gn as toVercelToolInvocation, gt as VIEWER_FALLBACK_ATTR, h as CATALOG_PROMPT_MAX, hn as toUiSurfaceActionDispatch, ht as VIEWER_COMPONENT_ATTR, i as A2UI_SPEC_FORM_PATH, in as resolveChartFontSizes, it as UiComponentDef, j as FieldCondition, jt as chartSpecFromProps, k as EchartHandle, kt as applySuggestion, l as A2uiCatalogHandle, ln as shapeInteractionValue, lt as UiSpecDegradationCode, m as CATALOG_BUDGET_STAGE, mn as toOpenUiSpecLang, mt as VERCEL_INTERACTION_TOOL_NAME, n as A2UI_COMMON_TYPES, nn as renderMiniMarkdown, nt as UiCatalogPromptOptions, o as A2UI_VERSION, on as resolveInteractionTexts, ot as UiPreset, p as A2uiSpecMessageOptions, pn as toJsonRenderSpec, pt as UiSurfaceActionDispatch, q as SurfaceFormTexts, qt as interactionToUiSpec, r as A2UI_SPEC_ACTION, rn as renderRenderResult, rt as UiCatalogToolSourceOptions, s as A2uiCatalogComponent, sn as resolveSurfaceFormTexts, st as UiPresetName, t as A2UI_BASIC_CATALOG_ID, tn as renderMiniChart, tt as UiCatalogInput, u as A2uiComponentShape, un as toA2uiSpecMessages, ut as UiSpecIssue, v as ChartFontSizes, vn as uiPreset, vt as VercelToolInvocation, w as DEFAULT_SURFACE_FORM_TEXTS, wt as WEBSKILL_SURFACE_ACTION, x as ControlModel, xt as ViewerComponentsOptions, y as CollectedValues, yt as VercelUiBridge, z as NormalizedColumnWidths, zt as ensureStyles } from "./index-CU2md8R1.js";
1
+ import { Ot as UiSpecNode } from "./types-Btpdd1y--BcxQ10Fa.js";
2
+ import { Xn as buildRenderResult } from "./index-BDyXe-a5.js";
3
+ import { $ as UiActionDef, $t as qualifyFieldName, A as EvaluateFieldConditionOptions, At as buildA2uiCatalogDefinition, B as OpenUiRendererProps, Bt as evaluateFieldCondition, C as DEFAULT_INTERACTION_TEXTS, Ct as WEBSKILL_STYLES_CSS, D as DOCUMENT_COMPONENTS, Dt as a2uiComponentSchema, E as DESCRIBE_UI_PRESET_TOOL, Et as ZodRuntime, F as InteractionTexts, Ft as collectSpecActions, G as SPEC_TABLE_MIN_COLUMN_WIDTH, Gt as gaugePercent, H as PLANNED_INCREMENT, Ht as fromA2uiSurfaceAction, I as JsonRenderSpec, It as collectValues, J as SurfaceHostControlTexts, Jt as loadOpenUiPeers, K as SpecColumnMeta, Kt as interactionToFormModel, L as LoadedOpenUiPeers, Lt as createUiCatalogToolSource, M as FieldConditionResult, Mt as chartToTable, N as FormModel, Nt as collectFormScopes, O as DocumentComponentName, Ot as a2uiComponentShapes, P as InteractionSpecLabels, Pt as collectScopedValues, Q as UI_PRESET_NAMES, Qt as normalizeColumnWidths, R as MAX_CONDITION_DEPTH, Rt as defineUiCatalog, S as DEFAULT_CHART_FONT_SIZES, St as WEBSKILL_A2UI_CATALOG_ID, T as DEFAULT_SURFACE_HOST_CONTROL_TEXTS, Tt as WebFormBridge, U as RENDER_UI_TOOL, Ut as fromUiSurfaceActionDispatch, V as OpenUiRuntime, Vt as fromA2uiSpecAction, W as SPEC_TABLE_MIN_COLUMN_VAR, Wt as fromVercelToolResult, X as UI_CATALOG_PROMPT_BUDGET_BYTES, Xt as mountEchart, Y as UI_CATALOG_GROUPS, Yt as loadWebSkillLitCatalog, Z as UI_PRESETS, Zt as mountViewerComponents, _ as CHART_PALETTE, _n as uiCatalog, _t as VIEWER_PROPS_ATTR, a as A2UI_SURFACE_ACTION, an as resolveColumnWidths, at as UiFormScope, b as ColumnWidthsRejection, bt as ViewerComponentsHandle, c as A2uiCatalogDefinition, cn as resolveSurfaceHostControlTexts, ct as UiSpecDegradation, d as A2uiMessage, dn as toA2uiSurfaceAction, dt as UiSpecSanitization, en as renderBlocks, et as UiCatalog, f as A2uiSpecActionEvent, fn as toEchartsOption, ft as UiSpecValidation, g as CATALOG_SCHEMA_MAX, gn as toVercelToolInvocation, gt as VIEWER_FALLBACK_ATTR, h as CATALOG_PROMPT_MAX, hn as toUiSurfaceActionDispatch, ht as VIEWER_COMPONENT_ATTR, i as A2UI_SPEC_FORM_PATH, in as resolveChartFontSizes, it as UiComponentDef, j as FieldCondition, jt as chartSpecFromProps, k as EchartHandle, kt as applySuggestion, l as A2uiCatalogHandle, ln as shapeInteractionValue, lt as UiSpecDegradationCode, m as CATALOG_BUDGET_STAGE, mn as toOpenUiSpecLang, mt as VERCEL_INTERACTION_TOOL_NAME, n as A2UI_COMMON_TYPES, nn as renderMiniMarkdown, nt as UiCatalogPromptOptions, o as A2UI_VERSION, on as resolveInteractionTexts, ot as UiPreset, p as A2uiSpecMessageOptions, pn as toJsonRenderSpec, pt as UiSurfaceActionDispatch, q as SurfaceFormTexts, qt as interactionToUiSpec, r as A2UI_SPEC_ACTION, rn as renderRenderResult, rt as UiCatalogToolSourceOptions, s as A2uiCatalogComponent, sn as resolveSurfaceFormTexts, st as UiPresetName, t as A2UI_BASIC_CATALOG_ID, tn as renderMiniChart, tt as UiCatalogInput, u as A2uiComponentShape, un as toA2uiSpecMessages, ut as UiSpecIssue, v as ChartFontSizes, vn as uiPreset, vt as VercelToolInvocation, w as DEFAULT_SURFACE_FORM_TEXTS, wt as WEBSKILL_SURFACE_ACTION, x as ControlModel, xt as ViewerComponentsOptions, y as CollectedValues, yt as VercelUiBridge, z as NormalizedColumnWidths, zt as ensureStyles } from "./index-CaLsVI-m.js";
4
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, CATALOG_BUDGET_STAGE, CATALOG_PROMPT_MAX, CATALOG_SCHEMA_MAX, CHART_PALETTE, type ChartFontSizes, type CollectedValues, type ColumnWidthsRejection, type ControlModel, DEFAULT_CHART_FONT_SIZES, DEFAULT_INTERACTION_TEXTS, DEFAULT_SURFACE_FORM_TEXTS, DEFAULT_SURFACE_HOST_CONTROL_TEXTS, DESCRIBE_UI_PRESET_TOOL, DOCUMENT_COMPONENTS, type DocumentComponentName, 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, PLANNED_INCREMENT, RENDER_UI_TOOL, SPEC_TABLE_MIN_COLUMN_VAR, SPEC_TABLE_MIN_COLUMN_WIDTH, type SpecColumnMeta, type SurfaceFormTexts, type SurfaceHostControlTexts, 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 UiSpecDegradationCode, type UiSpecIssue, type UiSpecNode, type UiSpecSanitization, type UiSpecValidation, type UiSurfaceActionDispatch, VERCEL_INTERACTION_TOOL_NAME, VIEWER_COMPONENT_ATTR, VIEWER_FALLBACK_ATTR, VIEWER_PROPS_ATTR, type VercelToolInvocation, VercelUiBridge, type ViewerComponentsHandle, type ViewerComponentsOptions, 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, gaugePercent, interactionToFormModel, interactionToUiSpec, loadOpenUiPeers, loadWebSkillLitCatalog, mountEchart, mountViewerComponents, normalizeColumnWidths, qualifyFieldName, renderBlocks, renderMiniChart, renderMiniMarkdown, renderRenderResult, resolveChartFontSizes, resolveColumnWidths, resolveInteractionTexts, resolveSurfaceFormTexts, resolveSurfaceHostControlTexts, shapeInteractionValue, toA2uiSpecMessages, toA2uiSurfaceAction, toEchartsOption, toJsonRenderSpec, toOpenUiSpecLang, toUiSurfaceActionDispatch, toVercelToolInvocation, uiCatalog, uiPreset };
package/dist/ui.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { t as WebSkillError } from "./errors-BDZNpC13.js";
2
2
  import { t as buildRenderResult } from "./renderResult-D9Q-Vu2x.js";
3
- import { a as applySuggestion, c as DEFAULT_SURFACE_FORM_TEXTS, d as resolveInteractionTexts, f as resolveSurfaceFormTexts, i as renderMiniMarkdown, l as DEFAULT_SURFACE_HOST_CONTROL_TEXTS, m as shapeInteractionValue, n as chartToTable, o as collectValues, p as resolveSurfaceHostControlTexts, r as renderMiniChart, s as DEFAULT_INTERACTION_TEXTS, t as CHART_PALETTE, u as interactionToFormModel } from "./miniChart-owdCdaw-.js";
4
- import { C as chartSpecFromProps, E as toEchartsOption, S as DEFAULT_CHART_FONT_SIZES, T as resolveChartFontSizes, _ as CATALOG_BUDGET_STAGE, a as SPEC_TABLE_MIN_COLUMN_WIDTH, b as PLANNED_INCREMENT, c as MAX_CONDITION_DEPTH, d as collectScopedValues, f as qualifyFieldName, g as defineUiCatalog, h as uiCatalog, i as SPEC_TABLE_MIN_COLUMN_VAR, l as evaluateFieldCondition, m as UI_CATALOG_PROMPT_BUDGET_BYTES, n as interactionToUiSpec, o as normalizeColumnWidths, p as UI_CATALOG_GROUPS, r as toJsonRenderSpec, s as resolveColumnWidths, t as toOpenUiSpecLang, u as collectFormScopes, v as CATALOG_PROMPT_MAX, w as mountEchart, x as gaugePercent, y as CATALOG_SCHEMA_MAX } from "./openUiSpecLang-DuOCdw9G.js";
3
+ import { a as applySuggestion, c as DEFAULT_SURFACE_FORM_TEXTS, d as resolveInteractionTexts, f as resolveSurfaceFormTexts, i as renderMiniMarkdown, l as DEFAULT_SURFACE_HOST_CONTROL_TEXTS, m as shapeInteractionValue, n as chartToTable, o as collectValues, p as resolveSurfaceHostControlTexts, r as renderMiniChart, s as DEFAULT_INTERACTION_TEXTS, t as CHART_PALETTE, u as interactionToFormModel } from "./miniChart-lauNtZu8.js";
4
+ import { C as chartSpecFromProps, E as toEchartsOption, S as DEFAULT_CHART_FONT_SIZES, T as resolveChartFontSizes, _ as CATALOG_BUDGET_STAGE, a as SPEC_TABLE_MIN_COLUMN_WIDTH, b as PLANNED_INCREMENT, c as MAX_CONDITION_DEPTH, d as collectScopedValues, f as qualifyFieldName, g as defineUiCatalog, h as uiCatalog, i as SPEC_TABLE_MIN_COLUMN_VAR, l as evaluateFieldCondition, m as UI_CATALOG_PROMPT_BUDGET_BYTES, n as interactionToUiSpec, o as normalizeColumnWidths, p as UI_CATALOG_GROUPS, r as toJsonRenderSpec, s as resolveColumnWidths, t as toOpenUiSpecLang, u as collectFormScopes, v as CATALOG_PROMPT_MAX, w as mountEchart, x as gaugePercent, y as CATALOG_SCHEMA_MAX } from "./openUiSpecLang-B4QQ9Tfo.js";
5
5
 
6
6
  //#region ../ui/src/web/resultRenderer.ts
7
7
  /** RenderBlock → DOM(markdown/json/table/image/file/chart 六种) */
@@ -371,7 +371,7 @@ var WebFormBridge = class {
371
371
  title.textContent = model.title;
372
372
  form.appendChild(title);
373
373
  }
374
- if (model.message && model.kind !== "confirm" && model.kind !== "ask" && model.kind !== "select") {
374
+ if (model.message && model.kind !== "ask" && model.kind !== "select") {
375
375
  const message = doc.createElement("p");
376
376
  message.className = "webskill-form__message";
377
377
  message.textContent = model.message;
@@ -1224,7 +1224,7 @@ function fromA2uiSpecAction(event) {
1224
1224
  */
1225
1225
  async function loadWebSkillLitCatalog() {
1226
1226
  try {
1227
- const { webskillLitCatalog } = await import("./webskillLitCatalog-DSqVFQjK.js");
1227
+ const { webskillLitCatalog } = await import("./webskillLitCatalog-BBkQjKuN.js");
1228
1228
  return webskillLitCatalog();
1229
1229
  } catch (cause) {
1230
1230
  throw new WebSkillError("UI_UNAVAILABLE", "The WebSkill A2UI catalog is unavailable; install @a2ui/lit, @a2ui/web_core and lit to render catalog surfaces with A2UI", cause);
@@ -1,6 +1,6 @@
1
1
  import { t as WebSkillError } from "./errors-BDZNpC13.js";
2
2
  import { b as parseSkillMarkdown, i as buildCatalog, n as SkillDiscovery, t as validateSkills } from "./skill-CAJMsLod.js";
3
- import { f as WebSkillRuntime } from "./approval-BnLLCOG0.js";
3
+ import { f as WebSkillRuntime } from "./approval-CBPnGPIm.js";
4
4
 
5
5
  //#region ../runtime/src/facade/webSkillApi.ts
6
6
  /**
@@ -1,5 +1,5 @@
1
- import { c as DEFAULT_SURFACE_FORM_TEXTS, i as renderMiniMarkdown } from "./miniChart-owdCdaw-.js";
2
- import { C as chartSpecFromProps, h as uiCatalog, w as mountEchart } from "./openUiSpecLang-DuOCdw9G.js";
1
+ import { c as DEFAULT_SURFACE_FORM_TEXTS, i as renderMiniMarkdown } from "./miniChart-lauNtZu8.js";
2
+ import { C as chartSpecFromProps, h as uiCatalog, w as mountEchart } from "./openUiSpecLang-B4QQ9Tfo.js";
3
3
  import { WEBSKILL_A2UI_CATALOG_ID, a2uiComponentShapes, t as A2UI_CHILDREN_PROP } from "./ui.js";
4
4
  import { A2uiController, A2uiLitElement } from "@a2ui/lit/v0_9";
5
5
  import { Catalog } from "@a2ui/web_core/v0_9";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webskill/sdk",
3
- "version": "0.15.0",
3
+ "version": "0.17.0",
4
4
  "description": "WebSkill — browser/Node agent skill runtime (skills, tools, MCP, governance, UI)",
5
5
  "license": "MIT",
6
6
  "type": "module",