@webskill/sdk 0.12.0 → 0.14.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 -3
- package/dist/agent.js +3 -3
- package/dist/browser.d.ts +250 -9
- package/dist/browser.js +1257 -95
- package/dist/{catalogComponents-BgAJN0p8-C3K8klJd.js → catalogComponents-BgAJN0p8-Cr55ouOg.js} +348 -14
- package/dist/{dist-sdKFgERo.js → dist-Bfga1TmS.js} +368 -34
- package/dist/{dist-DU9KDAuR.js → dist-BnqAkSS6.js} +965 -49
- package/dist/{dist-DqcL6jKO.js → dist-CiaDIqkV.js} +2 -2
- package/dist/{dist-Bev6i6Ip.js → dist-D5YhlCdY.js} +59 -1
- package/dist/governance.d.ts +3 -3
- package/dist/governance.js +2 -2
- package/dist/{index-C9pzXLKy.d.ts → index-CWoKOFBP.d.ts} +86 -5
- package/dist/{index-DFhU1uks.d.ts → index-DQwGvHAI.d.ts} +447 -22
- package/dist/{index-3fCHc1mQ.d.ts → index-sd-gVKey.d.ts} +2 -2
- package/dist/index.d.ts +4 -4
- package/dist/index.js +5 -5
- package/dist/mcp.d.ts +77 -3
- package/dist/mcp.js +78 -4
- package/dist/{memoryArtifactStore-52Zn9npI-LbCQaqyx.js → memoryArtifactStore-52Zn9npI-BxtUkrgV.js} +1 -1
- package/dist/node.d.ts +3 -3
- package/dist/node.js +6 -6
- package/dist/{openUiLibrary-BKXW7Iwx-DaymVubt.js → openUiLibrary-BKXW7Iwx-DjvEnMlJ.js} +2 -2
- package/dist/{skillVersionStore-D-qHk9ZE-DheTIwAB.d.ts → skillVersionStore-D-qHk9ZE-C0OFDTQY.d.ts} +1 -1
- package/dist/{testing-WPTyXQYt.js → testing-Cm8MseLF.js} +2 -2
- package/dist/testing.d.ts +1 -1
- package/dist/testing.js +2 -2
- package/dist/{types-DLctJep_-B5G4uk2u.d.ts → types-C3V6lAeO-BgeOvc1Y.d.ts} +63 -4
- package/dist/ui-react.d.ts +2 -2
- package/dist/ui-react.js +13 -11
- package/dist/ui-vue.d.ts +1 -1
- package/dist/ui-vue.js +1 -1
- package/dist/ui.d.ts +3 -3
- package/dist/ui.js +2 -2
- package/dist/{webskillLitCatalog-D_zCqeQF-C9lrvvMr.js → webskillLitCatalog-D_zCqeQF-swXsWoAe.js} +1 -1
- package/package.json +2 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { I as ChatAttachmentKind, Mt as WebSkillErrorCode, S as UiBridge, Z as RemoteUrlPolicy, a as InteractionOrigin, c as InteractionResponse, s as InteractionRequest } from "./types-C3V6lAeO-BgeOvc1Y.js";
|
|
2
|
+
import { A as DataSourceInfo, Bn as XlsxTextExtractor, I as ExternalToolSource, gn as ToolStepReader, j as DocxTextExtractor } from "./index-CWoKOFBP.js";
|
|
3
3
|
//#region ../agent/dist/index.d.ts
|
|
4
4
|
//#region src/todo/types.d.ts
|
|
5
5
|
/** 待办条目状态:未开始 / 进行中 / 已完成(FR-3.1) */
|
|
@@ -341,16 +341,19 @@ interface PerceptionScope {
|
|
|
341
341
|
exclude?: readonly string[];
|
|
342
342
|
}
|
|
343
343
|
/**
|
|
344
|
-
* 一个帧内的可感知范围(FR-24.1)。
|
|
344
|
+
* 一个帧内的可感知范围(FR-24.1 / 分册 18 FR-18.1)。
|
|
345
345
|
*
|
|
346
|
-
*
|
|
347
|
-
*
|
|
348
|
-
*
|
|
346
|
+
* 嵌套帧写**自外向内的选择器数组**:第 1 项在主文档里求值,
|
|
347
|
+
* 第 n+1 项在第 n 项解析出的文档里求值。逐层写出来是有意的——
|
|
348
|
+
* 授权面覆盖了哪几层,配置里要能一眼看出来,不允许靠自动发现下钻。
|
|
349
349
|
* @experimental
|
|
350
350
|
*/
|
|
351
351
|
interface FrameScope {
|
|
352
|
-
/**
|
|
353
|
-
|
|
352
|
+
/**
|
|
353
|
+
* 主文档写 `'self'`;单层 iframe 写主文档里定位该 `<iframe>` 的选择器;
|
|
354
|
+
* 多层嵌套写逐层选择器数组(空数组等价于 `'self'`)。
|
|
355
|
+
*/
|
|
356
|
+
frame: 'self' | string | readonly string[];
|
|
354
357
|
include: readonly string[];
|
|
355
358
|
exclude?: readonly string[];
|
|
356
359
|
}
|
|
@@ -373,6 +376,7 @@ type PerceptionScopeInput = PerceptionScope | {
|
|
|
373
376
|
declare function toFrameScopes(scope: PerceptionScopeInput): readonly FrameScope[];
|
|
374
377
|
/** 某个帧未能读取的原因(FR-24.2 / FR-24.3);不静默跳过 @experimental */
|
|
375
378
|
interface FrameNote {
|
|
379
|
+
/** 帧路径的展示串(`frameLabel` 的产出,分册 18 FR-18.2) */
|
|
376
380
|
frame: string;
|
|
377
381
|
reason: 'cross-origin' | 'origin-changed' | 'not-found';
|
|
378
382
|
/** 面向模型的英文说明,同时也是说明节点的 name */
|
|
@@ -403,13 +407,16 @@ interface PerceivedNode {
|
|
|
403
407
|
imageNote?: string;
|
|
404
408
|
/**
|
|
405
409
|
* 不透明元素句柄(S10)。**仅当该节点可被操作时出现**:
|
|
406
|
-
*
|
|
407
|
-
*
|
|
410
|
+
* 它落在宿主声明的操作范围内、且是可交互角色。由 reader 生成,模型不得构造或推断。
|
|
411
|
+
*
|
|
412
|
+
* **跨感知保留,直到元素离开文档**(分册 18 FR-18.5)。它不是安全边界——
|
|
413
|
+
* 「页面变了不能点到别的东西」由执行前的实时校验承担,不由句柄寿命承担。
|
|
408
414
|
*/
|
|
409
415
|
ref?: string;
|
|
410
416
|
/**
|
|
411
|
-
* 该节点来自哪个帧(FR-24.4
|
|
412
|
-
*
|
|
417
|
+
* 该节点来自哪个帧(FR-24.4),取值是帧路径的展示串(`frameLabel`)。
|
|
418
|
+
* **主文档节点不带这个字段**——否则旧宿主的断言会凭空变化。
|
|
419
|
+
* 跨帧后会出现同名控件,不标帧模型会点错。
|
|
413
420
|
*/
|
|
414
421
|
frame?: string;
|
|
415
422
|
/**
|
|
@@ -420,10 +427,17 @@ interface PerceivedNode {
|
|
|
420
427
|
href?: string;
|
|
421
428
|
/**
|
|
422
429
|
* 该节点为何可见(FR-25.6 / AC-G22)。只在**授权面被临时扩大**时出现:
|
|
423
|
-
* `'modal-elevated'` =
|
|
424
|
-
*
|
|
430
|
+
* `'modal-elevated'` = 它在一个由本次已授权操作打开的对话框里,原本不在白名单内;
|
|
431
|
+
* `'inline-frame'` = 它来自一个没有可路由地址的同源嵌套帧(`srcdoc` / `about:blank`),
|
|
432
|
+
* 外壳无法寻址到它,只能由父帧就地内联(分册 16 FR-16.1)。缺省不带该字段。
|
|
425
433
|
*/
|
|
426
|
-
provenance?: 'modal-elevated';
|
|
434
|
+
provenance?: 'modal-elevated' | 'inline-frame';
|
|
435
|
+
/**
|
|
436
|
+
* 该节点的子树在本段里**没有给全**(0.14.0 分册 22 FR-22.3)。
|
|
437
|
+
* 只在分段切分产生的祖先浅副本上出现:告诉模型这不是一个新冒出来的节点,
|
|
438
|
+
* 它的其余子节点在前一段或后一段里。缺省不带该字段。
|
|
439
|
+
*/
|
|
440
|
+
continued?: boolean;
|
|
427
441
|
children?: readonly PerceivedNode[];
|
|
428
442
|
}
|
|
429
443
|
/** 随感知一起下发的一张图像(FR-12.1) @experimental */
|
|
@@ -447,6 +461,29 @@ interface PerceptionCaptureOptions {
|
|
|
447
461
|
images: boolean;
|
|
448
462
|
maxImageBytes: number;
|
|
449
463
|
maxImages: number;
|
|
464
|
+
/**
|
|
465
|
+
* 小于该面积(平方像素)的元素视作图标,不占取像名额(0.13.0 FR-20.3)。
|
|
466
|
+
* 可选是为了不破坏既有 reader 实现;缺省与 0 都表示不过滤。
|
|
467
|
+
*/
|
|
468
|
+
minImageArea?: number;
|
|
469
|
+
}
|
|
470
|
+
/**
|
|
471
|
+
* 本帧范围内发现的一个嵌套帧(0.14.0 分册 16 FR-16.1)。
|
|
472
|
+
*
|
|
473
|
+
* 是**结构化数据**而不是说明文本:外壳要拿它去路由下一次感知,
|
|
474
|
+
* 从一句英文里正则抠地址是两边同时演进就会断的做法。
|
|
475
|
+
*
|
|
476
|
+
* 只上报解析得出 http(s) 绝对地址的帧——地址是外壳做帧匹配的唯一凭据,
|
|
477
|
+
* 无地址的同源帧由 reader 就地内联,不走这条路。
|
|
478
|
+
* @experimental
|
|
479
|
+
*/
|
|
480
|
+
interface NestedFrameRef {
|
|
481
|
+
/** 已按文档基准解析的绝对地址 */
|
|
482
|
+
url: string;
|
|
483
|
+
/** `aria-label` / `title` / `name` / `id` 的首个非空值;都没有则 `'unnamed'` */
|
|
484
|
+
hint: string;
|
|
485
|
+
/** 发现它的那一层帧标识;主文档发现的不带此字段 */
|
|
486
|
+
frame?: string;
|
|
450
487
|
}
|
|
451
488
|
/**
|
|
452
489
|
* reader 的完整产物。只实现文本的 reader 可以继续返回节点数组。
|
|
@@ -456,6 +493,8 @@ interface PerceptionResult {
|
|
|
456
493
|
nodes: readonly PerceivedNode[];
|
|
457
494
|
/** 被跳过的帧及原因;调用方据此告警(FR-24.2 / FR-24.3) */
|
|
458
495
|
frameNotes?: readonly FrameNote[];
|
|
496
|
+
/** 本次范围内发现、可供外壳继续下钻的嵌套帧(分册 16 FR-16.1) */
|
|
497
|
+
nestedFrames?: readonly NestedFrameRef[];
|
|
459
498
|
images?: readonly PerceivedImage[];
|
|
460
499
|
/** 超出 `maxImages` 而未下发的张数 */
|
|
461
500
|
imagesOmitted?: number;
|
|
@@ -483,6 +522,15 @@ interface PerceptionRecord {
|
|
|
483
522
|
frames?: readonly string[];
|
|
484
523
|
/** 读到的顶层节点数;用于「它读的比我预期的多」这类判断 */
|
|
485
524
|
nodeCount: number;
|
|
525
|
+
/**
|
|
526
|
+
* 整份快照的节点总数(含各层);**只在这次感知被切成了多段时存在**(分册 22 FR-22.7)。
|
|
527
|
+
* `nodeCount` 的语义不动——改它会让所有既有断言与 console 展示静默变义。
|
|
528
|
+
*/
|
|
529
|
+
nodesTotal?: number;
|
|
530
|
+
/** 切成了几段;只在分段发生时存在 */
|
|
531
|
+
segments?: number;
|
|
532
|
+
/** 本次直接回喂给模型的那一段承载了多少个节点;只在分段发生时存在 */
|
|
533
|
+
segmentNodeCount?: number;
|
|
486
534
|
/** 本次下发的图像张数,按取像级别分组(只在取像开启时存在) */
|
|
487
535
|
images?: {
|
|
488
536
|
src: number;
|
|
@@ -553,6 +601,35 @@ declare class PagePerceptionPolicy {
|
|
|
553
601
|
}>;
|
|
554
602
|
}
|
|
555
603
|
//#endregion
|
|
604
|
+
//#region src/perception/paging.d.ts
|
|
605
|
+
/**
|
|
606
|
+
* 分段读取的预算与开关(0.14.0 分册 22 FR-22.4)。
|
|
607
|
+
*
|
|
608
|
+
* 两道闸先触发哪个算哪个:`maxNodes` 兜常规页面(空壳多、每个节点很小),
|
|
609
|
+
* `maxChars` 兜「少数节点携带超长文本」的极端情况——只设 `maxNodes` 时,
|
|
610
|
+
* 一个塞满日志的 `<pre>` 就能让 1500 个节点撑到几百 KB。
|
|
611
|
+
* @experimental
|
|
612
|
+
*/
|
|
613
|
+
interface PerceptionPagingBudget {
|
|
614
|
+
/** 缺省 false:不开启时只有地板(FR-22.2),没有游标 */
|
|
615
|
+
enabled: boolean;
|
|
616
|
+
/** 一段最多几个节点(含各层子节点,不是顶层数) */
|
|
617
|
+
maxNodes: number;
|
|
618
|
+
/** 一段序列化后的字符上限 */
|
|
619
|
+
maxChars: number;
|
|
620
|
+
}
|
|
621
|
+
/**
|
|
622
|
+
* 预算缺省值(设计 §10)。**全仓只写这一份**,工具源与测试读同一份——
|
|
623
|
+
* 「断言常量等于它自己」那类假守护正是靠这条避免的。
|
|
624
|
+
*
|
|
625
|
+
* `maxChars` 必须显著小于 `toolResultMaxBytes`(256 000),否则 AC-22.7
|
|
626
|
+
* 「盲切永不触发」守不住。
|
|
627
|
+
*/
|
|
628
|
+
declare const PERCEPTION_PAGING_DEFAULTS: {
|
|
629
|
+
readonly maxNodes: number;
|
|
630
|
+
readonly maxChars: number;
|
|
631
|
+
};
|
|
632
|
+
//#endregion
|
|
556
633
|
//#region src/perception/toolSource.d.ts
|
|
557
634
|
declare const PERCEIVE_PAGE_TOOL = "perceive_page";
|
|
558
635
|
interface PagePerceptionToolSourceOptions {
|
|
@@ -562,12 +639,21 @@ interface PagePerceptionToolSourceOptions {
|
|
|
562
639
|
* 缺省即不取像。判定在遍历 DOM **之前**完成一次,不是每个节点判一次。
|
|
563
640
|
*/
|
|
564
641
|
imageCapture?(): ImageCaptureBudget | Promise<ImageCaptureBudget>;
|
|
642
|
+
/**
|
|
643
|
+
* 分段预算与开关(分册 22 FR-22.4)。同样每次调用重取,理由与 `imageCapture` 一致:
|
|
644
|
+
* 凝固进实例会让宿主中途改配置整轮不生效。
|
|
645
|
+
*
|
|
646
|
+
* **缺省即不分段,但地板照样生效**(FR-22.8):不开启不等于允许上层盲切。
|
|
647
|
+
*/
|
|
648
|
+
paging?(): PerceptionPagingBudget | Promise<PerceptionPagingBudget>;
|
|
565
649
|
}
|
|
566
650
|
/** @experimental */
|
|
567
651
|
interface ImageCaptureBudget {
|
|
568
652
|
enabled: boolean;
|
|
569
653
|
maxImageBytes: number;
|
|
570
654
|
maxImages: number;
|
|
655
|
+
/** 小于该面积(平方像素)的元素视作图标;缺省与 0 都表示不过滤(0.13.0 FR-20.3) */
|
|
656
|
+
minImageArea?: number;
|
|
571
657
|
}
|
|
572
658
|
/**
|
|
573
659
|
* 把只读感知接到既有工具协议上。**本工具源不导出任何写入动作**(FR-10.7):
|
|
@@ -579,10 +665,33 @@ interface ImageCaptureBudget {
|
|
|
579
665
|
*/
|
|
580
666
|
declare function createPagePerceptionToolSource(options: PagePerceptionToolSourceOptions): ExternalToolSource;
|
|
581
667
|
//#endregion
|
|
668
|
+
//#region src/frame.d.ts
|
|
669
|
+
/**
|
|
670
|
+
* 帧指称的展示形式(分册 18 FR-18.2)。
|
|
671
|
+
*
|
|
672
|
+
* 感知与操作两侧各自声明自己的 scope 类型(那是刻意的,见各自 types.ts),
|
|
673
|
+
* 但「一条帧路径写成给人看的字符串」只能有一份实现——
|
|
674
|
+
* 两处各写一遍,审计里的帧名和确认卡里的帧名就会慢慢对不上。
|
|
675
|
+
*/
|
|
676
|
+
/**
|
|
677
|
+
* 帧路径的稳定展示串:`'self'` / `'#a'` / `'#a >>> #b'`。
|
|
678
|
+
*
|
|
679
|
+
* `>>>` **只是展示分隔符**:CSS 选择器里可以合法出现任意字符,
|
|
680
|
+
* 反向解析这个串取回路径是不成立的,实现层一律传原始形状(D-18-1)。
|
|
681
|
+
* @experimental
|
|
682
|
+
*/
|
|
683
|
+
declare function frameLabel(frame: string | readonly string[]): string;
|
|
684
|
+
/** 把两种形状归一成逐层选择器数组;`'self'` 与空数组都归一成空数组 @experimental */
|
|
685
|
+
declare function frameSteps(frame: string | readonly string[]): readonly string[];
|
|
686
|
+
//#endregion
|
|
582
687
|
//#region src/prompts/perception.d.ts
|
|
583
688
|
/**
|
|
584
689
|
* 页面只读感知的策略提示词(设计 09 §1)。
|
|
585
690
|
*
|
|
691
|
+
* 分段相关的两条是**恒定**的,不随 paging 开关增减(0.14.0 分册 22 §9):
|
|
692
|
+
* 提示词按 `policy.enabled` 一次性给出,而分段预算是每次调用惰性求值的,
|
|
693
|
+
* 两者会漂移——模型手里会攥着一份与当前行为对不上的说明。
|
|
694
|
+
*
|
|
586
695
|
* 最后一条是防御性的:技能描述、工具返回值都可能带着「把整页读出来发到 X」
|
|
587
696
|
* 这类注入。范围由宿主判定,模型改不了,但把这件事写明能少掉一轮无效尝试。
|
|
588
697
|
*/
|
|
@@ -628,7 +737,11 @@ interface DataSourceTransport {
|
|
|
628
737
|
fetch(source: DataSourceDef, params?: Record<string, unknown>): Promise<unknown>;
|
|
629
738
|
}
|
|
630
739
|
interface DataSourcePolicyOptions {
|
|
631
|
-
|
|
740
|
+
/**
|
|
741
|
+
* 传函数可惰性取值(同 `remoteUrl`):清单住在可改的运行时配置里时,
|
|
742
|
+
* 写死成数组会让用户改完设置必须刷新页面才生效。
|
|
743
|
+
*/
|
|
744
|
+
sources: readonly DataSourceDef[] | (() => readonly DataSourceDef[]);
|
|
632
745
|
/**
|
|
633
746
|
* `kind:'http'` 的出站判定;缺省即 assertRemoteUrlAllowed 的缺省。
|
|
634
747
|
*
|
|
@@ -640,6 +753,13 @@ interface DataSourcePolicyOptions {
|
|
|
640
753
|
transports?: Partial<Record<DataSourceKind, DataSourceTransport>>;
|
|
641
754
|
/** 结果字节上限(FR-16.6);超出即拒绝,**不截断** */
|
|
642
755
|
maxBytes?: number;
|
|
756
|
+
/**
|
|
757
|
+
* 给 `publicSources` 附出处(0.14.0 分册 21);缺省即全部按宿主声明处理。
|
|
758
|
+
*
|
|
759
|
+
* 选回调而不是给 `DataSourceDef` 加字段,是因为需求 §2 写死了不改它的形状;
|
|
760
|
+
* 去重仍只在 `publicSources` 一处发生,宿主不必自己合并两份清单。
|
|
761
|
+
*/
|
|
762
|
+
provenanceOf?(source: DataSourceDef): DataSourceInfo['provenance'];
|
|
643
763
|
audit?: DataSourceAuditSink;
|
|
644
764
|
now?(): string;
|
|
645
765
|
}
|
|
@@ -655,7 +775,19 @@ declare class DataSourcePolicy {
|
|
|
655
775
|
constructor(options: DataSourcePolicyOptions);
|
|
656
776
|
/** 一个源都没声明就没有这个能力(同 perception 的 include 为空) */
|
|
657
777
|
get enabled(): boolean;
|
|
778
|
+
/**
|
|
779
|
+
* 当前声明的源。**id 撞名时保留先声明的那条**(0.14.0 分册 19):
|
|
780
|
+
* 宿主写死的源排在用户配置之前,于是一条用户配置改不了 `current-page` 这类源的目标。
|
|
781
|
+
*/
|
|
658
782
|
get sources(): readonly DataSourceDef[];
|
|
783
|
+
/**
|
|
784
|
+
* 送往引擎与界面的清单(0.14.0 分册 19)。
|
|
785
|
+
*
|
|
786
|
+
* 宿主不得改传 `sources`:`DataSourceDef` 结构上是 `DataSourceInfo` 的超集,
|
|
787
|
+
* 直接赋值类型检查会过,`target` 于是静默地进了模型上下文。
|
|
788
|
+
* @experimental
|
|
789
|
+
*/
|
|
790
|
+
get publicSources(): readonly DataSourceInfo[];
|
|
659
791
|
get records(): readonly DataSourceRecord[];
|
|
660
792
|
fetchData(sourceId: string, params?: Record<string, unknown>): Promise<unknown>;
|
|
661
793
|
}
|
|
@@ -682,6 +814,115 @@ interface HttpDataSourceOptions {
|
|
|
682
814
|
*/
|
|
683
815
|
declare function createHttpDataSourceTransport(options?: HttpDataSourceOptions): DataSourceTransport;
|
|
684
816
|
//#endregion
|
|
817
|
+
//#region src/dataSource/candidates.d.ts
|
|
818
|
+
/** 候选的出处;**随对象记录**,不靠调用方记忆(FR-21.1) */
|
|
819
|
+
type DataSourceProvenance = 'page-declared' | 'tool-projection';
|
|
820
|
+
/**
|
|
821
|
+
* 一条尚不可取数的候选源(FR-21.1)。
|
|
822
|
+
*
|
|
823
|
+
* 它与 `DataSourceDef` 字段同名,但**不是**它的别名:候选层不参与取数,
|
|
824
|
+
* 两者共用一个类型会让「候选可以直接塞进 sources」在类型上成立。
|
|
825
|
+
* @experimental
|
|
826
|
+
*/
|
|
827
|
+
interface DataSourceCandidate {
|
|
828
|
+
id: string;
|
|
829
|
+
kind: DataSourceKind;
|
|
830
|
+
description: string;
|
|
831
|
+
target: string;
|
|
832
|
+
provenance: DataSourceProvenance;
|
|
833
|
+
}
|
|
834
|
+
/**
|
|
835
|
+
* 「记住这个站点的这个源」的存储;粒度键由宿主给(D-21-3)。
|
|
836
|
+
*
|
|
837
|
+
* `scope` 在本包里是不透明串:`@webskill/agent` 不认识 origin 这个概念,
|
|
838
|
+
* 扩展传 `binding.origin()`,别的宿主可以传别的。
|
|
839
|
+
* @experimental
|
|
840
|
+
*/
|
|
841
|
+
interface DataSourceCandidateStore {
|
|
842
|
+
recall(scope: string, id: string): boolean | Promise<boolean>;
|
|
843
|
+
remember(scope: string, id: string): void | Promise<void>;
|
|
844
|
+
forget(scope: string, id: string): void | Promise<void>;
|
|
845
|
+
}
|
|
846
|
+
/** 候选生命周期的留痕(FR-21.7);取数那一类仍走 `DataSourceRecord` @experimental */
|
|
847
|
+
interface DataSourceCandidateRecord {
|
|
848
|
+
/** ISO 8601 */
|
|
849
|
+
at: string;
|
|
850
|
+
event: 'offered' | 'approved' | 'forgotten';
|
|
851
|
+
/** 宿主定义的粒度键;扩展侧即 origin */
|
|
852
|
+
scope: string;
|
|
853
|
+
id?: string;
|
|
854
|
+
/** 批准记录必须带(FR-21.7):只记 id 的话,事后无从知道当时点头的是哪个地址 */
|
|
855
|
+
target?: string;
|
|
856
|
+
kind?: DataSourceKind;
|
|
857
|
+
provenance?: DataSourceProvenance;
|
|
858
|
+
/** 批准方式:`true` 为「已记住」,`false` 为仅当次 */
|
|
859
|
+
remembered?: boolean;
|
|
860
|
+
/** `offered` 专有:本批被接受 / 被丢弃的条数 */
|
|
861
|
+
accepted?: number;
|
|
862
|
+
rejected?: number;
|
|
863
|
+
}
|
|
864
|
+
interface DataSourceCandidateAuditSink {
|
|
865
|
+
record(event: DataSourceCandidateRecord): void | Promise<void>;
|
|
866
|
+
}
|
|
867
|
+
interface DataSourceCandidatePolicyOptions {
|
|
868
|
+
store?: DataSourceCandidateStore;
|
|
869
|
+
audit?: DataSourceCandidateAuditSink;
|
|
870
|
+
/** 一个 scope 最多接受多少条提议;缺省 32 */
|
|
871
|
+
maxCandidates?: number;
|
|
872
|
+
now?(): string;
|
|
873
|
+
}
|
|
874
|
+
/**
|
|
875
|
+
* 候选源策略(分册 21)。
|
|
876
|
+
*
|
|
877
|
+
* **本类不持有任何取数通道,也不引用任何出站 API**(AC-21.13):
|
|
878
|
+
* 页面提议里携带的 `target` 在用户点头之前不可能被请求,
|
|
879
|
+
* 这是结构结论,不是一句 `if (!approved) return`。
|
|
880
|
+
* @experimental
|
|
881
|
+
*/
|
|
882
|
+
declare class DataSourceCandidatePolicy {
|
|
883
|
+
#private;
|
|
884
|
+
constructor(options?: DataSourceCandidatePolicyOptions);
|
|
885
|
+
get records(): readonly DataSourceCandidateRecord[];
|
|
886
|
+
/**
|
|
887
|
+
* 页面提议入表。**同步返回,且不做任何网络动作**。
|
|
888
|
+
*
|
|
889
|
+
* 不触发确认卡:页面每次刷新都会重发一遍提议,
|
|
890
|
+
* 接到弹窗上等于把打断用户的权力交给页面(设计 §4.1)。
|
|
891
|
+
*/
|
|
892
|
+
offer(scope: string, candidates: readonly unknown[], provenance?: DataSourceProvenance): {
|
|
893
|
+
accepted: number;
|
|
894
|
+
rejected: number;
|
|
895
|
+
};
|
|
896
|
+
/** 尚待确认的:已批准的那些不再重复出现在这里 */
|
|
897
|
+
pending(scope: string | undefined): readonly DataSourceCandidate[];
|
|
898
|
+
approve(scope: string, id: string, options?: {
|
|
899
|
+
remember?: boolean;
|
|
900
|
+
}): Promise<void>;
|
|
901
|
+
/** 撤销:立刻回到候选状态,不需要重载页面(FR-21.2) */
|
|
902
|
+
forget(scope: string, id: string): Promise<void>;
|
|
903
|
+
/**
|
|
904
|
+
* 已获批的,投影成既有 `DataSourceDef`(**出处不在其中**:
|
|
905
|
+
* `DataSourceDef` 的形状不改,出处经 `provenanceOf` 单独取)。
|
|
906
|
+
*
|
|
907
|
+
* `undefined` 返回空数组:没绑定 tab 时不是「全部可用」,是「一条都没有」。
|
|
908
|
+
*/
|
|
909
|
+
approved(scope: string | undefined): readonly DataSourceDef[];
|
|
910
|
+
/** 供 `DataSourcePolicy.provenanceOf` 直接接线:不是候选出身的返回 undefined */
|
|
911
|
+
provenanceOf(scope: string | undefined, id: string): DataSourceProvenance | undefined;
|
|
912
|
+
/**
|
|
913
|
+
* 切绑定 tab 时调用。清「待批的」与「当次批准的」,
|
|
914
|
+
* **不动已记住的**——那些通过 `approved(新 scope)` 自然只对新 scope 生效。
|
|
915
|
+
*/
|
|
916
|
+
clearPending(): void;
|
|
917
|
+
/**
|
|
918
|
+
* 从 store 回填已记住的批准。
|
|
919
|
+
*
|
|
920
|
+
* `recall` 是异步端口而 `approved()` 是同步 getter(`DataSourcePolicy.sources` 要求同步),
|
|
921
|
+
* 所以命中与否必须在提议入表时先问一遍,而不是取数时现问。
|
|
922
|
+
*/
|
|
923
|
+
restore(scope: string): Promise<void>;
|
|
924
|
+
}
|
|
925
|
+
//#endregion
|
|
685
926
|
//#region src/pageAction/types.d.ts
|
|
686
927
|
/**
|
|
687
928
|
* 页面操作的策略层类型(需求 23)。
|
|
@@ -704,15 +945,18 @@ interface PageActionScope {
|
|
|
704
945
|
exclude?: readonly string[];
|
|
705
946
|
}
|
|
706
947
|
/**
|
|
707
|
-
* 一个帧内的可操作范围(FR-24.1)。
|
|
948
|
+
* 一个帧内的可操作范围(FR-24.1 / 分册 18 FR-18.1)。
|
|
708
949
|
*
|
|
709
950
|
* 与感知侧的 `FrameScope` 同构但**独立声明**,理由同上:合并成一个类型会让
|
|
710
951
|
* 「一份配置同时当感知范围和操作范围用」在类型层面合法。
|
|
711
952
|
* @experimental
|
|
712
953
|
*/
|
|
713
954
|
interface ActionFrameScope {
|
|
714
|
-
/**
|
|
715
|
-
|
|
955
|
+
/**
|
|
956
|
+
* 主文档写 `'self'`;单层 iframe 写主文档里定位该 `<iframe>` 的选择器;
|
|
957
|
+
* 多层嵌套写逐层选择器数组(空数组等价于 `'self'`)。
|
|
958
|
+
*/
|
|
959
|
+
frame: 'self' | string | readonly string[];
|
|
716
960
|
include: readonly string[];
|
|
717
961
|
exclude?: readonly string[];
|
|
718
962
|
}
|
|
@@ -770,6 +1014,15 @@ interface PageActionOutcome {
|
|
|
770
1014
|
noop?: boolean;
|
|
771
1015
|
/** 本次操作新打开的模态的可访问名;授权面临时扩大要在留痕里看得见(FR-25.6) */
|
|
772
1016
|
elevatedModal?: string;
|
|
1017
|
+
/**
|
|
1018
|
+
* 本次操作后目标所在帧的地址变了(帧内跳转 / SPA 路由,分册 18 FR-18.6)。
|
|
1019
|
+
* 没变时**不带**该字段:带个 `false` 会让旧宿主的断言凭空变化。
|
|
1020
|
+
*
|
|
1021
|
+
* 真正的跨文档导航会销毁执行上下文,那种情况拿不到本字段——固有限制,不假装。
|
|
1022
|
+
*/
|
|
1023
|
+
navigated?: boolean;
|
|
1024
|
+
/** 变更后的地址;仅 `navigated` 时带 */
|
|
1025
|
+
documentUrl?: string;
|
|
773
1026
|
/** 失败原因(英文) */
|
|
774
1027
|
reason?: string;
|
|
775
1028
|
}
|
|
@@ -806,8 +1059,11 @@ interface PageActionRecord {
|
|
|
806
1059
|
name?: string;
|
|
807
1060
|
/** 目标所在的帧;主文档目标不带该字段(FR-24.6) */
|
|
808
1061
|
frame?: string;
|
|
809
|
-
/**
|
|
810
|
-
|
|
1062
|
+
/**
|
|
1063
|
+
* 是否经用户确认;宿主预授权的操作记 `'preauthorized'`,
|
|
1064
|
+
* 命中用户此前「不再询问」的记 `'remembered'`(需求 11 / FR-11.5)。
|
|
1065
|
+
*/
|
|
1066
|
+
approved: boolean | 'preauthorized' | 'remembered';
|
|
811
1067
|
ok: boolean;
|
|
812
1068
|
/** 目标位于本次会话中被提升的模态里(授权面临时扩大,FR-25.6 / AC-G22) */
|
|
813
1069
|
elevated?: boolean;
|
|
@@ -825,6 +1081,24 @@ interface PageActionRecord {
|
|
|
825
1081
|
interface PageActionUi {
|
|
826
1082
|
request(input: InteractionRequest): Promise<InteractionResponse>;
|
|
827
1083
|
}
|
|
1084
|
+
/**
|
|
1085
|
+
* 「不再询问」的记忆端口(需求 11 / FR-11.1)。**存储与粒度归宿主**:
|
|
1086
|
+
* 粒度键通常是 origin,而本包不认识 origin。
|
|
1087
|
+
*
|
|
1088
|
+
* 不注入即完全无记忆:确认卡不出复选框,行为与 0.13.0 逐字一致。
|
|
1089
|
+
* @experimental
|
|
1090
|
+
*/
|
|
1091
|
+
interface PageActionConsent {
|
|
1092
|
+
/** 该目标 + 动作是否已被记住;`true` 即本次不弹卡 */
|
|
1093
|
+
recall(target: PageActionTarget, action: PageActionKind): boolean | Promise<boolean>;
|
|
1094
|
+
/** 用户勾了「不再询问」并允许后写入 */
|
|
1095
|
+
remember(target: PageActionTarget, action: PageActionKind): void | Promise<void>;
|
|
1096
|
+
/**
|
|
1097
|
+
* 复选框旁的文案。宿主不实现即用通用兜底串——
|
|
1098
|
+
* SDK 无权替宿主宣称记住的是「此站点」,写死会在宿主换粒度时变成谎报授权范围。
|
|
1099
|
+
*/
|
|
1100
|
+
describeScope?(target: PageActionTarget, action: PageActionKind): string | undefined;
|
|
1101
|
+
}
|
|
828
1102
|
interface PageActionPolicyOptions {
|
|
829
1103
|
/** 宿主声明的可操作范围;`include` 为空即整个能力不可用 */
|
|
830
1104
|
scope: PageActionScopeInput;
|
|
@@ -839,6 +1113,11 @@ interface PageActionPolicyOptions {
|
|
|
839
1113
|
* 只有宿主显式配置才生效,SDK 不提供任何缺省放行项。
|
|
840
1114
|
*/
|
|
841
1115
|
preauthorized?: readonly PageActionKind[];
|
|
1116
|
+
/**
|
|
1117
|
+
* 「不再询问」的记忆端口(需求 11)。与 `preauthorized` 并列且互不引用:
|
|
1118
|
+
* 前者是宿主装配时写死的静态配置,后者是用户运行期一次一次攒出来的。
|
|
1119
|
+
*/
|
|
1120
|
+
consent?: PageActionConsent;
|
|
842
1121
|
now?(): string;
|
|
843
1122
|
}
|
|
844
1123
|
/**
|
|
@@ -896,4 +1175,150 @@ declare function createPageActionToolSource(options: PageActionToolSourceOptions
|
|
|
896
1175
|
*/
|
|
897
1176
|
declare const PAGE_ACTION_SYSTEM_PROMPT: string;
|
|
898
1177
|
//#endregion
|
|
899
|
-
|
|
1178
|
+
//#region src/downloads/types.d.ts
|
|
1179
|
+
/**
|
|
1180
|
+
* 一条已下载文件的目录项。
|
|
1181
|
+
* @experimental
|
|
1182
|
+
*/
|
|
1183
|
+
interface DownloadedFileEntry {
|
|
1184
|
+
/**
|
|
1185
|
+
* 不透明标识。**不得是路径,也不得可反推出路径**(FR-20.2):
|
|
1186
|
+
* 模型手里只该有一个宿主认得、别人认不出的取件号。
|
|
1187
|
+
*/
|
|
1188
|
+
id: string;
|
|
1189
|
+
name: string;
|
|
1190
|
+
contentType: string;
|
|
1191
|
+
size: number;
|
|
1192
|
+
/** ISO 8601,下载完成时刻 */
|
|
1193
|
+
at: string;
|
|
1194
|
+
}
|
|
1195
|
+
/** `list_downloaded_files` 下发给模型的条目:目录项 + 可读性判定 @experimental */
|
|
1196
|
+
interface DownloadedFileListing extends DownloadedFileEntry {
|
|
1197
|
+
readable: boolean;
|
|
1198
|
+
/** 不可读的原因(英文);可读时不存在 */
|
|
1199
|
+
reason?: string;
|
|
1200
|
+
}
|
|
1201
|
+
/**
|
|
1202
|
+
* 本机下载文件的取件实现(FR-20.1)。**不注入即整条通路不存在**——
|
|
1203
|
+
* 工具不注册,模型看不到它。
|
|
1204
|
+
* @experimental
|
|
1205
|
+
*/
|
|
1206
|
+
interface DownloadedFileReader {
|
|
1207
|
+
list(): Promise<readonly DownloadedFileEntry[]>;
|
|
1208
|
+
/**
|
|
1209
|
+
* 按不透明标识取字节。**`contentType` 必须由本方法重新给出**,
|
|
1210
|
+
* 不复用 `list()` 那次的值:两次调用之间文件可能被替换,
|
|
1211
|
+
* 信 list 的类型等于让「列出时是 csv、读取时是别的东西」这条路存在。
|
|
1212
|
+
*/
|
|
1213
|
+
read(id: string): Promise<{
|
|
1214
|
+
contentType: string;
|
|
1215
|
+
bytes: Uint8Array;
|
|
1216
|
+
}>;
|
|
1217
|
+
}
|
|
1218
|
+
/** 授权动作。列出与读取各自确认,措辞不同(D-20-3) @experimental */
|
|
1219
|
+
type DownloadedFileAction = 'list' | 'read';
|
|
1220
|
+
/**
|
|
1221
|
+
* 「不再询问」的记忆端口(D-20-2)。**存储与粒度归宿主**:
|
|
1222
|
+
* SDK 不认识「下载目录」这个概念,`remember` 记的是什么由装配方决定。
|
|
1223
|
+
*
|
|
1224
|
+
* 不注入即完全无记忆:确认卡不出复选框。
|
|
1225
|
+
* @experimental
|
|
1226
|
+
*/
|
|
1227
|
+
interface DownloadedFileConsent {
|
|
1228
|
+
recall(action: DownloadedFileAction, entry?: DownloadedFileEntry): boolean | Promise<boolean>;
|
|
1229
|
+
remember(action: DownloadedFileAction, entry?: DownloadedFileEntry): void | Promise<void>;
|
|
1230
|
+
/**
|
|
1231
|
+
* 复选框旁的文案。宿主不实现即用通用兜底串——
|
|
1232
|
+
* SDK 无权替宿主宣称记住的是「整个下载目录」,写死会变成谎报授权范围。
|
|
1233
|
+
*/
|
|
1234
|
+
describeScope?(action: DownloadedFileAction, entry?: DownloadedFileEntry): string | undefined;
|
|
1235
|
+
}
|
|
1236
|
+
/** 一次列出或读取的留痕(FR-20.5) @experimental */
|
|
1237
|
+
interface DownloadedFileRecord {
|
|
1238
|
+
at: string;
|
|
1239
|
+
action: DownloadedFileAction;
|
|
1240
|
+
/** `list` 时不存在:审计要回答「模型什么时候看过目录」,抄下整份清单是把一次披露变成两次 */
|
|
1241
|
+
name?: string;
|
|
1242
|
+
size?: number;
|
|
1243
|
+
contentType?: string;
|
|
1244
|
+
approved: boolean | 'remembered';
|
|
1245
|
+
ok: boolean;
|
|
1246
|
+
reason?: string;
|
|
1247
|
+
}
|
|
1248
|
+
/** 读取成功后交给工具层的形态;`kind` 决定它以哪种分片进上下文 @experimental */
|
|
1249
|
+
interface DownloadedFileReadResult {
|
|
1250
|
+
entry: DownloadedFileEntry;
|
|
1251
|
+
/** `read()` 重新给出的类型,不是 `entry.contentType` */
|
|
1252
|
+
contentType: string;
|
|
1253
|
+
kind: ChatAttachmentKind;
|
|
1254
|
+
/** `text` / `document-text`:已按上下文形态格式化并截断 */
|
|
1255
|
+
text?: string;
|
|
1256
|
+
/** `file` / `image`:原始字节 */
|
|
1257
|
+
bytes?: Uint8Array;
|
|
1258
|
+
}
|
|
1259
|
+
//#endregion
|
|
1260
|
+
//#region src/downloads/policy.d.ts
|
|
1261
|
+
/**
|
|
1262
|
+
* 授权卡的最小出口。与 `PageActionUi` 结构相同,宿主传同一个对象即可——
|
|
1263
|
+
* 不复用那个名字是因为「下载文件策略 import 一个叫 PageAction… 的类型」会被读成有依赖关系。
|
|
1264
|
+
* @experimental
|
|
1265
|
+
*/
|
|
1266
|
+
interface ConsentUi {
|
|
1267
|
+
request(input: InteractionRequest): Promise<InteractionResponse>;
|
|
1268
|
+
}
|
|
1269
|
+
interface DownloadedFilePolicyOptions {
|
|
1270
|
+
/** 取件实现。**不注入即整条通路不存在**:`enabled` 为 false,工具不注册(AC-20.1) */
|
|
1271
|
+
reader?: DownloadedFileReader;
|
|
1272
|
+
/**
|
|
1273
|
+
* 授权卡出口。**必填**:引擎的 `#confirm` 在没接 UI 桥时自动放行,
|
|
1274
|
+
* 那条 fail-open 的路对「读用户本机磁盘」不成立。接不上就构造不出策略。
|
|
1275
|
+
*/
|
|
1276
|
+
ui: ConsentUi;
|
|
1277
|
+
/** 能力开关(`sandbox.downloadedFiles`)。每次读取,设置改完立刻生效;缺省即**关闭** */
|
|
1278
|
+
capabilityEnabled?(): boolean;
|
|
1279
|
+
consent?: DownloadedFileConsent;
|
|
1280
|
+
audit?: PageAuditSink;
|
|
1281
|
+
/** 审计事件的 target(缺省 `downloads`) */
|
|
1282
|
+
auditTarget?: string;
|
|
1283
|
+
/** 选中模型能否读图(D-20-7)。缺省即**不能**:不知道就不给看 */
|
|
1284
|
+
imageCapable?(): boolean | Promise<boolean>;
|
|
1285
|
+
/** docx → 文本。必须与手动上传用的是**同一个**抽取器(AC-20.6) */
|
|
1286
|
+
docxExtractor?: DocxTextExtractor;
|
|
1287
|
+
/** xlsx → 文本。同上 */
|
|
1288
|
+
xlsxExtractor?: XlsxTextExtractor;
|
|
1289
|
+
now?(): string;
|
|
1290
|
+
}
|
|
1291
|
+
/**
|
|
1292
|
+
* 读取本机下载文件的策略(0.14.0 分册 20)。
|
|
1293
|
+
*
|
|
1294
|
+
* 三道闸门依次是:宿主有没有接端口并打开开关、用户认不认、文件类型读不读得了。
|
|
1295
|
+
* 模型能表达的只有「列目录」与「读这个取件号」——它没有任何指定路径的入口(AC-20.9)。
|
|
1296
|
+
* @experimental
|
|
1297
|
+
*/
|
|
1298
|
+
declare class DownloadedFilePolicy {
|
|
1299
|
+
#private;
|
|
1300
|
+
constructor(options: DownloadedFilePolicyOptions);
|
|
1301
|
+
/** 端口未注入或开关关闭即整个能力不存在(AC-20.1 / AC-20.2) */
|
|
1302
|
+
get enabled(): boolean;
|
|
1303
|
+
/** 最近的记录(只读展示用),新的在前 */
|
|
1304
|
+
get records(): readonly DownloadedFileRecord[];
|
|
1305
|
+
list(): Promise<readonly DownloadedFileListing[]>;
|
|
1306
|
+
read(id: string): Promise<DownloadedFileReadResult>;
|
|
1307
|
+
}
|
|
1308
|
+
//#endregion
|
|
1309
|
+
//#region src/downloads/toolSource.d.ts
|
|
1310
|
+
declare const LIST_DOWNLOADED_FILES_TOOL = "list_downloaded_files";
|
|
1311
|
+
declare const READ_DOWNLOADED_FILE_TOOL = "read_downloaded_file";
|
|
1312
|
+
interface DownloadedFileToolSourceOptions {
|
|
1313
|
+
policy: DownloadedFilePolicy;
|
|
1314
|
+
}
|
|
1315
|
+
/**
|
|
1316
|
+
* 把下载文件读取接到既有工具协议上。
|
|
1317
|
+
*
|
|
1318
|
+
* 端口未注入或能力开关关闭时 `listToolSpecs()` 返回空数组——
|
|
1319
|
+
* 模型连这两个工具的存在都看不到,而不是看得到再被拒(AC-20.1 / AC-20.2)。
|
|
1320
|
+
* @experimental
|
|
1321
|
+
*/
|
|
1322
|
+
declare function createDownloadedFileToolSource(options: DownloadedFileToolSourceOptions): ExternalToolSource;
|
|
1323
|
+
//#endregion
|
|
1324
|
+
export { PageActionOutcome as $, frameSteps as $t, DownloadedFilePolicyOptions as A, SkillGenerationToolSourceOptions as At, ImageCaptureBudget as B, TodoList as Bt, DelegationResult as C, PerceptionScopeInput as Ct, DownloadedFileEntry as D, SkillGenerationMessages as Dt, DownloadedFileConsent as E, SkillCandidateSink as Et, FrameNote as F, SubAgentRunInput as Ft, PAGE_ACTION_SYSTEM_PROMPT as G, createDelegationToolSource as Gt, MANAGE_TODO_TOOL as H, TodoStatus as Ht, FrameScope as I, SubAgentRunner as It, PERCEPTION_PAGING_DEFAULTS as J, createPageActionToolSource as Jt, PAGE_ACTION_TOOL as K, createDownloadedFileToolSource as Kt, GENERATE_SKILL_TOOL as L, TODO_SYSTEM_PROMPT as Lt, DownloadedFileReader as M, SkillGeneratorOptions as Mt, DownloadedFileRecord as N, SkillTraceEvidence as Nt, DownloadedFileListing as O, SkillGenerationOutcome as Ot, DownloadedFileToolSourceOptions as P, SkillTraceEvidenceStep as Pt, PageActionKind as Q, frameLabel as Qt, GeneratedSkillDraft as R, TodoEvent as Rt, DelegationRequest as S, PerceptionScope as St, DownloadedFileAction as T, SKILL_GENERATION_SYSTEM_PROMPT as Tt, NestedFrameRef as U, TodoStore as Ut, LIST_DOWNLOADED_FILES_TOOL as V, TodoListener as Vt, PAGE_ACTION_KINDS as W, TodoToolSourceOptions as Wt, PageActionConsent as X, createSkillGenerationToolSource as Xt, PERCEPTION_SYSTEM_PROMPT as Y, createPagePerceptionToolSource as Yt, PageActionExecutor as Z, createTodoToolSource as Zt, DataSourceRecord as _, PerceptionAuditSink as _t, DataSourceAuditSink as a, PageActionScopeInput as at, DelegationOrchestrator as b, PerceptionRecord as bt, DataSourceCandidatePolicy as c, PageActionUi as ct, DataSourceCandidateStore as d, PagePerceptionPolicyOptions as dt, toActionFrameScopes as en, PageActionPolicy as et, DataSourceDef as f, PagePerceptionReader as ft, DataSourceProvenance as g, PerceivedNode as gt, DataSourcePolicyOptions as h, PerceivedImage as ht, DELEGATION_SYSTEM_PROMPT as i, PageActionScope as it, DownloadedFileReadResult as j, SkillGenerator as jt, DownloadedFilePolicy as k, SkillGenerationPolicy as kt, DataSourceCandidatePolicyOptions as l, PageAuditSink as lt, DataSourcePolicy as m, ParentBudget as mt, ConsentUi as n, withDelegationOrigin as nn, PageActionRecord as nt, DataSourceCandidate as o, PageActionTarget as ot, DataSourceKind as p, PagePerceptionToolSourceOptions as pt, PERCEIVE_PAGE_TOOL as q, createHttpDataSourceTransport as qt, DELEGATE_TASK_TOOL as r, PageActionRequest as rt, DataSourceCandidateAuditSink as s, PageActionToolSourceOptions as st, ActionFrameScope as t, toFrameScopes as tn, PageActionPolicyOptions as tt, DataSourceCandidateRecord as u, PagePerceptionPolicy as ut, DataSourceTransport as v, PerceptionCaptureOptions as vt, DelegationToolSourceOptions as w, READ_DOWNLOADED_FILE_TOOL as wt, DelegationOrchestratorOptions as x, PerceptionResult as xt, DelegationBudget as y, PerceptionPagingBudget as yt, HttpDataSourceOptions as z, TodoItem as zt };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { C as UiSpecActionCapability, D as UiSpecSnapshot, Dt as UiSpecNode, K as JsonSchema, S as UiBridge, b as RenderResultRequest, c as InteractionResponse, r as ChartSpec, s as InteractionRequest, y as RenderBlock } from "./types-C3V6lAeO-BgeOvc1Y.js";
|
|
2
|
+
import { I as ExternalToolSource } from "./index-CWoKOFBP.js";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
import { ComponentType, ReactNode } from "react";
|
|
5
5
|
//#region ../ui/dist/index.d.ts
|