@webskill/sdk 0.28.1 → 0.30.0-next.1

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 (37) hide show
  1. package/dist/agent.d.ts +2 -2
  2. package/dist/agent.js +32 -766
  3. package/dist/{approval-5BmspsRi.js → approval-DnUytrkq.js} +6 -1
  4. package/dist/browser.d.ts +9 -9
  5. package/dist/browser.js +131 -38
  6. package/dist/controller.d.ts +88 -0
  7. package/dist/controller.js +3 -0
  8. package/dist/device-DMUgqNzr.js +1782 -0
  9. package/dist/{dist-CTsxblSD.js → dist-Ww6TChcf.js} +2 -2
  10. package/dist/{geometry-BXMPNuM6.js → geometry-1xQbK4hB.js} +14 -78
  11. package/dist/governance.d.ts +3 -3
  12. package/dist/{index-DJeYqzlE.d.ts → index-1ASrUwzn.d.ts} +2 -2
  13. package/dist/{index-CkauSvus.d.ts → index-Cj2HedfL.d.ts} +4 -3
  14. package/dist/{index-DU8sKyQq.d.ts → index-UbNuzd2a.d.ts} +4 -2
  15. package/dist/index.d.ts +4 -4
  16. package/dist/index.js +5 -6
  17. package/dist/{linkedDocument-0iiVPd5t.js → linkedDocument-GE-VV_Gj.js} +112 -2
  18. package/dist/mcp.d.ts +2 -2
  19. package/dist/node.d.ts +3 -3
  20. package/dist/node.js +2 -2
  21. package/dist/{openUiLibrary-BnhYUlqY.js → openUiLibrary-BjRDYyTe.js} +1 -1
  22. package/dist/{skillVersionStore-S4_HJ_Fl-DzZM_UIw.d.ts → skillVersionStore-S4_HJ_Fl-5K8jrAg_.d.ts} +1 -1
  23. package/dist/testing.d.ts +88 -2
  24. package/dist/testing.js +1287 -1
  25. package/dist/toolSource-DMCTnSVg.js +743 -0
  26. package/dist/types-BXRIoabj.js +76 -0
  27. package/dist/types-DmcXN3qR-Dy7ZDstc.d.ts +265 -0
  28. package/dist/{types-wKp3YBSM-167azx1H.d.ts → types-wKp3YBSM-CSeFUL9R.d.ts} +3 -2
  29. package/dist/ui-react.css +2687 -0
  30. package/dist/ui-react.d.ts +1045 -5
  31. package/dist/ui-react.js +5878 -820
  32. package/dist/ui-vue.d.ts +1 -1
  33. package/dist/ui.d.ts +3 -3
  34. package/dist/ui.js +1 -1
  35. package/dist/{webSkillApi-rX2e3SVB.js → webSkillApi-TeWPPFDn.js} +1 -1
  36. package/package.json +18 -4
  37. package/dist/kind-Dc8x0HWz.js +0 -110
@@ -0,0 +1,76 @@
1
+ //#region ../agent/src/perception/types.ts
2
+ /**
3
+ * 两种形状归一成帧列表;旧形状等价于一条 `frame:'self'`(FR-24.1)。
4
+ *
5
+ * **这是判别的单一来源。** 散在各处写 `'frames' in scope` 会让
6
+ * 「旧配置还等价吗」这个问题没有唯一答案。
7
+ * @experimental
8
+ */
9
+ function toFrameScopes(scope) {
10
+ if ("frames" in scope) return scope.frames;
11
+ return [{
12
+ frame: "self",
13
+ include: scope.include,
14
+ ...scope.exclude ? { exclude: scope.exclude } : {}
15
+ }];
16
+ }
17
+ /** 四个方向的规范清单;工具层校验与文案生成都从这里取,不各写一份 */
18
+ const SCROLL_DIRECTIONS = [
19
+ "up",
20
+ "down",
21
+ "left",
22
+ "right"
23
+ ];
24
+
25
+ //#endregion
26
+ //#region ../agent/src/pageAction/types.ts
27
+ /**
28
+ * 两种形状归一成帧列表;旧形状等价于一条 `frame:'self'`。
29
+ * 与感知侧的 `toFrameScopes` 一样,是本侧判别的**单一来源**。
30
+ * @experimental
31
+ */
32
+ function toActionFrameScopes(scope) {
33
+ if ("frames" in scope) return scope.frames;
34
+ return [{
35
+ frame: "self",
36
+ include: scope.include,
37
+ ...scope.exclude ? { exclude: scope.exclude } : {}
38
+ }];
39
+ }
40
+ /**
41
+ * 本版的操作集(FR-25.1 / 0.16.0 FR-13.6 / 0.18.0 FR-10.1 / 0.22.0 FR-17.1)。
42
+ * 导航只有 `back` 一个,且它**不接受地址**——可达面被浏览器历史封死(SC-1)。
43
+ *
44
+ * `drag` 只表达**起点与终点**,没有中途轨迹(0.22.0 FR-17.6 裁定,D64 就此撤销):
45
+ * 轨迹是实现细节不是意图,能画任意路径等于架空 AC-23.2,而且滑块验证码要的正是轨迹——
46
+ * 表达不了轨迹,这个动作就天然做不了人机验证绕过。
47
+ *
48
+ * 这些动作与既有几个走**同一条** policy 路径,
49
+ * 范围白名单、逐次确认、审计三条硬约束因此天然覆盖到它们——
50
+ * 前提是新动作不绕过 policy 直调执行器(AC-25.4 守这一点)。
51
+ * @experimental
52
+ */
53
+ const PAGE_ACTION_KINDS = [
54
+ "click",
55
+ "fill",
56
+ "submit",
57
+ "select",
58
+ "set",
59
+ "attach",
60
+ "scroll",
61
+ "hover",
62
+ "drag",
63
+ "back"
64
+ ];
65
+ /**
66
+ * `back` 的目标占位(0.16.0 分册 13 §4.1)。
67
+ *
68
+ * **模型不能表达它**:工具源在 `action === 'back'` 时拒绝任何 `ref` 入参。
69
+ * 它存在只为了让 `back` 不必改 `PageActionRequest.ref` 的类型——
70
+ * 改它会波及所有实现过 executor 的宓主。
71
+ * @experimental
72
+ */
73
+ const PAGE_DOCUMENT_REF = "@document";
74
+
75
+ //#endregion
76
+ export { toFrameScopes as a, SCROLL_DIRECTIONS as i, PAGE_DOCUMENT_REF as n, toActionFrameScopes as r, PAGE_ACTION_KINDS as t };
@@ -0,0 +1,265 @@
1
+ import { B as ExternalToolSource } from "./index-UbNuzd2a.js";
2
+ //#region ../controller/dist/types-DmcXN3qR.d.ts
3
+ //#region src/jsonRpc.d.ts
4
+ type JsonRpcId = string | number;
5
+ interface JsonRpcRequest {
6
+ jsonrpc: '2.0';
7
+ id?: JsonRpcId;
8
+ method?: string;
9
+ params?: unknown;
10
+ result?: unknown;
11
+ error?: {
12
+ code: number;
13
+ message: string;
14
+ data?: unknown;
15
+ };
16
+ }
17
+ interface WebSocketEventLike {
18
+ data: unknown;
19
+ }
20
+ interface WebSocketLike {
21
+ readonly readyState: number;
22
+ onopen?: ((event?: unknown) => void) | null;
23
+ onmessage?: ((event: WebSocketEventLike) => void) | null;
24
+ onerror?: ((event: unknown) => void) | null;
25
+ onclose?: ((event: {
26
+ code?: number;
27
+ reason?: string;
28
+ }) => void) | null;
29
+ send(data: string): void;
30
+ close(code?: number, reason?: string): void;
31
+ }
32
+ type WebSocketConstructor = new (url: string) => WebSocketLike;
33
+ //#endregion
34
+ //#region src/generated/protocol.d.ts
35
+ /** @experimental */
36
+ type ProtocolVersion = string;
37
+ /** @experimental */
38
+ type IsoDateTime = string;
39
+ /** @experimental */
40
+ type Base64Url = string;
41
+ /** @experimental */
42
+ type Origin = string;
43
+ /** @experimental */
44
+ type BoundedString = string;
45
+ /** @experimental */
46
+ interface InvocationMeta {
47
+ 'webskill/invocationId': string;
48
+ 'webskill/deviceEpoch'?: BoundedString;
49
+ 'webskill/sequence'?: number;
50
+ 'webskill/context'?: {
51
+ [k: string]: unknown | undefined;
52
+ };
53
+ [k: string]: unknown | undefined;
54
+ }
55
+ /** @experimental */
56
+ interface Principal {
57
+ displayName: BoundedString;
58
+ }
59
+ /** @experimental */
60
+ interface HelloParams {
61
+ /**
62
+ * @minItems 1
63
+ * @maxItems 8
64
+ */
65
+ protocolVersions: [ProtocolVersion] | [ProtocolVersion, ProtocolVersion] | [ProtocolVersion, ProtocolVersion, ProtocolVersion] | [ProtocolVersion, ProtocolVersion, ProtocolVersion, ProtocolVersion] | [ProtocolVersion, ProtocolVersion, ProtocolVersion, ProtocolVersion, ProtocolVersion] | [ProtocolVersion, ProtocolVersion, ProtocolVersion, ProtocolVersion, ProtocolVersion, ProtocolVersion] | [ProtocolVersion, ProtocolVersion, ProtocolVersion, ProtocolVersion, ProtocolVersion, ProtocolVersion, ProtocolVersion] | [ProtocolVersion, ProtocolVersion, ProtocolVersion, ProtocolVersion, ProtocolVersion, ProtocolVersion, ProtocolVersion, ProtocolVersion];
66
+ hostName: BoundedString;
67
+ hostVersion: BoundedString;
68
+ deviceFingerprint?: BoundedString;
69
+ }
70
+ /** @experimental */
71
+ interface HelloResult {
72
+ protocolVersion: ProtocolVersion;
73
+ controllerInstanceId: BoundedString;
74
+ controllerName: BoundedString;
75
+ /**
76
+ * @maxItems 128
77
+ */
78
+ excludedOrigins: Origin[];
79
+ }
80
+ /** @experimental */
81
+ interface PairStartParams {
82
+ publicKey: Base64Url;
83
+ deviceName: BoundedString;
84
+ }
85
+ /** @experimental */
86
+ interface PairStartResult {
87
+ sessionId: BoundedString;
88
+ code: string;
89
+ expiresAt: IsoDateTime;
90
+ }
91
+ /** @experimental */
92
+ interface PairApprovedParams {
93
+ sessionId: BoundedString;
94
+ approvalNonce: Base64Url;
95
+ controllerInstanceId: BoundedString;
96
+ principal: Principal;
97
+ /**
98
+ * @maxItems 128
99
+ */
100
+ capabilities: BoundedString[];
101
+ /**
102
+ * @maxItems 128
103
+ */
104
+ excludedOrigins: Origin[];
105
+ }
106
+ /** @experimental */
107
+ interface PairRejectedParams {
108
+ sessionId: BoundedString;
109
+ code: BoundedString;
110
+ }
111
+ /** @experimental */
112
+ interface PairConfirmParams {
113
+ sessionId: BoundedString;
114
+ accepted: boolean;
115
+ signature?: Base64Url;
116
+ }
117
+ /** @experimental */
118
+ interface PairConfirmResult {
119
+ grant?: BoundedString;
120
+ expiresAt?: IsoDateTime;
121
+ }
122
+ /** @experimental */
123
+ interface AuthPresentParams {
124
+ grant: BoundedString;
125
+ }
126
+ /** @experimental */
127
+ interface AuthPresentResult {
128
+ expiresAt: IsoDateTime;
129
+ }
130
+ /** @experimental */
131
+ type AuthChallengeParams = Record<string, never>;
132
+ /** @experimental */
133
+ interface AuthChallengeResult {
134
+ nonce: Base64Url;
135
+ expiresAt: IsoDateTime;
136
+ }
137
+ /** @experimental */
138
+ interface AuthRenewParams {
139
+ nonce: Base64Url;
140
+ signature: Base64Url;
141
+ }
142
+ /** @experimental */
143
+ interface AuthRenewResult {
144
+ grant: BoundedString;
145
+ expiresAt: IsoDateTime;
146
+ }
147
+ /** @experimental */
148
+ interface AuthRevokedParams {
149
+ reason: BoundedString;
150
+ }
151
+ /** @experimental */
152
+ interface OriginsParams {
153
+ /**
154
+ * @maxItems 128
155
+ */
156
+ excludedOrigins: Origin[];
157
+ }
158
+ /** @experimental */
159
+ interface HumanControlParams {
160
+ inControl: boolean;
161
+ at: IsoDateTime;
162
+ }
163
+ /** @experimental */
164
+ interface ReadyParams {
165
+ deviceEpoch: BoundedString;
166
+ writeHighWatermark: number;
167
+ hostVersion: BoundedString;
168
+ writeStateRecoverable: boolean;
169
+ }
170
+ /** @experimental */
171
+ type PingParams = Record<string, never>;
172
+ /** @experimental */
173
+ type PingResult = Record<string, never>;
174
+ /** @experimental */
175
+ interface ByeParams {
176
+ code: BoundedString;
177
+ message: BoundedString;
178
+ }
179
+ //#endregion
180
+ //#region src/device/types.d.ts
181
+ /** @experimental */
182
+ type ControllerDeviceState = 'idle' | 'connecting' | 'handshaking' | 'unpaired' | 'pairing' | 'awaiting-confirmation' | 'authorizing' | 'ready' | 'offline' | 'failed';
183
+ /** @experimental */
184
+ interface ControllerPairingRecord {
185
+ readonly controllerUrl: string;
186
+ readonly controllerInstanceId: string;
187
+ readonly controllerName: string;
188
+ readonly principalDisplayName: string;
189
+ readonly sessionId: string;
190
+ readonly grant: string;
191
+ readonly grantExpiresAt: string;
192
+ readonly declaredOrigins: readonly string[];
193
+ readonly pairedAt: string;
194
+ }
195
+ /** @experimental */
196
+ interface ControllerWriteState {
197
+ readonly epoch: string;
198
+ readonly highWatermark: number;
199
+ }
200
+ /** @experimental */
201
+ interface ControllerDeviceStore {
202
+ loadKeyPair(): Promise<CryptoKeyPair | undefined>;
203
+ saveKeyPair(keyPair: CryptoKeyPair): Promise<void>;
204
+ loadPairing(): Promise<ControllerPairingRecord | undefined>;
205
+ savePairing(record: ControllerPairingRecord | undefined): Promise<void>;
206
+ loadWriteState?(): Promise<ControllerWriteState | undefined>;
207
+ saveWriteState?(state: ControllerWriteState | undefined): Promise<void>;
208
+ clear(): Promise<void>;
209
+ }
210
+ /** @experimental */
211
+ interface ControllerPairingApproval {
212
+ readonly sessionId: string;
213
+ readonly approvalNonce: string;
214
+ readonly controllerInstanceId: string;
215
+ readonly controllerName: string;
216
+ readonly principal: Principal;
217
+ readonly capabilities: readonly string[];
218
+ readonly excludedOrigins: readonly string[];
219
+ }
220
+ /** @experimental */
221
+ interface ControllerPairingCode extends PairStartResult {
222
+ readonly deviceFingerprint: string;
223
+ }
224
+ /** @experimental */
225
+ interface ControllerAuditEvent {
226
+ readonly type: string;
227
+ readonly data: Record<string, unknown>;
228
+ }
229
+ /** @experimental */
230
+ interface ControllerDeviceOptions {
231
+ readonly url: string;
232
+ readonly deviceName: string;
233
+ readonly hostVersion: string;
234
+ readonly store: ControllerDeviceStore;
235
+ readonly tools: readonly ExternalToolSource[];
236
+ readonly excludedOrigins?: readonly string[];
237
+ readonly confirmPairing: (approval: ControllerPairingApproval) => Promise<boolean>;
238
+ readonly onStateChange?: (state: ControllerDeviceState) => void;
239
+ readonly onExcludedOriginsChange?: (origins: readonly string[]) => void;
240
+ readonly onError?: (error: {
241
+ code: string;
242
+ message: string;
243
+ }) => void;
244
+ readonly audit?: (event: ControllerAuditEvent) => void | Promise<void>;
245
+ readonly WebSocket?: WebSocketConstructor;
246
+ readonly now?: () => number;
247
+ }
248
+ /** @experimental */
249
+ interface ControllerDevice {
250
+ readonly state: ControllerDeviceState;
251
+ readonly humanInControl: boolean;
252
+ readonly writeStateRecoverable: boolean;
253
+ readonly excludedOrigins: readonly string[];
254
+ readonly pairingCode?: ControllerPairingCode;
255
+ readonly controllerInstanceId?: string;
256
+ readonly controllerOrigin: string;
257
+ connect(): Promise<void>;
258
+ disconnect(reason?: string): Promise<void>;
259
+ startPairing(): Promise<ControllerPairingCode>;
260
+ unpair(): Promise<void>;
261
+ setHumanInControl(inControl: boolean): void;
262
+ refreshTools(): Promise<void>;
263
+ }
264
+ //#endregion
265
+ export { PairConfirmResult as A, WebSocketLike as B, InvocationMeta as C, OriginsParams as D, Origin as E, PingResult as F, Principal as I, ProtocolVersion as L, PairStartParams as M, PairStartResult as N, PairApprovedParams as O, PingParams as P, ReadyParams as R, HumanControlParams as S, JsonRpcRequest as T, ControllerPairingCode as _, AuthRenewParams as a, HelloParams as b, Base64Url as c, ControllerAuditEvent as d, ControllerDevice as f, ControllerPairingApproval as g, ControllerDeviceStore as h, AuthPresentResult as i, PairRejectedParams as j, PairConfirmParams as k, BoundedString as l, ControllerDeviceState as m, AuthChallengeResult as n, AuthRenewResult as o, ControllerDeviceOptions as p, AuthPresentParams as r, AuthRevokedParams as s, AuthChallengeParams as t, ByeParams as u, ControllerPairingRecord as v, IsoDateTime as w, HelloResult as x, ControllerWriteState as y, WebSocketConstructor as z };
@@ -51,7 +51,7 @@ type WebSkillErrorCode = 'FS_NOT_FOUND' | 'FS_PATH_OUTSIDE_ROOT' | 'SKILL_NOT_FO
51
51
  /** 请求了若干格,一条都没写成——那不是部分成功,是整个填错了地方(0.24.0 FR-17.10) */
52
52
  'TEMPLATE_FILL_REJECTED' |
53
53
  /** 用户拒绝了这次工具调用(0.14.0 分册 20) */
54
- 'TOOL_DENIED';
54
+ 'TOOL_DENIED' | 'CONTROLLER_PROTOCOL_UNSUPPORTED' | 'CONTROLLER_MESSAGE_INVALID' | 'CONTROLLER_NOT_PAIRED' | 'CONTROLLER_PAIRING_REJECTED' | 'CONTROLLER_PAIRING_RATE_LIMITED' | 'CONTROLLER_CAPABILITY_MISSING' | 'CONTROLLER_HUMAN_IN_CONTROL' | 'CONTROLLER_INVOCATION_DUPLICATE';
55
55
  /**
56
56
  * 所有公开 API 抛出的结构化错误,code 供上层可编程处理
57
57
  * @stable
@@ -521,6 +521,7 @@ declare const FILE_MIME_TYPES: readonly ["application/pdf"];
521
521
  * 不走直通的 `file`:docx / xlsx / pptx 发给 provider 会被当成二进制垃圾。
522
522
  */
523
523
  declare const DOCX_MIME = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
524
+ declare const XLS_MIME = "application/vnd.ms-excel";
524
525
  declare const XLSX_MIME = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
525
526
  declare const PPTX_MIME = "application/vnd.openxmlformats-officedocument.presentationml.presentation";
526
527
  /** 文本类附件进模型上下文的字符上限(0.6.0) @experimental */
@@ -1276,4 +1277,4 @@ interface MemoryStore {
1276
1277
  transaction?<T>(scope: string, fn: (inner: MemoryStore) => Promise<T>): Promise<T>;
1277
1278
  }
1278
1279
  //#endregion
1279
- export { PPTX_MIME as $, exportSkills as $t, extractSkillCandidate as A, TrustedKey as At, DOCX_MIME as B, assertRemoteUrlAllowed as Bt, UiSpecActionCapability as C, verifySkillSignature as Cn, SkillMetadata as Ct, UiSpecSnapshot as D, SkillSource as Dt, UiSpecPatch as E, SkillSignature as Et, BINARY_EXTENSIONS as F, ValidationReport as Ft, FileStat as G, buildManifest as Gt, DiscoveryResult as H, atomicWriteBinary as Ht, CatalogRenderer as I, VerifyResult as It, FsTrustedKeyStore as J, classifyAttachment as Jt, FileSystemProvider as K, checkDependencyCycles as Kt, ChatAttachmentKind as L, WebSkillError as Lt, ATTACHMENT_TEXT_LIMIT as M, UNTRUSTED_LINE_LIMIT as Mt, ArchiveLimits as N, UiSpecNode as Nt, UiSurfaceActionRequest as O, SkillsLockfile as Ot, AttachmentTextInput as P, UnsignedPolicy as Pt, MemoryFS as Q, escapeXml as Qt, CryptoKeyLike as R, WebSkillErrorCode as Rt, UiBridge as S, verifyManifest as Sn, SkillManifest as St, UiSpecEvent as T, SkillReader as Tt, ExtractedDocumentFormat as U, atomicWriteText as Ut, DWG_MIME_TYPES as V, assertSafePathSegment as Vt, FILE_MIME_TYPES as W, buildCatalog as Wt, JsonSchema as X, detectSkillArchiveShape as Xt, IMAGE_MIME_TYPES as Y, computeDigest as Yt, MANIFEST_EXCLUDED_FILES as Z, detectSkillArchiveShapeFromFs as Zt, LlmToolSpec as _, signSkill as _n, SkillDocument as _t, InteractionOrigin as a, keyIdOf as an, SKILL_MANIFEST_FILE as at, RenderResultRequest as b, unzipWithLimits as bn, SkillLocation as bt, InteractionResponse as c, parseSkillMarkdown as cn, SKILL_PACK_FILE as ct, LlmContentPart as d, readSkillSignature as dn, SignatureVerdict as dt, extractedDocumentFormat as en, Page as et, LlmMessage as f, renderAvailableSkillsXml as fn, SkillArchiveDetection as ft, LlmToolCall as g, sanitizeUntrustedLine as gn, SkillDiscovery as gt, LlmTokenUsage as h, resolveInsideRoot as hn, SkillCatalogEntry as ht, FormField as i, jsonRenderer as in, SKILLS_LOCKFILE as it, ATOMIC_TMP_SUFFIX_PATTERN as j, TrustedKeyStore as jt, UiSurfaceActionResponse as k, TEXT_EXTENSIONS as kt, LlmClient as l, parseSkillPackManifest as ln, SKILL_SIGNATURE_FILE as lt, LlmStreamEvent as m, resolveArchiveLimits as mn, SkillCatalog as mt, ArtifactStore as n, isAtomicTempPath as nn, RemoteUrlPolicy as nt, InteractionPolicy as o, messageOf as on, SKILL_NAME_MAX_LENGTH as ot, LlmResponse as p, renderCatalogJson as pn, SkillArchiveShape as pt, FileWriteStream as q, checkSkillRules as qt, ChartSpec as r, isValidSkillName as rn, SIGNATURE_SCHEMA_VERSION as rt, InteractionRequest as s, normalizePath as sn, SKILL_NAME_PATTERN as st, Artifact as t, formatAttachmentText as tn, PageQuery as tt, LlmCompleteInput as u, readResponseWithLimit as un, SignatureAuditSink as ut, MemoryStore as v, signaturePayloadBytes as vn, SkillInstallSource as vt, UiSpecDrafts as w, xmlRenderer as wn, SkillPackManifest as wt, SkillCandidateMarker as x, validateSkills as xn, SkillManagerPort as xt, RenderBlock as y, stripArchiveRoot as yn, SkillIssue as yt, DEFAULT_ARCHIVE_LIMITS as z, XLSX_MIME as zt };
1280
+ export { PPTX_MIME as $, escapeXml as $t, extractSkillCandidate as A, TrustedKey as At, DOCX_MIME as B, XLS_MIME as Bt, UiSpecActionCapability as C, verifyManifest as Cn, SkillMetadata as Ct, UiSpecSnapshot as D, SkillSource as Dt, UiSpecPatch as E, SkillSignature as Et, BINARY_EXTENSIONS as F, ValidationReport as Ft, FileStat as G, buildCatalog as Gt, DiscoveryResult as H, assertSafePathSegment as Ht, CatalogRenderer as I, VerifyResult as It, FsTrustedKeyStore as J, checkSkillRules as Jt, FileSystemProvider as K, buildManifest as Kt, ChatAttachmentKind as L, WebSkillError as Lt, ATTACHMENT_TEXT_LIMIT as M, UNTRUSTED_LINE_LIMIT as Mt, ArchiveLimits as N, UiSpecNode as Nt, UiSurfaceActionRequest as O, SkillsLockfile as Ot, AttachmentTextInput as P, UnsignedPolicy as Pt, MemoryFS as Q, detectSkillArchiveShapeFromFs as Qt, CryptoKeyLike as R, WebSkillErrorCode as Rt, UiBridge as S, validateSkills as Sn, SkillManifest as St, UiSpecEvent as T, xmlRenderer as Tn, SkillReader as Tt, ExtractedDocumentFormat as U, atomicWriteBinary as Ut, DWG_MIME_TYPES as V, assertRemoteUrlAllowed as Vt, FILE_MIME_TYPES as W, atomicWriteText as Wt, JsonSchema as X, computeDigest as Xt, IMAGE_MIME_TYPES as Y, classifyAttachment as Yt, MANIFEST_EXCLUDED_FILES as Z, detectSkillArchiveShape as Zt, LlmToolSpec as _, sanitizeUntrustedLine as _n, SkillDocument as _t, InteractionOrigin as a, jsonRenderer as an, SKILL_MANIFEST_FILE as at, RenderResultRequest as b, stripArchiveRoot as bn, SkillLocation as bt, InteractionResponse as c, normalizePath as cn, SKILL_PACK_FILE as ct, LlmContentPart as d, readResponseWithLimit as dn, SignatureVerdict as dt, exportSkills as en, Page as et, LlmMessage as f, readSkillSignature as fn, SkillArchiveDetection as ft, LlmToolCall as g, resolveInsideRoot as gn, SkillDiscovery as gt, LlmTokenUsage as h, resolveArchiveLimits as hn, SkillCatalogEntry as ht, FormField as i, isValidSkillName as in, SKILLS_LOCKFILE as it, ATOMIC_TMP_SUFFIX_PATTERN as j, TrustedKeyStore as jt, UiSurfaceActionResponse as k, TEXT_EXTENSIONS as kt, LlmClient as l, parseSkillMarkdown as ln, SKILL_SIGNATURE_FILE as lt, LlmStreamEvent as m, renderCatalogJson as mn, SkillCatalog as mt, ArtifactStore as n, formatAttachmentText as nn, RemoteUrlPolicy as nt, InteractionPolicy as o, keyIdOf as on, SKILL_NAME_MAX_LENGTH as ot, LlmResponse as p, renderAvailableSkillsXml as pn, SkillArchiveShape as pt, FileWriteStream as q, checkDependencyCycles as qt, ChartSpec as r, isAtomicTempPath as rn, SIGNATURE_SCHEMA_VERSION as rt, InteractionRequest as s, messageOf as sn, SKILL_NAME_PATTERN as st, Artifact as t, extractedDocumentFormat as tn, PageQuery as tt, LlmCompleteInput as u, parseSkillPackManifest as un, SignatureAuditSink as ut, MemoryStore as v, signSkill as vn, SkillInstallSource as vt, UiSpecDrafts as w, verifySkillSignature as wn, SkillPackManifest as wt, SkillCandidateMarker as x, unzipWithLimits as xn, SkillManagerPort as xt, RenderBlock as y, signaturePayloadBytes as yn, SkillIssue as yt, DEFAULT_ARCHIVE_LIMITS as z, XLSX_MIME as zt };