@celljs/ta-web 4.7.0 → 4.8.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.en.md +1 -1
- package/README.md +1 -1
- package/esm/browser/chat/chat-protocol.d.ts +4 -0
- package/esm/browser/chat/chat-view.js +4 -1
- package/esm/browser/chat/chat-view.js.map +1 -1
- package/esm/browser/chat/chat.d.ts +8 -1
- package/esm/browser/chat/chat.js +34 -15
- package/esm/browser/chat/chat.js.map +1 -1
- package/esm/browser/chat/draft-model.d.ts +15 -0
- package/esm/browser/chat/draft-model.js +53 -0
- package/esm/browser/chat/draft-model.js.map +1 -0
- package/esm/browser/components/app-view.js +10 -3
- package/esm/browser/components/app-view.js.map +1 -1
- package/esm/browser/components/composer-box.d.ts +6 -0
- package/esm/browser/components/composer-box.js +50 -13
- package/esm/browser/components/composer-box.js.map +1 -1
- package/esm/browser/components/composer.js +1 -1
- package/esm/browser/components/composer.js.map +1 -1
- package/esm/browser/components/dialog-view.d.ts +4 -1
- package/esm/browser/components/dialog-view.js +11 -7
- package/esm/browser/components/dialog-view.js.map +1 -1
- package/esm/browser/components/notice-center.js +3 -1
- package/esm/browser/components/notice-center.js.map +1 -1
- package/esm/browser/components/session-view.js +48 -4
- package/esm/browser/components/session-view.js.map +1 -1
- package/esm/browser/components/terminal-art.d.ts +7 -0
- package/esm/browser/components/terminal-art.js +12 -0
- package/esm/browser/components/terminal-art.js.map +1 -0
- package/esm/browser/components/tool-view.js +1 -1
- package/esm/browser/components/tool-view.js.map +1 -1
- package/esm/browser/components/web-composer.js +1 -1
- package/esm/browser/components/web-composer.js.map +1 -1
- package/esm/browser/extension/icons.js +4 -1
- package/esm/browser/extension/icons.js.map +1 -1
- package/esm/browser/extension/web-extension-api.d.ts +117 -1
- package/esm/browser/extension/web-extensions.d.ts +3 -0
- package/esm/browser/extension/web-extensions.js +22 -0
- package/esm/browser/extension/web-extensions.js.map +1 -1
- package/esm/browser/i18n/locales.d.ts +13 -1
- package/esm/browser/i18n/messages.d.ts +12 -0
- package/esm/browser/i18n/messages.js +24 -0
- package/esm/browser/i18n/messages.js.map +1 -1
- package/esm/browser/notices/notices-protocol.d.ts +3 -0
- package/esm/browser/notices/notices.d.ts +3 -0
- package/esm/browser/notices/notices.js +15 -0
- package/esm/browser/notices/notices.js.map +1 -1
- package/esm/browser/style/conversation.d.ts +1 -1
- package/esm/browser/style/conversation.js +16 -1
- package/esm/browser/style/conversation.js.map +1 -1
- package/esm/browser/style/layout.d.ts +1 -1
- package/esm/browser/style/layout.js +5 -0
- package/esm/browser/style/layout.js.map +1 -1
- package/esm/browser/style/shell.d.ts +1 -1
- package/esm/browser/style/shell.js +1 -0
- package/esm/browser/style/shell.js.map +1 -1
- package/esm/browser/terminal/canvas-font.d.ts +10 -0
- package/esm/browser/terminal/canvas-font.js +34 -0
- package/esm/browser/terminal/canvas-font.js.map +1 -0
- package/esm/browser/terminal/terminal-links.d.ts +18 -0
- package/esm/browser/terminal/terminal-links.js +72 -0
- package/esm/browser/terminal/terminal-links.js.map +1 -0
- package/esm/browser/terminal/terminal-theme.d.ts +8 -0
- package/esm/browser/terminal/terminal-theme.js +65 -0
- package/esm/browser/terminal/terminal-theme.js.map +1 -0
- package/esm/browser/terminal/web-terminal.d.ts +74 -0
- package/esm/browser/terminal/web-terminal.js +300 -0
- package/esm/browser/terminal/web-terminal.js.map +1 -0
- package/esm/browser/terminal/xterm.d.ts +5 -0
- package/esm/browser/terminal/xterm.js +9 -0
- package/esm/browser/terminal/xterm.js.map +1 -0
- package/esm/browser/util/desktop.d.ts +43 -0
- package/esm/browser/util/desktop.js +55 -0
- package/esm/browser/util/desktop.js.map +1 -0
- package/esm/browser/util/file-drag.d.ts +26 -0
- package/esm/browser/util/file-drag.js +73 -0
- package/esm/browser/util/file-drag.js.map +1 -0
- package/esm/browser/util/terminal-text.d.ts +33 -0
- package/esm/browser/util/terminal-text.js +209 -0
- package/esm/browser/util/terminal-text.js.map +1 -0
- package/esm/browser/util/tool.js +16 -0
- package/esm/browser/util/tool.js.map +1 -1
- package/lib/browser/chat/chat-protocol.d.ts +4 -0
- package/lib/browser/chat/chat-protocol.d.ts.map +1 -1
- package/lib/browser/chat/chat-view.d.ts.map +1 -1
- package/lib/browser/chat/chat-view.js +4 -1
- package/lib/browser/chat/chat-view.js.map +1 -1
- package/lib/browser/chat/chat.d.ts +8 -1
- package/lib/browser/chat/chat.d.ts.map +1 -1
- package/lib/browser/chat/chat.js +34 -15
- package/lib/browser/chat/chat.js.map +1 -1
- package/lib/browser/chat/chat.spec.js +30 -0
- package/lib/browser/chat/chat.spec.js.map +1 -1
- package/lib/browser/chat/draft-model.d.ts +16 -0
- package/lib/browser/chat/draft-model.d.ts.map +1 -0
- package/lib/browser/chat/draft-model.js +90 -0
- package/lib/browser/chat/draft-model.js.map +1 -0
- package/lib/browser/chat/draft-model.spec.d.ts +2 -0
- package/lib/browser/chat/draft-model.spec.d.ts.map +1 -0
- package/lib/browser/chat/draft-model.spec.js +31 -0
- package/lib/browser/chat/draft-model.spec.js.map +1 -0
- package/lib/browser/components/app-view.d.ts.map +1 -1
- package/lib/browser/components/app-view.js +10 -3
- package/lib/browser/components/app-view.js.map +1 -1
- package/lib/browser/components/composer-box.d.ts +6 -0
- package/lib/browser/components/composer-box.d.ts.map +1 -1
- package/lib/browser/components/composer-box.js +51 -14
- package/lib/browser/components/composer-box.js.map +1 -1
- package/lib/browser/components/composer.d.ts.map +1 -1
- package/lib/browser/components/composer.js +1 -1
- package/lib/browser/components/composer.js.map +1 -1
- package/lib/browser/components/dialog-view.d.ts +4 -1
- package/lib/browser/components/dialog-view.d.ts.map +1 -1
- package/lib/browser/components/dialog-view.js +11 -7
- package/lib/browser/components/dialog-view.js.map +1 -1
- package/lib/browser/components/notice-center.d.ts.map +1 -1
- package/lib/browser/components/notice-center.js +3 -1
- package/lib/browser/components/notice-center.js.map +1 -1
- package/lib/browser/components/plus-menu.spec.d.ts +2 -0
- package/lib/browser/components/plus-menu.spec.d.ts.map +1 -0
- package/lib/browser/components/plus-menu.spec.js +18 -0
- package/lib/browser/components/plus-menu.spec.js.map +1 -0
- package/lib/browser/components/session-view.d.ts.map +1 -1
- package/lib/browser/components/session-view.js +48 -4
- package/lib/browser/components/session-view.js.map +1 -1
- package/lib/browser/components/terminal-art.d.ts +8 -0
- package/lib/browser/components/terminal-art.d.ts.map +1 -0
- package/lib/browser/components/terminal-art.js +48 -0
- package/lib/browser/components/terminal-art.js.map +1 -0
- package/lib/browser/components/tool-view.js +1 -1
- package/lib/browser/components/tool-view.js.map +1 -1
- package/lib/browser/components/web-composer.d.ts.map +1 -1
- package/lib/browser/components/web-composer.js +1 -1
- package/lib/browser/components/web-composer.js.map +1 -1
- package/lib/browser/extension/icons.d.ts.map +1 -1
- package/lib/browser/extension/icons.js +3 -0
- package/lib/browser/extension/icons.js.map +1 -1
- package/lib/browser/extension/web-extension-api.d.ts +117 -1
- package/lib/browser/extension/web-extension-api.d.ts.map +1 -1
- package/lib/browser/extension/web-extensions.d.ts +3 -0
- package/lib/browser/extension/web-extensions.d.ts.map +1 -1
- package/lib/browser/extension/web-extensions.js +22 -0
- package/lib/browser/extension/web-extensions.js.map +1 -1
- package/lib/browser/i18n/locales.d.ts +13 -1
- package/lib/browser/i18n/locales.d.ts.map +1 -1
- package/lib/browser/i18n/messages.d.ts +12 -0
- package/lib/browser/i18n/messages.d.ts.map +1 -1
- package/lib/browser/i18n/messages.js +24 -0
- package/lib/browser/i18n/messages.js.map +1 -1
- package/lib/browser/notices/notices-protocol.d.ts +3 -0
- package/lib/browser/notices/notices-protocol.d.ts.map +1 -1
- package/lib/browser/notices/notices.d.ts +3 -0
- package/lib/browser/notices/notices.d.ts.map +1 -1
- package/lib/browser/notices/notices.js +15 -0
- package/lib/browser/notices/notices.js.map +1 -1
- package/lib/browser/notices/notices.spec.js +7 -2
- package/lib/browser/notices/notices.spec.js.map +1 -1
- package/lib/browser/style/conversation.d.ts +1 -1
- package/lib/browser/style/conversation.d.ts.map +1 -1
- package/lib/browser/style/conversation.js +16 -1
- package/lib/browser/style/conversation.js.map +1 -1
- package/lib/browser/style/layout.d.ts +1 -1
- package/lib/browser/style/layout.d.ts.map +1 -1
- package/lib/browser/style/layout.js +5 -0
- package/lib/browser/style/layout.js.map +1 -1
- package/lib/browser/style/shell.d.ts +1 -1
- package/lib/browser/style/shell.d.ts.map +1 -1
- package/lib/browser/style/shell.js +1 -0
- package/lib/browser/style/shell.js.map +1 -1
- package/lib/browser/terminal/canvas-font.d.ts +11 -0
- package/lib/browser/terminal/canvas-font.d.ts.map +1 -0
- package/lib/browser/terminal/canvas-font.js +37 -0
- package/lib/browser/terminal/canvas-font.js.map +1 -0
- package/lib/browser/terminal/canvas-font.spec.d.ts +2 -0
- package/lib/browser/terminal/canvas-font.spec.d.ts.map +1 -0
- package/lib/browser/terminal/canvas-font.spec.js +32 -0
- package/lib/browser/terminal/canvas-font.spec.js.map +1 -0
- package/lib/browser/terminal/terminal-links.d.ts +19 -0
- package/lib/browser/terminal/terminal-links.d.ts.map +1 -0
- package/lib/browser/terminal/terminal-links.js +75 -0
- package/lib/browser/terminal/terminal-links.js.map +1 -0
- package/lib/browser/terminal/terminal-links.spec.d.ts +2 -0
- package/lib/browser/terminal/terminal-links.spec.d.ts.map +1 -0
- package/lib/browser/terminal/terminal-links.spec.js +30 -0
- package/lib/browser/terminal/terminal-links.spec.js.map +1 -0
- package/lib/browser/terminal/terminal-theme.d.ts +9 -0
- package/lib/browser/terminal/terminal-theme.d.ts.map +1 -0
- package/lib/browser/terminal/terminal-theme.js +68 -0
- package/lib/browser/terminal/terminal-theme.js.map +1 -0
- package/lib/browser/terminal/terminal-theme.spec.d.ts +2 -0
- package/lib/browser/terminal/terminal-theme.spec.d.ts.map +1 -0
- package/lib/browser/terminal/terminal-theme.spec.js +24 -0
- package/lib/browser/terminal/terminal-theme.spec.js.map +1 -0
- package/lib/browser/terminal/web-terminal.d.ts +75 -0
- package/lib/browser/terminal/web-terminal.d.ts.map +1 -0
- package/lib/browser/terminal/web-terminal.js +304 -0
- package/lib/browser/terminal/web-terminal.js.map +1 -0
- package/lib/browser/terminal/xterm.d.ts +6 -0
- package/lib/browser/terminal/xterm.d.ts.map +1 -0
- package/lib/browser/terminal/xterm.js +16 -0
- package/lib/browser/terminal/xterm.js.map +1 -0
- package/lib/browser/util/desktop.d.ts +44 -0
- package/lib/browser/util/desktop.d.ts.map +1 -0
- package/lib/browser/util/desktop.js +58 -0
- package/lib/browser/util/desktop.js.map +1 -0
- package/lib/browser/util/desktop.spec.d.ts +2 -0
- package/lib/browser/util/desktop.spec.d.ts.map +1 -0
- package/lib/browser/util/desktop.spec.js +67 -0
- package/lib/browser/util/desktop.spec.js.map +1 -0
- package/lib/browser/util/file-drag.d.ts +27 -0
- package/lib/browser/util/file-drag.d.ts.map +1 -0
- package/lib/browser/util/file-drag.js +76 -0
- package/lib/browser/util/file-drag.js.map +1 -0
- package/lib/browser/util/file-drag.spec.d.ts +2 -0
- package/lib/browser/util/file-drag.spec.d.ts.map +1 -0
- package/lib/browser/util/file-drag.spec.js +46 -0
- package/lib/browser/util/file-drag.spec.js.map +1 -0
- package/lib/browser/util/terminal-text.d.ts +34 -0
- package/lib/browser/util/terminal-text.d.ts.map +1 -0
- package/lib/browser/util/terminal-text.js +212 -0
- package/lib/browser/util/terminal-text.js.map +1 -0
- package/lib/browser/util/terminal-text.spec.d.ts +2 -0
- package/lib/browser/util/terminal-text.spec.d.ts.map +1 -0
- package/lib/browser/util/terminal-text.spec.js +54 -0
- package/lib/browser/util/terminal-text.spec.js.map +1 -0
- package/lib/browser/util/tool.d.ts.map +1 -1
- package/lib/browser/util/tool.js +16 -0
- package/lib/browser/util/tool.js.map +1 -1
- package/lib/browser/util/tool.spec.js +12 -0
- package/lib/browser/util/tool.spec.js.map +1 -1
- package/package.json +11 -7
- package/src/browser/chat/chat-protocol.ts +4 -0
- package/src/browser/chat/chat-view.tsx +4 -0
- package/src/browser/chat/chat.spec.ts +31 -0
- package/src/browser/chat/chat.ts +36 -14
- package/src/browser/chat/draft-model.spec.tsx +31 -0
- package/src/browser/chat/draft-model.tsx +63 -0
- package/src/browser/components/app-view.tsx +10 -3
- package/src/browser/components/composer-box.tsx +52 -6
- package/src/browser/components/composer.tsx +1 -0
- package/src/browser/components/dialog-view.tsx +16 -7
- package/src/browser/components/notice-center.tsx +7 -1
- package/src/browser/components/plus-menu.spec.ts +16 -0
- package/src/browser/components/session-view.tsx +65 -4
- package/src/browser/components/terminal-art.tsx +21 -0
- package/src/browser/components/tool-view.tsx +1 -1
- package/src/browser/components/web-composer.tsx +1 -0
- package/src/browser/extension/icons.ts +6 -0
- package/src/browser/extension/web-extension-api.ts +131 -1
- package/src/browser/extension/web-extensions.ts +36 -1
- package/src/browser/i18n/messages.ts +24 -0
- package/src/browser/notices/notices-protocol.ts +3 -0
- package/src/browser/notices/notices.spec.ts +8 -2
- package/src/browser/notices/notices.ts +17 -1
- package/src/browser/style/conversation.ts +16 -1
- package/src/browser/style/layout.ts +5 -0
- package/src/browser/style/shell.ts +1 -0
- package/src/browser/terminal/canvas-font.spec.ts +29 -0
- package/src/browser/terminal/canvas-font.ts +32 -0
- package/src/browser/terminal/terminal-links.spec.ts +32 -0
- package/src/browser/terminal/terminal-links.ts +75 -0
- package/src/browser/terminal/terminal-theme.spec.ts +23 -0
- package/src/browser/terminal/terminal-theme.ts +66 -0
- package/src/browser/terminal/web-terminal.ts +330 -0
- package/src/browser/terminal/xterm.ts +10 -0
- package/src/browser/util/desktop.spec.ts +68 -0
- package/src/browser/util/desktop.ts +96 -0
- package/src/browser/util/file-drag.spec.ts +48 -0
- package/src/browser/util/file-drag.ts +78 -0
- package/src/browser/util/terminal-text.spec.ts +60 -0
- package/src/browser/util/terminal-text.ts +223 -0
- package/src/browser/util/tool.spec.ts +12 -0
- package/src/browser/util/tool.ts +17 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/** The tone of a status, from the sign a terminal extension puts before it. */
|
|
2
|
+
export type StatusTone = 'running' | 'done' | 'error' | 'waiting';
|
|
3
|
+
export interface StatusSegment {
|
|
4
|
+
text: string;
|
|
5
|
+
tone?: StatusTone;
|
|
6
|
+
}
|
|
7
|
+
/** A status of an extension (`setStatus`), in its parts: `[WeChat] ✅ connected | abc` is a label and two segments. */
|
|
8
|
+
export interface StatusParts {
|
|
9
|
+
label?: string;
|
|
10
|
+
segments: StatusSegment[];
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Text that pi extensions write for a terminal (pi's TUI), shown in a page: without the escapes of the
|
|
14
|
+
* terminal, with the pictures they draw with characters (a QR code to sign in) drawn, and the signs of their
|
|
15
|
+
* status line as tones.
|
|
16
|
+
*/
|
|
17
|
+
export declare namespace TerminalText {
|
|
18
|
+
/** The text without the escapes of a terminal (colours, styles, links, titles): a page draws its own. */
|
|
19
|
+
function plain(text: string): string;
|
|
20
|
+
/**
|
|
21
|
+
* The text without the picture in it, and without escapes; and the picture as rows of cells, dark ones true.
|
|
22
|
+
* A picture is the longest run of lines of half blocks, or of spaces on black and white: how a terminal
|
|
23
|
+
* extension draws a QR code. Its light is what a dark terminal shows light.
|
|
24
|
+
*/
|
|
25
|
+
function art(text: string): {
|
|
26
|
+
text: string;
|
|
27
|
+
art?: boolean[][];
|
|
28
|
+
};
|
|
29
|
+
/** The picture as an SVG path of its dark cells, one unit each. */
|
|
30
|
+
function path(art: boolean[][]): string;
|
|
31
|
+
/** A status line in its parts: a leading `[label]`, segments split by ` | `, and a sign at the start of one as its tone. */
|
|
32
|
+
function status(text: string): StatusParts;
|
|
33
|
+
}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Text that pi extensions write for a terminal (pi's TUI), shown in a page: without the escapes of the
|
|
3
|
+
* terminal, with the pictures they draw with characters (a QR code to sign in) drawn, and the signs of their
|
|
4
|
+
* status line as tones.
|
|
5
|
+
*/
|
|
6
|
+
export var TerminalText;
|
|
7
|
+
(function (TerminalText) {
|
|
8
|
+
/** Half blocks, as qrcode-terminal's small mode: the character is the light of two cells, one above the other. */
|
|
9
|
+
const CELLS = { '█': [true, true], '▀': [true, false], '▄': [false, true], ' ': [false, false] };
|
|
10
|
+
const HALF_BLOCKS = /^[█▀▄ ]+$/;
|
|
11
|
+
// biome-ignore lint/suspicious/noControlCharactersInRegex: the escapes of a terminal are what is matched
|
|
12
|
+
const ESCAPES = /\x1b\[[0-?]*[ -/]*[@-~]|\x1b\][^\x07\x1b]*(?:\x07|\x1b\\)|\x1b[@-Z\\-_]/g;
|
|
13
|
+
// biome-ignore lint/suspicious/noControlCharactersInRegex: the colours of a terminal
|
|
14
|
+
const SGR = /\x1b\[([0-9;]*)m/g;
|
|
15
|
+
/** Fewer lines than this are not a picture (a bar, a rule). */
|
|
16
|
+
const MIN_ART_LINES = 8;
|
|
17
|
+
const TONES = [
|
|
18
|
+
[/^(?:⏳|⌛|🔄)\uFE0F?\s*/u, 'running'],
|
|
19
|
+
[/^(?:✅|✔|☑)\uFE0F?\s*/u, 'done'],
|
|
20
|
+
[/^(?:❌|✖|⛔|🚫)\uFE0F?\s*/u, 'error'],
|
|
21
|
+
[/^(?:⚠)\uFE0F?\s*/u, 'waiting'],
|
|
22
|
+
];
|
|
23
|
+
/** The text without the escapes of a terminal (colours, styles, links, titles): a page draws its own. */
|
|
24
|
+
function plain(text) {
|
|
25
|
+
return text.replace(ESCAPES, '');
|
|
26
|
+
}
|
|
27
|
+
TerminalText.plain = plain;
|
|
28
|
+
/** A line of half blocks as its two rows of cells, dark ones true. */
|
|
29
|
+
function halfBlocks(line) {
|
|
30
|
+
const text = plain(line);
|
|
31
|
+
if (!HALF_BLOCKS.test(text) || !/[█▀▄]/.test(text)) {
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
34
|
+
const top = [];
|
|
35
|
+
const bottom = [];
|
|
36
|
+
for (const char of text) {
|
|
37
|
+
const [upper, lower] = CELLS[char];
|
|
38
|
+
top.push(!upper);
|
|
39
|
+
bottom.push(!lower);
|
|
40
|
+
}
|
|
41
|
+
return [top, bottom];
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* A line of spaces on black and white backgrounds, as qrcode-terminal's large mode, as its row of cells:
|
|
45
|
+
* dark ones true, a cell for each character.
|
|
46
|
+
*/
|
|
47
|
+
function backgrounds(line) {
|
|
48
|
+
if (!line.includes('\x1b[') || plain(line).trim()) {
|
|
49
|
+
return undefined;
|
|
50
|
+
}
|
|
51
|
+
const row = [];
|
|
52
|
+
let dark;
|
|
53
|
+
let at = 0;
|
|
54
|
+
const take = (until) => {
|
|
55
|
+
for (let i = at; i < until; i++) {
|
|
56
|
+
if (dark === undefined) {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
row.push(dark);
|
|
60
|
+
}
|
|
61
|
+
return true;
|
|
62
|
+
};
|
|
63
|
+
for (const match of line.matchAll(SGR)) {
|
|
64
|
+
if (!take(match.index)) {
|
|
65
|
+
return undefined;
|
|
66
|
+
}
|
|
67
|
+
at = match.index + match[0].length;
|
|
68
|
+
for (const code of (match[1] || '0').split(';').map(Number)) {
|
|
69
|
+
if (code === 40 || code === 100) {
|
|
70
|
+
dark = true;
|
|
71
|
+
}
|
|
72
|
+
else if (code === 47 || code === 107) {
|
|
73
|
+
dark = false;
|
|
74
|
+
}
|
|
75
|
+
else if (code === 0 || code === 49) {
|
|
76
|
+
dark = undefined;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
if (!take(line.length) || !row.length) {
|
|
81
|
+
return undefined;
|
|
82
|
+
}
|
|
83
|
+
return [row];
|
|
84
|
+
}
|
|
85
|
+
/** The longest run of lines that `cells` reads, as rows of cells, and where it is. */
|
|
86
|
+
function longest(lines, cells) {
|
|
87
|
+
let best;
|
|
88
|
+
let run;
|
|
89
|
+
lines.forEach((line, index) => {
|
|
90
|
+
const read = cells(line);
|
|
91
|
+
if (!read) {
|
|
92
|
+
run = undefined;
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
run = run ? { ...run, end: index, rows: [...run.rows, ...read] } : { start: index, end: index, rows: read };
|
|
96
|
+
if (!best || run.end - run.start > best.end - best.start) {
|
|
97
|
+
best = run;
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
return best && best.end - best.start + 1 >= MIN_ART_LINES ? best : undefined;
|
|
101
|
+
}
|
|
102
|
+
/** Two characters make a square cell on a terminal: rows whose characters all go in pairs are halved. */
|
|
103
|
+
function squared(rows) {
|
|
104
|
+
const paired = rows.every(row => row.length % 2 === 0 && row.every((cell, x) => x % 2 === 0 || cell === row[x - 1]));
|
|
105
|
+
return paired ? rows.map(row => row.filter((_, x) => x % 2 === 0)) : rows;
|
|
106
|
+
}
|
|
107
|
+
/** Rows of one width: a shorter one is light at its end, as the background of a terminal. */
|
|
108
|
+
function even(rows) {
|
|
109
|
+
const width = Math.max(...rows.map(row => row.length));
|
|
110
|
+
return rows.map(row => [...row, ...new Array(width - row.length).fill(false)]);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Without the rows and columns at its edges that are dark all along: the background of the terminal around
|
|
114
|
+
* the light margin a QR code draws, not part of the picture.
|
|
115
|
+
*/
|
|
116
|
+
function trimmed(rows) {
|
|
117
|
+
var _a;
|
|
118
|
+
var _b;
|
|
119
|
+
let top = 0;
|
|
120
|
+
let bottom = rows.length;
|
|
121
|
+
while (top < bottom && rows[top].every(Boolean)) {
|
|
122
|
+
top++;
|
|
123
|
+
}
|
|
124
|
+
while (bottom > top && rows[bottom - 1].every(Boolean)) {
|
|
125
|
+
bottom--;
|
|
126
|
+
}
|
|
127
|
+
const kept = rows.slice(top, bottom);
|
|
128
|
+
const width = (_b = (_a = kept[0]) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0;
|
|
129
|
+
const dark = (x) => kept.every(row => row[x]);
|
|
130
|
+
let left = 0;
|
|
131
|
+
let right = width;
|
|
132
|
+
while (left < right && dark(left)) {
|
|
133
|
+
left++;
|
|
134
|
+
}
|
|
135
|
+
while (right > left && dark(right - 1)) {
|
|
136
|
+
right--;
|
|
137
|
+
}
|
|
138
|
+
return kept.map(row => row.slice(left, right));
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* The text without the picture in it, and without escapes; and the picture as rows of cells, dark ones true.
|
|
142
|
+
* A picture is the longest run of lines of half blocks, or of spaces on black and white: how a terminal
|
|
143
|
+
* extension draws a QR code. Its light is what a dark terminal shows light.
|
|
144
|
+
*/
|
|
145
|
+
function art(text) {
|
|
146
|
+
const lines = text.split('\n');
|
|
147
|
+
const blocks = longest(lines, halfBlocks);
|
|
148
|
+
const colours = longest(lines, backgrounds);
|
|
149
|
+
const found = blocks && (!colours || blocks.end - blocks.start >= colours.end - colours.start) ? blocks : colours;
|
|
150
|
+
if (!found) {
|
|
151
|
+
return { text: plain(text) };
|
|
152
|
+
}
|
|
153
|
+
const rest = plain([...lines.slice(0, found.start), ...lines.slice(found.end + 1)].join('\n')).trim();
|
|
154
|
+
const art = trimmed(even(found === colours ? squared(found.rows) : found.rows));
|
|
155
|
+
return art.length ? { text: rest, art } : { text: plain(text) };
|
|
156
|
+
}
|
|
157
|
+
TerminalText.art = art;
|
|
158
|
+
/** The picture as an SVG path of its dark cells, one unit each. */
|
|
159
|
+
function path(art) {
|
|
160
|
+
let d = '';
|
|
161
|
+
art.forEach((row, y) => {
|
|
162
|
+
let x = 0;
|
|
163
|
+
while (x < row.length) {
|
|
164
|
+
if (!row[x]) {
|
|
165
|
+
x++;
|
|
166
|
+
continue;
|
|
167
|
+
}
|
|
168
|
+
const from = x;
|
|
169
|
+
while (x < row.length && row[x]) {
|
|
170
|
+
x++;
|
|
171
|
+
}
|
|
172
|
+
d += `M${from} ${y}h${x - from}v1h-${x - from}z`;
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
return d;
|
|
176
|
+
}
|
|
177
|
+
TerminalText.path = path;
|
|
178
|
+
/** A status line in its parts: a leading `[label]`, segments split by ` | `, and a sign at the start of one as its tone. */
|
|
179
|
+
function status(text) {
|
|
180
|
+
let rest = plain(text).trim();
|
|
181
|
+
const labelled = /^\[([^\]]+)\]\s*/.exec(rest);
|
|
182
|
+
const label = labelled === null || labelled === void 0 ? void 0 : labelled[1].trim();
|
|
183
|
+
if (labelled) {
|
|
184
|
+
rest = rest.slice(labelled[0].length);
|
|
185
|
+
}
|
|
186
|
+
const segments = rest
|
|
187
|
+
.split(/\s+\|\s+/)
|
|
188
|
+
.map(part => part.trim())
|
|
189
|
+
.filter(Boolean)
|
|
190
|
+
.map(part => {
|
|
191
|
+
for (const [sign, tone] of TONES) {
|
|
192
|
+
if (sign.test(part)) {
|
|
193
|
+
return { text: part.replace(sign, ''), tone };
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
// Or after it, as `main ✔`; a sign alone stays, as it is all there is to read.
|
|
197
|
+
const signed = /\s+(\S+)$/u.exec(part);
|
|
198
|
+
for (const [sign, tone] of signed ? TONES : []) {
|
|
199
|
+
if (signed && sign.test(signed[1])) {
|
|
200
|
+
return { text: part.slice(0, signed.index), tone };
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
return { text: part };
|
|
204
|
+
});
|
|
205
|
+
return label ? { label, segments } : { segments };
|
|
206
|
+
}
|
|
207
|
+
TerminalText.status = status;
|
|
208
|
+
})(TerminalText || (TerminalText = {}));
|
|
209
|
+
//# sourceMappingURL=terminal-text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-text.js","sourceRoot":"","sources":["../../../src/browser/util/terminal-text.ts"],"names":[],"mappings":"AAcA;;;;GAIG;AACH,MAAM,KAAW,YAAY,CA2M5B;AA3MD,WAAiB,YAAY;IACzB,kHAAkH;IAClH,MAAM,KAAK,GAAuC,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC;IACrI,MAAM,WAAW,GAAG,WAAW,CAAC;IAChC,yGAAyG;IACzG,MAAM,OAAO,GAAG,0EAA0E,CAAC;IAC3F,qFAAqF;IACrF,MAAM,GAAG,GAAG,mBAAmB,CAAC;IAChC,+DAA+D;IAC/D,MAAM,aAAa,GAAG,CAAC,CAAC;IACxB,MAAM,KAAK,GAA2B;QAClC,CAAC,wBAAwB,EAAE,SAAS,CAAC;QACrC,CAAC,uBAAuB,EAAE,MAAM,CAAC;QACjC,CAAC,0BAA0B,EAAE,OAAO,CAAC;QACrC,CAAC,mBAAmB,EAAE,SAAS,CAAC;KACnC,CAAC;IAEF,yGAAyG;IACzG,SAAgB,KAAK,CAAC,IAAY;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACrC,CAAC;IAFe,aAAA,KAAK,QAEpB,CAAA;IAED,sEAAsE;IACtE,SAAS,UAAU,CAAC,IAAY;QAC5B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACjD,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,MAAM,GAAG,GAAc,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAc,EAAE,CAAC;QAC7B,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;YACtB,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;YACnC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;YACjB,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACzB,CAAC;IAED;;;OAGG;IACH,SAAS,WAAW,CAAC,IAAY;QAC7B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YAChD,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,MAAM,GAAG,GAAc,EAAE,CAAC;QAC1B,IAAI,IAAyB,CAAC;QAC9B,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,EAAE;YAC3B,KAAK,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC9B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBACrB,OAAO,KAAK,CAAC;gBACjB,CAAC;gBACD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;YACD,OAAO,IAAI,CAAC;QAChB,CAAC,CAAC;QACF,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;gBACrB,OAAO,SAAS,CAAC;YACrB,CAAC;YACD,EAAE,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YACnC,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1D,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;oBAC9B,IAAI,GAAG,IAAI,CAAC;gBAChB,CAAC;qBAAM,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;oBACrC,IAAI,GAAG,KAAK,CAAC;gBACjB,CAAC;qBAAM,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;oBACnC,IAAI,GAAG,SAAS,CAAC;gBACrB,CAAC;YACL,CAAC;QACL,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;YACpC,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC;IAED,sFAAsF;IACtF,SAAS,OAAO,CAAC,KAAe,EAAE,KAAgD;QAC9E,IAAI,IAAmE,CAAC;QACxE,IAAI,GAAkE,CAAC;QACvE,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAC1B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;YACzB,IAAI,CAAC,IAAI,EAAE,CAAC;gBACR,GAAG,GAAG,SAAS,CAAC;gBAChB,OAAO;YACX,CAAC;YACD,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YAC5G,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;gBACvD,IAAI,GAAG,GAAG,CAAC;YACf,CAAC;QACL,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IACjF,CAAC;IAED,yGAAyG;IACzG,SAAS,OAAO,CAAC,IAAiB;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACrH,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9E,CAAC;IAED,6FAA6F;IAC7F,SAAS,IAAI,CAAC,IAAiB;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,KAAK,CAAU,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5F,CAAC;IAED;;;OAGG;IACH,SAAS,OAAO,CAAC,IAAiB;;;QAC9B,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QACzB,OAAO,GAAG,GAAG,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9C,GAAG,EAAE,CAAC;QACV,CAAC;QACD,OAAO,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACrD,MAAM,EAAE,CAAC;QACb,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACrC,MAAM,KAAK,SAAG,MAAA,IAAI,CAAC,CAAC,CAAC,0CAAE,MAAM,mCAAI,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,OAAO,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,IAAI,EAAE,CAAC;QACX,CAAC;QACD,OAAO,KAAK,GAAG,IAAI,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;YACrC,KAAK,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IACnD,CAAC;IAED;;;;OAIG;IACH,SAAgB,GAAG,CAAC,IAAY;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAC5C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QAClH,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,CAAC;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACtG,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAChF,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;IACpE,CAAC;IAXe,aAAA,GAAG,MAWlB,CAAA;IAED,mEAAmE;IACnE,SAAgB,IAAI,CAAC,GAAgB;QACjC,IAAI,CAAC,GAAG,EAAE,CAAC;QACX,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YACnB,IAAI,CAAC,GAAG,CAAC,CAAC;YACV,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;gBACpB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;oBACV,CAAC,EAAE,CAAC;oBACJ,SAAS;gBACb,CAAC;gBACD,MAAM,IAAI,GAAG,CAAC,CAAC;gBACf,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC9B,CAAC,EAAE,CAAC;gBACR,CAAC;gBACD,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC;YACrD,CAAC;QACL,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,CAAC;IACb,CAAC;IAjBe,aAAA,IAAI,OAiBnB,CAAA;IAED,4HAA4H;IAC5H,SAAgB,MAAM,CAAC,IAAY;QAC/B,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,CAAC,EAAE,IAAI,EAAE,CAAC;QACnC,IAAI,QAAQ,EAAE,CAAC;YACX,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI;aAChB,KAAK,CAAC,UAAU,CAAC;aACjB,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;aACxB,MAAM,CAAC,OAAO,CAAC;aACf,GAAG,CAAC,IAAI,CAAC,EAAE;YACR,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;gBAC/B,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBAClB,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;gBAClD,CAAC;YACL,CAAC;YACD,+EAA+E;YAC/E,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvC,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;gBAC7C,IAAI,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACjC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;gBACvD,CAAC;YACL,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC1B,CAAC,CAAC,CAAC;QACP,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC;IACtD,CAAC;IA3Be,aAAA,MAAM,SA2BrB,CAAA;AACL,CAAC,EA3MgB,YAAY,KAAZ,YAAY,QA2M5B"}
|
package/esm/browser/util/tool.js
CHANGED
|
@@ -14,6 +14,15 @@ const VERBS = {
|
|
|
14
14
|
message_task: 'ta.tool.verb.messageTask',
|
|
15
15
|
stop_task: 'ta.tool.verb.stopTask',
|
|
16
16
|
};
|
|
17
|
+
/** The verbs of the kinds of calls ACP agents make (`agent_tool` of @celljs/ta-agents). */
|
|
18
|
+
const AGENT_VERBS = {
|
|
19
|
+
execute: 'ta.tool.verb.bash',
|
|
20
|
+
read: 'ta.tool.verb.read',
|
|
21
|
+
edit: 'ta.tool.verb.edit',
|
|
22
|
+
delete: 'ta.tool.verb.edit',
|
|
23
|
+
move: 'ta.tool.verb.edit',
|
|
24
|
+
search: 'ta.tool.verb.grep',
|
|
25
|
+
};
|
|
17
26
|
const TARGET_CHARS = 160;
|
|
18
27
|
function str(value) {
|
|
19
28
|
return typeof value === 'string' ? value : '';
|
|
@@ -57,6 +66,13 @@ export var ToolUtil;
|
|
|
57
66
|
return { verb, name, target: scriptTitle(str(args.code)), code: false };
|
|
58
67
|
case 'start_task':
|
|
59
68
|
return { verb, name, target: str(args.title), code: false };
|
|
69
|
+
case 'agent_tool': {
|
|
70
|
+
// A call another agent made with its own tool: its kind, and what it was on.
|
|
71
|
+
const kind = str(args.kind);
|
|
72
|
+
const tool = str(args.tool) || str(args.title) || name;
|
|
73
|
+
const target = line(str(args.target) || str(args.title));
|
|
74
|
+
return { verb: AGENT_VERBS[kind], name: tool, target: target === tool ? '' : target, code: kind === 'execute' || kind === 'search' };
|
|
75
|
+
}
|
|
60
76
|
case 'get_task':
|
|
61
77
|
case 'stop_task':
|
|
62
78
|
case 'message_task':
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../src/browser/util/tool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAqB,WAAW,EAAmB,MAAM,WAAW,CAAC;AA6C5E,MAAM,KAAK,GAA8B;IACrC,IAAI,EAAE,mBAAmB;IACzB,IAAI,EAAE,mBAAmB;IACzB,IAAI,EAAE,mBAAmB;IACzB,KAAK,EAAE,oBAAoB;IAC3B,EAAE,EAAE,iBAAiB;IACrB,IAAI,EAAE,mBAAmB;IACzB,IAAI,EAAE,mBAAmB;IACzB,QAAQ,EAAE,uBAAuB;IACjC,UAAU,EAAE,wBAAwB;IACpC,UAAU,EAAE,wBAAwB;IACpC,QAAQ,EAAE,sBAAsB;IAChC,YAAY,EAAE,0BAA0B;IACxC,SAAS,EAAE,uBAAuB;CACrC,CAAC;AAEF,MAAM,YAAY,GAAG,GAAG,CAAC;AAEzB,SAAS,GAAG,CAAC,KAAc;IACvB,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAClD,CAAC;AAED,SAAS,IAAI,CAAC,IAAY;;IACtB,MAAM,KAAK,SAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,mCAAI,EAAE,CAAC;IAC/C,OAAO,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;AACxF,CAAC;AAED,SAAS,KAAK,CAAC,IAAwB;IACnC,IAAI,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAClD,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAClE,CAAC;eAAO,CAAC;QACL,OAAO,SAAS,CAAC;IACrB,CAAC;AACL,CAAC;AAED,0HAA0H;AAC1H,MAAM,KAAW,QAAQ,
|
|
1
|
+
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../src/browser/util/tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,8 @@ export declare const TaChat: unique symbol;
|
|
|
5
5
|
export interface ChatDraft {
|
|
6
6
|
/** Where it will work. */
|
|
7
7
|
cwd: string;
|
|
8
|
+
/** `<provider>/<model id>` it will start on; none: the default model of the settings. */
|
|
9
|
+
model?: string;
|
|
8
10
|
}
|
|
9
11
|
export interface ChatState {
|
|
10
12
|
/** The conversation shown, once there is one. */
|
|
@@ -30,6 +32,8 @@ export interface TaChat {
|
|
|
30
32
|
draft(): Promise<void>;
|
|
31
33
|
/** Moves the new conversation to another directory; the next new ones start there too. */
|
|
32
34
|
setDraftCwd(cwd: string): void;
|
|
35
|
+
/** The model the new conversation starts on; none: the default one. */
|
|
36
|
+
setDraftModel(model: string | undefined): void;
|
|
33
37
|
/** Opens the session of the new conversation and sends its first message; fails as the opening fails. */
|
|
34
38
|
submit(message: string, images?: ImageContent[]): Promise<void>;
|
|
35
39
|
show(sessionId: string): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-protocol.d.ts","sourceRoot":"","sources":["../../../src/browser/chat/chat-protocol.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,eAAO,MAAM,MAAM,eAAmB,CAAC;AAEvC,mFAAmF;AACnF,MAAM,WAAW,SAAS;IACtB,0BAA0B;IAC1B,GAAG,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"chat-protocol.d.ts","sourceRoot":"","sources":["../../../src/browser/chat/chat-protocol.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,eAAO,MAAM,MAAM,eAAmB,CAAC;AAEvC,mFAAmF;AACnF,MAAM,WAAW,SAAS;IACtB,0BAA0B;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,yFAAyF;IACzF,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IACtB,iDAAiD;IACjD,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,uCAAuC;IACvC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,MAAM,WAAW,MAAM;IACnB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAC5D,uHAAuH;IACvH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB;;;OAGG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,0FAA0F;IAC1F,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,uEAAuE;IACvE,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IAC/C,yGAAyG;IACzG,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC;;;OAGG;IACH,UAAU,CAAC,OAAO,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAClF,iGAAiG;IACjG,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-view.d.ts","sourceRoot":"","sources":["../../../src/browser/chat/chat-view.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAIxF,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"chat-view.d.ts","sourceRoot":"","sources":["../../../src/browser/chat/chat-view.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAIxF,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AASzE,wBAAgB,OAAO,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAO7C;AAED,6FAA6F;AAC7F,wBAAgB,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,cAAc,CAAA;CAAE,qBAO5D;AAiED,MAAM,WAAW,aAAa;IAC1B,4DAA4D;IAC5D,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,MAAM,IAAI,IAAI,CAAC;CAClB;AAED,yFAAyF;AACzF,wBAAgB,QAAQ,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,aAAa,qBA4C1D"}
|
|
@@ -52,6 +52,7 @@ const hooks_1 = require("../hooks");
|
|
|
52
52
|
const use_t_1 = require("../i18n/use-t");
|
|
53
53
|
const message_1 = require("../util/message");
|
|
54
54
|
const chat_protocol_1 = require("./chat-protocol");
|
|
55
|
+
const draft_model_1 = require("./draft-model");
|
|
55
56
|
const SUGGESTIONS = [
|
|
56
57
|
{ picture: 'card', label: 'ta.chat.suggest.1.label', text: 'ta.chat.suggest.1' },
|
|
57
58
|
{ picture: 'page', label: 'ta.chat.suggest.2.label', text: 'ta.chat.suggest.2' },
|
|
@@ -85,6 +86,8 @@ function DraftView({ draft, menu, aboveComposer, belowComposer }) {
|
|
|
85
86
|
const fail = (cause) => notices.error(cause);
|
|
86
87
|
const submit = (message, images) => chat.submit(message, images);
|
|
87
88
|
const list = React.useCallback((directory) => workbench.workspace.listDirectory('.', directory), [workbench]);
|
|
89
|
+
const pickModel = React.useCallback((model) => chat.setDraftModel(model), [chat]);
|
|
90
|
+
const model = (0, draft_model_1.useDraftModel)(workbench.settings, draft, pickModel, t);
|
|
88
91
|
return (React.createElement("section", { className: "ta-session" },
|
|
89
92
|
React.createElement("header", { className: "ta-session-header" },
|
|
90
93
|
menu,
|
|
@@ -96,7 +99,7 @@ function DraftView({ draft, menu, aboveComposer, belowComposer }) {
|
|
|
96
99
|
React.createElement(Hero, { cwd: draft.cwd, onPick: text => void submit(text).catch(fail) }))),
|
|
97
100
|
React.createElement("div", { className: "ta-bottom" },
|
|
98
101
|
aboveComposer,
|
|
99
|
-
React.createElement(composer_1.Composer, { server: workbench.server, workspace: workbench.workspace, working: false, commands: [], cwd: draft.cwd || undefined, onSubmit: submit, onError: fail, beside: React.createElement(folder_picker_1.DirectoryButton, { cwd: draft.cwd, list: list, remote: workbench, onPick: cwd => chat.setDraftCwd(cwd) }) }),
|
|
102
|
+
React.createElement(composer_1.Composer, { server: workbench.server, workspace: workbench.workspace, working: false, commands: [], cwd: draft.cwd || undefined, onSubmit: submit, onError: fail, actions: model ? [[model]] : undefined, beside: React.createElement(folder_picker_1.DirectoryButton, { cwd: draft.cwd, list: list, remote: workbench, onPick: cwd => chat.setDraftCwd(cwd) }) }),
|
|
100
103
|
belowComposer)));
|
|
101
104
|
}
|
|
102
105
|
/** The conversation shown, with the widgets of web extensions around its message box. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-view.js","sourceRoot":"","sources":["../../../src/browser/chat/chat-view.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAA0C;AAE1C,MAAY,KAAK,kCAAc;AAC/B,mDAAgD;AAChD,qDAAkD;AAClD,+DAA8D;AAC9D,yDAA0E;AAC1E,6CAA6D;AAC7D,6DAAyD;AACzD,uDAAmD;AACnD,qEAAiE;AACjE,gEAAgE;AAChE,gFAAwF;AACxF,oCAAoD;AACpD,yCAAqC;AACrC,6CAA8C;AAC9C,mDAAyE;
|
|
1
|
+
{"version":3,"file":"chat-view.js","sourceRoot":"","sources":["../../../src/browser/chat/chat-view.tsx"],"names":[],"mappings":"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"}
|
|
@@ -28,11 +28,14 @@ export declare class TaChatImpl implements TaChat {
|
|
|
28
28
|
protected watching: boolean;
|
|
29
29
|
/** A web extension changed packages during a run: its end loads them again. */
|
|
30
30
|
protected reloadPending: boolean;
|
|
31
|
+
/** The conversation asked for last: of quick switches, only the last is shown. */
|
|
32
|
+
protected wanted?: string;
|
|
31
33
|
get state(): ChatState;
|
|
32
34
|
subscribe(listener: (state: ChatState) => void): () => void;
|
|
33
35
|
start(): Promise<void>;
|
|
34
36
|
draft(): Promise<void>;
|
|
35
37
|
setDraftCwd(cwd: string): void;
|
|
38
|
+
setDraftModel(model: string | undefined): void;
|
|
36
39
|
submit(message: string, images?: ImageContent[]): Promise<void>;
|
|
37
40
|
show(sessionId: string): Promise<void>;
|
|
38
41
|
openBeside(options: {
|
|
@@ -44,6 +47,7 @@ export declare class TaChatImpl implements TaChat {
|
|
|
44
47
|
/** Opens a session with the tools of the web extensions of now. */
|
|
45
48
|
protected open(options: Partial<TaOpenSessionOptions>): Promise<string>;
|
|
46
49
|
/** Follows a session, running the web tools it asks for. */
|
|
50
|
+
/** The conversation shown stays until the next one is loaded, so that switching does not flash an empty page. */
|
|
47
51
|
protected attach(sessionId: string): Promise<void>;
|
|
48
52
|
/** The newest other open session, or a new conversation. */
|
|
49
53
|
protected replace(): Promise<void>;
|
|
@@ -64,7 +68,10 @@ export declare class TaChatImpl implements TaChat {
|
|
|
64
68
|
protected loadPackages(store: SessionStore, changed: boolean): Promise<void>;
|
|
65
69
|
/** The same conversation, from its file, with the tools of now. */
|
|
66
70
|
protected reopen(store: SessionStore): Promise<void>;
|
|
67
|
-
protected remember(
|
|
71
|
+
protected remember(info: {
|
|
72
|
+
sessionFile?: string;
|
|
73
|
+
group?: string;
|
|
74
|
+
} | undefined): void;
|
|
68
75
|
protected update(change: Partial<ChatState>): void;
|
|
69
76
|
}
|
|
70
77
|
//# sourceMappingURL=chat.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../../src/browser/chat/chat.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAA6B,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../../src/browser/chat/chat.ts"],"names":[],"mappings":"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"}
|
package/lib/browser/chat/chat.js
CHANGED
|
@@ -18,8 +18,12 @@ const workbench_protocol_1 = require("../workbench-protocol");
|
|
|
18
18
|
const chat_protocol_1 = require("./chat-protocol");
|
|
19
19
|
/** The file of the conversation shown last, in any browser: the page opens it again. */
|
|
20
20
|
const FILE = { key: 'chat.file', tier: 'user', initial: '', parse: state_protocol_1.StateUtil.string };
|
|
21
|
+
/** That conversation is of a package's group: the page shows it again only while it is open, as its package opens it with a role of its own. */
|
|
22
|
+
const GROUPED = { key: 'chat.grouped', tier: 'user', initial: false, parse: state_protocol_1.StateUtil.boolean };
|
|
21
23
|
/** The directory of the last new conversation. */
|
|
22
24
|
const CWD = { key: 'chat.cwd', tier: 'user', initial: '', parse: state_protocol_1.StateUtil.string };
|
|
25
|
+
/** The model the user picked for the last new conversation. */
|
|
26
|
+
const MODEL = { key: 'chat.model', tier: 'user', initial: '', parse: state_protocol_1.StateUtil.string };
|
|
23
27
|
/** A file in a directory of packages: `extensions/<name>/...`, of the user or a project. */
|
|
24
28
|
const PACKAGE_FILE = /(^|[\\/])extensions[\\/][^\\/]+[\\/]/;
|
|
25
29
|
var ChatUtil;
|
|
@@ -82,7 +86,8 @@ let TaChatImpl = class TaChatImpl {
|
|
|
82
86
|
await this.workbench.refresh();
|
|
83
87
|
const file = (await this.persisted.load(FILE)) || undefined;
|
|
84
88
|
const open = file && this.workbench.state.sessions.find(session => session.sessionFile === file);
|
|
85
|
-
const
|
|
89
|
+
const reopen = file && !(await this.persisted.load(GROUPED));
|
|
90
|
+
const sessionId = open ? open.sessionId : reopen ? await this.open({ sessionFile: file }).catch(() => undefined) : undefined;
|
|
86
91
|
if (sessionId) {
|
|
87
92
|
await this.attach(sessionId);
|
|
88
93
|
}
|
|
@@ -102,10 +107,16 @@ let TaChatImpl = class TaChatImpl {
|
|
|
102
107
|
setDraftCwd(cwd) {
|
|
103
108
|
if (this.current.draft) {
|
|
104
109
|
this.persisted.set(CWD, cwd);
|
|
105
|
-
this.update({ draft: { cwd } });
|
|
110
|
+
this.update({ draft: { ...this.current.draft, cwd } });
|
|
106
111
|
this.extensions.connect({ cwd });
|
|
107
112
|
}
|
|
108
113
|
}
|
|
114
|
+
setDraftModel(model) {
|
|
115
|
+
if (this.current.draft && this.current.draft.model !== model) {
|
|
116
|
+
this.persisted.set(MODEL, model !== null && model !== void 0 ? model : '');
|
|
117
|
+
this.update({ draft: { ...this.current.draft, model } });
|
|
118
|
+
}
|
|
119
|
+
}
|
|
109
120
|
submit(message, images) {
|
|
110
121
|
const next = this.queue.then(async () => {
|
|
111
122
|
var _a;
|
|
@@ -113,7 +124,7 @@ let TaChatImpl = class TaChatImpl {
|
|
|
113
124
|
if (!draft) {
|
|
114
125
|
return;
|
|
115
126
|
}
|
|
116
|
-
const sessionId = await this.open({ cwd: draft.cwd });
|
|
127
|
+
const sessionId = await this.open({ cwd: draft.cwd, model: draft.model });
|
|
117
128
|
if (draft.cwd) {
|
|
118
129
|
this.persisted.set(CWD, draft.cwd);
|
|
119
130
|
}
|
|
@@ -124,9 +135,10 @@ let TaChatImpl = class TaChatImpl {
|
|
|
124
135
|
return next;
|
|
125
136
|
}
|
|
126
137
|
show(sessionId) {
|
|
138
|
+
this.wanted = sessionId;
|
|
127
139
|
return this.enqueue(async () => {
|
|
128
140
|
var _a;
|
|
129
|
-
if (((_a = this.current.store) === null || _a === void 0 ? void 0 : _a.sessionId) !== sessionId) {
|
|
141
|
+
if (this.wanted === sessionId && ((_a = this.current.store) === null || _a === void 0 ? void 0 : _a.sessionId) !== sessionId) {
|
|
130
142
|
await this.attach(sessionId);
|
|
131
143
|
}
|
|
132
144
|
});
|
|
@@ -172,19 +184,25 @@ let TaChatImpl = class TaChatImpl {
|
|
|
172
184
|
return sessionId;
|
|
173
185
|
}
|
|
174
186
|
/** Follows a session, running the web tools it asks for. */
|
|
187
|
+
/** The conversation shown stays until the next one is loaded, so that switching does not flash an empty page. */
|
|
175
188
|
async attach(sessionId) {
|
|
176
|
-
var _a;
|
|
177
|
-
this.leave();
|
|
178
189
|
const store = this.workbench.createStore(sessionId, { clientTools: this.extensions.state.tools.map(tool => this.clientTool(tool.name)) });
|
|
179
|
-
|
|
190
|
+
try {
|
|
191
|
+
await store.attach();
|
|
192
|
+
// The list has the sessions opened since, as those of agents: web extensions get the directory of this one.
|
|
193
|
+
await this.workbench.refresh();
|
|
194
|
+
}
|
|
195
|
+
catch (error) {
|
|
196
|
+
store.detach().catch(() => undefined);
|
|
197
|
+
throw error;
|
|
198
|
+
}
|
|
199
|
+
this.leave();
|
|
180
200
|
this.seenEdits.clear();
|
|
181
201
|
for (const id of Object.keys(store.state.tools)) {
|
|
182
202
|
this.seenEdits.add(id);
|
|
183
203
|
}
|
|
184
|
-
// The list has the sessions opened since, as those of agents: web extensions get the directory of this one.
|
|
185
|
-
await this.workbench.refresh();
|
|
186
204
|
this.follow(store);
|
|
187
|
-
this.remember(
|
|
205
|
+
this.remember(this.workbench.state.sessions.find(session => session.sessionId === sessionId));
|
|
188
206
|
}
|
|
189
207
|
/** The newest other open session, or a new conversation. */
|
|
190
208
|
async replace() {
|
|
@@ -201,7 +219,7 @@ let TaChatImpl = class TaChatImpl {
|
|
|
201
219
|
showDraft() {
|
|
202
220
|
var _a;
|
|
203
221
|
const cwd = this.persisted.get(CWD) || ((_a = this.workbench.state.server) === null || _a === void 0 ? void 0 : _a.cwd) || '';
|
|
204
|
-
this.update({ draft: { cwd }, error: undefined });
|
|
222
|
+
this.update({ draft: { cwd, model: this.persisted.get(MODEL) || undefined }, error: undefined });
|
|
205
223
|
this.extensions.connect(cwd ? { cwd } : undefined);
|
|
206
224
|
}
|
|
207
225
|
/** Runs the web tool of the name that is loaded when the model calls it: a changed one runs as it is now. */
|
|
@@ -255,7 +273,7 @@ let TaChatImpl = class TaChatImpl {
|
|
|
255
273
|
}
|
|
256
274
|
onEvent(event) {
|
|
257
275
|
if (event.type === 'session_replaced') {
|
|
258
|
-
this.remember(event.info
|
|
276
|
+
this.remember(event.info);
|
|
259
277
|
}
|
|
260
278
|
this.extensions.emit(event);
|
|
261
279
|
}
|
|
@@ -311,9 +329,10 @@ let TaChatImpl = class TaChatImpl {
|
|
|
311
329
|
this.opened.delete(store.sessionId);
|
|
312
330
|
await this.attach(await this.open({ sessionFile, cwd }));
|
|
313
331
|
}
|
|
314
|
-
remember(
|
|
315
|
-
if (sessionFile) {
|
|
316
|
-
this.persisted.set(FILE, sessionFile);
|
|
332
|
+
remember(info) {
|
|
333
|
+
if (info === null || info === void 0 ? void 0 : info.sessionFile) {
|
|
334
|
+
this.persisted.set(FILE, info.sessionFile);
|
|
335
|
+
this.persisted.set(GROUPED, !!info.group);
|
|
317
336
|
}
|
|
318
337
|
}
|
|
319
338
|
update(change) {
|