@webskill/sdk 0.10.0 → 0.12.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 +3 -2
- package/dist/agent.js +3 -1102
- package/dist/browser.d.ts +258 -11
- package/dist/browser.js +763 -47
- package/dist/{catalogComponents-DTcYfpLQ-CcoOaz-Z.js → catalogComponents-BgAJN0p8-C3K8klJd.js} +508 -923
- package/dist/dist-DU9KDAuR.js +1468 -0
- package/dist/{dist-1OFC-zax.js → dist-DqcL6jKO.js} +668 -60
- package/dist/{dist-BViUeszk.js → dist-sdKFgERo.js} +956 -115
- package/dist/{echarts-DhNm2ene.js → echarts-De78wXqV.js} +599 -61
- package/dist/{eventTypes-s2uwAcLG-Go3l_dUe.js → eventTypes-FllCrX-Z-DNDeHWoG.js} +6 -2
- package/dist/governance.d.ts +7 -3
- package/dist/governance.js +1 -1
- package/dist/{index-B0QPLWPZ.d.ts → index-3fCHc1mQ.d.ts} +198 -11
- package/dist/{index-DtFdMKBX.d.ts → index-C9pzXLKy.d.ts} +366 -9
- package/dist/{index-BF4E1a9j.d.ts → index-DFhU1uks.d.ts} +286 -19
- package/dist/index.d.ts +4 -4
- package/dist/index.js +3 -3
- package/dist/mcp.d.ts +58 -7
- package/dist/mcp.js +124 -21
- package/dist/node.d.ts +3 -3
- package/dist/node.js +60 -4
- package/dist/{openUiLibrary-CIrV--Ad-B8zG_91e.js → openUiLibrary-BKXW7Iwx-DaymVubt.js} +3 -3
- package/dist/processSandboxEntry.js +8 -1
- package/dist/sandboxWorkerEntry.js +8 -1
- package/dist/{skillVersionStore-D-qHk9ZE-DBsYYCWn.d.ts → skillVersionStore-D-qHk9ZE-DheTIwAB.d.ts} +1 -1
- package/dist/testing.d.ts +1 -1
- package/dist/{types-CrRcT-LM-DZAp8sWv.d.ts → types-DLctJep_-B5G4uk2u.d.ts} +22 -5
- package/dist/ui-react.d.ts +13 -4
- package/dist/ui-react.js +93 -259
- package/dist/ui-vue.d.ts +1 -1
- package/dist/ui-vue.js +2 -2
- package/dist/ui.d.ts +4 -4
- package/dist/ui.js +3 -3
- package/dist/{webskillLitCatalog-BJrphK0y-SGmRXaaO.js → webskillLitCatalog-D_zCqeQF-C9lrvvMr.js} +135 -16
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { B as JsonSchema, I as DiscoveryResult, O as UiSurfaceActionRequest, R as FileSystemProvider, S as UiBridge, St as ValidationReport, T as UiSpecEvent, Tt as WebSkillErrorCode, U as Page, W as PageQuery, _ as LlmToolSpec, at as SkillDiscovery, b as RenderResultRequest, bt as UiSpecNode, d as LlmContentPart, dt as SkillManifest, f as LlmMessage, g as LlmToolCall, h as LlmTokenUsage, i as FormField, it as SkillCatalogEntry, l as LlmClient, m as LlmStreamEvent, n as ArtifactStore, o as InteractionPolicy, ot as SkillDocument, p as LlmResponse, r as ChartSpec, rt as SkillCatalog, s as InteractionRequest, st as SkillInstallSource, t as Artifact, u as LlmCompleteInput, v as MemoryStore, w as UiSpecDrafts, y as RenderBlock } from "./types-
|
|
1
|
+
import { B as JsonSchema, G as RemoteUrlPolicy, I as DiscoveryResult, O as UiSurfaceActionRequest, R as FileSystemProvider, S as UiBridge, St as ValidationReport, T as UiSpecEvent, Tt as WebSkillErrorCode, U as Page, W as PageQuery, _ as LlmToolSpec, at as SkillDiscovery, b as RenderResultRequest, bt as UiSpecNode, d as LlmContentPart, dt as SkillManifest, f as LlmMessage, g as LlmToolCall, h as LlmTokenUsage, i as FormField, it as SkillCatalogEntry, l as LlmClient, m as LlmStreamEvent, n as ArtifactStore, o as InteractionPolicy, ot as SkillDocument, p as LlmResponse, r as ChartSpec, rt as SkillCatalog, s as InteractionRequest, st as SkillInstallSource, t as Artifact, u as LlmCompleteInput, v as MemoryStore, w as UiSpecDrafts, y as RenderBlock } from "./types-DLctJep_-B5G4uk2u.js";
|
|
2
2
|
//#region ../runtime/dist/index.d.ts
|
|
3
3
|
//#region src/llm/parts.d.ts
|
|
4
4
|
/** 纯文本消息内容的构造快捷方式(引擎内部绝大多数消息仍是纯文本) */
|
|
@@ -22,6 +22,45 @@ type TextualToolContent = {
|
|
|
22
22
|
text?: string;
|
|
23
23
|
data?: unknown;
|
|
24
24
|
};
|
|
25
|
+
/**
|
|
26
|
+
* 参与 `toolResultMaxBytes` 截断的分片类型(FR-23.3)。**判据的单一来源。**
|
|
27
|
+
*
|
|
28
|
+
* 白名单而不是黑名单:黑名单式下新加的分片默认「参与截断」,
|
|
29
|
+
* 漏改一处就会把一份 PDF 截成坏文件、把 docx 文本腰斩,而且没有任何报错。
|
|
30
|
+
* 白名单式下新分片默认**不参与**,要受文本预算约束必须显式加进来。
|
|
31
|
+
* @experimental
|
|
32
|
+
*/
|
|
33
|
+
declare const TEXT_BUDGETED_CONTENT_TYPES: ReadonlySet<string>;
|
|
34
|
+
/**
|
|
35
|
+
* `file` 分片的上限(FR-23.4),量的是**实际上线的 base64 长度**而不是解码后的字节——
|
|
36
|
+
* provider 的限额算的是请求载荷。
|
|
37
|
+
*
|
|
38
|
+
* 2026-08-14 查证的三家上限:
|
|
39
|
+
* | provider | 上限 | 出处 |
|
|
40
|
+
* | --------- | --------------------------------------- | ----------------------- |
|
|
41
|
+
* | Anthropic | **32 MB**(**整个请求载荷**)、600 页 | PDF support / 请求大小 |
|
|
42
|
+
* | OpenAI | 单文件 50 MB,全部文件合计 50 MB | File inputs / 使用须知 |
|
|
43
|
+
* | Gemini | 50 MB 或 1000 页(内联与 Files API 同) | 文档理解 / 技术详情 |
|
|
44
|
+
*
|
|
45
|
+
* 取最小值 Anthropic 的 32 MB。它是**整个请求**的额度,不是文档单独的额度,
|
|
46
|
+
* 所以再留出余量给系统提示词、catalog(约 34 KB)、历史消息与其余分片。
|
|
47
|
+
* 25 000 KB base64 ≈ 18.75 MB 原始 PDF。取 1024 的整数倍:设置界面按 KB 展示,
|
|
48
|
+
* 十进制的 24 000 000 会显示成 23437.5 这种读不出来的数。
|
|
49
|
+
*/
|
|
50
|
+
declare const DEFAULT_MAX_DOCUMENT_BYTES = 25600000;
|
|
51
|
+
/**
|
|
52
|
+
* `document-text` 分片的上限(FR-23.4)。
|
|
53
|
+
*
|
|
54
|
+
* 约束来自**上下文窗口**而不是请求大小:抽出来的文本要整段进上下文。
|
|
55
|
+
* 按英文约 4 字节/token 折算,500 KB ≈ 128K token,占 200K 窗口的多半,
|
|
56
|
+
* 给历史消息与模型的回答留下其余。
|
|
57
|
+
*/
|
|
58
|
+
declare const DEFAULT_MAX_DOCUMENT_TEXT_BYTES = 512000;
|
|
59
|
+
/**
|
|
60
|
+
* 单次 fetchData 结果的字节上限(分册 16,FR-16.6):1000 KB。
|
|
61
|
+
* 结构化数据不是文档,量级差一个数量级;超出**只拒不截**——截断的 JSON 解不出来。
|
|
62
|
+
*/
|
|
63
|
+
declare const DEFAULT_MAX_DATA_SOURCE_BYTES = 1024000;
|
|
25
64
|
/**
|
|
26
65
|
* 工具结果的内容分片(0.6.0 §1.1)。
|
|
27
66
|
* `image` 分片不参与 `toolResultMaxBytes` 截断——那份预算是给文本的,
|
|
@@ -35,6 +74,27 @@ type ToolContent = TextualToolContent | {
|
|
|
35
74
|
data: string;
|
|
36
75
|
id: string;
|
|
37
76
|
text?: undefined;
|
|
77
|
+
} |
|
|
78
|
+
/** 原样直通给模型的文档(PDF 等),受 `maxDocumentBytes` 约束 @experimental */
|
|
79
|
+
{
|
|
80
|
+
type: 'file';
|
|
81
|
+
mimeType: string;
|
|
82
|
+
data: string;
|
|
83
|
+
name?: string;
|
|
84
|
+
id: string;
|
|
85
|
+
text?: undefined;
|
|
86
|
+
} |
|
|
87
|
+
/**
|
|
88
|
+
* 从文档里抽出来的文本(docx 等),受 `maxDocumentTextBytes` 约束。
|
|
89
|
+
* 它**就是**文本,但与普通工具文本分开计预算:混算会出现
|
|
90
|
+
* 「PDF 读全了、Word 只读了一半」这种无法解释的差异。
|
|
91
|
+
* @experimental
|
|
92
|
+
*/
|
|
93
|
+
{
|
|
94
|
+
type: 'document-text';
|
|
95
|
+
text: string;
|
|
96
|
+
name?: string;
|
|
97
|
+
id: string;
|
|
38
98
|
};
|
|
39
99
|
interface ToolResult {
|
|
40
100
|
ok: boolean;
|
|
@@ -51,9 +111,25 @@ interface ScriptExecutionContext {
|
|
|
51
111
|
skillName: string;
|
|
52
112
|
runId: string;
|
|
53
113
|
readReference(relativePath: string): Promise<string>;
|
|
114
|
+
/** 读技能自己的 `assets/`;与 readReference 共用路径断言,不得跨目录 @experimental */
|
|
115
|
+
readAsset?(relativePath: string): Promise<string>;
|
|
116
|
+
/** `assets/` 的典型内容是图片/字体/数据包,纯文本出口不够 @experimental */
|
|
117
|
+
readAssetBinary?(relativePath: string): Promise<Uint8Array>;
|
|
118
|
+
/**
|
|
119
|
+
* 写 run 产物。`options.metadata` 由技能自定义并随产物索引落盘;
|
|
120
|
+
* 约定键 `resultCard: false` 表示该产物不出自动下载卡(分册 18)。
|
|
121
|
+
* 必须是可 JSON 序列化的 plain object,否则抛 `VALIDATION_FAILED` 且产物不落盘。
|
|
122
|
+
*/
|
|
54
123
|
writeArtifact(path: string, content: string | Uint8Array, options?: {
|
|
55
124
|
mimeType?: string;
|
|
125
|
+
metadata?: Record<string, unknown>;
|
|
56
126
|
}): Promise<Artifact>;
|
|
127
|
+
/**
|
|
128
|
+
* 按**宿主声明的 sourceId** 取数(FR-16.1)。脚本给不了 URL——
|
|
129
|
+
* 目标由宿主在 `DataSourceDef.target` 里写死,这就是「唯一授权面」。
|
|
130
|
+
* 宿主未装配即不存在(同 readAsset / confirm)。 @experimental
|
|
131
|
+
*/
|
|
132
|
+
fetchData?(sourceId: string, params?: Record<string, unknown>): Promise<unknown>;
|
|
57
133
|
/** 脚本主动请求人在环确认;策略见 InteractionPolicy.confirmations */
|
|
58
134
|
confirm?(message: string): Promise<boolean>;
|
|
59
135
|
/** 宿主侧降级 warning 出口(网络阻断等;引擎接线到 run.warning trace) */
|
|
@@ -329,14 +405,18 @@ declare const READ_SKILL_FILE_TOOL: ToolDefinition;
|
|
|
329
405
|
//#endregion
|
|
330
406
|
//#region src/tools/askUserTool.d.ts
|
|
331
407
|
declare const ASK_USER_TOOL_NAME = "ask_user";
|
|
408
|
+
/** 一次 `ask_user` 能收的字段数上限(FR-11.3 裁决值),可由 `AgentLoopConfig` 覆盖 */
|
|
409
|
+
declare const ASK_USER_MAX_FIELDS = 20;
|
|
410
|
+
/** `fields[].type`:`FormField['type']` 的八种。`multi-select` 不在其中——它的值是数组(FR-11.1b) */
|
|
411
|
+
declare const ASK_USER_FIELD_TYPES: readonly ["text", "number", "boolean", "select", "textarea", "file", "password", "date"];
|
|
332
412
|
declare const ASK_USER_INPUT_SCHEMA: JsonSchema;
|
|
333
413
|
/** 内建工具:LLM 信息不足时主动向用户提问;仅当配置了 UiBridge 时注册 */
|
|
334
414
|
declare const ASK_USER_TOOL: ToolDefinition;
|
|
335
415
|
//#endregion
|
|
336
416
|
//#region src/tools/scriptContext.d.ts
|
|
337
417
|
/**
|
|
338
|
-
* 脚本执行上下文:只暴露 readReference / writeArtifact
|
|
339
|
-
*
|
|
418
|
+
* 脚本执行上下文:只暴露 readReference / readAsset / readAssetBinary / writeArtifact
|
|
419
|
+
* 四个显式能力,不暴露 fs 本体(沙箱语义,对齐 deferred-items D1)。
|
|
340
420
|
*/
|
|
341
421
|
declare function createScriptContext(deps: {
|
|
342
422
|
fs: FileSystemProvider;
|
|
@@ -346,6 +426,12 @@ declare function createScriptContext(deps: {
|
|
|
346
426
|
runId: string;
|
|
347
427
|
/** 提供时暴露 context.confirm(由引擎按交互策略实现) */
|
|
348
428
|
confirm?: (message: string) => Promise<boolean>;
|
|
429
|
+
/**
|
|
430
|
+
* 提供时暴露 context.fetchData(引擎按 DataSourcePolicy 实现,FR-16.1)。
|
|
431
|
+
* 宿主没声明数据源就整个键不存在——脚本 `typeof context.fetchData` 即可探测,
|
|
432
|
+
* 不给「存在但永远失败」的假出口。
|
|
433
|
+
*/
|
|
434
|
+
fetchData?: (sourceId: string, params?: Record<string, unknown>) => Promise<unknown>;
|
|
349
435
|
/** 宿主侧降级 warning 出口(网络阻断等;引擎接线到 run.warning trace) */
|
|
350
436
|
onWarning?: (message: string) => void;
|
|
351
437
|
/** writeArtifact 创建产物后的回调(引擎记录新产物 ID,执行后单次 listArtifacts 过滤) */
|
|
@@ -416,6 +502,11 @@ type InteractLifecycleData = {
|
|
|
416
502
|
/** complete / fail:终态原因 */
|
|
417
503
|
interface TerminalLifecycleData {
|
|
418
504
|
reason: RunTerminationReason;
|
|
505
|
+
/**
|
|
506
|
+
* 失败时的具体说明(`RuntimeRun.error.message`)。`reason` 只有七种取值,
|
|
507
|
+
* 说不出「哪个上限、哪个模型、本轮带了文档」这类唯一能指导下一步的信息。
|
|
508
|
+
*/
|
|
509
|
+
detail?: string;
|
|
419
510
|
}
|
|
420
511
|
interface LifecycleEventBase {
|
|
421
512
|
runId: string;
|
|
@@ -502,6 +593,23 @@ interface AgentLoopConfig {
|
|
|
502
593
|
* 不设上限的话,模型会一路猜到 maxTurns 用完,用户等到最后拿到的还是一句失败。
|
|
503
594
|
*/
|
|
504
595
|
maxUnknownToolRetries?: number;
|
|
596
|
+
/**
|
|
597
|
+
* 一次 `ask_user` 能收的字段数上限(默认 20,FR-11.3)。超出即拒绝整次调用,
|
|
598
|
+
* **不截断**——截断会让模型以为字段全收到了。
|
|
599
|
+
*/
|
|
600
|
+
askUserMaxFields?: number;
|
|
601
|
+
/**
|
|
602
|
+
* `file` 分片的 base64 长度上限(默认 `DEFAULT_MAX_DOCUMENT_BYTES`,FR-23.4)。
|
|
603
|
+
* 超出即**拒绝并说明**:截断一份 PDF 等于给模型一份坏文件。
|
|
604
|
+
*/
|
|
605
|
+
maxDocumentBytes?: number;
|
|
606
|
+
/**
|
|
607
|
+
* `document-text` 分片的字节上限(默认 `DEFAULT_MAX_DOCUMENT_TEXT_BYTES`,FR-23.4)。
|
|
608
|
+
* 同样拒绝而不截断:截半份内容给模型,而它不知道自己少看了什么。
|
|
609
|
+
*/
|
|
610
|
+
maxDocumentTextBytes?: number;
|
|
611
|
+
/** `read_linked_document` 的出站准入策略;与脚本取数共用同一个判定(AC-G23) */
|
|
612
|
+
remoteUrl?: RemoteUrlPolicy;
|
|
505
613
|
}
|
|
506
614
|
/** 技能状态拦截 port(治理装配;无注入默认全放行) */
|
|
507
615
|
interface SkillStateGuard {
|
|
@@ -999,16 +1107,39 @@ type BridgeRequest = {
|
|
|
999
1107
|
kind: 'readReference';
|
|
1000
1108
|
id: string;
|
|
1001
1109
|
path: string;
|
|
1110
|
+
} | {
|
|
1111
|
+
kind: 'readAsset';
|
|
1112
|
+
id: string;
|
|
1113
|
+
path: string;
|
|
1114
|
+
} |
|
|
1115
|
+
/** 回值走 `number[]`:进程沙箱的桥是 JSON stdio,与 writeArtifact 同口径 */
|
|
1116
|
+
{
|
|
1117
|
+
kind: 'readAssetBinary';
|
|
1118
|
+
id: string;
|
|
1119
|
+
path: string;
|
|
1002
1120
|
} | {
|
|
1003
1121
|
kind: 'writeArtifact';
|
|
1004
1122
|
id: string;
|
|
1005
1123
|
path: string;
|
|
1006
1124
|
content: string | number[];
|
|
1007
1125
|
mimeType?: string;
|
|
1126
|
+
/**
|
|
1127
|
+
* 技能声明的产物 metadata(分册 18)。**不可信载荷**,故声明为 `unknown`:
|
|
1128
|
+
* 形状判定在 `createScriptContext.writeArtifact`(唯一汇聚点,DV-10),
|
|
1129
|
+
* 在这里拒绝只能 `return undefined`,而那会丢掉请求 id 使脚本挂到超时。
|
|
1130
|
+
*/
|
|
1131
|
+
metadata?: unknown;
|
|
1008
1132
|
} | {
|
|
1009
1133
|
kind: 'confirm';
|
|
1010
1134
|
id: string;
|
|
1011
1135
|
message: string;
|
|
1136
|
+
} |
|
|
1137
|
+
/** 取数只传宿主声明的 sourceId;**脚本给不了 URL**(FR-16.2 的唯一授权面) */
|
|
1138
|
+
{
|
|
1139
|
+
kind: 'fetchData';
|
|
1140
|
+
id: string;
|
|
1141
|
+
sourceId: string;
|
|
1142
|
+
params?: Record<string, unknown>;
|
|
1012
1143
|
};
|
|
1013
1144
|
interface BridgeResponse {
|
|
1014
1145
|
id: string;
|
|
@@ -1026,11 +1157,18 @@ interface BridgeResponse {
|
|
|
1026
1157
|
type CapabilityMode = boolean | 'require-approval';
|
|
1027
1158
|
/** 授权粒度:'once-per-run'(默认,run 内同类能力批准一次)/ 'every-call'(每次调用都问) */
|
|
1028
1159
|
type ApprovalScope = 'once-per-run' | 'every-call';
|
|
1029
|
-
/**
|
|
1160
|
+
/** 能力独立开关;缺省全开,显式 false 即关闭(TOOL_UNSUPPORTED) */
|
|
1030
1161
|
interface BridgeCapabilities {
|
|
1031
1162
|
readReference?: CapabilityMode;
|
|
1163
|
+
/** 同时管 readAsset 与 readAssetBinary;与 readReference 分开是为了审计可区分 */
|
|
1164
|
+
readAsset?: CapabilityMode;
|
|
1032
1165
|
writeArtifact?: CapabilityMode;
|
|
1033
1166
|
confirm?: CapabilityMode;
|
|
1167
|
+
/**
|
|
1168
|
+
* 脚本取数(FR-16.1)。**缺省关**——与其余能力相反:
|
|
1169
|
+
* 它会出网,缺省开等于让任何技能默认拥有出站能力。
|
|
1170
|
+
*/
|
|
1171
|
+
fetchData?: CapabilityMode;
|
|
1034
1172
|
}
|
|
1035
1173
|
/** 入站校验:非法 kind / 缺 id / 缺字段 → undefined(调用方忽略并记 warning) */
|
|
1036
1174
|
declare function parseBridgeRequest(data: unknown): BridgeRequest | undefined;
|
|
@@ -1086,8 +1224,8 @@ declare function normalizeToolError(code: unknown, message: string): {
|
|
|
1086
1224
|
};
|
|
1087
1225
|
//#endregion
|
|
1088
1226
|
//#region src/sandbox/approval.d.ts
|
|
1089
|
-
/**
|
|
1090
|
-
type BridgeCapability = 'readReference' | 'writeArtifact' | 'confirm';
|
|
1227
|
+
/** 桥消息对应的四类能力(readAsset 同时覆盖文本与二进制读取) */
|
|
1228
|
+
type BridgeCapability = 'readReference' | 'readAsset' | 'writeArtifact' | 'confirm' | 'fetchData';
|
|
1091
1229
|
/** allowed 放行;denied 用户拒绝/无法询问;disabled 能力关闭(两者都回 TOOL_UNSUPPORTED,仅消息不同) */
|
|
1092
1230
|
type ApprovalDecision = 'allowed' | 'denied' | 'disabled';
|
|
1093
1231
|
/**
|
|
@@ -1143,6 +1281,116 @@ interface TodoTraceEvent {
|
|
|
1143
1281
|
*/
|
|
1144
1282
|
declare function extractTodoTraceEvents(data: unknown): TodoTraceEvent[];
|
|
1145
1283
|
//#endregion
|
|
1284
|
+
//#region src/tools/linkedDocument.d.ts
|
|
1285
|
+
/**
|
|
1286
|
+
* 读取页面上链接指向的文档(分册 22)。
|
|
1287
|
+
*
|
|
1288
|
+
* 与脚本侧的 `fetchData` **分工明确**,两者不得互相蚕食:
|
|
1289
|
+
* - `fetchData`:技能脚本按宿主声明的 sourceId 取**业务数据**,目标宿主写死;
|
|
1290
|
+
* - 本工具:模型读**页面上出现的链接**指向的文档,目标来自感知结果。
|
|
1291
|
+
*
|
|
1292
|
+
* 共同点是准入判定必须共用 `assertRemoteUrlAllowed`(AC-G23),不得各写一套。
|
|
1293
|
+
*/
|
|
1294
|
+
/** 宿主提供的文档取数实现;不注入即整个工具不注册 @experimental */
|
|
1295
|
+
interface LinkedDocumentReader {
|
|
1296
|
+
/**
|
|
1297
|
+
* 宿主页面的 origin,用于同源判定。
|
|
1298
|
+
*
|
|
1299
|
+
* **缺省即一律按跨源处理**(DV-10):拿不到 origin 时保守到「每次都问」,
|
|
1300
|
+
* 而不是保守到「都不问」。Node 宿主没有页面 origin,因此总是要确认。
|
|
1301
|
+
*/
|
|
1302
|
+
readonly origin?: string;
|
|
1303
|
+
read(url: string): Promise<{
|
|
1304
|
+
mimeType: string;
|
|
1305
|
+
bytes: Uint8Array;
|
|
1306
|
+
}>;
|
|
1307
|
+
}
|
|
1308
|
+
declare const READ_LINKED_DOCUMENT_TOOL_NAME = "read_linked_document";
|
|
1309
|
+
/**
|
|
1310
|
+
* 能直接给模型用的 MIME。其余一律拒绝并列出这份清单——
|
|
1311
|
+
* 「尽力而为地猜格式」会让模型收到乱码却以为读成功了。
|
|
1312
|
+
*/
|
|
1313
|
+
declare const SUPPORTED_DOCUMENT_MIME: {
|
|
1314
|
+
readonly pdf: "application/pdf";
|
|
1315
|
+
readonly docx: "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
|
|
1316
|
+
};
|
|
1317
|
+
/** docx 抽取实现由宿主注入(`DOMParser` 是浏览器 API,Node 没有;备案 D55) */
|
|
1318
|
+
type DocxTextExtractor = (bytes: Uint8Array) => Promise<string>;
|
|
1319
|
+
/** 引擎侧固定流程(§2.3)用到的错误文案,集中一处便于判据引用 */
|
|
1320
|
+
declare const UNSUPPORTED_DOCUMENT_MESSAGE: string;
|
|
1321
|
+
/**
|
|
1322
|
+
* 内建工具:读页面链接指向的文档。
|
|
1323
|
+
*
|
|
1324
|
+
* **始终注册**(只要宿主装配了 reader):docx 与纯文本这条路对所有模型成立。
|
|
1325
|
+
* PDF 目标在模型不支持文档时**取数后拒绝**,而不是入口就拦 ——
|
|
1326
|
+
* 入口拦会误伤 docx,它抽成文本后根本不需要文档能力。
|
|
1327
|
+
*/
|
|
1328
|
+
declare const READ_LINKED_DOCUMENT_TOOL: ToolDefinition;
|
|
1329
|
+
//#endregion
|
|
1330
|
+
//#region src/engine/toolStep.d.ts
|
|
1331
|
+
/**
|
|
1332
|
+
* 一次工具调用的**未截断**参数留存(分册 30 / FR-30.2)。
|
|
1333
|
+
*
|
|
1334
|
+
* 刻意不并入 `RunTraceFile`:那是 `@stable` 且不留扩展位的契约,
|
|
1335
|
+
* 每个 run 都写、所有宿主都读;为一个默认关闭的能力抬它的 schemaVersion
|
|
1336
|
+
* 不划算(D-30-1 裁为 B)。
|
|
1337
|
+
* @stable
|
|
1338
|
+
*/
|
|
1339
|
+
interface ToolStepRecord {
|
|
1340
|
+
runId: string;
|
|
1341
|
+
sessionId: string;
|
|
1342
|
+
callId: string;
|
|
1343
|
+
/** LLM 可见的工具名 */
|
|
1344
|
+
tool: string;
|
|
1345
|
+
at: string;
|
|
1346
|
+
/** 脱敏后的参数:被脱敏的键仍在,值不在 */
|
|
1347
|
+
args: Record<string, unknown>;
|
|
1348
|
+
/** 被脱敏掉的字段路径(如 `credentials.token`),供确认卡与审计 */
|
|
1349
|
+
redacted: readonly string[];
|
|
1350
|
+
/** 超出体积上限:`args` 为空对象,生成器据此拒绝该步骤 */
|
|
1351
|
+
truncated?: true;
|
|
1352
|
+
/** 未脱敏字段的依据(AC-30.6d) */
|
|
1353
|
+
trust: ToolStepTrust;
|
|
1354
|
+
}
|
|
1355
|
+
/**
|
|
1356
|
+
* 参数留存的信任层级。
|
|
1357
|
+
* - `reviewed`:本仓自带工具源,schema 标注已被审查
|
|
1358
|
+
* - `host-trusted`:外部来源,但宿主显式声明信任(`declaredBy` 记声明标识)
|
|
1359
|
+
* - `untrusted`:缺省——未标注字段一律按敏感处理
|
|
1360
|
+
* @stable
|
|
1361
|
+
*/
|
|
1362
|
+
type ToolStepTrust = {
|
|
1363
|
+
tier: 'reviewed' | 'host-trusted';
|
|
1364
|
+
declaredBy?: string;
|
|
1365
|
+
} | {
|
|
1366
|
+
tier: 'untrusted';
|
|
1367
|
+
};
|
|
1368
|
+
/** 只读侧:生成器只需要「这个会话有哪些步骤」 @stable */
|
|
1369
|
+
interface ToolStepReader {
|
|
1370
|
+
listBySession(sessionId: string): Promise<ToolStepRecord[]>;
|
|
1371
|
+
}
|
|
1372
|
+
/** @stable */
|
|
1373
|
+
interface ToolStepStore extends ToolStepReader {
|
|
1374
|
+
append(record: ToolStepRecord): Promise<void>;
|
|
1375
|
+
}
|
|
1376
|
+
/**
|
|
1377
|
+
* 按会话分文件的 append-only JSONL 留存。
|
|
1378
|
+
*
|
|
1379
|
+
* 分文件维度取会话而非 run:读取侧唯一的查询就是「这个会话的全部步骤」,
|
|
1380
|
+
* 按 run 分会让一次生成要开 N 个文件。
|
|
1381
|
+
*/
|
|
1382
|
+
declare class FsToolStepStore implements ToolStepStore {
|
|
1383
|
+
#private;
|
|
1384
|
+
constructor(deps: {
|
|
1385
|
+
root: string;
|
|
1386
|
+
fs: FileSystemProvider;
|
|
1387
|
+
/** 留存失败不阻断对话:默认降级为告警 */
|
|
1388
|
+
onError?: (error: unknown, record: ToolStepRecord) => void;
|
|
1389
|
+
});
|
|
1390
|
+
append(record: ToolStepRecord): Promise<void>;
|
|
1391
|
+
listBySession(sessionId: string): Promise<ToolStepRecord[]>;
|
|
1392
|
+
}
|
|
1393
|
+
//#endregion
|
|
1146
1394
|
//#region src/engine/external.d.ts
|
|
1147
1395
|
/**
|
|
1148
1396
|
* 外部工具来源(runtime 扩展点,mcp 包实现并插入)。
|
|
@@ -1161,6 +1409,28 @@ interface ExternalToolSource {
|
|
|
1161
1409
|
systemPrompt?(): Promise<string | undefined>;
|
|
1162
1410
|
canHandle(llmToolName: string): boolean;
|
|
1163
1411
|
call(llmToolName: string, args: Record<string, unknown>): Promise<ToolResult>;
|
|
1412
|
+
/**
|
|
1413
|
+
* 参数留存的信任判定(分册 30 / FR-30.3)。**不实现 ⇒ 该源全部工具按 untrusted 处理**(参数全脱敏)。
|
|
1414
|
+
*
|
|
1415
|
+
* 字段级敏感性只写在 `inputSchema` 的 `x-webskill-sensitive` 标注里,本方法不重复表达它,
|
|
1416
|
+
* 否则会有两份事实源。本方法回答的是另一个问题:**这一次调用的参数整体能不能按审查过的处理**。
|
|
1417
|
+
*
|
|
1418
|
+
* 传入 `args` 是为了让「敏感与否取决于运行期目标」的工具能如实回答——
|
|
1419
|
+
* 例如 `act_on_page` 的填写内容是否敏感,取决于目标是不是密码类控件,
|
|
1420
|
+
* 静态 schema 看不出来。这类工具应在敏感目标上返回 `untrusted`(整调用全脱敏),
|
|
1421
|
+
* 而不是把字段永久标成敏感、让所有正常填写也一并丢失。
|
|
1422
|
+
*/
|
|
1423
|
+
argCaptureTrust?(llmToolName: string, args: Record<string, unknown>): ToolStepTrust | undefined;
|
|
1424
|
+
/**
|
|
1425
|
+
* 留存前把入参补成自解释的形状(分册 30 / FR-30.2)。**不实现即原样留存。**
|
|
1426
|
+
*
|
|
1427
|
+
* 给的是 `act_on_page` 这类工具一个出口:它的 `ref` 是本次感知产出的不透明句柄,
|
|
1428
|
+
* 换一次运行就失效,只留它等于留了一个指向不存在东西的引用。工具源在这里补上
|
|
1429
|
+
* 目标的角色与可访问名,生成的技能才说得出「填进哪个框」。
|
|
1430
|
+
*
|
|
1431
|
+
* 补出来的字段照样过脱敏:它们不在 `inputSchema` 里,因此在 `untrusted` 层同样被抹掉。
|
|
1432
|
+
*/
|
|
1433
|
+
captureArgs?(llmToolName: string, args: Record<string, unknown>): Record<string, unknown> | undefined;
|
|
1164
1434
|
}
|
|
1165
1435
|
/** 外部技能提供者(页面动态技能等;技能随来源生灭,不持久化) */
|
|
1166
1436
|
interface ExternalSkillProvider {
|
|
@@ -1278,6 +1548,27 @@ interface AgentLoopDeps {
|
|
|
1278
1548
|
schemaInferer?: SchemaInferer;
|
|
1279
1549
|
/** 缺省 MemoryArtifactStore */
|
|
1280
1550
|
artifactStore?: ArtifactStore;
|
|
1551
|
+
/**
|
|
1552
|
+
* 宿主声明的数据源取数入口(分册 16)。注入后脚本上下文才有 `fetchData`。
|
|
1553
|
+
* 策略本体(`DataSourcePolicy`)住在 `@webskill/agent`,它依赖 runtime,
|
|
1554
|
+
* 所以这里只收一个函数,不收策略对象——否则依赖方向反了。
|
|
1555
|
+
*/
|
|
1556
|
+
fetchData?: (sourceId: string, params?: Record<string, unknown>) => Promise<unknown>;
|
|
1557
|
+
/**
|
|
1558
|
+
* 页面链接文档的读取实现(分册 22)。不注入即 `read_linked_document` 不注册——
|
|
1559
|
+
* 模型连这个工具的存在都看不到,而不是看得到再被拒。
|
|
1560
|
+
*/
|
|
1561
|
+
linkedDocuments?: LinkedDocumentReader;
|
|
1562
|
+
/** docx → 文本;`DOMParser` 是浏览器 API,因此由宿主注入(Node 侧无此能力,备案 D55) */
|
|
1563
|
+
docxExtractor?: DocxTextExtractor;
|
|
1564
|
+
/** 文档读取留痕出口(FR-22.6);不注入即不留痕,装配方要自己承担这个选择 */
|
|
1565
|
+
documentAudit?: {
|
|
1566
|
+
append(event: {
|
|
1567
|
+
type: string;
|
|
1568
|
+
target: string;
|
|
1569
|
+
data?: Record<string, unknown>;
|
|
1570
|
+
}): Promise<unknown>;
|
|
1571
|
+
};
|
|
1281
1572
|
fs: FileSystemProvider;
|
|
1282
1573
|
/** name → skillRoot(来自发现结果) */
|
|
1283
1574
|
skillIndex: Map<string, string>;
|
|
@@ -1317,6 +1608,11 @@ interface AgentLoopDeps {
|
|
|
1317
1608
|
skillOutcomeReporter?: SkillOutcomeReporter;
|
|
1318
1609
|
/** D3:interrupt 点快照存储(无配置则行为与现状完全一致) */
|
|
1319
1610
|
snapshotStore?: RunSnapshotStore;
|
|
1611
|
+
/**
|
|
1612
|
+
* 工具调用的完整参数留存(分册 30)。**不注入即不留存**——
|
|
1613
|
+
* AC-30.15 因此是结构性的:不是「有个判断没走进去」,是根本没有写入方。
|
|
1614
|
+
*/
|
|
1615
|
+
toolSteps?: ToolStepStore;
|
|
1320
1616
|
}
|
|
1321
1617
|
/**
|
|
1322
1618
|
* 多轮 Agent 循环。
|
|
@@ -1357,10 +1653,18 @@ declare class AgentLoop {
|
|
|
1357
1653
|
* @stable
|
|
1358
1654
|
*/
|
|
1359
1655
|
declare const DEFAULT_LOOP_LIMITS: {
|
|
1360
|
-
readonly maxTurns:
|
|
1656
|
+
readonly maxTurns: 1000;
|
|
1361
1657
|
readonly totalTimeoutMs: 3600000;
|
|
1362
1658
|
readonly toolTimeoutMs: 600000;
|
|
1659
|
+
readonly maxHistoryMessages: 1000;
|
|
1363
1660
|
};
|
|
1661
|
+
/**
|
|
1662
|
+
* 工具参数留存的单次体积上限(分册 30 / FR-30.2)。**全仓唯一来源**(S8)。
|
|
1663
|
+
*
|
|
1664
|
+
* 超限时不留半截参数,整条标记为 `truncated`。
|
|
1665
|
+
* @stable
|
|
1666
|
+
*/
|
|
1667
|
+
declare const MAX_TOOL_STEP_ARG_BYTES = 32768;
|
|
1364
1668
|
/**
|
|
1365
1669
|
* 触顶类失败(`RUN_TIMEOUT` / `RUN_MAX_TURNS_EXCEEDED`)记进 `run.failed`
|
|
1366
1670
|
* 轨迹事件 `data` 的结构化细节:程序化消费方据此判断是哪个上限、当时的生效值,
|
|
@@ -1417,12 +1721,34 @@ interface WebSkillRuntimeDeps {
|
|
|
1417
1721
|
}) => Promise<void>;
|
|
1418
1722
|
/** D3:interrupt 点快照存储(配置后 interrupted run 可 resumeRun 恢复) */
|
|
1419
1723
|
snapshotStore?: RunSnapshotStore;
|
|
1724
|
+
/** 工具调用的完整参数留存(分册 30);**不注入即不留存** */
|
|
1725
|
+
toolSteps?: ToolStepStore;
|
|
1420
1726
|
/** 技能状态拦截 port(治理 SkillStatePolicy.toSkillStateGuard 装配;无注入默认全放行) */
|
|
1421
1727
|
skillStateGuard?: SkillStateGuard;
|
|
1422
1728
|
/** D3 激活期完整性校验 port(治理 SkillStatePolicy.toSkillIntegrityGuard 装配;无注入即关闭) */
|
|
1423
1729
|
skillIntegrityGuard?: SkillIntegrityGuard;
|
|
1424
1730
|
/** F1 技能执行失败上报 port(治理 SkillStatePolicy.toSkillOutcomeReporter 装配;无注入即关闭) */
|
|
1425
1731
|
skillOutcomeReporter?: SkillOutcomeReporter;
|
|
1732
|
+
/**
|
|
1733
|
+
* 宿主声明的数据源取数入口(分册 16);注入后脚本上下文才有 `fetchData`。
|
|
1734
|
+
* 通常由 `@webskill/agent` 的 `DataSourcePolicy.fetchData` 绑定过来。
|
|
1735
|
+
*/
|
|
1736
|
+
fetchData?: (sourceId: string, params?: Record<string, unknown>) => Promise<unknown>;
|
|
1737
|
+
/**
|
|
1738
|
+
* 读页面链接指向的文档(分册 22);不注入即 `read_linked_document` 不注册。
|
|
1739
|
+
* 实现住在 `@webskill/browser`(docx 抽取要 `DOMParser`),由宿主装配。
|
|
1740
|
+
*/
|
|
1741
|
+
linkedDocuments?: LinkedDocumentReader;
|
|
1742
|
+
/** docx → 文本;不注入即 Word 文档明确报「本环境不支持」(FR-23.8) */
|
|
1743
|
+
docxExtractor?: DocxTextExtractor;
|
|
1744
|
+
/** 文档读取留痕出口(FR-22.6) */
|
|
1745
|
+
documentAudit?: {
|
|
1746
|
+
append(event: {
|
|
1747
|
+
type: string;
|
|
1748
|
+
target: string;
|
|
1749
|
+
data?: Record<string, unknown>;
|
|
1750
|
+
}): Promise<unknown>;
|
|
1751
|
+
};
|
|
1426
1752
|
}
|
|
1427
1753
|
/**
|
|
1428
1754
|
* runtime 门面:组合 discovery / router / agent loop / lifecycle
|
|
@@ -1445,7 +1771,7 @@ declare class WebSkillRuntime {
|
|
|
1445
1771
|
* 多会话:session 对象的 run(prompt) 跨 run 延续消息历史(同一 session 对话上下文连续)。
|
|
1446
1772
|
* 既有 runtime.run(prompt) 保持无状态单次语义不变。
|
|
1447
1773
|
* 同 handle 并发 run 经 per-handle 队列串行化(防历史 last-writer-wins 丢轮次);
|
|
1448
|
-
* maxHistoryMessages
|
|
1774
|
+
* maxHistoryMessages(默认取 `DEFAULT_LOOP_LIMITS`)超出时滚动裁剪中段(保留首尾;边界对齐 tool 契约)。
|
|
1449
1775
|
*/
|
|
1450
1776
|
createSession(options?: {
|
|
1451
1777
|
sessionId?: string;
|
|
@@ -1526,6 +1852,10 @@ interface RunTraceSummary {
|
|
|
1526
1852
|
interface RunTraceFilter {
|
|
1527
1853
|
/** 状态精确匹配 */
|
|
1528
1854
|
status?: string;
|
|
1855
|
+
/**
|
|
1856
|
+
* 会话精确匹配。刻意不走 `search`:子串匹配会让 `sess-1` 命中 `sess-10`。
|
|
1857
|
+
*/
|
|
1858
|
+
sessionId?: string;
|
|
1529
1859
|
/** 大小写不敏感子串:匹配 runId 或任一激活技能名 */
|
|
1530
1860
|
search?: string;
|
|
1531
1861
|
limit?: number;
|
|
@@ -1754,4 +2084,31 @@ declare class FsSessionStore<TMessage = unknown> implements SessionStore<TMessag
|
|
|
1754
2084
|
delete(id: string): Promise<void>;
|
|
1755
2085
|
}
|
|
1756
2086
|
//#endregion
|
|
1757
|
-
|
|
2087
|
+
//#region src/engine/toolStepRedaction.d.ts
|
|
2088
|
+
/**
|
|
2089
|
+
* 参数敏感标注关键字(分册 30 / FR-30.3)。
|
|
2090
|
+
*
|
|
2091
|
+
* 不用 `format: 'password'`:`format` 是 JSON Schema 的规范关键字,provider 侧
|
|
2092
|
+
* 可能据其做转换或校验,而且它只对 `type: 'string'` 有意义,对象型凭据标不了。
|
|
2093
|
+
* `x-` 前缀走 `JsonSchema` 的索引签名,不与任何规范语义抢占。
|
|
2094
|
+
*/
|
|
2095
|
+
declare const SENSITIVE_ANNOTATION = "x-webskill-sensitive";
|
|
2096
|
+
interface RedactedArgs {
|
|
2097
|
+
/** 脱敏后的参数:被脱敏的键仍在,值为 `null` */
|
|
2098
|
+
args: Record<string, unknown>;
|
|
2099
|
+
/** 被脱敏掉的字段路径,点号分隔;数组元素用 `field[0]` */
|
|
2100
|
+
redacted: string[];
|
|
2101
|
+
truncated?: true;
|
|
2102
|
+
}
|
|
2103
|
+
/**
|
|
2104
|
+
* 分层脱敏(FR-30.3)——**全仓唯一实现**。
|
|
2105
|
+
*
|
|
2106
|
+
* 1. `untrusted` → 所有字段脱敏;
|
|
2107
|
+
* 2. `reviewed` / `host-trusted` → 逐字段走 schema,标注为敏感的脱敏。
|
|
2108
|
+
*
|
|
2109
|
+
* 标注为敏感的字段在**任何**层级都脱敏:信任声明说的是「未标注的可以留」,
|
|
2110
|
+
* 不是「标注了也能留」。
|
|
2111
|
+
*/
|
|
2112
|
+
declare function redactToolStepArgs(args: Record<string, unknown>, schema: JsonSchema | undefined, trust: ToolStepTrust): RedactedArgs;
|
|
2113
|
+
//#endregion
|
|
2114
|
+
export { LifecycleHook as $, isUnsupportedRunSnapshot as $n, SkillRouter as $t, DocxTextExtractor as A, UserProfileImportDiff as An, validateUiSpecNode as Ar, RunTraceSummary as At, FsRunTraceStore as B, createScriptContext as Bn, ScriptExecutionContext as Bt, CapabilityApproval as C, USER_PROFILE_NO_INVENTION_RULE as Cn, summarizeRunUsage as Cr, RunSnapshotStore as Ct, DEFAULT_MAX_DOCUMENT_BYTES as D, UserProfile as Dn, toRecordDigests as Dr, RunTraceFilter as Dt, DEFAULT_MAX_DATA_SOURCE_BYTES as E, UnsupportedRunSnapshot as En, toLlmToolSpec as Er, RunTraceFile as Et, ExternalToolSource as F, WebSkillRuntimeDeps as Fn, RuntimeSessionHandle as Ft, GoogleGenAiClientConfig as G, extractTodoTraceEvents as Gn, SerializingMemoryStore as Gt, FsToolStepStore as H, diffUserProfile as Hn, SealOptions as Ht, FS_SESSION_PAGE_SIZE as I, appendBehaviorRecords as In, SENSITIVE_ANNOTATION as It, InstalledSkillManifest as J, formatSkillScriptManifest as Jn, SessionRecord as Jt, HookRunner as K, extractUiSpecEvents as Kn, SessionListPage as Kt, FsArtifactStore as L, applyUserProfileImport as Ln, SESSION_SCHEMA_VERSION as Lt, EventBus as M, VercelToolSpec as Mn, RuntimePhase as Mt, ExecuteLifecycleData as N, WebSkillApi as Nn, RuntimeRun as Nt, DEFAULT_MAX_DOCUMENT_TEXT_BYTES as O, UserProfileEntry as On, toVercelToolSpecs as Or, RunTraceMetrics as Ot, ExternalSkillProvider as P, WebSkillRuntime as Pn, RuntimeSession as Pt, LifecycleEventInit as Q, isNetworkAllowed as Qn, SkillOutcomeReporter as Qt, FsMemoryStore as R, bridgeError as Rn, SUPPORTED_DOCUMENT_MIME as Rt, BridgeResponse as S, USER_PROFILE_KEY as Sn, sealToolCallPairs as Sr, RunSnapshotListEntry as St, DEFAULT_LOOP_LIMITS as T, USER_PROFILE_REFINE_PROMPT as Tn, textParts as Tr, RunToolCall as Tt, FullDisclosureRouter as U, exportUserProfile as Un, SealRecord as Ut, FsSessionStore as V, createWebSkillApi as Vn, ScriptExecutor as Vt, GoogleGenAiClient as W, extractChartSpec as Wn, SealResult as Wt, InteractLifecycleData as X, fromVercelStreamPart as Xn, SkillFailureReport as Xt, IntegrityVerdict as Y, fromVercelResult as Yn, SessionStore as Yt, LifecycleEvent as Z, interruptedToolResult as Zn, SkillIntegrityGuard as Zt, BehaviorRecordKind as _, TraceEvent as _n, resolveToolName as _r, RouteLifecycleData as _t, ASK_USER_TOOL as a, TerminalLifecycleData as an, normalizeErrorCode as ar, OpenAiCompatibleClient as at, BridgeCapability as b, UNSUPPORTED_DOCUMENT_MESSAGE as bn, schemaToForm as br, RunResult as bt, AgentLoop as c, ToolContent as cn, parseBridgeRequest as cr, READ_LINKED_DOCUMENT_TOOL as ct, AnthropicClient as d, ToolResult as dn, readBehaviorRecords as dr, READ_SKILL_FILE_TOOL as dt, SkillScriptDescriptor as en, listSkillScripts as er, LifecycleHookContext as et, AnthropicClientConfig as f, ToolStepReader as fn, readProfileEntries as fr, READ_SKILL_FILE_TOOL_NAME as ft, BehaviorRecord as g, TraceClock as gn, renderUserProfileContext as gr, RefineUserProfileInput as gt, BEHAVIOR_RECORDS_KEY as h, ToolStepTrust as hn, refineUserProfile as hr, RedactedArgs as ht, ASK_USER_MAX_FIELDS as i, TEXT_BUDGETED_CONTENT_TYPES as in, networkUrlHost as ir, NetworkPolicy as it, EMPTY_USER_PROFILE as j, UserProfileLimits as jn, RunUsageSummary as jt, DEFAULT_USER_PROFILE_LIMITS as k, UserProfileExport as kn, validateUiSpecEvent as kr, RunTraceStore as kt, AgentLoopConfig as l, ToolDefinition as ln, parseUserProfileExport as lr, READ_LINKED_DOCUMENT_TOOL_NAME as lt, ApprovalScope as m, ToolStepStore as mn, redactToolStepArgs as mr, RUN_TRACE_SCHEMA_VERSION as mt, ASK_USER_FIELD_TYPES as n, SkillStateGuard as nn, mergeProfileEntries as nr, LinkedDocumentReader as nt, ASK_USER_TOOL_NAME as o, TextualToolContent as on, normalizeToolContent as or, OpenAiCompatibleClientConfig as ot, ApprovalDecision as p, ToolStepRecord as pn, readUserProfile as pr, RUN_SNAPSHOT_SCHEMA_VERSION as pt, HookRunnerOptions as q, findUnpairedToolCalls as qn, SessionMeta as qt, ASK_USER_INPUT_SCHEMA as r, SkillSuccessReport as rn, networkPolicyLibSource as rr, MAX_TOOL_STEP_ARG_BYTES as rt, ActivateLifecycleData as s, TodoTraceEvent as sn, normalizeToolError as sr, ProgressiveRouter as st, ALLOWED_TOOLS_EXCLUSION_REASON as t, SkillScriptSchemaSource as tn, mergeCatalogEntries as tr, LifecycleListener as tt, AgentLoopDeps as u, ToolResolution as un, partsToText as ur, READ_SKILL_FILE_INPUT_SCHEMA as ut, BehaviorScene as v, TraceEventType as vn, sampleBehaviorRecords as vr, RouteResult as vt, CapabilityMode as w, USER_PROFILE_PROMPT_HEADER as wn, summarizeToolCalls as wr, RunTerminationReason as wt, BridgeRequest as x, USER_PROFILE_EXPORT_VERSION as xn, scriptToolName as xr, RunSnapshot as xt, BridgeCapabilities as y, TraceRecorder as yn, schemaSourceLabel as yr, RunLimitErrorDetails as yt, FsRunSnapshotStore as z, buildRenderResult as zn, SchemaInferer as zt };
|