@webskill/chatbot 0.1.0 → 0.3.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/README.md +23 -15
- package/dist/chatbot.css +80 -36
- package/dist/index.d.ts +987 -97
- package/dist/index.js +6387 -1089
- package/package.json +5 -5
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { AgentLoopConfig, ApprovalScope, BridgeCapabilities, ExternalSkillProvider, ExternalToolSource, FileSystemProvider, HookRunner, InteractionRequest, InteractionResponse, LifecycleEventInit, LlmClient, NetworkPolicy, Page, PageQuery, RenderBlock, RenderResultRequest, RunSnapshot, RunSnapshotListEntry, ScriptExecutor, SessionStore, SkillCatalogEntry, SkillIntegrityGuard, SkillOutcomeReporter, SkillStateGuard, UiBridge, UiSpecDrafts, UiSpecEvent, UiSpecSnapshot, UiSurfaceActionRequest, UiSurfaceActionResponse } from "@webskill/sdk";
|
|
2
|
-
import { SandboxMode } from "@webskill/sdk/browser";
|
|
1
|
+
import { AgentLoopConfig, ApprovalScope, BridgeCapabilities, ExternalSkillProvider, ExternalToolSource, FileSystemProvider, HookRunner, InteractionRequest, InteractionResponse, LifecycleEventInit, LlmClient, NetworkPolicy, Page, PageQuery, RenderBlock, RenderResultRequest, RunSnapshot, RunSnapshotListEntry, RuntimePhase, ScriptExecutor, SessionStore, SkillCatalogEntry, SkillIntegrityGuard, SkillOutcomeReporter, SkillStateGuard, UiBridge, UiSpecDrafts, UiSpecEvent, UiSpecSnapshot, UiSurfaceActionRequest, UiSurfaceActionResponse, UserProfile, UserProfileEntry, UserProfileExport, WebSkillErrorCode, diffUserProfile } from "@webskill/sdk";
|
|
2
|
+
import { SandboxMode, TypeScriptSupportOptions } from "@webskill/sdk/browser";
|
|
3
3
|
import { CustomSurfaceActionEvent, ReactBridgeState, SpecInteractionChannel, SurfaceRegistry, UiSurfaceActionEvent } from "@webskill/sdk/ui-react";
|
|
4
|
+
import { PagePerceptionPolicy, PerceptionRecord, SkillCandidateSink, TodoItem } from "@webskill/sdk/agent";
|
|
4
5
|
import "react";
|
|
5
6
|
import "react/jsx-runtime";
|
|
6
7
|
//#region ../ui-kit/src/i18n/types.d.ts
|
|
@@ -81,19 +82,130 @@ interface RuntimeSandboxConfig {
|
|
|
81
82
|
* 这类由宿主发起的取数都按它判定。两项都默认关,即 https-only 且拒绝内网/环回。
|
|
82
83
|
*/
|
|
83
84
|
remoteUrl: RuntimeRemoteUrlConfig;
|
|
85
|
+
/** 浏览器沙箱的 TypeScript 支持;关闭时 `.ts` 脚本按 `TOOL_UNSUPPORTED` 拒绝 */
|
|
86
|
+
typescript: RuntimeTypeScriptConfig;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* 只做类型擦除,不做类型检查。`esbuildUrl` 为绝对 http(s) 地址时按 `remoteUrl` 判定;
|
|
90
|
+
* 同源相对路径与打包器 specifier 不属于出站请求,不参与判定。
|
|
91
|
+
*/
|
|
92
|
+
interface RuntimeTypeScriptConfig {
|
|
93
|
+
enabled: boolean;
|
|
94
|
+
/** esbuild-wasm 的 JS 入口地址;enabled 时必填 */
|
|
95
|
+
esbuildUrl?: string;
|
|
96
|
+
/** esbuild.wasm 二进制地址;缺省由 esbuild 自行推导 */
|
|
97
|
+
wasmUrl?: string;
|
|
84
98
|
}
|
|
85
99
|
/** 与 `@webskill/core` 的 `RemoteUrlPolicy` 同形,但两个字段都是必填(配置需要确定值) */
|
|
86
100
|
interface RuntimeRemoteUrlConfig {
|
|
87
101
|
allowHttp: boolean;
|
|
88
102
|
allowPrivateHosts: boolean;
|
|
89
103
|
}
|
|
90
|
-
|
|
91
|
-
|
|
104
|
+
/** `chrome-builtin` 走浏览器 Prompt API,无端点与密钥;其余三档是云端 HTTP 协议 */
|
|
105
|
+
type RuntimeLlmProvider = 'openai-compatible' | 'anthropic' | 'google' | 'chrome-builtin';
|
|
106
|
+
/**
|
|
107
|
+
* 单个模型的能力声明(FR-11.4 / FR-14.2)。`image` 缺省视为 `false`:
|
|
108
|
+
* 猜测支持会把图片发给纯文本模型,拿到的是 provider 的不可读报错。
|
|
109
|
+
* `tools` 反过来,缺省视为 `true`:云端模型几乎都支持,默认关会把存量配置里
|
|
110
|
+
* 没标能力的条目全部降级成纯对话。
|
|
111
|
+
* @experimental
|
|
112
|
+
*/
|
|
113
|
+
interface RuntimeLlmCapabilities {
|
|
114
|
+
image: boolean;
|
|
115
|
+
/** 是否支持原生工具调用;false 时 Agent 走纯对话路径 */
|
|
116
|
+
tools: boolean;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* 单个模型条目。`id` 稳定,会话记录与消息归属存的是它,用户改名不影响历史;
|
|
120
|
+
* `label` 只用于展示——同一个 `model` 可能配了两个不同的 `baseUrl`(公司代理与直连),
|
|
121
|
+
* 光看 `model` 区分不出来。
|
|
122
|
+
*/
|
|
123
|
+
interface RuntimeLlmEntry {
|
|
124
|
+
id: string;
|
|
125
|
+
label: string;
|
|
92
126
|
provider: RuntimeLlmProvider;
|
|
93
127
|
baseUrl?: string;
|
|
94
128
|
apiKey?: string;
|
|
95
129
|
model: string;
|
|
96
130
|
requestTimeoutMs?: number;
|
|
131
|
+
capabilities?: RuntimeLlmCapabilities;
|
|
132
|
+
}
|
|
133
|
+
/** 模型列表 + 默认项。`defaultId` 由 `mergeRuntimeConfigDefaults` 归一到真实存在的条目 */
|
|
134
|
+
interface RuntimeLlmSelection {
|
|
135
|
+
entries: readonly RuntimeLlmEntry[];
|
|
136
|
+
defaultId?: string;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Agent 能力开关(0.5.0)。默认值逐项经需求评审确定,不适用「新能力一律默认关」的通则。
|
|
140
|
+
* `todo`:待办清单,默认**开启**——不引入新攻击面、提示词体积远小于生成式 UI catalog,
|
|
141
|
+
* 且关闭时多步任务体验明显更差。
|
|
142
|
+
* `skillGeneration`:技能自动生成,默认**关闭**——会把对话内容写进持久化的候选,
|
|
143
|
+
* 属于新增攻击面(AC-G7 判据一)。
|
|
144
|
+
* `generativeUi`:生成式 UI,默认**关闭**——catalog 描述约 14 KB 计入每次请求。
|
|
145
|
+
* `uiPresets`:开放给模型的场景预设,默认全开——预设本体按需加载,
|
|
146
|
+
* 只有名字与一行摘要计入请求;置空列表等于完全关闭预设。
|
|
147
|
+
*/
|
|
148
|
+
interface RuntimeAgentCapabilitiesConfig {
|
|
149
|
+
todo: boolean;
|
|
150
|
+
skillGeneration: boolean;
|
|
151
|
+
generativeUi: boolean;
|
|
152
|
+
/** 串行委派(FR-11.8):默认关。一句话可能展开成多个子 run,调用量对用户不可预期 */
|
|
153
|
+
delegation: boolean;
|
|
154
|
+
uiPresets: string[];
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* 未签名技能的处置策略(与 core 的 `UnsignedPolicy` 同形,配置层独立命名)。
|
|
158
|
+
* 默认 `'warn'` 由需求评审定下(FR-1.2):`deny` 会让现存未签名技能立即不可用,
|
|
159
|
+
* 且默认信任库为空时接受集为空;`allow` 等于策略不存在。
|
|
160
|
+
*/
|
|
161
|
+
type UnsignedSkillPolicy = 'allow' | 'warn' | 'deny';
|
|
162
|
+
interface RuntimeSecurityConfig {
|
|
163
|
+
unsignedSkills: UnsignedSkillPolicy;
|
|
164
|
+
}
|
|
165
|
+
/** 生成式 UI 的渲染器档位。ui-kit 不依赖 `@webskill/ui`,因此这里写字面量联合 @experimental */
|
|
166
|
+
type RuntimeRendererId = 'native' | 'a2ui' | 'openui' | 'vercel';
|
|
167
|
+
/**
|
|
168
|
+
* 外观配置(0.6.0 FR-20.1)。0.5.x 之前外观由宿主自持并单独存一份,
|
|
169
|
+
* 导致 chatbot 与 console 各看各的;纳入 `RuntimeConfig` 后两端共用同一份。
|
|
170
|
+
* `dictationLang` 只对 chatbot 有意义(console 无语音输入),但同属外观段。
|
|
171
|
+
* @experimental
|
|
172
|
+
*/
|
|
173
|
+
interface RuntimeAppearanceConfig {
|
|
174
|
+
theme: 'light' | 'dark';
|
|
175
|
+
locale: Locale;
|
|
176
|
+
renderer: RuntimeRendererId;
|
|
177
|
+
dictationLang: string;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* 多模态输入配置(0.6.0 FR-11.3 / FR-11.6 / FR-12.3)。
|
|
181
|
+
* `imageAttachments` 与 `pageImageCapture` 默认都关(AC-G5):
|
|
182
|
+
* 两者都会把图像随请求外发给模型提供方,属新增攻击面。
|
|
183
|
+
* @experimental
|
|
184
|
+
*/
|
|
185
|
+
interface RuntimeMultimodalConfig {
|
|
186
|
+
imageAttachments: boolean;
|
|
187
|
+
/** 页面图像抓取总开关(FR-12.3);关时感知只走纯文本路径 */
|
|
188
|
+
pageImageCapture: boolean;
|
|
189
|
+
/** 附件与取像共用 */
|
|
190
|
+
maxImageBytes: number;
|
|
191
|
+
/** 附件与取像共用 */
|
|
192
|
+
maxImagesPerMessage: number;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* 用户画像配置(0.6.0 FR-19.6)。`enabled` 默认**关**(AC-G5):
|
|
196
|
+
* 开启后会把用户的提问与填写持久化到本地,属新增攻击面;
|
|
197
|
+
* `encrypted` 默认**开**——它不新增采集,只决定已采集的数据怎么落盘,默认明文无正当理由。
|
|
198
|
+
* chatbot 与 console 共用这一份。
|
|
199
|
+
* @experimental
|
|
200
|
+
*/
|
|
201
|
+
interface RuntimeUserProfileConfig {
|
|
202
|
+
enabled: boolean;
|
|
203
|
+
/** 画像注入系统提示的字节上限(FR-19.4) */
|
|
204
|
+
injectMaxBytes: number;
|
|
205
|
+
/** 行为记录容量上限,超出淘汰最旧(FR-19.2) */
|
|
206
|
+
recordLimit: number;
|
|
207
|
+
/** 本地存储加密(FR-19.5) */
|
|
208
|
+
encrypted: boolean;
|
|
97
209
|
}
|
|
98
210
|
/** @experimental */
|
|
99
211
|
interface RuntimeConfig {
|
|
@@ -106,7 +218,14 @@ interface RuntimeConfig {
|
|
|
106
218
|
streaming: boolean;
|
|
107
219
|
renderResult: boolean;
|
|
108
220
|
sandbox: RuntimeSandboxConfig;
|
|
109
|
-
llm:
|
|
221
|
+
llm: RuntimeLlmSelection;
|
|
222
|
+
agentCapabilities: RuntimeAgentCapabilitiesConfig;
|
|
223
|
+
security: RuntimeSecurityConfig;
|
|
224
|
+
appearance: RuntimeAppearanceConfig;
|
|
225
|
+
multimodal: RuntimeMultimodalConfig;
|
|
226
|
+
userProfile: RuntimeUserProfileConfig;
|
|
227
|
+
/** 被用户删掉的自动模型条目 id(FR-14.3):删一次就不该再自己长回来 */
|
|
228
|
+
dismissedAutoEntries: readonly string[];
|
|
110
229
|
}
|
|
111
230
|
/** @experimental */
|
|
112
231
|
interface RuntimeConfigStore {
|
|
@@ -119,7 +238,41 @@ interface RuntimeConfigStore {
|
|
|
119
238
|
load(): Promise<RuntimeConfig>;
|
|
120
239
|
save(config: RuntimeConfig): Promise<void>;
|
|
121
240
|
reset(): Promise<void>;
|
|
241
|
+
/**
|
|
242
|
+
* Subscribes to configuration changes; returns an unsubscribe function.
|
|
243
|
+
* Optional: stores without it degrade to the previous behaviour where hosts
|
|
244
|
+
* remount consumers after a save.
|
|
245
|
+
*/
|
|
246
|
+
subscribe?(listener: () => void): () => void;
|
|
247
|
+
}
|
|
248
|
+
//#endregion
|
|
249
|
+
//#region ../ui-kit/src/runtime-config/stores.d.ts
|
|
250
|
+
/**
|
|
251
|
+
* `RuntimeConfigStore` 的两个实现(0.6.0 FR-20.1)。0.5.x 之前 SDK 只有接口没有实现,
|
|
252
|
+
* 每个宿主自己写一份 localStorage 读写,「chatbot 与 console 读同一份配置」靠宿主恰好传了
|
|
253
|
+
* 同一个对象,不是 SDK 保证。
|
|
254
|
+
*/
|
|
255
|
+
/** 默认存储键;外观也在这份配置里,宿主不应再开第二个键存主题 @experimental */
|
|
256
|
+
declare const DEFAULT_RUNTIME_CONFIG_STORAGE_KEY = "webskill.runtime-config";
|
|
257
|
+
/** @experimental */
|
|
258
|
+
interface LocalStorageRuntimeConfigStoreOptions {
|
|
259
|
+
key?: string;
|
|
260
|
+
/** 注入存储实现,便于测试与非 window 环境;缺省取 `globalThis.localStorage` */
|
|
261
|
+
storage?: Storage;
|
|
122
262
|
}
|
|
263
|
+
/**
|
|
264
|
+
* localStorage 实现。跨标签页同步经 `storage` 事件——该事件只在**其他**标签页写入时触发,
|
|
265
|
+
* 因此本标签页 `save()` 后需要自行通知订阅者。
|
|
266
|
+
* 存储不可用(SSR、隐私模式、配额满)时退化为内存,不抛错:配置读写失败不该让宿主白屏。
|
|
267
|
+
* @experimental
|
|
268
|
+
*/
|
|
269
|
+
declare function createLocalStorageRuntimeConfigStore(options?: LocalStorageRuntimeConfigStoreOptions): RuntimeConfigStore;
|
|
270
|
+
/** 内存实现:测试、SSR、以及宿主明确不想持久化时使用。 @experimental */
|
|
271
|
+
declare function createMemoryRuntimeConfigStore(initial?: Partial<RuntimeConfig>): RuntimeConfigStore;
|
|
272
|
+
//#endregion
|
|
273
|
+
//#region src/core/attachmentKind.d.ts
|
|
274
|
+
/** 附件在模型侧的内容形态(0.6.0 FR-11.2) @experimental */
|
|
275
|
+
type ChatAttachmentKind = 'text' | 'image' | 'file';
|
|
123
276
|
//#endregion
|
|
124
277
|
//#region src/core/types.d.ts
|
|
125
278
|
/**
|
|
@@ -156,12 +309,6 @@ type LifecycleChatEvent = WithChatMeta<LifecycleEventInit>;
|
|
|
156
309
|
* @experimental
|
|
157
310
|
*/
|
|
158
311
|
type RendererKind = 'native' | 'a2ui' | 'openui' | 'vercel';
|
|
159
|
-
/** OpenAI 兼容端点配置(全部缺省时使用内置演示 LLM) @stable */
|
|
160
|
-
interface LlmConfig {
|
|
161
|
-
baseUrl?: string;
|
|
162
|
-
apiKey?: string;
|
|
163
|
-
model?: string;
|
|
164
|
-
}
|
|
165
312
|
/** assistant 消息所属 run 的一次工具调用(终态:completed/failed) @stable */
|
|
166
313
|
interface ChatToolCall {
|
|
167
314
|
callId: string;
|
|
@@ -171,6 +318,13 @@ interface ChatToolCall {
|
|
|
171
318
|
args?: string;
|
|
172
319
|
/** 执行耗时(trace completed/failed 回填;live 由 started→终态计时) */
|
|
173
320
|
durationMs?: number;
|
|
321
|
+
/**
|
|
322
|
+
* failed 时的结构化错误码(如 `TOOL_NOT_ALLOWED`)。
|
|
323
|
+
* 「被策略拒绝」与「执行失败」在 UI 上是两回事,靠错误码区分而不是解析文案。
|
|
324
|
+
*/
|
|
325
|
+
errorCode?: string;
|
|
326
|
+
/** failed 时的错误说明(拒绝时即「被哪条策略拒绝」) */
|
|
327
|
+
errorMessage?: string;
|
|
174
328
|
}
|
|
175
329
|
/** 已落盘的待发送附件(composer 附件适配器产出) @experimental */
|
|
176
330
|
interface ChatAttachmentInput {
|
|
@@ -180,11 +334,32 @@ interface ChatAttachmentInput {
|
|
|
180
334
|
/** 相对 `attachmentsRoot` 的路径 */
|
|
181
335
|
path: string;
|
|
182
336
|
size: number;
|
|
337
|
+
/** 注入模型的内容形态;决定 send 时读文本还是读二进制 */
|
|
338
|
+
kind: ChatAttachmentKind;
|
|
339
|
+
/** 图片经压缩时的原始字节数,供 UI 显示「3.2 MB → 1.8 MB」(FR-11.3) */
|
|
340
|
+
originalSize?: number;
|
|
183
341
|
}
|
|
184
342
|
/** 随消息持久化的附件元数据 @experimental */
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
343
|
+
type ChatAttachmentMeta = ChatAttachmentInput;
|
|
344
|
+
/**
|
|
345
|
+
* 归并后的显示相位。进行中通道与历史通道共用这一个结构:
|
|
346
|
+
* 各存一份正是「运行细节首轮后消失」的根因(需求 17 条目 10-6)。
|
|
347
|
+
* @experimental
|
|
348
|
+
*/
|
|
349
|
+
interface ChatRunPhase {
|
|
350
|
+
phase: RuntimePhase;
|
|
351
|
+
at: number;
|
|
352
|
+
/** 下一个步进到达时回填 */
|
|
353
|
+
endedAt?: number;
|
|
354
|
+
/** 由结构化 `LifecycleEvent.data` 派生的一句摘要 */
|
|
355
|
+
note?: string;
|
|
356
|
+
}
|
|
357
|
+
/** 本轮发生的一次已提交交互(FR-17.8:提交后表单保留所填值) @experimental */
|
|
358
|
+
interface ChatInteractionRecord {
|
|
359
|
+
id: string;
|
|
360
|
+
request: InteractionRequest;
|
|
361
|
+
/** 提交时的表单值;文件类字段已在引擎侧脱敏 */
|
|
362
|
+
submittedValues?: unknown;
|
|
188
363
|
}
|
|
189
364
|
/** @stable */
|
|
190
365
|
interface ChatMessage {
|
|
@@ -194,6 +369,12 @@ interface ChatMessage {
|
|
|
194
369
|
ts: string;
|
|
195
370
|
/** user 消息携带的附件(旧会话文件无该字段) */
|
|
196
371
|
attachments?: ChatAttachmentMeta[];
|
|
372
|
+
/**
|
|
373
|
+
* 随消息持久化的系统提示(例如「图片超出数量上限,未发送 X」,FR-11.3)。
|
|
374
|
+
* 放在消息里而不是 toast:toast 会消失,用户回头就查不到这次到底发了什么。
|
|
375
|
+
* @experimental
|
|
376
|
+
*/
|
|
377
|
+
notice?: string;
|
|
197
378
|
/** assistant 消息所属 run */
|
|
198
379
|
runId?: string;
|
|
199
380
|
/** 该 run 激活的技能(消息底部 badges) */
|
|
@@ -207,6 +388,31 @@ interface ChatMessage {
|
|
|
207
388
|
blocks?: RenderBlock[];
|
|
208
389
|
/** The completed generative UI surfaces emitted by this run, retained for history replay. */
|
|
209
390
|
surfaces?: UiSpecSnapshot[];
|
|
391
|
+
/** 该 run 的待办清单终态(历史消息重放;未产生清单时缺省) */
|
|
392
|
+
todos?: TodoItem[];
|
|
393
|
+
/**
|
|
394
|
+
* 该 run 内发生的页面只读感知(需求 10 FR-10.5)。
|
|
395
|
+
* 随消息持久化而不只在运行中闪现——事后仍能查到「那一次它读了哪些区域」。
|
|
396
|
+
* @experimental
|
|
397
|
+
*/
|
|
398
|
+
perceptions?: PerceptionRecord[];
|
|
399
|
+
/**
|
|
400
|
+
* 发出本轮请求的模型条目 id(`RuntimeConfig.llm.entries[].id`)。
|
|
401
|
+
* 写在消息上而不是会话上:切换模型只对后续消息生效,已有消息的归属不能被改写。
|
|
402
|
+
*/
|
|
403
|
+
model?: string;
|
|
404
|
+
/**
|
|
405
|
+
* 该轮的生命周期相位快照(FR-17.7)。不持久化它,live 状态一丢「运行细节」入口就消失,
|
|
406
|
+
* 表现为容器高度先减后增。
|
|
407
|
+
* @experimental
|
|
408
|
+
*/
|
|
409
|
+
phases?: ChatRunPhase[];
|
|
410
|
+
/**
|
|
411
|
+
* 该轮发生的交互及其终态(FR-17.8)。交互卡归属发起它的那条消息,
|
|
412
|
+
* 后续结果另开新消息,而不是就地改写原表单。
|
|
413
|
+
* @experimental
|
|
414
|
+
*/
|
|
415
|
+
interactions?: ChatInteractionRecord[];
|
|
210
416
|
}
|
|
211
417
|
/** @stable */
|
|
212
418
|
interface ChatSessionMeta {
|
|
@@ -218,6 +424,17 @@ interface ChatSessionMeta {
|
|
|
218
424
|
/** 用户已手动重命名:后续 send 不再用首条消息覆盖标题 */
|
|
219
425
|
titleLocked?: boolean;
|
|
220
426
|
}
|
|
427
|
+
/**
|
|
428
|
+
* 会话列表页:除了数据,还得告诉 UI「为什么是空的」(FR-21.4 / FR-21.11)。 @experimental
|
|
429
|
+
*/
|
|
430
|
+
interface ChatSessionListResult {
|
|
431
|
+
items: ChatSessionMeta[];
|
|
432
|
+
nextCursor?: string;
|
|
433
|
+
/** `'ok'` = 正常列举;`'missing-root'` = 会话目录不存在(多半是 chatRoot 配错) */
|
|
434
|
+
source: 'ok' | 'missing-root';
|
|
435
|
+
/** 读不动而被跳过的会话文件名 */
|
|
436
|
+
skipped: readonly string[];
|
|
437
|
+
}
|
|
221
438
|
/** @stable */
|
|
222
439
|
type ChatEvent = {
|
|
223
440
|
type: 'run-started';
|
|
@@ -251,16 +468,29 @@ type ChatEvent = {
|
|
|
251
468
|
callId: string;
|
|
252
469
|
name: string;
|
|
253
470
|
args?: string;
|
|
471
|
+
errorCode?: string;
|
|
254
472
|
} | {
|
|
255
473
|
type: 'run-completed';
|
|
256
474
|
runId: string;
|
|
257
475
|
status: 'completed' | 'failed' | 'cancelled';
|
|
258
476
|
output: string;
|
|
259
477
|
activeSkillNames: string[];
|
|
478
|
+
/** 终止原因对应的稳定错误码(仅非正常结束时):UI 据此分类提示,不再压平为 RUN_FAILED */
|
|
479
|
+
code?: WebSkillErrorCode;
|
|
480
|
+
} | {
|
|
481
|
+
type: 'todo-changed';
|
|
482
|
+
runId: string;
|
|
483
|
+
items: readonly TodoItem[];
|
|
484
|
+
} | {
|
|
485
|
+
type: 'page-perceived';
|
|
486
|
+
runId: string;
|
|
487
|
+
record: PerceptionRecord;
|
|
260
488
|
} | {
|
|
261
489
|
type: 'interaction-requested';
|
|
262
490
|
id: string;
|
|
263
491
|
requestType: InteractionRequest['type'];
|
|
492
|
+
/** 等待对象的可读名称(表单标题 / 问题正文):等待指示器要说清在等什么(FR-21.3) */
|
|
493
|
+
label?: string;
|
|
264
494
|
} | {
|
|
265
495
|
type: 'interaction-resolved';
|
|
266
496
|
id: string;
|
|
@@ -269,6 +499,21 @@ type ChatEvent = {
|
|
|
269
499
|
} | LifecycleChatEvent | {
|
|
270
500
|
type: 'session-updated';
|
|
271
501
|
session: ChatSessionMeta;
|
|
502
|
+
} |
|
|
503
|
+
/**
|
|
504
|
+
* 会话结束(需求 19 FR-19.3):切换、删除、归档、引擎释放各算一次。
|
|
505
|
+
* 用户画像的自动提炼挂在这个事件上——没有它就只能靠定时器猜「聊完了没」。
|
|
506
|
+
* @experimental
|
|
507
|
+
*/
|
|
508
|
+
{
|
|
509
|
+
type: 'session-ended';
|
|
510
|
+
sessionId: string;
|
|
511
|
+
reason: 'switched' | 'deleted' | 'archived' | 'closed';
|
|
512
|
+
} |
|
|
513
|
+
/** 画像提炼完成(需求 19 FR-19.3):设置面板据此刷新列表 @experimental */
|
|
514
|
+
{
|
|
515
|
+
type: 'user-profile-updated';
|
|
516
|
+
profile: UserProfile;
|
|
272
517
|
} | {
|
|
273
518
|
type: 'warning';
|
|
274
519
|
message: string;
|
|
@@ -285,7 +530,7 @@ interface ChatbotConfig {
|
|
|
285
530
|
placeholder?: string;
|
|
286
531
|
/** 会话/trace/artifact 存储根,默认 '/chat' */
|
|
287
532
|
chatRoot?: string;
|
|
288
|
-
/** 覆盖 LLM(缺省走
|
|
533
|
+
/** 覆盖 LLM(缺省走 `RuntimeConfig.llm` → 内置演示 LLM 的选择链) */
|
|
289
534
|
llm?: LlmClient;
|
|
290
535
|
/** AgentLoop 调参(maxTurns、超时等) */
|
|
291
536
|
loopConfig?: AgentLoopConfig;
|
|
@@ -299,6 +544,9 @@ interface ChatbotConfig {
|
|
|
299
544
|
/**
|
|
300
545
|
* 开启后模型多一个 `render_ui` 工具,可面向 AI Component Catalog 直接生成声明式 UI。
|
|
301
546
|
* 默认关:工具描述 + 入参 schema 约 14 KB,会计入每一次请求。
|
|
547
|
+
*
|
|
548
|
+
* 接了 `runtimeConfig` 时以 `RuntimeConfig.agentCapabilities.generativeUi` 为准
|
|
549
|
+
* (设置抽屉里的开关就是它),本字段只在未接配置存储的宿主上生效。
|
|
302
550
|
*/
|
|
303
551
|
generativeUi?: boolean;
|
|
304
552
|
/** 宿主注册好钩子的 `HookRunner`;执行策略(超时/严格模式)按 `RuntimeConfig.hooks` 应用 */
|
|
@@ -308,22 +556,24 @@ interface ChatbotConfig {
|
|
|
308
556
|
* 不注入即完全关闭,行为与 0.0.2 一致。
|
|
309
557
|
*/
|
|
310
558
|
governance?: ChatbotGovernancePorts;
|
|
559
|
+
/**
|
|
560
|
+
* 技能自动生成的候选收货端(需求 9):透传给 `ChatEngineOptions.skillCandidates`。
|
|
561
|
+
* 开关只决定工具进不进列表,候选往哪存由宙主注入;不注入时工具返回
|
|
562
|
+
* `SKILL_GENERATION_DISABLED`,不弹确认框、不产生候选。
|
|
563
|
+
*/
|
|
564
|
+
skillCandidates?: SkillCandidateSink;
|
|
311
565
|
}
|
|
312
566
|
//#endregion
|
|
313
567
|
//#region src/core/hostAdapter.d.ts
|
|
314
568
|
/**
|
|
315
569
|
* 宿主装配口:chatbot 不感知环境(浏览器/Node),全部能力经此注入。
|
|
316
570
|
* 页面动态技能来源同时是外部工具来源与外部技能提供者(同一对象两个 port)。
|
|
571
|
+
* LLM 配置不在这里——它统一由 `RuntimeConfigStore` 承载(0.5.0 起)。
|
|
317
572
|
* @stable
|
|
318
573
|
*/
|
|
319
574
|
interface ChatbotHostAdapter {
|
|
320
575
|
storage: FileSystemProvider;
|
|
321
576
|
skillRoots: string[];
|
|
322
|
-
llmConfig: {
|
|
323
|
-
load(): Promise<LlmConfig | undefined>;
|
|
324
|
-
save(config: LlmConfig): Promise<void>;
|
|
325
|
-
clear(): Promise<void>;
|
|
326
|
-
};
|
|
327
577
|
pageSkillSource?: ExternalToolSource & ExternalSkillProvider;
|
|
328
578
|
navigation: {
|
|
329
579
|
openConsole(): void;
|
|
@@ -332,6 +582,13 @@ interface ChatbotHostAdapter {
|
|
|
332
582
|
};
|
|
333
583
|
/** 缺省 BrowserWorkerScriptExecutor(@webskill/browser);Node 宿主可注入自己的执行器 */
|
|
334
584
|
executor?: ScriptExecutor;
|
|
585
|
+
/**
|
|
586
|
+
* 页面只读感知策略(需求 10)。**只能在这里注入**:启用与否是宿主侧配置,
|
|
587
|
+
* 设置抽屉里没有也不会有开关(FR-10.1)——风险由部署方承担,
|
|
588
|
+
* 不应交给终端用户随手勾选。
|
|
589
|
+
* @experimental
|
|
590
|
+
*/
|
|
591
|
+
pagePerception?: PagePerceptionPolicy;
|
|
335
592
|
}
|
|
336
593
|
//#endregion
|
|
337
594
|
//#region src/core/chatEngine.d.ts
|
|
@@ -343,6 +600,8 @@ interface SandboxExecutorDeps {
|
|
|
343
600
|
capabilities?: BridgeCapabilities;
|
|
344
601
|
approvalScope?: ApprovalScope;
|
|
345
602
|
uiBridge?: UiBridge;
|
|
603
|
+
/** 缺省时 `.ts` 脚本按 `TOOL_UNSUPPORTED` 拒绝 */
|
|
604
|
+
typescript?: TypeScriptSupportOptions;
|
|
346
605
|
}
|
|
347
606
|
/** @stable */
|
|
348
607
|
interface ChatEngineOptions {
|
|
@@ -353,7 +612,12 @@ interface ChatEngineOptions {
|
|
|
353
612
|
runtimeConfig?: RuntimeConfigStore;
|
|
354
613
|
/** 初始渲染框架档(默认 'native';运行中可 setRenderer 热切换) */
|
|
355
614
|
renderer?: RendererKind;
|
|
356
|
-
/**
|
|
615
|
+
/**
|
|
616
|
+
* 注入 `render_ui` 工具,让模型面向 AI Component Catalog 生成声明式 UI。
|
|
617
|
+
*
|
|
618
|
+
* 注入了 `runtimeConfig` 时**以 `RuntimeConfig.agentCapabilities.generativeUi` 为准**,
|
|
619
|
+
* 本字段只在未接配置存储的宿主上生效(否则设置面板里的开关点了不算数)。
|
|
620
|
+
*/
|
|
357
621
|
generativeUi?: boolean;
|
|
358
622
|
/** 沙箱执行器替换点(测试注入 spy 断言构造参数;缺省 BrowserWorkerScriptExecutor) */
|
|
359
623
|
executorFactory?: (deps: SandboxExecutorDeps) => ScriptExecutor;
|
|
@@ -377,18 +641,37 @@ interface ChatEngineOptions {
|
|
|
377
641
|
* 却仍旧照常路由和执行,降级形同虚设。
|
|
378
642
|
*/
|
|
379
643
|
governance?: ChatbotGovernancePorts;
|
|
644
|
+
/**
|
|
645
|
+
* 技能自动生成的候选收货端(需求 12 号)。与 `governance` 同理,装配点在宿主:
|
|
646
|
+
* `@webskill/governance` 的 `createCandidateSink()` 是现成实现。
|
|
647
|
+
*
|
|
648
|
+
* 开关另在 `RuntimeConfig.agentCapabilities.skillGeneration`(默认关);
|
|
649
|
+
* 开关开但未注入本端口时,工具会把 `SKILL_GENERATION_DISABLED` 回给模型。
|
|
650
|
+
*/
|
|
651
|
+
skillCandidates?: SkillCandidateSink;
|
|
380
652
|
}
|
|
381
653
|
/**
|
|
382
654
|
* 对话框引擎:装配 WebSkillRuntime + 会话持久化 + 事件分发。
|
|
383
|
-
*
|
|
655
|
+
* RuntimeConfig 的 load() 是异步的,runtime 在首次 send 前懒装配(#ensureReady)。
|
|
384
656
|
* @stable
|
|
385
657
|
*/
|
|
386
658
|
declare class ChatEngine {
|
|
387
659
|
#private;
|
|
388
660
|
readonly bridge: ReactBridgeState;
|
|
389
661
|
constructor(adapter: ChatbotHostAdapter, options?: ChatEngineOptions);
|
|
662
|
+
/** 当前待办清单快照(宿主可直读;实时更新订阅 `todo-changed` 事件) */
|
|
663
|
+
get todos(): readonly TodoItem[];
|
|
390
664
|
/** 当前渲染框架档 */
|
|
391
665
|
get renderer(): RendererKind;
|
|
666
|
+
/** 当前会话选中的模型条目 id;未显式切换过时为 undefined(走 `RuntimeConfig.llm.defaultId`) */
|
|
667
|
+
get modelId(): string | undefined;
|
|
668
|
+
/**
|
|
669
|
+
* 切换本会话后续消息使用的模型条目(需求 4)。传 `undefined` 回到配置里的默认项。
|
|
670
|
+
* 重装配 runtime 以换掉客户端;已落盘的消息不受影响。
|
|
671
|
+
*/
|
|
672
|
+
setModel(entryId: string | undefined): void;
|
|
673
|
+
/** 会话文件所在目录:「存储未初始化」提示要把路径写给用户看 @experimental */
|
|
674
|
+
get sessionsRoot(): string;
|
|
392
675
|
/** 渲染框架热切换:复合桥按档分发,无需重装配 runtime(会话句柄保留) */
|
|
393
676
|
setRenderer(renderer: RendererKind): void;
|
|
394
677
|
/** 非 native 三档共用的交互通道(Chatbot 的 SpecInteraction 订阅/attach;core 只产出 catalog 节点树) */
|
|
@@ -401,14 +684,15 @@ declare class ChatEngine {
|
|
|
401
684
|
* runtime/llm/会话句柄,下次 send 重新装配(RuntimeConfig 重新 load() 应用)
|
|
402
685
|
*/
|
|
403
686
|
reloadConfig(): void;
|
|
404
|
-
/** 旧名保留(与 reloadConfig 同语义,向后兼容) */
|
|
405
|
-
reloadLlm(): void;
|
|
406
687
|
/**
|
|
407
688
|
* 会话列表页。归档会话也返回:UI 自己分区展示。
|
|
408
689
|
* `limit` 不给默认值——缺省属于 `SessionStore` 实现,在这里兜底就等于只下推了一半。
|
|
409
690
|
*/
|
|
410
|
-
listSessions(options?: PageQuery): Promise<
|
|
411
|
-
|
|
691
|
+
listSessions(options?: PageQuery): Promise<ChatSessionListResult>;
|
|
692
|
+
/** `title` 缺省时会话先无标题,首条消息发出时再按内容补(FR-21.8) */
|
|
693
|
+
createSession(options?: {
|
|
694
|
+
title?: string;
|
|
695
|
+
}): Promise<ChatSessionMeta>;
|
|
412
696
|
/**
|
|
413
697
|
* 选中会话并取**最新**一页历史(页内时间升序)。
|
|
414
698
|
* 返回全量 `ChatMessage[]` 的旧签名已移除:长会话下它强迫每个调用方拿全量。
|
|
@@ -437,13 +721,18 @@ declare class ChatEngine {
|
|
|
437
721
|
/**
|
|
438
722
|
* 驱动当前 session 的一轮 run。同 session 并发由 runtime session handle 内部
|
|
439
723
|
* 队列串行化(此处直接 await);UI 层应在 send 期间禁用输入。
|
|
440
|
-
*
|
|
724
|
+
* 附件按 `attachmentsRoot` 内的路径读回并构造 `LlmContentPart[]`(FR-11.2)。
|
|
441
725
|
*/
|
|
442
726
|
send(text: string, attachments?: readonly ChatAttachmentInput[]): Promise<void>;
|
|
443
727
|
/** 附件落盘根目录(composer 附件适配器写入,send 时读回) */
|
|
444
728
|
get attachmentsRoot(): string;
|
|
445
729
|
/** 取消进行中的 run(Composer Stop 按钮);run 未找到/已结束返回 false */
|
|
446
730
|
cancel(runId: string): boolean;
|
|
731
|
+
/**
|
|
732
|
+
* 释放引擎:取消进行中的 run、退订全部事件、丢弃装配缓存。
|
|
733
|
+
* 宿主重挂组件时用它收尾;只是换配置的话用 `reloadConfig()`,不要 dispose。
|
|
734
|
+
*/
|
|
735
|
+
dispose(): Promise<void>;
|
|
447
736
|
/** 列出 interrupted run(InterruptedBanner 数据源);版本不受支持的项带 unsupported 标记 */
|
|
448
737
|
listInterrupted(): Promise<RunSnapshotListEntry[]>;
|
|
449
738
|
/**
|
|
@@ -451,6 +740,36 @@ declare class ChatEngine {
|
|
|
451
740
|
* 完成后与 send 同路径(assistant 消息持久化 + run-completed + trace 落盘)。
|
|
452
741
|
*/
|
|
453
742
|
resume(runId: string): Promise<void>;
|
|
743
|
+
/** 读取当前画像(FR-19.3:可见) @experimental */
|
|
744
|
+
readUserProfile(): Promise<UserProfile>;
|
|
745
|
+
/** 已记录的行为条数;设置面板用它告诉用户「清除」会删掉什么 @experimental */
|
|
746
|
+
countBehaviorRecords(): Promise<number>;
|
|
747
|
+
/** 删除单条画像结论(FR-19.3:可编辑可删除) @experimental */
|
|
748
|
+
deleteUserProfileEntry(id: string): Promise<UserProfile>;
|
|
749
|
+
/** 清除全部行为记录(FR-19.8)。与清除画像是两个独立操作 @experimental */
|
|
750
|
+
clearBehaviorRecords(): Promise<void>;
|
|
751
|
+
/** 清除提炼出的画像(FR-19.8) @experimental */
|
|
752
|
+
clearUserProfile(): Promise<void>;
|
|
753
|
+
/**
|
|
754
|
+
* 一并清除记录与画像,并销毁加密密钥(FR-19.8:关闭总开关时的「一并清除」)。
|
|
755
|
+
* 密钥留着就等于给残留密文留了一把能解开的钥匙。
|
|
756
|
+
* @experimental
|
|
757
|
+
*/
|
|
758
|
+
clearUserProfileData(): Promise<void>;
|
|
759
|
+
/**
|
|
760
|
+
* 手动提炼(FR-19.3)。与会话结束后的自动提炼同一条路径,
|
|
761
|
+
* 区别只在于这里的失败会抛给调用方——用户点了按钮就该看到结果。
|
|
762
|
+
* @experimental
|
|
763
|
+
*/
|
|
764
|
+
refineUserProfile(): Promise<UserProfile>;
|
|
765
|
+
/** 导出画像(FR-19.7)。`excludeIds` 来自导出前的审阅界面 @experimental */
|
|
766
|
+
exportUserProfile(excludeIds?: readonly string[]): Promise<UserProfileExport>;
|
|
767
|
+
/** 导入前的差异(FR-19.7):由 UI 展示并确认后才调用 `applyUserProfileImport` @experimental */
|
|
768
|
+
diffUserProfileImport(incoming: UserProfileExport): Promise<ReturnType<typeof diffUserProfile> & {
|
|
769
|
+
origin: string;
|
|
770
|
+
}>;
|
|
771
|
+
/** 确认后落库(FR-19.7) @experimental */
|
|
772
|
+
applyUserProfileImport(incoming: UserProfileExport): Promise<UserProfile>;
|
|
454
773
|
}
|
|
455
774
|
//#endregion
|
|
456
775
|
//#region src/core/interactionBridge.d.ts
|
|
@@ -499,6 +818,12 @@ interface CompositeUiBridgeDeps {
|
|
|
499
818
|
getInteractionChannel(): SpecInteractionChannel;
|
|
500
819
|
/** 渲染档能力表(省略用 DEFAULT_RENDERER_CAPABILITIES) */
|
|
501
820
|
capabilities?: Readonly<Record<RendererKind, RendererCapability>>;
|
|
821
|
+
/**
|
|
822
|
+
* 交互结束(含取消)后的回调,带完整请求与应答。
|
|
823
|
+
* `interaction-resolved` 事件不带值,而切分消息需要把用户填的内容留在表单上(FR-17.8)。
|
|
824
|
+
* @experimental
|
|
825
|
+
*/
|
|
826
|
+
onResolved?(request: InteractionRequest, response: InteractionResponse): void;
|
|
502
827
|
emit(event: ChatEvent): void;
|
|
503
828
|
}
|
|
504
829
|
/**
|
|
@@ -539,11 +864,23 @@ declare const chatbotDictionary: {
|
|
|
539
864
|
'header.sessions': string;
|
|
540
865
|
'header.settings': string;
|
|
541
866
|
'header.console': string;
|
|
867
|
+
'header.theme.light': string;
|
|
868
|
+
'header.theme.dark': string;
|
|
542
869
|
'session.title': string;
|
|
543
870
|
'session.new': string;
|
|
544
871
|
'session.searchPlaceholder': string;
|
|
545
872
|
'session.empty': string;
|
|
873
|
+
'session.missingRoot': string;
|
|
874
|
+
'session.skipped': string;
|
|
546
875
|
'session.delete': string;
|
|
876
|
+
'session.actions': string;
|
|
877
|
+
'session.menu.rename': string;
|
|
878
|
+
'session.menu.archive': string;
|
|
879
|
+
'session.menu.unarchive': string;
|
|
880
|
+
'session.menu.delete': string;
|
|
881
|
+
'session.delete.confirmTitle': string;
|
|
882
|
+
'session.delete.confirmDescription': string;
|
|
883
|
+
'common.cancel': string;
|
|
547
884
|
'session.rename': string;
|
|
548
885
|
'session.renameInput': string;
|
|
549
886
|
'session.archive': string;
|
|
@@ -577,8 +914,13 @@ declare const chatbotDictionary: {
|
|
|
577
914
|
'tool.status.running': string;
|
|
578
915
|
'tool.status.completed': string;
|
|
579
916
|
'tool.status.failed': string;
|
|
917
|
+
'tool.status.denied': string;
|
|
580
918
|
'tool.duration': string;
|
|
581
919
|
'tool.args': string;
|
|
920
|
+
'tool.denied.reason': string;
|
|
921
|
+
'tool.failed.reason': string;
|
|
922
|
+
'tool.notFound.reason': string;
|
|
923
|
+
'tool.exhausted.reason': string;
|
|
582
924
|
'cot.thinking': string;
|
|
583
925
|
'cot.thought': string;
|
|
584
926
|
'cot.summary': string;
|
|
@@ -586,26 +928,47 @@ declare const chatbotDictionary: {
|
|
|
586
928
|
'cot.working': string;
|
|
587
929
|
'trace.title': string;
|
|
588
930
|
'trace.skill': string;
|
|
931
|
+
'perception.reading': string;
|
|
932
|
+
'perception.excluded': string;
|
|
933
|
+
'perception.images': string;
|
|
934
|
+
'perception.imagesOmitted': string;
|
|
935
|
+
'perception.imageFailures': string;
|
|
589
936
|
'trace.phase.route': string;
|
|
590
937
|
'trace.phase.activate': string;
|
|
591
938
|
'trace.phase.execute': string;
|
|
592
939
|
'trace.phase.interact': string;
|
|
593
940
|
'trace.phase.complete': string;
|
|
594
941
|
'trace.phase.fail': string;
|
|
942
|
+
'todo.title': string;
|
|
943
|
+
'todo.progress': string;
|
|
944
|
+
'todo.status.pending': string;
|
|
945
|
+
'todo.status.inProgress': string;
|
|
946
|
+
'todo.status.completed': string;
|
|
947
|
+
'todo.delegatedTo': string;
|
|
595
948
|
'interaction.ask.title': string;
|
|
596
949
|
'interaction.confirm.title': string;
|
|
597
950
|
'interaction.form.title': string;
|
|
598
951
|
'interaction.select.title': string;
|
|
599
952
|
'interaction.authorize.title': string;
|
|
953
|
+
'interaction.filePick.title': string;
|
|
954
|
+
'interaction.filePick.choose': string;
|
|
955
|
+
'interaction.filePick.decline': string;
|
|
956
|
+
'interaction.filePick.selected': string;
|
|
600
957
|
'interaction.authorize.description': string;
|
|
601
958
|
'interaction.authorize.capability': string;
|
|
602
959
|
'interaction.authorize.details': string;
|
|
960
|
+
'interaction.origin': string;
|
|
961
|
+
'interaction.submitted': string;
|
|
603
962
|
'interaction.submit': string;
|
|
604
963
|
'interaction.cancel': string;
|
|
605
964
|
'interaction.confirm': string;
|
|
606
965
|
'interaction.allow': string;
|
|
607
966
|
'interaction.deny': string;
|
|
608
967
|
'interaction.required': string;
|
|
968
|
+
'interaction.wait': string;
|
|
969
|
+
'interaction.wait.inPanel': string;
|
|
970
|
+
'interaction.wait.fallback': string;
|
|
971
|
+
'interaction.wait.locate': string;
|
|
609
972
|
'result.artifacts': string;
|
|
610
973
|
'result.download': string;
|
|
611
974
|
'result.file': string;
|
|
@@ -627,14 +990,61 @@ declare const chatbotDictionary: {
|
|
|
627
990
|
'composer.attachments': string;
|
|
628
991
|
'composer.addAttachment': string;
|
|
629
992
|
'composer.removeAttachment': string;
|
|
993
|
+
'composer.attachment.kind.text': string;
|
|
994
|
+
'composer.attachment.kind.image': string;
|
|
995
|
+
'composer.attachment.kind.file': string;
|
|
996
|
+
'composer.attachment.compressed': string;
|
|
997
|
+
'composer.model': string;
|
|
998
|
+
'composer.model.demo': string;
|
|
999
|
+
'composer.plainChatOnly': string;
|
|
1000
|
+
'composer.menu': string;
|
|
1001
|
+
'composer.pageCapture': string;
|
|
1002
|
+
'composer.pageCapture.disabled.setting': string;
|
|
1003
|
+
'composer.pageCapture.disabled.model': string;
|
|
1004
|
+
'composer.addAttachment.imagesOff': string;
|
|
1005
|
+
'composer.addAttachment.modelNoImages': string;
|
|
1006
|
+
'composer.dictate': string;
|
|
1007
|
+
'composer.dictate.stop': string;
|
|
1008
|
+
'composer.dictate.recording': string;
|
|
1009
|
+
'composer.dictate.api-missing': string;
|
|
1010
|
+
'composer.dictate.insecure-context': string;
|
|
630
1011
|
'settings.title': string;
|
|
1012
|
+
'settings.group.general': string;
|
|
1013
|
+
'settings.group.models': string;
|
|
1014
|
+
'settings.group.agent': string;
|
|
1015
|
+
'settings.group.multimodal': string;
|
|
1016
|
+
'settings.group.privacy': string;
|
|
1017
|
+
'settings.general.title': string;
|
|
1018
|
+
'settings.general.description': string;
|
|
1019
|
+
'settings.privacy.title': string;
|
|
1020
|
+
'settings.privacy.description': string;
|
|
1021
|
+
'settings.model.actions': string;
|
|
1022
|
+
'settings.model.removeConfirmTitle': string;
|
|
1023
|
+
'settings.model.removeConfirmDescription': string;
|
|
1024
|
+
'settings.model.isDefault': string;
|
|
631
1025
|
'settings.model.title': string;
|
|
632
1026
|
'settings.model.description': string;
|
|
1027
|
+
'settings.model.empty': string;
|
|
1028
|
+
'settings.model.add': string;
|
|
1029
|
+
'settings.model.edit': string;
|
|
1030
|
+
'settings.model.remove': string;
|
|
1031
|
+
'settings.model.setDefault': string;
|
|
1032
|
+
'settings.model.default': string;
|
|
1033
|
+
'settings.model.label': string;
|
|
1034
|
+
'settings.model.labelNote': string;
|
|
1035
|
+
'settings.model.unavailable': string;
|
|
1036
|
+
'settings.model.cancel': string;
|
|
633
1037
|
'settings.provider': string;
|
|
634
1038
|
'settings.providerNote': string;
|
|
635
1039
|
'settings.provider.openai-compatible': string;
|
|
636
1040
|
'settings.provider.anthropic': string;
|
|
637
1041
|
'settings.provider.google': string;
|
|
1042
|
+
'settings.provider.chrome-builtin': string;
|
|
1043
|
+
'settings.provider.chrome-builtin.note': string;
|
|
1044
|
+
'settings.provider.chrome-builtin.limitation': string;
|
|
1045
|
+
'settings.chromeBuiltin.api-missing': string;
|
|
1046
|
+
'settings.chromeBuiltin.model-not-ready': string;
|
|
1047
|
+
'settings.chromeBuiltin.unsupported-browser': string;
|
|
638
1048
|
'settings.provider.anthropic.note': string;
|
|
639
1049
|
'settings.provider.google.note': string;
|
|
640
1050
|
'settings.endpoint': string;
|
|
@@ -654,26 +1064,72 @@ declare const chatbotDictionary: {
|
|
|
654
1064
|
'settings.demoNote': string;
|
|
655
1065
|
'settings.save': string;
|
|
656
1066
|
'settings.clear': string;
|
|
657
|
-
'settings.
|
|
658
|
-
'settings.
|
|
659
|
-
'settings.
|
|
660
|
-
'settings.
|
|
661
|
-
'settings.
|
|
662
|
-
'settings.
|
|
663
|
-
'settings.
|
|
664
|
-
'settings.
|
|
665
|
-
'settings.
|
|
666
|
-
'settings.
|
|
667
|
-
'settings.
|
|
668
|
-
'settings.
|
|
669
|
-
'settings.
|
|
670
|
-
'settings.
|
|
1067
|
+
'settings.agent.title': string;
|
|
1068
|
+
'settings.agent.description': string;
|
|
1069
|
+
'settings.agent.todo': string;
|
|
1070
|
+
'settings.agent.todoNote': string;
|
|
1071
|
+
'settings.agent.generativeUi': string;
|
|
1072
|
+
'settings.agent.generativeUiNote': string;
|
|
1073
|
+
'settings.agent.skillGeneration': string;
|
|
1074
|
+
'settings.agent.skillGenerationNote': string;
|
|
1075
|
+
'settings.agent.delegation': string;
|
|
1076
|
+
'settings.agent.delegationNote': string;
|
|
1077
|
+
'settings.privacy.enabled': string;
|
|
1078
|
+
'settings.privacy.enabledRisk': string;
|
|
1079
|
+
'settings.privacy.encrypted': string;
|
|
1080
|
+
'settings.privacy.encryptedNote': string;
|
|
1081
|
+
'settings.privacy.injectMaxBytes': string;
|
|
1082
|
+
'settings.privacy.injectMaxBytesNote': string;
|
|
1083
|
+
'settings.privacy.recordLimit': string;
|
|
1084
|
+
'settings.privacy.recordLimitNote': string;
|
|
1085
|
+
'settings.privacy.disableClearPrompt': string;
|
|
1086
|
+
'settings.privacy.disableClearConfirm': string;
|
|
1087
|
+
'settings.privacy.disableClearKeep': string;
|
|
1088
|
+
'settings.privacy.profileTitle': string;
|
|
1089
|
+
'settings.privacy.profileNote': string;
|
|
1090
|
+
'settings.privacy.profileEmpty': string;
|
|
1091
|
+
'settings.privacy.profileDelete': string;
|
|
1092
|
+
'settings.privacy.refine': string;
|
|
1093
|
+
'settings.privacy.export': string;
|
|
1094
|
+
'settings.privacy.import': string;
|
|
1095
|
+
'settings.privacy.clearRecords': string;
|
|
1096
|
+
'settings.privacy.clearProfile': string;
|
|
1097
|
+
'settings.privacy.clearConfirm': string;
|
|
1098
|
+
'settings.privacy.exportReview': string;
|
|
1099
|
+
'settings.privacy.exportConfirm': string;
|
|
1100
|
+
'settings.privacy.importDiff': string;
|
|
1101
|
+
'settings.model.image': string;
|
|
1102
|
+
'settings.model.imageNote': string;
|
|
1103
|
+
'settings.model.tools': string;
|
|
1104
|
+
'settings.model.toolsNote': string;
|
|
1105
|
+
'settings.model.builtinFixed': string;
|
|
1106
|
+
'settings.capability.plainChat': string;
|
|
1107
|
+
'settings.multimodal.title': string;
|
|
1108
|
+
'settings.multimodal.description': string;
|
|
1109
|
+
'settings.multimodal.imageAttachments': string;
|
|
1110
|
+
'settings.multimodal.imageAttachmentsRisk': string;
|
|
1111
|
+
'settings.multimodal.pageImageCapture': string;
|
|
1112
|
+
'settings.multimodal.pageImageCaptureRisk': string;
|
|
1113
|
+
'settings.multimodal.maxImages': string;
|
|
1114
|
+
'settings.multimodal.maxImagesNote': string;
|
|
1115
|
+
'settings.multimodal.maxImageBytes': string;
|
|
1116
|
+
'settings.multimodal.maxImageBytesNote': string;
|
|
1117
|
+
'settings.voice.title': string;
|
|
1118
|
+
'settings.voice.description': string;
|
|
1119
|
+
'settings.voice.lang': string;
|
|
1120
|
+
'settings.voice.langFollow': string;
|
|
671
1121
|
'vercel.preview.title': string;
|
|
672
1122
|
'vercel.preview.badge': string;
|
|
673
1123
|
'vercel.preview.description': string;
|
|
674
1124
|
'surface.legacy.placeholder': string;
|
|
675
1125
|
'error.title': string;
|
|
676
1126
|
'error.suggestion': string;
|
|
1127
|
+
'error.suggestion.LLM_UNAVAILABLE': string;
|
|
1128
|
+
'error.suggestion.LLM_REQUEST_FAILED': string;
|
|
1129
|
+
'error.suggestion.RUN_TIMEOUT': string;
|
|
1130
|
+
'error.suggestion.RUN_INTERACTION_TIMEOUT': string;
|
|
1131
|
+
'error.suggestion.RUN_MAX_TURNS_EXCEEDED': string;
|
|
1132
|
+
'error.suggestion.TOOL_RESOLUTION_EXHAUSTED': string;
|
|
677
1133
|
'error.dismiss': string;
|
|
678
1134
|
};
|
|
679
1135
|
zh: {
|
|
@@ -681,11 +1137,23 @@ declare const chatbotDictionary: {
|
|
|
681
1137
|
'header.sessions': string;
|
|
682
1138
|
'header.settings': string;
|
|
683
1139
|
'header.console': string;
|
|
1140
|
+
'header.theme.light': string;
|
|
1141
|
+
'header.theme.dark': string;
|
|
684
1142
|
'session.title': string;
|
|
685
1143
|
'session.new': string;
|
|
686
1144
|
'session.searchPlaceholder': string;
|
|
687
1145
|
'session.empty': string;
|
|
1146
|
+
'session.missingRoot': string;
|
|
1147
|
+
'session.skipped': string;
|
|
688
1148
|
'session.delete': string;
|
|
1149
|
+
'session.actions': string;
|
|
1150
|
+
'session.menu.rename': string;
|
|
1151
|
+
'session.menu.archive': string;
|
|
1152
|
+
'session.menu.unarchive': string;
|
|
1153
|
+
'session.menu.delete': string;
|
|
1154
|
+
'session.delete.confirmTitle': string;
|
|
1155
|
+
'session.delete.confirmDescription': string;
|
|
1156
|
+
'common.cancel': string;
|
|
689
1157
|
'session.rename': string;
|
|
690
1158
|
'session.renameInput': string;
|
|
691
1159
|
'session.archive': string;
|
|
@@ -719,8 +1187,13 @@ declare const chatbotDictionary: {
|
|
|
719
1187
|
'tool.status.running': string;
|
|
720
1188
|
'tool.status.completed': string;
|
|
721
1189
|
'tool.status.failed': string;
|
|
1190
|
+
'tool.status.denied': string;
|
|
722
1191
|
'tool.duration': string;
|
|
723
1192
|
'tool.args': string;
|
|
1193
|
+
'tool.denied.reason': string;
|
|
1194
|
+
'tool.failed.reason': string;
|
|
1195
|
+
'tool.notFound.reason': string;
|
|
1196
|
+
'tool.exhausted.reason': string;
|
|
724
1197
|
'cot.thinking': string;
|
|
725
1198
|
'cot.thought': string;
|
|
726
1199
|
'cot.summary': string;
|
|
@@ -728,26 +1201,47 @@ declare const chatbotDictionary: {
|
|
|
728
1201
|
'cot.working': string;
|
|
729
1202
|
'trace.title': string;
|
|
730
1203
|
'trace.skill': string;
|
|
1204
|
+
'perception.reading': string;
|
|
1205
|
+
'perception.excluded': string;
|
|
1206
|
+
'perception.images': string;
|
|
1207
|
+
'perception.imagesOmitted': string;
|
|
1208
|
+
'perception.imageFailures': string;
|
|
731
1209
|
'trace.phase.route': string;
|
|
732
1210
|
'trace.phase.activate': string;
|
|
733
1211
|
'trace.phase.execute': string;
|
|
734
1212
|
'trace.phase.interact': string;
|
|
735
1213
|
'trace.phase.complete': string;
|
|
736
1214
|
'trace.phase.fail': string;
|
|
1215
|
+
'todo.title': string;
|
|
1216
|
+
'todo.progress': string;
|
|
1217
|
+
'todo.status.pending': string;
|
|
1218
|
+
'todo.status.inProgress': string;
|
|
1219
|
+
'todo.status.completed': string;
|
|
1220
|
+
'todo.delegatedTo': string;
|
|
737
1221
|
'interaction.ask.title': string;
|
|
738
1222
|
'interaction.confirm.title': string;
|
|
739
1223
|
'interaction.form.title': string;
|
|
740
1224
|
'interaction.select.title': string;
|
|
741
1225
|
'interaction.authorize.title': string;
|
|
1226
|
+
'interaction.filePick.title': string;
|
|
1227
|
+
'interaction.filePick.choose': string;
|
|
1228
|
+
'interaction.filePick.decline': string;
|
|
1229
|
+
'interaction.filePick.selected': string;
|
|
742
1230
|
'interaction.authorize.description': string;
|
|
743
1231
|
'interaction.authorize.capability': string;
|
|
744
1232
|
'interaction.authorize.details': string;
|
|
1233
|
+
'interaction.origin': string;
|
|
1234
|
+
'interaction.submitted': string;
|
|
745
1235
|
'interaction.submit': string;
|
|
746
1236
|
'interaction.cancel': string;
|
|
747
1237
|
'interaction.confirm': string;
|
|
748
1238
|
'interaction.allow': string;
|
|
749
1239
|
'interaction.deny': string;
|
|
750
1240
|
'interaction.required': string;
|
|
1241
|
+
'interaction.wait': string;
|
|
1242
|
+
'interaction.wait.inPanel': string;
|
|
1243
|
+
'interaction.wait.fallback': string;
|
|
1244
|
+
'interaction.wait.locate': string;
|
|
751
1245
|
'result.artifacts': string;
|
|
752
1246
|
'result.download': string;
|
|
753
1247
|
'result.file': string;
|
|
@@ -769,14 +1263,61 @@ declare const chatbotDictionary: {
|
|
|
769
1263
|
'composer.attachments': string;
|
|
770
1264
|
'composer.addAttachment': string;
|
|
771
1265
|
'composer.removeAttachment': string;
|
|
1266
|
+
'composer.attachment.kind.text': string;
|
|
1267
|
+
'composer.attachment.kind.image': string;
|
|
1268
|
+
'composer.attachment.kind.file': string;
|
|
1269
|
+
'composer.attachment.compressed': string;
|
|
1270
|
+
'composer.model': string;
|
|
1271
|
+
'composer.model.demo': string;
|
|
1272
|
+
'composer.plainChatOnly': string;
|
|
1273
|
+
'composer.menu': string;
|
|
1274
|
+
'composer.pageCapture': string;
|
|
1275
|
+
'composer.pageCapture.disabled.setting': string;
|
|
1276
|
+
'composer.pageCapture.disabled.model': string;
|
|
1277
|
+
'composer.addAttachment.imagesOff': string;
|
|
1278
|
+
'composer.addAttachment.modelNoImages': string;
|
|
1279
|
+
'composer.dictate': string;
|
|
1280
|
+
'composer.dictate.stop': string;
|
|
1281
|
+
'composer.dictate.recording': string;
|
|
1282
|
+
'composer.dictate.api-missing': string;
|
|
1283
|
+
'composer.dictate.insecure-context': string;
|
|
772
1284
|
'settings.title': string;
|
|
1285
|
+
'settings.group.general': string;
|
|
1286
|
+
'settings.group.models': string;
|
|
1287
|
+
'settings.group.agent': string;
|
|
1288
|
+
'settings.group.multimodal': string;
|
|
1289
|
+
'settings.group.privacy': string;
|
|
1290
|
+
'settings.general.title': string;
|
|
1291
|
+
'settings.general.description': string;
|
|
1292
|
+
'settings.privacy.title': string;
|
|
1293
|
+
'settings.privacy.description': string;
|
|
1294
|
+
'settings.model.actions': string;
|
|
1295
|
+
'settings.model.removeConfirmTitle': string;
|
|
1296
|
+
'settings.model.removeConfirmDescription': string;
|
|
1297
|
+
'settings.model.isDefault': string;
|
|
773
1298
|
'settings.model.title': string;
|
|
774
1299
|
'settings.model.description': string;
|
|
1300
|
+
'settings.model.empty': string;
|
|
1301
|
+
'settings.model.add': string;
|
|
1302
|
+
'settings.model.edit': string;
|
|
1303
|
+
'settings.model.remove': string;
|
|
1304
|
+
'settings.model.setDefault': string;
|
|
1305
|
+
'settings.model.default': string;
|
|
1306
|
+
'settings.model.label': string;
|
|
1307
|
+
'settings.model.labelNote': string;
|
|
1308
|
+
'settings.model.unavailable': string;
|
|
1309
|
+
'settings.model.cancel': string;
|
|
775
1310
|
'settings.provider': string;
|
|
776
1311
|
'settings.providerNote': string;
|
|
777
1312
|
'settings.provider.openai-compatible': string;
|
|
778
1313
|
'settings.provider.anthropic': string;
|
|
779
1314
|
'settings.provider.google': string;
|
|
1315
|
+
'settings.provider.chrome-builtin': string;
|
|
1316
|
+
'settings.provider.chrome-builtin.note': string;
|
|
1317
|
+
'settings.provider.chrome-builtin.limitation': string;
|
|
1318
|
+
'settings.chromeBuiltin.api-missing': string;
|
|
1319
|
+
'settings.chromeBuiltin.model-not-ready': string;
|
|
1320
|
+
'settings.chromeBuiltin.unsupported-browser': string;
|
|
780
1321
|
'settings.provider.anthropic.note': string;
|
|
781
1322
|
'settings.provider.google.note': string;
|
|
782
1323
|
'settings.endpoint': string;
|
|
@@ -796,26 +1337,72 @@ declare const chatbotDictionary: {
|
|
|
796
1337
|
'settings.demoNote': string;
|
|
797
1338
|
'settings.save': string;
|
|
798
1339
|
'settings.clear': string;
|
|
799
|
-
'settings.
|
|
800
|
-
'settings.
|
|
801
|
-
'settings.
|
|
802
|
-
'settings.
|
|
803
|
-
'settings.
|
|
804
|
-
'settings.
|
|
805
|
-
'settings.
|
|
806
|
-
'settings.
|
|
807
|
-
'settings.
|
|
808
|
-
'settings.
|
|
809
|
-
'settings.
|
|
810
|
-
'settings.
|
|
811
|
-
'settings.
|
|
812
|
-
'settings.
|
|
1340
|
+
'settings.agent.title': string;
|
|
1341
|
+
'settings.agent.description': string;
|
|
1342
|
+
'settings.agent.todo': string;
|
|
1343
|
+
'settings.agent.todoNote': string;
|
|
1344
|
+
'settings.agent.generativeUi': string;
|
|
1345
|
+
'settings.agent.generativeUiNote': string;
|
|
1346
|
+
'settings.agent.skillGeneration': string;
|
|
1347
|
+
'settings.agent.skillGenerationNote': string;
|
|
1348
|
+
'settings.agent.delegation': string;
|
|
1349
|
+
'settings.agent.delegationNote': string;
|
|
1350
|
+
'settings.privacy.enabled': string;
|
|
1351
|
+
'settings.privacy.enabledRisk': string;
|
|
1352
|
+
'settings.privacy.encrypted': string;
|
|
1353
|
+
'settings.privacy.encryptedNote': string;
|
|
1354
|
+
'settings.privacy.injectMaxBytes': string;
|
|
1355
|
+
'settings.privacy.injectMaxBytesNote': string;
|
|
1356
|
+
'settings.privacy.recordLimit': string;
|
|
1357
|
+
'settings.privacy.recordLimitNote': string;
|
|
1358
|
+
'settings.privacy.disableClearPrompt': string;
|
|
1359
|
+
'settings.privacy.disableClearConfirm': string;
|
|
1360
|
+
'settings.privacy.disableClearKeep': string;
|
|
1361
|
+
'settings.privacy.profileTitle': string;
|
|
1362
|
+
'settings.privacy.profileNote': string;
|
|
1363
|
+
'settings.privacy.profileEmpty': string;
|
|
1364
|
+
'settings.privacy.profileDelete': string;
|
|
1365
|
+
'settings.privacy.refine': string;
|
|
1366
|
+
'settings.privacy.export': string;
|
|
1367
|
+
'settings.privacy.import': string;
|
|
1368
|
+
'settings.privacy.clearRecords': string;
|
|
1369
|
+
'settings.privacy.clearProfile': string;
|
|
1370
|
+
'settings.privacy.clearConfirm': string;
|
|
1371
|
+
'settings.privacy.exportReview': string;
|
|
1372
|
+
'settings.privacy.exportConfirm': string;
|
|
1373
|
+
'settings.privacy.importDiff': string;
|
|
1374
|
+
'settings.model.image': string;
|
|
1375
|
+
'settings.model.imageNote': string;
|
|
1376
|
+
'settings.model.tools': string;
|
|
1377
|
+
'settings.model.toolsNote': string;
|
|
1378
|
+
'settings.model.builtinFixed': string;
|
|
1379
|
+
'settings.capability.plainChat': string;
|
|
1380
|
+
'settings.multimodal.title': string;
|
|
1381
|
+
'settings.multimodal.description': string;
|
|
1382
|
+
'settings.multimodal.imageAttachments': string;
|
|
1383
|
+
'settings.multimodal.imageAttachmentsRisk': string;
|
|
1384
|
+
'settings.multimodal.pageImageCapture': string;
|
|
1385
|
+
'settings.multimodal.pageImageCaptureRisk': string;
|
|
1386
|
+
'settings.multimodal.maxImages': string;
|
|
1387
|
+
'settings.multimodal.maxImagesNote': string;
|
|
1388
|
+
'settings.multimodal.maxImageBytes': string;
|
|
1389
|
+
'settings.multimodal.maxImageBytesNote': string;
|
|
1390
|
+
'settings.voice.title': string;
|
|
1391
|
+
'settings.voice.description': string;
|
|
1392
|
+
'settings.voice.lang': string;
|
|
1393
|
+
'settings.voice.langFollow': string;
|
|
813
1394
|
'vercel.preview.title': string;
|
|
814
1395
|
'vercel.preview.badge': string;
|
|
815
1396
|
'vercel.preview.description': string;
|
|
816
1397
|
'surface.legacy.placeholder': string;
|
|
817
1398
|
'error.title': string;
|
|
818
1399
|
'error.suggestion': string;
|
|
1400
|
+
'error.suggestion.LLM_UNAVAILABLE': string;
|
|
1401
|
+
'error.suggestion.LLM_REQUEST_FAILED': string;
|
|
1402
|
+
'error.suggestion.RUN_TIMEOUT': string;
|
|
1403
|
+
'error.suggestion.RUN_INTERACTION_TIMEOUT': string;
|
|
1404
|
+
'error.suggestion.RUN_MAX_TURNS_EXCEEDED': string;
|
|
1405
|
+
'error.suggestion.TOOL_RESOLUTION_EXHAUSTED': string;
|
|
819
1406
|
'error.dismiss': string;
|
|
820
1407
|
};
|
|
821
1408
|
};
|
|
@@ -826,11 +1413,23 @@ declare const useT: () => TranslateFn<{
|
|
|
826
1413
|
'header.sessions': string;
|
|
827
1414
|
'header.settings': string;
|
|
828
1415
|
'header.console': string;
|
|
1416
|
+
'header.theme.light': string;
|
|
1417
|
+
'header.theme.dark': string;
|
|
829
1418
|
'session.title': string;
|
|
830
1419
|
'session.new': string;
|
|
831
1420
|
'session.searchPlaceholder': string;
|
|
832
1421
|
'session.empty': string;
|
|
1422
|
+
'session.missingRoot': string;
|
|
1423
|
+
'session.skipped': string;
|
|
833
1424
|
'session.delete': string;
|
|
1425
|
+
'session.actions': string;
|
|
1426
|
+
'session.menu.rename': string;
|
|
1427
|
+
'session.menu.archive': string;
|
|
1428
|
+
'session.menu.unarchive': string;
|
|
1429
|
+
'session.menu.delete': string;
|
|
1430
|
+
'session.delete.confirmTitle': string;
|
|
1431
|
+
'session.delete.confirmDescription': string;
|
|
1432
|
+
'common.cancel': string;
|
|
834
1433
|
'session.rename': string;
|
|
835
1434
|
'session.renameInput': string;
|
|
836
1435
|
'session.archive': string;
|
|
@@ -864,8 +1463,13 @@ declare const useT: () => TranslateFn<{
|
|
|
864
1463
|
'tool.status.running': string;
|
|
865
1464
|
'tool.status.completed': string;
|
|
866
1465
|
'tool.status.failed': string;
|
|
1466
|
+
'tool.status.denied': string;
|
|
867
1467
|
'tool.duration': string;
|
|
868
1468
|
'tool.args': string;
|
|
1469
|
+
'tool.denied.reason': string;
|
|
1470
|
+
'tool.failed.reason': string;
|
|
1471
|
+
'tool.notFound.reason': string;
|
|
1472
|
+
'tool.exhausted.reason': string;
|
|
869
1473
|
'cot.thinking': string;
|
|
870
1474
|
'cot.thought': string;
|
|
871
1475
|
'cot.summary': string;
|
|
@@ -873,26 +1477,47 @@ declare const useT: () => TranslateFn<{
|
|
|
873
1477
|
'cot.working': string;
|
|
874
1478
|
'trace.title': string;
|
|
875
1479
|
'trace.skill': string;
|
|
1480
|
+
'perception.reading': string;
|
|
1481
|
+
'perception.excluded': string;
|
|
1482
|
+
'perception.images': string;
|
|
1483
|
+
'perception.imagesOmitted': string;
|
|
1484
|
+
'perception.imageFailures': string;
|
|
876
1485
|
'trace.phase.route': string;
|
|
877
1486
|
'trace.phase.activate': string;
|
|
878
1487
|
'trace.phase.execute': string;
|
|
879
1488
|
'trace.phase.interact': string;
|
|
880
1489
|
'trace.phase.complete': string;
|
|
881
1490
|
'trace.phase.fail': string;
|
|
1491
|
+
'todo.title': string;
|
|
1492
|
+
'todo.progress': string;
|
|
1493
|
+
'todo.status.pending': string;
|
|
1494
|
+
'todo.status.inProgress': string;
|
|
1495
|
+
'todo.status.completed': string;
|
|
1496
|
+
'todo.delegatedTo': string;
|
|
882
1497
|
'interaction.ask.title': string;
|
|
883
1498
|
'interaction.confirm.title': string;
|
|
884
1499
|
'interaction.form.title': string;
|
|
885
1500
|
'interaction.select.title': string;
|
|
886
1501
|
'interaction.authorize.title': string;
|
|
1502
|
+
'interaction.filePick.title': string;
|
|
1503
|
+
'interaction.filePick.choose': string;
|
|
1504
|
+
'interaction.filePick.decline': string;
|
|
1505
|
+
'interaction.filePick.selected': string;
|
|
887
1506
|
'interaction.authorize.description': string;
|
|
888
1507
|
'interaction.authorize.capability': string;
|
|
889
1508
|
'interaction.authorize.details': string;
|
|
1509
|
+
'interaction.origin': string;
|
|
1510
|
+
'interaction.submitted': string;
|
|
890
1511
|
'interaction.submit': string;
|
|
891
1512
|
'interaction.cancel': string;
|
|
892
1513
|
'interaction.confirm': string;
|
|
893
1514
|
'interaction.allow': string;
|
|
894
1515
|
'interaction.deny': string;
|
|
895
1516
|
'interaction.required': string;
|
|
1517
|
+
'interaction.wait': string;
|
|
1518
|
+
'interaction.wait.inPanel': string;
|
|
1519
|
+
'interaction.wait.fallback': string;
|
|
1520
|
+
'interaction.wait.locate': string;
|
|
896
1521
|
'result.artifacts': string;
|
|
897
1522
|
'result.download': string;
|
|
898
1523
|
'result.file': string;
|
|
@@ -914,14 +1539,61 @@ declare const useT: () => TranslateFn<{
|
|
|
914
1539
|
'composer.attachments': string;
|
|
915
1540
|
'composer.addAttachment': string;
|
|
916
1541
|
'composer.removeAttachment': string;
|
|
1542
|
+
'composer.attachment.kind.text': string;
|
|
1543
|
+
'composer.attachment.kind.image': string;
|
|
1544
|
+
'composer.attachment.kind.file': string;
|
|
1545
|
+
'composer.attachment.compressed': string;
|
|
1546
|
+
'composer.model': string;
|
|
1547
|
+
'composer.model.demo': string;
|
|
1548
|
+
'composer.plainChatOnly': string;
|
|
1549
|
+
'composer.menu': string;
|
|
1550
|
+
'composer.pageCapture': string;
|
|
1551
|
+
'composer.pageCapture.disabled.setting': string;
|
|
1552
|
+
'composer.pageCapture.disabled.model': string;
|
|
1553
|
+
'composer.addAttachment.imagesOff': string;
|
|
1554
|
+
'composer.addAttachment.modelNoImages': string;
|
|
1555
|
+
'composer.dictate': string;
|
|
1556
|
+
'composer.dictate.stop': string;
|
|
1557
|
+
'composer.dictate.recording': string;
|
|
1558
|
+
'composer.dictate.api-missing': string;
|
|
1559
|
+
'composer.dictate.insecure-context': string;
|
|
917
1560
|
'settings.title': string;
|
|
1561
|
+
'settings.group.general': string;
|
|
1562
|
+
'settings.group.models': string;
|
|
1563
|
+
'settings.group.agent': string;
|
|
1564
|
+
'settings.group.multimodal': string;
|
|
1565
|
+
'settings.group.privacy': string;
|
|
1566
|
+
'settings.general.title': string;
|
|
1567
|
+
'settings.general.description': string;
|
|
1568
|
+
'settings.privacy.title': string;
|
|
1569
|
+
'settings.privacy.description': string;
|
|
1570
|
+
'settings.model.actions': string;
|
|
1571
|
+
'settings.model.removeConfirmTitle': string;
|
|
1572
|
+
'settings.model.removeConfirmDescription': string;
|
|
1573
|
+
'settings.model.isDefault': string;
|
|
918
1574
|
'settings.model.title': string;
|
|
919
1575
|
'settings.model.description': string;
|
|
1576
|
+
'settings.model.empty': string;
|
|
1577
|
+
'settings.model.add': string;
|
|
1578
|
+
'settings.model.edit': string;
|
|
1579
|
+
'settings.model.remove': string;
|
|
1580
|
+
'settings.model.setDefault': string;
|
|
1581
|
+
'settings.model.default': string;
|
|
1582
|
+
'settings.model.label': string;
|
|
1583
|
+
'settings.model.labelNote': string;
|
|
1584
|
+
'settings.model.unavailable': string;
|
|
1585
|
+
'settings.model.cancel': string;
|
|
920
1586
|
'settings.provider': string;
|
|
921
1587
|
'settings.providerNote': string;
|
|
922
1588
|
'settings.provider.openai-compatible': string;
|
|
923
1589
|
'settings.provider.anthropic': string;
|
|
924
1590
|
'settings.provider.google': string;
|
|
1591
|
+
'settings.provider.chrome-builtin': string;
|
|
1592
|
+
'settings.provider.chrome-builtin.note': string;
|
|
1593
|
+
'settings.provider.chrome-builtin.limitation': string;
|
|
1594
|
+
'settings.chromeBuiltin.api-missing': string;
|
|
1595
|
+
'settings.chromeBuiltin.model-not-ready': string;
|
|
1596
|
+
'settings.chromeBuiltin.unsupported-browser': string;
|
|
925
1597
|
'settings.provider.anthropic.note': string;
|
|
926
1598
|
'settings.provider.google.note': string;
|
|
927
1599
|
'settings.endpoint': string;
|
|
@@ -941,26 +1613,72 @@ declare const useT: () => TranslateFn<{
|
|
|
941
1613
|
'settings.demoNote': string;
|
|
942
1614
|
'settings.save': string;
|
|
943
1615
|
'settings.clear': string;
|
|
944
|
-
'settings.
|
|
945
|
-
'settings.
|
|
946
|
-
'settings.
|
|
947
|
-
'settings.
|
|
948
|
-
'settings.
|
|
949
|
-
'settings.
|
|
950
|
-
'settings.
|
|
951
|
-
'settings.
|
|
952
|
-
'settings.
|
|
953
|
-
'settings.
|
|
954
|
-
'settings.
|
|
955
|
-
'settings.
|
|
956
|
-
'settings.
|
|
957
|
-
'settings.
|
|
1616
|
+
'settings.agent.title': string;
|
|
1617
|
+
'settings.agent.description': string;
|
|
1618
|
+
'settings.agent.todo': string;
|
|
1619
|
+
'settings.agent.todoNote': string;
|
|
1620
|
+
'settings.agent.generativeUi': string;
|
|
1621
|
+
'settings.agent.generativeUiNote': string;
|
|
1622
|
+
'settings.agent.skillGeneration': string;
|
|
1623
|
+
'settings.agent.skillGenerationNote': string;
|
|
1624
|
+
'settings.agent.delegation': string;
|
|
1625
|
+
'settings.agent.delegationNote': string;
|
|
1626
|
+
'settings.privacy.enabled': string;
|
|
1627
|
+
'settings.privacy.enabledRisk': string;
|
|
1628
|
+
'settings.privacy.encrypted': string;
|
|
1629
|
+
'settings.privacy.encryptedNote': string;
|
|
1630
|
+
'settings.privacy.injectMaxBytes': string;
|
|
1631
|
+
'settings.privacy.injectMaxBytesNote': string;
|
|
1632
|
+
'settings.privacy.recordLimit': string;
|
|
1633
|
+
'settings.privacy.recordLimitNote': string;
|
|
1634
|
+
'settings.privacy.disableClearPrompt': string;
|
|
1635
|
+
'settings.privacy.disableClearConfirm': string;
|
|
1636
|
+
'settings.privacy.disableClearKeep': string;
|
|
1637
|
+
'settings.privacy.profileTitle': string;
|
|
1638
|
+
'settings.privacy.profileNote': string;
|
|
1639
|
+
'settings.privacy.profileEmpty': string;
|
|
1640
|
+
'settings.privacy.profileDelete': string;
|
|
1641
|
+
'settings.privacy.refine': string;
|
|
1642
|
+
'settings.privacy.export': string;
|
|
1643
|
+
'settings.privacy.import': string;
|
|
1644
|
+
'settings.privacy.clearRecords': string;
|
|
1645
|
+
'settings.privacy.clearProfile': string;
|
|
1646
|
+
'settings.privacy.clearConfirm': string;
|
|
1647
|
+
'settings.privacy.exportReview': string;
|
|
1648
|
+
'settings.privacy.exportConfirm': string;
|
|
1649
|
+
'settings.privacy.importDiff': string;
|
|
1650
|
+
'settings.model.image': string;
|
|
1651
|
+
'settings.model.imageNote': string;
|
|
1652
|
+
'settings.model.tools': string;
|
|
1653
|
+
'settings.model.toolsNote': string;
|
|
1654
|
+
'settings.model.builtinFixed': string;
|
|
1655
|
+
'settings.capability.plainChat': string;
|
|
1656
|
+
'settings.multimodal.title': string;
|
|
1657
|
+
'settings.multimodal.description': string;
|
|
1658
|
+
'settings.multimodal.imageAttachments': string;
|
|
1659
|
+
'settings.multimodal.imageAttachmentsRisk': string;
|
|
1660
|
+
'settings.multimodal.pageImageCapture': string;
|
|
1661
|
+
'settings.multimodal.pageImageCaptureRisk': string;
|
|
1662
|
+
'settings.multimodal.maxImages': string;
|
|
1663
|
+
'settings.multimodal.maxImagesNote': string;
|
|
1664
|
+
'settings.multimodal.maxImageBytes': string;
|
|
1665
|
+
'settings.multimodal.maxImageBytesNote': string;
|
|
1666
|
+
'settings.voice.title': string;
|
|
1667
|
+
'settings.voice.description': string;
|
|
1668
|
+
'settings.voice.lang': string;
|
|
1669
|
+
'settings.voice.langFollow': string;
|
|
958
1670
|
'vercel.preview.title': string;
|
|
959
1671
|
'vercel.preview.badge': string;
|
|
960
1672
|
'vercel.preview.description': string;
|
|
961
1673
|
'surface.legacy.placeholder': string;
|
|
962
1674
|
'error.title': string;
|
|
963
1675
|
'error.suggestion': string;
|
|
1676
|
+
'error.suggestion.LLM_UNAVAILABLE': string;
|
|
1677
|
+
'error.suggestion.LLM_REQUEST_FAILED': string;
|
|
1678
|
+
'error.suggestion.RUN_TIMEOUT': string;
|
|
1679
|
+
'error.suggestion.RUN_INTERACTION_TIMEOUT': string;
|
|
1680
|
+
'error.suggestion.RUN_MAX_TURNS_EXCEEDED': string;
|
|
1681
|
+
'error.suggestion.TOOL_RESOLUTION_EXHAUSTED': string;
|
|
964
1682
|
'error.dismiss': string;
|
|
965
1683
|
};
|
|
966
1684
|
zh: {
|
|
@@ -968,11 +1686,23 @@ declare const useT: () => TranslateFn<{
|
|
|
968
1686
|
'header.sessions': string;
|
|
969
1687
|
'header.settings': string;
|
|
970
1688
|
'header.console': string;
|
|
1689
|
+
'header.theme.light': string;
|
|
1690
|
+
'header.theme.dark': string;
|
|
971
1691
|
'session.title': string;
|
|
972
1692
|
'session.new': string;
|
|
973
1693
|
'session.searchPlaceholder': string;
|
|
974
1694
|
'session.empty': string;
|
|
1695
|
+
'session.missingRoot': string;
|
|
1696
|
+
'session.skipped': string;
|
|
975
1697
|
'session.delete': string;
|
|
1698
|
+
'session.actions': string;
|
|
1699
|
+
'session.menu.rename': string;
|
|
1700
|
+
'session.menu.archive': string;
|
|
1701
|
+
'session.menu.unarchive': string;
|
|
1702
|
+
'session.menu.delete': string;
|
|
1703
|
+
'session.delete.confirmTitle': string;
|
|
1704
|
+
'session.delete.confirmDescription': string;
|
|
1705
|
+
'common.cancel': string;
|
|
976
1706
|
'session.rename': string;
|
|
977
1707
|
'session.renameInput': string;
|
|
978
1708
|
'session.archive': string;
|
|
@@ -1006,8 +1736,13 @@ declare const useT: () => TranslateFn<{
|
|
|
1006
1736
|
'tool.status.running': string;
|
|
1007
1737
|
'tool.status.completed': string;
|
|
1008
1738
|
'tool.status.failed': string;
|
|
1739
|
+
'tool.status.denied': string;
|
|
1009
1740
|
'tool.duration': string;
|
|
1010
1741
|
'tool.args': string;
|
|
1742
|
+
'tool.denied.reason': string;
|
|
1743
|
+
'tool.failed.reason': string;
|
|
1744
|
+
'tool.notFound.reason': string;
|
|
1745
|
+
'tool.exhausted.reason': string;
|
|
1011
1746
|
'cot.thinking': string;
|
|
1012
1747
|
'cot.thought': string;
|
|
1013
1748
|
'cot.summary': string;
|
|
@@ -1015,26 +1750,47 @@ declare const useT: () => TranslateFn<{
|
|
|
1015
1750
|
'cot.working': string;
|
|
1016
1751
|
'trace.title': string;
|
|
1017
1752
|
'trace.skill': string;
|
|
1753
|
+
'perception.reading': string;
|
|
1754
|
+
'perception.excluded': string;
|
|
1755
|
+
'perception.images': string;
|
|
1756
|
+
'perception.imagesOmitted': string;
|
|
1757
|
+
'perception.imageFailures': string;
|
|
1018
1758
|
'trace.phase.route': string;
|
|
1019
1759
|
'trace.phase.activate': string;
|
|
1020
1760
|
'trace.phase.execute': string;
|
|
1021
1761
|
'trace.phase.interact': string;
|
|
1022
1762
|
'trace.phase.complete': string;
|
|
1023
1763
|
'trace.phase.fail': string;
|
|
1764
|
+
'todo.title': string;
|
|
1765
|
+
'todo.progress': string;
|
|
1766
|
+
'todo.status.pending': string;
|
|
1767
|
+
'todo.status.inProgress': string;
|
|
1768
|
+
'todo.status.completed': string;
|
|
1769
|
+
'todo.delegatedTo': string;
|
|
1024
1770
|
'interaction.ask.title': string;
|
|
1025
1771
|
'interaction.confirm.title': string;
|
|
1026
1772
|
'interaction.form.title': string;
|
|
1027
1773
|
'interaction.select.title': string;
|
|
1028
1774
|
'interaction.authorize.title': string;
|
|
1775
|
+
'interaction.filePick.title': string;
|
|
1776
|
+
'interaction.filePick.choose': string;
|
|
1777
|
+
'interaction.filePick.decline': string;
|
|
1778
|
+
'interaction.filePick.selected': string;
|
|
1029
1779
|
'interaction.authorize.description': string;
|
|
1030
1780
|
'interaction.authorize.capability': string;
|
|
1031
1781
|
'interaction.authorize.details': string;
|
|
1782
|
+
'interaction.origin': string;
|
|
1783
|
+
'interaction.submitted': string;
|
|
1032
1784
|
'interaction.submit': string;
|
|
1033
1785
|
'interaction.cancel': string;
|
|
1034
1786
|
'interaction.confirm': string;
|
|
1035
1787
|
'interaction.allow': string;
|
|
1036
1788
|
'interaction.deny': string;
|
|
1037
1789
|
'interaction.required': string;
|
|
1790
|
+
'interaction.wait': string;
|
|
1791
|
+
'interaction.wait.inPanel': string;
|
|
1792
|
+
'interaction.wait.fallback': string;
|
|
1793
|
+
'interaction.wait.locate': string;
|
|
1038
1794
|
'result.artifacts': string;
|
|
1039
1795
|
'result.download': string;
|
|
1040
1796
|
'result.file': string;
|
|
@@ -1056,14 +1812,61 @@ declare const useT: () => TranslateFn<{
|
|
|
1056
1812
|
'composer.attachments': string;
|
|
1057
1813
|
'composer.addAttachment': string;
|
|
1058
1814
|
'composer.removeAttachment': string;
|
|
1815
|
+
'composer.attachment.kind.text': string;
|
|
1816
|
+
'composer.attachment.kind.image': string;
|
|
1817
|
+
'composer.attachment.kind.file': string;
|
|
1818
|
+
'composer.attachment.compressed': string;
|
|
1819
|
+
'composer.model': string;
|
|
1820
|
+
'composer.model.demo': string;
|
|
1821
|
+
'composer.plainChatOnly': string;
|
|
1822
|
+
'composer.menu': string;
|
|
1823
|
+
'composer.pageCapture': string;
|
|
1824
|
+
'composer.pageCapture.disabled.setting': string;
|
|
1825
|
+
'composer.pageCapture.disabled.model': string;
|
|
1826
|
+
'composer.addAttachment.imagesOff': string;
|
|
1827
|
+
'composer.addAttachment.modelNoImages': string;
|
|
1828
|
+
'composer.dictate': string;
|
|
1829
|
+
'composer.dictate.stop': string;
|
|
1830
|
+
'composer.dictate.recording': string;
|
|
1831
|
+
'composer.dictate.api-missing': string;
|
|
1832
|
+
'composer.dictate.insecure-context': string;
|
|
1059
1833
|
'settings.title': string;
|
|
1834
|
+
'settings.group.general': string;
|
|
1835
|
+
'settings.group.models': string;
|
|
1836
|
+
'settings.group.agent': string;
|
|
1837
|
+
'settings.group.multimodal': string;
|
|
1838
|
+
'settings.group.privacy': string;
|
|
1839
|
+
'settings.general.title': string;
|
|
1840
|
+
'settings.general.description': string;
|
|
1841
|
+
'settings.privacy.title': string;
|
|
1842
|
+
'settings.privacy.description': string;
|
|
1843
|
+
'settings.model.actions': string;
|
|
1844
|
+
'settings.model.removeConfirmTitle': string;
|
|
1845
|
+
'settings.model.removeConfirmDescription': string;
|
|
1846
|
+
'settings.model.isDefault': string;
|
|
1060
1847
|
'settings.model.title': string;
|
|
1061
1848
|
'settings.model.description': string;
|
|
1849
|
+
'settings.model.empty': string;
|
|
1850
|
+
'settings.model.add': string;
|
|
1851
|
+
'settings.model.edit': string;
|
|
1852
|
+
'settings.model.remove': string;
|
|
1853
|
+
'settings.model.setDefault': string;
|
|
1854
|
+
'settings.model.default': string;
|
|
1855
|
+
'settings.model.label': string;
|
|
1856
|
+
'settings.model.labelNote': string;
|
|
1857
|
+
'settings.model.unavailable': string;
|
|
1858
|
+
'settings.model.cancel': string;
|
|
1062
1859
|
'settings.provider': string;
|
|
1063
1860
|
'settings.providerNote': string;
|
|
1064
1861
|
'settings.provider.openai-compatible': string;
|
|
1065
1862
|
'settings.provider.anthropic': string;
|
|
1066
1863
|
'settings.provider.google': string;
|
|
1864
|
+
'settings.provider.chrome-builtin': string;
|
|
1865
|
+
'settings.provider.chrome-builtin.note': string;
|
|
1866
|
+
'settings.provider.chrome-builtin.limitation': string;
|
|
1867
|
+
'settings.chromeBuiltin.api-missing': string;
|
|
1868
|
+
'settings.chromeBuiltin.model-not-ready': string;
|
|
1869
|
+
'settings.chromeBuiltin.unsupported-browser': string;
|
|
1067
1870
|
'settings.provider.anthropic.note': string;
|
|
1068
1871
|
'settings.provider.google.note': string;
|
|
1069
1872
|
'settings.endpoint': string;
|
|
@@ -1083,26 +1886,72 @@ declare const useT: () => TranslateFn<{
|
|
|
1083
1886
|
'settings.demoNote': string;
|
|
1084
1887
|
'settings.save': string;
|
|
1085
1888
|
'settings.clear': string;
|
|
1086
|
-
'settings.
|
|
1087
|
-
'settings.
|
|
1088
|
-
'settings.
|
|
1089
|
-
'settings.
|
|
1090
|
-
'settings.
|
|
1091
|
-
'settings.
|
|
1092
|
-
'settings.
|
|
1093
|
-
'settings.
|
|
1094
|
-
'settings.
|
|
1095
|
-
'settings.
|
|
1096
|
-
'settings.
|
|
1097
|
-
'settings.
|
|
1098
|
-
'settings.
|
|
1099
|
-
'settings.
|
|
1889
|
+
'settings.agent.title': string;
|
|
1890
|
+
'settings.agent.description': string;
|
|
1891
|
+
'settings.agent.todo': string;
|
|
1892
|
+
'settings.agent.todoNote': string;
|
|
1893
|
+
'settings.agent.generativeUi': string;
|
|
1894
|
+
'settings.agent.generativeUiNote': string;
|
|
1895
|
+
'settings.agent.skillGeneration': string;
|
|
1896
|
+
'settings.agent.skillGenerationNote': string;
|
|
1897
|
+
'settings.agent.delegation': string;
|
|
1898
|
+
'settings.agent.delegationNote': string;
|
|
1899
|
+
'settings.privacy.enabled': string;
|
|
1900
|
+
'settings.privacy.enabledRisk': string;
|
|
1901
|
+
'settings.privacy.encrypted': string;
|
|
1902
|
+
'settings.privacy.encryptedNote': string;
|
|
1903
|
+
'settings.privacy.injectMaxBytes': string;
|
|
1904
|
+
'settings.privacy.injectMaxBytesNote': string;
|
|
1905
|
+
'settings.privacy.recordLimit': string;
|
|
1906
|
+
'settings.privacy.recordLimitNote': string;
|
|
1907
|
+
'settings.privacy.disableClearPrompt': string;
|
|
1908
|
+
'settings.privacy.disableClearConfirm': string;
|
|
1909
|
+
'settings.privacy.disableClearKeep': string;
|
|
1910
|
+
'settings.privacy.profileTitle': string;
|
|
1911
|
+
'settings.privacy.profileNote': string;
|
|
1912
|
+
'settings.privacy.profileEmpty': string;
|
|
1913
|
+
'settings.privacy.profileDelete': string;
|
|
1914
|
+
'settings.privacy.refine': string;
|
|
1915
|
+
'settings.privacy.export': string;
|
|
1916
|
+
'settings.privacy.import': string;
|
|
1917
|
+
'settings.privacy.clearRecords': string;
|
|
1918
|
+
'settings.privacy.clearProfile': string;
|
|
1919
|
+
'settings.privacy.clearConfirm': string;
|
|
1920
|
+
'settings.privacy.exportReview': string;
|
|
1921
|
+
'settings.privacy.exportConfirm': string;
|
|
1922
|
+
'settings.privacy.importDiff': string;
|
|
1923
|
+
'settings.model.image': string;
|
|
1924
|
+
'settings.model.imageNote': string;
|
|
1925
|
+
'settings.model.tools': string;
|
|
1926
|
+
'settings.model.toolsNote': string;
|
|
1927
|
+
'settings.model.builtinFixed': string;
|
|
1928
|
+
'settings.capability.plainChat': string;
|
|
1929
|
+
'settings.multimodal.title': string;
|
|
1930
|
+
'settings.multimodal.description': string;
|
|
1931
|
+
'settings.multimodal.imageAttachments': string;
|
|
1932
|
+
'settings.multimodal.imageAttachmentsRisk': string;
|
|
1933
|
+
'settings.multimodal.pageImageCapture': string;
|
|
1934
|
+
'settings.multimodal.pageImageCaptureRisk': string;
|
|
1935
|
+
'settings.multimodal.maxImages': string;
|
|
1936
|
+
'settings.multimodal.maxImagesNote': string;
|
|
1937
|
+
'settings.multimodal.maxImageBytes': string;
|
|
1938
|
+
'settings.multimodal.maxImageBytesNote': string;
|
|
1939
|
+
'settings.voice.title': string;
|
|
1940
|
+
'settings.voice.description': string;
|
|
1941
|
+
'settings.voice.lang': string;
|
|
1942
|
+
'settings.voice.langFollow': string;
|
|
1100
1943
|
'vercel.preview.title': string;
|
|
1101
1944
|
'vercel.preview.badge': string;
|
|
1102
1945
|
'vercel.preview.description': string;
|
|
1103
1946
|
'surface.legacy.placeholder': string;
|
|
1104
1947
|
'error.title': string;
|
|
1105
1948
|
'error.suggestion': string;
|
|
1949
|
+
'error.suggestion.LLM_UNAVAILABLE': string;
|
|
1950
|
+
'error.suggestion.LLM_REQUEST_FAILED': string;
|
|
1951
|
+
'error.suggestion.RUN_TIMEOUT': string;
|
|
1952
|
+
'error.suggestion.RUN_INTERACTION_TIMEOUT': string;
|
|
1953
|
+
'error.suggestion.RUN_MAX_TURNS_EXCEEDED': string;
|
|
1954
|
+
'error.suggestion.TOOL_RESOLUTION_EXHAUSTED': string;
|
|
1106
1955
|
'error.dismiss': string;
|
|
1107
1956
|
};
|
|
1108
1957
|
}>;
|
|
@@ -1116,6 +1965,11 @@ interface AppearanceChange {
|
|
|
1116
1965
|
locale?: Locale;
|
|
1117
1966
|
/** 渲染框架档(native/a2ui);宿主持久化后经 Chatbot renderer prop 回注 */
|
|
1118
1967
|
renderer?: RendererKind;
|
|
1968
|
+
/**
|
|
1969
|
+
* 语音识别语言(BCP-47,需求 7 的 FR-7.7)。空串表示跟随界面语言——
|
|
1970
|
+
* 用 `''` 而不是省略字段,是为了让「改回跟随」也能作为一次变更传给宿主。
|
|
1971
|
+
*/
|
|
1972
|
+
dictationLang?: string;
|
|
1119
1973
|
}
|
|
1120
1974
|
//#endregion
|
|
1121
1975
|
//#region src/react/useChatLayout.d.ts
|
|
@@ -1129,12 +1983,17 @@ type ResolvedChatLayout = 'fullscreen' | 'embedded' | 'mobile';
|
|
|
1129
1983
|
interface ChatbotProps {
|
|
1130
1984
|
adapter: ChatbotHostAdapter;
|
|
1131
1985
|
config?: ChatbotConfig;
|
|
1132
|
-
/**
|
|
1986
|
+
/**
|
|
1987
|
+
* 界面语言(默认 'en')。**传了 `config.runtimeConfig` 时本属性被忽略**:
|
|
1988
|
+
* 0.6.0 起外观配置的唯一真值源是配置存储(FR-20.1)。
|
|
1989
|
+
*/
|
|
1133
1990
|
locale?: Locale;
|
|
1134
|
-
/** 主题(默认 'light'
|
|
1991
|
+
/** 主题(默认 'light')。同上:有配置源时被忽略 */
|
|
1135
1992
|
theme?: ChatTheme;
|
|
1136
1993
|
/** 交互渲染框架档(默认 'native';'a2ui' 需宿主安装 optional peer @a2ui/lit) */
|
|
1137
1994
|
renderer?: RendererKind;
|
|
1995
|
+
/** 语音识别语言(BCP-47);缺省跟随界面语言(FR-7.7) */
|
|
1996
|
+
dictationLang?: string;
|
|
1138
1997
|
/** Native custom surface 的显式 renderer/schema allowlist。 */
|
|
1139
1998
|
surfaceRegistry?: SurfaceRegistry;
|
|
1140
1999
|
/** 布局档(默认 'auto':按容器尺寸在 fullscreen / embedded / mobile 之间判定) */
|
|
@@ -1151,7 +2010,7 @@ interface ChatbotProps {
|
|
|
1151
2010
|
* presentation shell and accessible thread primitives.
|
|
1152
2011
|
* @stable
|
|
1153
2012
|
*/
|
|
1154
|
-
declare function Chatbot({ adapter, config, locale: localeProp, theme: themeProp, renderer: rendererProp, surfaceRegistry, layout, onAppearanceChange, onEngineReady }: ChatbotProps): import("react").JSX.Element;
|
|
2013
|
+
declare function Chatbot({ adapter, config, locale: localeProp, theme: themeProp, renderer: rendererProp, dictationLang: dictationLangProp, surfaceRegistry, layout, onAppearanceChange, onEngineReady }: ChatbotProps): import("react").JSX.Element;
|
|
1155
2014
|
//#endregion
|
|
1156
2015
|
//#region src/react/A2uiSurfaceHost.d.ts
|
|
1157
2016
|
/** @experimental */
|
|
@@ -1309,24 +2168,55 @@ declare function InterruptedBanner({ engine, sessionId }: InterruptedBannerProps
|
|
|
1309
2168
|
/** @stable */
|
|
1310
2169
|
interface SettingsDrawerProps {
|
|
1311
2170
|
open: boolean;
|
|
1312
|
-
llmConfig: ChatbotHostAdapter['llmConfig'];
|
|
1313
2171
|
/**
|
|
1314
|
-
*
|
|
1315
|
-
*
|
|
2172
|
+
* 运行环境配置存储:模型列表、流式、temperature、Agent 能力全部读写这里。
|
|
2173
|
+
* 缺省时模型区只读展示(宿主没接配置源,谈不上持久化)。
|
|
1316
2174
|
*/
|
|
1317
2175
|
runtimeConfig?: RuntimeConfigStore;
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
2176
|
+
/**
|
|
2177
|
+
* 语音识别语言(BCP-47);空串即跟随界面语言(FR-7.7)。
|
|
2178
|
+
* @experimental
|
|
2179
|
+
*/
|
|
2180
|
+
dictationLang?: string;
|
|
2181
|
+
/** 语音语言切换时回调(写回同一份外观配置) */
|
|
1323
2182
|
onAppearanceChange?(next: AppearanceChange): void;
|
|
2183
|
+
/**
|
|
2184
|
+
* 当前选中的模型条目 id(FR-14.4):它不支持工具时,Agent 能力开关置灰。
|
|
2185
|
+
* @experimental
|
|
2186
|
+
*/
|
|
2187
|
+
selectedModelId?: string;
|
|
1324
2188
|
/** 保存/清除成功后回调(Chatbot 借此触发 engine.reloadConfig) */
|
|
1325
2189
|
onSaved(): void;
|
|
2190
|
+
/**
|
|
2191
|
+
* 用户画像的读写入口(需求 19)。不注入即整段画像 UI 不渲染(R11)——
|
|
2192
|
+
* 没有数据源时展示一个空列表比不展示更容易让人以为「记录丢了」。
|
|
2193
|
+
* @experimental
|
|
2194
|
+
*/
|
|
2195
|
+
userProfileApi?: UserProfileApi;
|
|
1326
2196
|
onClose(): void;
|
|
1327
2197
|
}
|
|
1328
|
-
/**
|
|
1329
|
-
|
|
2198
|
+
/** 设置面板对画像数据的最小依赖面;实现由 Chatbot 用 ChatEngine 装配 @experimental */
|
|
2199
|
+
interface UserProfileApi {
|
|
2200
|
+
read(): Promise<UserProfile>;
|
|
2201
|
+
refine(): Promise<UserProfile>;
|
|
2202
|
+
deleteEntry(id: string): Promise<UserProfile>;
|
|
2203
|
+
clearRecords(): Promise<void>;
|
|
2204
|
+
clearProfile(): Promise<void>;
|
|
2205
|
+
/** 记录与画像一并清除(关闭总开关时的追问) */
|
|
2206
|
+
clearAll(): Promise<void>;
|
|
2207
|
+
/** `excludeIds` 来自导出前的逐条审阅 */
|
|
2208
|
+
export(excludeIds: readonly string[]): Promise<UserProfileExport>;
|
|
2209
|
+
diffImport(incoming: UserProfileExport): Promise<UserProfileImportDiff>;
|
|
2210
|
+
applyImport(incoming: UserProfileExport): Promise<UserProfile>;
|
|
2211
|
+
}
|
|
2212
|
+
/** @experimental */
|
|
2213
|
+
interface UserProfileImportDiff {
|
|
2214
|
+
added: readonly UserProfileEntry[];
|
|
2215
|
+
updated: readonly UserProfileEntry[];
|
|
2216
|
+
origin: string;
|
|
2217
|
+
}
|
|
2218
|
+
/** 设置抽屉:模型列表(增删改 / 设默认 / 逐条探测)+ 流式与 temperature + Agent 能力 + 语音语言 @stable */
|
|
2219
|
+
declare function SettingsDrawer({ open, runtimeConfig, dictationLang, selectedModelId, onAppearanceChange, onSaved, userProfileApi: profileApi, onClose }: SettingsDrawerProps): import("react").JSX.Element;
|
|
1330
2220
|
//#endregion
|
|
1331
2221
|
//#region src/react/ErrorCard.d.ts
|
|
1332
2222
|
/** @stable */
|
|
@@ -1339,4 +2229,4 @@ interface ErrorCardProps {
|
|
|
1339
2229
|
/** 结构化错误卡:错误码徽章 + 描述 + 建议(engine error 事件 / 失败 run) @stable */
|
|
1340
2230
|
declare function ErrorCard({ code, message, onDismiss }: ErrorCardProps): import("react").JSX.Element;
|
|
1341
2231
|
//#endregion
|
|
1342
|
-
export { A2uiSurfaceHost, type A2uiSurfaceHostProps, A2uiSurfaceSnapshotHost, type A2uiSurfaceSnapshotHostProps, type AppearanceChange, type ChatAttachmentInput, type ChatAttachmentMeta, ChatEngine, type ChatEngineOptions, type ChatEvent, type ChatLayout, type ChatMessage, type ChatSessionMeta, type ChatTheme, type ChatToolCall, Chatbot, type ChatbotConfig, type ChatbotGovernancePorts, type ChatbotHostAdapter, type ChatbotProps, CompositeUiBridge, type CompositeUiBridgeDeps, DEFAULT_RENDERER_CAPABILITIES, type DownloadableFile, ErrorCard, type ErrorCardProps, InteractionCard, type InteractionCardProps, InterruptedBanner, type InterruptedBannerProps, type
|
|
2232
|
+
export { A2uiSurfaceHost, type A2uiSurfaceHostProps, A2uiSurfaceSnapshotHost, type A2uiSurfaceSnapshotHostProps, type AppearanceChange, type ChatAttachmentInput, type ChatAttachmentMeta, ChatEngine, type ChatEngineOptions, type ChatEvent, type ChatInteractionRecord, type ChatLayout, type ChatMessage, type ChatRunPhase, type ChatSessionListResult, type ChatSessionMeta, type ChatTheme, type ChatToolCall, Chatbot, type ChatbotConfig, type ChatbotGovernancePorts, type ChatbotHostAdapter, type ChatbotProps, CompositeUiBridge, type CompositeUiBridgeDeps, DEFAULT_RENDERER_CAPABILITIES, DEFAULT_RUNTIME_CONFIG_STORAGE_KEY, type DownloadableFile, ErrorCard, type ErrorCardProps, InteractionCard, type InteractionCardProps, InterruptedBanner, type InterruptedBannerProps, type Locale, OpenUiSurfaceHost, type OpenUiSurfaceHostProps, OpenUiSurfaceSnapshotHost, type OpenUiSurfaceSnapshotHostProps, type RendererCapability, type RendererKind, type ResolvedChatLayout, ResultBlockList, type ResultBlockListProps, ResultBlocksPro, type ResultBlocksProProps, type RunSnapshot, type RuntimeAppearanceConfig, type RuntimeConfig, type RuntimeConfigStore, type RuntimeRendererId, type SandboxExecutorDeps, SettingsDrawer, type SettingsDrawerProps, SkillBadges, SpecInteraction, type SpecInteractionProps, type UserProfileApi, type UserProfileImportDiff, VercelPayloadPreview, type VercelPayloadPreviewProps, VercelSurfaceHost, type VercelSurfaceHostProps, VercelSurfaceSnapshotHost, type VercelSurfaceSnapshotHostProps, chatbotDictionary, configureA2uiMarkdown, createLocalStorageRuntimeConfigStore, createMemoryRuntimeConfigStore, probeA2uiAvailability, probeOpenUiAvailability, useT };
|