berry-agent-sdk 0.1.0-alpha.2
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 +78 -0
- package/dist/packages/berry-agent-sdk/src/client.d.ts +6 -0
- package/dist/packages/berry-agent-sdk/src/client.js +59 -0
- package/dist/packages/berry-agent-sdk/src/client.js.map +1 -0
- package/dist/packages/berry-agent-sdk/src/http.d.ts +24 -0
- package/dist/packages/berry-agent-sdk/src/http.js +232 -0
- package/dist/packages/berry-agent-sdk/src/http.js.map +1 -0
- package/dist/packages/berry-agent-sdk/src/index.d.ts +25 -0
- package/dist/packages/berry-agent-sdk/src/index.js +22 -0
- package/dist/packages/berry-agent-sdk/src/index.js.map +1 -0
- package/dist/packages/berry-agent-sdk/src/stdio.d.ts +23 -0
- package/dist/packages/berry-agent-sdk/src/stdio.js +238 -0
- package/dist/packages/berry-agent-sdk/src/stdio.js.map +1 -0
- package/dist/packages/berry-agent-sdk/src/types.d.ts +117 -0
- package/dist/packages/berry-agent-sdk/src/types.js +19 -0
- package/dist/packages/berry-agent-sdk/src/types.js.map +1 -0
- package/dist/src/agent/events.d.ts +11 -0
- package/dist/src/agent/events.js +2 -0
- package/dist/src/agent/events.js.map +1 -0
- package/dist/src/agent/index.d.ts +13 -0
- package/dist/src/agent/index.js +3 -0
- package/dist/src/agent/index.js.map +1 -0
- package/dist/src/agent/loop.d.ts +19 -0
- package/dist/src/agent/loop.js +140 -0
- package/dist/src/agent/loop.js.map +1 -0
- package/dist/src/agent/queue.d.ts +105 -0
- package/dist/src/agent/queue.js +120 -0
- package/dist/src/agent/queue.js.map +1 -0
- package/dist/src/agent/stream.d.ts +21 -0
- package/dist/src/agent/stream.js +80 -0
- package/dist/src/agent/stream.js.map +1 -0
- package/dist/src/agent/tools-batch.d.ts +49 -0
- package/dist/src/agent/tools-batch.js +222 -0
- package/dist/src/agent/tools-batch.js.map +1 -0
- package/dist/src/agent/types.d.ts +104 -0
- package/dist/src/agent/types.js +9 -0
- package/dist/src/agent/types.js.map +1 -0
- package/dist/src/channels/ask-queue.d.ts +44 -0
- package/dist/src/channels/ask-queue.js +83 -0
- package/dist/src/channels/ask-queue.js.map +1 -0
- package/dist/src/channels/commands.d.ts +56 -0
- package/dist/src/channels/commands.js +130 -0
- package/dist/src/channels/commands.js.map +1 -0
- package/dist/src/channels/engine/cell.d.ts +55 -0
- package/dist/src/channels/engine/cell.js +144 -0
- package/dist/src/channels/engine/cell.js.map +1 -0
- package/dist/src/channels/engine/diff.d.ts +3 -0
- package/dist/src/channels/engine/diff.js +144 -0
- package/dist/src/channels/engine/diff.js.map +1 -0
- package/dist/src/channels/engine/engine.d.ts +151 -0
- package/dist/src/channels/engine/engine.js +417 -0
- package/dist/src/channels/engine/engine.js.map +1 -0
- package/dist/src/channels/engine/index.d.ts +22 -0
- package/dist/src/channels/engine/index.js +9 -0
- package/dist/src/channels/engine/index.js.map +1 -0
- package/dist/src/channels/engine/input-keys.d.ts +39 -0
- package/dist/src/channels/engine/input-keys.js +87 -0
- package/dist/src/channels/engine/input-keys.js.map +1 -0
- package/dist/src/channels/engine/input.d.ts +174 -0
- package/dist/src/channels/engine/input.js +597 -0
- package/dist/src/channels/engine/input.js.map +1 -0
- package/dist/src/channels/engine/memory-io.d.ts +46 -0
- package/dist/src/channels/engine/memory-io.js +72 -0
- package/dist/src/channels/engine/memory-io.js.map +1 -0
- package/dist/src/channels/engine/process-io.d.ts +23 -0
- package/dist/src/channels/engine/process-io.js +39 -0
- package/dist/src/channels/engine/process-io.js.map +1 -0
- package/dist/src/channels/engine/types.d.ts +202 -0
- package/dist/src/channels/engine/types.js +18 -0
- package/dist/src/channels/engine/types.js.map +1 -0
- package/dist/src/channels/engine/width.d.ts +23 -0
- package/dist/src/channels/engine/width.js +123 -0
- package/dist/src/channels/engine/width.js.map +1 -0
- package/dist/src/channels/index.d.ts +25 -0
- package/dist/src/channels/index.js +16 -0
- package/dist/src/channels/index.js.map +1 -0
- package/dist/src/channels/registry.d.ts +33 -0
- package/dist/src/channels/registry.js +57 -0
- package/dist/src/channels/registry.js.map +1 -0
- package/dist/src/channels/sdk/admit.d.ts +32 -0
- package/dist/src/channels/sdk/admit.js +30 -0
- package/dist/src/channels/sdk/admit.js.map +1 -0
- package/dist/src/channels/sdk/backend.d.ts +19 -0
- package/dist/src/channels/sdk/backend.js +103 -0
- package/dist/src/channels/sdk/backend.js.map +1 -0
- package/dist/src/channels/sdk/cursor.d.ts +51 -0
- package/dist/src/channels/sdk/cursor.js +57 -0
- package/dist/src/channels/sdk/cursor.js.map +1 -0
- package/dist/src/channels/sdk/index.d.ts +20 -0
- package/dist/src/channels/sdk/index.js +21 -0
- package/dist/src/channels/sdk/index.js.map +1 -0
- package/dist/src/channels/sdk/jsonl.d.ts +47 -0
- package/dist/src/channels/sdk/jsonl.js +201 -0
- package/dist/src/channels/sdk/jsonl.js.map +1 -0
- package/dist/src/channels/sdk/protocol.d.ts +297 -0
- package/dist/src/channels/sdk/protocol.js +25 -0
- package/dist/src/channels/sdk/protocol.js.map +1 -0
- package/dist/src/channels/sdk/schema.d.ts +12 -0
- package/dist/src/channels/sdk/schema.js +92 -0
- package/dist/src/channels/sdk/schema.js.map +1 -0
- package/dist/src/channels/sdk/wire-core.d.ts +199 -0
- package/dist/src/channels/sdk/wire-core.js +447 -0
- package/dist/src/channels/sdk/wire-core.js.map +1 -0
- package/dist/src/channels/service.d.ts +66 -0
- package/dist/src/channels/service.js +170 -0
- package/dist/src/channels/service.js.map +1 -0
- package/dist/src/channels/tui/autocomplete/autocomplete.d.ts +32 -0
- package/dist/src/channels/tui/autocomplete/autocomplete.js +43 -0
- package/dist/src/channels/tui/autocomplete/autocomplete.js.map +1 -0
- package/dist/src/channels/tui/autocomplete/file-mentions.d.ts +18 -0
- package/dist/src/channels/tui/autocomplete/file-mentions.js +107 -0
- package/dist/src/channels/tui/autocomplete/file-mentions.js.map +1 -0
- package/dist/src/channels/tui/autocomplete/popup.d.ts +47 -0
- package/dist/src/channels/tui/autocomplete/popup.js +149 -0
- package/dist/src/channels/tui/autocomplete/popup.js.map +1 -0
- package/dist/src/channels/tui/autocomplete/provider.d.ts +38 -0
- package/dist/src/channels/tui/autocomplete/provider.js +8 -0
- package/dist/src/channels/tui/autocomplete/provider.js.map +1 -0
- package/dist/src/channels/tui/autocomplete/token.d.ts +22 -0
- package/dist/src/channels/tui/autocomplete/token.js +69 -0
- package/dist/src/channels/tui/autocomplete/token.js.map +1 -0
- package/dist/src/channels/tui/backend/ansi-rows.d.ts +86 -0
- package/dist/src/channels/tui/backend/ansi-rows.js +209 -0
- package/dist/src/channels/tui/backend/ansi-rows.js.map +1 -0
- package/dist/src/channels/tui/backend/main-screen.d.ts +90 -0
- package/dist/src/channels/tui/backend/main-screen.js +208 -0
- package/dist/src/channels/tui/backend/main-screen.js.map +1 -0
- package/dist/src/channels/tui/backend/osc.d.ts +79 -0
- package/dist/src/channels/tui/backend/osc.js +92 -0
- package/dist/src/channels/tui/backend/osc.js.map +1 -0
- package/dist/src/channels/tui/backend/transcript.d.ts +98 -0
- package/dist/src/channels/tui/backend/transcript.js +231 -0
- package/dist/src/channels/tui/backend/transcript.js.map +1 -0
- package/dist/src/channels/tui/backend/tui-backend.d.ts +324 -0
- package/dist/src/channels/tui/backend/tui-backend.js +916 -0
- package/dist/src/channels/tui/backend/tui-backend.js.map +1 -0
- package/dist/src/channels/tui/editor/editor-model.d.ts +141 -0
- package/dist/src/channels/tui/editor/editor-model.js +544 -0
- package/dist/src/channels/tui/editor/editor-model.js.map +1 -0
- package/dist/src/channels/tui/editor/editor-view.d.ts +36 -0
- package/dist/src/channels/tui/editor/editor-view.js +141 -0
- package/dist/src/channels/tui/editor/editor-view.js.map +1 -0
- package/dist/src/channels/tui/editor/editor.d.ts +50 -0
- package/dist/src/channels/tui/editor/editor.js +276 -0
- package/dist/src/channels/tui/editor/editor.js.map +1 -0
- package/dist/src/channels/tui/editor/undo-stack.d.ts +22 -0
- package/dist/src/channels/tui/editor/undo-stack.js +36 -0
- package/dist/src/channels/tui/editor/undo-stack.js.map +1 -0
- package/dist/src/channels/tui/editor/visual-lines.d.ts +39 -0
- package/dist/src/channels/tui/editor/visual-lines.js +127 -0
- package/dist/src/channels/tui/editor/visual-lines.js.map +1 -0
- package/dist/src/channels/tui/editor/word-nav.d.ts +10 -0
- package/dist/src/channels/tui/editor/word-nav.js +107 -0
- package/dist/src/channels/tui/editor/word-nav.js.map +1 -0
- package/dist/src/channels/tui/history/history-viewer.d.ts +133 -0
- package/dist/src/channels/tui/history/history-viewer.js +404 -0
- package/dist/src/channels/tui/history/history-viewer.js.map +1 -0
- package/dist/src/channels/tui/index.d.ts +16 -0
- package/dist/src/channels/tui/index.js +4 -0
- package/dist/src/channels/tui/index.js.map +1 -0
- package/dist/src/channels/tui/markdown/blocks.d.ts +42 -0
- package/dist/src/channels/tui/markdown/blocks.js +112 -0
- package/dist/src/channels/tui/markdown/blocks.js.map +1 -0
- package/dist/src/channels/tui/markdown/inline.d.ts +24 -0
- package/dist/src/channels/tui/markdown/inline.js +76 -0
- package/dist/src/channels/tui/markdown/inline.js.map +1 -0
- package/dist/src/channels/tui/markdown/markdown.d.ts +34 -0
- package/dist/src/channels/tui/markdown/markdown.js +183 -0
- package/dist/src/channels/tui/markdown/markdown.js.map +1 -0
- package/dist/src/channels/tui/memory/memory-viewer.d.ts +235 -0
- package/dist/src/channels/tui/memory/memory-viewer.js +541 -0
- package/dist/src/channels/tui/memory/memory-viewer.js.map +1 -0
- package/dist/src/channels/tui/overlay/alt-screen.d.ts +79 -0
- package/dist/src/channels/tui/overlay/alt-screen.js +106 -0
- package/dist/src/channels/tui/overlay/alt-screen.js.map +1 -0
- package/dist/src/channels/tui/overlay/overlay.d.ts +53 -0
- package/dist/src/channels/tui/overlay/overlay.js +58 -0
- package/dist/src/channels/tui/overlay/overlay.js.map +1 -0
- package/dist/src/channels/tui/overlay/select-confirm.d.ts +73 -0
- package/dist/src/channels/tui/overlay/select-confirm.js +157 -0
- package/dist/src/channels/tui/overlay/select-confirm.js.map +1 -0
- package/dist/src/channels/tui/panels/todo-panel.d.ts +24 -0
- package/dist/src/channels/tui/panels/todo-panel.js +55 -0
- package/dist/src/channels/tui/panels/todo-panel.js.map +1 -0
- package/dist/src/channels/tui/panels/tool-progress-panel.d.ts +37 -0
- package/dist/src/channels/tui/panels/tool-progress-panel.js +94 -0
- package/dist/src/channels/tui/panels/tool-progress-panel.js.map +1 -0
- package/dist/src/channels/tui/scroll/scroll-view.d.ts +96 -0
- package/dist/src/channels/tui/scroll/scroll-view.js +255 -0
- package/dist/src/channels/tui/scroll/scroll-view.js.map +1 -0
- package/dist/src/channels/tui/status/status-line.d.ts +46 -0
- package/dist/src/channels/tui/status/status-line.js +77 -0
- package/dist/src/channels/tui/status/status-line.js.map +1 -0
- package/dist/src/channels/tui/theme.d.ts +27 -0
- package/dist/src/channels/tui/theme.js +42 -0
- package/dist/src/channels/tui/theme.js.map +1 -0
- package/dist/src/channels/types.d.ts +84 -0
- package/dist/src/channels/types.js +12 -0
- package/dist/src/channels/types.js.map +1 -0
- package/dist/src/channels/ui-core.d.ts +80 -0
- package/dist/src/channels/ui-core.js +210 -0
- package/dist/src/channels/ui-core.js.map +1 -0
- package/dist/src/context/codes.d.ts +1 -0
- package/dist/src/context/codes.js +41 -0
- package/dist/src/context/codes.js.map +1 -0
- package/dist/src/context/events.d.ts +62 -0
- package/dist/src/context/events.js +161 -0
- package/dist/src/context/events.js.map +1 -0
- package/dist/src/context/index.d.ts +16 -0
- package/dist/src/context/index.js +14 -0
- package/dist/src/context/index.js.map +1 -0
- package/dist/src/context/logger.d.ts +67 -0
- package/dist/src/context/logger.js +137 -0
- package/dist/src/context/logger.js.map +1 -0
- package/dist/src/context/scope.d.ts +78 -0
- package/dist/src/context/scope.js +183 -0
- package/dist/src/context/scope.js.map +1 -0
- package/dist/src/context/workspace.d.ts +8 -0
- package/dist/src/context/workspace.js +105 -0
- package/dist/src/context/workspace.js.map +1 -0
- package/dist/src/contracts/agent-events.d.ts +73 -0
- package/dist/src/contracts/agent-events.js +17 -0
- package/dist/src/contracts/agent-events.js.map +1 -0
- package/dist/src/contracts/api.d.ts +249 -0
- package/dist/src/contracts/api.js +334 -0
- package/dist/src/contracts/api.js.map +1 -0
- package/dist/src/contracts/approval.d.ts +37 -0
- package/dist/src/contracts/approval.js +10 -0
- package/dist/src/contracts/approval.js.map +1 -0
- package/dist/src/contracts/env-ref.d.ts +41 -0
- package/dist/src/contracts/env-ref.js +33 -0
- package/dist/src/contracts/env-ref.js.map +1 -0
- package/dist/src/contracts/errors.d.ts +56 -0
- package/dist/src/contracts/errors.js +267 -0
- package/dist/src/contracts/errors.js.map +1 -0
- package/dist/src/contracts/events.d.ts +70 -0
- package/dist/src/contracts/events.js +330 -0
- package/dist/src/contracts/events.js.map +1 -0
- package/dist/src/contracts/index.d.ts +32 -0
- package/dist/src/contracts/index.js +27 -0
- package/dist/src/contracts/index.js.map +1 -0
- package/dist/src/contracts/llm.d.ts +278 -0
- package/dist/src/contracts/llm.js +13 -0
- package/dist/src/contracts/llm.js.map +1 -0
- package/dist/src/contracts/messages.d.ts +63 -0
- package/dist/src/contracts/messages.js +66 -0
- package/dist/src/contracts/messages.js.map +1 -0
- package/dist/src/contracts/redact.d.ts +46 -0
- package/dist/src/contracts/redact.js +224 -0
- package/dist/src/contracts/redact.js.map +1 -0
- package/dist/src/contracts/tools.d.ts +198 -0
- package/dist/src/contracts/tools.js +35 -0
- package/dist/src/contracts/tools.js.map +1 -0
- package/dist/src/contracts/types.d.ts +304 -0
- package/dist/src/contracts/types.js +51 -0
- package/dist/src/contracts/types.js.map +1 -0
- package/dist/src/contracts/ui.d.ts +122 -0
- package/dist/src/contracts/ui.js +16 -0
- package/dist/src/contracts/ui.js.map +1 -0
- package/dist/src/sdk/types.d.ts +144 -0
- package/dist/src/sdk/types.js +33 -0
- package/dist/src/sdk/types.js.map +1 -0
- package/package.json +29 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cell.js","sourceRoot":"","sources":["../../../../../../src/channels/engine/cell.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 行级差分件(07 篇 §4.1 自研引擎节件 3——批 10b 引擎核心)。
|
|
3
|
+
*
|
|
4
|
+
* 帧差分增量写出纪律:
|
|
5
|
+
* - 无变更帧零写出、未变行零写出(行粒度比较——cellEquals 逐格直比);
|
|
6
|
+
* - 行尾变空白一律 EL 清行**禁空格填充**(空格填充闪烁史反课——擦除只走
|
|
7
|
+
* EL,永不写空格游程);
|
|
8
|
+
* - EL 前置样式复位(BCE 语义——EL 以当前背景色擦除,带背景样式发 EL 会
|
|
9
|
+
* 把擦除区染上底色污染行尾,故先 SGR 复位再 EL);
|
|
10
|
+
* - 帧尾光标统一落位(定位 + 显 / 隐),显隐态跨帧去重——同态零冗余序列;
|
|
11
|
+
* **双零(内容与光标均零变更)才整帧零写出**。
|
|
12
|
+
*
|
|
13
|
+
* 纯函数:from / to 两帧只读比对产 ANSI 字节串;帧管线(请求合并 / 帧率帽)
|
|
14
|
+
* 归引擎编排件(批 10c)。前置条件:两帧同几何——resize 路径编排侧清屏全量
|
|
15
|
+
* 重绘不走本函数,几何不同即编程错、fail-loud。
|
|
16
|
+
*/
|
|
17
|
+
import { cellEquals, EMPTY_STYLE, styleEquals } from './cell.js';
|
|
18
|
+
const ESC = '\x1b';
|
|
19
|
+
/** 光标定位(1 基转义序列——row/col 为 0 基入参) */
|
|
20
|
+
const cup = (row, col) => `${ESC}[${row + 1};${col + 1}H`;
|
|
21
|
+
const EL_TO_EOL = `${ESC}[K`; // EL 0:自光标至行尾
|
|
22
|
+
const SGR_RESET = `${ESC}[0m`;
|
|
23
|
+
const HIDE_CURSOR = `${ESC}[?25l`;
|
|
24
|
+
const SHOW_CURSOR = `${ESC}[?25h`;
|
|
25
|
+
/** 样式 → SGR 序列(全量形——属性位 + 16 色前景背景;空样式返回空串由调用方复位) */
|
|
26
|
+
function buildSgr(style) {
|
|
27
|
+
const params = [];
|
|
28
|
+
if (style.bold)
|
|
29
|
+
params.push('1');
|
|
30
|
+
if (style.dim)
|
|
31
|
+
params.push('2');
|
|
32
|
+
if (style.italic)
|
|
33
|
+
params.push('3');
|
|
34
|
+
if (style.underline)
|
|
35
|
+
params.push('4');
|
|
36
|
+
if (style.inverse)
|
|
37
|
+
params.push('7');
|
|
38
|
+
if (style.fg !== undefined) {
|
|
39
|
+
// 前景 16 色:0-7 标准位 30+n / 8-15 亮位 90+(n-8)
|
|
40
|
+
params.push(String(style.fg < 8 ? 30 + style.fg : 82 + style.fg));
|
|
41
|
+
}
|
|
42
|
+
if (style.bg !== undefined) {
|
|
43
|
+
// 背景 16 色:0-7 标准位 40+n / 8-15 亮位 100+(n-8)
|
|
44
|
+
params.push(String(style.bg < 8 ? 40 + style.bg : 92 + style.bg));
|
|
45
|
+
}
|
|
46
|
+
return params.length > 0 ? `${ESC}[${params.join(';')}m` : '';
|
|
47
|
+
}
|
|
48
|
+
/** 单帧行级差分:返回本帧应写出的 ANSI 字节串(零变更返回空串) */
|
|
49
|
+
export function renderFrameDiff(from, to) {
|
|
50
|
+
if (from.columns !== to.columns || from.rows !== to.rows) {
|
|
51
|
+
// 几何不同是编程错(resize 路径编排侧清屏全量重绘)——fail-loud 不产半帧
|
|
52
|
+
throw new Error(`renderFrameDiff: 两帧几何不同(${from.columns}x${from.rows} vs ${to.columns}x${to.rows})——resize 路径不走帧差分`);
|
|
53
|
+
}
|
|
54
|
+
let out = '';
|
|
55
|
+
/** 帧首光标抑制是否已发(有写出才发——防写内容过程光标跳;幂等只发一次) */
|
|
56
|
+
let cursorSuppressed = false;
|
|
57
|
+
const suppress = () => {
|
|
58
|
+
if (!cursorSuppressed) {
|
|
59
|
+
out += HIDE_CURSOR;
|
|
60
|
+
cursorSuppressed = true;
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
for (let row = 0; row < to.rows; row++) {
|
|
64
|
+
if (rowEquals(from, to, row))
|
|
65
|
+
continue; // 未变行零写出
|
|
66
|
+
suppress();
|
|
67
|
+
out += renderRowDiff(from, to, row);
|
|
68
|
+
}
|
|
69
|
+
// 帧尾光标统一落位(显隐跨帧去重——同态零冗余序列)
|
|
70
|
+
out += renderCursorDiff(from, to, cursorSuppressed);
|
|
71
|
+
return out;
|
|
72
|
+
}
|
|
73
|
+
/** 行相等判定(逐格 cellEquals 直比——null 归一语义在 cellEquals 内) */
|
|
74
|
+
function rowEquals(from, to, row) {
|
|
75
|
+
for (let col = 0; col < to.columns; col++) {
|
|
76
|
+
if (!cellEquals(from.getCell(row, col), to.getCell(row, col)))
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
return true;
|
|
80
|
+
}
|
|
81
|
+
/** 单变行差分:定位 + 写内容 + 行尾残留 EL(禁空格填充——擦除只走 EL) */
|
|
82
|
+
function renderRowDiff(from, to, row) {
|
|
83
|
+
let out = '';
|
|
84
|
+
// 内容末列 = 最右语义非空格格(无样式空格与未写格语义等价、不算内容);
|
|
85
|
+
// 续格(width 0)属首格字素占位、算内容延伸
|
|
86
|
+
let lastContentCol = -1;
|
|
87
|
+
for (let col = to.columns - 1; col >= 0; col--) {
|
|
88
|
+
if (!cellEquals(to.getCell(row, col), null)) {
|
|
89
|
+
lastContentCol = col;
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
if (lastContentCol < 0) {
|
|
94
|
+
// 新帧整行空:定位行首 + 样式复位 + EL 清行(旧帧有残留才到得了本分支)
|
|
95
|
+
return cup(row, 0) + SGR_RESET + EL_TO_EOL;
|
|
96
|
+
}
|
|
97
|
+
// 定位行首并复位样式(跨行样式残留归零——确定态起写)
|
|
98
|
+
out += cup(row, 0) + SGR_RESET;
|
|
99
|
+
let currentStyle = EMPTY_STYLE;
|
|
100
|
+
for (let col = 0; col <= lastContentCol; col++) {
|
|
101
|
+
const cell = to.getCell(row, col);
|
|
102
|
+
if (cell !== null && cell.width === 0)
|
|
103
|
+
continue; // 续格跳过——首格字素已携双宽
|
|
104
|
+
const style = cell?.style ?? EMPTY_STYLE;
|
|
105
|
+
if (!styleEquals(currentStyle, style)) {
|
|
106
|
+
// 样式变更点:先复位再全量设(差量 SGR 优化不预造——闪烁面留给组件批实证)
|
|
107
|
+
out += SGR_RESET + buildSgr(style);
|
|
108
|
+
currentStyle = style;
|
|
109
|
+
}
|
|
110
|
+
out += cell === null ? ' ' : cell.grapheme; // 语义空格(行中内容洞)写字面空格
|
|
111
|
+
}
|
|
112
|
+
// 行尾残留:旧帧在内容末之后还有语义非空格格 → 复位 + EL(BCE:复位后擦除
|
|
113
|
+
// 才不染背景色)。内容写满至行尾列则无擦除空间、天然无残留可清。
|
|
114
|
+
for (let col = lastContentCol + 1; col < to.columns; col++) {
|
|
115
|
+
if (!cellEquals(from.getCell(row, col), null)) {
|
|
116
|
+
out += SGR_RESET + EL_TO_EOL;
|
|
117
|
+
break;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return out;
|
|
121
|
+
}
|
|
122
|
+
/** 帧尾光标落位(跨帧同态去重——值全等即零序列) */
|
|
123
|
+
function renderCursorDiff(from, to, cursorSuppressed) {
|
|
124
|
+
const fromCursor = from.cursor;
|
|
125
|
+
const toCursor = to.cursor;
|
|
126
|
+
// 同态(含双 null / 值全等)零冗余序列——「显隐态跨帧去重」执法位
|
|
127
|
+
if (fromCursor === null && toCursor === null)
|
|
128
|
+
return '';
|
|
129
|
+
if (fromCursor !== null && toCursor !== null && cursorSame(fromCursor, toCursor)) {
|
|
130
|
+
// 内容有写出且帧首已抑制光标、声明仍显 → 恢复显示在原位(抑制的反向配对)
|
|
131
|
+
if (cursorSuppressed)
|
|
132
|
+
return SHOW_CURSOR + cup(toCursor.row, toCursor.col);
|
|
133
|
+
return '';
|
|
134
|
+
}
|
|
135
|
+
if (toCursor === null)
|
|
136
|
+
return HIDE_CURSOR; // 显 → 隐
|
|
137
|
+
// 隐 → 显 / 位置迁移:显 + 定位(SHOW 幂等——重复发无害;帧首抑制已发则仍显式定位)
|
|
138
|
+
return SHOW_CURSOR + cup(toCursor.row, toCursor.col);
|
|
139
|
+
}
|
|
140
|
+
/** 光标声明值相等(row / col / visible 三元) */
|
|
141
|
+
function cursorSame(a, b) {
|
|
142
|
+
return a.row === b.row && a.col === b.col && a.visible === b.visible;
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=diff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../../../../../src/channels/engine/diff.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import type { InputEvent, KeyboardProtocol, Renderable, TerminalIO } from './types.js';
|
|
2
|
+
/** 屏幕形态两分:inline 主屏(不进 1049)/ alt-screen 副屏(1049 备屏进出) */
|
|
3
|
+
export type ScreenForm = 'inline' | 'alt-screen';
|
|
4
|
+
/** 引擎事件面(零 durable 事件的运行时侧通道) */
|
|
5
|
+
export interface EngineEventMap {
|
|
6
|
+
/** 结构化输入事件(key/text/ime/paste/mouse 五分——decoder 产出) */
|
|
7
|
+
input: InputEvent;
|
|
8
|
+
/** 几何变更(缓冲已弃旧换新、清屏锤已写——消费方按新几何重排) */
|
|
9
|
+
resize: {
|
|
10
|
+
columns: number;
|
|
11
|
+
rows: number;
|
|
12
|
+
};
|
|
13
|
+
/** kitty 探测落定(应答前缺省 legacy) */
|
|
14
|
+
keyboardProtocol: KeyboardProtocol;
|
|
15
|
+
}
|
|
16
|
+
/** 引擎构造选项 */
|
|
17
|
+
export interface EngineOptions {
|
|
18
|
+
/** 终端 IO(缺省 ProcessTerminalIO——组合根注入替代品的注入口) */
|
|
19
|
+
io?: TerminalIO;
|
|
20
|
+
/** 屏幕形态(缺省 inline 主屏——alt-screen 为副屏回看器形态) */
|
|
21
|
+
screen?: ScreenForm;
|
|
22
|
+
/** 帧率帽 fps(帧间隔下限 = 1000/fps——缺省 60:性能回归锁校准定值,见 DEFAULT_FPS_CAP 注) */
|
|
23
|
+
fpsCap?: number;
|
|
24
|
+
/** lone-ESC 判定窗(ms;缺省 30) */
|
|
25
|
+
escapeWindowMs?: number;
|
|
26
|
+
/** 时钟注入(缺省 Date.now——测试假钟注入口) */
|
|
27
|
+
now?: () => number;
|
|
28
|
+
/** 调度注入(缺省 setTimeout——测试假钟注入口) */
|
|
29
|
+
schedule?: (fn: () => void, ms: number) => unknown;
|
|
30
|
+
/** 取消调度注入(缺省 clearTimeout) */
|
|
31
|
+
cancelSchedule?: (handle: unknown) => void;
|
|
32
|
+
/**
|
|
33
|
+
* X10 鼠标形首达降级回调(透传 decoder——per-entry 闩只发一次;开了 1006
|
|
34
|
+
* 的会话里 X10 形到达 ⟺ 终端无 SGR 能力,装配层据此 DECRST 关鼠标签听回
|
|
35
|
+
* 终端原生选区——降级编舞归 AltScreenHost 组合柄)
|
|
36
|
+
*/
|
|
37
|
+
onMouseLegacy?: () => void;
|
|
38
|
+
}
|
|
39
|
+
/** TUI 引擎(构造后 start 进屏;dispose 终退) */
|
|
40
|
+
export declare class Engine {
|
|
41
|
+
private readonly io;
|
|
42
|
+
private readonly screen;
|
|
43
|
+
/** 帧率帽(帧间隔下限 = 1000/fpsCap ms) */
|
|
44
|
+
private readonly minFrameMs;
|
|
45
|
+
/** 时钟 / 调度注入(测试假钟注入口) */
|
|
46
|
+
private readonly now;
|
|
47
|
+
private readonly scheduleFn;
|
|
48
|
+
private readonly cancelFn;
|
|
49
|
+
/** 渲染树根(shell 经 setRoot 装载) */
|
|
50
|
+
private root;
|
|
51
|
+
/** 双缓冲:front = 屏上真相(差分基线)/ back = 本帧渲染目标 */
|
|
52
|
+
private front;
|
|
53
|
+
private back;
|
|
54
|
+
/** 全量帧旗标(首帧 / 复起重进 / resize——front 基线失真时置位) */
|
|
55
|
+
private forceFull;
|
|
56
|
+
/** 帧定时器句柄(null = 无在飞帧——请求合并的合并位) */
|
|
57
|
+
private frameHandle;
|
|
58
|
+
/** 上帧时刻(FPS 帽锚——调度时刻滚;-Infinity = 首帧立即出) */
|
|
59
|
+
private lastFrameAt;
|
|
60
|
+
/** 生命周期态:idle 未启 / running 持屏 / suspended 挂起 / disposed 终退 */
|
|
61
|
+
private state;
|
|
62
|
+
/** start 时的 raw 先验态(suspend/dispose 复原依据) */
|
|
63
|
+
private priorRaw;
|
|
64
|
+
/** 输入解码器(kitty/legacy 双轨 + IME 组字态) */
|
|
65
|
+
private readonly decoder;
|
|
66
|
+
/** lone-ESC 判定窗(构造时留档——定时器装排用) */
|
|
67
|
+
private readonly decoderEscapeWindowMs;
|
|
68
|
+
/** lone-ESC 判定窗定时器句柄 */
|
|
69
|
+
private escapeHandle;
|
|
70
|
+
/** 输入监听退订函数(null = 未装) */
|
|
71
|
+
private unsubInput;
|
|
72
|
+
/** resize 监听退订函数(挂起期保留监听、dispose 才卸) */
|
|
73
|
+
private unsubResize;
|
|
74
|
+
/** 引擎事件面 */
|
|
75
|
+
private readonly events;
|
|
76
|
+
/** kitty 探测落定值(应答到达前缺省 legacy) */
|
|
77
|
+
private protocol;
|
|
78
|
+
/**
|
|
79
|
+
* 硬退复原钩子解除器(null = 未武装):持屏窗内 fatal exit(1)/二次
|
|
80
|
+
* SIGINT exit(130) 不经 dispose——用户被留在死模式态(备屏 / 光标藏 /
|
|
81
|
+
* 粘贴开 / kitty 推栈)。生命周期 = 持屏窗〔start/resume → suspend/dispose〕。
|
|
82
|
+
*/
|
|
83
|
+
private disarmExitRestore;
|
|
84
|
+
constructor(opts?: EngineOptions);
|
|
85
|
+
/** 当前网格宽(列——io 直查真值不缓存) */
|
|
86
|
+
get columns(): number;
|
|
87
|
+
/** 当前网格高(行) */
|
|
88
|
+
get rows(): number;
|
|
89
|
+
/** 挂起中旗标(换防面查询) */
|
|
90
|
+
get suspended(): boolean;
|
|
91
|
+
/** 生命周期态(idle/running/suspended/disposed) */
|
|
92
|
+
get lifecycle(): 'idle' | 'running' | 'suspended' | 'disposed';
|
|
93
|
+
/** kitty 探测落定值(应答前缺省 legacy) */
|
|
94
|
+
get keyboardProtocol(): KeyboardProtocol;
|
|
95
|
+
/** 事件订阅(返回卸载函数) */
|
|
96
|
+
on<K extends keyof EngineEventMap>(event: K, cb: (payload: EngineEventMap[K]) => void): () => void;
|
|
97
|
+
/**
|
|
98
|
+
* 进屏启动:模式串写出 + raw 设定 + 输入 / resize 监听装上 + 全量首帧。
|
|
99
|
+
* 幂等保护:仅 idle 可启(挂起复位走 resume)。
|
|
100
|
+
*/
|
|
101
|
+
start(root: Renderable): void;
|
|
102
|
+
/** 换渲染树根(同帧请求合并——下帧生效) */
|
|
103
|
+
setRoot(root: Renderable): void;
|
|
104
|
+
/**
|
|
105
|
+
* 渲染请求(单入口语义):挂起 / 终退态静默短路(闸门);帧定时器在飞则
|
|
106
|
+
* 不另排(请求合并——多次请求一帧收)。
|
|
107
|
+
*/
|
|
108
|
+
requestRender(): void;
|
|
109
|
+
/** 立即帧(测试与强制刷新面——绕过调度直出) */
|
|
110
|
+
renderNow(): void;
|
|
111
|
+
/**
|
|
112
|
+
* 挂起(换防交出方——三件套):出屏模式串 → 卸输入监听 → 丢在途转义 →
|
|
113
|
+
* 停流 → raw 复原先验态。挂起后 requestRender 静默短路(闸门);resize
|
|
114
|
+
* 监听保留(无副作用——复起几何核对兜住挂起期变更)。
|
|
115
|
+
*/
|
|
116
|
+
suspend(): void;
|
|
117
|
+
/**
|
|
118
|
+
* 复位(换防接收方——六步):进屏模式串清屏进 → raw 重设 → 监听重装 →
|
|
119
|
+
* **显式放流**(已被显式 pause 的流再挂监听不会自动回 flowing——缺放流则
|
|
120
|
+
* 复位后引擎永久失聪)→ 几何核对(挂起期 resize 事件被闸门整批丢弃——
|
|
121
|
+
* 复起重查当前真值,失配即 handleResize 同款弃旧换新)→ 全量首帧重绘
|
|
122
|
+
* (front 基线在挂起期已失真——对方栈写过屏)。
|
|
123
|
+
*/
|
|
124
|
+
resume(): void;
|
|
125
|
+
/**
|
|
126
|
+
* 排空 stdin 缓冲(终退回 shell 前——交出面公开方法位):临时吞处理器 +
|
|
127
|
+
* 放流 → 闲窗(idleMs 无新数据)或总帽(maxMs)到点收手。返回后输入处理
|
|
128
|
+
* 器保持卸载、stdin 暂停——干净交回 shell。dispose 不自动排空——终退编舞
|
|
129
|
+
* (排空 → 出屏 → dispose 序)由装配侧显式调用。
|
|
130
|
+
*/
|
|
131
|
+
drainInput(maxMs?: number, idleMs?: number): Promise<void>;
|
|
132
|
+
/** 终退:出屏 + 一切复原(dispose 后引擎不可复用) */
|
|
133
|
+
dispose(): void;
|
|
134
|
+
/**
|
|
135
|
+
* 武装硬退复原钩子(仅真 ProcessTerminalIO——注入 io 零污染):进屏模式串
|
|
136
|
+
* 是写字节开启的设备态(备屏 / 光标 / 粘贴 / kitty 推栈),fatal exit 不经
|
|
137
|
+
* dispose——钩子在 process 'exit' 兜底写 LEAVE_MODES(与出屏严格对称反序
|
|
138
|
+
* ——单源常量)+ raw 交还。
|
|
139
|
+
*/
|
|
140
|
+
private armExitRestore;
|
|
141
|
+
/** 输入处理器(decoder 喂入 + 事件排空上抛 + lone-ESC 判定窗定时器装 / 卸) */
|
|
142
|
+
private readonly handleInput;
|
|
143
|
+
/** 排空 decoder 事件队列并上抛 emitter */
|
|
144
|
+
private flushDecoderEvents;
|
|
145
|
+
/** resize 处理器:缓冲弃旧换新 + 清屏锤 + 全量重绘 + 事件上抛 */
|
|
146
|
+
private readonly handleResize;
|
|
147
|
+
/** 取消在飞帧定时器 */
|
|
148
|
+
private cancelFrame;
|
|
149
|
+
/** 取消 lone-ESC 判定窗定时器 */
|
|
150
|
+
private cancelEscapeTimer;
|
|
151
|
+
}
|