@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.
Files changed (272) hide show
  1. package/README.en.md +1 -1
  2. package/README.md +1 -1
  3. package/esm/browser/chat/chat-protocol.d.ts +4 -0
  4. package/esm/browser/chat/chat-view.js +4 -1
  5. package/esm/browser/chat/chat-view.js.map +1 -1
  6. package/esm/browser/chat/chat.d.ts +8 -1
  7. package/esm/browser/chat/chat.js +34 -15
  8. package/esm/browser/chat/chat.js.map +1 -1
  9. package/esm/browser/chat/draft-model.d.ts +15 -0
  10. package/esm/browser/chat/draft-model.js +53 -0
  11. package/esm/browser/chat/draft-model.js.map +1 -0
  12. package/esm/browser/components/app-view.js +10 -3
  13. package/esm/browser/components/app-view.js.map +1 -1
  14. package/esm/browser/components/composer-box.d.ts +6 -0
  15. package/esm/browser/components/composer-box.js +50 -13
  16. package/esm/browser/components/composer-box.js.map +1 -1
  17. package/esm/browser/components/composer.js +1 -1
  18. package/esm/browser/components/composer.js.map +1 -1
  19. package/esm/browser/components/dialog-view.d.ts +4 -1
  20. package/esm/browser/components/dialog-view.js +11 -7
  21. package/esm/browser/components/dialog-view.js.map +1 -1
  22. package/esm/browser/components/notice-center.js +3 -1
  23. package/esm/browser/components/notice-center.js.map +1 -1
  24. package/esm/browser/components/session-view.js +48 -4
  25. package/esm/browser/components/session-view.js.map +1 -1
  26. package/esm/browser/components/terminal-art.d.ts +7 -0
  27. package/esm/browser/components/terminal-art.js +12 -0
  28. package/esm/browser/components/terminal-art.js.map +1 -0
  29. package/esm/browser/components/tool-view.js +1 -1
  30. package/esm/browser/components/tool-view.js.map +1 -1
  31. package/esm/browser/components/web-composer.js +1 -1
  32. package/esm/browser/components/web-composer.js.map +1 -1
  33. package/esm/browser/extension/icons.js +4 -1
  34. package/esm/browser/extension/icons.js.map +1 -1
  35. package/esm/browser/extension/web-extension-api.d.ts +117 -1
  36. package/esm/browser/extension/web-extensions.d.ts +3 -0
  37. package/esm/browser/extension/web-extensions.js +22 -0
  38. package/esm/browser/extension/web-extensions.js.map +1 -1
  39. package/esm/browser/i18n/locales.d.ts +13 -1
  40. package/esm/browser/i18n/messages.d.ts +12 -0
  41. package/esm/browser/i18n/messages.js +24 -0
  42. package/esm/browser/i18n/messages.js.map +1 -1
  43. package/esm/browser/notices/notices-protocol.d.ts +3 -0
  44. package/esm/browser/notices/notices.d.ts +3 -0
  45. package/esm/browser/notices/notices.js +15 -0
  46. package/esm/browser/notices/notices.js.map +1 -1
  47. package/esm/browser/style/conversation.d.ts +1 -1
  48. package/esm/browser/style/conversation.js +16 -1
  49. package/esm/browser/style/conversation.js.map +1 -1
  50. package/esm/browser/style/layout.d.ts +1 -1
  51. package/esm/browser/style/layout.js +5 -0
  52. package/esm/browser/style/layout.js.map +1 -1
  53. package/esm/browser/style/shell.d.ts +1 -1
  54. package/esm/browser/style/shell.js +1 -0
  55. package/esm/browser/style/shell.js.map +1 -1
  56. package/esm/browser/terminal/canvas-font.d.ts +10 -0
  57. package/esm/browser/terminal/canvas-font.js +34 -0
  58. package/esm/browser/terminal/canvas-font.js.map +1 -0
  59. package/esm/browser/terminal/terminal-links.d.ts +18 -0
  60. package/esm/browser/terminal/terminal-links.js +72 -0
  61. package/esm/browser/terminal/terminal-links.js.map +1 -0
  62. package/esm/browser/terminal/terminal-theme.d.ts +8 -0
  63. package/esm/browser/terminal/terminal-theme.js +65 -0
  64. package/esm/browser/terminal/terminal-theme.js.map +1 -0
  65. package/esm/browser/terminal/web-terminal.d.ts +74 -0
  66. package/esm/browser/terminal/web-terminal.js +300 -0
  67. package/esm/browser/terminal/web-terminal.js.map +1 -0
  68. package/esm/browser/terminal/xterm.d.ts +5 -0
  69. package/esm/browser/terminal/xterm.js +9 -0
  70. package/esm/browser/terminal/xterm.js.map +1 -0
  71. package/esm/browser/util/desktop.d.ts +43 -0
  72. package/esm/browser/util/desktop.js +55 -0
  73. package/esm/browser/util/desktop.js.map +1 -0
  74. package/esm/browser/util/file-drag.d.ts +26 -0
  75. package/esm/browser/util/file-drag.js +73 -0
  76. package/esm/browser/util/file-drag.js.map +1 -0
  77. package/esm/browser/util/terminal-text.d.ts +33 -0
  78. package/esm/browser/util/terminal-text.js +209 -0
  79. package/esm/browser/util/terminal-text.js.map +1 -0
  80. package/esm/browser/util/tool.js +16 -0
  81. package/esm/browser/util/tool.js.map +1 -1
  82. package/lib/browser/chat/chat-protocol.d.ts +4 -0
  83. package/lib/browser/chat/chat-protocol.d.ts.map +1 -1
  84. package/lib/browser/chat/chat-view.d.ts.map +1 -1
  85. package/lib/browser/chat/chat-view.js +4 -1
  86. package/lib/browser/chat/chat-view.js.map +1 -1
  87. package/lib/browser/chat/chat.d.ts +8 -1
  88. package/lib/browser/chat/chat.d.ts.map +1 -1
  89. package/lib/browser/chat/chat.js +34 -15
  90. package/lib/browser/chat/chat.js.map +1 -1
  91. package/lib/browser/chat/chat.spec.js +30 -0
  92. package/lib/browser/chat/chat.spec.js.map +1 -1
  93. package/lib/browser/chat/draft-model.d.ts +16 -0
  94. package/lib/browser/chat/draft-model.d.ts.map +1 -0
  95. package/lib/browser/chat/draft-model.js +90 -0
  96. package/lib/browser/chat/draft-model.js.map +1 -0
  97. package/lib/browser/chat/draft-model.spec.d.ts +2 -0
  98. package/lib/browser/chat/draft-model.spec.d.ts.map +1 -0
  99. package/lib/browser/chat/draft-model.spec.js +31 -0
  100. package/lib/browser/chat/draft-model.spec.js.map +1 -0
  101. package/lib/browser/components/app-view.d.ts.map +1 -1
  102. package/lib/browser/components/app-view.js +10 -3
  103. package/lib/browser/components/app-view.js.map +1 -1
  104. package/lib/browser/components/composer-box.d.ts +6 -0
  105. package/lib/browser/components/composer-box.d.ts.map +1 -1
  106. package/lib/browser/components/composer-box.js +51 -14
  107. package/lib/browser/components/composer-box.js.map +1 -1
  108. package/lib/browser/components/composer.d.ts.map +1 -1
  109. package/lib/browser/components/composer.js +1 -1
  110. package/lib/browser/components/composer.js.map +1 -1
  111. package/lib/browser/components/dialog-view.d.ts +4 -1
  112. package/lib/browser/components/dialog-view.d.ts.map +1 -1
  113. package/lib/browser/components/dialog-view.js +11 -7
  114. package/lib/browser/components/dialog-view.js.map +1 -1
  115. package/lib/browser/components/notice-center.d.ts.map +1 -1
  116. package/lib/browser/components/notice-center.js +3 -1
  117. package/lib/browser/components/notice-center.js.map +1 -1
  118. package/lib/browser/components/plus-menu.spec.d.ts +2 -0
  119. package/lib/browser/components/plus-menu.spec.d.ts.map +1 -0
  120. package/lib/browser/components/plus-menu.spec.js +18 -0
  121. package/lib/browser/components/plus-menu.spec.js.map +1 -0
  122. package/lib/browser/components/session-view.d.ts.map +1 -1
  123. package/lib/browser/components/session-view.js +48 -4
  124. package/lib/browser/components/session-view.js.map +1 -1
  125. package/lib/browser/components/terminal-art.d.ts +8 -0
  126. package/lib/browser/components/terminal-art.d.ts.map +1 -0
  127. package/lib/browser/components/terminal-art.js +48 -0
  128. package/lib/browser/components/terminal-art.js.map +1 -0
  129. package/lib/browser/components/tool-view.js +1 -1
  130. package/lib/browser/components/tool-view.js.map +1 -1
  131. package/lib/browser/components/web-composer.d.ts.map +1 -1
  132. package/lib/browser/components/web-composer.js +1 -1
  133. package/lib/browser/components/web-composer.js.map +1 -1
  134. package/lib/browser/extension/icons.d.ts.map +1 -1
  135. package/lib/browser/extension/icons.js +3 -0
  136. package/lib/browser/extension/icons.js.map +1 -1
  137. package/lib/browser/extension/web-extension-api.d.ts +117 -1
  138. package/lib/browser/extension/web-extension-api.d.ts.map +1 -1
  139. package/lib/browser/extension/web-extensions.d.ts +3 -0
  140. package/lib/browser/extension/web-extensions.d.ts.map +1 -1
  141. package/lib/browser/extension/web-extensions.js +22 -0
  142. package/lib/browser/extension/web-extensions.js.map +1 -1
  143. package/lib/browser/i18n/locales.d.ts +13 -1
  144. package/lib/browser/i18n/locales.d.ts.map +1 -1
  145. package/lib/browser/i18n/messages.d.ts +12 -0
  146. package/lib/browser/i18n/messages.d.ts.map +1 -1
  147. package/lib/browser/i18n/messages.js +24 -0
  148. package/lib/browser/i18n/messages.js.map +1 -1
  149. package/lib/browser/notices/notices-protocol.d.ts +3 -0
  150. package/lib/browser/notices/notices-protocol.d.ts.map +1 -1
  151. package/lib/browser/notices/notices.d.ts +3 -0
  152. package/lib/browser/notices/notices.d.ts.map +1 -1
  153. package/lib/browser/notices/notices.js +15 -0
  154. package/lib/browser/notices/notices.js.map +1 -1
  155. package/lib/browser/notices/notices.spec.js +7 -2
  156. package/lib/browser/notices/notices.spec.js.map +1 -1
  157. package/lib/browser/style/conversation.d.ts +1 -1
  158. package/lib/browser/style/conversation.d.ts.map +1 -1
  159. package/lib/browser/style/conversation.js +16 -1
  160. package/lib/browser/style/conversation.js.map +1 -1
  161. package/lib/browser/style/layout.d.ts +1 -1
  162. package/lib/browser/style/layout.d.ts.map +1 -1
  163. package/lib/browser/style/layout.js +5 -0
  164. package/lib/browser/style/layout.js.map +1 -1
  165. package/lib/browser/style/shell.d.ts +1 -1
  166. package/lib/browser/style/shell.d.ts.map +1 -1
  167. package/lib/browser/style/shell.js +1 -0
  168. package/lib/browser/style/shell.js.map +1 -1
  169. package/lib/browser/terminal/canvas-font.d.ts +11 -0
  170. package/lib/browser/terminal/canvas-font.d.ts.map +1 -0
  171. package/lib/browser/terminal/canvas-font.js +37 -0
  172. package/lib/browser/terminal/canvas-font.js.map +1 -0
  173. package/lib/browser/terminal/canvas-font.spec.d.ts +2 -0
  174. package/lib/browser/terminal/canvas-font.spec.d.ts.map +1 -0
  175. package/lib/browser/terminal/canvas-font.spec.js +32 -0
  176. package/lib/browser/terminal/canvas-font.spec.js.map +1 -0
  177. package/lib/browser/terminal/terminal-links.d.ts +19 -0
  178. package/lib/browser/terminal/terminal-links.d.ts.map +1 -0
  179. package/lib/browser/terminal/terminal-links.js +75 -0
  180. package/lib/browser/terminal/terminal-links.js.map +1 -0
  181. package/lib/browser/terminal/terminal-links.spec.d.ts +2 -0
  182. package/lib/browser/terminal/terminal-links.spec.d.ts.map +1 -0
  183. package/lib/browser/terminal/terminal-links.spec.js +30 -0
  184. package/lib/browser/terminal/terminal-links.spec.js.map +1 -0
  185. package/lib/browser/terminal/terminal-theme.d.ts +9 -0
  186. package/lib/browser/terminal/terminal-theme.d.ts.map +1 -0
  187. package/lib/browser/terminal/terminal-theme.js +68 -0
  188. package/lib/browser/terminal/terminal-theme.js.map +1 -0
  189. package/lib/browser/terminal/terminal-theme.spec.d.ts +2 -0
  190. package/lib/browser/terminal/terminal-theme.spec.d.ts.map +1 -0
  191. package/lib/browser/terminal/terminal-theme.spec.js +24 -0
  192. package/lib/browser/terminal/terminal-theme.spec.js.map +1 -0
  193. package/lib/browser/terminal/web-terminal.d.ts +75 -0
  194. package/lib/browser/terminal/web-terminal.d.ts.map +1 -0
  195. package/lib/browser/terminal/web-terminal.js +304 -0
  196. package/lib/browser/terminal/web-terminal.js.map +1 -0
  197. package/lib/browser/terminal/xterm.d.ts +6 -0
  198. package/lib/browser/terminal/xterm.d.ts.map +1 -0
  199. package/lib/browser/terminal/xterm.js +16 -0
  200. package/lib/browser/terminal/xterm.js.map +1 -0
  201. package/lib/browser/util/desktop.d.ts +44 -0
  202. package/lib/browser/util/desktop.d.ts.map +1 -0
  203. package/lib/browser/util/desktop.js +58 -0
  204. package/lib/browser/util/desktop.js.map +1 -0
  205. package/lib/browser/util/desktop.spec.d.ts +2 -0
  206. package/lib/browser/util/desktop.spec.d.ts.map +1 -0
  207. package/lib/browser/util/desktop.spec.js +67 -0
  208. package/lib/browser/util/desktop.spec.js.map +1 -0
  209. package/lib/browser/util/file-drag.d.ts +27 -0
  210. package/lib/browser/util/file-drag.d.ts.map +1 -0
  211. package/lib/browser/util/file-drag.js +76 -0
  212. package/lib/browser/util/file-drag.js.map +1 -0
  213. package/lib/browser/util/file-drag.spec.d.ts +2 -0
  214. package/lib/browser/util/file-drag.spec.d.ts.map +1 -0
  215. package/lib/browser/util/file-drag.spec.js +46 -0
  216. package/lib/browser/util/file-drag.spec.js.map +1 -0
  217. package/lib/browser/util/terminal-text.d.ts +34 -0
  218. package/lib/browser/util/terminal-text.d.ts.map +1 -0
  219. package/lib/browser/util/terminal-text.js +212 -0
  220. package/lib/browser/util/terminal-text.js.map +1 -0
  221. package/lib/browser/util/terminal-text.spec.d.ts +2 -0
  222. package/lib/browser/util/terminal-text.spec.d.ts.map +1 -0
  223. package/lib/browser/util/terminal-text.spec.js +54 -0
  224. package/lib/browser/util/terminal-text.spec.js.map +1 -0
  225. package/lib/browser/util/tool.d.ts.map +1 -1
  226. package/lib/browser/util/tool.js +16 -0
  227. package/lib/browser/util/tool.js.map +1 -1
  228. package/lib/browser/util/tool.spec.js +12 -0
  229. package/lib/browser/util/tool.spec.js.map +1 -1
  230. package/package.json +11 -7
  231. package/src/browser/chat/chat-protocol.ts +4 -0
  232. package/src/browser/chat/chat-view.tsx +4 -0
  233. package/src/browser/chat/chat.spec.ts +31 -0
  234. package/src/browser/chat/chat.ts +36 -14
  235. package/src/browser/chat/draft-model.spec.tsx +31 -0
  236. package/src/browser/chat/draft-model.tsx +63 -0
  237. package/src/browser/components/app-view.tsx +10 -3
  238. package/src/browser/components/composer-box.tsx +52 -6
  239. package/src/browser/components/composer.tsx +1 -0
  240. package/src/browser/components/dialog-view.tsx +16 -7
  241. package/src/browser/components/notice-center.tsx +7 -1
  242. package/src/browser/components/plus-menu.spec.ts +16 -0
  243. package/src/browser/components/session-view.tsx +65 -4
  244. package/src/browser/components/terminal-art.tsx +21 -0
  245. package/src/browser/components/tool-view.tsx +1 -1
  246. package/src/browser/components/web-composer.tsx +1 -0
  247. package/src/browser/extension/icons.ts +6 -0
  248. package/src/browser/extension/web-extension-api.ts +131 -1
  249. package/src/browser/extension/web-extensions.ts +36 -1
  250. package/src/browser/i18n/messages.ts +24 -0
  251. package/src/browser/notices/notices-protocol.ts +3 -0
  252. package/src/browser/notices/notices.spec.ts +8 -2
  253. package/src/browser/notices/notices.ts +17 -1
  254. package/src/browser/style/conversation.ts +16 -1
  255. package/src/browser/style/layout.ts +5 -0
  256. package/src/browser/style/shell.ts +1 -0
  257. package/src/browser/terminal/canvas-font.spec.ts +29 -0
  258. package/src/browser/terminal/canvas-font.ts +32 -0
  259. package/src/browser/terminal/terminal-links.spec.ts +32 -0
  260. package/src/browser/terminal/terminal-links.ts +75 -0
  261. package/src/browser/terminal/terminal-theme.spec.ts +23 -0
  262. package/src/browser/terminal/terminal-theme.ts +66 -0
  263. package/src/browser/terminal/web-terminal.ts +330 -0
  264. package/src/browser/terminal/xterm.ts +10 -0
  265. package/src/browser/util/desktop.spec.ts +68 -0
  266. package/src/browser/util/desktop.ts +96 -0
  267. package/src/browser/util/file-drag.spec.ts +48 -0
  268. package/src/browser/util/file-drag.ts +78 -0
  269. package/src/browser/util/terminal-text.spec.ts +60 -0
  270. package/src/browser/util/terminal-text.ts +223 -0
  271. package/src/browser/util/tool.spec.ts +12 -0
  272. package/src/browser/util/tool.ts +17 -0
@@ -0,0 +1,304 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DefaultWebTerminal = exports.XtermLoader = void 0;
4
+ const messages_1 = require("../i18n/messages");
5
+ const agent_settings_1 = require("../settings/agent-settings");
6
+ const terminal_links_1 = require("./terminal-links");
7
+ const terminal_theme_1 = require("./terminal-theme");
8
+ /** Loads xterm.js the first time a terminal is made, not with the page. */
9
+ var XtermLoader;
10
+ (function (XtermLoader) {
11
+ let loading;
12
+ function load() {
13
+ loading !== null && loading !== void 0 ? loading : (loading = import('./xterm.js').catch(error => {
14
+ loading = undefined;
15
+ throw error;
16
+ }));
17
+ return loading;
18
+ }
19
+ XtermLoader.load = load;
20
+ })(XtermLoader || (exports.XtermLoader = XtermLoader = {}));
21
+ const DEFAULT_COLS = 80;
22
+ const DEFAULT_ROWS = 24;
23
+ const SCROLLBACK = 5000;
24
+ /** Rows of one line that wraps, at most, read for its links. */
25
+ const MAX_WRAPPED_ROWS = 50;
26
+ /** A view being dragged to a new size fits once it stops. */
27
+ const FIT_MS = 50;
28
+ function cssVariable(name) {
29
+ return getComputedStyle(document.documentElement).getPropertyValue(name);
30
+ }
31
+ /**
32
+ * A terminal as VS Code's: xterm.js on the GPU (its WebGL renderer; the DOM one when the browser has
33
+ * no WebGL or loses it), in the theme of the page, which it follows. It opens in an element of its own
34
+ * that moves from view to view, so that it keeps its screen and scrollback while no view shows it.
35
+ * URLs and paths of files are links, opened with Cmd or Ctrl + click, from the directory the shell says
36
+ * it is in (OSC 7), else the one it started in.
37
+ */
38
+ class DefaultWebTerminal {
39
+ constructor(settings, openLink, options = {}) {
40
+ var _a, _b;
41
+ this.settings = settings;
42
+ this.openLink = openLink;
43
+ this.opened = false;
44
+ this.disposed = false;
45
+ /** Focus asked for before xterm.js opened: it takes it once it does. */
46
+ this.wantsFocus = false;
47
+ /** Output that came before xterm.js loaded. */
48
+ this.pending = [];
49
+ this.dataListeners = new Set();
50
+ this.resizeListeners = new Set();
51
+ this.host = document.createElement('div');
52
+ this.cols = (_a = options.cols) !== null && _a !== void 0 ? _a : DEFAULT_COLS;
53
+ this.rows = (_b = options.rows) !== null && _b !== void 0 ? _b : DEFAULT_ROWS;
54
+ this.cwd = options.cwd;
55
+ this.host.className = 'ta-terminal';
56
+ XtermLoader.load().then(module => this.start(module), error => console.error('The terminal did not load:', error));
57
+ }
58
+ write(data) {
59
+ if (this.term) {
60
+ this.term.write(data);
61
+ }
62
+ else if (!this.disposed) {
63
+ this.pending.push(data);
64
+ }
65
+ }
66
+ onData(listener) {
67
+ this.dataListeners.add(listener);
68
+ return () => this.dataListeners.delete(listener);
69
+ }
70
+ onResize(listener) {
71
+ this.resizeListeners.add(listener);
72
+ return () => this.resizeListeners.delete(listener);
73
+ }
74
+ attach(element) {
75
+ this.detach();
76
+ this.parent = element;
77
+ element.appendChild(this.host);
78
+ this.observer = new ResizeObserver(() => this.layout());
79
+ this.observer.observe(element);
80
+ this.open();
81
+ this.layout();
82
+ return () => {
83
+ if (this.parent === element) {
84
+ this.detach();
85
+ }
86
+ };
87
+ }
88
+ focus() {
89
+ var _a;
90
+ if (this.opened) {
91
+ (_a = this.term) === null || _a === void 0 ? void 0 : _a.focus();
92
+ }
93
+ else {
94
+ this.wantsFocus = true;
95
+ }
96
+ }
97
+ dispose() {
98
+ var _a, _b;
99
+ this.disposed = true;
100
+ this.detach();
101
+ (_a = this.unsubscribe) === null || _a === void 0 ? void 0 : _a.call(this);
102
+ (_b = this.term) === null || _b === void 0 ? void 0 : _b.dispose();
103
+ this.pending = [];
104
+ this.dataListeners.clear();
105
+ this.resizeListeners.clear();
106
+ }
107
+ start(module) {
108
+ if (this.disposed) {
109
+ return;
110
+ }
111
+ this.module = module;
112
+ const term = new module.Terminal({
113
+ cols: this.cols,
114
+ rows: this.rows,
115
+ // The Unicode 11 widths of emoji and CJK, as programs reckon them.
116
+ allowProposedApi: true,
117
+ fontFamily: terminal_theme_1.TerminalTheme.fontFamily(cssVariable),
118
+ fontSize: 12,
119
+ lineHeight: 1.2,
120
+ scrollback: SCROLLBACK,
121
+ cursorBlink: true,
122
+ cursorInactiveStyle: 'outline',
123
+ minimumContrastRatio: 4.5,
124
+ drawBoldTextInBrightColors: true,
125
+ rescaleOverlappingGlyphs: true,
126
+ theme: terminal_theme_1.TerminalTheme.of(this.settings.state.theme, cssVariable),
127
+ });
128
+ const unicode = new module.Unicode11Addon();
129
+ term.loadAddon(unicode);
130
+ term.unicode.activeVersion = '11';
131
+ this.fit = new module.FitAddon();
132
+ term.loadAddon(this.fit);
133
+ // Shift+Enter as the kitty keyboard protocol writes it: a new line in the editor of pi (ta), not a send.
134
+ term.attachCustomKeyEventHandler(event => {
135
+ if (event.key === 'Enter' && event.shiftKey && !event.ctrlKey && !event.altKey && !event.metaKey) {
136
+ if (event.type === 'keydown') {
137
+ this.emitData('\x1b[13;2u');
138
+ }
139
+ return false;
140
+ }
141
+ return true;
142
+ });
143
+ term.onData(data => this.emitData(data));
144
+ // Mouse reports in the old encoding, bytes over 127: as characters, which the server sends as they are.
145
+ term.onBinary(data => this.emitData(data));
146
+ term.onResize(size => {
147
+ this.cols = size.cols;
148
+ this.rows = size.rows;
149
+ for (const listener of this.resizeListeners) {
150
+ listener(size);
151
+ }
152
+ });
153
+ term.parser.registerOscHandler(7, data => {
154
+ var _a;
155
+ this.cwd = (_a = terminal_links_1.TerminalLinkUtil.cwdOf(data)) !== null && _a !== void 0 ? _a : this.cwd;
156
+ return true;
157
+ });
158
+ term.registerLinkProvider({ provideLinks: (y, callback) => callback(this.linksAt(term, y)) });
159
+ for (const data of this.pending) {
160
+ term.write(data);
161
+ }
162
+ this.pending = [];
163
+ this.term = term;
164
+ this.unsubscribe = this.settings.subscribe(state => {
165
+ term.options.theme = terminal_theme_1.TerminalTheme.of(state.theme, cssVariable);
166
+ });
167
+ this.open();
168
+ this.layout();
169
+ }
170
+ /**
171
+ * Opens xterm.js where it can measure its font: once, the first time it is in the page with a size
172
+ * (a hidden tab has none; ResizeObserver calls again when it shows).
173
+ */
174
+ open() {
175
+ var _a;
176
+ const { term, module, parent } = this;
177
+ if (!term || !module || this.opened || !(parent === null || parent === void 0 ? void 0 : parent.clientWidth) || !parent.clientHeight) {
178
+ return;
179
+ }
180
+ this.opened = true;
181
+ term.open(this.host);
182
+ const input = this.host.querySelector('.xterm-helper-textarea');
183
+ for (const name of ['autocomplete', 'autocorrect', 'autocapitalize']) {
184
+ input === null || input === void 0 ? void 0 : input.setAttribute(name, 'off');
185
+ }
186
+ input === null || input === void 0 ? void 0 : input.setAttribute('spellcheck', 'false');
187
+ try {
188
+ const webgl = new module.WebglAddon();
189
+ webgl.onContextLoss(() => webgl.dispose());
190
+ term.loadAddon(webgl);
191
+ }
192
+ catch (error) {
193
+ console.warn('No WebGL for the terminal; it draws with the DOM:', error);
194
+ }
195
+ // After the renderer: WebGL measures characters otherwise than the DOM, so the size it fits differs.
196
+ (_a = this.fit) === null || _a === void 0 ? void 0 : _a.fit();
197
+ if (this.wantsFocus) {
198
+ this.wantsFocus = false;
199
+ term.focus();
200
+ }
201
+ }
202
+ /**
203
+ * Opens it the first time its view has a size, and fits it to the view after that, once the size
204
+ * settled; a hidden view (no size) keeps the size it had. Timers, not frames: a window in the
205
+ * background gets no frames, and the terminal would stay unopened there.
206
+ */
207
+ layout() {
208
+ var _a;
209
+ if (!((_a = this.parent) === null || _a === void 0 ? void 0 : _a.clientWidth) || !this.parent.clientHeight) {
210
+ return;
211
+ }
212
+ if (!this.opened) {
213
+ this.open();
214
+ return;
215
+ }
216
+ clearTimeout(this.fitTimer);
217
+ this.fitTimer = setTimeout(() => {
218
+ var _a, _b, _c, _d, _e;
219
+ const size = ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.clientWidth) && this.parent.clientHeight ? (_b = this.fit) === null || _b === void 0 ? void 0 : _b.proposeDimensions() : undefined;
220
+ if (size && (size.cols !== ((_c = this.term) === null || _c === void 0 ? void 0 : _c.cols) || size.rows !== ((_d = this.term) === null || _d === void 0 ? void 0 : _d.rows))) {
221
+ (_e = this.fit) === null || _e === void 0 ? void 0 : _e.fit();
222
+ }
223
+ }, FIT_MS);
224
+ }
225
+ /** The links of the line (with the rows it wraps onto) that crosses row `y` (from 1). */
226
+ linksAt(term, y) {
227
+ var _a;
228
+ var _b;
229
+ const buffer = term.buffer.active;
230
+ let first = y - 1;
231
+ while (first > 0 && y - 1 - first < MAX_WRAPPED_ROWS && ((_a = buffer.getLine(first)) === null || _a === void 0 ? void 0 : _a.isWrapped)) {
232
+ first--;
233
+ }
234
+ // The text of the line, and where each of its characters (UTF-16 units) is on the screen.
235
+ let text = '';
236
+ const places = [];
237
+ for (let row = first; row - first < MAX_WRAPPED_ROWS; row++) {
238
+ const line = buffer.getLine(row);
239
+ if (!line || (row > first && !line.isWrapped)) {
240
+ break;
241
+ }
242
+ for (let x = 0; x < line.length; x++) {
243
+ const cell = line.getCell(x);
244
+ const width = (_b = cell === null || cell === void 0 ? void 0 : cell.getWidth()) !== null && _b !== void 0 ? _b : 1;
245
+ if (!cell || width === 0) {
246
+ // The second half of a wide character.
247
+ continue;
248
+ }
249
+ const chars = cell.getChars() || ' ';
250
+ for (let unit = 0; unit < chars.length; unit++) {
251
+ places.push({ x: x + 1, y: row + 1, width });
252
+ }
253
+ text += chars;
254
+ }
255
+ }
256
+ const links = terminal_links_1.TerminalLinkUtil.find(text).filter(link => places[link.start].y <= y && places[link.end - 1].y >= y);
257
+ if (!links.length) {
258
+ return undefined;
259
+ }
260
+ const mac = agent_settings_1.ShortcutUtil.isMac();
261
+ return links.map(link => {
262
+ const start = places[link.start];
263
+ const last = places[link.end - 1];
264
+ const hint = link.target.type === 'path'
265
+ ? mac
266
+ ? 'ta.terminal.openLinkMac'
267
+ : 'ta.terminal.openLink'
268
+ : mac
269
+ ? 'ta.terminal.openUrlMac'
270
+ : 'ta.terminal.openUrl';
271
+ return {
272
+ range: { start: { x: start.x, y: start.y }, end: { x: last.x + last.width - 1, y: last.y } },
273
+ text: text.slice(link.start, link.end),
274
+ decorations: { underline: true, pointerCursor: true },
275
+ activate: (event) => {
276
+ if (mac ? event.metaKey : event.ctrlKey) {
277
+ this.openLink(link.target, { cwd: this.cwd, external: event.shiftKey && link.target.type !== 'path' });
278
+ }
279
+ },
280
+ hover: () => {
281
+ this.host.title = (0, messages_1.message)(this.settings.state.language, hint);
282
+ },
283
+ leave: () => {
284
+ this.host.title = '';
285
+ },
286
+ };
287
+ });
288
+ }
289
+ detach() {
290
+ var _a;
291
+ (_a = this.observer) === null || _a === void 0 ? void 0 : _a.disconnect();
292
+ this.observer = undefined;
293
+ clearTimeout(this.fitTimer);
294
+ this.host.remove();
295
+ this.parent = undefined;
296
+ }
297
+ emitData(data) {
298
+ for (const listener of this.dataListeners) {
299
+ listener(data);
300
+ }
301
+ }
302
+ }
303
+ exports.DefaultWebTerminal = DefaultWebTerminal;
304
+ //# sourceMappingURL=web-terminal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-terminal.js","sourceRoot":"","sources":["../../../src/browser/terminal/web-terminal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import '@xterm/xterm/css/xterm.css';
2
+ export { FitAddon } from '@xterm/addon-fit';
3
+ export { Unicode11Addon } from '@xterm/addon-unicode11';
4
+ export { WebglAddon } from '@xterm/addon-webgl';
5
+ export { Terminal } from '@xterm/xterm';
6
+ //# sourceMappingURL=xterm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xterm.d.ts","sourceRoot":"","sources":["../../../src/browser/terminal/xterm.ts"],"names":[],"mappings":"AACA,OAAO,4BAA4B,CAAC;AAKpC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Terminal = exports.WebglAddon = exports.Unicode11Addon = exports.FitAddon = void 0;
4
+ // What a terminal loads the first time one is made: xterm.js, its WebGL renderer and its styles.
5
+ require("@xterm/xterm/css/xterm.css");
6
+ const canvas_font_1 = require("./canvas-font");
7
+ canvas_font_1.CanvasFontFix.install();
8
+ var addon_fit_1 = require("@xterm/addon-fit");
9
+ Object.defineProperty(exports, "FitAddon", { enumerable: true, get: function () { return addon_fit_1.FitAddon; } });
10
+ var addon_unicode11_1 = require("@xterm/addon-unicode11");
11
+ Object.defineProperty(exports, "Unicode11Addon", { enumerable: true, get: function () { return addon_unicode11_1.Unicode11Addon; } });
12
+ var addon_webgl_1 = require("@xterm/addon-webgl");
13
+ Object.defineProperty(exports, "WebglAddon", { enumerable: true, get: function () { return addon_webgl_1.WebglAddon; } });
14
+ var xterm_1 = require("@xterm/xterm");
15
+ Object.defineProperty(exports, "Terminal", { enumerable: true, get: function () { return xterm_1.Terminal; } });
16
+ //# sourceMappingURL=xterm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xterm.js","sourceRoot":"","sources":["../../../src/browser/terminal/xterm.ts"],"names":[],"mappings":";;;AAAA,iGAAiG;AACjG,sCAAoC;AACpC,+CAA8C;AAE9C,2BAAa,CAAC,OAAO,EAAE,CAAC;AAExB,8CAA4C;AAAnC,qGAAA,QAAQ,OAAA;AACjB,0DAAwD;AAA/C,iHAAA,cAAc,OAAA;AACvB,kDAAgD;AAAvC,yGAAA,UAAU,OAAA;AACnB,sCAAwC;AAA/B,iGAAA,QAAQ,OAAA"}
@@ -0,0 +1,44 @@
1
+ /** What Ta Desktop can do for the page beyond a tab of a browser. */
2
+ export type DesktopFeature = 'webview' | 'debugWebview' | 'showItemInFolder' | 'browserData';
3
+ /** The file manager of the system, from Ta Desktop: {@link WebDesktop} of the extension API. */
4
+ export interface DesktopFileManager {
5
+ /** Node's `process.platform` of the machine: what the file manager is called there. */
6
+ readonly platform: string;
7
+ showItemInFolder(path: string): Promise<void>;
8
+ readonly browserData?: DesktopBrowserData;
9
+ }
10
+ /** A profile of the user's Chrome, Edge…, whose sign-ins Ta Desktop can take. */
11
+ export interface DesktopBrowserProfile {
12
+ id: string;
13
+ browser: string;
14
+ name: string;
15
+ }
16
+ /** What an import took; `appBound`: cookies only Chrome itself can read (Windows). */
17
+ export interface DesktopBrowserImport {
18
+ imported: number;
19
+ skipped: number;
20
+ appBound: number;
21
+ }
22
+ /** The sign-ins of the user's browsers in the browser of Ta: {@link WebBrowserData} of the extension API. */
23
+ export interface DesktopBrowserData {
24
+ profiles(): Promise<DesktopBrowserProfile[]>;
25
+ /** After the user said yes in a dialog of the app; `undefined` when they said no. */
26
+ import(profileId: string): Promise<DesktopBrowserImport | undefined>;
27
+ clear(): Promise<void>;
28
+ }
29
+ /** A command of the DevTools protocol to the page of a `<webview>` of this page, by its getWebContentsId(). */
30
+ export type DebugWebview = (webContentsId: number, method: string, params?: Record<string, unknown>) => Promise<unknown>;
31
+ /**
32
+ * Ta Desktop gives its window's page `taDesktop` (its preload, apps/ta-desktop): the features it adds to
33
+ * what a browser can do. A browser, an installed web app and the mobile app have none.
34
+ */
35
+ export declare namespace DesktopUtil {
36
+ function has(feature: DesktopFeature, scope?: object): boolean;
37
+ /** The file manager of the system, when the page is in Ta Desktop. */
38
+ function fileManager(scope?: object): DesktopFileManager | undefined;
39
+ /** The sign-ins of the user's browsers, where Ta Desktop can read them (macOS, Windows). */
40
+ function browserData(scope?: object): DesktopBrowserData | undefined;
41
+ /** `debugWebview` of Ta Desktop; `undefined` elsewhere. */
42
+ function debugWebview(scope?: object): DebugWebview | undefined;
43
+ }
44
+ //# sourceMappingURL=desktop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"desktop.d.ts","sourceRoot":"","sources":["../../../src/browser/util/desktop.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,cAAc,GAAG,kBAAkB,GAAG,aAAa,CAAC;AAE7F,gGAAgG;AAChG,MAAM,WAAW,kBAAkB;IAC/B,uFAAuF;IACvF,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,QAAQ,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAC;CAC7C;AAED,iFAAiF;AACjF,MAAM,WAAW,qBAAqB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,sFAAsF;AACtF,MAAM,WAAW,oBAAoB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,6GAA6G;AAC7G,MAAM,WAAW,kBAAkB;IAC/B,QAAQ,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC7C,qFAAqF;IACrF,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC,CAAC;IACrE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED,+GAA+G;AAC/G,MAAM,MAAM,YAAY,GAAG,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAYzH;;;GAGG;AACH,yBAAiB,WAAW,CAAC;IACzB,SAAgB,GAAG,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,GAAE,MAAmB,GAAG,OAAO,CAGhF;IAED,sEAAsE;IACtE,SAAgB,WAAW,CAAC,KAAK,GAAE,MAAmB,GAAG,kBAAkB,GAAG,SAAS,CAWtF;IAED,4FAA4F;IAC5F,SAAgB,WAAW,CAAC,KAAK,GAAE,MAAmB,GAAG,kBAAkB,GAAG,SAAS,CAgBtF;IAED,2DAA2D;IAC3D,SAAgB,YAAY,CAAC,KAAK,GAAE,MAAmB,GAAG,YAAY,GAAG,SAAS,CAIjF;CACJ"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DesktopUtil = void 0;
4
+ /**
5
+ * Ta Desktop gives its window's page `taDesktop` (its preload, apps/ta-desktop): the features it adds to
6
+ * what a browser can do. A browser, an installed web app and the mobile app have none.
7
+ */
8
+ var DesktopUtil;
9
+ (function (DesktopUtil) {
10
+ function has(feature, scope = globalThis) {
11
+ var _a;
12
+ const features = (_a = scope.taDesktop) === null || _a === void 0 ? void 0 : _a.features;
13
+ return Array.isArray(features) && features.includes(feature);
14
+ }
15
+ DesktopUtil.has = has;
16
+ /** The file manager of the system, when the page is in Ta Desktop. */
17
+ function fileManager(scope = globalThis) {
18
+ const desktop = scope.taDesktop;
19
+ const show = desktop === null || desktop === void 0 ? void 0 : desktop.showItemInFolder;
20
+ if (!has('showItemInFolder', scope) || typeof show !== 'function') {
21
+ return undefined;
22
+ }
23
+ return Object.freeze({
24
+ platform: typeof (desktop === null || desktop === void 0 ? void 0 : desktop.platform) === 'string' ? desktop.platform : 'unknown',
25
+ showItemInFolder: (path) => Promise.resolve(show(path)).then(() => undefined),
26
+ browserData: browserData(scope),
27
+ });
28
+ }
29
+ DesktopUtil.fileManager = fileManager;
30
+ /** The sign-ins of the user's browsers, where Ta Desktop can read them (macOS, Windows). */
31
+ function browserData(scope = globalThis) {
32
+ var _a;
33
+ const data = (_a = scope.taDesktop) === null || _a === void 0 ? void 0 : _a.browserData;
34
+ const { profiles, import: take, clear } = data !== null && data !== void 0 ? data : {};
35
+ if (!has('browserData', scope) || typeof profiles !== 'function' || typeof take !== 'function' || typeof clear !== 'function') {
36
+ return undefined;
37
+ }
38
+ return Object.freeze({
39
+ profiles: async () => { var _a; return (_a = (await profiles())) !== null && _a !== void 0 ? _a : []; },
40
+ import: async (profileId) => {
41
+ const report = (await take(profileId));
42
+ return 'cancelled' in report ? undefined : report;
43
+ },
44
+ clear: async () => {
45
+ await clear();
46
+ },
47
+ });
48
+ }
49
+ DesktopUtil.browserData = browserData;
50
+ /** `debugWebview` of Ta Desktop; `undefined` elsewhere. */
51
+ function debugWebview(scope = globalThis) {
52
+ const desktop = scope.taDesktop;
53
+ const debug = desktop === null || desktop === void 0 ? void 0 : desktop.debugWebview;
54
+ return has('debugWebview', scope) && typeof debug === 'function' ? (webContentsId, method, params) => debug(webContentsId, method, params) : undefined;
55
+ }
56
+ DesktopUtil.debugWebview = debugWebview;
57
+ })(DesktopUtil || (exports.DesktopUtil = DesktopUtil = {}));
58
+ //# sourceMappingURL=desktop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"desktop.js","sourceRoot":"","sources":["../../../src/browser/util/desktop.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=desktop.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"desktop.spec.d.ts","sourceRoot":"","sources":["../../../src/browser/util/desktop.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const bun_test_1 = require("bun:test");
4
+ const desktop_1 = require("./desktop");
5
+ (0, bun_test_1.describe)('DesktopUtil', () => {
6
+ (0, bun_test_1.it)('reads the features Ta Desktop gives its page', () => {
7
+ (0, bun_test_1.expect)(desktop_1.DesktopUtil.has('webview', { taDesktop: { features: ['webview'] } })).toBe(true);
8
+ (0, bun_test_1.expect)(desktop_1.DesktopUtil.has('debugWebview', { taDesktop: { features: ['webview'] } })).toBe(false);
9
+ });
10
+ (0, bun_test_1.it)('has none in a browser, or from what is not a list', () => {
11
+ (0, bun_test_1.expect)(desktop_1.DesktopUtil.has('webview', {})).toBe(false);
12
+ (0, bun_test_1.expect)(desktop_1.DesktopUtil.has('webview', { taDesktop: {} })).toBe(false);
13
+ (0, bun_test_1.expect)(desktop_1.DesktopUtil.has('webview', { taDesktop: { features: 'webview' } })).toBe(false);
14
+ (0, bun_test_1.expect)(desktop_1.DesktopUtil.has('webview')).toBe(false);
15
+ });
16
+ (0, bun_test_1.it)('gives the file manager of Ta Desktop, and none without it', async () => {
17
+ const shown = [];
18
+ const scope = { taDesktop: { features: ['showItemInFolder'], platform: 'darwin', showItemInFolder: async (path) => shown.push(path) } };
19
+ const manager = desktop_1.DesktopUtil.fileManager(scope);
20
+ (0, bun_test_1.expect)(manager === null || manager === void 0 ? void 0 : manager.platform).toBe('darwin');
21
+ await (manager === null || manager === void 0 ? void 0 : manager.showItemInFolder('/work/app'));
22
+ (0, bun_test_1.expect)(shown).toEqual(['/work/app']);
23
+ (0, bun_test_1.expect)(desktop_1.DesktopUtil.fileManager({ taDesktop: { features: ['webview'], showItemInFolder: () => undefined } })).toBeUndefined();
24
+ (0, bun_test_1.expect)(desktop_1.DesktopUtil.fileManager({})).toBeUndefined();
25
+ });
26
+ (0, bun_test_1.it)('takes the sign-ins of browsers through the app, and tells a refusal as nothing', async () => {
27
+ var _a, _b;
28
+ const asked = [];
29
+ const taDesktop = {
30
+ features: ['showItemInFolder', 'browserData'],
31
+ showItemInFolder: () => undefined,
32
+ browserData: {
33
+ profiles: async () => [{ id: 'chrome:Default', browser: 'Google Chrome', name: 'Work' }],
34
+ import: async (id) => {
35
+ asked.push(id);
36
+ return id === 'no' ? { cancelled: true } : { imported: 3, skipped: 1, appBound: 0 };
37
+ },
38
+ clear: async () => 'cleared',
39
+ },
40
+ };
41
+ const data = (_a = desktop_1.DesktopUtil.fileManager({ taDesktop })) === null || _a === void 0 ? void 0 : _a.browserData;
42
+ (0, bun_test_1.expect)(await (data === null || data === void 0 ? void 0 : data.profiles())).toEqual([{ id: 'chrome:Default', browser: 'Google Chrome', name: 'Work' }]);
43
+ (0, bun_test_1.expect)(await (data === null || data === void 0 ? void 0 : data.import('chrome:Default'))).toEqual({ imported: 3, skipped: 1, appBound: 0 });
44
+ (0, bun_test_1.expect)(await (data === null || data === void 0 ? void 0 : data.import('no'))).toBeUndefined();
45
+ (0, bun_test_1.expect)(await (data === null || data === void 0 ? void 0 : data.clear())).toBeUndefined();
46
+ (0, bun_test_1.expect)(asked).toEqual(['chrome:Default', 'no']);
47
+ (0, bun_test_1.expect)(desktop_1.DesktopUtil.browserData({ taDesktop: { ...taDesktop, features: ['showItemInFolder'] } })).toBeUndefined();
48
+ (0, bun_test_1.expect)((_b = desktop_1.DesktopUtil.fileManager({ taDesktop: { ...taDesktop, features: ['showItemInFolder'] } })) === null || _b === void 0 ? void 0 : _b.browserData).toBeUndefined();
49
+ });
50
+ (0, bun_test_1.it)('sends commands to a webview through the app, only when it says it can', async () => {
51
+ const calls = [];
52
+ const taDesktop = {
53
+ features: ['webview', 'debugWebview'],
54
+ debugWebview: async (...args) => {
55
+ calls.push(args);
56
+ return { ok: 1 };
57
+ },
58
+ };
59
+ const debug = desktop_1.DesktopUtil.debugWebview({ taDesktop });
60
+ (0, bun_test_1.expect)(await (debug === null || debug === void 0 ? void 0 : debug(3, 'Runtime.evaluate', { expression: '1' }))).toEqual({ ok: 1 });
61
+ (0, bun_test_1.expect)(calls).toEqual([[3, 'Runtime.evaluate', { expression: '1' }]]);
62
+ (0, bun_test_1.expect)(desktop_1.DesktopUtil.debugWebview({ taDesktop: { features: ['webview'], debugWebview: taDesktop.debugWebview } })).toBeUndefined();
63
+ (0, bun_test_1.expect)(desktop_1.DesktopUtil.debugWebview({ taDesktop: { features: ['debugWebview'] } })).toBeUndefined();
64
+ (0, bun_test_1.expect)(desktop_1.DesktopUtil.debugWebview({})).toBeUndefined();
65
+ });
66
+ });
67
+ //# sourceMappingURL=desktop.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"desktop.spec.js","sourceRoot":"","sources":["../../../src/browser/util/desktop.spec.ts"],"names":[],"mappings":";;AAAA,uCAAgD;AAChD,uCAAwC;AAExC,IAAA,mBAAQ,EAAC,aAAa,EAAE,GAAG,EAAE;IACzB,IAAA,aAAE,EAAC,8CAA8C,EAAE,GAAG,EAAE;QACpD,IAAA,iBAAM,EAAC,qBAAW,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxF,IAAA,iBAAM,EAAC,qBAAW,CAAC,GAAG,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClG,CAAC,CAAC,CAAC;IAEH,IAAA,aAAE,EAAC,mDAAmD,EAAE,GAAG,EAAE;QACzD,IAAA,iBAAM,EAAC,qBAAW,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnD,IAAA,iBAAM,EAAC,qBAAW,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClE,IAAA,iBAAM,EAAC,qBAAW,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvF,IAAA,iBAAM,EAAC,qBAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,IAAA,aAAE,EAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACvE,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,kBAAkB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAE,KAAK,EAAE,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QAChJ,MAAM,OAAO,GAAG,qBAAW,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAA,iBAAM,EAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzC,OAAM,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,gBAAgB,CAAC,WAAW,CAAC,CAAA,CAAC;QAC7C,IAAA,iBAAM,EAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QACrC,IAAA,iBAAM,EAAC,qBAAW,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,gBAAgB,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QAC7H,IAAA,iBAAM,EAAC,qBAAW,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,IAAA,aAAE,EAAC,gFAAgF,EAAE,KAAK,IAAI,EAAE;;QAC5F,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG;YACd,QAAQ,EAAE,CAAC,kBAAkB,EAAE,aAAa,CAAC;YAC7C,gBAAgB,EAAE,GAAG,EAAE,CAAC,SAAS;YACjC,WAAW,EAAE;gBACT,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,gBAAgB,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;gBACxF,MAAM,EAAE,KAAK,EAAE,EAAU,EAAE,EAAE;oBACzB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACf,OAAO,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;gBACxF,CAAC;gBACD,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC,SAAS;aAC/B;SACJ,CAAC;QACF,MAAM,IAAI,GAAG,MAAA,qBAAW,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,CAAC,0CAAE,WAAW,CAAC;QACjE,IAAA,iBAAM,EAAC,OAAM,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,EAAE,CAAA,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,gBAAgB,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QAC3G,IAAA,iBAAM,EAAC,OAAM,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAC,gBAAgB,CAAC,CAAA,CAAC,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/F,IAAA,iBAAM,EAAC,OAAM,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAC,IAAI,CAAC,CAAA,CAAC,CAAC,aAAa,EAAE,CAAC;QACjD,IAAA,iBAAM,EAAC,OAAM,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,EAAE,CAAA,CAAC,CAAC,aAAa,EAAE,CAAC;QAC5C,IAAA,iBAAM,EAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC,CAAC;QAChD,IAAA,iBAAM,EAAC,qBAAW,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,EAAE,GAAG,SAAS,EAAE,QAAQ,EAAE,CAAC,kBAAkB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QACjH,IAAA,iBAAM,EAAC,MAAA,qBAAW,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,EAAE,GAAG,SAAS,EAAE,QAAQ,EAAE,CAAC,kBAAkB,CAAC,EAAE,EAAE,CAAC,0CAAE,WAAW,CAAC,CAAC,aAAa,EAAE,CAAC;IAClI,CAAC,CAAC,CAAC;IAEH,IAAA,aAAE,EAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;QACnF,MAAM,KAAK,GAAgB,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAG;YACd,QAAQ,EAAE,CAAC,SAAS,EAAE,cAAc,CAAC;YACrC,YAAY,EAAE,KAAK,EAAE,GAAG,IAAe,EAAE,EAAE;gBACvC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACjB,OAAO,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;YACrB,CAAC;SACJ,CAAC;QACF,MAAM,KAAK,GAAG,qBAAW,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;QACtD,IAAA,iBAAM,EAAC,OAAM,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,CAAC,EAAE,kBAAkB,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAA,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;QACrF,IAAA,iBAAM,EAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QACtE,IAAA,iBAAM,EAAC,qBAAW,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,YAAY,EAAE,SAAS,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QACjI,IAAA,iBAAM,EAAC,qBAAW,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QAChG,IAAA,iBAAM,EAAC,qBAAW,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;IACzD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -0,0 +1,27 @@
1
+ /** Files of a directory dragged from a view (the explorer): {@link WebFileDrag} of the extension API. */
2
+ export interface DraggedFiles {
3
+ /** The directory they are of: a path of the machine of ta serve, or `ssh://` (TaLocation). */
4
+ cwd: string;
5
+ /** Relative to `cwd`, with `/`; '' for `cwd` itself. */
6
+ paths: string[];
7
+ }
8
+ /**
9
+ * Files on a drag between the views of the page: their own type, read on a drop; and their paths as text,
10
+ * for what is not of the page (a native field, another app).
11
+ */
12
+ export declare namespace FileDragUtil {
13
+ const TYPE = "application/x-ta-files";
14
+ function set(dataTransfer: DataTransfer, files: DraggedFiles): void;
15
+ /** Whether a drag holds files: all that `dragover` can tell. */
16
+ function has(dataTransfer: Pick<DataTransfer, 'types'>): boolean;
17
+ /** The files of a drop; undefined when it holds none. */
18
+ function get(dataTransfer: Pick<DataTransfer, 'getData'>): DraggedFiles | undefined;
19
+ /** The paths inside their machine, as a terminal there takes them. */
20
+ function paths(files: DraggedFiles): string[];
21
+ /**
22
+ * The files as `@` references of a conversation in `cwd`: relative to it when they are inside it, on the
23
+ * same machine; else their paths there.
24
+ */
25
+ function references(files: DraggedFiles, cwd: string | undefined): string;
26
+ }
27
+ //# sourceMappingURL=file-drag.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-drag.d.ts","sourceRoot":"","sources":["../../../src/browser/util/file-drag.ts"],"names":[],"mappings":"AAGA,yGAAyG;AACzG,MAAM,WAAW,YAAY;IACzB,8FAA8F;IAC9F,GAAG,EAAE,MAAM,CAAC;IACZ,wDAAwD;IACxD,KAAK,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;GAGG;AACH,yBAAiB,YAAY,CAAC;IACnB,MAAM,IAAI,2BAA2B,CAAC;IAE7C,SAAgB,GAAG,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAIzE;IAED,gEAAgE;IAChE,SAAgB,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,GAAG,OAAO,CAEtE;IAED,yDAAyD;IACzD,SAAgB,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,GAAG,YAAY,GAAG,SAAS,CAWzF;IAED,sEAAsE;IACtE,SAAgB,KAAK,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,EAAE,CAUnD;IAED;;;OAGG;IACH,SAAgB,UAAU,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAgB/E;CACJ"}