@celljs/ta-web 4.6.1 → 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 (361) hide show
  1. package/README.en.md +90 -0
  2. package/README.md +13 -7
  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/account-menu.d.ts +3 -2
  13. package/esm/browser/components/account-menu.js +21 -16
  14. package/esm/browser/components/account-menu.js.map +1 -1
  15. package/esm/browser/components/app-view.js +13 -4
  16. package/esm/browser/components/app-view.js.map +1 -1
  17. package/esm/browser/components/chat-list.d.ts +3 -1
  18. package/esm/browser/components/chat-list.js +6 -1
  19. package/esm/browser/components/chat-list.js.map +1 -1
  20. package/esm/browser/components/composer-box.d.ts +6 -0
  21. package/esm/browser/components/composer-box.js +50 -13
  22. package/esm/browser/components/composer-box.js.map +1 -1
  23. package/esm/browser/components/composer.js +1 -1
  24. package/esm/browser/components/composer.js.map +1 -1
  25. package/esm/browser/components/dialog-view.d.ts +4 -1
  26. package/esm/browser/components/dialog-view.js +11 -7
  27. package/esm/browser/components/dialog-view.js.map +1 -1
  28. package/esm/browser/components/folder-picker.d.ts +37 -6
  29. package/esm/browser/components/folder-picker.js +155 -33
  30. package/esm/browser/components/folder-picker.js.map +1 -1
  31. package/esm/browser/components/notice-center.js +3 -1
  32. package/esm/browser/components/notice-center.js.map +1 -1
  33. package/esm/browser/components/remote-hosts.d.ts +7 -0
  34. package/esm/browser/components/remote-hosts.js +94 -0
  35. package/esm/browser/components/remote-hosts.js.map +1 -0
  36. package/esm/browser/components/remote-prompts.d.ts +7 -0
  37. package/esm/browser/components/remote-prompts.js +72 -0
  38. package/esm/browser/components/remote-prompts.js.map +1 -0
  39. package/esm/browser/components/session-view.js +48 -4
  40. package/esm/browser/components/session-view.js.map +1 -1
  41. package/esm/browser/components/settings-view.js +8 -1
  42. package/esm/browser/components/settings-view.js.map +1 -1
  43. package/esm/browser/components/terminal-art.d.ts +7 -0
  44. package/esm/browser/components/terminal-art.js +12 -0
  45. package/esm/browser/components/terminal-art.js.map +1 -0
  46. package/esm/browser/components/tool-view.js +1 -1
  47. package/esm/browser/components/tool-view.js.map +1 -1
  48. package/esm/browser/components/web-composer.d.ts +4 -1
  49. package/esm/browser/components/web-composer.js +2 -2
  50. package/esm/browser/components/web-composer.js.map +1 -1
  51. package/esm/browser/components/working-directory.js +1 -1
  52. package/esm/browser/components/working-directory.js.map +1 -1
  53. package/esm/browser/extension/icons.js +6 -1
  54. package/esm/browser/extension/icons.js.map +1 -1
  55. package/esm/browser/extension/web-extension-api.d.ts +120 -2
  56. package/esm/browser/extension/web-extensions.d.ts +3 -0
  57. package/esm/browser/extension/web-extensions.js +33 -1
  58. package/esm/browser/extension/web-extensions.js.map +1 -1
  59. package/esm/browser/i18n/locales.d.ts +44 -1
  60. package/esm/browser/i18n/messages.d.ts +43 -0
  61. package/esm/browser/i18n/messages.js +99 -13
  62. package/esm/browser/i18n/messages.js.map +1 -1
  63. package/esm/browser/notices/notices-protocol.d.ts +3 -0
  64. package/esm/browser/notices/notices.d.ts +3 -0
  65. package/esm/browser/notices/notices.js +15 -0
  66. package/esm/browser/notices/notices.js.map +1 -1
  67. package/esm/browser/style/base.d.ts +1 -1
  68. package/esm/browser/style/base.js +6 -1
  69. package/esm/browser/style/base.js.map +1 -1
  70. package/esm/browser/style/conversation.d.ts +1 -1
  71. package/esm/browser/style/conversation.js +16 -1
  72. package/esm/browser/style/conversation.js.map +1 -1
  73. package/esm/browser/style/layout.d.ts +1 -1
  74. package/esm/browser/style/layout.js +53 -15
  75. package/esm/browser/style/layout.js.map +1 -1
  76. package/esm/browser/style/shell.d.ts +1 -1
  77. package/esm/browser/style/shell.js +1 -0
  78. package/esm/browser/style/shell.js.map +1 -1
  79. package/esm/browser/terminal/canvas-font.d.ts +10 -0
  80. package/esm/browser/terminal/canvas-font.js +34 -0
  81. package/esm/browser/terminal/canvas-font.js.map +1 -0
  82. package/esm/browser/terminal/terminal-links.d.ts +18 -0
  83. package/esm/browser/terminal/terminal-links.js +72 -0
  84. package/esm/browser/terminal/terminal-links.js.map +1 -0
  85. package/esm/browser/terminal/terminal-theme.d.ts +8 -0
  86. package/esm/browser/terminal/terminal-theme.js +65 -0
  87. package/esm/browser/terminal/terminal-theme.js.map +1 -0
  88. package/esm/browser/terminal/web-terminal.d.ts +74 -0
  89. package/esm/browser/terminal/web-terminal.js +300 -0
  90. package/esm/browser/terminal/web-terminal.js.map +1 -0
  91. package/esm/browser/terminal/xterm.d.ts +5 -0
  92. package/esm/browser/terminal/xterm.js +9 -0
  93. package/esm/browser/terminal/xterm.js.map +1 -0
  94. package/esm/browser/util/desktop.d.ts +43 -0
  95. package/esm/browser/util/desktop.js +55 -0
  96. package/esm/browser/util/desktop.js.map +1 -0
  97. package/esm/browser/util/file-drag.d.ts +26 -0
  98. package/esm/browser/util/file-drag.js +73 -0
  99. package/esm/browser/util/file-drag.js.map +1 -0
  100. package/esm/browser/util/message.d.ts +1 -0
  101. package/esm/browser/util/message.js +7 -5
  102. package/esm/browser/util/message.js.map +1 -1
  103. package/esm/browser/util/terminal-text.d.ts +33 -0
  104. package/esm/browser/util/terminal-text.js +209 -0
  105. package/esm/browser/util/terminal-text.js.map +1 -0
  106. package/esm/browser/util/tool.js +16 -0
  107. package/esm/browser/util/tool.js.map +1 -1
  108. package/esm/browser/workbench-protocol.d.ts +7 -1
  109. package/esm/browser/workbench-protocol.js.map +1 -1
  110. package/esm/browser/workbench.d.ts +7 -1
  111. package/esm/browser/workbench.js +23 -0
  112. package/esm/browser/workbench.js.map +1 -1
  113. package/lib/browser/chat/chat-protocol.d.ts +4 -0
  114. package/lib/browser/chat/chat-protocol.d.ts.map +1 -1
  115. package/lib/browser/chat/chat-view.d.ts.map +1 -1
  116. package/lib/browser/chat/chat-view.js +4 -1
  117. package/lib/browser/chat/chat-view.js.map +1 -1
  118. package/lib/browser/chat/chat.d.ts +8 -1
  119. package/lib/browser/chat/chat.d.ts.map +1 -1
  120. package/lib/browser/chat/chat.js +34 -15
  121. package/lib/browser/chat/chat.js.map +1 -1
  122. package/lib/browser/chat/chat.spec.js +30 -0
  123. package/lib/browser/chat/chat.spec.js.map +1 -1
  124. package/lib/browser/chat/draft-model.d.ts +16 -0
  125. package/lib/browser/chat/draft-model.d.ts.map +1 -0
  126. package/lib/browser/chat/draft-model.js +90 -0
  127. package/lib/browser/chat/draft-model.js.map +1 -0
  128. package/lib/browser/chat/draft-model.spec.d.ts +2 -0
  129. package/lib/browser/chat/draft-model.spec.d.ts.map +1 -0
  130. package/lib/browser/chat/draft-model.spec.js +31 -0
  131. package/lib/browser/chat/draft-model.spec.js.map +1 -0
  132. package/lib/browser/components/account-menu.d.ts +3 -2
  133. package/lib/browser/components/account-menu.d.ts.map +1 -1
  134. package/lib/browser/components/account-menu.js +21 -16
  135. package/lib/browser/components/account-menu.js.map +1 -1
  136. package/lib/browser/components/app-view.d.ts.map +1 -1
  137. package/lib/browser/components/app-view.js +13 -4
  138. package/lib/browser/components/app-view.js.map +1 -1
  139. package/lib/browser/components/chat-list.d.ts +3 -1
  140. package/lib/browser/components/chat-list.d.ts.map +1 -1
  141. package/lib/browser/components/chat-list.js +6 -1
  142. package/lib/browser/components/chat-list.js.map +1 -1
  143. package/lib/browser/components/composer-box.d.ts +6 -0
  144. package/lib/browser/components/composer-box.d.ts.map +1 -1
  145. package/lib/browser/components/composer-box.js +51 -14
  146. package/lib/browser/components/composer-box.js.map +1 -1
  147. package/lib/browser/components/composer.d.ts.map +1 -1
  148. package/lib/browser/components/composer.js +1 -1
  149. package/lib/browser/components/composer.js.map +1 -1
  150. package/lib/browser/components/dialog-view.d.ts +4 -1
  151. package/lib/browser/components/dialog-view.d.ts.map +1 -1
  152. package/lib/browser/components/dialog-view.js +11 -7
  153. package/lib/browser/components/dialog-view.js.map +1 -1
  154. package/lib/browser/components/folder-picker.d.ts +37 -6
  155. package/lib/browser/components/folder-picker.d.ts.map +1 -1
  156. package/lib/browser/components/folder-picker.js +156 -33
  157. package/lib/browser/components/folder-picker.js.map +1 -1
  158. package/lib/browser/components/folder-picker.spec.js +15 -0
  159. package/lib/browser/components/folder-picker.spec.js.map +1 -1
  160. package/lib/browser/components/notice-center.d.ts.map +1 -1
  161. package/lib/browser/components/notice-center.js +3 -1
  162. package/lib/browser/components/notice-center.js.map +1 -1
  163. package/lib/browser/components/plus-menu.spec.d.ts +2 -0
  164. package/lib/browser/components/plus-menu.spec.d.ts.map +1 -0
  165. package/lib/browser/components/plus-menu.spec.js +18 -0
  166. package/lib/browser/components/plus-menu.spec.js.map +1 -0
  167. package/lib/browser/components/remote-hosts.d.ts +8 -0
  168. package/lib/browser/components/remote-hosts.d.ts.map +1 -0
  169. package/lib/browser/components/remote-hosts.js +130 -0
  170. package/lib/browser/components/remote-hosts.js.map +1 -0
  171. package/lib/browser/components/remote-prompts.d.ts +8 -0
  172. package/lib/browser/components/remote-prompts.d.ts.map +1 -0
  173. package/lib/browser/components/remote-prompts.js +108 -0
  174. package/lib/browser/components/remote-prompts.js.map +1 -0
  175. package/lib/browser/components/session-view.d.ts.map +1 -1
  176. package/lib/browser/components/session-view.js +48 -4
  177. package/lib/browser/components/session-view.js.map +1 -1
  178. package/lib/browser/components/settings-view.d.ts.map +1 -1
  179. package/lib/browser/components/settings-view.js +7 -0
  180. package/lib/browser/components/settings-view.js.map +1 -1
  181. package/lib/browser/components/terminal-art.d.ts +8 -0
  182. package/lib/browser/components/terminal-art.d.ts.map +1 -0
  183. package/lib/browser/components/terminal-art.js +48 -0
  184. package/lib/browser/components/terminal-art.js.map +1 -0
  185. package/lib/browser/components/tool-view.js +1 -1
  186. package/lib/browser/components/tool-view.js.map +1 -1
  187. package/lib/browser/components/web-composer.d.ts +4 -1
  188. package/lib/browser/components/web-composer.d.ts.map +1 -1
  189. package/lib/browser/components/web-composer.js +2 -2
  190. package/lib/browser/components/web-composer.js.map +1 -1
  191. package/lib/browser/components/working-directory.js +1 -1
  192. package/lib/browser/components/working-directory.js.map +1 -1
  193. package/lib/browser/extension/icons.d.ts.map +1 -1
  194. package/lib/browser/extension/icons.js +5 -0
  195. package/lib/browser/extension/icons.js.map +1 -1
  196. package/lib/browser/extension/web-extension-api.d.ts +120 -2
  197. package/lib/browser/extension/web-extension-api.d.ts.map +1 -1
  198. package/lib/browser/extension/web-extensions.d.ts +3 -0
  199. package/lib/browser/extension/web-extensions.d.ts.map +1 -1
  200. package/lib/browser/extension/web-extensions.js +33 -1
  201. package/lib/browser/extension/web-extensions.js.map +1 -1
  202. package/lib/browser/i18n/locales.d.ts +44 -1
  203. package/lib/browser/i18n/locales.d.ts.map +1 -1
  204. package/lib/browser/i18n/messages.d.ts +43 -0
  205. package/lib/browser/i18n/messages.d.ts.map +1 -1
  206. package/lib/browser/i18n/messages.js +99 -13
  207. package/lib/browser/i18n/messages.js.map +1 -1
  208. package/lib/browser/notices/notices-protocol.d.ts +3 -0
  209. package/lib/browser/notices/notices-protocol.d.ts.map +1 -1
  210. package/lib/browser/notices/notices.d.ts +3 -0
  211. package/lib/browser/notices/notices.d.ts.map +1 -1
  212. package/lib/browser/notices/notices.js +15 -0
  213. package/lib/browser/notices/notices.js.map +1 -1
  214. package/lib/browser/notices/notices.spec.js +8 -3
  215. package/lib/browser/notices/notices.spec.js.map +1 -1
  216. package/lib/browser/style/base.d.ts +1 -1
  217. package/lib/browser/style/base.d.ts.map +1 -1
  218. package/lib/browser/style/base.js +6 -1
  219. package/lib/browser/style/base.js.map +1 -1
  220. package/lib/browser/style/conversation.d.ts +1 -1
  221. package/lib/browser/style/conversation.d.ts.map +1 -1
  222. package/lib/browser/style/conversation.js +16 -1
  223. package/lib/browser/style/conversation.js.map +1 -1
  224. package/lib/browser/style/layout.d.ts +1 -1
  225. package/lib/browser/style/layout.d.ts.map +1 -1
  226. package/lib/browser/style/layout.js +53 -15
  227. package/lib/browser/style/layout.js.map +1 -1
  228. package/lib/browser/style/shell.d.ts +1 -1
  229. package/lib/browser/style/shell.d.ts.map +1 -1
  230. package/lib/browser/style/shell.js +1 -0
  231. package/lib/browser/style/shell.js.map +1 -1
  232. package/lib/browser/terminal/canvas-font.d.ts +11 -0
  233. package/lib/browser/terminal/canvas-font.d.ts.map +1 -0
  234. package/lib/browser/terminal/canvas-font.js +37 -0
  235. package/lib/browser/terminal/canvas-font.js.map +1 -0
  236. package/lib/browser/terminal/canvas-font.spec.d.ts +2 -0
  237. package/lib/browser/terminal/canvas-font.spec.d.ts.map +1 -0
  238. package/lib/browser/terminal/canvas-font.spec.js +32 -0
  239. package/lib/browser/terminal/canvas-font.spec.js.map +1 -0
  240. package/lib/browser/terminal/terminal-links.d.ts +19 -0
  241. package/lib/browser/terminal/terminal-links.d.ts.map +1 -0
  242. package/lib/browser/terminal/terminal-links.js +75 -0
  243. package/lib/browser/terminal/terminal-links.js.map +1 -0
  244. package/lib/browser/terminal/terminal-links.spec.d.ts +2 -0
  245. package/lib/browser/terminal/terminal-links.spec.d.ts.map +1 -0
  246. package/lib/browser/terminal/terminal-links.spec.js +30 -0
  247. package/lib/browser/terminal/terminal-links.spec.js.map +1 -0
  248. package/lib/browser/terminal/terminal-theme.d.ts +9 -0
  249. package/lib/browser/terminal/terminal-theme.d.ts.map +1 -0
  250. package/lib/browser/terminal/terminal-theme.js +68 -0
  251. package/lib/browser/terminal/terminal-theme.js.map +1 -0
  252. package/lib/browser/terminal/terminal-theme.spec.d.ts +2 -0
  253. package/lib/browser/terminal/terminal-theme.spec.d.ts.map +1 -0
  254. package/lib/browser/terminal/terminal-theme.spec.js +24 -0
  255. package/lib/browser/terminal/terminal-theme.spec.js.map +1 -0
  256. package/lib/browser/terminal/web-terminal.d.ts +75 -0
  257. package/lib/browser/terminal/web-terminal.d.ts.map +1 -0
  258. package/lib/browser/terminal/web-terminal.js +304 -0
  259. package/lib/browser/terminal/web-terminal.js.map +1 -0
  260. package/lib/browser/terminal/xterm.d.ts +6 -0
  261. package/lib/browser/terminal/xterm.d.ts.map +1 -0
  262. package/lib/browser/terminal/xterm.js +16 -0
  263. package/lib/browser/terminal/xterm.js.map +1 -0
  264. package/lib/browser/util/desktop.d.ts +44 -0
  265. package/lib/browser/util/desktop.d.ts.map +1 -0
  266. package/lib/browser/util/desktop.js +58 -0
  267. package/lib/browser/util/desktop.js.map +1 -0
  268. package/lib/browser/util/desktop.spec.d.ts +2 -0
  269. package/lib/browser/util/desktop.spec.d.ts.map +1 -0
  270. package/lib/browser/util/desktop.spec.js +67 -0
  271. package/lib/browser/util/desktop.spec.js.map +1 -0
  272. package/lib/browser/util/file-drag.d.ts +27 -0
  273. package/lib/browser/util/file-drag.d.ts.map +1 -0
  274. package/lib/browser/util/file-drag.js +76 -0
  275. package/lib/browser/util/file-drag.js.map +1 -0
  276. package/lib/browser/util/file-drag.spec.d.ts +2 -0
  277. package/lib/browser/util/file-drag.spec.d.ts.map +1 -0
  278. package/lib/browser/util/file-drag.spec.js +46 -0
  279. package/lib/browser/util/file-drag.spec.js.map +1 -0
  280. package/lib/browser/util/message.d.ts +1 -0
  281. package/lib/browser/util/message.d.ts.map +1 -1
  282. package/lib/browser/util/message.js +7 -5
  283. package/lib/browser/util/message.js.map +1 -1
  284. package/lib/browser/util/message.spec.js +2 -0
  285. package/lib/browser/util/message.spec.js.map +1 -1
  286. package/lib/browser/util/terminal-text.d.ts +34 -0
  287. package/lib/browser/util/terminal-text.d.ts.map +1 -0
  288. package/lib/browser/util/terminal-text.js +212 -0
  289. package/lib/browser/util/terminal-text.js.map +1 -0
  290. package/lib/browser/util/terminal-text.spec.d.ts +2 -0
  291. package/lib/browser/util/terminal-text.spec.d.ts.map +1 -0
  292. package/lib/browser/util/terminal-text.spec.js +54 -0
  293. package/lib/browser/util/terminal-text.spec.js.map +1 -0
  294. package/lib/browser/util/tool.d.ts.map +1 -1
  295. package/lib/browser/util/tool.js +16 -0
  296. package/lib/browser/util/tool.js.map +1 -1
  297. package/lib/browser/util/tool.spec.js +12 -0
  298. package/lib/browser/util/tool.spec.js.map +1 -1
  299. package/lib/browser/workbench-protocol.d.ts +7 -1
  300. package/lib/browser/workbench-protocol.d.ts.map +1 -1
  301. package/lib/browser/workbench-protocol.js.map +1 -1
  302. package/lib/browser/workbench.d.ts +7 -1
  303. package/lib/browser/workbench.d.ts.map +1 -1
  304. package/lib/browser/workbench.js +23 -0
  305. package/lib/browser/workbench.js.map +1 -1
  306. package/package.json +11 -7
  307. package/src/browser/chat/chat-protocol.ts +4 -0
  308. package/src/browser/chat/chat-view.tsx +5 -1
  309. package/src/browser/chat/chat.spec.ts +31 -0
  310. package/src/browser/chat/chat.ts +36 -14
  311. package/src/browser/chat/draft-model.spec.tsx +31 -0
  312. package/src/browser/chat/draft-model.tsx +63 -0
  313. package/src/browser/components/account-menu.tsx +23 -20
  314. package/src/browser/components/app-view.tsx +12 -3
  315. package/src/browser/components/chat-list.tsx +9 -2
  316. package/src/browser/components/composer-box.tsx +52 -6
  317. package/src/browser/components/composer.tsx +1 -0
  318. package/src/browser/components/dialog-view.tsx +16 -7
  319. package/src/browser/components/folder-picker.spec.ts +17 -0
  320. package/src/browser/components/folder-picker.tsx +221 -39
  321. package/src/browser/components/notice-center.tsx +7 -1
  322. package/src/browser/components/plus-menu.spec.ts +16 -0
  323. package/src/browser/components/remote-hosts.tsx +149 -0
  324. package/src/browser/components/remote-prompts.tsx +111 -0
  325. package/src/browser/components/session-view.tsx +65 -4
  326. package/src/browser/components/settings-view.tsx +8 -0
  327. package/src/browser/components/terminal-art.tsx +21 -0
  328. package/src/browser/components/tool-view.tsx +1 -1
  329. package/src/browser/components/web-composer.tsx +18 -3
  330. package/src/browser/components/working-directory.tsx +1 -1
  331. package/src/browser/extension/icons.ts +10 -0
  332. package/src/browser/extension/web-extension-api.ts +134 -2
  333. package/src/browser/extension/web-extensions.ts +47 -2
  334. package/src/browser/i18n/messages.ts +99 -13
  335. package/src/browser/notices/notices-protocol.ts +3 -0
  336. package/src/browser/notices/notices.spec.ts +9 -3
  337. package/src/browser/notices/notices.ts +17 -1
  338. package/src/browser/style/base.ts +6 -1
  339. package/src/browser/style/conversation.ts +16 -1
  340. package/src/browser/style/layout.ts +53 -15
  341. package/src/browser/style/shell.ts +1 -0
  342. package/src/browser/terminal/canvas-font.spec.ts +29 -0
  343. package/src/browser/terminal/canvas-font.ts +32 -0
  344. package/src/browser/terminal/terminal-links.spec.ts +32 -0
  345. package/src/browser/terminal/terminal-links.ts +75 -0
  346. package/src/browser/terminal/terminal-theme.spec.ts +23 -0
  347. package/src/browser/terminal/terminal-theme.ts +66 -0
  348. package/src/browser/terminal/web-terminal.ts +330 -0
  349. package/src/browser/terminal/xterm.ts +10 -0
  350. package/src/browser/util/desktop.spec.ts +68 -0
  351. package/src/browser/util/desktop.ts +96 -0
  352. package/src/browser/util/file-drag.spec.ts +48 -0
  353. package/src/browser/util/file-drag.ts +78 -0
  354. package/src/browser/util/message.spec.ts +2 -0
  355. package/src/browser/util/message.ts +7 -4
  356. package/src/browser/util/terminal-text.spec.ts +60 -0
  357. package/src/browser/util/terminal-text.ts +223 -0
  358. package/src/browser/util/tool.spec.ts +12 -0
  359. package/src/browser/util/tool.ts +17 -0
  360. package/src/browser/workbench-protocol.ts +8 -0
  361. package/src/browser/workbench.ts +29 -0
@@ -96,6 +96,8 @@ exports.LAYOUT_STYLE = `
96
96
  .ta-run-tokens { display: inline-flex; align-items: center; gap: 8px; flex: none; color: var(--ta-muted); font-size: 12px; font-variant-numeric: tabular-nums; }
97
97
  .ta-run-tokens > span { display: inline-flex; align-items: center; gap: 1px; }
98
98
  .ta-run-line { display: flex; min-width: 0; min-height: 22px; padding-left: 6px; margin-top: -6px; }
99
+ /* Under the open steps of a turn the line is one more step: the same pitch, its dot on the string's line. */
100
+ .ta-thread-item:has(> .ta-message > .ta-process:last-child > .ta-process-steps) + .ta-run-line { margin-top: -18px; padding-left: 4.5px; }
99
101
  .ta-status-waiting::before { background: var(--ta-yellow); }
100
102
  /* On the head of a turn the face of ta already shows that it works. */
101
103
  .ta-turn-head .ta-run-status > .ta-status { display: none; }
@@ -147,6 +149,9 @@ exports.LAYOUT_STYLE = `
147
149
  .ta-plus-line { height: 1px; margin: 5px 8px; border: 0; background: var(--ta-border-muted); flex: none; }
148
150
  .ta-plus-back { display: flex; align-items: center; gap: 6px; width: 100%; height: 34px; margin-bottom: 4px; padding: 0 8px; border: 0; border-bottom: 1px solid var(--ta-border-muted); border-radius: 9px 9px 0 0; background: none; color: var(--ta-secondary); font: inherit; font-size: 12.5px; font-weight: 600; cursor: pointer; }
149
151
  .ta-plus-back:hover { color: var(--ta-text); }
152
+ .ta-plus-search { box-sizing: border-box; width: 100%; height: 32px; margin: 0 0 6px; padding: 0 10px; border: 1px solid var(--ta-border); border-radius: 9px; background: var(--ta-main); color: var(--ta-text); font: inherit; font-size: 13px; outline: none; }
153
+ .ta-plus-search:focus { border-color: var(--ta-border-strong, var(--ta-secondary)); }
154
+ .ta-plus-empty { padding: 10px 8px; color: var(--ta-secondary); font-size: 12.5px; }
150
155
  @keyframes ta-plus-in { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: none; } }
151
156
  .ta-console-composer textarea { padding: 5px 2px; }
152
157
  /* A long placeholder stays on one line, so the empty box keeps its height beside the controls of the +. */
@@ -172,20 +177,25 @@ exports.LAYOUT_STYLE = `
172
177
  .ta-queue-back { align-self: flex-end; color: var(--ta-muted); }
173
178
  .ta-queue-back:hover { color: var(--ta-text); }
174
179
  .ta-account { position: relative; display: grid; place-items: center; width: 40px; height: 40px; flex: none; }
175
- .ta-account-button { position: relative; width: 32px; height: 32px; display: grid; place-items: center; border-radius: 50%; border: 1px solid var(--ta-border-field); background: var(--ta-raised); color: var(--ta-secondary); padding: 0; transition: background 120ms, color 120ms, border-color 120ms; }
176
- .ta-account-button:hover, .ta-account-button.ta-on { color: var(--ta-text); border-color: var(--ta-border-focus); }
177
- .ta-account-dot { position: absolute; right: -1px; bottom: -1px; width: 9px; height: 9px; border-radius: 50%; box-shadow: 0 0 0 2px var(--ta-side); background: var(--ta-muted); }
178
- .ta-account-dot.ta-ok { background: var(--ta-green); }
179
- .ta-account-dot.ta-warn { background: var(--ta-yellow); }
180
- .ta-account-menu { position: absolute; left: calc(100% + 10px); bottom: 0; z-index: 45; width: 264px; display: flex; flex-direction: column; gap: 2px; padding: 6px; border-radius: 12px; border: 1px solid var(--ta-border); background: var(--ta-side); box-shadow: var(--ta-shadow-pop); animation: ta-fade 120ms ease-out; }
181
- .ta-account-head { display: flex; align-items: center; gap: 10px; padding: 6px 8px; min-width: 0; }
182
- .ta-account-figure { width: 32px; height: 32px; flex: none; display: grid; place-items: center; border-radius: 50%; background: var(--ta-raised); color: var(--ta-secondary); }
183
- .ta-account-text { display: flex; flex-direction: column; min-width: 0; line-height: 1.35; }
184
- .ta-account-title { display: flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 600; }
185
- .ta-account-state { display: inline-flex; align-items: center; gap: 4px; font-size: 11.5px; font-weight: 400; color: var(--ta-muted); }
186
- .ta-account-sub { font-size: 11.5px; color: var(--ta-muted); }
180
+ .ta-account-button { position: relative; width: 40px; height: 40px; display: grid; place-items: center; border: 0; border-radius: 10px; background: transparent; padding: 0; transition: background 150ms; }
181
+ .ta-account-button:hover, .ta-account-button.ta-on { background: var(--ta-hover); }
182
+ .ta-account-figure { width: 28px; height: 28px; flex: none; display: grid; place-items: center; border-radius: 50%; background: color-mix(in srgb, var(--ta-green) 14%, var(--ta-main)); color: color-mix(in srgb, var(--ta-green) 75%, var(--ta-text)); font-size: 13px; font-weight: 600; line-height: 1; letter-spacing: 0; user-select: none; }
183
+ .ta-account-figure.ta-large { width: 36px; height: 36px; font-size: 15px; }
184
+ .ta-account-dot { position: absolute; right: 5px; bottom: 5px; width: 8px; height: 8px; border-radius: 50%; background: var(--ta-yellow); box-shadow: 0 0 0 2px var(--ta-side); }
185
+ .ta-account-menu { position: absolute; left: calc(100% + 10px); bottom: 0; z-index: 45; width: 248px; display: flex; flex-direction: column; gap: 2px; padding: 6px; border-radius: 12px; border: 1px solid var(--ta-border); background: var(--ta-side); box-shadow: var(--ta-shadow-pop); animation: ta-fade 120ms ease-out; }
186
+ .ta-account-head { display: flex; align-items: center; gap: 10px; padding: 8px 8px 10px; min-width: 0; }
187
+ .ta-account-text { display: flex; flex-direction: column; gap: 1px; min-width: 0; line-height: 1.35; }
188
+ .ta-account-title { font-size: 13.5px; font-weight: 600; color: var(--ta-text); }
189
+ .ta-account-sub { font-size: 12px; color: var(--ta-muted); }
190
+ .ta-account-service { display: flex; align-items: center; gap: 8px; height: 32px; margin: 0 2px 2px; padding: 0 10px; border-radius: 8px; background: var(--ta-raised); font-size: 12.5px; color: var(--ta-secondary); }
191
+ .ta-account-service-name { flex: 1; min-width: 0; }
192
+ .ta-account-service-state { flex: none; font-size: 12px; color: var(--ta-muted); font-variant-numeric: tabular-nums; }
193
+ .ta-account-state { width: 7px; height: 7px; flex: none; border-radius: 50%; background: var(--ta-muted); }
194
+ .ta-account-state.ta-ok { background: var(--ta-green); box-shadow: 0 0 0 3px color-mix(in srgb, var(--ta-green) 18%, transparent); }
195
+ .ta-account-state.ta-warn { background: var(--ta-yellow); }
187
196
  .ta-account-sep { height: 1px; margin: 4px 2px; background: var(--ta-border-muted); }
188
- .ta-account-item { display: flex; align-items: center; gap: 10px; height: 32px; padding: 0 8px; border: 0; border-radius: 8px; background: transparent; text-align: left; font-size: 13px; color: var(--ta-text); }
197
+ .ta-account-item { display: flex; align-items: center; gap: 10px; height: 32px; padding: 0 10px; border: 0; border-radius: 8px; background: transparent; text-align: left; font-size: 13px; color: var(--ta-text); }
198
+ .ta-account-item > svg, .ta-account-item > .ta-icon { flex: none; color: var(--ta-secondary); }
189
199
  .ta-account-item:hover { background: var(--ta-hover); }
190
200
  .ta-account-item.ta-danger { color: var(--ta-red); }
191
201
  @media (max-width: 860px) {
@@ -253,7 +263,7 @@ exports.LAYOUT_STYLE = `
253
263
  .ta-web-dialog .ta-modal-title { font-size: 16px; }
254
264
  .ta-folder-bar { display: flex; align-items: center; gap: 6px; }
255
265
  .ta-folder-bar .ta-field input { font-family: var(--ta-mono); font-size: 12.5px; }
256
- .ta-folder-list { list-style: none; flex: 1; min-height: 180px; overflow-y: auto; margin: 0; padding: 4px; border: 1px solid var(--ta-border-muted); border-radius: 10px; }
266
+ .ta-folder-list { list-style: none; flex: none; height: min(340px, 44vh); overflow-y: auto; margin: 0; padding: 4px; border: 1px solid var(--ta-border-muted); border-radius: 10px; }
257
267
  .ta-folder-item { display: flex; align-items: center; gap: 10px; width: 100%; height: 34px; padding: 0 10px; border: 0; border-radius: 8px; background: transparent; color: var(--ta-body); font-size: 13px; text-align: left; }
258
268
  .ta-folder-item:hover { background: var(--ta-hover); color: var(--ta-text); }
259
269
  .ta-folder-item > .ta-icon:first-child, .ta-folder-chevron { color: var(--ta-muted); }
@@ -261,7 +271,35 @@ exports.LAYOUT_STYLE = `
261
271
  .ta-folder-item:hover .ta-folder-chevron { opacity: 1; }
262
272
  .ta-folder-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
263
273
  .ta-folder-note { display: flex; justify-content: center; padding: 28px 8px; color: var(--ta-muted); font-size: 12.5px; }
264
- .ta-folder-failed { color: var(--ta-red); font-size: 12.5px; }
274
+ .ta-folder-failed { color: var(--ta-red); font-size: 12.5px; overflow-wrap: anywhere; }
275
+ .ta-folder-note { gap: 8px; align-items: center; }
276
+ .ta-folder-step { color: var(--ta-secondary); }
277
+ .ta-folder-unreachable { display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 36px 16px; text-align: center; font-size: 13px; color: var(--ta-text); }
278
+ .ta-folder-unreachable span { max-width: 100%; color: var(--ta-muted); font-family: var(--ta-mono); font-size: 12px; overflow-wrap: anywhere; }
279
+ /* The machines of the picker: this one, the hosts of ssh, + another */
280
+ .ta-modal.ta-folder { width: min(640px, 100%); }
281
+ .ta-folder-machines { flex-wrap: nowrap; overflow-x: auto; margin: 0; padding: 0 0 2px; gap: 6px; scrollbar-width: none; }
282
+ .ta-folder-machines::-webkit-scrollbar { display: none; }
283
+ .ta-folder-machines .ta-icon-button { flex: none; width: 28px; height: 28px; border-radius: 14px; }
284
+ .ta-folder-add input { width: 230px; height: 28px; padding: 0 11px; border-radius: 14px; border: 1px solid var(--ta-border-field); background: var(--ta-input); color: var(--ta-text); font-size: 12.5px; outline: none; }
285
+ .ta-folder-add input:focus { border-color: var(--ta-border-focus); }
286
+ .ta-folder-add input[aria-invalid='true'] { border-color: var(--ta-red); }
287
+ .ta-folder-add input { width: 300px; }
288
+ .ta-remote-state { display: inline-flex; align-items: center; gap: 6px; }
289
+ .ta-remote-light { width: 7px; height: 7px; border-radius: 50%; background: var(--ta-border-field); flex: none; }
290
+ .ta-remote-light.ta-on { background: var(--ta-green); }
291
+ .ta-remote-dot { width: 6px; height: 6px; border-radius: 50%; background: var(--ta-green); flex: none; }
292
+ /* The host of a directory of another machine, before its name */
293
+ .ta-host-tag { display: inline-flex; align-items: center; flex: none; max-width: 120px; height: 17px; padding: 0 6px; margin-right: 5px; border-radius: 5px; background: var(--ta-hover-strong); color: var(--ta-secondary); font-size: 11px; font-weight: 500; line-height: 17px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; vertical-align: 1px; }
294
+ .ta-cwd-chip .ta-host-tag { margin: 0 0 0 2px; }
295
+ .ta-cwd-chip .ta-ellipsis { min-width: 0; }
296
+ /* What ssh asks, and the line while a host connects */
297
+ .ta-remote-prompt { width: min(440px, 100%); gap: 12px; }
298
+ .ta-remote-prompt .ta-confirm-title { display: flex; align-items: center; gap: 8px; }
299
+ .ta-remote-message { margin: 0; padding: 8px 10px; border-radius: 8px; background: var(--ta-hover); color: var(--ta-body); font-family: var(--ta-mono); font-size: 12px; line-height: 1.5; white-space: pre-wrap; overflow-wrap: anywhere; max-height: 160px; overflow-y: auto; }
300
+ .ta-remote-status { position: fixed; left: 50%; top: calc(12px + env(safe-area-inset-top) + var(--ta-titlebar, 0px)); z-index: 65; transform: translateX(-50%); display: inline-flex; align-items: center; gap: 8px; max-width: calc(100vw - 32px); height: 32px; padding: 0 14px; border-radius: 16px; border: 1px solid var(--ta-border); background: var(--ta-side); box-shadow: var(--ta-shadow-pop); color: var(--ta-secondary); font-size: 12.5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; animation: ta-fade 160ms ease-out; }
301
+ /* The picker says it itself */
302
+ body:has(.ta-folder) .ta-remote-status { display: none; }
265
303
  @media (max-width: 860px) {
266
304
  .ta-modal-scrim { align-items: flex-end; padding: 0; }
267
305
  .ta-modal { max-height: 88dvh; border-radius: 16px 16px 0 0; padding-bottom: calc(14px + env(safe-area-inset-bottom)); animation: ta-up 260ms var(--ta-ease); }
@@ -1 +1 @@
1
- {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../../src/browser/style/layout.ts"],"names":[],"mappings":";;;AAAA,yGAAyG;AAC5F,QAAA,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgX3B,CAAC"}
1
+ {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../../src/browser/style/layout.ts"],"names":[],"mappings":";;;AAAA,yGAAyG;AAC5F,QAAA,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsZ3B,CAAC"}
@@ -1,3 +1,3 @@
1
1
  /** The shell: navigation, main column, panel; the double, cards, notices, overlays, sign-in. */
2
- export declare const SHELL_STYLE = "\n/* Shell: the navigation (rail and chats), the main column, the panel */\n.ta-app { display: flex; height: 100vh; height: 100dvh; background: var(--ta-main); overflow: hidden; }\n.ta-nav { display: flex; flex: none; height: 100%; z-index: 20; }\n.ta-rail { width: 56px; flex: none; display: flex; flex-direction: column; align-items: center; gap: 4px; padding: calc(8px + env(safe-area-inset-top) + var(--ta-titlebar)) 0 calc(10px + env(safe-area-inset-bottom)); background: var(--ta-side); border-right: 1px solid var(--ta-border-muted); }\n.ta-nav:has(> .ta-sidebar) > .ta-rail { border-right-color: transparent; }\n.ta-rail-logo { width: 40px; height: 40px; flex: none; display: grid; place-items: center; border: 0; border-radius: 10px; background: transparent; margin-bottom: 6px; transition: background 150ms; }\n.ta-rail-logo:hover { background: var(--ta-hover); }\n.ta-rail-items { flex: 1; min-height: 0; display: flex; flex-direction: column; align-items: center; gap: 4px; overflow-y: auto; scrollbar-width: none; padding: 0 8px; }\n.ta-rail-item { position: relative; width: 40px; height: 40px; flex: none; display: grid; place-items: center; border: 0; border-radius: 10px; background: transparent; color: var(--ta-muted); transition: background 150ms, color 150ms; }\n.ta-rail-item:hover { background: var(--ta-hover); color: var(--ta-text); }\n.ta-rail-item.ta-active { background: var(--ta-selected); color: var(--ta-text); }\n.ta-rail-status { display: grid; place-items: center; width: 40px; height: 22px; }\n.ta-ok .ta-dot { color: var(--ta-green); }\n.ta-warn .ta-dot { color: var(--ta-yellow); }\n.ta-chats, .ta-side-view { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 6px; min-height: 0; padding: calc(8px + env(safe-area-inset-top) + var(--ta-titlebar)) 8px calc(8px + env(safe-area-inset-bottom)); background: var(--ta-side); border-right: 1px solid var(--ta-border-muted); }\n.ta-chats-head { display: flex; align-items: center; gap: 2px; height: 40px; flex: none; padding: 0 0 0 8px; margin-bottom: 6px; }\n.ta-chats-title { flex: 1; font-size: 14px; font-weight: 600; }\n.ta-panel-cards { display: flex; flex-direction: column; gap: 12px; padding: 12px 12px calc(16px + env(safe-area-inset-bottom)); }\n.ta-side-section { display: flex; align-items: center; gap: 6px; padding: 6px 8px 2px; font-size: 12px; color: var(--ta-muted); }\n.ta-side-scroll { flex: 1; min-height: 0; overflow-y: auto; margin: 0 -4px; padding: 0 4px; }\n.ta-side-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 2px; }\n.ta-side-row { position: relative; display: flex; align-items: center; border-radius: 10px; }\n.ta-side-row:hover, .ta-side-row.ta-selected { background: var(--ta-hover); }\n.ta-side-row.ta-selected { background: var(--ta-selected); }\n.ta-side-item { flex: 1; min-width: 0; display: flex; align-items: center; gap: 10px; width: 100%; padding: 8px 10px; border: 0; border-radius: 10px; background: transparent; text-align: left; transition: background 120ms; }\n.ta-side-list > li > .ta-side-item:hover { background: var(--ta-hover); }\n.ta-side-item-text { flex: 1; min-width: 0; display: flex; flex-direction: column; }\n.ta-side-item-title { font-size: 13.5px; font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n.ta-side-item-sub { font-size: 12px; color: var(--ta-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n.ta-side-item-time { align-self: flex-start; font-size: 11.5px; color: var(--ta-muted); font-variant-numeric: tabular-nums; padding-top: 1px; }\n.ta-side-empty { padding: 8px 10px; font-size: 12.5px; color: var(--ta-muted); }\n.ta-close { position: absolute; right: 4px; opacity: 0; width: 26px; height: 26px; }\n.ta-side-row:hover .ta-close, .ta-close:focus-visible { opacity: 1; }\n.ta-task-status { width: 28px; height: 28px; flex: none; display: grid; place-items: center; border-radius: 50%; background: var(--ta-raised); color: var(--ta-secondary); }\n.ta-task-status-done { color: var(--ta-green); background: color-mix(in srgb, var(--ta-green) 14%, transparent); }\n.ta-task-status-failed { color: var(--ta-red); background: color-mix(in srgb, var(--ta-red) 14%, transparent); }\n.ta-task-status-stopped { color: var(--ta-muted); }\n.ta-task-status .ta-spinner { width: 12px; height: 12px; }\n.ta-main { position: relative; flex: 1; display: flex; flex-direction: column; min-width: 0; min-height: 0; padding-top: var(--ta-titlebar); background: var(--ta-main); }\n.ta-main-head { display: flex; align-items: center; justify-content: center; gap: 8px; height: 56px; padding: 0 12px; padding-top: env(safe-area-inset-top); flex: none; }\n.ta-main-title { flex: 1; display: flex; flex-direction: column; align-items: center; line-height: 1.3; min-width: 0; font-size: 14px; font-weight: 600; }\n.ta-main-sub { font-size: 11.5px; font-weight: 400; color: var(--ta-muted); max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n\n/* The double's chat */\n.ta-chat-scroll { flex: 1; min-height: 0; overflow-y: auto; }\n.ta-chat-col { width: 100%; max-width: calc(var(--ta-col) + 48px); margin: 0 auto; padding: 0 24px; display: flex; flex-direction: column; gap: 16px; }\n.ta-chat-scroll { overflow-anchor: none; }\n.ta-chat-scroll .ta-chat-col { position: relative; padding-top: 12px; padding-bottom: 24px; min-height: 100%; }\n.ta-hero { margin: auto 0; display: flex; flex-direction: column; align-items: center; text-align: center; gap: 8px; padding: 24px 0; animation: ta-in 320ms var(--ta-ease); }\n.ta-hero-center { flex: 1; justify-content: center; }\n.ta-hero h1 { margin: 6px 0 0; font-size: 22px; font-weight: 650; letter-spacing: -0.01em; }\n.ta-hero p { margin: 0; max-width: 440px; text-wrap: balance; color: var(--ta-secondary); font-size: 14px; }\n.ta-hero-steps { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 6px 10px; color: var(--ta-secondary); font-size: 13px; }\n.ta-hero-step { display: inline-flex; align-items: center; gap: 7px; }\n.ta-hero-step-icon { display: inline-flex; align-items: center; justify-content: center; width: 26px; height: 26px; border-radius: 8px; background: color-mix(in srgb, var(--ta-green) 14%, transparent); color: var(--ta-green); }\n.ta-hero-arrow { color: var(--ta-muted); }\n.ta-hero-cards { display: grid; grid-template-columns: repeat(3, minmax(0, 168px)); justify-content: center; gap: 10px; width: 100%; margin-top: 18px; }\n@media (max-width: 560px) { .ta-hero-cards { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; } }\n.ta-hero-card { display: flex; flex-direction: column; gap: 8px; padding: 7px 7px 10px; border: 1px solid var(--ta-border-muted); border-radius: 12px; background: var(--ta-card); color: var(--ta-body); font: inherit; font-size: 13px; text-align: center; transition: border-color 140ms, background 140ms, transform 140ms var(--ta-ease); }\n.ta-hero-card:hover { border-color: color-mix(in srgb, var(--ta-green) 55%, var(--ta-border)); background: var(--ta-hover); color: var(--ta-text); }\n.ta-hero-card:hover .ta-pic-accent { fill: color-mix(in srgb, var(--ta-green) 26%, transparent); }\n.ta-hero-card:active { transform: scale(.98); }\n.ta-hero-card > span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n.ta-pic { display: block; width: 100%; height: auto; border-radius: 8px; }\n.ta-pic-frame { fill: var(--ta-raised); stroke: var(--ta-border-muted); stroke-width: 1; }\n.ta-pic-pane { fill: var(--ta-hover); }\n.ta-pic-line { fill: var(--ta-hover-strong); }\n.ta-pic-box { fill: none; stroke: var(--ta-border); stroke-width: 1; }\n.ta-pic-accent { fill: color-mix(in srgb, var(--ta-green) 16%, transparent); stroke: color-mix(in srgb, var(--ta-green) 70%, transparent); stroke-width: 1; transition: fill 140ms; }\n.ta-pic-mark { fill: var(--ta-green); }\n.ta-pic-soft { opacity: .45; }\n.ta-pic-dot { fill: var(--ta-hover-strong); }\n.ta-pic-plus { fill: color-mix(in srgb, var(--ta-green) 55%, transparent); }\n.ta-pic-bad { fill: color-mix(in srgb, var(--ta-red) 85%, transparent); }\n.ta-pic-ring { fill: color-mix(in srgb, var(--ta-raised) 60%, transparent); stroke: var(--ta-green); stroke-width: 3; }\n.ta-pic-stroke { fill: none; stroke: var(--ta-green); stroke-width: 3.5; stroke-linecap: round; stroke-linejoin: round; }\n.ta-pic-thin { stroke: var(--ta-border); stroke-width: 2; }\n.ta-pic-hand, .ta-pic-tick, .ta-pic-cross { fill: none; stroke: var(--ta-raised); stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }\n.ta-pic-tick-big { stroke: var(--ta-green); stroke-width: 3; }\n.ta-pic-text { fill: var(--ta-green); font-family: var(--ta-mono); font-size: 8px; font-weight: 600; }\n.ta-msg-user { display: flex; flex-direction: column; align-items: flex-end; gap: 6px; animation: ta-in 220ms var(--ta-ease); }\n.ta-msg-bubble { max-width: 78%; padding: 9px 14px; border-radius: 16px 16px 5px 16px; background: var(--ta-user); color: var(--ta-text); white-space: pre-wrap; word-break: break-word; }\n.ta-msg-ta { color: var(--ta-body); line-height: 1.75; display: flex; flex-direction: column; gap: 6px; animation: ta-in 220ms var(--ta-ease); }\n.ta-row { display: flex; align-items: center; gap: 8px; min-height: 30px; padding: 2px 8px; margin: 0 -8px; border-radius: 8px; border: 0; background: transparent; text-align: left; font-size: 13px; color: var(--ta-secondary); }\n.ta-row-task { width: calc(100% + 16px); transition: background 120ms; animation: ta-in 220ms var(--ta-ease); }\n.ta-row-task:hover { background: var(--ta-hover); }\n.ta-row-task .ta-task-status { width: 22px; height: 22px; }\n.ta-row-title { color: var(--ta-text); font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }\n.ta-row-meta, .ta-row-label { color: var(--ta-muted); font-size: 12.5px; flex: none; }\n.ta-row-chevron { margin-left: auto; color: var(--ta-muted); }\n.ta-row-quiet { color: var(--ta-muted); }\n.ta-row-quiet .ta-row-title { font-weight: 400; color: var(--ta-secondary); }\n.ta-composer-area { flex: none; padding-bottom: calc(16px + env(safe-area-inset-bottom)); }\n.ta-composer-area .ta-chat-col { gap: 8px; }\n.ta-attention { display: flex; flex-direction: column; gap: 4px; animation: ta-in 220ms var(--ta-ease); }\n.ta-attention-source { font-size: 12px; color: var(--ta-muted); padding-left: 4px; }\n.ta-mic { height: 30px; min-width: 30px; flex: none; display: inline-grid; place-items: center; padding: 0 8px; border: 0; border-radius: 15px; background: transparent; color: var(--ta-secondary); transition: background 150ms, color 150ms, min-width 200ms var(--ta-ease); }\n.ta-mic:hover { background: var(--ta-hover); color: var(--ta-text); }\n.ta-mic.ta-on { min-width: 48px; background: var(--ta-hover-strong); color: var(--ta-text); }\n.ta-wave { display: inline-flex; align-items: center; gap: 2.5px; height: 14px; }\n.ta-wave i { width: 2.5px; height: 100%; border-radius: 2px; background: currentColor; animation: ta-wave 0.9s ease-in-out infinite; }\n.ta-wave i:nth-child(2) { animation-delay: -0.7s; }\n.ta-wave i:nth-child(3) { animation-delay: -0.45s; }\n.ta-wave i:nth-child(4) { animation-delay: -0.2s; }\n.ta-send { width: 30px; height: 30px; flex: none; border-radius: 50%; border: 0; display: grid; place-items: center; background: var(--ta-brand); color: var(--ta-brand-text); transition: opacity 120ms, transform 120ms; }\n.ta-send:hover:not(:disabled) { opacity: 0.88; }\n.ta-send:active:not(:disabled) { transform: scale(0.94); }\n.ta-send:disabled { opacity: 0.25; cursor: default; }\n.ta-send-stop { background: var(--ta-brand); }\n.ta-avatar { flex: none; display: block; overflow: visible; }\n.ta-dino-lid { transform-box: fill-box; transform-origin: top; transform: scaleY(0); animation: ta-dino-blink 5s ease-in-out infinite; }\n.ta-dino-badge { animation: ta-dino-pop 0.35s var(--ta-ease); }\n.ta-dino-dot { animation: ta-pulse 1.2s ease-in-out infinite; }\n.ta-dino-dot:nth-of-type(2) { animation-delay: 0.2s; }\n.ta-dino-dot:nth-of-type(3) { animation-delay: 0.4s; }\n.ta-dino-bubble, .ta-dino-z, .ta-dino-wave { animation: ta-pulse 2.4s ease-in-out infinite; }\n.ta-dino-bubble:nth-of-type(2), .ta-dino-z:nth-of-type(2), .ta-dino-wave:nth-of-type(2) { animation-delay: 0.4s; }\n.ta-dino-bubble:nth-of-type(3) { animation-delay: 0.8s; }\n\n/* Cards of web extensions */\n.ta-card-widget { min-width: 0; display: flex; flex-direction: column; gap: 8px; padding: 12px 14px; border-radius: 12px; border: 1px solid var(--ta-border); background: var(--ta-card); }\n.ta-card-widget h2 { margin: 0; }\n.ta-card-widget button { white-space: nowrap; }\n\n/* Notices: cards in the bottom right, the newest nearest the corner; on phones from the top. */\n.ta-toasts { position: fixed; right: 16px; bottom: calc(16px + env(safe-area-inset-bottom)); z-index: 70; display: flex; flex-direction: column; justify-content: flex-end; gap: 8px; width: min(360px, calc(100vw - 32px)); pointer-events: none; }\n.ta-toast { pointer-events: auto; display: flex; align-items: flex-start; gap: 10px; padding: 11px 6px 11px 14px; border-radius: 12px; border: 1px solid var(--ta-border); background: var(--ta-side); box-shadow: var(--ta-shadow-pop); font-size: 13px; line-height: 1.5; animation: ta-toast-in 220ms var(--ta-ease); }\n.ta-toast.ta-leaving { animation: ta-toast-out 160ms ease-in forwards; }\n.ta-toast > .ta-level-icon { margin-top: 2px; }\n.ta-toast-text { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; padding-top: 0; }\n.ta-toast-message { color: var(--ta-text); overflow-wrap: anywhere; white-space: pre-wrap; }\n.ta-toast-count { margin-left: 6px; padding: 0 5px; border-radius: 6px; background: var(--ta-chip); color: var(--ta-secondary); font-size: 11px; font-variant-numeric: tabular-nums; }\n.ta-toast-detail { color: var(--ta-secondary); font-size: 12px; overflow-wrap: anywhere; white-space: pre-wrap; }\n.ta-toast-action { align-self: flex-start; margin-top: 6px; height: 26px; padding: 0 10px; border-radius: 7px; border: 1px solid var(--ta-border-field); background: transparent; font-size: 12px; font-weight: 500; transition: background 120ms; }\n.ta-toast-action:hover { background: var(--ta-hover); }\n.ta-toast .ta-toast-close { width: 24px; height: 24px; margin-top: -1px; color: var(--ta-muted); }\n.ta-toast .ta-toast-close svg { width: 14px; height: 14px; }\n@keyframes ta-toast-in { from { transform: translateY(8px) scale(0.98); opacity: 0; } }\n@keyframes ta-toast-out { to { transform: translateX(12px); opacity: 0; } }\n\n/* The connection to ta serve, over the top of the main area while it is down */\n.ta-connection { position: absolute; top: calc(66px + env(safe-area-inset-top) + var(--ta-titlebar)); left: 50%; transform: translateX(-50%); z-index: 15; display: flex; align-items: center; gap: 8px; max-width: calc(100% - 24px); height: 34px; padding: 0 6px 0 12px; border-radius: 17px; border: 1px solid var(--ta-border); background: var(--ta-side); box-shadow: var(--ta-shadow-pop); font-size: 12.5px; color: var(--ta-body); white-space: nowrap; animation: ta-drop 200ms var(--ta-ease); --ta-level: var(--ta-yellow); }\n.ta-connection-back { padding-right: 12px; --ta-level: var(--ta-green); }\n.ta-connection-text { overflow: hidden; text-overflow: ellipsis; min-width: 0; }\n.ta-connection-when { color: var(--ta-muted); font-variant-numeric: tabular-nums; }\n.ta-connection-retry { display: inline-flex; align-items: center; gap: 4px; height: 24px; padding: 0 9px; border-radius: 12px; border: 0; background: var(--ta-chip); color: var(--ta-text); font-size: 12px; font-weight: 500; transition: background 120ms; }\n.ta-connection-retry:hover { background: var(--ta-hover-strong); }\n.ta-connection:not(.ta-connection-back) .ta-level-icon { animation: ta-pulse 2s ease-in-out infinite; }\n@keyframes ta-drop { from { transform: translate(-50%, -8px); opacity: 0; } }\n\n/* A question before going ahead */\n.ta-modal.ta-confirm { width: min(400px, 100%); gap: 6px; padding: 18px 18px 16px; }\n.ta-confirm-title { font-size: 15px; font-weight: 600; }\n.ta-confirm-message { margin: 0; color: var(--ta-secondary); font-size: 13px; line-height: 1.55; white-space: pre-wrap; }\n.ta-confirm .ta-dialog-actions { margin-top: 12px; }\n.ta-modal.ta-ask { width: min(460px, 100%); gap: 12px; }\n.ta-ask .ta-dialog-actions { margin-top: 2px; }\ntextarea.ta-ask-text { height: auto; min-height: 180px; max-height: 50vh; padding: 8px 10px; font-size: 13px; line-height: 1.6; resize: vertical; }\n.ta-button-danger { background: var(--ta-red); border-color: var(--ta-red); color: #fff; }\n.ta-button-danger:hover:not(:disabled) { background: var(--ta-red); opacity: 0.9; }\n\n/* Built-in pages */\n.ta-assistant { flex: 1; min-height: 0; display: flex; }\n.ta-assistant-main { flex: 1; min-width: 0; min-height: 0; display: flex; flex-direction: column; }\n.ta-assistant-body { flex: 1; min-height: 0; display: flex; flex-direction: column; }\n.ta-assistant-chat { flex: 1; display: flex; flex-direction: column; min-width: 0; min-height: 0; }\n.ta-head-spacer { width: 32px; flex: none; }\n.ta-tasks-button .ta-badge { background: var(--ta-accent); }\n.ta-running { display: flex; flex-direction: column; gap: 2px; }\n.ta-msg-ta > .ta-row-task, .ta-running > .ta-row-task, .ta-chat-col > .ta-row-task { width: 100%; max-width: 560px; margin: 0; min-height: 40px; padding: 8px 12px; gap: 10px; border: 1px solid var(--ta-border); border-radius: 12px; background: var(--ta-card); }\n.ta-row-task .ta-row-title { font-size: 13.5px; }\n.ta-row-task .ta-row-chevron { flex: none; }\n.ta-row-activity { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--ta-muted); font-size: 12.5px; }\n.ta-row-activity + .ta-row-meta { font-variant-numeric: tabular-nums; }\n.ta-task-group { display: flex; flex-direction: column; gap: 2px; }\n.ta-task-item { align-items: flex-start; }\n.ta-task-item .ta-status { height: 20px; }\n.ta-assistant-tasks { padding: 8px 10px 12px; display: flex; flex-direction: column; gap: 10px; }\n.ta-assistant-task { display: flex; flex-direction: column; height: 100%; min-height: 0; }\n.ta-assistant-task-bar { display: flex; align-items: center; gap: 10px; min-height: 44px; padding: 0 12px 0 14px; border-bottom: 1px solid var(--ta-border-muted); flex: none; }\n.ta-assistant-task-bar .ta-task-status { width: 22px; height: 22px; }\n.ta-assistant-task-title { flex: 1; min-width: 0; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n.ta-assistant-task .ta-session { min-height: 0; flex: 1; }\n.ta-assistant-task .ta-session-header { min-height: 48px; }\n.ta-assistant-task .ta-session-title { visibility: hidden; }\n\n/* Overlays */\n.ta-overlay-close { position: absolute; inset: 0; border: 0; padding: 0; background: transparent; cursor: default; }\n.ta-scrim { display: none; }\n.ta-hud { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 500; color: var(--ta-muted); }\n.ta-setting-section { display: flex; flex-direction: column; gap: 8px; }\n.ta-setting-section h2 { margin: 0; padding: 0 4px; }\n.ta-setting-card { border-radius: 12px; border: 1px solid var(--ta-border); background: var(--ta-card); overflow: hidden; }\n.ta-setting-row { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 10px 14px; min-height: 48px; }\n.ta-setting-row + .ta-setting-row { border-top: 1px solid var(--ta-border-muted); }\n.ta-setting-row.ta-stacked { flex-direction: column; align-items: stretch; gap: 8px; }\n.ta-setting-row.ta-stacked .ta-setting-control { width: 100%; }\n.ta-setting-row.ta-stacked .ta-segmented { flex: 1; }\n.ta-setting-text { min-width: 0; display: flex; flex-direction: column; gap: 1px; }\n.ta-setting-label { font-size: 13px; font-weight: 500; }\n.ta-setting-description { font-size: 12px; color: var(--ta-muted); overflow-wrap: anywhere; }\n.ta-trusted-add { display: flex; gap: 8px; width: 100%; }\n.ta-trusted-add .ta-input { height: 32px; flex: 1; min-width: 0; }\n.ta-setting-control { display: flex; align-items: center; justify-content: flex-end; flex: none; }\n.ta-segmented { margin: 0; min-width: 0; border: 0; display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; gap: 2px; padding: 3px; border-radius: 10px; background: var(--ta-raised); }\n.ta-segmented button { display: inline-flex; align-items: center; justify-content: center; gap: 6px; height: 28px; border: 0; border-radius: 7px; background: transparent; color: var(--ta-secondary); font-size: 12.5px; font-weight: 500; transition: background 120ms, color 120ms; }\n.ta-segmented button:hover { color: var(--ta-text); }\n.ta-segmented .ta-on { background: var(--ta-card); color: var(--ta-text); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2), 0 0 0 1px var(--ta-border); }\n.ta-switch { appearance: none; -webkit-appearance: none; width: 36px; height: 20px; flex: none; border-radius: 10px; background: var(--ta-hover-strong); position: relative; transition: background 160ms; margin: 0; cursor: pointer; }\n.ta-switch::after { content: ''; position: absolute; top: 2px; left: 2px; width: 16px; height: 16px; border-radius: 50%; background: #fff; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3); transition: transform 180ms var(--ta-ease); }\n.ta-switch:checked { background: var(--ta-green); }\n.ta-switch:checked::after { transform: translateX(16px); }\n\n/* Sign in */\n.ta-signin { min-height: 100vh; min-height: 100dvh; display: grid; place-items: center; padding: 24px; background: var(--ta-main); }\n/*\n * The installed app with its title bar hidden (window controls overlay): the page draws up to the top of\n * the window, and the bar is the colour of the side columns, as theme-color is (useTitlebarColor). Each\n * column starts lower by the height of the bar, which is left empty for the window's buttons, and is\n * where the window is dragged.\n */\n.ta-titlebar { display: none; position: fixed; z-index: 25; left: env(titlebar-area-x, 0); top: env(titlebar-area-y, 0); width: env(titlebar-area-width, 100%); height: var(--ta-titlebar); app-region: drag; -webkit-app-region: drag; }\n@media (display-mode: window-controls-overlay) {\n :root { --ta-titlebar: env(titlebar-area-height, 0px); }\n .ta-titlebar { display: block; }\n /* Above the conversation the bar keeps the colour of the side columns, under the browser's buttons too. */\n .ta-main { background: linear-gradient(var(--ta-side) var(--ta-titlebar), var(--ta-main) 0); }\n}\n.ta-card { width: 100%; max-width: 380px; display: flex; flex-direction: column; align-items: center; gap: 12px; text-align: center; }\n.ta-card h1 { margin: 4px 0 0; font-size: 20px; font-weight: 650; }\n.ta-card p { margin: 0 0 8px; font-size: 13px; color: var(--ta-secondary); }\n\n";
2
+ export declare const SHELL_STYLE = "\n/* Shell: the navigation (rail and chats), the main column, the panel */\n.ta-app { display: flex; height: 100vh; height: 100dvh; background: var(--ta-main); overflow: hidden; }\n.ta-nav { display: flex; flex: none; height: 100%; z-index: 20; }\n.ta-rail { width: 56px; flex: none; display: flex; flex-direction: column; align-items: center; gap: 4px; padding: calc(8px + env(safe-area-inset-top) + var(--ta-titlebar)) 0 calc(10px + env(safe-area-inset-bottom)); background: var(--ta-side); border-right: 1px solid var(--ta-border-muted); }\n.ta-nav:has(> .ta-sidebar) > .ta-rail { border-right-color: transparent; }\n.ta-rail-logo { width: 40px; height: 40px; flex: none; display: grid; place-items: center; border: 0; border-radius: 10px; background: transparent; margin-bottom: 6px; transition: background 150ms; }\n.ta-rail-logo:hover { background: var(--ta-hover); }\n.ta-rail-items { flex: 1; min-height: 0; display: flex; flex-direction: column; align-items: center; gap: 4px; overflow-y: auto; scrollbar-width: none; padding: 0 8px; }\n.ta-rail-item { position: relative; width: 40px; height: 40px; flex: none; display: grid; place-items: center; border: 0; border-radius: 10px; background: transparent; color: var(--ta-muted); transition: background 150ms, color 150ms; }\n.ta-rail-item:hover { background: var(--ta-hover); color: var(--ta-text); }\n.ta-rail-item.ta-active { background: var(--ta-selected); color: var(--ta-text); }\n.ta-rail-status { display: grid; place-items: center; width: 40px; height: 22px; }\n.ta-ok .ta-dot { color: var(--ta-green); }\n.ta-warn .ta-dot { color: var(--ta-yellow); }\n.ta-chats, .ta-side-view { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 6px; min-height: 0; padding: calc(8px + env(safe-area-inset-top) + var(--ta-titlebar)) 8px calc(8px + env(safe-area-inset-bottom)); background: var(--ta-side); border-right: 1px solid var(--ta-border-muted); }\n.ta-chats-head { display: flex; align-items: center; gap: 2px; height: 40px; flex: none; padding: 0 0 0 8px; margin-bottom: 6px; }\n.ta-chats-title { flex: 1; font-size: 14px; font-weight: 600; }\n.ta-panel-cards { display: flex; flex-direction: column; gap: 12px; padding: 12px 12px calc(16px + env(safe-area-inset-bottom)); }\n.ta-side-section { display: flex; align-items: center; gap: 6px; padding: 6px 8px 2px; font-size: 12px; color: var(--ta-muted); }\n.ta-side-scroll { flex: 1; min-height: 0; overflow-y: auto; margin: 0 -4px; padding: 0 4px; }\n.ta-side-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 2px; }\n.ta-side-row { position: relative; display: flex; align-items: center; border-radius: 10px; }\n.ta-side-row:hover, .ta-side-row.ta-selected { background: var(--ta-hover); }\n.ta-side-row.ta-selected { background: var(--ta-selected); }\n.ta-side-item { flex: 1; min-width: 0; display: flex; align-items: center; gap: 10px; width: 100%; padding: 8px 10px; border: 0; border-radius: 10px; background: transparent; text-align: left; transition: background 120ms; }\n.ta-side-list > li > .ta-side-item:hover { background: var(--ta-hover); }\n.ta-side-item-text { flex: 1; min-width: 0; display: flex; flex-direction: column; }\n.ta-side-item-title { font-size: 13.5px; font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n.ta-side-item-sub { font-size: 12px; color: var(--ta-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n.ta-side-item-time { align-self: flex-start; font-size: 11.5px; color: var(--ta-muted); font-variant-numeric: tabular-nums; padding-top: 1px; }\n.ta-side-empty { padding: 8px 10px; font-size: 12.5px; color: var(--ta-muted); }\n.ta-close { position: absolute; right: 4px; opacity: 0; width: 26px; height: 26px; }\n.ta-side-row:hover .ta-close, .ta-close:focus-visible { opacity: 1; }\n.ta-task-status { width: 28px; height: 28px; flex: none; display: grid; place-items: center; border-radius: 50%; background: var(--ta-raised); color: var(--ta-secondary); }\n.ta-task-status-done { color: var(--ta-green); background: color-mix(in srgb, var(--ta-green) 14%, transparent); }\n.ta-task-status-failed { color: var(--ta-red); background: color-mix(in srgb, var(--ta-red) 14%, transparent); }\n.ta-task-status-stopped { color: var(--ta-muted); }\n.ta-task-status .ta-spinner { width: 12px; height: 12px; }\n.ta-main { position: relative; flex: 1; display: flex; flex-direction: column; min-width: 0; min-height: 0; padding-top: var(--ta-titlebar); background: var(--ta-main); }\n.ta-main-head { display: flex; align-items: center; justify-content: center; gap: 8px; height: 56px; padding: 0 12px; padding-top: env(safe-area-inset-top); flex: none; }\n.ta-main-title { flex: 1; display: flex; flex-direction: column; align-items: center; line-height: 1.3; min-width: 0; font-size: 14px; font-weight: 600; }\n.ta-main-sub { font-size: 11.5px; font-weight: 400; color: var(--ta-muted); max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n\n/* The double's chat */\n.ta-chat-scroll { flex: 1; min-height: 0; overflow-y: auto; }\n.ta-chat-col { width: 100%; max-width: calc(var(--ta-col) + 48px); margin: 0 auto; padding: 0 24px; display: flex; flex-direction: column; gap: 16px; }\n.ta-chat-scroll { overflow-anchor: none; }\n.ta-chat-scroll .ta-chat-col { position: relative; padding-top: 12px; padding-bottom: 24px; min-height: 100%; }\n.ta-hero { margin: auto 0; display: flex; flex-direction: column; align-items: center; text-align: center; gap: 8px; padding: 24px 0; animation: ta-in 320ms var(--ta-ease); }\n.ta-hero-center { flex: 1; justify-content: center; }\n.ta-hero h1 { margin: 6px 0 0; font-size: 22px; font-weight: 650; letter-spacing: -0.01em; }\n.ta-hero p { margin: 0; max-width: 440px; text-wrap: balance; color: var(--ta-secondary); font-size: 14px; }\n.ta-hero-steps { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 6px 10px; color: var(--ta-secondary); font-size: 13px; }\n.ta-hero-step { display: inline-flex; align-items: center; gap: 7px; }\n.ta-hero-step-icon { display: inline-flex; align-items: center; justify-content: center; width: 26px; height: 26px; border-radius: 8px; background: color-mix(in srgb, var(--ta-green) 14%, transparent); color: var(--ta-green); }\n.ta-hero-arrow { color: var(--ta-muted); }\n.ta-hero-cards { display: grid; grid-template-columns: repeat(3, minmax(0, 168px)); justify-content: center; gap: 10px; width: 100%; margin-top: 18px; }\n@media (max-width: 560px) { .ta-hero-cards { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; } }\n.ta-hero-card { display: flex; flex-direction: column; gap: 8px; padding: 7px 7px 10px; border: 1px solid var(--ta-border-muted); border-radius: 12px; background: var(--ta-card); color: var(--ta-body); font: inherit; font-size: 13px; text-align: center; transition: border-color 140ms, background 140ms, transform 140ms var(--ta-ease); }\n.ta-hero-card:hover { border-color: color-mix(in srgb, var(--ta-green) 55%, var(--ta-border)); background: var(--ta-hover); color: var(--ta-text); }\n.ta-hero-card:hover .ta-pic-accent { fill: color-mix(in srgb, var(--ta-green) 26%, transparent); }\n.ta-hero-card:active { transform: scale(.98); }\n.ta-hero-card > span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n.ta-pic { display: block; width: 100%; height: auto; border-radius: 8px; }\n.ta-pic-frame { fill: var(--ta-raised); stroke: var(--ta-border-muted); stroke-width: 1; }\n.ta-pic-pane { fill: var(--ta-hover); }\n.ta-pic-line { fill: var(--ta-hover-strong); }\n.ta-pic-box { fill: none; stroke: var(--ta-border); stroke-width: 1; }\n.ta-pic-accent { fill: color-mix(in srgb, var(--ta-green) 16%, transparent); stroke: color-mix(in srgb, var(--ta-green) 70%, transparent); stroke-width: 1; transition: fill 140ms; }\n.ta-pic-mark { fill: var(--ta-green); }\n.ta-pic-soft { opacity: .45; }\n.ta-pic-dot { fill: var(--ta-hover-strong); }\n.ta-pic-plus { fill: color-mix(in srgb, var(--ta-green) 55%, transparent); }\n.ta-pic-bad { fill: color-mix(in srgb, var(--ta-red) 85%, transparent); }\n.ta-pic-ring { fill: color-mix(in srgb, var(--ta-raised) 60%, transparent); stroke: var(--ta-green); stroke-width: 3; }\n.ta-pic-stroke { fill: none; stroke: var(--ta-green); stroke-width: 3.5; stroke-linecap: round; stroke-linejoin: round; }\n.ta-pic-thin { stroke: var(--ta-border); stroke-width: 2; }\n.ta-pic-hand, .ta-pic-tick, .ta-pic-cross { fill: none; stroke: var(--ta-raised); stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }\n.ta-pic-tick-big { stroke: var(--ta-green); stroke-width: 3; }\n.ta-pic-text { fill: var(--ta-green); font-family: var(--ta-mono); font-size: 8px; font-weight: 600; }\n.ta-msg-user { display: flex; flex-direction: column; align-items: flex-end; gap: 6px; animation: ta-in 220ms var(--ta-ease); }\n.ta-msg-bubble { max-width: 78%; padding: 9px 14px; border-radius: 16px 16px 5px 16px; background: var(--ta-user); color: var(--ta-text); white-space: pre-wrap; word-break: break-word; }\n.ta-msg-ta { color: var(--ta-body); line-height: 1.75; display: flex; flex-direction: column; gap: 6px; animation: ta-in 220ms var(--ta-ease); }\n.ta-row { display: flex; align-items: center; gap: 8px; min-height: 30px; padding: 2px 8px; margin: 0 -8px; border-radius: 8px; border: 0; background: transparent; text-align: left; font-size: 13px; color: var(--ta-secondary); }\n.ta-row-task { width: calc(100% + 16px); transition: background 120ms; animation: ta-in 220ms var(--ta-ease); }\n.ta-row-task:hover { background: var(--ta-hover); }\n.ta-row-task .ta-task-status { width: 22px; height: 22px; }\n.ta-row-title { color: var(--ta-text); font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }\n.ta-row-meta, .ta-row-label { color: var(--ta-muted); font-size: 12.5px; flex: none; }\n.ta-row-chevron { margin-left: auto; color: var(--ta-muted); }\n.ta-row-quiet { color: var(--ta-muted); }\n.ta-row-quiet .ta-row-title { font-weight: 400; color: var(--ta-secondary); }\n.ta-composer-area { flex: none; padding-bottom: calc(16px + env(safe-area-inset-bottom)); }\n.ta-composer-area .ta-chat-col { gap: 8px; }\n.ta-attention { display: flex; flex-direction: column; gap: 4px; animation: ta-in 220ms var(--ta-ease); }\n.ta-attention-source { font-size: 12px; color: var(--ta-muted); padding-left: 4px; }\n.ta-mic { height: 30px; min-width: 30px; flex: none; display: inline-grid; place-items: center; padding: 0 8px; border: 0; border-radius: 15px; background: transparent; color: var(--ta-secondary); transition: background 150ms, color 150ms, min-width 200ms var(--ta-ease); }\n.ta-mic:hover { background: var(--ta-hover); color: var(--ta-text); }\n.ta-mic.ta-on { min-width: 48px; background: var(--ta-hover-strong); color: var(--ta-text); }\n.ta-wave { display: inline-flex; align-items: center; gap: 2.5px; height: 14px; }\n.ta-wave i { width: 2.5px; height: 100%; border-radius: 2px; background: currentColor; animation: ta-wave 0.9s ease-in-out infinite; }\n.ta-wave i:nth-child(2) { animation-delay: -0.7s; }\n.ta-wave i:nth-child(3) { animation-delay: -0.45s; }\n.ta-wave i:nth-child(4) { animation-delay: -0.2s; }\n.ta-send { width: 30px; height: 30px; flex: none; border-radius: 50%; border: 0; display: grid; place-items: center; background: var(--ta-brand); color: var(--ta-brand-text); transition: opacity 120ms, transform 120ms; }\n.ta-send:hover:not(:disabled) { opacity: 0.88; }\n.ta-send:active:not(:disabled) { transform: scale(0.94); }\n.ta-send:disabled { opacity: 0.25; cursor: default; }\n.ta-send-stop { background: var(--ta-brand); }\n.ta-avatar { flex: none; display: block; overflow: visible; }\n.ta-dino-lid { transform-box: fill-box; transform-origin: top; transform: scaleY(0); animation: ta-dino-blink 5s ease-in-out infinite; }\n.ta-dino-badge { animation: ta-dino-pop 0.35s var(--ta-ease); }\n.ta-dino-dot { animation: ta-pulse 1.2s ease-in-out infinite; }\n.ta-dino-dot:nth-of-type(2) { animation-delay: 0.2s; }\n.ta-dino-dot:nth-of-type(3) { animation-delay: 0.4s; }\n.ta-dino-bubble, .ta-dino-z, .ta-dino-wave { animation: ta-pulse 2.4s ease-in-out infinite; }\n.ta-dino-bubble:nth-of-type(2), .ta-dino-z:nth-of-type(2), .ta-dino-wave:nth-of-type(2) { animation-delay: 0.4s; }\n.ta-dino-bubble:nth-of-type(3) { animation-delay: 0.8s; }\n\n/* Cards of web extensions */\n.ta-card-widget { min-width: 0; display: flex; flex-direction: column; gap: 8px; padding: 12px 14px; border-radius: 12px; border: 1px solid var(--ta-border); background: var(--ta-card); }\n.ta-card-widget h2 { margin: 0; }\n.ta-card-widget button { white-space: nowrap; }\n\n/* Notices: cards in the bottom right, the newest nearest the corner; on phones from the top. */\n.ta-toasts { position: fixed; right: 16px; bottom: calc(16px + env(safe-area-inset-bottom)); z-index: 70; display: flex; flex-direction: column; justify-content: flex-end; gap: 8px; width: min(360px, calc(100vw - 32px)); pointer-events: none; }\n.ta-toast { pointer-events: auto; display: flex; align-items: flex-start; gap: 10px; padding: 11px 6px 11px 14px; border-radius: 12px; border: 1px solid var(--ta-border); background: var(--ta-side); box-shadow: var(--ta-shadow-pop); font-size: 13px; line-height: 1.5; animation: ta-toast-in 220ms var(--ta-ease); }\n.ta-toast.ta-leaving { animation: ta-toast-out 160ms ease-in forwards; }\n.ta-toast > .ta-level-icon { margin-top: 2px; }\n.ta-toast-text { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; padding-top: 0; }\n.ta-toast-message { color: var(--ta-text); overflow-wrap: anywhere; white-space: pre-wrap; }\n.ta-toast-count { margin-left: 6px; padding: 0 5px; border-radius: 6px; background: var(--ta-chip); color: var(--ta-secondary); font-size: 11px; font-variant-numeric: tabular-nums; }\n.ta-toast-detail { color: var(--ta-secondary); font-size: 12px; overflow-wrap: anywhere; white-space: pre-wrap; }\n.ta-toast-art { align-self: flex-start; width: 200px; height: auto; margin-top: 8px; border-radius: 10px; }\n.ta-toast-action { align-self: flex-start; margin-top: 6px; height: 26px; padding: 0 10px; border-radius: 7px; border: 1px solid var(--ta-border-field); background: transparent; font-size: 12px; font-weight: 500; transition: background 120ms; }\n.ta-toast-action:hover { background: var(--ta-hover); }\n.ta-toast .ta-toast-close { width: 24px; height: 24px; margin-top: -1px; color: var(--ta-muted); }\n.ta-toast .ta-toast-close svg { width: 14px; height: 14px; }\n@keyframes ta-toast-in { from { transform: translateY(8px) scale(0.98); opacity: 0; } }\n@keyframes ta-toast-out { to { transform: translateX(12px); opacity: 0; } }\n\n/* The connection to ta serve, over the top of the main area while it is down */\n.ta-connection { position: absolute; top: calc(66px + env(safe-area-inset-top) + var(--ta-titlebar)); left: 50%; transform: translateX(-50%); z-index: 15; display: flex; align-items: center; gap: 8px; max-width: calc(100% - 24px); height: 34px; padding: 0 6px 0 12px; border-radius: 17px; border: 1px solid var(--ta-border); background: var(--ta-side); box-shadow: var(--ta-shadow-pop); font-size: 12.5px; color: var(--ta-body); white-space: nowrap; animation: ta-drop 200ms var(--ta-ease); --ta-level: var(--ta-yellow); }\n.ta-connection-back { padding-right: 12px; --ta-level: var(--ta-green); }\n.ta-connection-text { overflow: hidden; text-overflow: ellipsis; min-width: 0; }\n.ta-connection-when { color: var(--ta-muted); font-variant-numeric: tabular-nums; }\n.ta-connection-retry { display: inline-flex; align-items: center; gap: 4px; height: 24px; padding: 0 9px; border-radius: 12px; border: 0; background: var(--ta-chip); color: var(--ta-text); font-size: 12px; font-weight: 500; transition: background 120ms; }\n.ta-connection-retry:hover { background: var(--ta-hover-strong); }\n.ta-connection:not(.ta-connection-back) .ta-level-icon { animation: ta-pulse 2s ease-in-out infinite; }\n@keyframes ta-drop { from { transform: translate(-50%, -8px); opacity: 0; } }\n\n/* A question before going ahead */\n.ta-modal.ta-confirm { width: min(400px, 100%); gap: 6px; padding: 18px 18px 16px; }\n.ta-confirm-title { font-size: 15px; font-weight: 600; }\n.ta-confirm-message { margin: 0; color: var(--ta-secondary); font-size: 13px; line-height: 1.55; white-space: pre-wrap; }\n.ta-confirm .ta-dialog-actions { margin-top: 12px; }\n.ta-modal.ta-ask { width: min(460px, 100%); gap: 12px; }\n.ta-ask .ta-dialog-actions { margin-top: 2px; }\ntextarea.ta-ask-text { height: auto; min-height: 180px; max-height: 50vh; padding: 8px 10px; font-size: 13px; line-height: 1.6; resize: vertical; }\n.ta-button-danger { background: var(--ta-red); border-color: var(--ta-red); color: #fff; }\n.ta-button-danger:hover:not(:disabled) { background: var(--ta-red); opacity: 0.9; }\n\n/* Built-in pages */\n.ta-assistant { flex: 1; min-height: 0; display: flex; }\n.ta-assistant-main { flex: 1; min-width: 0; min-height: 0; display: flex; flex-direction: column; }\n.ta-assistant-body { flex: 1; min-height: 0; display: flex; flex-direction: column; }\n.ta-assistant-chat { flex: 1; display: flex; flex-direction: column; min-width: 0; min-height: 0; }\n.ta-head-spacer { width: 32px; flex: none; }\n.ta-tasks-button .ta-badge { background: var(--ta-accent); }\n.ta-running { display: flex; flex-direction: column; gap: 2px; }\n.ta-msg-ta > .ta-row-task, .ta-running > .ta-row-task, .ta-chat-col > .ta-row-task { width: 100%; max-width: 560px; margin: 0; min-height: 40px; padding: 8px 12px; gap: 10px; border: 1px solid var(--ta-border); border-radius: 12px; background: var(--ta-card); }\n.ta-row-task .ta-row-title { font-size: 13.5px; }\n.ta-row-task .ta-row-chevron { flex: none; }\n.ta-row-activity { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--ta-muted); font-size: 12.5px; }\n.ta-row-activity + .ta-row-meta { font-variant-numeric: tabular-nums; }\n.ta-task-group { display: flex; flex-direction: column; gap: 2px; }\n.ta-task-item { align-items: flex-start; }\n.ta-task-item .ta-status { height: 20px; }\n.ta-assistant-tasks { padding: 8px 10px 12px; display: flex; flex-direction: column; gap: 10px; }\n.ta-assistant-task { display: flex; flex-direction: column; height: 100%; min-height: 0; }\n.ta-assistant-task-bar { display: flex; align-items: center; gap: 10px; min-height: 44px; padding: 0 12px 0 14px; border-bottom: 1px solid var(--ta-border-muted); flex: none; }\n.ta-assistant-task-bar .ta-task-status { width: 22px; height: 22px; }\n.ta-assistant-task-title { flex: 1; min-width: 0; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n.ta-assistant-task .ta-session { min-height: 0; flex: 1; }\n.ta-assistant-task .ta-session-header { min-height: 48px; }\n.ta-assistant-task .ta-session-title { visibility: hidden; }\n\n/* Overlays */\n.ta-overlay-close { position: absolute; inset: 0; border: 0; padding: 0; background: transparent; cursor: default; }\n.ta-scrim { display: none; }\n.ta-hud { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 500; color: var(--ta-muted); }\n.ta-setting-section { display: flex; flex-direction: column; gap: 8px; }\n.ta-setting-section h2 { margin: 0; padding: 0 4px; }\n.ta-setting-card { border-radius: 12px; border: 1px solid var(--ta-border); background: var(--ta-card); overflow: hidden; }\n.ta-setting-row { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 10px 14px; min-height: 48px; }\n.ta-setting-row + .ta-setting-row { border-top: 1px solid var(--ta-border-muted); }\n.ta-setting-row.ta-stacked { flex-direction: column; align-items: stretch; gap: 8px; }\n.ta-setting-row.ta-stacked .ta-setting-control { width: 100%; }\n.ta-setting-row.ta-stacked .ta-segmented { flex: 1; }\n.ta-setting-text { min-width: 0; display: flex; flex-direction: column; gap: 1px; }\n.ta-setting-label { font-size: 13px; font-weight: 500; }\n.ta-setting-description { font-size: 12px; color: var(--ta-muted); overflow-wrap: anywhere; }\n.ta-trusted-add { display: flex; gap: 8px; width: 100%; }\n.ta-trusted-add .ta-input { height: 32px; flex: 1; min-width: 0; }\n.ta-setting-control { display: flex; align-items: center; justify-content: flex-end; flex: none; }\n.ta-segmented { margin: 0; min-width: 0; border: 0; display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; gap: 2px; padding: 3px; border-radius: 10px; background: var(--ta-raised); }\n.ta-segmented button { display: inline-flex; align-items: center; justify-content: center; gap: 6px; height: 28px; border: 0; border-radius: 7px; background: transparent; color: var(--ta-secondary); font-size: 12.5px; font-weight: 500; transition: background 120ms, color 120ms; }\n.ta-segmented button:hover { color: var(--ta-text); }\n.ta-segmented .ta-on { background: var(--ta-card); color: var(--ta-text); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2), 0 0 0 1px var(--ta-border); }\n.ta-switch { appearance: none; -webkit-appearance: none; width: 36px; height: 20px; flex: none; border-radius: 10px; background: var(--ta-hover-strong); position: relative; transition: background 160ms; margin: 0; cursor: pointer; }\n.ta-switch::after { content: ''; position: absolute; top: 2px; left: 2px; width: 16px; height: 16px; border-radius: 50%; background: #fff; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3); transition: transform 180ms var(--ta-ease); }\n.ta-switch:checked { background: var(--ta-green); }\n.ta-switch:checked::after { transform: translateX(16px); }\n\n/* Sign in */\n.ta-signin { min-height: 100vh; min-height: 100dvh; display: grid; place-items: center; padding: 24px; background: var(--ta-main); }\n/*\n * The installed app with its title bar hidden (window controls overlay): the page draws up to the top of\n * the window, and the bar is the colour of the side columns, as theme-color is (useTitlebarColor). Each\n * column starts lower by the height of the bar, which is left empty for the window's buttons, and is\n * where the window is dragged.\n */\n.ta-titlebar { display: none; position: fixed; z-index: 25; left: env(titlebar-area-x, 0); top: env(titlebar-area-y, 0); width: env(titlebar-area-width, 100%); height: var(--ta-titlebar); app-region: drag; -webkit-app-region: drag; }\n@media (display-mode: window-controls-overlay) {\n :root { --ta-titlebar: env(titlebar-area-height, 0px); }\n .ta-titlebar { display: block; }\n /* Above the conversation the bar keeps the colour of the side columns, under the browser's buttons too. */\n .ta-main { background: linear-gradient(var(--ta-side) var(--ta-titlebar), var(--ta-main) 0); }\n}\n.ta-card { width: 100%; max-width: 380px; display: flex; flex-direction: column; align-items: center; gap: 12px; text-align: center; }\n.ta-card h1 { margin: 4px 0 0; font-size: 20px; font-weight: 650; }\n.ta-card p { margin: 0 0 8px; font-size: 13px; color: var(--ta-secondary); }\n\n";
3
3
  //# sourceMappingURL=shell.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../../src/browser/style/shell.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAChG,eAAO,MAAM,WAAW,63sBAyOvB,CAAC"}
1
+ {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../../src/browser/style/shell.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAChG,eAAO,MAAM,WAAW,0+sBA0OvB,CAAC"}
@@ -136,6 +136,7 @@ exports.SHELL_STYLE = `
136
136
  .ta-toast-message { color: var(--ta-text); overflow-wrap: anywhere; white-space: pre-wrap; }
137
137
  .ta-toast-count { margin-left: 6px; padding: 0 5px; border-radius: 6px; background: var(--ta-chip); color: var(--ta-secondary); font-size: 11px; font-variant-numeric: tabular-nums; }
138
138
  .ta-toast-detail { color: var(--ta-secondary); font-size: 12px; overflow-wrap: anywhere; white-space: pre-wrap; }
139
+ .ta-toast-art { align-self: flex-start; width: 200px; height: auto; margin-top: 8px; border-radius: 10px; }
139
140
  .ta-toast-action { align-self: flex-start; margin-top: 6px; height: 26px; padding: 0 10px; border-radius: 7px; border: 1px solid var(--ta-border-field); background: transparent; font-size: 12px; font-weight: 500; transition: background 120ms; }
140
141
  .ta-toast-action:hover { background: var(--ta-hover); }
141
142
  .ta-toast .ta-toast-close { width: 24px; height: 24px; margin-top: -1px; color: var(--ta-muted); }
@@ -1 +1 @@
1
- {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../../src/browser/style/shell.ts"],"names":[],"mappings":";;;AAAA,gGAAgG;AACnF,QAAA,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyO1B,CAAC"}
1
+ {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../../src/browser/style/shell.ts"],"names":[],"mappings":";;;AAAA,gGAAgG;AACnF,QAAA,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0O1B,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * xterm.js's WebGL renderer sets the font of its canvases as `${italic} ${weight} ${size}px ${family}`,
3
+ * which starts with a space when the text is not italic. Chromium 156 (Electron 45, the desktop app)
4
+ * rejects a font with leading spaces and keeps `10px sans-serif`: the glyphs come out tiny in cells of
5
+ * the right size. Setting `font` without the leading spaces makes it the font xterm.js meant; a font
6
+ * that was valid is unchanged. Remove when @xterm/addon-webgl writes `normal` there.
7
+ */
8
+ export declare namespace CanvasFontFix {
9
+ function install(prototypes?: readonly (object | undefined)[]): void;
10
+ }
11
+ //# sourceMappingURL=canvas-font.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canvas-font.d.ts","sourceRoot":"","sources":["../../../src/browser/terminal/canvas-font.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,yBAAiB,aAAa,CAAC;IAC3B,SAAgB,OAAO,CAAC,UAAU,GAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAe,GAAG,IAAI,CAgBtF;CAKJ"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CanvasFontFix = void 0;
4
+ const INSTALLED = Symbol.for('ta.canvasFontTrim');
5
+ /**
6
+ * xterm.js's WebGL renderer sets the font of its canvases as `${italic} ${weight} ${size}px ${family}`,
7
+ * which starts with a space when the text is not italic. Chromium 156 (Electron 45, the desktop app)
8
+ * rejects a font with leading spaces and keeps `10px sans-serif`: the glyphs come out tiny in cells of
9
+ * the right size. Setting `font` without the leading spaces makes it the font xterm.js meant; a font
10
+ * that was valid is unchanged. Remove when @xterm/addon-webgl writes `normal` there.
11
+ */
12
+ var CanvasFontFix;
13
+ (function (CanvasFontFix) {
14
+ function install(prototypes = defaults()) {
15
+ for (const prototype of prototypes) {
16
+ const target = prototype;
17
+ const font = target && Object.getOwnPropertyDescriptor(target, 'font');
18
+ if (!target || !(font === null || font === void 0 ? void 0 : font.set) || target[INSTALLED]) {
19
+ continue;
20
+ }
21
+ const set = font.set;
22
+ Object.defineProperty(target, 'font', {
23
+ ...font,
24
+ set(value) {
25
+ set.call(this, typeof value === 'string' ? value.trimStart() : value);
26
+ },
27
+ });
28
+ Object.defineProperty(target, INSTALLED, { value: true });
29
+ }
30
+ }
31
+ CanvasFontFix.install = install;
32
+ function defaults() {
33
+ var _a, _b;
34
+ return [(_a = globalThis.CanvasRenderingContext2D) === null || _a === void 0 ? void 0 : _a.prototype, (_b = globalThis.OffscreenCanvasRenderingContext2D) === null || _b === void 0 ? void 0 : _b.prototype];
35
+ }
36
+ })(CanvasFontFix || (exports.CanvasFontFix = CanvasFontFix = {}));
37
+ //# sourceMappingURL=canvas-font.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canvas-font.js","sourceRoot":"","sources":["../../../src/browser/terminal/canvas-font.ts"],"names":[],"mappings":";;;AAAA,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;AAElD;;;;;;GAMG;AACH,IAAiB,aAAa,CAsB7B;AAtBD,WAAiB,aAAa;IAC1B,SAAgB,OAAO,CAAC,UAAU,GAAoC,QAAQ,EAAE;QAC5E,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,SAAqD,CAAC;YACrE,MAAM,IAAI,GAAG,MAAM,IAAI,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACvE,IAAI,CAAC,MAAM,IAAI,EAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,GAAG,CAAA,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7C,SAAS;YACb,CAAC;YACD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;YACrB,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE;gBAClC,GAAG,IAAI;gBACP,GAAG,CAAe,KAAc;oBAC5B,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC1E,CAAC;aACJ,CAAC,CAAC;YACH,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9D,CAAC;IACL,CAAC;IAhBe,cAAA,OAAO,UAgBtB,CAAA;IAED,SAAS,QAAQ;;QACb,OAAO,CAAC,MAAA,UAAU,CAAC,wBAAwB,0CAAE,SAAS,EAAE,MAAA,UAAU,CAAC,iCAAiC,0CAAE,SAAS,CAAC,CAAC;IACrH,CAAC;AACL,CAAC,EAtBgB,aAAa,aAAb,aAAa,GAAb,aAAa,QAsB7B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=canvas-font.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canvas-font.spec.d.ts","sourceRoot":"","sources":["../../../src/browser/terminal/canvas-font.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const bun_test_1 = require("bun:test");
4
+ const canvas_font_1 = require("./canvas-font");
5
+ /** A context that, as Chromium 156, keeps its font when the new one starts with a space. */
6
+ class StrictContext {
7
+ constructor() {
8
+ this.value = '10px sans-serif';
9
+ }
10
+ get font() {
11
+ return this.value;
12
+ }
13
+ set font(font) {
14
+ if (!/^\s/.test(font)) {
15
+ this.value = font.replace(/^(normal )+/, '');
16
+ }
17
+ }
18
+ }
19
+ (0, bun_test_1.describe)('CanvasFontFix', () => {
20
+ (0, bun_test_1.it)('sets the font xterm.js meant, and leaves a valid one as it is', () => {
21
+ const context = new StrictContext();
22
+ context.font = ' normal 24px Menlo';
23
+ (0, bun_test_1.expect)(context.font).toBe('10px sans-serif');
24
+ canvas_font_1.CanvasFontFix.install([StrictContext.prototype, undefined]);
25
+ canvas_font_1.CanvasFontFix.install([StrictContext.prototype]);
26
+ context.font = ' normal 24px Menlo';
27
+ (0, bun_test_1.expect)(context.font).toBe('24px Menlo');
28
+ context.font = 'italic bold 12px monospace';
29
+ (0, bun_test_1.expect)(context.font).toBe('italic bold 12px monospace');
30
+ });
31
+ });
32
+ //# sourceMappingURL=canvas-font.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canvas-font.spec.js","sourceRoot":"","sources":["../../../src/browser/terminal/canvas-font.spec.ts"],"names":[],"mappings":";;AAAA,uCAAgD;AAChD,+CAA8C;AAE9C,4FAA4F;AAC5F,MAAM,aAAa;IAAnB;QACc,UAAK,GAAG,iBAAiB,CAAC;IASxC,CAAC;IARG,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IACD,IAAI,IAAI,CAAC,IAAY;QACjB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACpB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QACjD,CAAC;IACL,CAAC;CACJ;AAED,IAAA,mBAAQ,EAAC,eAAe,EAAE,GAAG,EAAE;IAC3B,IAAA,aAAE,EAAC,+DAA+D,EAAE,GAAG,EAAE;QACrE,MAAM,OAAO,GAAG,IAAI,aAAa,EAAE,CAAC;QACpC,OAAO,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACpC,IAAA,iBAAM,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC7C,2BAAa,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;QAC5D,2BAAa,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC;QACjD,OAAO,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACpC,IAAA,iBAAM,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACxC,OAAO,CAAC,IAAI,GAAG,4BAA4B,CAAC;QAC5C,IAAA,iBAAM,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { type LinkTarget } from '../util/link';
2
+ /** A link in a line of a terminal: `text.slice(start, end)`. */
3
+ export interface TerminalLink {
4
+ start: number;
5
+ end: number;
6
+ target: LinkTarget;
7
+ }
8
+ /**
9
+ * The links of a line of a terminal, as VS Code finds them: http(s) and file URLs, and paths of files
10
+ * (`src/a.ts:10:5`, `./b.md`, `/etc/hosts`, `docs/`) with the place a compiler or grep prints after
11
+ * them. A name alone is a file only with an extension files have (LinkUtil.codeReference); a path
12
+ * starting with `./`, `../` or two names under `/` is one with any name.
13
+ */
14
+ export declare namespace TerminalLinkUtil {
15
+ function find(text: string): TerminalLink[];
16
+ /** `file://host/path` of OSC 7, the directory a shell says it is in. */
17
+ function cwdOf(osc7: string): string | undefined;
18
+ }
19
+ //# sourceMappingURL=terminal-links.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-links.d.ts","sourceRoot":"","sources":["../../../src/browser/terminal/terminal-links.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAY,MAAM,cAAc,CAAC;AAEzD,gEAAgE;AAChE,MAAM,WAAW,YAAY;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,UAAU,CAAC;CACtB;AAYD;;;;;GAKG;AACH,yBAAiB,gBAAgB,CAAC;IAC9B,SAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,EAAE,CAkCjD;IAED,wEAAwE;IACxE,SAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAUtD;CACJ"}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TerminalLinkUtil = void 0;
4
+ const link_1 = require("../util/link");
5
+ const URL_START = /\b(?:https?|file):\/\//gi;
6
+ /** What a path may be in: anything up to a space, a quote or a bracket. */
7
+ const WORD = /[^\s'"`<>()[\]{}|;,]+/g;
8
+ /** A path at the start of a word, with the line and column a compiler or grep prints after it (`:10`, `:10:5`). */
9
+ const PATH = /^(?:\.{1,2}\/|\/)?(?:[\w@+.-]+\/)*[\w@+.-]+\/?(?::\d+(?::\d+)?)?/;
10
+ /** A path no one mistakes for a word, with or without an extension: `./x`, `../x`, `/etc/hosts` (not `/help`). */
11
+ const EXPLICIT = /^(?:\.{1,2}\/[^/]|\/[^/]+\/[^/])/;
12
+ /** TypeScript's and MSBuild's `(10,5)` right after a path. */
13
+ const PARENS = /^\((\d+)(?:,(\d+))?\)/;
14
+ /**
15
+ * The links of a line of a terminal, as VS Code finds them: http(s) and file URLs, and paths of files
16
+ * (`src/a.ts:10:5`, `./b.md`, `/etc/hosts`, `docs/`) with the place a compiler or grep prints after
17
+ * them. A name alone is a file only with an extension files have (LinkUtil.codeReference); a path
18
+ * starting with `./`, `../` or two names under `/` is one with any name.
19
+ */
20
+ var TerminalLinkUtil;
21
+ (function (TerminalLinkUtil) {
22
+ function find(text) {
23
+ var _a, _b;
24
+ var _c;
25
+ const links = [];
26
+ for (const found of text.matchAll(URL_START)) {
27
+ const start = found.index;
28
+ const url = /^file:/i.test(found[0]) ? (_a = /^file:\/\/[^\s'"`<>]+/i.exec(text.slice(start))) === null || _a === void 0 ? void 0 : _a[0] : link_1.LinkUtil.bareUrl(text.slice(start));
29
+ const target = url && link_1.LinkUtil.parse(url);
30
+ if (target) {
31
+ links.push({ start, end: start + url.length, target });
32
+ }
33
+ }
34
+ const inUrl = (index) => links.some(link => index >= link.start && index < link.end);
35
+ const urls = links.length;
36
+ for (const word of text.matchAll(WORD)) {
37
+ if (inUrl(word.index)) {
38
+ continue;
39
+ }
40
+ const path = (_b = PATH.exec(word[0])) === null || _b === void 0 ? void 0 : _b[0].replace(/[.:]+$/, '');
41
+ if (!path) {
42
+ continue;
43
+ }
44
+ const start = word.index;
45
+ let end = start + path.length;
46
+ let reference = path;
47
+ const parens = path.length === word[0].length ? PARENS.exec(text.slice(end)) : null;
48
+ if (parens && !/:\d+$/.test(path)) {
49
+ reference = `${path}:${parens[1]}${parens[2] ? `:${parens[2]}` : ''}`;
50
+ end += parens[0].length;
51
+ }
52
+ const target = (_c = link_1.LinkUtil.codeReference(reference)) !== null && _c !== void 0 ? _c : (EXPLICIT.test(reference) ? link_1.LinkUtil.parse(reference) : undefined);
53
+ if (target) {
54
+ links.push({ start, end, target });
55
+ }
56
+ }
57
+ return urls === links.length ? links : links.sort((a, b) => a.start - b.start);
58
+ }
59
+ TerminalLinkUtil.find = find;
60
+ /** `file://host/path` of OSC 7, the directory a shell says it is in. */
61
+ function cwdOf(osc7) {
62
+ const found = /^file:\/\/[^/]*(\/.*)$/i.exec(osc7.trim());
63
+ if (!found) {
64
+ return undefined;
65
+ }
66
+ try {
67
+ return decodeURIComponent(found[1]);
68
+ }
69
+ catch (_a) {
70
+ return undefined;
71
+ }
72
+ }
73
+ TerminalLinkUtil.cwdOf = cwdOf;
74
+ })(TerminalLinkUtil || (exports.TerminalLinkUtil = TerminalLinkUtil = {}));
75
+ //# sourceMappingURL=terminal-links.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-links.js","sourceRoot":"","sources":["../../../src/browser/terminal/terminal-links.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=terminal-links.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-links.spec.d.ts","sourceRoot":"","sources":["../../../src/browser/terminal/terminal-links.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const bun_test_1 = require("bun:test");
4
+ const terminal_links_1 = require("./terminal-links");
5
+ const texts = (line) => terminal_links_1.TerminalLinkUtil.find(line).map(link => line.slice(link.start, link.end));
6
+ (0, bun_test_1.describe)('TerminalLinkUtil', () => {
7
+ (0, bun_test_1.it)('finds web pages, without the punctuation after them', () => {
8
+ (0, bun_test_1.expect)(texts('Local: http://localhost:5173/, docs at https://example.com/a?b=1.')).toEqual(['http://localhost:5173/', 'https://example.com/a?b=1']);
9
+ (0, bun_test_1.expect)(terminal_links_1.TerminalLinkUtil.find('see (https://x.dev/a)')[0].target).toEqual({ type: 'url', url: 'https://x.dev/a' });
10
+ });
11
+ (0, bun_test_1.it)('finds paths with the place compilers and grep print', () => {
12
+ const line = "src/app.ts:12:5 - error TS2304: Cannot find name 'x'.";
13
+ (0, bun_test_1.expect)(texts(line)).toEqual(['src/app.ts:12:5']);
14
+ (0, bun_test_1.expect)(terminal_links_1.TerminalLinkUtil.find(line)[0].target).toEqual({ type: 'path', path: 'src/app.ts', selection: { startLine: 12, startColumn: 5 } });
15
+ (0, bun_test_1.expect)(texts('src/a.ts(10,5): error')).toEqual(['src/a.ts(10,5)']);
16
+ (0, bun_test_1.expect)(terminal_links_1.TerminalLinkUtil.find('src/a.ts(10,5): error')[0].target).toMatchObject({ path: 'src/a.ts', selection: { startLine: 10, startColumn: 5 } });
17
+ (0, bun_test_1.expect)(texts('lib/x.js:3:const a = 1')).toEqual(['lib/x.js:3']);
18
+ (0, bun_test_1.expect)(texts('modified: ./docs/README.md and /etc/hosts, AGENTS.md.')).toEqual(['./docs/README.md', '/etc/hosts', 'AGENTS.md']);
19
+ (0, bun_test_1.expect)(texts('cd docs/ ; ls')).toEqual(['docs/']);
20
+ });
21
+ (0, bun_test_1.it)('leaves out what is no file', () => {
22
+ (0, bun_test_1.expect)(texts('v4.6.1 1.2.3 e.g. console.log ~/x deepseek-flash <inline:ta> Node.js /help and/or')).toEqual([]);
23
+ (0, bun_test_1.expect)(texts('see https://example.com/src/a.ts')).toEqual(['https://example.com/src/a.ts']);
24
+ });
25
+ (0, bun_test_1.it)('reads the directory of OSC 7', () => {
26
+ (0, bun_test_1.expect)(terminal_links_1.TerminalLinkUtil.cwdOf('file://mac.local/Users/me/my%20app')).toBe('/Users/me/my app');
27
+ (0, bun_test_1.expect)(terminal_links_1.TerminalLinkUtil.cwdOf('nonsense')).toBeUndefined();
28
+ });
29
+ });
30
+ //# sourceMappingURL=terminal-links.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-links.spec.js","sourceRoot":"","sources":["../../../src/browser/terminal/terminal-links.spec.ts"],"names":[],"mappings":";;AAAA,uCAAgD;AAChD,qDAAoD;AAEpD,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,iCAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1G,IAAA,mBAAQ,EAAC,kBAAkB,EAAE,GAAG,EAAE;IAC9B,IAAA,aAAE,EAAC,qDAAqD,EAAE,GAAG,EAAE;QAC3D,IAAA,iBAAM,EAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,wBAAwB,EAAE,2BAA2B,CAAC,CAAC,CAAC;QACpJ,IAAA,iBAAM,EAAC,iCAAgB,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,iBAAiB,EAAE,CAAC,CAAC;IACtH,CAAC,CAAC,CAAC;IAEH,IAAA,aAAE,EAAC,qDAAqD,EAAE,GAAG,EAAE;QAC3D,MAAM,IAAI,GAAG,uDAAuD,CAAC;QACrE,IAAA,iBAAM,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;QACjD,IAAA,iBAAM,EAAC,iCAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1I,IAAA,iBAAM,EAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACnE,IAAA,iBAAM,EAAC,iCAAgB,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACnJ,IAAA,iBAAM,EAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;QAChE,IAAA,iBAAM,EAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,kBAAkB,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC;QAClI,IAAA,iBAAM,EAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,IAAA,aAAE,EAAC,4BAA4B,EAAE,GAAG,EAAE;QAClC,IAAA,iBAAM,EAAC,KAAK,CAAC,mFAAmF,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC/G,IAAA,iBAAM,EAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC;IAChG,CAAC,CAAC,CAAC;IAEH,IAAA,aAAE,EAAC,8BAA8B,EAAE,GAAG,EAAE;QACpC,IAAA,iBAAM,EAAC,iCAAgB,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC9F,IAAA,iBAAM,EAAC,iCAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;IAC/D,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { ITheme } from '@xterm/xterm';
2
+ import type { Theme } from '../settings/settings-protocol';
3
+ export declare namespace TerminalTheme {
4
+ /** The colours of a terminal on the page: its background and text are the page's (`--ta-*`), the rest VS Code's. */
5
+ function of(theme: Theme, variable: (name: string) => string): ITheme;
6
+ /** The font of the page's code: `--ta-mono`. */
7
+ function fontFamily(variable: (name: string) => string): string;
8
+ }
9
+ //# sourceMappingURL=terminal-theme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-theme.d.ts","sourceRoot":"","sources":["../../../src/browser/terminal/terminal-theme.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAoD3D,yBAAiB,aAAa,CAAC;IAC3B,oHAAoH;IACpH,SAAgB,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,CAI3E;IAED,gDAAgD;IAChD,SAAgB,UAAU,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,CAErE;CACJ"}
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TerminalTheme = void 0;
4
+ /** The sixteen colours of VS Code's terminal, for a dark and a light page. */
5
+ const ANSI = {
6
+ dark: {
7
+ black: '#000000',
8
+ red: '#cd3131',
9
+ green: '#0dbc79',
10
+ yellow: '#e5e510',
11
+ blue: '#2472c8',
12
+ magenta: '#bc3fbc',
13
+ cyan: '#11a8cd',
14
+ white: '#e5e5e5',
15
+ brightBlack: '#666666',
16
+ brightRed: '#f14c4c',
17
+ brightGreen: '#23d18b',
18
+ brightYellow: '#f5f543',
19
+ brightBlue: '#3b8eea',
20
+ brightMagenta: '#d670d6',
21
+ brightCyan: '#29b8db',
22
+ brightWhite: '#e5e5e5',
23
+ selectionBackground: '#264f78',
24
+ selectionInactiveBackground: '#3a3d41',
25
+ scrollbarSliderBackground: 'rgba(121, 121, 121, 0.4)',
26
+ scrollbarSliderHoverBackground: 'rgba(100, 100, 100, 0.7)',
27
+ scrollbarSliderActiveBackground: 'rgba(191, 191, 191, 0.4)',
28
+ },
29
+ light: {
30
+ black: '#000000',
31
+ red: '#cd3131',
32
+ green: '#00bc00',
33
+ yellow: '#949800',
34
+ blue: '#0451a5',
35
+ magenta: '#bc05bc',
36
+ cyan: '#0598bc',
37
+ white: '#555555',
38
+ brightBlack: '#666666',
39
+ brightRed: '#cd3131',
40
+ brightGreen: '#14ce14',
41
+ brightYellow: '#b5ba00',
42
+ brightBlue: '#0451a5',
43
+ brightMagenta: '#bc05bc',
44
+ brightCyan: '#0598bc',
45
+ brightWhite: '#a5a5a5',
46
+ selectionBackground: '#add6ff',
47
+ selectionInactiveBackground: '#e5ebf1',
48
+ scrollbarSliderBackground: 'rgba(100, 100, 100, 0.4)',
49
+ scrollbarSliderHoverBackground: 'rgba(100, 100, 100, 0.7)',
50
+ scrollbarSliderActiveBackground: 'rgba(0, 0, 0, 0.6)',
51
+ },
52
+ };
53
+ var TerminalTheme;
54
+ (function (TerminalTheme) {
55
+ /** The colours of a terminal on the page: its background and text are the page's (`--ta-*`), the rest VS Code's. */
56
+ function of(theme, variable) {
57
+ const background = variable('--ta-code').trim() || (theme === 'dark' ? '#161618' : '#f7f8fa');
58
+ const foreground = variable('--ta-text').trim() || (theme === 'dark' ? '#e5e5e5' : '#1a1a1a');
59
+ return { ...ANSI[theme], background, foreground, cursor: foreground, cursorAccent: background };
60
+ }
61
+ TerminalTheme.of = of;
62
+ /** The font of the page's code: `--ta-mono`. */
63
+ function fontFamily(variable) {
64
+ return variable('--ta-mono').trim() || 'monospace';
65
+ }
66
+ TerminalTheme.fontFamily = fontFamily;
67
+ })(TerminalTheme || (exports.TerminalTheme = TerminalTheme = {}));
68
+ //# sourceMappingURL=terminal-theme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-theme.js","sourceRoot":"","sources":["../../../src/browser/terminal/terminal-theme.ts"],"names":[],"mappings":";;;AAGA,8EAA8E;AAC9E,MAAM,IAAI,GAA0B;IAChC,IAAI,EAAE;QACF,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,SAAS;QACd,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,SAAS;QAChB,WAAW,EAAE,SAAS;QACtB,SAAS,EAAE,SAAS;QACpB,WAAW,EAAE,SAAS;QACtB,YAAY,EAAE,SAAS;QACvB,UAAU,EAAE,SAAS;QACrB,aAAa,EAAE,SAAS;QACxB,UAAU,EAAE,SAAS;QACrB,WAAW,EAAE,SAAS;QACtB,mBAAmB,EAAE,SAAS;QAC9B,2BAA2B,EAAE,SAAS;QACtC,yBAAyB,EAAE,0BAA0B;QACrD,8BAA8B,EAAE,0BAA0B;QAC1D,+BAA+B,EAAE,0BAA0B;KAC9D;IACD,KAAK,EAAE;QACH,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,SAAS;QACd,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,SAAS;QAChB,WAAW,EAAE,SAAS;QACtB,SAAS,EAAE,SAAS;QACpB,WAAW,EAAE,SAAS;QACtB,YAAY,EAAE,SAAS;QACvB,UAAU,EAAE,SAAS;QACrB,aAAa,EAAE,SAAS;QACxB,UAAU,EAAE,SAAS;QACrB,WAAW,EAAE,SAAS;QACtB,mBAAmB,EAAE,SAAS;QAC9B,2BAA2B,EAAE,SAAS;QACtC,yBAAyB,EAAE,0BAA0B;QACrD,8BAA8B,EAAE,0BAA0B;QAC1D,+BAA+B,EAAE,oBAAoB;KACxD;CACJ,CAAC;AAEF,IAAiB,aAAa,CAY7B;AAZD,WAAiB,aAAa;IAC1B,oHAAoH;IACpH,SAAgB,EAAE,CAAC,KAAY,EAAE,QAAkC;QAC/D,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC9F,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC9F,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC;IACpG,CAAC;IAJe,cAAA,EAAE,KAIjB,CAAA;IAED,gDAAgD;IAChD,SAAgB,UAAU,CAAC,QAAkC;QACzD,OAAO,QAAQ,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,IAAI,WAAW,CAAC;IACvD,CAAC;IAFe,cAAA,UAAU,aAEzB,CAAA;AACL,CAAC,EAZgB,aAAa,aAAb,aAAa,GAAb,aAAa,QAY7B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=terminal-theme.spec.d.ts.map