virlen-remote 0.5.0 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +362 -169
- package/README.md +389 -201
- package/dist/index.d.ts +10 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -1
- package/dist/protocol/agents.d.ts +14 -0
- package/dist/protocol/agents.d.ts.map +1 -0
- package/dist/protocol/agents.js +14 -0
- package/dist/protocol/agents.js.map +1 -0
- package/dist/protocol/api.d.ts +356 -1
- package/dist/protocol/api.d.ts.map +1 -1
- package/dist/protocol/api.js.map +1 -1
- package/dist/protocol/compress.d.ts +55 -0
- package/dist/protocol/compress.d.ts.map +1 -0
- package/dist/protocol/compress.js +60 -0
- package/dist/protocol/compress.js.map +1 -0
- package/dist/protocol/files.d.ts +261 -0
- package/dist/protocol/files.d.ts.map +1 -0
- package/dist/protocol/files.js +506 -0
- package/dist/protocol/files.js.map +1 -0
- package/dist/protocol/host.d.ts +24 -1
- package/dist/protocol/host.d.ts.map +1 -1
- package/dist/protocol/host.js +9 -1
- package/dist/protocol/host.js.map +1 -1
- package/dist/protocol/message-files.d.ts +79 -0
- package/dist/protocol/message-files.d.ts.map +1 -0
- package/dist/protocol/message-files.js +118 -0
- package/dist/protocol/message-files.js.map +1 -0
- package/dist/protocol/tool-args.d.ts +95 -0
- package/dist/protocol/tool-args.d.ts.map +1 -0
- package/dist/protocol/tool-args.js +439 -0
- package/dist/protocol/tool-args.js.map +1 -0
- package/dist/testing/mock-host.d.ts +44 -1
- package/dist/testing/mock-host.d.ts.map +1 -1
- package/dist/testing/mock-host.js +439 -10
- package/dist/testing/mock-host.js.map +1 -1
- package/dist/transport/rtc.d.ts +17 -0
- package/dist/transport/rtc.d.ts.map +1 -1
- package/dist/transport/rtc.js +49 -12
- package/dist/transport/rtc.js.map +1 -1
- package/dist/transport/signaling.d.ts +12 -1
- package/dist/transport/signaling.d.ts.map +1 -1
- package/dist/transport/signaling.js +17 -3
- package/dist/transport/signaling.js.map +1 -1
- package/package.json +69 -69
- package/src/index.ts +270 -184
- package/src/protocol/agents.ts +13 -0
- package/src/protocol/api.ts +960 -615
- package/src/protocol/compress.ts +65 -0
- package/src/protocol/files.ts +544 -0
- package/src/protocol/host.ts +205 -165
- package/src/protocol/message-actions.ts +60 -60
- package/src/protocol/message-files.ts +161 -0
- package/src/protocol/pairing.ts +254 -254
- package/src/protocol/tool-args.ts +478 -0
- package/src/testing/mock-host.ts +1285 -740
- package/src/transport/link-kind.ts +222 -222
- package/src/transport/rtc.ts +381 -344
- package/src/transport/signaling.ts +331 -317
- package/src/transport/transfer-tier.ts +64 -64
package/dist/index.js
CHANGED
|
@@ -23,6 +23,16 @@ export { normalizeChoiceAnswer, answerActionError, CHOICE_JOINER } from './proto
|
|
|
23
23
|
export { negotiate, intersectCapabilities } from './protocol/hello.js';
|
|
24
24
|
// ── 消息级操作(引用 / 删除)的共用契约:能力名 + 引用快照体 ──
|
|
25
25
|
export { MESSAGE_QUOTE_CAPABILITY, MESSAGE_DELETE_CAPABILITY } from './protocol/message-actions.js';
|
|
26
|
+
// ── 消息里的文件引用(§37 的延伸):能力名 + 引用体 + 两端同一份校验口径 ──
|
|
27
|
+
export { MESSAGE_FILE_CAPABILITY, MESSAGE_FILE_MAX, MESSAGE_FILE_PATH_MAX, sanitizeFileRefs, } from './protocol/message-files.js';
|
|
28
|
+
// ── Agent 相关能力名(新建会话时选定 Agent 的授权口径)──
|
|
29
|
+
export { SESSION_AGENT_CAPABILITY } from './protocol/agents.js';
|
|
30
|
+
// ── §22:上下文压缩方式的取值域 + 能力名(手机端选、电脑端执行)──
|
|
31
|
+
export { COMPRESS_MODES, DEFAULT_COMPRESS_MODE, COMPRESS_MODE_CAPABILITY, compressModeOf, } from './protocol/compress.js';
|
|
32
|
+
// ── 工具入参的两种呈现(折叠态一行摘要 / 展开态完整入参)的唯一格式化口径 ──
|
|
33
|
+
export { summarizeToolArgs, formatToolArgs, elideMiddle, TOOL_ARGS_MAX, TOOL_DETAIL_MAX, } from './protocol/tool-args.js';
|
|
34
|
+
// ── §37:工作目录文件(能力名 / 限额 / base64 / 预览分类 / 路径工具,两端同一份)──
|
|
35
|
+
export { FILE_BROWSE_CAPABILITY, FILE_DOWNLOAD_CAPABILITY, FILE_UPLOAD_CAPABILITY, FILE_EDIT_CAPABILITY, FILE_CHUNK_BYTES, FILE_UPLOAD_MAX_BYTES, FILE_EDIT_MAX_BYTES, FILE_TEXT_PREVIEW_MAX_BYTES, FILE_IMAGE_PREVIEW_MAX_BYTES, FILE_LIST_MAX_ENTRIES, FILE_NAME_MAX_LEN, UPLOAD_PART_SUFFIX, FILE_DIRECT_ONLY_MESSAGE, fileTransferDeniedReason, splitNameExt, previewKindOf, previewLimitOf, mimeTypeOf, isEditableKind, isEditableFileName, detectEolStyle, applyEolStyle, hasUtf8Bom, decodeUtf8Strict, encodeEditedText, bytesToBase64, base64ToBytes, formatFileSize, normalizeRelPath, joinRelPath, parentOfRelPath, baseNameOfPath, isSafeEntryName, duplicateNameCandidate, compareFileEntries, } from './protocol/files.js';
|
|
26
36
|
export { Endpoint } from './protocol/endpoint.js';
|
|
27
37
|
export { createCaller, createSubscriber, registerHandlers } from './protocol/api.js';
|
|
28
38
|
export { DEFAULT_CONTEXT_WINDOW_TOKENS, COMPRESS_MIN_RATIO } from './protocol/api.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,iBAAiB;AACjB,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,yBAAyB,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACtG,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAGnG,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAG9D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE7C,yBAAyB;AACzB,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,qBAAqB,EACrB,SAAS,EACT,YAAY,EACZ,aAAa,EACb,WAAW,EACX,OAAO,EACP,eAAe,EACf,UAAU,EACV,cAAc,EACd,UAAU,EACV,UAAU,EACV,sBAAsB,GACvB,MAAM,qBAAqB,CAAA;AAG5B,yBAAyB;AACzB,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,0BAA0B,EAC1B,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,aAAa,GACd,MAAM,oBAAoB,CAAA;AAG3B,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAG3F,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AAEnE,wCAAwC;AACxC,OAAO,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAA;AAGhG,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAU9C,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACjF,OAAO,EAAE,6BAA6B,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent 相关的能力名(两端共用的唯一一份口径)。
|
|
3
|
+
*
|
|
4
|
+
* 为什么单列一个模块:`session.agent` 是**权限**而不是功能标记 ——
|
|
5
|
+
* 新建会话时选定 Agent 决定这条会话的 systemPrompt / 工具白名单 / skills / 默认参数
|
|
6
|
+
* (电脑侧落点是 `chat-service.createSession(…, agent, …)`),是实实在在的授权范围变化。
|
|
7
|
+
* 所以电脑侧的 handler 必须独立 `assert`(手机端隐藏入口只是 UI 收敛,§7-⑪ 的教训)。
|
|
8
|
+
*
|
|
9
|
+
* 与 `message-actions.ts` 里的两个常量同族:常量写在共享包里、两端 import 同一个字面量,
|
|
10
|
+
* 免得一边写成 `session.agents`、另一边写 `session.agent` 却没人发现(能力名不匹配时
|
|
11
|
+
* 不会报错,只会「UI 不显示」这种最费解的症状)。
|
|
12
|
+
*/
|
|
13
|
+
export declare const SESSION_AGENT_CAPABILITY = "session.agent";
|
|
14
|
+
//# sourceMappingURL=agents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/protocol/agents.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,wBAAwB,kBAAkB,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent 相关的能力名(两端共用的唯一一份口径)。
|
|
3
|
+
*
|
|
4
|
+
* 为什么单列一个模块:`session.agent` 是**权限**而不是功能标记 ——
|
|
5
|
+
* 新建会话时选定 Agent 决定这条会话的 systemPrompt / 工具白名单 / skills / 默认参数
|
|
6
|
+
* (电脑侧落点是 `chat-service.createSession(…, agent, …)`),是实实在在的授权范围变化。
|
|
7
|
+
* 所以电脑侧的 handler 必须独立 `assert`(手机端隐藏入口只是 UI 收敛,§7-⑪ 的教训)。
|
|
8
|
+
*
|
|
9
|
+
* 与 `message-actions.ts` 里的两个常量同族:常量写在共享包里、两端 import 同一个字面量,
|
|
10
|
+
* 免得一边写成 `session.agents`、另一边写 `session.agent` 却没人发现(能力名不匹配时
|
|
11
|
+
* 不会报错,只会「UI 不显示」这种最费解的症状)。
|
|
12
|
+
*/
|
|
13
|
+
export const SESSION_AGENT_CAPABILITY = 'session.agent';
|
|
14
|
+
//# sourceMappingURL=agents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/protocol/agents.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,eAAe,CAAA"}
|
package/dist/protocol/api.d.ts
CHANGED
|
@@ -11,6 +11,9 @@
|
|
|
11
11
|
* 具体从电脑侧 store 投影到 DTO 的适配在 M2 的 `dto.ts` 落地。
|
|
12
12
|
*/
|
|
13
13
|
import type { CallContext, Endpoint } from './endpoint.js';
|
|
14
|
+
import type { CompressMode } from './compress.js';
|
|
15
|
+
import type { FilePreviewKind } from './files.js';
|
|
16
|
+
import type { MessageFileRef } from './message-files.js';
|
|
14
17
|
import type { MessageQuote } from './message-actions.js';
|
|
15
18
|
export interface SessionSummaryDTO {
|
|
16
19
|
id: string;
|
|
@@ -49,6 +52,11 @@ export interface MessageDTO {
|
|
|
49
52
|
*
|
|
50
53
|
* ⚠️ **引用块不在本字段里**(见 `quotes`):引用是结构化下行的,若同时把它展平进
|
|
51
54
|
* `text`,消费方就会把同一段引文显示两遍(引用条 + 正文里的 `[引用] …`)。
|
|
55
|
+
*
|
|
56
|
+
* ⚠️ **工具输出(`role:'tool'`)有长度上限**:超过 `TOOL_DETAIL_MAX`(5000)字符时
|
|
57
|
+
* 电脑侧会做**中间省略**(`elideMiddle`),并把 `…(中间省略 N 字符)…` 写在正文里 ——
|
|
58
|
+
* 头尾都是真的,只少了中间那段。所以它**不是**「正文被篡改」,消费方不得据此
|
|
59
|
+
* 提示「内容不可信」;要判「有没有被砍过」就看那一行标记(长度看不出来)。
|
|
52
60
|
*/
|
|
53
61
|
text: string;
|
|
54
62
|
createdAt: number;
|
|
@@ -70,6 +78,37 @@ export interface MessageDTO {
|
|
|
70
78
|
* 手机端**不猜**:拿不到就只显示「工具」。
|
|
71
79
|
*/
|
|
72
80
|
toolName?: string;
|
|
81
|
+
/**
|
|
82
|
+
* 工具**入参摘要**(仅 `role:'tool'`;一行纯文本,如 `src/store/chat.ts`、
|
|
83
|
+
* `npm run build`、`在 src 中搜索 sessionError`)。
|
|
84
|
+
*
|
|
85
|
+
* 为什么需要一个字段:工具气泡只说「调了 read_file」,用户并不知道**看的是哪个文件**;
|
|
86
|
+
* 桌面端这条信息来自 `toolCalls[].input`(28 个 `getShortText()` 组件各挑各的主参数)。
|
|
87
|
+
* 手机是第二个屏幕,同样需要「这一步在干什么」。
|
|
88
|
+
*
|
|
89
|
+
* ⚠️ **不是原始入参**:`write_file.content` / `edit_file.edits[].old_string` 可能是整篇文章,
|
|
90
|
+
* 原样下行就是流量事故(§7-⑦)。电脑侧只挑关键入参、格式化并截断
|
|
91
|
+
* (`summarizeToolArgs`,与演示宿主共用同一份实现)。
|
|
92
|
+
*
|
|
93
|
+
* 消费方注意:拿不到(旧电脑端 / 跨页工具调用)时字段缺席 ——
|
|
94
|
+
* 此时**只显示工具名**,不要猜、也不要用正文反推。
|
|
95
|
+
*/
|
|
96
|
+
toolArgs?: string;
|
|
97
|
+
/**
|
|
98
|
+
* 工具**入参详情**(仅 `role:'tool'`;多行,展开工具卡片后才渲染)。
|
|
99
|
+
*
|
|
100
|
+
* 为什么与 `toolArgs` 并存:那一行摘要只挑**主参数**(且硬上限 160 字符),真机反馈是
|
|
101
|
+
* 「入参显示不完整」—— 用户点开卡片想知道「刚才那行没显示完的是什么」。这里是入参本身
|
|
102
|
+
* (两空格缩进的 JSON,与桌面导出的同一种形态),路径与 `toolArgs` 走**同一个**缩短回调。
|
|
103
|
+
*
|
|
104
|
+
* ⚠️ **它比 `toolArgs` 重得多**(`write_file.content` 会原样出现,只是被 `TOOL_DETAIL_MAX`
|
|
105
|
+
* 兜住),所以纪律也反了一面:`toolArgs` 是「只给摘要、不给原文」,这里是「用户主动点开
|
|
106
|
+
* 才渲染的现场」。消费方**不得**把它放进折叠态(那会把流量事故从电脑搬到手机屏幕上)。
|
|
107
|
+
*
|
|
108
|
+
* 超长时同样是**中间省略**(标记行写在正文里)。字段缺席 = 没有可显示的入参
|
|
109
|
+
* (旧电脑端 / 跨页工具调用 / 入参为空)→ 展开区不渲染这一块,不要凭空造。
|
|
110
|
+
*/
|
|
111
|
+
toolArgsFull?: string;
|
|
73
112
|
/**
|
|
74
113
|
* 本条消息引用了哪些历史消息(快照,**可选**;只有带引用的用户消息才有)。
|
|
75
114
|
*
|
|
@@ -81,6 +120,24 @@ export interface MessageDTO {
|
|
|
81
120
|
* 发给模型的是完整快照(与桌面一致,不要在协议层擅自裁剪用户要引用的内容)。
|
|
82
121
|
*/
|
|
83
122
|
quotes?: MessageQuote[];
|
|
123
|
+
/**
|
|
124
|
+
* 本条消息引用了电脑上的哪些文件(**可选**;只有带文件引用的用户消息才有)。
|
|
125
|
+
*
|
|
126
|
+
* 语义与 `quotes` 并列但**不同源**:删除引用是**快照**(存正文,原消息没了也还在),
|
|
127
|
+
* 这里是**路径**(存位置,AI 读的那一刻磁盘上是什么就是什么)。与桌面输入框的文件附件
|
|
128
|
+
* 同一条口径:不搬运文件内容,只把「用户附了这个文件」告诉模型(`[User attached file] <path>`),
|
|
129
|
+
* 具体内容由模型用 `read_file` 按需读取。
|
|
130
|
+
*
|
|
131
|
+
* 为什么结构化下行而不展平进 `text`:电脑侧投影正文时本就已经把文件块展平成
|
|
132
|
+
* `[文件] <名字>` 的占位符(§7-⑦,与图片同一套降级规则),而那个占位符**只有名字没有路径、
|
|
133
|
+
* 也没有体积**(同一目录下的两个 `index.ts` 长得一模一样)。手机端要显示「附了哪个文件」
|
|
134
|
+
* 就得靠这个结构化字段;两条路同时走会显示两遍(与 `quotes` 同一条纪律)。
|
|
135
|
+
*
|
|
136
|
+
* 消费方注意:`path` 是**电脑上的绝对路径**(与 `SessionSummaryDTO.workspace` / `host.file.list`
|
|
137
|
+
* 的 `absPath` 同一口径,手机上本来就看得见工作目录),不是可在手机上打开的东西 ——
|
|
138
|
+
* 手机上它只是一段可复制的文本。
|
|
139
|
+
*/
|
|
140
|
+
files?: MessageFileRef[];
|
|
84
141
|
}
|
|
85
142
|
export interface RuntimeDTO {
|
|
86
143
|
working: boolean;
|
|
@@ -101,6 +158,43 @@ export interface RuntimeDTO {
|
|
|
101
158
|
name: string;
|
|
102
159
|
chars: number;
|
|
103
160
|
} | null;
|
|
161
|
+
/**
|
|
162
|
+
* **正在执行中**的工具调用(引擎**已开始执行、结果还没回来**的那几个)。
|
|
163
|
+
*
|
|
164
|
+
* 为什么需要(`toolProgress` 管不到这一段):`toolProgress` 只在**累积参数**期间有值,
|
|
165
|
+
* 一旦工具开始执行就被清掉(那时的判据是「参数生成完了」)—— 于是从「开始执行」到
|
|
166
|
+
* 「结果消息到达」之间,电脑侧界面上有一张**呼吸点卡片**(桌面上由
|
|
167
|
+
* `message-bubble.tsx` 用「assistant 的 `toolCalls[]` 减去已有结果」推导出来),
|
|
168
|
+
* 而手机端此前**一点都看不到**:工具消息只在**执行完之后**才作为消息下行,
|
|
169
|
+
* 这段静默期手机上只剩「正在思考…」,看起来像卡死(真机反馈)。
|
|
170
|
+
*
|
|
171
|
+
* 语义(电脑侧权威,与桌面 pending 卡片**同一判据**):已声明、尚无同 `toolCallId`
|
|
172
|
+
* 结果消息的那些调用;仅 `working === true` 时可能有值,字段缺席 = 此刻没有执行中的工具。
|
|
173
|
+
*
|
|
174
|
+
* ⚠️ **不要把它当成「进度」来理解**:这里没有百分比、没有输出。`args` 是一行**摘要**
|
|
175
|
+
* (与 `MessageDTO.toolArgs` 同一格式化口径),**绝不含参数正文** —— 工具的执行输出走
|
|
176
|
+
* 结果消息(`role:'tool'`),运行中的实时输出目前不下行。
|
|
177
|
+
*/
|
|
178
|
+
runningTools?: RunningToolDTO[];
|
|
179
|
+
}
|
|
180
|
+
/** `RuntimeDTO.runningTools` 的一条:正在执行的一次工具调用。 */
|
|
181
|
+
export interface RunningToolDTO {
|
|
182
|
+
/**
|
|
183
|
+
* 本次调用的 id(与结果消息 `MessageDTO.toolCallId` 同一个 id)。
|
|
184
|
+
*
|
|
185
|
+
* 消费方可用它把「执行中」与「已到达的结果」对齐(例如结果到达后收掉那一行);
|
|
186
|
+
* 只按顺序对齐是不行的 —— 同一批可能有多个调用并行执行。
|
|
187
|
+
*/
|
|
188
|
+
toolCallId: string;
|
|
189
|
+
/** 工具名(如 `read_file`)—— 手机端「这一步在干什么」的主语。 */
|
|
190
|
+
name: string;
|
|
191
|
+
/**
|
|
192
|
+
* 入参**一行摘要**(与 `MessageDTO.toolArgs` 同一条格式化口径、同一个长度上限)。
|
|
193
|
+
*
|
|
194
|
+
* 拿不到主参数时字段缺席(旧电脑端不会发这个字段;新电脑端给不出摘要时也不发)——
|
|
195
|
+
* 此时只显示工具名,**不要用别的字段反推**。
|
|
196
|
+
*/
|
|
197
|
+
args?: string;
|
|
104
198
|
}
|
|
105
199
|
/**
|
|
106
200
|
* 授权分级(M4,见 docs/phone-control-bridge.md §16.2)。
|
|
@@ -184,6 +278,19 @@ export interface SendParams {
|
|
|
184
278
|
* 另外这是 `session.send` 的一个参数,**不是新权限** —— 越权防线仍是 `session.send`。
|
|
185
279
|
*/
|
|
186
280
|
quotes?: MessageQuote[];
|
|
281
|
+
/**
|
|
282
|
+
* 引用电脑上的若干文件(可选)—— 手机端在文件面板里挑出来的那些。
|
|
283
|
+
*
|
|
284
|
+
* 电脑端把它组装成 `{type:'file'}` 内容块(与桌面输入框的文件附件走**同一个**
|
|
285
|
+
* `buildUserContent`),因此下游(引擎 / 持久化 / 桌面渲染 / 导出)的语义与桌面完全一致。
|
|
286
|
+
* **不搬运内容**:文件内容由 AI 用 `read_file` 按需读取(桌面 `FileAttachment` 同此口径)。
|
|
287
|
+
*
|
|
288
|
+
* ⚠️ **只在电脑端声明 `MESSAGE_FILE_CAPABILITY` 时才能发**(与 `quotes` 同一条教训):
|
|
289
|
+
* 旧电脑端不认这个字段,RPC 会「成功」而文件引用被静默丢掉。
|
|
290
|
+
* ⚠️ 形状非法 / 超过 `MESSAGE_FILE_MAX` 时电脑侧**拒整条**(`E_BAD_REQUEST`,不静默丢那一条)——
|
|
291
|
+
* 校验口径见 `message-files.ts::sanitizeFileRefs`(两端同一份)。
|
|
292
|
+
*/
|
|
293
|
+
files?: MessageFileRef[];
|
|
187
294
|
}
|
|
188
295
|
export interface MsgPageParams {
|
|
189
296
|
sessionId: string;
|
|
@@ -272,6 +379,27 @@ export interface WorkspaceOptionDTO {
|
|
|
272
379
|
/** 使用该目录的既有会话数(展示用)。 */
|
|
273
380
|
sessionCount: number;
|
|
274
381
|
}
|
|
382
|
+
/**
|
|
383
|
+
* 新建会话可选的 Agent(`host.agent.list`)。
|
|
384
|
+
*
|
|
385
|
+
* 白名单投影:只给 `id` / `name` / 默认模型 / 默认工作目录 —— **不含** `systemPrompt`
|
|
386
|
+
* (可达数十 KB)、`allowTools` / `skills` / `params`(本地配置,§7-⑥)。
|
|
387
|
+
*
|
|
388
|
+
* 默认值**只用于展示**(让手机端把「选它会发生什么」说清楚,并在切换 Agent 时联动显示);
|
|
389
|
+
* 真正的会话组装仍在电脑侧 `createSession` 里做 —— 手机端传不传模型 / 目录都不影响结果。
|
|
390
|
+
*/
|
|
391
|
+
export interface AgentOptionDTO {
|
|
392
|
+
id: string;
|
|
393
|
+
/** Agent 显示名(电脑侧已解析,手机不查表)。 */
|
|
394
|
+
name: string;
|
|
395
|
+
/** Agent 的默认模型;未配置则缺省(不显示)。 */
|
|
396
|
+
defaultModel?: {
|
|
397
|
+
providerConfigId: string;
|
|
398
|
+
modelId: string;
|
|
399
|
+
};
|
|
400
|
+
/** Agent 的默认工作目录(归一化绝对路径);未配置则缺省。 */
|
|
401
|
+
defaultWorkspace?: string;
|
|
402
|
+
}
|
|
275
403
|
/**
|
|
276
404
|
* 上下文占用(`host.session.context` / `host.event.session.context.changed`)。
|
|
277
405
|
*
|
|
@@ -294,6 +422,13 @@ export interface ContextParams {
|
|
|
294
422
|
}
|
|
295
423
|
export interface CompressParams {
|
|
296
424
|
sessionId: string;
|
|
425
|
+
/**
|
|
426
|
+
* 压缩方式(缺省 = 电脑侧设置里的 `contextCompressMode`)。
|
|
427
|
+
*
|
|
428
|
+
* ⚠️ **只在电脑端声明 `COMPRESS_MODE_CAPABILITY` 时才能传**:旧电脑端不认这个字段,
|
|
429
|
+
* RPC 照样成功 —— 但它会按电脑侧设置的方式压缩(见 `compress.ts` 头注释)。
|
|
430
|
+
*/
|
|
431
|
+
mode?: CompressMode;
|
|
297
432
|
/**
|
|
298
433
|
* 必须为 `true`。
|
|
299
434
|
*
|
|
@@ -308,6 +443,153 @@ export interface AnswerResult {
|
|
|
308
443
|
accepted: boolean;
|
|
309
444
|
reason?: AnswerRejectReason;
|
|
310
445
|
}
|
|
446
|
+
/**
|
|
447
|
+
* 目录里的一条(`host.file.list`)。
|
|
448
|
+
*
|
|
449
|
+
* 白名单投影:**只有名字、是否目录、大小、修改时刻** —— 不给绝对路径(那要拼接才有意义,
|
|
450
|
+
* 而拼接口径放在电脑侧由 `FileListResult` 统一给)、不给权限位、不给 inode 这类本机细节。
|
|
451
|
+
*/
|
|
452
|
+
export interface FileEntryDTO {
|
|
453
|
+
name: string;
|
|
454
|
+
isDir: boolean;
|
|
455
|
+
/** 字节数(目录恒为 0)。 */
|
|
456
|
+
size: number;
|
|
457
|
+
/** 修改时刻(ms 时间戳);拿不到时字段缺席(手机端不显示而不是显示 1970)。 */
|
|
458
|
+
mtimeMs?: number;
|
|
459
|
+
}
|
|
460
|
+
export interface FileListParams {
|
|
461
|
+
sessionId: string;
|
|
462
|
+
/**
|
|
463
|
+
* **相对**会话工作目录的路径(`'src/store'`);缺省 / 空串 = 工作目录根。
|
|
464
|
+
*
|
|
465
|
+
* ⚠️ 手机端**不得**传绝对路径、也不得传 `..` —— 电脑侧会用 `normalizeRelPath` 规整,
|
|
466
|
+
* 逃出工作目录的段一律被丢掉;真正的拒绝发生在 `resolveSafePath`(工作目录 + 黑白名单)。
|
|
467
|
+
*/
|
|
468
|
+
path?: string;
|
|
469
|
+
}
|
|
470
|
+
export interface FileListResult {
|
|
471
|
+
/** 规整后的相对路径(`''` = 工作目录根)—— 手机端原样用于后续请求。 */
|
|
472
|
+
relPath: string;
|
|
473
|
+
/** 绝对路径(电脑侧算好,手机端只用于显示「你在看电脑上的哪个目录」)。 */
|
|
474
|
+
absPath: string;
|
|
475
|
+
entries: FileEntryDTO[];
|
|
476
|
+
/** 条目超过 `FILE_LIST_MAX_ENTRIES` 而截断(手机端如实提示,不假装目录就这么大)。 */
|
|
477
|
+
truncated?: boolean;
|
|
478
|
+
}
|
|
479
|
+
export interface FileReadParams {
|
|
480
|
+
sessionId: string;
|
|
481
|
+
/** 相对会话工作目录的文件路径。 */
|
|
482
|
+
path: string;
|
|
483
|
+
/** 起始字节偏移(缺省 0)—— 分块下载 / 预览都靠它。 */
|
|
484
|
+
offset?: number;
|
|
485
|
+
/** 期望长度(字节);电脑侧按 `FILE_CHUNK_BYTES` 再夹一次。 */
|
|
486
|
+
length?: number;
|
|
487
|
+
}
|
|
488
|
+
export interface FileReadResult {
|
|
489
|
+
/** 本块字节的 **base64**(无 `data:` 前缀)。 */
|
|
490
|
+
data: string;
|
|
491
|
+
/** 本块在文件中的起始偏移(与请求一致;电脑侧夹过长度后仍是原值)。 */
|
|
492
|
+
offset: number;
|
|
493
|
+
/** 文件总大小(字节)—— 首块即给全,手机端因此能先算进度再决定要不要继续。 */
|
|
494
|
+
size: number;
|
|
495
|
+
/** 本块是否已到文件末尾(`true` = 拼完就完整)。 */
|
|
496
|
+
eof: boolean;
|
|
497
|
+
/**
|
|
498
|
+
* 预览分类(**电脑侧算,手机端不猜**)。
|
|
499
|
+
*
|
|
500
|
+
* 手机端据此选渲染器;`binary` = 只能下载。两边跑的是共享包里同一个
|
|
501
|
+
* `previewKindOf`,所以正常情况下永远一致 —— 把它放进协议是为了让**将来变规则时**
|
|
502
|
+
* 旧手机端仍按电脑的意思渲染,而不是按自己那份过期的表。
|
|
503
|
+
*/
|
|
504
|
+
kind: FilePreviewKind;
|
|
505
|
+
/** MIME(手机端给 Blob / `<img>` 用)。 */
|
|
506
|
+
mime: string;
|
|
507
|
+
/**
|
|
508
|
+
* 文件当前的修改时刻(ms 时间戳;拿不到时字段缺席)。
|
|
509
|
+
*
|
|
510
|
+
* 它是**编辑保存的第一步**:手机端打开文件时记下它,保存时原样回传(`expectMtimeMs`),
|
|
511
|
+
* 电脑侧比对不一致就拒 —— 否则手机上改的是「几分钟前的那一版」,一保存就把电脑上
|
|
512
|
+
* (AI / 用户 / 编辑器)刚写进去的内容**静默吞掉**。
|
|
513
|
+
*/
|
|
514
|
+
mtimeMs?: number;
|
|
515
|
+
}
|
|
516
|
+
/** 上传时同名冲突怎么办。 */
|
|
517
|
+
export type FileConflictPolicy =
|
|
518
|
+
/** 自动加「 - 副本」(默认;与桌面侧文件操作同一条口径)。 */
|
|
519
|
+
'rename'
|
|
520
|
+
/** 直接拒(`E_CONFLICT`),让用户在手机上自己改名。 */
|
|
521
|
+
| 'reject';
|
|
522
|
+
export interface FileWriteBeginParams {
|
|
523
|
+
sessionId: string;
|
|
524
|
+
/** 目标目录(**相对**工作目录;缺省 = 根)。 */
|
|
525
|
+
dir?: string;
|
|
526
|
+
/** 目标文件名(不含路径)。 */
|
|
527
|
+
name: string;
|
|
528
|
+
/** 文件总大小(字节)—— 电脑侧据此在**开始前**就拒掉超限的上传。 */
|
|
529
|
+
size: number;
|
|
530
|
+
/** 缺省 `'rename'`。 */
|
|
531
|
+
onConflict?: FileConflictPolicy;
|
|
532
|
+
/**
|
|
533
|
+
* **覆写已存在的文件**(编辑保存走这条路;缺省 = 上传新建)。
|
|
534
|
+
*
|
|
535
|
+
* ⚠️ 三处语义分叉,都靠它切换:
|
|
536
|
+
* 1. 目标**必须已存在**(不存在 = 路径错了 → `E_NOT_FOUND`,**不新建** —— 否则手机端一个
|
|
537
|
+
* 路径笔误会在用户目录里凭空造出一个文件);
|
|
538
|
+
* 2. **不做同名改名**:`finish` 原样覆写目标,不回「 - 副本」(那是上传才需要的口径);
|
|
539
|
+
* 3. 需要 `FILE_EDIT_CAPABILITY`,并把 `expectMtimeMs` / `expectSize` 一起校验。
|
|
540
|
+
*/
|
|
541
|
+
overwrite?: boolean;
|
|
542
|
+
/**
|
|
543
|
+
* 打开这份文件时电脑侧给的 `mtimeMs`(覆写时校验;不一致 = 电脑上已经变了 → `E_CONFLICT`)。
|
|
544
|
+
*
|
|
545
|
+
* 电脑侧**拿不到 mtime 时按冲突处理**(宁可让用户重新载入,也不拿一份可能已经过期的内容
|
|
546
|
+
* 去覆盖别人的改动)。
|
|
547
|
+
*/
|
|
548
|
+
expectMtimeMs?: number;
|
|
549
|
+
/** 打开这份文件时的大小(覆写时校验;与 `expectMtimeMs` 一起用,任一不符即拒)。 */
|
|
550
|
+
expectSize?: number;
|
|
551
|
+
}
|
|
552
|
+
export interface FileWriteBeginResult {
|
|
553
|
+
/** 本次上传的票据(后续 `chunk` / `finish` / `abort` 都带着它)。 */
|
|
554
|
+
uploadId: string;
|
|
555
|
+
/** 冲突消解后的**最终**文件名 —— 手机端据此显示「已存为 a - 副本.txt」。 */
|
|
556
|
+
name: string;
|
|
557
|
+
/** 最终文件的相对路径(相对工作目录)。 */
|
|
558
|
+
relPath: string;
|
|
559
|
+
/** 已接收的字节数(恒 0;预留给将来的续传)。 */
|
|
560
|
+
received: number;
|
|
561
|
+
}
|
|
562
|
+
export interface FileWriteChunkParams {
|
|
563
|
+
uploadId: string;
|
|
564
|
+
/** 本块在文件中的起始偏移(必须等于电脑侧已接收的字节数 —— 乱序即拒)。 */
|
|
565
|
+
offset: number;
|
|
566
|
+
/** **base64** 的本块字节。 */
|
|
567
|
+
data: string;
|
|
568
|
+
}
|
|
569
|
+
export interface FileWriteChunkResult {
|
|
570
|
+
/** 电脑侧累计已接收的字节数(手机端据此显示进度)。 */
|
|
571
|
+
received: number;
|
|
572
|
+
}
|
|
573
|
+
export interface FileWriteFinishParams {
|
|
574
|
+
uploadId: string;
|
|
575
|
+
}
|
|
576
|
+
export interface FileWriteFinishResult {
|
|
577
|
+
/** 最终文件名(与 `begin` 应答一致,便于手机端不依赖本地状态显示结果)。 */
|
|
578
|
+
name: string;
|
|
579
|
+
relPath: string;
|
|
580
|
+
/** 落盘后的实际字节数(与申报的 `size` 不一致时以它为准)。 */
|
|
581
|
+
size: number;
|
|
582
|
+
/**
|
|
583
|
+
* 落盘后的修改时刻 —— 覆写保存的回执。
|
|
584
|
+
*
|
|
585
|
+
* 为何要回这一个字段:手机端要能**连改两次**。第一次保存后本地记的 mtime 已经过期,
|
|
586
|
+
* 拿它去校验第二次保存必然「冲突」;覆写时电脑侧因此回一个当前值。
|
|
587
|
+
*/
|
|
588
|
+
mtimeMs?: number;
|
|
589
|
+
}
|
|
590
|
+
export interface FileWriteAbortParams {
|
|
591
|
+
uploadId: string;
|
|
592
|
+
}
|
|
311
593
|
export interface CreateSessionParams {
|
|
312
594
|
/** 不传则用电脑端的默认命名 */
|
|
313
595
|
title?: string;
|
|
@@ -317,9 +599,19 @@ export interface CreateSessionParams {
|
|
|
317
599
|
* 不传 = 沿用 Agent 的 `defaultWorkspace`(电脑侧行为)。
|
|
318
600
|
*/
|
|
319
601
|
workspace?: string;
|
|
320
|
-
/**
|
|
602
|
+
/**
|
|
603
|
+
* 模型服务与模型 id;不传 = 沿用**所选 Agent** 的默认模型(未选 Agent 即默认 Agent 的)。
|
|
604
|
+
*/
|
|
321
605
|
providerConfigId?: string;
|
|
322
606
|
modelId?: string;
|
|
607
|
+
/**
|
|
608
|
+
* 归属 Agent(**必须来自 `host.agent.list`**;电脑侧独立校验,未知 id 即 `E_BAD_REQUEST`)。
|
|
609
|
+
*
|
|
610
|
+
* 不传 = 电脑侧的默认 Agent(与桌面「直接新建」的同构行为)。归属 Agent 决定
|
|
611
|
+
* systemPrompt / 工具白名单 / skills / 默认参数,因此电脑侧接受这条字段受
|
|
612
|
+
* `session.agent` 权限约束(见 `SESSION_AGENT_CAPABILITY`)。
|
|
613
|
+
*/
|
|
614
|
+
agentId?: string;
|
|
323
615
|
}
|
|
324
616
|
export interface RenameSessionParams {
|
|
325
617
|
sessionId: string;
|
|
@@ -497,6 +789,19 @@ export interface HostApi {
|
|
|
497
789
|
ok: true;
|
|
498
790
|
};
|
|
499
791
|
};
|
|
792
|
+
/**
|
|
793
|
+
* 新建会话可选的 Agent 候选集(手机端 Agent 选择器)。
|
|
794
|
+
*
|
|
795
|
+
* 与 `host.model.list` / `host.workspace.list` 同族,同样**只用于新建会话**:
|
|
796
|
+
* 已有会话的 Agent 不可改 —— 换了 Agent 就是换 systemPrompt / 工具白名单 / skills,
|
|
797
|
+
* 历史对话会前后错配(与工作目录不可改同一条理由,§22.3)。
|
|
798
|
+
*/
|
|
799
|
+
'host.agent.list': {
|
|
800
|
+
params: Record<string, never>;
|
|
801
|
+
result: {
|
|
802
|
+
agents: AgentOptionDTO[];
|
|
803
|
+
};
|
|
804
|
+
};
|
|
500
805
|
/**
|
|
501
806
|
* 新建会话可选的工作目录候选集。
|
|
502
807
|
*
|
|
@@ -519,6 +824,7 @@ export interface HostApi {
|
|
|
519
824
|
* fire-and-forget:RPC 只回投递确认 —— 进度走 `runtime.compacting`,结果走
|
|
520
825
|
* `host.event.session.messages.reset`(手机重拉窗口)+ `message.added`(摘要消息)。
|
|
521
826
|
* ⚠️ 必须带 `confirm: true`;上下文充裕(低于 40%)时电脑侧直接拒(与桌面 token 环同判据)。
|
|
827
|
+
* 方式由 `mode` 指定(需电脑端声明 `COMPRESS_MODE_CAPABILITY`),不传则用电脑侧设置里的那一档。
|
|
522
828
|
*/
|
|
523
829
|
'host.session.compress': {
|
|
524
830
|
params: CompressParams;
|
|
@@ -526,6 +832,55 @@ export interface HostApi {
|
|
|
526
832
|
ok: true;
|
|
527
833
|
};
|
|
528
834
|
};
|
|
835
|
+
/**
|
|
836
|
+
* 列目录(`file.browse`)。
|
|
837
|
+
*
|
|
838
|
+
* 候选集就是**会话自己的工作目录**(含子目录):越权防线是电脑侧的 `resolveSafePath`
|
|
839
|
+
* (工作目录 + 黑白名单),手机端传什么路径都不构成越权。
|
|
840
|
+
*/
|
|
841
|
+
'host.file.list': {
|
|
842
|
+
params: FileListParams;
|
|
843
|
+
result: FileListResult;
|
|
844
|
+
};
|
|
845
|
+
/**
|
|
846
|
+
* 读文件的一个分块(`file.download`)—— 预览与下载走**同一条**路径。
|
|
847
|
+
*
|
|
848
|
+
* 分块而不是整文件(见 `files.ts` 文件头):单次请求的内存上界固定,进度可见、可取消。
|
|
849
|
+
*/
|
|
850
|
+
'host.file.read': {
|
|
851
|
+
params: FileReadParams;
|
|
852
|
+
result: FileReadResult;
|
|
853
|
+
};
|
|
854
|
+
/**
|
|
855
|
+
* 上传 / **覆写**:开始(`file.upload`;`overwrite: true` 时走 `file.edit`)。
|
|
856
|
+
*
|
|
857
|
+
* 三道校验都在这里做完(大小上限 / 名字合法性 / 目标目录可写),**且冲突消解在开始时就定名**
|
|
858
|
+
* —— 于是「传到一半才发现同名」不会发生,手机端能在动手前就把最终名字告诉用户。
|
|
859
|
+
*
|
|
860
|
+
* 覆写(编辑保存)复用同一个方法,但语义分叉见 `FileWriteBeginParams.overwrite`:
|
|
861
|
+
* 目标必须已存在、不改名、并校验 `expectMtimeMs` / `expectSize`。
|
|
862
|
+
*/
|
|
863
|
+
'host.file.write.begin': {
|
|
864
|
+
params: FileWriteBeginParams;
|
|
865
|
+
result: FileWriteBeginResult;
|
|
866
|
+
};
|
|
867
|
+
/** 上传 / 覆写:写一块(偏移必须与电脑侧已接收字节数一致)。 */
|
|
868
|
+
'host.file.write.chunk': {
|
|
869
|
+
params: FileWriteChunkParams;
|
|
870
|
+
result: FileWriteChunkResult;
|
|
871
|
+
};
|
|
872
|
+
/** 上传 / 覆写:收尾(校验字节数 → 从临时文件 `rename` 落盘;覆写时**替换**目标,不改名)。 */
|
|
873
|
+
'host.file.write.finish': {
|
|
874
|
+
params: FileWriteFinishParams;
|
|
875
|
+
result: FileWriteFinishResult;
|
|
876
|
+
};
|
|
877
|
+
/** 上传 / 覆写:放弃(删临时文件;用户取消 / 出错都走它,避免留垃圾)。 */
|
|
878
|
+
'host.file.write.abort': {
|
|
879
|
+
params: FileWriteAbortParams;
|
|
880
|
+
result: {
|
|
881
|
+
ok: true;
|
|
882
|
+
};
|
|
883
|
+
};
|
|
529
884
|
}
|
|
530
885
|
/** 手机实现、电脑调用。 */
|
|
531
886
|
export interface MobileApi {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/protocol/api.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/protocol/api.ts"],"names":[],"mappings":"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"}
|
package/dist/protocol/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/protocol/api.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/protocol/api.ts"],"names":[],"mappings":"AAuWA,uCAAuC;AAEvC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,MAAO,CAAA;AAEpD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAA;AAijBrC,MAAM,UAAU,YAAY,CAAI,QAAkB;IAChD,OAAO;QACL,IAAI,CAA6B,MAAS,EAAE,MAAsB,EAAE,SAAkB;YACpF,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAA4B,CAAA;QACtH,CAAC;KACF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAI,QAAkB;IACpD,OAAO;QACL,SAAS,CAA6B,KAAQ,EAAE,QAAiC;YAC/E,OAAO,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,QAAsC,CAAC,CAAA;QAC1E,CAAC;KACF,CAAA;AACH,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,gBAAgB,CAAI,QAAkB,EAAE,IAAoB;IAC1E,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,MAAM,EAAE,GAAG,IAAI,CAAC,MAA0B,CAAmD,CAAA;QAC7F,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;IAC5E,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 上下文压缩方式 —— **两端共用的契约**:取值域 + 能力名。
|
|
3
|
+
*
|
|
4
|
+
* ## 为什么单独一份
|
|
5
|
+
*
|
|
6
|
+
* 「用一次模型调用把历史浓缩成摘要」还是「把整段历史本地重排成一段文本」是**两端各表一半**
|
|
7
|
+
* 的约定:手机端给出选择(`CompressParams.mode`),电脑端执行(Rust `CompressMode`,
|
|
8
|
+
* 落点 `virlen_core::agent::compress`);产物的差异还要能被界面说清
|
|
9
|
+
* (`ui_data.compressMode`,桌面 `summary-message.tsx` 据此显示「AI 摘要」/「正文压缩」)。
|
|
10
|
+
* 取值域写两份必然漂移 —— 一边 `'summary'`、一边 `'ai'`,而这类不匹配**不报错**,
|
|
11
|
+
* 只表现为「选了没反应」或「压缩方式记成了错的」。
|
|
12
|
+
*
|
|
13
|
+
* ⚠️ 本模块只放**取值域与能力名**,不放用户可见文案:文案归各端 i18n(桌面
|
|
14
|
+
* `src/ui/i18n`,手机端是硬编码中文 UI),共享包是零运行时依赖的协议层。
|
|
15
|
+
*
|
|
16
|
+
* ## 两种方式的实际差别(消费方据此写提示,别写反)
|
|
17
|
+
*
|
|
18
|
+
* - `ai`:一次**非流式模型调用**(`prompts/compress-context.md`),最省 token,但慢、且**要花钱**;
|
|
19
|
+
* 模型违约(调工具 / 空正文)时电脑侧回退 `raw`,但那次调用**照常记账** —— 所以
|
|
20
|
+
* 「这次到底花了钱没有」不能只看产物形态。
|
|
21
|
+
* - `raw`:纯本地渲染(`compress/raw.rs`),毫秒级零消耗;用户 / 助手正文**一字不删**,
|
|
22
|
+
* 只丢深度思考并省略超长工具参数与工具输出 —— 所以产物**可能比 `ai` 长得多**(可达数万字符)。
|
|
23
|
+
*/
|
|
24
|
+
/** 压缩方式取值(与 Rust `CompressMode::as_str()`、`ui_data.compressMode` 逐字一致)。 */
|
|
25
|
+
export type CompressMode = 'ai' | 'raw';
|
|
26
|
+
/** 全量取值(顺序 = 界面展示顺序,与 Rust `CompressMode::ALL` 一致:`ai` 在前)。 */
|
|
27
|
+
export declare const COMPRESS_MODES: readonly CompressMode[];
|
|
28
|
+
/**
|
|
29
|
+
* 请求里**没传** `mode` 时电脑侧实际用哪种 —— 与桌面设置项 `contextCompressMode` 的默认值一致。
|
|
30
|
+
*
|
|
31
|
+
* 消费方注意:这是**缺省**,不是「手机端该默认选它」—— 手机端在旧电脑端(没有下面那个能力名)
|
|
32
|
+
* 上根本不该传 `mode`,此时真正生效的是**电脑侧设置里的那一档**,手机端无从得知。
|
|
33
|
+
*/
|
|
34
|
+
export declare const DEFAULT_COMPRESS_MODE: CompressMode;
|
|
35
|
+
/**
|
|
36
|
+
* 解析压缩方式(**容忍大小写与首尾空白**,与 Rust `CompressMode::parse` 同宽容度)。
|
|
37
|
+
*
|
|
38
|
+
* 为什么返回 `null` 而不是抛错:调用方是「电脑侧 handler 校验手机传来的参数」,它需要区分
|
|
39
|
+
* 「没传」(用缺省)与「传了但不认识」(`E_BAD_REQUEST`)两种情形;手机端则完全不需要运行时
|
|
40
|
+
* 校验 —— 它的取值来自自己的类型化 UI(`CompressParams.mode` 已是 `CompressMode`)。
|
|
41
|
+
*/
|
|
42
|
+
export declare function compressModeOf(value: unknown): CompressMode | null;
|
|
43
|
+
/**
|
|
44
|
+
* 手机端声明它 = 「本端会给用户两种压缩方式的选择,并把选择放进 `CompressParams.mode`」;
|
|
45
|
+
* 电脑端列出它 = 「本机认识 `CompressParams.mode`,会照它执行」。
|
|
46
|
+
*
|
|
47
|
+
* ⚠️ 这是**功能标记**,不是权限(与 §36 的 `MESSAGE_QUOTE_CAPABILITY` 同类):压缩本身的授权
|
|
48
|
+
* 仍是 `session.compress`(破坏性、需 `confirm:true`,电脑侧独立 `assert`),本能力名只回答
|
|
49
|
+
* 「本机认不认这个参数」。为什么非得有这么一道闸:**已部署的旧电脑端不认 `mode`** ——
|
|
50
|
+
* 它是普通字段,RPC 会正常成功,然后按**电脑侧设置里的方式**压缩。用户侧表现是
|
|
51
|
+
* 「我明明点了『正文压缩』,结果还是走了 AI 摘要(还花了钱)」,且没有任何报错可查。
|
|
52
|
+
* 所以手机端在旧电脑端上**只给一个「压缩上下文」按钮**(走电脑侧设置),不给选择器。
|
|
53
|
+
*/
|
|
54
|
+
export declare const COMPRESS_MODE_CAPABILITY = "session.compress.mode";
|
|
55
|
+
//# sourceMappingURL=compress.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compress.d.ts","sourceRoot":"","sources":["../../src/protocol/compress.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,2EAA2E;AAC3E,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,KAAK,CAAA;AAEvC,+DAA+D;AAC/D,eAAO,MAAM,cAAc,EAAE,SAAS,YAAY,EAAkB,CAAA;AAEpE;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,EAAE,YAAmB,CAAA;AAEvD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI,CAMlE;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,wBAAwB,0BAA0B,CAAA"}
|