@webskill/sdk 0.20.0 → 0.22.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/abnfDiagram-O67JEVCF-DtYFjfqO.js +109 -0
- package/dist/agent.d.ts +3 -3
- package/dist/agent.js +1171 -73
- package/dist/{approval-Bbh_Apwg.js → approval-DWQlDPbY.js} +527 -29
- package/dist/arc-8U_6NQWm.js +130 -0
- package/dist/architecture-7GRP2DOG-RTw1wpAq.js +4 -0
- package/dist/architectureDiagram-NJMV4G6O-XmmXrJAK.js +7473 -0
- package/dist/array-DQfpQNY8.js +8 -0
- package/dist/blockDiagram-BEXU5L5S-D4yjnCD1.js +2582 -0
- package/dist/browser.d.ts +1129 -48
- package/dist/browser.js +3562 -278
- package/dist/c4Diagram-YGBWAQC7-BLmA_JSd.js +3668 -0
- package/dist/channel-CZxxLrG7.js +9 -0
- package/dist/chunk-2Q5K7J3B-Ck03gkFR.js +21 -0
- package/dist/chunk-3FUC2YCW-tr6jmbQf.js +530 -0
- package/dist/chunk-5DYCD2WN-Bt97YGTd.js +58 -0
- package/dist/chunk-5VM5RSS4-BBxa48HL.js +21 -0
- package/dist/chunk-6AEJRKK7-JXK89I-O.js +14 -0
- package/dist/chunk-742MDFTN-CPmgCGwC.js +466 -0
- package/dist/chunk-7INBJB4K-C9jq9o66.js +6552 -0
- package/dist/chunk-7M6MHVWA-BrKCWcR1.js +4894 -0
- package/dist/chunk-7PRAP22T-BHED6GVs.js +95 -0
- package/dist/chunk-DUW6YSOI-DoZj78PO.js +19 -0
- package/dist/chunk-FOHPRMQF-Dkbp819z.js +27189 -0
- package/dist/chunk-GNY47TPC-Bpvq1T49.js +87 -0
- package/dist/chunk-GTNCS2PH-CLmh4I2c.js +686 -0
- package/dist/chunk-GWA4HPMP-B6vN3fkL.js +95 -0
- package/dist/chunk-J5ZVWO5B-Bi_Pcobw.js +26 -0
- package/dist/chunk-JWPE2WC7-D1rC79GS.js +12 -0
- package/dist/chunk-LNGE3PJU-D5OIoe3Z.js +2582 -0
- package/dist/chunk-MBY4JIJT-C34L7a4f.js +2276 -0
- package/dist/chunk-NETBCI7D-Cg84k8N8.js +321 -0
- package/dist/chunk-O7XYJQB3-B6K0KOSL.js +8846 -0
- package/dist/chunk-UA2S7LBM-DxHM29_K.js +612 -0
- package/dist/chunk-WEXAMYUT-Ba6jFWhB.js +33 -0
- package/dist/chunk-XXDRQBXY-DPbSy4kg.js +12 -0
- package/dist/chunk-Y2CYZVJY-U3QOMqrW.js +15 -0
- package/dist/chunk-Z7XXMR3K-oLg1h8F3.js +1038 -0
- package/dist/chunk-ZIGJFQKS-DqEFBuHR.js +2215 -0
- package/dist/classDiagram-v2-NBCMYWYE-BqnOWIUt.js +3845 -0
- package/dist/cose-bilkent-JH36ORCC-C0dTAHVK.js +4270 -0
- package/dist/cynefin-OW5HDTMX-B2QvgEQj.js +4 -0
- package/dist/cynefinDiagram-VND7K2PF-yAWc6Z3W.js +479 -0
- package/dist/cytoscape.esm-C64mRh9B.js +28325 -0
- package/dist/dagre-6A5THRUB-D0w2W27v.js +4816 -0
- package/dist/defaultLocale-B_EoOkSF.js +249 -0
- package/dist/diagram-22UHCM2B-DvgzhUzP.js +6115 -0
- package/dist/diagram-3UASUU5V-DWgUB-ef.js +795 -0
- package/dist/diagram-ATOU4E4O-P1olqwIs.js +553 -0
- package/dist/diagram-CDSNMT55-BUlZuLUe.js +402 -0
- package/dist/diagram-MLGK6HIB-6w5qmkGt.js +186 -0
- package/dist/diagram-MPIPVDR6-DEFiSo8o.js +289 -0
- package/dist/dist-UajCDt3n.js +92 -0
- package/dist/ebnfDiagram-ZINNZB2B-CI8liCfR.js +123 -0
- package/dist/elk-276RUBZZ-3SvW6OAK.js +90034 -0
- package/dist/erDiagram-OPXOYQCR-CPTbKhwP.js +2301 -0
- package/dist/{eventTypes-CwciaqCU.js → eventTypes-DcTQXSV1.js} +7 -1
- package/dist/eventmodeling-NTZA5JFV-BlyuqGp0.js +4 -0
- package/dist/flowDiagram-KWPJA3E3-CcUJ6HbV.js +18 -0
- package/dist/ganttDiagram-FUAMR5RP-31UjY0KK.js +3939 -0
- package/dist/geometry-wx5ZTYzi.js +715 -0
- package/dist/gitGraph-4MIJSDKK-ChdVlrk7.js +4 -0
- package/dist/gitGraphDiagram-X574FWY7-DKuxJymB.js +1153 -0
- package/dist/governance.d.ts +9 -3
- package/dist/governance.js +1 -1
- package/dist/graphlib-tk9gQYuN.js +4194 -0
- package/dist/{index-ad11wflI.d.ts → index-BiO9_XRk.d.ts} +2 -2
- package/dist/{index-DQ3-6GFu.d.ts → index-CjwdZQOS.d.ts} +945 -8
- package/dist/{index-BDyXe-a5.d.ts → index-YPd8ZSEa.d.ts} +413 -7
- package/dist/index.d.ts +4 -4
- package/dist/index.js +47 -41
- package/dist/info-A6RAGUB7-CxRAt9S9.js +4 -0
- package/dist/infoDiagram-VRGFBTTK-pRspGfjZ.js +25 -0
- package/dist/init-CMOIWdg-.js +16 -0
- package/dist/ishikawaDiagram-OU5B5YK6-DKerAPAg.js +975 -0
- package/dist/journeyDiagram-ZHPQQLJL-C4MK-YO5.js +1227 -0
- package/dist/kanban-definition-PNTS6WVX-BqsZpMXx.js +1244 -0
- package/dist/katex-BcRRvyh_.js +26465 -0
- package/dist/kind-Dc8x0HWz.js +110 -0
- package/dist/line-LgV8iVMV.js +48 -0
- package/dist/linear-BWKR0Tqd.js +393 -0
- package/dist/linkedDocument-CIuh_Yp0.js +416 -0
- package/dist/mcp.d.ts +2 -2
- package/dist/{memoryArtifactStore-D6dLeY55.js → memoryArtifactStore-Bs7glPqm.js} +14 -0
- package/dist/mermaid-parser.core-pYR5siSx.js +754 -0
- package/dist/mermaid.core-DMtwGCHy.js +1756 -0
- package/dist/mindmap-definition-NLK3R4M7-CXbD-myG.js +1312 -0
- package/dist/node.d.ts +8 -3
- package/dist/node.js +79 -4
- package/dist/{openUiLibrary-b0i7F_oZ.js → openUiLibrary-B7j3rLrm.js} +1 -1
- package/dist/{openUiSpecLang-CLXJEeRU.js → openUiSpecLang-BSYYnjay.js} +1 -1
- package/dist/ordinal-CxA6GHQS.js +84 -0
- package/dist/packet-AYTQ26CC-BOm08cxl.js +4 -0
- package/dist/path-C27Z2Bjv.js +106 -0
- package/dist/pegDiagram-GJSIUBJH-BLGJOewQ.js +115 -0
- package/dist/pie-WAS4IAKB-Dvg7glpk.js +4 -0
- package/dist/pieDiagram-5QR66LMP-laoaV_PB.js +298 -0
- package/dist/processSandboxEntry.js +5 -0
- package/dist/quadrantDiagram-O4NWA36T-Db_wFBkT.js +2236 -0
- package/dist/radar-RG4KPBEZ-BZDaTu06.js +4 -0
- package/dist/railroad-74A4TZTK-C-UhjkOy.js +4 -0
- package/dist/railroad-abnf-HS5TGJTU-dUKVA4OS.js +4 -0
- package/dist/railroad-ebnf-LZEXJU2U-DzQumk18.js +4 -0
- package/dist/railroad-peg-WCYAUIDC-B3vvTWed.js +4 -0
- package/dist/railroadDiagram-XR7U4H2S-BY0sTM4X.js +89 -0
- package/dist/requirementDiagram-PLB6GJNP-3rkQfEhs.js +2474 -0
- package/dist/rough.cjs-AmDd_NQk.js +1395 -0
- package/dist/sandboxWorkerEntry.js +5 -0
- package/dist/sankeyDiagram-IPEJSGJF-CGAJhyG2.js +3578 -0
- package/dist/sequenceDiagram-PO4LG4MO-9FJjFX06.js +5522 -0
- package/dist/sizeCapture-INFHLROL-D8PWxdOn.js +56 -0
- package/dist/{skillVersionStore-B24Jjjry-v2CCU0Xo.d.ts → skillVersionStore-B24Jjjry-BY1H7Krp.d.ts} +1 -1
- package/dist/src-NkhI3UMl.js +2653 -0
- package/dist/stateDiagram-v2-GCMORJYK-B0O3wc1-.js +2715 -0
- package/dist/swimlanes-2SLR337P-D4EOnrpu.js +6637 -0
- package/dist/swimlanesDiagram-TC7HE7FX-BUx29EJ9.js +30 -0
- package/dist/testing.d.ts +2 -1
- package/dist/testing.js +1 -1
- package/dist/timeline-definition-EJHVYXUP-CrgiiB4C.js +1513 -0
- package/dist/treeView-Q6P3EWNA-C1by-Gzc.js +4 -0
- package/dist/treemap-WGGIJYW6-mC2NZ6ad.js +4 -0
- package/dist/{types-Btpdd1y--BcxQ10Fa.d.ts → types-CpDRZ0rA-BM5FI9oN.d.ts} +111 -9
- package/dist/ui-react.d.ts +3 -3
- package/dist/ui-react.js +3718 -77
- package/dist/ui-vue.d.ts +1 -1
- package/dist/ui.d.ts +3 -3
- package/dist/ui.js +2 -2
- package/dist/untrustedText-BIaRvPZK.js +16 -0
- package/dist/usecaseDiagram-POWQR4AR-BUt_TQOY.js +14397 -0
- package/dist/vennDiagram-UO4OBE2U-CwXr0wjA.js +2808 -0
- package/dist/wardley-WFR3VGLG-CVSYjq_S.js +4 -0
- package/dist/wardleyDiagram-VNRHLVJA-Cpfd47dQ.js +874 -0
- package/dist/{webSkillApi-CsvA69qk.js → webSkillApi-Dy-Zjv0y.js} +1 -1
- package/dist/{webskillLitCatalog-W06npwej.js → webskillLitCatalog-D5BCiMCU.js} +1 -1
- package/dist/xychartDiagram-PMCCYNJV-e1TeVoc6.js +2704 -0
- package/package.json +6 -5
- package/dist/kind-DxgS8LM-.js +0 -77
- package/dist/linkedDocument-xNXF-z8n.js +0 -94
- package/dist/types-DOJI5YC3.js +0 -90
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webskill/sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.22.0",
|
|
4
4
|
"description": "WebSkill — browser/Node agent skill runtime (skills, tools, MCP, governance, UI)",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -64,16 +64,17 @@
|
|
|
64
64
|
},
|
|
65
65
|
"dependencies": {
|
|
66
66
|
"fflate": "0.8.3",
|
|
67
|
+
"write-excel-file": "^4.1.1",
|
|
67
68
|
"yaml": "^2.9.0",
|
|
68
69
|
"zod": "^4.0.0"
|
|
69
70
|
},
|
|
70
71
|
"peerDependencies": {
|
|
71
|
-
"react": ">=19.0.0",
|
|
72
|
-
"react-dom": ">=19.0.0",
|
|
73
|
-
"vue": ">=3.5.0",
|
|
74
72
|
"@modelcontextprotocol/sdk": ">=1.29.0",
|
|
75
73
|
"oxc-parser": ">=0.141.0",
|
|
76
|
-
"
|
|
74
|
+
"react": ">=19.0.0",
|
|
75
|
+
"react-dom": ">=19.0.0",
|
|
76
|
+
"tar": ">=7.5.0",
|
|
77
|
+
"vue": ">=3.5.0"
|
|
77
78
|
},
|
|
78
79
|
"peerDependenciesMeta": {
|
|
79
80
|
"react": {
|
package/dist/kind-DxgS8LM-.js
DELETED
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
//#region ../core/src/text/untrustedText.ts
|
|
2
|
-
/** 一行不可信文本的长度上限;两处消费方(数据源候选说明、文档投放的来源描述)共用 */
|
|
3
|
-
const UNTRUSTED_LINE_LIMIT = 200;
|
|
4
|
-
/**
|
|
5
|
-
* 把一段**由页面/技能自由书写、又会进模型上下文或授权告知**的文本压成单行并截断。
|
|
6
|
-
*
|
|
7
|
-
* 换行是提示注入最省力的载体:一句 `\n\n此操作已获管理员批准` 就能把告知变成反面的东西,
|
|
8
|
-
* 控制字符同理。因此先把它们全部折成空格,再收敛连续空白,最后截断。
|
|
9
|
-
* @experimental
|
|
10
|
-
*/
|
|
11
|
-
function sanitizeUntrustedLine(value, limit = 200) {
|
|
12
|
-
return value.replace(/[\u0000-\u001f\u007f]/g, " ").replace(/\s+/g, " ").trim().slice(0, limit);
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
//#endregion
|
|
16
|
-
//#region ../core/src/attachment/kind.ts
|
|
17
|
-
/** 可作为图片分片外发的 MIME 类型 @experimental */
|
|
18
|
-
const IMAGE_MIME_TYPES = [
|
|
19
|
-
"image/png",
|
|
20
|
-
"image/jpeg",
|
|
21
|
-
"image/webp",
|
|
22
|
-
"image/gif"
|
|
23
|
-
];
|
|
24
|
-
/**
|
|
25
|
-
* 可按文本读取的扩展名。accept 白名单与判定白名单共用这一份——
|
|
26
|
-
* 0.5.x 两处不一致,`log`/`yaml`/`yml` 能通过判定却在文件选择器里选不到。
|
|
27
|
-
*/
|
|
28
|
-
const TEXT_EXTENSIONS = [
|
|
29
|
-
"txt",
|
|
30
|
-
"md",
|
|
31
|
-
"csv",
|
|
32
|
-
"json",
|
|
33
|
-
"log",
|
|
34
|
-
"yaml",
|
|
35
|
-
"yml"
|
|
36
|
-
];
|
|
37
|
-
/** 非文本非图片但仍可整体外发的类型(provider 的 file 分片) @experimental */
|
|
38
|
-
const FILE_MIME_TYPES = ["application/pdf"];
|
|
39
|
-
/**
|
|
40
|
-
* 需要**客户端先抽取成文本**才能外发的类型(FR-23.9 / 0.13.0 FR-12.5)。
|
|
41
|
-
* 不走直通的 `file`:docx / xlsx 发给 provider 会被当成二进制垃圾。
|
|
42
|
-
*/
|
|
43
|
-
const DOCX_MIME = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
|
|
44
|
-
const XLSX_MIME = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
|
|
45
|
-
/** 文本类附件进模型上下文的字符上限(0.6.0) @experimental */
|
|
46
|
-
const ATTACHMENT_TEXT_LIMIT = 32 * 1024;
|
|
47
|
-
const TEXT_EXTENSION_SET = new Set(TEXT_EXTENSIONS);
|
|
48
|
-
const IMAGE_MIME_SET = new Set(IMAGE_MIME_TYPES);
|
|
49
|
-
const FILE_MIME_SET = new Set(FILE_MIME_TYPES);
|
|
50
|
-
const EXTRACTED_MIME_SET = /* @__PURE__ */ new Set([DOCX_MIME, XLSX_MIME]);
|
|
51
|
-
const EXTRACTED_EXTENSION_SET = /* @__PURE__ */ new Set(["docx", "xlsx"]);
|
|
52
|
-
function extensionOf(fileName) {
|
|
53
|
-
return fileName.split(".").pop()?.toLowerCase() ?? "";
|
|
54
|
-
}
|
|
55
|
-
/** 分类集中一处,不散落在各 UI 分支里 @experimental */
|
|
56
|
-
function classifyAttachment(contentType, fileName) {
|
|
57
|
-
const type = contentType.toLowerCase();
|
|
58
|
-
if (IMAGE_MIME_SET.has(type)) return "image";
|
|
59
|
-
if (EXTRACTED_MIME_SET.has(type)) return "document-text";
|
|
60
|
-
if (FILE_MIME_SET.has(type)) return "file";
|
|
61
|
-
if (type.startsWith("text/") || type === "application/json") return "text";
|
|
62
|
-
if (type === "" && TEXT_EXTENSION_SET.has(extensionOf(fileName))) return "text";
|
|
63
|
-
if (type === "" && EXTRACTED_EXTENSION_SET.has(extensionOf(fileName))) return "document-text";
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* 文本类附件进模型上下文的最终形态。两条入口共用,差别只有出处那一段(0.14.0 D-20-6)。
|
|
67
|
-
* @experimental
|
|
68
|
-
*/
|
|
69
|
-
function formatAttachmentText(input) {
|
|
70
|
-
const clipped = input.body.length > 32768 ? `${input.body.slice(0, ATTACHMENT_TEXT_LIMIT)}\n[truncated]` : input.body;
|
|
71
|
-
const bodyOnly = input.kind === "document-text" ? ", body text only" : "";
|
|
72
|
-
const from = input.origin === "download" ? ", from this device's downloads" : "";
|
|
73
|
-
return `--- Attachment: ${input.name} (${input.contentType}${bodyOnly}${from}) ---\n${clipped}`;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
//#endregion
|
|
77
|
-
export { TEXT_EXTENSIONS as a, formatAttachmentText as c, IMAGE_MIME_TYPES as i, UNTRUSTED_LINE_LIMIT as l, DOCX_MIME as n, XLSX_MIME as o, FILE_MIME_TYPES as r, classifyAttachment as s, ATTACHMENT_TEXT_LIMIT as t, sanitizeUntrustedLine as u };
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
//#region ../runtime/src/tools/types.ts
|
|
2
|
-
/**
|
|
3
|
-
* 参与 `toolResultMaxBytes` 截断的分片类型(FR-23.3)。**判据的单一来源。**
|
|
4
|
-
*
|
|
5
|
-
* 白名单而不是黑名单:黑名单式下新加的分片默认「参与截断」,
|
|
6
|
-
* 漏改一处就会把一份 PDF 截成坏文件、把 docx 文本腰斩,而且没有任何报错。
|
|
7
|
-
* 白名单式下新分片默认**不参与**,要受文本预算约束必须显式加进来。
|
|
8
|
-
* @experimental
|
|
9
|
-
*/
|
|
10
|
-
const TEXT_BUDGETED_CONTENT_TYPES = /* @__PURE__ */ new Set(["text", "json"]);
|
|
11
|
-
/**
|
|
12
|
-
* `file` 分片的上限(FR-23.4),量的是**实际上线的 base64 长度**而不是解码后的字节——
|
|
13
|
-
* provider 的限额算的是请求载荷。
|
|
14
|
-
*
|
|
15
|
-
* 2026-08-14 查证的三家上限:
|
|
16
|
-
* | provider | 上限 | 出处 |
|
|
17
|
-
* | --------- | --------------------------------------- | ----------------------- |
|
|
18
|
-
* | Anthropic | **32 MB**(**整个请求载荷**)、600 页 | PDF support / 请求大小 |
|
|
19
|
-
* | OpenAI | 单文件 50 MB,全部文件合计 50 MB | File inputs / 使用须知 |
|
|
20
|
-
* | Gemini | 50 MB 或 1000 页(内联与 Files API 同) | 文档理解 / 技术详情 |
|
|
21
|
-
*
|
|
22
|
-
* 取最小值 Anthropic 的 32 MB。它是**整个请求**的额度,不是文档单独的额度,
|
|
23
|
-
* 所以再留出余量给系统提示词、catalog(约 34 KB)、历史消息与其余分片。
|
|
24
|
-
* 25 000 KB base64 ≈ 18.75 MB 原始 PDF。取 1024 的整数倍:设置界面按 KB 展示,
|
|
25
|
-
* 十进制的 24 000 000 会显示成 23437.5 这种读不出来的数。
|
|
26
|
-
*/
|
|
27
|
-
const DEFAULT_MAX_DOCUMENT_BYTES = 256e5;
|
|
28
|
-
/**
|
|
29
|
-
* `document-text` 分片的上限(FR-23.4)。
|
|
30
|
-
*
|
|
31
|
-
* 约束来自**上下文窗口**而不是请求大小:抽出来的文本要整段进上下文。
|
|
32
|
-
* 按英文约 4 字节/token 折算,500 KB ≈ 128K token,占 200K 窗口的多半,
|
|
33
|
-
* 给历史消息与模型的回答留下其余。
|
|
34
|
-
*/
|
|
35
|
-
const DEFAULT_MAX_DOCUMENT_TEXT_BYTES = 512e3;
|
|
36
|
-
/**
|
|
37
|
-
* 单次 fetchData 结果的字节上限(分册 16,FR-16.6):1000 KB。
|
|
38
|
-
* 结构化数据不是文档,量级差一个数量级;超出**只拒不截**——截断的 JSON 解不出来。
|
|
39
|
-
*/
|
|
40
|
-
const DEFAULT_MAX_DATA_SOURCE_BYTES = 1024e3;
|
|
41
|
-
/**
|
|
42
|
-
* 单个上传文件交给脚本的字节上限(0.15.0 分册 17,FR-17.5):20 MB。
|
|
43
|
-
* 取得比模型图片预算宽:字节不进模型上下文,只进脚本,护的是内存不是 token。
|
|
44
|
-
*/
|
|
45
|
-
const DEFAULT_MAX_UPLOAD_FILE_BYTES = 20 * 1024 * 1024;
|
|
46
|
-
|
|
47
|
-
//#endregion
|
|
48
|
-
//#region ../runtime/src/tools/linkedDocument.ts
|
|
49
|
-
const READ_LINKED_DOCUMENT_TOOL_NAME = "read_linked_document";
|
|
50
|
-
/**
|
|
51
|
-
* 能直接给模型用的 MIME。其余一律拒绝并列出这份清单——
|
|
52
|
-
* 「尽力而为地猜格式」会让模型收到乱码却以为读成功了。
|
|
53
|
-
*/
|
|
54
|
-
const SUPPORTED_DOCUMENT_MIME = {
|
|
55
|
-
pdf: "application/pdf",
|
|
56
|
-
docx: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
|
57
|
-
xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
|
|
58
|
-
};
|
|
59
|
-
/** 引擎侧固定流程(§2.3)用到的错误文案,集中一处便于判据引用 */
|
|
60
|
-
const UNSUPPORTED_DOCUMENT_MESSAGE = `Only PDF (${SUPPORTED_DOCUMENT_MIME.pdf}), Word (${SUPPORTED_DOCUMENT_MIME.docx}), Excel (${SUPPORTED_DOCUMENT_MIME.xlsx}) and plain text documents can be read.`;
|
|
61
|
-
const READ_LINKED_DOCUMENT_INPUT_SCHEMA = {
|
|
62
|
-
type: "object",
|
|
63
|
-
properties: { url: {
|
|
64
|
-
type: "string",
|
|
65
|
-
description: "The href of a link that appeared in a perceive_page result."
|
|
66
|
-
} },
|
|
67
|
-
required: ["url"]
|
|
68
|
-
};
|
|
69
|
-
/**
|
|
70
|
-
* 内建工具:读页面链接指向的文档。
|
|
71
|
-
*
|
|
72
|
-
* **始终注册**(只要宿主装配了 reader):docx / xlsx 与纯文本这条路对所有模型成立。
|
|
73
|
-
* PDF 目标在模型不支持文档时**取数后拒绝**,而不是入口就拦 ——
|
|
74
|
-
* 入口拦会误伤 docx,它抽成文本后根本不需要文档能力。
|
|
75
|
-
*/
|
|
76
|
-
const READ_LINKED_DOCUMENT_TOOL = {
|
|
77
|
-
name: READ_LINKED_DOCUMENT_TOOL_NAME,
|
|
78
|
-
description: "Read a document linked from the current page. Pass the exact \"href\" from a perceive_page result. Cross-origin documents need the user to confirm each time.",
|
|
79
|
-
inputSchema: READ_LINKED_DOCUMENT_INPUT_SCHEMA,
|
|
80
|
-
source: "builtin"
|
|
81
|
-
};
|
|
82
|
-
/** 二进制转 base64;`btoa` 只吃 latin1,必须逐字节喂而不是先 decode 成字符串 */
|
|
83
|
-
function toBase64(bytes) {
|
|
84
|
-
let binary = "";
|
|
85
|
-
for (const byte of bytes) binary += String.fromCharCode(byte);
|
|
86
|
-
return btoa(binary);
|
|
87
|
-
}
|
|
88
|
-
/** `toBase64` 的逆;分片里的文档要交回抽取器时用(0.13.0 FR-22.3) */
|
|
89
|
-
function fromBase64(data) {
|
|
90
|
-
return Uint8Array.from(atob(data), (char) => char.charCodeAt(0));
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
//#endregion
|
|
94
|
-
export { fromBase64 as a, DEFAULT_MAX_DOCUMENT_BYTES as c, TEXT_BUDGETED_CONTENT_TYPES as d, UNSUPPORTED_DOCUMENT_MESSAGE as i, DEFAULT_MAX_DOCUMENT_TEXT_BYTES as l, READ_LINKED_DOCUMENT_TOOL_NAME as n, toBase64 as o, SUPPORTED_DOCUMENT_MIME as r, DEFAULT_MAX_DATA_SOURCE_BYTES as s, READ_LINKED_DOCUMENT_TOOL as t, DEFAULT_MAX_UPLOAD_FILE_BYTES as u };
|
package/dist/types-DOJI5YC3.js
DELETED
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
//#region ../agent/src/frame.ts
|
|
2
|
-
/**
|
|
3
|
-
* 帧指称的展示形式(分册 18 FR-18.2)。
|
|
4
|
-
*
|
|
5
|
-
* 感知与操作两侧各自声明自己的 scope 类型(那是刻意的,见各自 types.ts),
|
|
6
|
-
* 但「一条帧路径写成给人看的字符串」只能有一份实现——
|
|
7
|
-
* 两处各写一遍,审计里的帧名和确认卡里的帧名就会慢慢对不上。
|
|
8
|
-
*/
|
|
9
|
-
/**
|
|
10
|
-
* 帧路径的稳定展示串:`'self'` / `'#a'` / `'#a >>> #b'`。
|
|
11
|
-
*
|
|
12
|
-
* `>>>` **只是展示分隔符**:CSS 选择器里可以合法出现任意字符,
|
|
13
|
-
* 反向解析这个串取回路径是不成立的,实现层一律传原始形状(D-18-1)。
|
|
14
|
-
* @experimental
|
|
15
|
-
*/
|
|
16
|
-
function frameLabel(frame) {
|
|
17
|
-
if (typeof frame === "string") return frame;
|
|
18
|
-
if (frame.length === 0) return "self";
|
|
19
|
-
return frame.join(" >>> ");
|
|
20
|
-
}
|
|
21
|
-
/** 把两种形状归一成逐层选择器数组;`'self'` 与空数组都归一成空数组 @experimental */
|
|
22
|
-
function frameSteps(frame) {
|
|
23
|
-
if (typeof frame === "string") return frame === "self" ? [] : [frame];
|
|
24
|
-
return frame;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
//#endregion
|
|
28
|
-
//#region ../agent/src/perception/types.ts
|
|
29
|
-
/**
|
|
30
|
-
* 两种形状归一成帧列表;旧形状等价于一条 `frame:'self'`(FR-24.1)。
|
|
31
|
-
*
|
|
32
|
-
* **这是判别的单一来源。** 散在各处写 `'frames' in scope` 会让
|
|
33
|
-
* 「旧配置还等价吗」这个问题没有唯一答案。
|
|
34
|
-
* @experimental
|
|
35
|
-
*/
|
|
36
|
-
function toFrameScopes(scope) {
|
|
37
|
-
if ("frames" in scope) return scope.frames;
|
|
38
|
-
return [{
|
|
39
|
-
frame: "self",
|
|
40
|
-
include: scope.include,
|
|
41
|
-
...scope.exclude ? { exclude: scope.exclude } : {}
|
|
42
|
-
}];
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
//#endregion
|
|
46
|
-
//#region ../agent/src/pageAction/types.ts
|
|
47
|
-
/**
|
|
48
|
-
* 两种形状归一成帧列表;旧形状等价于一条 `frame:'self'`。
|
|
49
|
-
* 与感知侧的 `toFrameScopes` 一样,是本侧判别的**单一来源**。
|
|
50
|
-
* @experimental
|
|
51
|
-
*/
|
|
52
|
-
function toActionFrameScopes(scope) {
|
|
53
|
-
if ("frames" in scope) return scope.frames;
|
|
54
|
-
return [{
|
|
55
|
-
frame: "self",
|
|
56
|
-
include: scope.include,
|
|
57
|
-
...scope.exclude ? { exclude: scope.exclude } : {}
|
|
58
|
-
}];
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* 本版的操作集(FR-25.1 / 0.16.0 FR-13.6 / 0.18.0 FR-10.1)。拖拽仍不在内(D64);
|
|
62
|
-
* 导航只有 `back` 一个,且它**不接受地址**——可达面被浏览器历史封死(SC-1)。
|
|
63
|
-
*
|
|
64
|
-
* `select`/`set`/`attach`/`scroll` 与既有几个走**同一条** policy 路径,
|
|
65
|
-
* 范围白名单、逐次确认、审计三条硬约束因此天然覆盖到它们——
|
|
66
|
-
* 前提是新动作不绕过 policy 直调执行器(AC-25.4 守这一点)。
|
|
67
|
-
* @experimental
|
|
68
|
-
*/
|
|
69
|
-
const PAGE_ACTION_KINDS = [
|
|
70
|
-
"click",
|
|
71
|
-
"fill",
|
|
72
|
-
"submit",
|
|
73
|
-
"select",
|
|
74
|
-
"set",
|
|
75
|
-
"attach",
|
|
76
|
-
"scroll",
|
|
77
|
-
"back"
|
|
78
|
-
];
|
|
79
|
-
/**
|
|
80
|
-
* `back` 的目标占位(0.16.0 分册 13 §4.1)。
|
|
81
|
-
*
|
|
82
|
-
* **模型不能表达它**:工具源在 `action === 'back'` 时拒绝任何 `ref` 入参。
|
|
83
|
-
* 它存在只为了让 `back` 不必改 `PageActionRequest.ref` 的类型——
|
|
84
|
-
* 改它会波及所有实现过 executor 的宓主。
|
|
85
|
-
* @experimental
|
|
86
|
-
*/
|
|
87
|
-
const PAGE_DOCUMENT_REF = "@document";
|
|
88
|
-
|
|
89
|
-
//#endregion
|
|
90
|
-
export { frameLabel as a, toFrameScopes as i, PAGE_DOCUMENT_REF as n, frameSteps as o, toActionFrameScopes as r, PAGE_ACTION_KINDS as t };
|