@celljs/ta-web 0.0.0-stage → 4.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1077) hide show
  1. package/README.md +83 -2
  2. package/esm/browser/assistant/assistant-export.d.ts +13 -0
  3. package/esm/browser/assistant/assistant-export.js +33 -0
  4. package/esm/browser/assistant/assistant-export.js.map +1 -0
  5. package/esm/browser/assistant/assistant-extension.d.ts +20 -0
  6. package/esm/browser/assistant/assistant-extension.js +153 -0
  7. package/esm/browser/assistant/assistant-extension.js.map +1 -0
  8. package/esm/browser/assistant/assistant-hooks.d.ts +8 -0
  9. package/esm/browser/assistant/assistant-hooks.js +55 -0
  10. package/esm/browser/assistant/assistant-hooks.js.map +1 -0
  11. package/esm/browser/assistant/assistant-protocol.d.ts +51 -0
  12. package/esm/browser/assistant/assistant-protocol.js +2 -0
  13. package/esm/browser/assistant/assistant-protocol.js.map +1 -0
  14. package/esm/browser/assistant/assistant-tasks.d.ts +48 -0
  15. package/esm/browser/assistant/assistant-tasks.js +115 -0
  16. package/esm/browser/assistant/assistant-tasks.js.map +1 -0
  17. package/esm/browser/assistant/assistant-view.d.ts +21 -0
  18. package/esm/browser/assistant/assistant-view.js +324 -0
  19. package/esm/browser/assistant/assistant-view.js.map +1 -0
  20. package/esm/browser/assistant/assistant.d.ts +51 -0
  21. package/esm/browser/assistant/assistant.js +302 -0
  22. package/esm/browser/assistant/assistant.js.map +1 -0
  23. package/esm/browser/assistant/voice.d.ts +14 -0
  24. package/esm/browser/assistant/voice.js +72 -0
  25. package/esm/browser/assistant/voice.js.map +1 -0
  26. package/esm/browser/avatar/dino-avatar.d.ts +139 -0
  27. package/esm/browser/avatar/dino-avatar.js +420 -0
  28. package/esm/browser/avatar/dino-avatar.js.map +1 -0
  29. package/esm/browser/avatar/dino-motion.d.ts +24 -0
  30. package/esm/browser/avatar/dino-motion.js +295 -0
  31. package/esm/browser/avatar/dino-motion.js.map +1 -0
  32. package/esm/browser/chat/chat-protocol.d.ts +46 -0
  33. package/esm/browser/chat/chat-protocol.js +2 -0
  34. package/esm/browser/chat/chat-protocol.js.map +1 -0
  35. package/esm/browser/chat/chat-view.d.ts +15 -0
  36. package/esm/browser/chat/chat-view.js +87 -0
  37. package/esm/browser/chat/chat-view.js.map +1 -0
  38. package/esm/browser/chat/chat.d.ts +69 -0
  39. package/esm/browser/chat/chat.js +343 -0
  40. package/esm/browser/chat/chat.js.map +1 -0
  41. package/esm/browser/components/account-menu.d.ts +8 -0
  42. package/esm/browser/components/account-menu.js +82 -0
  43. package/esm/browser/components/account-menu.js.map +1 -0
  44. package/esm/browser/components/agent-settings-view.d.ts +23 -0
  45. package/esm/browser/components/agent-settings-view.js +105 -0
  46. package/esm/browser/components/agent-settings-view.js.map +1 -0
  47. package/esm/browser/components/app-view.d.ts +9 -0
  48. package/esm/browser/components/app-view.js +405 -0
  49. package/esm/browser/components/app-view.js.map +1 -0
  50. package/esm/browser/components/auth-pictures.d.ts +6 -0
  51. package/esm/browser/components/auth-pictures.js +37 -0
  52. package/esm/browser/components/auth-pictures.js.map +1 -0
  53. package/esm/browser/components/auth-view.d.ts +54 -0
  54. package/esm/browser/components/auth-view.js +300 -0
  55. package/esm/browser/components/auth-view.js.map +1 -0
  56. package/esm/browser/components/callout.d.ts +18 -0
  57. package/esm/browser/components/callout.js +17 -0
  58. package/esm/browser/components/callout.js.map +1 -0
  59. package/esm/browser/components/chat-list.d.ts +52 -0
  60. package/esm/browser/components/chat-list.js +189 -0
  61. package/esm/browser/components/chat-list.js.map +1 -0
  62. package/esm/browser/components/code-editor.d.ts +7 -0
  63. package/esm/browser/components/code-editor.js +85 -0
  64. package/esm/browser/components/code-editor.js.map +1 -0
  65. package/esm/browser/components/composer-box.d.ts +73 -0
  66. package/esm/browser/components/composer-box.js +297 -0
  67. package/esm/browser/components/composer-box.js.map +1 -0
  68. package/esm/browser/components/composer-menu.d.ts +17 -0
  69. package/esm/browser/components/composer-menu.js +18 -0
  70. package/esm/browser/components/composer-menu.js.map +1 -0
  71. package/esm/browser/components/composer.d.ts +37 -0
  72. package/esm/browser/components/composer.js +99 -0
  73. package/esm/browser/components/composer.js.map +1 -0
  74. package/esm/browser/components/connection-bar.d.ts +6 -0
  75. package/esm/browser/components/connection-bar.js +73 -0
  76. package/esm/browser/components/connection-bar.js.map +1 -0
  77. package/esm/browser/components/context-menu.d.ts +12 -0
  78. package/esm/browser/components/context-menu.js +68 -0
  79. package/esm/browser/components/context-menu.js.map +1 -0
  80. package/esm/browser/components/conversation-scroll.d.ts +13 -0
  81. package/esm/browser/components/conversation-scroll.js +121 -0
  82. package/esm/browser/components/conversation-scroll.js.map +1 -0
  83. package/esm/browser/components/dialog-view.d.ts +9 -0
  84. package/esm/browser/components/dialog-view.js +41 -0
  85. package/esm/browser/components/dialog-view.js.map +1 -0
  86. package/esm/browser/components/diff-editor.d.ts +10 -0
  87. package/esm/browser/components/diff-editor.js +101 -0
  88. package/esm/browser/components/diff-editor.js.map +1 -0
  89. package/esm/browser/components/diff-view.d.ts +4 -0
  90. package/esm/browser/components/diff-view.js +11 -0
  91. package/esm/browser/components/diff-view.js.map +1 -0
  92. package/esm/browser/components/dino.d.ts +8 -0
  93. package/esm/browser/components/dino.js +14 -0
  94. package/esm/browser/components/dino.js.map +1 -0
  95. package/esm/browser/components/editor-area.d.ts +28 -0
  96. package/esm/browser/components/editor-area.js +134 -0
  97. package/esm/browser/components/editor-area.js.map +1 -0
  98. package/esm/browser/components/folder-picker.d.ts +28 -0
  99. package/esm/browser/components/folder-picker.js +106 -0
  100. package/esm/browser/components/folder-picker.js.map +1 -0
  101. package/esm/browser/components/fork-view.d.ts +14 -0
  102. package/esm/browser/components/fork-view.js +43 -0
  103. package/esm/browser/components/fork-view.js.map +1 -0
  104. package/esm/browser/components/hero-cards.d.ts +20 -0
  105. package/esm/browser/components/hero-cards.js +109 -0
  106. package/esm/browser/components/hero-cards.js.map +1 -0
  107. package/esm/browser/components/icon.d.ts +29 -0
  108. package/esm/browser/components/icon.js +23 -0
  109. package/esm/browser/components/icon.js.map +1 -0
  110. package/esm/browser/components/link-dialog.d.ts +3 -0
  111. package/esm/browser/components/link-dialog.js +45 -0
  112. package/esm/browser/components/link-dialog.js.map +1 -0
  113. package/esm/browser/components/link.d.ts +19 -0
  114. package/esm/browser/components/link.js +56 -0
  115. package/esm/browser/components/link.js.map +1 -0
  116. package/esm/browser/components/manage-menu.d.ts +13 -0
  117. package/esm/browser/components/manage-menu.js +96 -0
  118. package/esm/browser/components/manage-menu.js.map +1 -0
  119. package/esm/browser/components/markdown.d.ts +9 -0
  120. package/esm/browser/components/markdown.js +98 -0
  121. package/esm/browser/components/markdown.js.map +1 -0
  122. package/esm/browser/components/math.d.ts +10 -0
  123. package/esm/browser/components/math.js +21 -0
  124. package/esm/browser/components/math.js.map +1 -0
  125. package/esm/browser/components/media.d.ts +11 -0
  126. package/esm/browser/components/media.js +76 -0
  127. package/esm/browser/components/media.js.map +1 -0
  128. package/esm/browser/components/mermaid-view.d.ts +10 -0
  129. package/esm/browser/components/mermaid-view.js +84 -0
  130. package/esm/browser/components/mermaid-view.js.map +1 -0
  131. package/esm/browser/components/message-actions.d.ts +12 -0
  132. package/esm/browser/components/message-actions.js +78 -0
  133. package/esm/browser/components/message-actions.js.map +1 -0
  134. package/esm/browser/components/message-footer.d.ts +29 -0
  135. package/esm/browser/components/message-footer.js +86 -0
  136. package/esm/browser/components/message-footer.js.map +1 -0
  137. package/esm/browser/components/message-list.d.ts +37 -0
  138. package/esm/browser/components/message-list.js +216 -0
  139. package/esm/browser/components/message-list.js.map +1 -0
  140. package/esm/browser/components/notice-center.d.ts +3 -0
  141. package/esm/browser/components/notice-center.js +114 -0
  142. package/esm/browser/components/notice-center.js.map +1 -0
  143. package/esm/browser/components/relay-view.d.ts +5 -0
  144. package/esm/browser/components/relay-view.js +114 -0
  145. package/esm/browser/components/relay-view.js.map +1 -0
  146. package/esm/browser/components/run-status.d.ts +9 -0
  147. package/esm/browser/components/run-status.js +54 -0
  148. package/esm/browser/components/run-status.js.map +1 -0
  149. package/esm/browser/components/session-settings.d.ts +37 -0
  150. package/esm/browser/components/session-settings.js +84 -0
  151. package/esm/browser/components/session-settings.js.map +1 -0
  152. package/esm/browser/components/session-view.d.ts +24 -0
  153. package/esm/browser/components/session-view.js +84 -0
  154. package/esm/browser/components/session-view.js.map +1 -0
  155. package/esm/browser/components/settings-controls.d.ts +40 -0
  156. package/esm/browser/components/settings-controls.js +28 -0
  157. package/esm/browser/components/settings-controls.js.map +1 -0
  158. package/esm/browser/components/settings-view.d.ts +22 -0
  159. package/esm/browser/components/settings-view.js +357 -0
  160. package/esm/browser/components/settings-view.js.map +1 -0
  161. package/esm/browser/components/split-pane.d.ts +24 -0
  162. package/esm/browser/components/split-pane.js +75 -0
  163. package/esm/browser/components/split-pane.js.map +1 -0
  164. package/esm/browser/components/ta-avatar.d.ts +13 -0
  165. package/esm/browser/components/ta-avatar.js +185 -0
  166. package/esm/browser/components/ta-avatar.js.map +1 -0
  167. package/esm/browser/components/tool-view.d.ts +18 -0
  168. package/esm/browser/components/tool-view.js +110 -0
  169. package/esm/browser/components/tool-view.js.map +1 -0
  170. package/esm/browser/components/trusted-domains.d.ts +3 -0
  171. package/esm/browser/components/trusted-domains.js +39 -0
  172. package/esm/browser/components/trusted-domains.js.map +1 -0
  173. package/esm/browser/components/web-composer.d.ts +14 -0
  174. package/esm/browser/components/web-composer.js +22 -0
  175. package/esm/browser/components/web-composer.js.map +1 -0
  176. package/esm/browser/components/web-dialog.d.ts +4 -0
  177. package/esm/browser/components/web-dialog.js +22 -0
  178. package/esm/browser/components/web-dialog.js.map +1 -0
  179. package/esm/browser/components/workbench-toggle.d.ts +12 -0
  180. package/esm/browser/components/workbench-toggle.js +17 -0
  181. package/esm/browser/components/workbench-toggle.js.map +1 -0
  182. package/esm/browser/components/workbench-view.d.ts +8 -0
  183. package/esm/browser/components/workbench-view.js +62 -0
  184. package/esm/browser/components/workbench-view.js.map +1 -0
  185. package/esm/browser/components/working-directory.d.ts +5 -0
  186. package/esm/browser/components/working-directory.js +25 -0
  187. package/esm/browser/components/working-directory.js.map +1 -0
  188. package/esm/browser/editor/monaco-loader.d.ts +60 -0
  189. package/esm/browser/editor/monaco-loader.js +135 -0
  190. package/esm/browser/editor/monaco-loader.js.map +1 -0
  191. package/esm/browser/editor/monaco.d.ts +45 -0
  192. package/esm/browser/editor/monaco.js +54 -0
  193. package/esm/browser/editor/monaco.js.map +1 -0
  194. package/esm/browser/extension/extension-view.d.ts +35 -0
  195. package/esm/browser/extension/extension-view.js +53 -0
  196. package/esm/browser/extension/extension-view.js.map +1 -0
  197. package/esm/browser/extension/icons.d.ts +3 -0
  198. package/esm/browser/extension/icons.js +82 -0
  199. package/esm/browser/extension/icons.js.map +1 -0
  200. package/esm/browser/extension/web-extension-api.d.ts +362 -0
  201. package/esm/browser/extension/web-extension-api.js +2 -0
  202. package/esm/browser/extension/web-extension-api.js.map +1 -0
  203. package/esm/browser/extension/web-extension-protocol.d.ts +132 -0
  204. package/esm/browser/extension/web-extension-protocol.js +10 -0
  205. package/esm/browser/extension/web-extension-protocol.js.map +1 -0
  206. package/esm/browser/extension/web-extensions.d.ts +118 -0
  207. package/esm/browser/extension/web-extensions.js +654 -0
  208. package/esm/browser/extension/web-extensions.js.map +1 -0
  209. package/esm/browser/hooks.d.ts +21 -0
  210. package/esm/browser/hooks.js +65 -0
  211. package/esm/browser/hooks.js.map +1 -0
  212. package/esm/browser/i18n/locales.d.ts +435 -0
  213. package/esm/browser/i18n/locales.js +35 -0
  214. package/esm/browser/i18n/locales.js.map +1 -0
  215. package/esm/browser/i18n/messages.d.ts +427 -0
  216. package/esm/browser/i18n/messages.js +858 -0
  217. package/esm/browser/i18n/messages.js.map +1 -0
  218. package/esm/browser/i18n/use-t.d.ts +7 -0
  219. package/esm/browser/i18n/use-t.js +18 -0
  220. package/esm/browser/i18n/use-t.js.map +1 -0
  221. package/esm/browser/index.d.ts +52 -0
  222. package/esm/browser/index.js +53 -0
  223. package/esm/browser/index.js.map +1 -0
  224. package/esm/browser/links/links-protocol.d.ts +35 -0
  225. package/esm/browser/links/links-protocol.js +2 -0
  226. package/esm/browser/links/links-protocol.js.map +1 -0
  227. package/esm/browser/links/links.d.ts +32 -0
  228. package/esm/browser/links/links.js +141 -0
  229. package/esm/browser/links/links.js.map +1 -0
  230. package/esm/browser/markdown/hooks.d.ts +6 -0
  231. package/esm/browser/markdown/hooks.js +21 -0
  232. package/esm/browser/markdown/hooks.js.map +1 -0
  233. package/esm/browser/markdown/lazy.d.ts +21 -0
  234. package/esm/browser/markdown/lazy.js +39 -0
  235. package/esm/browser/markdown/lazy.js.map +1 -0
  236. package/esm/browser/markdown/math.d.ts +18 -0
  237. package/esm/browser/markdown/math.js +30 -0
  238. package/esm/browser/markdown/math.js.map +1 -0
  239. package/esm/browser/markdown/mermaid.d.ts +20 -0
  240. package/esm/browser/markdown/mermaid.js +84 -0
  241. package/esm/browser/markdown/mermaid.js.map +1 -0
  242. package/esm/browser/module.d.ts +4 -0
  243. package/esm/browser/module.js +6 -0
  244. package/esm/browser/module.js.map +1 -0
  245. package/esm/browser/notices/notices-protocol.d.ts +82 -0
  246. package/esm/browser/notices/notices-protocol.js +2 -0
  247. package/esm/browser/notices/notices-protocol.js.map +1 -0
  248. package/esm/browser/notices/notices.d.ts +47 -0
  249. package/esm/browser/notices/notices.js +162 -0
  250. package/esm/browser/notices/notices.js.map +1 -0
  251. package/esm/browser/pwa/pwa-protocol.d.ts +20 -0
  252. package/esm/browser/pwa/pwa-protocol.js +2 -0
  253. package/esm/browser/pwa/pwa-protocol.js.map +1 -0
  254. package/esm/browser/pwa/pwa.d.ts +39 -0
  255. package/esm/browser/pwa/pwa.js +120 -0
  256. package/esm/browser/pwa/pwa.js.map +1 -0
  257. package/esm/browser/settings/agent-settings.d.ts +33 -0
  258. package/esm/browser/settings/agent-settings.js +85 -0
  259. package/esm/browser/settings/agent-settings.js.map +1 -0
  260. package/esm/browser/settings/settings-protocol.d.ts +44 -0
  261. package/esm/browser/settings/settings-protocol.js +35 -0
  262. package/esm/browser/settings/settings-protocol.js.map +1 -0
  263. package/esm/browser/settings/settings.d.ts +31 -0
  264. package/esm/browser/settings/settings.js +102 -0
  265. package/esm/browser/settings/settings.js.map +1 -0
  266. package/esm/browser/state/state-protocol.d.ts +48 -0
  267. package/esm/browser/state/state-protocol.js +32 -0
  268. package/esm/browser/state/state-protocol.js.map +1 -0
  269. package/esm/browser/state/state.d.ts +39 -0
  270. package/esm/browser/state/state.js +210 -0
  271. package/esm/browser/state/state.js.map +1 -0
  272. package/esm/browser/style/base.d.ts +2 -0
  273. package/esm/browser/style/base.js +140 -0
  274. package/esm/browser/style/base.js.map +1 -0
  275. package/esm/browser/style/conversation.d.ts +2 -0
  276. package/esm/browser/style/conversation.js +201 -0
  277. package/esm/browser/style/conversation.js.map +1 -0
  278. package/esm/browser/style/layout.d.ts +2 -0
  279. package/esm/browser/style/layout.js +371 -0
  280. package/esm/browser/style/layout.js.map +1 -0
  281. package/esm/browser/style/pages.d.ts +2 -0
  282. package/esm/browser/style/pages.js +75 -0
  283. package/esm/browser/style/pages.js.map +1 -0
  284. package/esm/browser/style/shell.d.ts +2 -0
  285. package/esm/browser/style/shell.js +236 -0
  286. package/esm/browser/style/shell.js.map +1 -0
  287. package/esm/browser/style.d.ts +5 -0
  288. package/esm/browser/style.js +11 -0
  289. package/esm/browser/style.js.map +1 -0
  290. package/esm/browser/util/composer.d.ts +85 -0
  291. package/esm/browser/util/composer.js +121 -0
  292. package/esm/browser/util/composer.js.map +1 -0
  293. package/esm/browser/util/diff.d.ts +17 -0
  294. package/esm/browser/util/diff.js +29 -0
  295. package/esm/browser/util/diff.js.map +1 -0
  296. package/esm/browser/util/frame.d.ts +32 -0
  297. package/esm/browser/util/frame.js +47 -0
  298. package/esm/browser/util/frame.js.map +1 -0
  299. package/esm/browser/util/layout.d.ts +26 -0
  300. package/esm/browser/util/layout.js +54 -0
  301. package/esm/browser/util/layout.js.map +1 -0
  302. package/esm/browser/util/link.d.ts +53 -0
  303. package/esm/browser/util/link.js +229 -0
  304. package/esm/browser/util/link.js.map +1 -0
  305. package/esm/browser/util/markdown.d.ts +86 -0
  306. package/esm/browser/util/markdown.js +330 -0
  307. package/esm/browser/util/markdown.js.map +1 -0
  308. package/esm/browser/util/message.d.ts +74 -0
  309. package/esm/browser/util/message.js +143 -0
  310. package/esm/browser/util/message.js.map +1 -0
  311. package/esm/browser/util/process.d.ts +73 -0
  312. package/esm/browser/util/process.js +135 -0
  313. package/esm/browser/util/process.js.map +1 -0
  314. package/esm/browser/util/progress.d.ts +50 -0
  315. package/esm/browser/util/progress.js +143 -0
  316. package/esm/browser/util/progress.js.map +1 -0
  317. package/esm/browser/util/qr-code.d.ts +37 -0
  318. package/esm/browser/util/qr-code.js +349 -0
  319. package/esm/browser/util/qr-code.js.map +1 -0
  320. package/esm/browser/util/tool.d.ts +41 -0
  321. package/esm/browser/util/tool.js +151 -0
  322. package/esm/browser/util/tool.js.map +1 -0
  323. package/esm/browser/view.d.ts +3 -0
  324. package/esm/browser/view.js +16 -0
  325. package/esm/browser/view.js.map +1 -0
  326. package/esm/browser/workbench-protocol.d.ts +50 -0
  327. package/esm/browser/workbench-protocol.js +2 -0
  328. package/esm/browser/workbench-protocol.js.map +1 -0
  329. package/esm/browser/workbench.d.ts +63 -0
  330. package/esm/browser/workbench.js +278 -0
  331. package/esm/browser/workbench.js.map +1 -0
  332. package/esm/package.json +3 -0
  333. package/lib/browser/assistant/assistant-export.d.ts +14 -0
  334. package/lib/browser/assistant/assistant-export.d.ts.map +1 -0
  335. package/lib/browser/assistant/assistant-export.js +36 -0
  336. package/lib/browser/assistant/assistant-export.js.map +1 -0
  337. package/lib/browser/assistant/assistant-export.spec.d.ts +2 -0
  338. package/lib/browser/assistant/assistant-export.spec.d.ts.map +1 -0
  339. package/lib/browser/assistant/assistant-export.spec.js +27 -0
  340. package/lib/browser/assistant/assistant-export.spec.js.map +1 -0
  341. package/lib/browser/assistant/assistant-extension.d.ts +21 -0
  342. package/lib/browser/assistant/assistant-extension.d.ts.map +1 -0
  343. package/lib/browser/assistant/assistant-extension.js +189 -0
  344. package/lib/browser/assistant/assistant-extension.js.map +1 -0
  345. package/lib/browser/assistant/assistant-extension.spec.d.ts +2 -0
  346. package/lib/browser/assistant/assistant-extension.spec.d.ts.map +1 -0
  347. package/lib/browser/assistant/assistant-extension.spec.js +121 -0
  348. package/lib/browser/assistant/assistant-extension.spec.js.map +1 -0
  349. package/lib/browser/assistant/assistant-hooks.d.ts +9 -0
  350. package/lib/browser/assistant/assistant-hooks.d.ts.map +1 -0
  351. package/lib/browser/assistant/assistant-hooks.js +94 -0
  352. package/lib/browser/assistant/assistant-hooks.js.map +1 -0
  353. package/lib/browser/assistant/assistant-protocol.d.ts +52 -0
  354. package/lib/browser/assistant/assistant-protocol.d.ts.map +1 -0
  355. package/lib/browser/assistant/assistant-protocol.js +5 -0
  356. package/lib/browser/assistant/assistant-protocol.js.map +1 -0
  357. package/lib/browser/assistant/assistant-tasks.d.ts +49 -0
  358. package/lib/browser/assistant/assistant-tasks.d.ts.map +1 -0
  359. package/lib/browser/assistant/assistant-tasks.js +158 -0
  360. package/lib/browser/assistant/assistant-tasks.js.map +1 -0
  361. package/lib/browser/assistant/assistant-view.d.ts +22 -0
  362. package/lib/browser/assistant/assistant-view.d.ts.map +1 -0
  363. package/lib/browser/assistant/assistant-view.js +365 -0
  364. package/lib/browser/assistant/assistant-view.js.map +1 -0
  365. package/lib/browser/assistant/assistant.d.ts +52 -0
  366. package/lib/browser/assistant/assistant.d.ts.map +1 -0
  367. package/lib/browser/assistant/assistant.js +305 -0
  368. package/lib/browser/assistant/assistant.js.map +1 -0
  369. package/lib/browser/assistant/assistant.spec.d.ts +2 -0
  370. package/lib/browser/assistant/assistant.spec.d.ts.map +1 -0
  371. package/lib/browser/assistant/assistant.spec.js +80 -0
  372. package/lib/browser/assistant/assistant.spec.js.map +1 -0
  373. package/lib/browser/assistant/voice.d.ts +15 -0
  374. package/lib/browser/assistant/voice.d.ts.map +1 -0
  375. package/lib/browser/assistant/voice.js +75 -0
  376. package/lib/browser/assistant/voice.js.map +1 -0
  377. package/lib/browser/assistant/voice.spec.d.ts +2 -0
  378. package/lib/browser/assistant/voice.spec.d.ts.map +1 -0
  379. package/lib/browser/assistant/voice.spec.js +10 -0
  380. package/lib/browser/assistant/voice.spec.js.map +1 -0
  381. package/lib/browser/avatar/dino-avatar.d.ts +140 -0
  382. package/lib/browser/avatar/dino-avatar.d.ts.map +1 -0
  383. package/lib/browser/avatar/dino-avatar.js +429 -0
  384. package/lib/browser/avatar/dino-avatar.js.map +1 -0
  385. package/lib/browser/avatar/dino-avatar.spec.d.ts +2 -0
  386. package/lib/browser/avatar/dino-avatar.spec.d.ts.map +1 -0
  387. package/lib/browser/avatar/dino-avatar.spec.js +143 -0
  388. package/lib/browser/avatar/dino-avatar.spec.js.map +1 -0
  389. package/lib/browser/avatar/dino-motion.d.ts +25 -0
  390. package/lib/browser/avatar/dino-motion.d.ts.map +1 -0
  391. package/lib/browser/avatar/dino-motion.js +298 -0
  392. package/lib/browser/avatar/dino-motion.js.map +1 -0
  393. package/lib/browser/chat/chat-protocol.d.ts +47 -0
  394. package/lib/browser/chat/chat-protocol.d.ts.map +1 -0
  395. package/lib/browser/chat/chat-protocol.js +5 -0
  396. package/lib/browser/chat/chat-protocol.js.map +1 -0
  397. package/lib/browser/chat/chat-view.d.ts +16 -0
  398. package/lib/browser/chat/chat-view.d.ts.map +1 -0
  399. package/lib/browser/chat/chat-view.js +125 -0
  400. package/lib/browser/chat/chat-view.js.map +1 -0
  401. package/lib/browser/chat/chat.d.ts +70 -0
  402. package/lib/browser/chat/chat.d.ts.map +1 -0
  403. package/lib/browser/chat/chat.js +346 -0
  404. package/lib/browser/chat/chat.js.map +1 -0
  405. package/lib/browser/chat/chat.spec.d.ts +2 -0
  406. package/lib/browser/chat/chat.spec.d.ts.map +1 -0
  407. package/lib/browser/chat/chat.spec.js +185 -0
  408. package/lib/browser/chat/chat.spec.js.map +1 -0
  409. package/lib/browser/components/account-menu.d.ts +9 -0
  410. package/lib/browser/components/account-menu.d.ts.map +1 -0
  411. package/lib/browser/components/account-menu.js +119 -0
  412. package/lib/browser/components/account-menu.js.map +1 -0
  413. package/lib/browser/components/agent-settings-view.d.ts +24 -0
  414. package/lib/browser/components/agent-settings-view.d.ts.map +1 -0
  415. package/lib/browser/components/agent-settings-view.js +143 -0
  416. package/lib/browser/components/agent-settings-view.js.map +1 -0
  417. package/lib/browser/components/app-view.d.ts +10 -0
  418. package/lib/browser/components/app-view.d.ts.map +1 -0
  419. package/lib/browser/components/app-view.js +441 -0
  420. package/lib/browser/components/app-view.js.map +1 -0
  421. package/lib/browser/components/auth-pictures.d.ts +7 -0
  422. package/lib/browser/components/auth-pictures.d.ts.map +1 -0
  423. package/lib/browser/components/auth-pictures.js +73 -0
  424. package/lib/browser/components/auth-pictures.js.map +1 -0
  425. package/lib/browser/components/auth-view.d.ts +55 -0
  426. package/lib/browser/components/auth-view.d.ts.map +1 -0
  427. package/lib/browser/components/auth-view.js +340 -0
  428. package/lib/browser/components/auth-view.js.map +1 -0
  429. package/lib/browser/components/callout.d.ts +19 -0
  430. package/lib/browser/components/callout.d.ts.map +1 -0
  431. package/lib/browser/components/callout.js +54 -0
  432. package/lib/browser/components/callout.js.map +1 -0
  433. package/lib/browser/components/chat-list.d.ts +53 -0
  434. package/lib/browser/components/chat-list.d.ts.map +1 -0
  435. package/lib/browser/components/chat-list.js +226 -0
  436. package/lib/browser/components/chat-list.js.map +1 -0
  437. package/lib/browser/components/chat-list.spec.d.ts +2 -0
  438. package/lib/browser/components/chat-list.spec.d.ts.map +1 -0
  439. package/lib/browser/components/chat-list.spec.js +61 -0
  440. package/lib/browser/components/chat-list.spec.js.map +1 -0
  441. package/lib/browser/components/code-editor.d.ts +8 -0
  442. package/lib/browser/components/code-editor.d.ts.map +1 -0
  443. package/lib/browser/components/code-editor.js +121 -0
  444. package/lib/browser/components/code-editor.js.map +1 -0
  445. package/lib/browser/components/composer-box.d.ts +74 -0
  446. package/lib/browser/components/composer-box.d.ts.map +1 -0
  447. package/lib/browser/components/composer-box.js +334 -0
  448. package/lib/browser/components/composer-box.js.map +1 -0
  449. package/lib/browser/components/composer-menu.d.ts +18 -0
  450. package/lib/browser/components/composer-menu.d.ts.map +1 -0
  451. package/lib/browser/components/composer-menu.js +54 -0
  452. package/lib/browser/components/composer-menu.js.map +1 -0
  453. package/lib/browser/components/composer.d.ts +38 -0
  454. package/lib/browser/components/composer.d.ts.map +1 -0
  455. package/lib/browser/components/composer.js +135 -0
  456. package/lib/browser/components/composer.js.map +1 -0
  457. package/lib/browser/components/composer.spec.d.ts +2 -0
  458. package/lib/browser/components/composer.spec.d.ts.map +1 -0
  459. package/lib/browser/components/composer.spec.js +129 -0
  460. package/lib/browser/components/composer.spec.js.map +1 -0
  461. package/lib/browser/components/connection-bar.d.ts +7 -0
  462. package/lib/browser/components/connection-bar.d.ts.map +1 -0
  463. package/lib/browser/components/connection-bar.js +109 -0
  464. package/lib/browser/components/connection-bar.js.map +1 -0
  465. package/lib/browser/components/context-menu.d.ts +13 -0
  466. package/lib/browser/components/context-menu.d.ts.map +1 -0
  467. package/lib/browser/components/context-menu.js +104 -0
  468. package/lib/browser/components/context-menu.js.map +1 -0
  469. package/lib/browser/components/conversation-scroll.d.ts +14 -0
  470. package/lib/browser/components/conversation-scroll.d.ts.map +1 -0
  471. package/lib/browser/components/conversation-scroll.js +158 -0
  472. package/lib/browser/components/conversation-scroll.js.map +1 -0
  473. package/lib/browser/components/dialog-view.d.ts +10 -0
  474. package/lib/browser/components/dialog-view.d.ts.map +1 -0
  475. package/lib/browser/components/dialog-view.js +77 -0
  476. package/lib/browser/components/dialog-view.js.map +1 -0
  477. package/lib/browser/components/diff-editor.d.ts +11 -0
  478. package/lib/browser/components/diff-editor.d.ts.map +1 -0
  479. package/lib/browser/components/diff-editor.js +137 -0
  480. package/lib/browser/components/diff-editor.js.map +1 -0
  481. package/lib/browser/components/diff-view.d.ts +5 -0
  482. package/lib/browser/components/diff-view.d.ts.map +1 -0
  483. package/lib/browser/components/diff-view.js +47 -0
  484. package/lib/browser/components/diff-view.js.map +1 -0
  485. package/lib/browser/components/dino.d.ts +9 -0
  486. package/lib/browser/components/dino.d.ts.map +1 -0
  487. package/lib/browser/components/dino.js +52 -0
  488. package/lib/browser/components/dino.js.map +1 -0
  489. package/lib/browser/components/editor-area.d.ts +29 -0
  490. package/lib/browser/components/editor-area.d.ts.map +1 -0
  491. package/lib/browser/components/editor-area.js +171 -0
  492. package/lib/browser/components/editor-area.js.map +1 -0
  493. package/lib/browser/components/folder-picker.d.ts +29 -0
  494. package/lib/browser/components/folder-picker.d.ts.map +1 -0
  495. package/lib/browser/components/folder-picker.js +144 -0
  496. package/lib/browser/components/folder-picker.js.map +1 -0
  497. package/lib/browser/components/folder-picker.spec.d.ts +2 -0
  498. package/lib/browser/components/folder-picker.spec.d.ts.map +1 -0
  499. package/lib/browser/components/folder-picker.spec.js +28 -0
  500. package/lib/browser/components/folder-picker.spec.js.map +1 -0
  501. package/lib/browser/components/fork-view.d.ts +15 -0
  502. package/lib/browser/components/fork-view.d.ts.map +1 -0
  503. package/lib/browser/components/fork-view.js +79 -0
  504. package/lib/browser/components/fork-view.js.map +1 -0
  505. package/lib/browser/components/hero-cards.d.ts +21 -0
  506. package/lib/browser/components/hero-cards.d.ts.map +1 -0
  507. package/lib/browser/components/hero-cards.js +146 -0
  508. package/lib/browser/components/hero-cards.js.map +1 -0
  509. package/lib/browser/components/icon.d.ts +30 -0
  510. package/lib/browser/components/icon.d.ts.map +1 -0
  511. package/lib/browser/components/icon.js +61 -0
  512. package/lib/browser/components/icon.js.map +1 -0
  513. package/lib/browser/components/link-dialog.d.ts +4 -0
  514. package/lib/browser/components/link-dialog.d.ts.map +1 -0
  515. package/lib/browser/components/link-dialog.js +81 -0
  516. package/lib/browser/components/link-dialog.js.map +1 -0
  517. package/lib/browser/components/link.d.ts +20 -0
  518. package/lib/browser/components/link.d.ts.map +1 -0
  519. package/lib/browser/components/link.js +94 -0
  520. package/lib/browser/components/link.js.map +1 -0
  521. package/lib/browser/components/manage-menu.d.ts +14 -0
  522. package/lib/browser/components/manage-menu.d.ts.map +1 -0
  523. package/lib/browser/components/manage-menu.js +132 -0
  524. package/lib/browser/components/manage-menu.js.map +1 -0
  525. package/lib/browser/components/markdown.d.ts +10 -0
  526. package/lib/browser/components/markdown.d.ts.map +1 -0
  527. package/lib/browser/components/markdown.js +135 -0
  528. package/lib/browser/components/markdown.js.map +1 -0
  529. package/lib/browser/components/markdown.spec.d.ts +2 -0
  530. package/lib/browser/components/markdown.spec.d.ts.map +1 -0
  531. package/lib/browser/components/markdown.spec.js +72 -0
  532. package/lib/browser/components/markdown.spec.js.map +1 -0
  533. package/lib/browser/components/math.d.ts +11 -0
  534. package/lib/browser/components/math.d.ts.map +1 -0
  535. package/lib/browser/components/math.js +57 -0
  536. package/lib/browser/components/math.js.map +1 -0
  537. package/lib/browser/components/media.d.ts +12 -0
  538. package/lib/browser/components/media.d.ts.map +1 -0
  539. package/lib/browser/components/media.js +113 -0
  540. package/lib/browser/components/media.js.map +1 -0
  541. package/lib/browser/components/mermaid-view.d.ts +11 -0
  542. package/lib/browser/components/mermaid-view.d.ts.map +1 -0
  543. package/lib/browser/components/mermaid-view.js +120 -0
  544. package/lib/browser/components/mermaid-view.js.map +1 -0
  545. package/lib/browser/components/message-actions.d.ts +13 -0
  546. package/lib/browser/components/message-actions.d.ts.map +1 -0
  547. package/lib/browser/components/message-actions.js +114 -0
  548. package/lib/browser/components/message-actions.js.map +1 -0
  549. package/lib/browser/components/message-footer.d.ts +30 -0
  550. package/lib/browser/components/message-footer.d.ts.map +1 -0
  551. package/lib/browser/components/message-footer.js +124 -0
  552. package/lib/browser/components/message-footer.js.map +1 -0
  553. package/lib/browser/components/message-list.d.ts +38 -0
  554. package/lib/browser/components/message-list.d.ts.map +1 -0
  555. package/lib/browser/components/message-list.js +257 -0
  556. package/lib/browser/components/message-list.js.map +1 -0
  557. package/lib/browser/components/message-list.spec.d.ts +2 -0
  558. package/lib/browser/components/message-list.spec.d.ts.map +1 -0
  559. package/lib/browser/components/message-list.spec.js +269 -0
  560. package/lib/browser/components/message-list.spec.js.map +1 -0
  561. package/lib/browser/components/notice-center.d.ts +4 -0
  562. package/lib/browser/components/notice-center.d.ts.map +1 -0
  563. package/lib/browser/components/notice-center.js +150 -0
  564. package/lib/browser/components/notice-center.js.map +1 -0
  565. package/lib/browser/components/relay-view.d.ts +6 -0
  566. package/lib/browser/components/relay-view.d.ts.map +1 -0
  567. package/lib/browser/components/relay-view.js +150 -0
  568. package/lib/browser/components/relay-view.js.map +1 -0
  569. package/lib/browser/components/run-status.d.ts +10 -0
  570. package/lib/browser/components/run-status.d.ts.map +1 -0
  571. package/lib/browser/components/run-status.js +90 -0
  572. package/lib/browser/components/run-status.js.map +1 -0
  573. package/lib/browser/components/session-settings.d.ts +38 -0
  574. package/lib/browser/components/session-settings.d.ts.map +1 -0
  575. package/lib/browser/components/session-settings.js +121 -0
  576. package/lib/browser/components/session-settings.js.map +1 -0
  577. package/lib/browser/components/session-settings.spec.d.ts +2 -0
  578. package/lib/browser/components/session-settings.spec.d.ts.map +1 -0
  579. package/lib/browser/components/session-settings.spec.js +47 -0
  580. package/lib/browser/components/session-settings.spec.js.map +1 -0
  581. package/lib/browser/components/session-view.d.ts +25 -0
  582. package/lib/browser/components/session-view.d.ts.map +1 -0
  583. package/lib/browser/components/session-view.js +120 -0
  584. package/lib/browser/components/session-view.js.map +1 -0
  585. package/lib/browser/components/settings-controls.d.ts +41 -0
  586. package/lib/browser/components/settings-controls.d.ts.map +1 -0
  587. package/lib/browser/components/settings-controls.js +68 -0
  588. package/lib/browser/components/settings-controls.js.map +1 -0
  589. package/lib/browser/components/settings-view.d.ts +23 -0
  590. package/lib/browser/components/settings-view.d.ts.map +1 -0
  591. package/lib/browser/components/settings-view.js +394 -0
  592. package/lib/browser/components/settings-view.js.map +1 -0
  593. package/lib/browser/components/split-pane.d.ts +25 -0
  594. package/lib/browser/components/split-pane.d.ts.map +1 -0
  595. package/lib/browser/components/split-pane.js +113 -0
  596. package/lib/browser/components/split-pane.js.map +1 -0
  597. package/lib/browser/components/ta-avatar.d.ts +14 -0
  598. package/lib/browser/components/ta-avatar.d.ts.map +1 -0
  599. package/lib/browser/components/ta-avatar.js +221 -0
  600. package/lib/browser/components/ta-avatar.js.map +1 -0
  601. package/lib/browser/components/ta-avatar.spec.d.ts +2 -0
  602. package/lib/browser/components/ta-avatar.spec.d.ts.map +1 -0
  603. package/lib/browser/components/ta-avatar.spec.js +60 -0
  604. package/lib/browser/components/ta-avatar.spec.js.map +1 -0
  605. package/lib/browser/components/tool-view.d.ts +19 -0
  606. package/lib/browser/components/tool-view.d.ts.map +1 -0
  607. package/lib/browser/components/tool-view.js +146 -0
  608. package/lib/browser/components/tool-view.js.map +1 -0
  609. package/lib/browser/components/trusted-domains.d.ts +4 -0
  610. package/lib/browser/components/trusted-domains.d.ts.map +1 -0
  611. package/lib/browser/components/trusted-domains.js +75 -0
  612. package/lib/browser/components/trusted-domains.js.map +1 -0
  613. package/lib/browser/components/web-composer.d.ts +15 -0
  614. package/lib/browser/components/web-composer.d.ts.map +1 -0
  615. package/lib/browser/components/web-composer.js +58 -0
  616. package/lib/browser/components/web-composer.js.map +1 -0
  617. package/lib/browser/components/web-dialog.d.ts +5 -0
  618. package/lib/browser/components/web-dialog.d.ts.map +1 -0
  619. package/lib/browser/components/web-dialog.js +58 -0
  620. package/lib/browser/components/web-dialog.js.map +1 -0
  621. package/lib/browser/components/workbench-toggle.d.ts +13 -0
  622. package/lib/browser/components/workbench-toggle.d.ts.map +1 -0
  623. package/lib/browser/components/workbench-toggle.js +54 -0
  624. package/lib/browser/components/workbench-toggle.js.map +1 -0
  625. package/lib/browser/components/workbench-toggle.spec.d.ts +2 -0
  626. package/lib/browser/components/workbench-toggle.spec.d.ts.map +1 -0
  627. package/lib/browser/components/workbench-toggle.spec.js +64 -0
  628. package/lib/browser/components/workbench-toggle.spec.js.map +1 -0
  629. package/lib/browser/components/workbench-view.d.ts +9 -0
  630. package/lib/browser/components/workbench-view.d.ts.map +1 -0
  631. package/lib/browser/components/workbench-view.js +99 -0
  632. package/lib/browser/components/workbench-view.js.map +1 -0
  633. package/lib/browser/components/working-directory.d.ts +6 -0
  634. package/lib/browser/components/working-directory.d.ts.map +1 -0
  635. package/lib/browser/components/working-directory.js +61 -0
  636. package/lib/browser/components/working-directory.js.map +1 -0
  637. package/lib/browser/editor/monaco-loader.d.ts +61 -0
  638. package/lib/browser/editor/monaco-loader.d.ts.map +1 -0
  639. package/lib/browser/editor/monaco-loader.js +138 -0
  640. package/lib/browser/editor/monaco-loader.js.map +1 -0
  641. package/lib/browser/editor/monaco-loader.spec.d.ts +2 -0
  642. package/lib/browser/editor/monaco-loader.spec.d.ts.map +1 -0
  643. package/lib/browser/editor/monaco-loader.spec.js +39 -0
  644. package/lib/browser/editor/monaco-loader.spec.js.map +1 -0
  645. package/lib/browser/editor/monaco.d.ts +46 -0
  646. package/lib/browser/editor/monaco.d.ts.map +1 -0
  647. package/lib/browser/editor/monaco.js +93 -0
  648. package/lib/browser/editor/monaco.js.map +1 -0
  649. package/lib/browser/extension/extension-view.d.ts +36 -0
  650. package/lib/browser/extension/extension-view.d.ts.map +1 -0
  651. package/lib/browser/extension/extension-view.js +91 -0
  652. package/lib/browser/extension/extension-view.js.map +1 -0
  653. package/lib/browser/extension/icons.d.ts +4 -0
  654. package/lib/browser/extension/icons.d.ts.map +1 -0
  655. package/lib/browser/extension/icons.js +85 -0
  656. package/lib/browser/extension/icons.js.map +1 -0
  657. package/lib/browser/extension/web-extension-api.d.ts +363 -0
  658. package/lib/browser/extension/web-extension-api.d.ts.map +1 -0
  659. package/lib/browser/extension/web-extension-api.js +3 -0
  660. package/lib/browser/extension/web-extension-api.js.map +1 -0
  661. package/lib/browser/extension/web-extension-protocol.d.ts +133 -0
  662. package/lib/browser/extension/web-extension-protocol.d.ts.map +1 -0
  663. package/lib/browser/extension/web-extension-protocol.js +13 -0
  664. package/lib/browser/extension/web-extension-protocol.js.map +1 -0
  665. package/lib/browser/extension/web-extensions.d.ts +119 -0
  666. package/lib/browser/extension/web-extensions.d.ts.map +1 -0
  667. package/lib/browser/extension/web-extensions.js +690 -0
  668. package/lib/browser/extension/web-extensions.js.map +1 -0
  669. package/lib/browser/extension/web-extensions.spec.d.ts +2 -0
  670. package/lib/browser/extension/web-extensions.spec.d.ts.map +1 -0
  671. package/lib/browser/extension/web-extensions.spec.js +617 -0
  672. package/lib/browser/extension/web-extensions.spec.js.map +1 -0
  673. package/lib/browser/hooks.d.ts +22 -0
  674. package/lib/browser/hooks.d.ts.map +1 -0
  675. package/lib/browser/hooks.js +109 -0
  676. package/lib/browser/hooks.js.map +1 -0
  677. package/lib/browser/i18n/locales.d.ts +436 -0
  678. package/lib/browser/i18n/locales.d.ts.map +1 -0
  679. package/lib/browser/i18n/locales.js +38 -0
  680. package/lib/browser/i18n/locales.js.map +1 -0
  681. package/lib/browser/i18n/messages.d.ts +428 -0
  682. package/lib/browser/i18n/messages.d.ts.map +1 -0
  683. package/lib/browser/i18n/messages.js +862 -0
  684. package/lib/browser/i18n/messages.js.map +1 -0
  685. package/lib/browser/i18n/use-t.d.ts +8 -0
  686. package/lib/browser/i18n/use-t.d.ts.map +1 -0
  687. package/lib/browser/i18n/use-t.js +54 -0
  688. package/lib/browser/i18n/use-t.js.map +1 -0
  689. package/lib/browser/index.d.ts +53 -0
  690. package/lib/browser/index.d.ts.map +1 -0
  691. package/lib/browser/index.js +69 -0
  692. package/lib/browser/index.js.map +1 -0
  693. package/lib/browser/links/links-protocol.d.ts +36 -0
  694. package/lib/browser/links/links-protocol.d.ts.map +1 -0
  695. package/lib/browser/links/links-protocol.js +5 -0
  696. package/lib/browser/links/links-protocol.js.map +1 -0
  697. package/lib/browser/links/links.d.ts +33 -0
  698. package/lib/browser/links/links.d.ts.map +1 -0
  699. package/lib/browser/links/links.js +144 -0
  700. package/lib/browser/links/links.js.map +1 -0
  701. package/lib/browser/links/links.spec.d.ts +2 -0
  702. package/lib/browser/links/links.spec.d.ts.map +1 -0
  703. package/lib/browser/links/links.spec.js +123 -0
  704. package/lib/browser/links/links.spec.js.map +1 -0
  705. package/lib/browser/markdown/hooks.d.ts +7 -0
  706. package/lib/browser/markdown/hooks.d.ts.map +1 -0
  707. package/lib/browser/markdown/hooks.js +58 -0
  708. package/lib/browser/markdown/hooks.js.map +1 -0
  709. package/lib/browser/markdown/lazy.d.ts +22 -0
  710. package/lib/browser/markdown/lazy.d.ts.map +1 -0
  711. package/lib/browser/markdown/lazy.js +44 -0
  712. package/lib/browser/markdown/lazy.js.map +1 -0
  713. package/lib/browser/markdown/lazy.spec.d.ts +2 -0
  714. package/lib/browser/markdown/lazy.spec.d.ts.map +1 -0
  715. package/lib/browser/markdown/lazy.spec.js +35 -0
  716. package/lib/browser/markdown/lazy.spec.js.map +1 -0
  717. package/lib/browser/markdown/math.d.ts +19 -0
  718. package/lib/browser/markdown/math.d.ts.map +1 -0
  719. package/lib/browser/markdown/math.js +33 -0
  720. package/lib/browser/markdown/math.js.map +1 -0
  721. package/lib/browser/markdown/math.spec.d.ts +2 -0
  722. package/lib/browser/markdown/math.spec.d.ts.map +1 -0
  723. package/lib/browser/markdown/math.spec.js +24 -0
  724. package/lib/browser/markdown/math.spec.js.map +1 -0
  725. package/lib/browser/markdown/mermaid.d.ts +21 -0
  726. package/lib/browser/markdown/mermaid.d.ts.map +1 -0
  727. package/lib/browser/markdown/mermaid.js +87 -0
  728. package/lib/browser/markdown/mermaid.js.map +1 -0
  729. package/lib/browser/markdown/mermaid.spec.d.ts +2 -0
  730. package/lib/browser/markdown/mermaid.spec.d.ts.map +1 -0
  731. package/lib/browser/markdown/mermaid.spec.js +21 -0
  732. package/lib/browser/markdown/mermaid.spec.js.map +1 -0
  733. package/lib/browser/module.d.ts +5 -0
  734. package/lib/browser/module.d.ts.map +1 -0
  735. package/lib/browser/module.js +8 -0
  736. package/lib/browser/module.js.map +1 -0
  737. package/lib/browser/notices/notices-protocol.d.ts +83 -0
  738. package/lib/browser/notices/notices-protocol.d.ts.map +1 -0
  739. package/lib/browser/notices/notices-protocol.js +5 -0
  740. package/lib/browser/notices/notices-protocol.js.map +1 -0
  741. package/lib/browser/notices/notices.d.ts +48 -0
  742. package/lib/browser/notices/notices.d.ts.map +1 -0
  743. package/lib/browser/notices/notices.js +165 -0
  744. package/lib/browser/notices/notices.js.map +1 -0
  745. package/lib/browser/notices/notices.spec.d.ts +2 -0
  746. package/lib/browser/notices/notices.spec.d.ts.map +1 -0
  747. package/lib/browser/notices/notices.spec.js +96 -0
  748. package/lib/browser/notices/notices.spec.js.map +1 -0
  749. package/lib/browser/pwa/pwa-protocol.d.ts +21 -0
  750. package/lib/browser/pwa/pwa-protocol.d.ts.map +1 -0
  751. package/lib/browser/pwa/pwa-protocol.js +5 -0
  752. package/lib/browser/pwa/pwa-protocol.js.map +1 -0
  753. package/lib/browser/pwa/pwa.d.ts +40 -0
  754. package/lib/browser/pwa/pwa.d.ts.map +1 -0
  755. package/lib/browser/pwa/pwa.js +123 -0
  756. package/lib/browser/pwa/pwa.js.map +1 -0
  757. package/lib/browser/pwa/pwa.spec.d.ts +2 -0
  758. package/lib/browser/pwa/pwa.spec.d.ts.map +1 -0
  759. package/lib/browser/pwa/pwa.spec.js +134 -0
  760. package/lib/browser/pwa/pwa.spec.js.map +1 -0
  761. package/lib/browser/settings/agent-settings.d.ts +34 -0
  762. package/lib/browser/settings/agent-settings.d.ts.map +1 -0
  763. package/lib/browser/settings/agent-settings.js +88 -0
  764. package/lib/browser/settings/agent-settings.js.map +1 -0
  765. package/lib/browser/settings/agent-settings.spec.d.ts +2 -0
  766. package/lib/browser/settings/agent-settings.spec.d.ts.map +1 -0
  767. package/lib/browser/settings/agent-settings.spec.js +53 -0
  768. package/lib/browser/settings/agent-settings.spec.js.map +1 -0
  769. package/lib/browser/settings/settings-protocol.d.ts +45 -0
  770. package/lib/browser/settings/settings-protocol.d.ts.map +1 -0
  771. package/lib/browser/settings/settings-protocol.js +38 -0
  772. package/lib/browser/settings/settings-protocol.js.map +1 -0
  773. package/lib/browser/settings/settings.d.ts +32 -0
  774. package/lib/browser/settings/settings.d.ts.map +1 -0
  775. package/lib/browser/settings/settings.js +105 -0
  776. package/lib/browser/settings/settings.js.map +1 -0
  777. package/lib/browser/settings/settings.spec.d.ts +2 -0
  778. package/lib/browser/settings/settings.spec.d.ts.map +1 -0
  779. package/lib/browser/settings/settings.spec.js +32 -0
  780. package/lib/browser/settings/settings.spec.js.map +1 -0
  781. package/lib/browser/state/state-protocol.d.ts +49 -0
  782. package/lib/browser/state/state-protocol.d.ts.map +1 -0
  783. package/lib/browser/state/state-protocol.js +35 -0
  784. package/lib/browser/state/state-protocol.js.map +1 -0
  785. package/lib/browser/state/state.d.ts +40 -0
  786. package/lib/browser/state/state.d.ts.map +1 -0
  787. package/lib/browser/state/state.js +213 -0
  788. package/lib/browser/state/state.js.map +1 -0
  789. package/lib/browser/state/state.spec.d.ts +2 -0
  790. package/lib/browser/state/state.spec.d.ts.map +1 -0
  791. package/lib/browser/state/state.spec.js +201 -0
  792. package/lib/browser/state/state.spec.js.map +1 -0
  793. package/lib/browser/style/base.d.ts +3 -0
  794. package/lib/browser/style/base.d.ts.map +1 -0
  795. package/lib/browser/style/base.js +143 -0
  796. package/lib/browser/style/base.js.map +1 -0
  797. package/lib/browser/style/conversation.d.ts +3 -0
  798. package/lib/browser/style/conversation.d.ts.map +1 -0
  799. package/lib/browser/style/conversation.js +204 -0
  800. package/lib/browser/style/conversation.js.map +1 -0
  801. package/lib/browser/style/layout.d.ts +3 -0
  802. package/lib/browser/style/layout.d.ts.map +1 -0
  803. package/lib/browser/style/layout.js +374 -0
  804. package/lib/browser/style/layout.js.map +1 -0
  805. package/lib/browser/style/pages.d.ts +3 -0
  806. package/lib/browser/style/pages.d.ts.map +1 -0
  807. package/lib/browser/style/pages.js +78 -0
  808. package/lib/browser/style/pages.js.map +1 -0
  809. package/lib/browser/style/shell.d.ts +3 -0
  810. package/lib/browser/style/shell.d.ts.map +1 -0
  811. package/lib/browser/style/shell.js +239 -0
  812. package/lib/browser/style/shell.js.map +1 -0
  813. package/lib/browser/style.d.ts +6 -0
  814. package/lib/browser/style.d.ts.map +1 -0
  815. package/lib/browser/style.js +14 -0
  816. package/lib/browser/style.js.map +1 -0
  817. package/lib/browser/util/composer.d.ts +86 -0
  818. package/lib/browser/util/composer.d.ts.map +1 -0
  819. package/lib/browser/util/composer.js +124 -0
  820. package/lib/browser/util/composer.js.map +1 -0
  821. package/lib/browser/util/composer.spec.d.ts +2 -0
  822. package/lib/browser/util/composer.spec.d.ts.map +1 -0
  823. package/lib/browser/util/composer.spec.js +66 -0
  824. package/lib/browser/util/composer.spec.js.map +1 -0
  825. package/lib/browser/util/diff.d.ts +18 -0
  826. package/lib/browser/util/diff.d.ts.map +1 -0
  827. package/lib/browser/util/diff.js +32 -0
  828. package/lib/browser/util/diff.js.map +1 -0
  829. package/lib/browser/util/diff.spec.d.ts +2 -0
  830. package/lib/browser/util/diff.spec.d.ts.map +1 -0
  831. package/lib/browser/util/diff.spec.js +21 -0
  832. package/lib/browser/util/diff.spec.js.map +1 -0
  833. package/lib/browser/util/frame.d.ts +33 -0
  834. package/lib/browser/util/frame.d.ts.map +1 -0
  835. package/lib/browser/util/frame.js +50 -0
  836. package/lib/browser/util/frame.js.map +1 -0
  837. package/lib/browser/util/frame.spec.d.ts +2 -0
  838. package/lib/browser/util/frame.spec.d.ts.map +1 -0
  839. package/lib/browser/util/frame.spec.js +60 -0
  840. package/lib/browser/util/frame.spec.js.map +1 -0
  841. package/lib/browser/util/layout.d.ts +27 -0
  842. package/lib/browser/util/layout.d.ts.map +1 -0
  843. package/lib/browser/util/layout.js +57 -0
  844. package/lib/browser/util/layout.js.map +1 -0
  845. package/lib/browser/util/layout.spec.d.ts +2 -0
  846. package/lib/browser/util/layout.spec.d.ts.map +1 -0
  847. package/lib/browser/util/layout.spec.js +35 -0
  848. package/lib/browser/util/layout.spec.js.map +1 -0
  849. package/lib/browser/util/link.d.ts +54 -0
  850. package/lib/browser/util/link.d.ts.map +1 -0
  851. package/lib/browser/util/link.js +232 -0
  852. package/lib/browser/util/link.js.map +1 -0
  853. package/lib/browser/util/link.spec.d.ts +2 -0
  854. package/lib/browser/util/link.spec.d.ts.map +1 -0
  855. package/lib/browser/util/link.spec.js +101 -0
  856. package/lib/browser/util/link.spec.js.map +1 -0
  857. package/lib/browser/util/markdown.d.ts +87 -0
  858. package/lib/browser/util/markdown.d.ts.map +1 -0
  859. package/lib/browser/util/markdown.js +333 -0
  860. package/lib/browser/util/markdown.js.map +1 -0
  861. package/lib/browser/util/markdown.spec.d.ts +2 -0
  862. package/lib/browser/util/markdown.spec.d.ts.map +1 -0
  863. package/lib/browser/util/markdown.spec.js +124 -0
  864. package/lib/browser/util/markdown.spec.js.map +1 -0
  865. package/lib/browser/util/message.d.ts +75 -0
  866. package/lib/browser/util/message.d.ts.map +1 -0
  867. package/lib/browser/util/message.js +146 -0
  868. package/lib/browser/util/message.js.map +1 -0
  869. package/lib/browser/util/message.spec.d.ts +2 -0
  870. package/lib/browser/util/message.spec.d.ts.map +1 -0
  871. package/lib/browser/util/message.spec.js +59 -0
  872. package/lib/browser/util/message.spec.js.map +1 -0
  873. package/lib/browser/util/process.d.ts +74 -0
  874. package/lib/browser/util/process.d.ts.map +1 -0
  875. package/lib/browser/util/process.js +138 -0
  876. package/lib/browser/util/process.js.map +1 -0
  877. package/lib/browser/util/process.spec.d.ts +2 -0
  878. package/lib/browser/util/process.spec.d.ts.map +1 -0
  879. package/lib/browser/util/process.spec.js +106 -0
  880. package/lib/browser/util/process.spec.js.map +1 -0
  881. package/lib/browser/util/progress.d.ts +51 -0
  882. package/lib/browser/util/progress.d.ts.map +1 -0
  883. package/lib/browser/util/progress.js +146 -0
  884. package/lib/browser/util/progress.js.map +1 -0
  885. package/lib/browser/util/progress.spec.d.ts +2 -0
  886. package/lib/browser/util/progress.spec.d.ts.map +1 -0
  887. package/lib/browser/util/progress.spec.js +77 -0
  888. package/lib/browser/util/progress.spec.js.map +1 -0
  889. package/lib/browser/util/qr-code.d.ts +38 -0
  890. package/lib/browser/util/qr-code.d.ts.map +1 -0
  891. package/lib/browser/util/qr-code.js +353 -0
  892. package/lib/browser/util/qr-code.js.map +1 -0
  893. package/lib/browser/util/qr-code.spec.d.ts +2 -0
  894. package/lib/browser/util/qr-code.spec.d.ts.map +1 -0
  895. package/lib/browser/util/qr-code.spec.js +48 -0
  896. package/lib/browser/util/qr-code.spec.js.map +1 -0
  897. package/lib/browser/util/tool.d.ts +42 -0
  898. package/lib/browser/util/tool.d.ts.map +1 -0
  899. package/lib/browser/util/tool.js +154 -0
  900. package/lib/browser/util/tool.js.map +1 -0
  901. package/lib/browser/util/tool.spec.d.ts +2 -0
  902. package/lib/browser/util/tool.spec.d.ts.map +1 -0
  903. package/lib/browser/util/tool.spec.js +73 -0
  904. package/lib/browser/util/tool.spec.js.map +1 -0
  905. package/lib/browser/view.d.ts +4 -0
  906. package/lib/browser/view.d.ts.map +1 -0
  907. package/lib/browser/view.js +19 -0
  908. package/lib/browser/view.js.map +1 -0
  909. package/lib/browser/workbench-protocol.d.ts +51 -0
  910. package/lib/browser/workbench-protocol.d.ts.map +1 -0
  911. package/lib/browser/workbench-protocol.js +5 -0
  912. package/lib/browser/workbench-protocol.js.map +1 -0
  913. package/lib/browser/workbench.d.ts +64 -0
  914. package/lib/browser/workbench.d.ts.map +1 -0
  915. package/lib/browser/workbench.js +281 -0
  916. package/lib/browser/workbench.js.map +1 -0
  917. package/lib/browser/workbench.spec.d.ts +2 -0
  918. package/lib/browser/workbench.spec.d.ts.map +1 -0
  919. package/lib/browser/workbench.spec.js +34 -0
  920. package/lib/browser/workbench.spec.js.map +1 -0
  921. package/package.json +81 -4
  922. package/src/browser/assistant/assistant-export.spec.ts +30 -0
  923. package/src/browser/assistant/assistant-export.ts +41 -0
  924. package/src/browser/assistant/assistant-extension.spec.ts +122 -0
  925. package/src/browser/assistant/assistant-extension.ts +137 -0
  926. package/src/browser/assistant/assistant-hooks.ts +63 -0
  927. package/src/browser/assistant/assistant-protocol.ts +55 -0
  928. package/src/browser/assistant/assistant-tasks.tsx +194 -0
  929. package/src/browser/assistant/assistant-view.tsx +453 -0
  930. package/src/browser/assistant/assistant.spec.ts +80 -0
  931. package/src/browser/assistant/assistant.ts +315 -0
  932. package/src/browser/assistant/voice.spec.ts +8 -0
  933. package/src/browser/assistant/voice.ts +87 -0
  934. package/src/browser/avatar/dino-avatar.spec.ts +151 -0
  935. package/src/browser/avatar/dino-avatar.ts +541 -0
  936. package/src/browser/avatar/dino-motion.ts +313 -0
  937. package/src/browser/chat/chat-protocol.ts +47 -0
  938. package/src/browser/chat/chat-view.tsx +155 -0
  939. package/src/browser/chat/chat.spec.ts +194 -0
  940. package/src/browser/chat/chat.ts +335 -0
  941. package/src/browser/components/account-menu.tsx +114 -0
  942. package/src/browser/components/agent-settings-view.tsx +196 -0
  943. package/src/browser/components/app-view.tsx +553 -0
  944. package/src/browser/components/auth-pictures.tsx +55 -0
  945. package/src/browser/components/auth-view.tsx +421 -0
  946. package/src/browser/components/callout.tsx +33 -0
  947. package/src/browser/components/chat-list.spec.ts +66 -0
  948. package/src/browser/components/chat-list.tsx +276 -0
  949. package/src/browser/components/code-editor.tsx +114 -0
  950. package/src/browser/components/composer-box.tsx +475 -0
  951. package/src/browser/components/composer-menu.tsx +49 -0
  952. package/src/browser/components/composer.spec.tsx +130 -0
  953. package/src/browser/components/composer.tsx +170 -0
  954. package/src/browser/components/connection-bar.tsx +85 -0
  955. package/src/browser/components/context-menu.tsx +100 -0
  956. package/src/browser/components/conversation-scroll.ts +126 -0
  957. package/src/browser/components/dialog-view.tsx +82 -0
  958. package/src/browser/components/diff-editor.tsx +131 -0
  959. package/src/browser/components/diff-view.tsx +19 -0
  960. package/src/browser/components/dino.tsx +19 -0
  961. package/src/browser/components/editor-area.tsx +234 -0
  962. package/src/browser/components/folder-picker.spec.ts +30 -0
  963. package/src/browser/components/folder-picker.tsx +177 -0
  964. package/src/browser/components/fork-view.tsx +65 -0
  965. package/src/browser/components/hero-cards.tsx +189 -0
  966. package/src/browser/components/icon.tsx +62 -0
  967. package/src/browser/components/link-dialog.tsx +66 -0
  968. package/src/browser/components/link.tsx +77 -0
  969. package/src/browser/components/manage-menu.tsx +165 -0
  970. package/src/browser/components/markdown.spec.tsx +46 -0
  971. package/src/browser/components/markdown.tsx +155 -0
  972. package/src/browser/components/math.tsx +21 -0
  973. package/src/browser/components/media.tsx +91 -0
  974. package/src/browser/components/mermaid-view.tsx +105 -0
  975. package/src/browser/components/message-actions.tsx +89 -0
  976. package/src/browser/components/message-footer.tsx +128 -0
  977. package/src/browser/components/message-list.spec.tsx +321 -0
  978. package/src/browser/components/message-list.tsx +328 -0
  979. package/src/browser/components/notice-center.tsx +187 -0
  980. package/src/browser/components/relay-view.tsx +146 -0
  981. package/src/browser/components/run-status.tsx +70 -0
  982. package/src/browser/components/session-settings.spec.tsx +49 -0
  983. package/src/browser/components/session-settings.tsx +119 -0
  984. package/src/browser/components/session-view.tsx +153 -0
  985. package/src/browser/components/settings-controls.tsx +94 -0
  986. package/src/browser/components/settings-view.tsx +573 -0
  987. package/src/browser/components/split-pane.tsx +108 -0
  988. package/src/browser/components/ta-avatar.spec.tsx +27 -0
  989. package/src/browser/components/ta-avatar.tsx +251 -0
  990. package/src/browser/components/tool-view.tsx +186 -0
  991. package/src/browser/components/trusted-domains.tsx +60 -0
  992. package/src/browser/components/web-composer.tsx +47 -0
  993. package/src/browser/components/web-dialog.tsx +29 -0
  994. package/src/browser/components/workbench-toggle.spec.tsx +35 -0
  995. package/src/browser/components/workbench-toggle.tsx +24 -0
  996. package/src/browser/components/workbench-view.tsx +77 -0
  997. package/src/browser/components/working-directory.tsx +22 -0
  998. package/src/browser/editor/monaco-loader.spec.ts +39 -0
  999. package/src/browser/editor/monaco-loader.ts +139 -0
  1000. package/src/browser/editor/monaco.ts +55 -0
  1001. package/src/browser/editor/worker-modules.d.ts +5 -0
  1002. package/src/browser/extension/extension-view.tsx +78 -0
  1003. package/src/browser/extension/icons.ts +161 -0
  1004. package/src/browser/extension/web-extension-api.ts +346 -0
  1005. package/src/browser/extension/web-extension-protocol.ts +154 -0
  1006. package/src/browser/extension/web-extensions.spec.ts +597 -0
  1007. package/src/browser/extension/web-extensions.ts +717 -0
  1008. package/src/browser/hooks.ts +102 -0
  1009. package/src/browser/i18n/locales.ts +20 -0
  1010. package/src/browser/i18n/messages.ts +864 -0
  1011. package/src/browser/i18n/use-t.ts +21 -0
  1012. package/src/browser/index.ts +52 -0
  1013. package/src/browser/links/links-protocol.ts +41 -0
  1014. package/src/browser/links/links.spec.ts +132 -0
  1015. package/src/browser/links/links.ts +127 -0
  1016. package/src/browser/markdown/hooks.ts +32 -0
  1017. package/src/browser/markdown/lazy.spec.ts +34 -0
  1018. package/src/browser/markdown/lazy.ts +46 -0
  1019. package/src/browser/markdown/math.spec.ts +20 -0
  1020. package/src/browser/markdown/math.ts +33 -0
  1021. package/src/browser/markdown/mermaid.spec.ts +21 -0
  1022. package/src/browser/markdown/mermaid.ts +89 -0
  1023. package/src/browser/markdown/style-modules.d.ts +2 -0
  1024. package/src/browser/module.ts +6 -0
  1025. package/src/browser/notices/notices-protocol.ts +92 -0
  1026. package/src/browser/notices/notices.spec.ts +99 -0
  1027. package/src/browser/notices/notices.ts +173 -0
  1028. package/src/browser/public/icons/apple-touch-icon.png +0 -0
  1029. package/src/browser/public/icons/icon-192.png +0 -0
  1030. package/src/browser/public/icons/icon-512.png +0 -0
  1031. package/src/browser/public/icons/icon.svg +1 -0
  1032. package/src/browser/public/icons/maskable-512.png +0 -0
  1033. package/src/browser/public/manifest.webmanifest +40 -0
  1034. package/src/browser/public/sw.js +78 -0
  1035. package/src/browser/pwa/pwa-protocol.ts +22 -0
  1036. package/src/browser/pwa/pwa.spec.ts +143 -0
  1037. package/src/browser/pwa/pwa.ts +123 -0
  1038. package/src/browser/settings/agent-settings.spec.ts +56 -0
  1039. package/src/browser/settings/agent-settings.ts +96 -0
  1040. package/src/browser/settings/settings-protocol.ts +75 -0
  1041. package/src/browser/settings/settings.spec.ts +31 -0
  1042. package/src/browser/settings/settings.ts +89 -0
  1043. package/src/browser/state/state-protocol.ts +71 -0
  1044. package/src/browser/state/state.spec.ts +214 -0
  1045. package/src/browser/state/state.ts +217 -0
  1046. package/src/browser/style/base.ts +139 -0
  1047. package/src/browser/style/conversation.ts +200 -0
  1048. package/src/browser/style/layout.ts +370 -0
  1049. package/src/browser/style/pages.ts +74 -0
  1050. package/src/browser/style/shell.ts +235 -0
  1051. package/src/browser/style.ts +11 -0
  1052. package/src/browser/util/composer.spec.ts +71 -0
  1053. package/src/browser/util/composer.ts +157 -0
  1054. package/src/browser/util/diff.spec.ts +20 -0
  1055. package/src/browser/util/diff.ts +33 -0
  1056. package/src/browser/util/frame.spec.ts +62 -0
  1057. package/src/browser/util/frame.ts +54 -0
  1058. package/src/browser/util/layout.spec.ts +37 -0
  1059. package/src/browser/util/layout.ts +71 -0
  1060. package/src/browser/util/link.spec.ts +104 -0
  1061. package/src/browser/util/link.ts +237 -0
  1062. package/src/browser/util/markdown.spec.ts +133 -0
  1063. package/src/browser/util/markdown.ts +347 -0
  1064. package/src/browser/util/message.spec.ts +63 -0
  1065. package/src/browser/util/message.ts +188 -0
  1066. package/src/browser/util/process.spec.ts +133 -0
  1067. package/src/browser/util/process.ts +166 -0
  1068. package/src/browser/util/progress.spec.ts +86 -0
  1069. package/src/browser/util/progress.ts +170 -0
  1070. package/src/browser/util/qr-code.spec.ts +49 -0
  1071. package/src/browser/util/qr-code.ts +371 -0
  1072. package/src/browser/util/tool.spec.ts +78 -0
  1073. package/src/browser/util/tool.ts +190 -0
  1074. package/src/browser/view.ts +6 -0
  1075. package/src/browser/workbench-protocol.ts +66 -0
  1076. package/src/browser/workbench.spec.ts +37 -0
  1077. package/src/browser/workbench.ts +297 -0
@@ -0,0 +1,92 @@
1
+ export const TaNotices = Symbol('TaNotices');
2
+
3
+ /**
4
+ * How much a notice asks of the user: `info` and `success` tell, `warning` asks to look, `error` says an
5
+ * action failed. The level sets the icon, the colour and how long it stays.
6
+ */
7
+ export type NoticeLevel = 'info' | 'success' | 'warning' | 'error';
8
+
9
+ export interface NoticeAction {
10
+ label: string;
11
+ run(): void;
12
+ }
13
+
14
+ export interface NoticeOptions {
15
+ level?: NoticeLevel;
16
+ /** A second, quieter line: what to do about it. */
17
+ detail?: string;
18
+ action?: NoticeAction;
19
+ /** Notices of one key replace each other and count how often they came, instead of piling up. */
20
+ key?: string;
21
+ /** Stays until the user closes it. */
22
+ sticky?: boolean;
23
+ }
24
+
25
+ export interface Notice {
26
+ id: number;
27
+ level: NoticeLevel;
28
+ message: string;
29
+ detail?: string;
30
+ action?: NoticeAction;
31
+ key?: string;
32
+ sticky?: boolean;
33
+ /** How many times it came. */
34
+ count: number;
35
+ }
36
+
37
+ export interface ConfirmOptions {
38
+ title: string;
39
+ message?: string;
40
+ /** The words of the button that goes ahead; default OK. */
41
+ confirmLabel?: string;
42
+ /** Goes ahead with something that cannot be undone: the button is red. */
43
+ danger?: boolean;
44
+ }
45
+
46
+ export interface ConfirmRequest extends ConfirmOptions {
47
+ id: number;
48
+ }
49
+
50
+ export interface InputOptions {
51
+ title: string;
52
+ /** The text in the box when it opens. */
53
+ value?: string;
54
+ placeholder?: string;
55
+ /** A box of several lines, as pi's `editor`: Enter starts a line, Cmd/Ctrl+Enter goes ahead. */
56
+ multiline?: boolean;
57
+ }
58
+
59
+ export interface InputRequest extends InputOptions {
60
+ id: number;
61
+ }
62
+
63
+ export interface NoticesState {
64
+ /** The newest last. */
65
+ notices: Notice[];
66
+ /** The question shown, one at a time; the others wait. */
67
+ confirm?: ConfirmRequest;
68
+ /** Or the text asked for, in the same line of questions. */
69
+ input?: InputRequest;
70
+ }
71
+
72
+ /**
73
+ * The notices of the page, from ta and its web extensions alike: short-lived messages in a corner, and
74
+ * questions that wait for an answer. What belongs to one place (a failed turn, a form) stays there.
75
+ */
76
+ export interface TaNotices {
77
+ readonly state: NoticesState;
78
+ subscribe(listener: (state: NoticesState) => void): () => void;
79
+ /** Returns its id. */
80
+ notify(message: string, options?: NoticeOptions): number;
81
+ /** A failed action: the message of the error, and its hint for a failure ta serve names. */
82
+ error(cause: unknown, options?: Omit<NoticeOptions, 'level'>): number;
83
+ dismiss(id: number): void;
84
+ /** Resolves with whether the user went ahead. */
85
+ confirm(options: ConfirmOptions): Promise<boolean>;
86
+ /** The answer to the question shown. */
87
+ answer(id: number, confirmed: boolean): void;
88
+ /** Resolves with the text, or `undefined` when the user cancelled. */
89
+ input(options: InputOptions): Promise<string | undefined>;
90
+ /** The text given for the question shown; `undefined`, cancelled. */
91
+ answerInput(id: number, value: string | undefined): void;
92
+ }
@@ -0,0 +1,99 @@
1
+ import { describe, expect, it } from 'bun:test';
2
+ import { TaRemoteError } from '@celljs/ta-client';
3
+ import { TaErrorCode } from '@celljs/ta-protocol';
4
+ import { NoticesUtil, TaNoticesImpl } from './notices';
5
+
6
+ function setup(language = 'en-US') {
7
+ const notices = new TaNoticesImpl();
8
+ Object.assign(notices, { settings: { state: { language } } });
9
+ return notices;
10
+ }
11
+
12
+ describe('NoticesUtil', () => {
13
+ it('keeps a notice longer the more it asks of the user, and one with a button longer still', () => {
14
+ const [success, info, warning, error] = (['success', 'info', 'warning', 'error'] as const).map(level => NoticesUtil.duration({ level }));
15
+ expect(success).toBeLessThan(info!);
16
+ expect(info).toBeLessThan(warning!);
17
+ expect(warning).toBeLessThan(error!);
18
+ expect(NoticesUtil.duration({ level: 'info', action: { label: 'Undo', run: () => undefined } })).toBeGreaterThan(info!);
19
+ expect(NoticesUtil.duration({ level: 'error', sticky: true })).toBeUndefined();
20
+ });
21
+
22
+ it('drops the oldest notices beyond four, a sticky one last', () => {
23
+ const notice = (id: number, sticky = false) => ({ id, level: 'info' as const, message: String(id), count: 1, sticky });
24
+ expect(NoticesUtil.keep([notice(1, true), notice(2), notice(3), notice(4), notice(5)]).map(kept => kept.id)).toEqual([1, 3, 4, 5]);
25
+ });
26
+
27
+ it('tells the message and the hint of an error', () => {
28
+ expect(NoticesUtil.describe(new TaRemoteError('Locked.', TaErrorCode.SESSION_LOCKED, 'Close it there first.'))).toEqual({
29
+ message: 'Locked.',
30
+ detail: 'Close it there first.',
31
+ code: TaErrorCode.SESSION_LOCKED,
32
+ });
33
+ expect(NoticesUtil.describe('plain')).toEqual({ message: 'plain' });
34
+ });
35
+ });
36
+
37
+ describe('TaNoticesImpl', () => {
38
+ it('shows a notice once however often it comes, with how often', () => {
39
+ const notices = setup();
40
+ notices.notify('Saved', { level: 'success' });
41
+ notices.notify('Saved', { level: 'success' });
42
+ notices.notify('Saved');
43
+ expect(notices.state.notices.map(({ message, level, count }) => ({ message, level, count }))).toEqual([
44
+ { message: 'Saved', level: 'success', count: 2 },
45
+ { message: 'Saved', level: 'info', count: 1 },
46
+ ]);
47
+ notices.dismiss(notices.state.notices[0].id);
48
+ expect(notices.state.notices).toHaveLength(1);
49
+ });
50
+
51
+ it('says an error with its hint, and a lost connection once, whatever failed', () => {
52
+ const notices = setup('zh-CN');
53
+ notices.error(new TaRemoteError('Locked.', TaErrorCode.SESSION_LOCKED, 'Close it there first.'));
54
+ notices.error(new TaRemoteError('Not connected to ta serve.', TaErrorCode.CONNECTION_LOST));
55
+ notices.error(new TaRemoteError('The connection to ta serve was lost.', TaErrorCode.CONNECTION_LOST));
56
+ expect(notices.state.notices.map(({ message, detail, level, count }) => ({ message, detail, level, count }))).toEqual([
57
+ { message: 'Locked.', detail: 'Close it there first.', level: 'error', count: 1 },
58
+ { message: '没有完成:ta serve 未连接', detail: '连接恢复后再试一次。', level: 'error', count: 2 },
59
+ ]);
60
+ });
61
+
62
+ it('asks one question at a time, and answers each its own', async () => {
63
+ const notices = setup();
64
+ const first = notices.confirm({ title: 'Remove a?' });
65
+ const second = notices.confirm({ title: 'Remove b?', danger: true });
66
+ expect(notices.state.confirm?.title).toBe('Remove a?');
67
+ // An answer to a question not shown does nothing.
68
+ notices.answer(notices.state.confirm!.id + 1, true);
69
+ expect(notices.state.confirm?.title).toBe('Remove a?');
70
+ notices.answer(notices.state.confirm!.id, false);
71
+ expect(await first).toBe(false);
72
+ expect(notices.state.confirm).toMatchObject({ title: 'Remove b?', danger: true });
73
+ notices.answer(notices.state.confirm!.id, true);
74
+ expect(await second).toBe(true);
75
+ expect(notices.state.confirm).toBeUndefined();
76
+ });
77
+
78
+ it('asks for text in the same line as the other questions, and cancelled is undefined', async () => {
79
+ const notices = setup();
80
+ const sure = notices.confirm({ title: 'Sure?' });
81
+ const name = notices.input({ title: 'Name', value: 'Ta' });
82
+ const role = notices.input({ title: 'Role', multiline: true });
83
+ expect(notices.state.input).toBeUndefined();
84
+ // The text of a question not shown does nothing.
85
+ notices.answerInput(notices.state.confirm!.id, 'x');
86
+ notices.answer(notices.state.confirm!.id, true);
87
+ expect(await sure).toBe(true);
88
+ expect(notices.state.confirm).toBeUndefined();
89
+ expect(notices.state.input).toMatchObject({ title: 'Name', value: 'Ta' });
90
+ notices.answer(notices.state.input!.id, true);
91
+ expect(notices.state.input?.title).toBe('Name');
92
+ notices.answerInput(notices.state.input!.id, 'Rex');
93
+ expect(await name).toBe('Rex');
94
+ expect(notices.state.input).toMatchObject({ title: 'Role', multiline: true });
95
+ notices.answerInput(notices.state.input!.id, undefined);
96
+ expect(await role).toBeUndefined();
97
+ expect(notices.state.input).toBeUndefined();
98
+ });
99
+ });
@@ -0,0 +1,173 @@
1
+ import { Autowired, Component } from '@celljs/core';
2
+ import { TaErrorCode } from '@celljs/ta-protocol';
3
+ import { message } from '../i18n/messages';
4
+ import { TaSettings } from '../settings/settings-protocol';
5
+ import {
6
+ type ConfirmOptions,
7
+ type ConfirmRequest,
8
+ type InputOptions,
9
+ type InputRequest,
10
+ type Notice,
11
+ type NoticeLevel,
12
+ type NoticeOptions,
13
+ type NoticesState,
14
+ TaNotices,
15
+ } from './notices-protocol';
16
+
17
+ /** Asks the page to open its sign-in to a provider of models: a call failed for want of one. */
18
+ export const SIGN_IN_EVENT = 'ta:sign-in';
19
+
20
+ type Question =
21
+ | { kind: 'confirm'; request: ConfirmRequest; resolve(confirmed: boolean): void }
22
+ | { kind: 'input'; request: InputRequest; resolve(value: string | undefined): void };
23
+
24
+ /** More than this many notices at once crowd the corner: the oldest that would go anyway go first. */
25
+ const MAX_NOTICES = 4;
26
+
27
+ /** How long a notice stays, by level: what asks more of the user stays longer. */
28
+ const DURATIONS_MS: Record<NoticeLevel, number> = { success: 3000, info: 4000, warning: 6000, error: 8000 };
29
+ /** A notice with a button stays longer: the user has to get to it. */
30
+ const ACTION_MS = 4000;
31
+
32
+ export namespace NoticesUtil {
33
+ /** How long a notice stays, or `undefined` until it is closed. */
34
+ export function duration(notice: Pick<Notice, 'level' | 'sticky' | 'action'>): number | undefined {
35
+ return notice.sticky ? undefined : DURATIONS_MS[notice.level] + (notice.action ? ACTION_MS : 0);
36
+ }
37
+
38
+ /** Notices of the same key are one, which came `count` times: the same failure ten times is one notice. */
39
+ export function key(level: NoticeLevel, text: string, options: NoticeOptions): string {
40
+ return options.key ?? `${level}:${text}`;
41
+ }
42
+
43
+ /** At most MAX_NOTICES, the newest kept; a sticky one goes only when there is nothing else to drop. */
44
+ export function keep(notices: Notice[]): Notice[] {
45
+ const kept = [...notices];
46
+ while (kept.length > MAX_NOTICES) {
47
+ const index = kept.findIndex(notice => !notice.sticky);
48
+ kept.splice(index === -1 ? 0 : index, 1);
49
+ }
50
+ return kept;
51
+ }
52
+
53
+ /** What an error says: its message, and for a failure ta serve names (TaRemoteError) its hint. */
54
+ export function describe(cause: unknown): { message: string; detail?: string; code?: string } {
55
+ if (cause instanceof Error) {
56
+ const { code, hint } = cause as Error & { code?: string; hint?: string };
57
+ return { message: cause.message, detail: hint || undefined, code };
58
+ }
59
+ return { message: String(cause) };
60
+ }
61
+ }
62
+
63
+ @Component(TaNotices)
64
+ export class TaNoticesImpl implements TaNotices {
65
+ @Autowired(TaSettings)
66
+ protected readonly settings: TaSettings;
67
+
68
+ protected current: NoticesState = { notices: [] };
69
+ protected nextId = 0;
70
+ protected readonly questions: Question[] = [];
71
+ protected readonly listeners = new Set<(state: NoticesState) => void>();
72
+
73
+ get state(): NoticesState {
74
+ return this.current;
75
+ }
76
+
77
+ subscribe(listener: (state: NoticesState) => void): () => void {
78
+ this.listeners.add(listener);
79
+ return () => this.listeners.delete(listener);
80
+ }
81
+
82
+ notify(text: string, options: NoticeOptions = {}): number {
83
+ const level = options.level ?? 'info';
84
+ const key = NoticesUtil.key(level, text, options);
85
+ const same = this.current.notices.find(notice => notice.key === key);
86
+ const notice: Notice = {
87
+ id: ++this.nextId,
88
+ level,
89
+ message: text,
90
+ detail: options.detail,
91
+ action: options.action,
92
+ key,
93
+ sticky: options.sticky,
94
+ count: same && same.message === text ? same.count + 1 : 1,
95
+ };
96
+ this.update({ notices: NoticesUtil.keep([...this.current.notices.filter(other => other !== same), notice]) });
97
+ return notice.id;
98
+ }
99
+
100
+ error(cause: unknown, options: Omit<NoticeOptions, 'level'> = {}): number {
101
+ const { message: text, detail, code } = NoticesUtil.describe(cause);
102
+ if (code === TaErrorCode.NOT_SIGNED_IN) {
103
+ // Nothing to read: the page of sign-in opens instead (AppView listens).
104
+ window.dispatchEvent(new Event(SIGN_IN_EVENT));
105
+ return 0;
106
+ }
107
+ if (code === TaErrorCode.CONNECTION_LOST) {
108
+ // The bar of the connection says why; this says what did not happen, once however many calls failed.
109
+ const language = this.settings.state.language;
110
+ return this.notify(message(language, 'ta.connection.notDone'), {
111
+ ...options,
112
+ level: 'error',
113
+ key: 'connection-lost',
114
+ detail: message(language, 'ta.connection.notDoneHint'),
115
+ });
116
+ }
117
+ return this.notify(text, { detail, ...options, level: 'error' });
118
+ }
119
+
120
+ dismiss(id: number): void {
121
+ if (this.current.notices.some(notice => notice.id === id)) {
122
+ this.update({ notices: this.current.notices.filter(notice => notice.id !== id) });
123
+ }
124
+ }
125
+
126
+ confirm(options: ConfirmOptions): Promise<boolean> {
127
+ return new Promise(resolve => this.ask({ kind: 'confirm', request: { ...options, id: ++this.nextId }, resolve }));
128
+ }
129
+
130
+ answer(id: number, confirmed: boolean): void {
131
+ const question = this.questions[0];
132
+ if (question?.kind === 'confirm' && question.request.id === id) {
133
+ this.questions.shift();
134
+ question.resolve(confirmed);
135
+ this.showQuestion();
136
+ }
137
+ }
138
+
139
+ input(options: InputOptions): Promise<string | undefined> {
140
+ return new Promise(resolve => this.ask({ kind: 'input', request: { ...options, id: ++this.nextId }, resolve }));
141
+ }
142
+
143
+ answerInput(id: number, value: string | undefined): void {
144
+ const question = this.questions[0];
145
+ if (question?.kind === 'input' && question.request.id === id) {
146
+ this.questions.shift();
147
+ question.resolve(value);
148
+ this.showQuestion();
149
+ }
150
+ }
151
+
152
+ protected ask(question: Question): void {
153
+ this.questions.push(question);
154
+ if (this.questions.length === 1) {
155
+ this.showQuestion();
156
+ }
157
+ }
158
+
159
+ protected showQuestion(): void {
160
+ const question = this.questions[0];
161
+ this.update({
162
+ confirm: question?.kind === 'confirm' ? question.request : undefined,
163
+ input: question?.kind === 'input' ? question.request : undefined,
164
+ });
165
+ }
166
+
167
+ protected update(change: Partial<NoticesState>): void {
168
+ this.current = { ...this.current, ...change };
169
+ for (const listener of this.listeners) {
170
+ listener(this.current);
171
+ }
172
+ }
173
+ }
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256"><rect width="256" height="256" rx="57.6" fill="#10B981"/><path transform="translate(42.35 42.32) scale(0.669)" fill="#ffffff" fill-rule="evenodd" d="M87.56 246.56C78.45 245.88 69.68 241.69 63.62 235.12C55.27 226.06 53.05 217.63 57.25 210.87C58.80 208.36 60.00 207.04 65.18 202.17C69.26 198.32 70.20 196.55 70.21 192.69C70.21 189.81 70.10 189.60 68.07 188.59C58.99 184.06 48.53 175.16 41.10 165.64C20.03 138.61 16.32 99.87 32.24 73.21C35.05 68.50 38.42 64.26 40.25 63.11C42.91 61.44 46.64 61.89 48.71 64.14C51.04 66.67 51.48 69.39 50.27 73.65C48.09 81.27 47.41 86.83 47.99 92.32C49.53 106.98 58.42 118.20 70.83 121.15C73.08 121.68 78.88 121.72 81.15 121.22C88.97 119.48 94.86 113.39 96.69 105.18C97.35 102.17 97.35 102.36 97.36 79.55C97.37 56.55 97.35 57.24 98.04 53.23C102.05 29.98 119.81 12.19 141.49 9.73C143.46 9.51 150.65 9.43 152.36 9.61C160.37 10.46 167.56 12.82 174.51 16.89C177.43 18.59 176.54 18.47 186.86 18.57C196.67 18.66 196.99 18.68 200.87 19.58C210.24 21.74 219.17 27.62 224.57 35.17C229.72 42.38 232.50 49.80 233.36 58.67C233.68 61.91 233.71 76.53 233.41 78.22C232.01 86.00 227.35 91.05 220.23 92.50C218.50 92.85 180.16 92.91 177.10 92.57C165.61 91.28 155.17 86.13 150.52 79.47C148.44 76.48 145.54 75.90 143.40 78.04C141.49 79.95 141.76 81.92 144.74 87.63C150.17 98.03 159.04 105.16 169.50 107.52C172.11 108.11 172.69 107.96 173.25 106.55C173.81 105.12 174.70 103.52 175.57 102.37C178.23 98.86 180.68 100.09 183.51 106.36C184.55 108.67 183.79 108.47 191.23 108.44C198.27 108.42 197.86 108.50 198.43 107.20C200.89 101.63 202.81 99.79 204.99 100.89C206.11 101.47 207.63 103.65 208.74 106.31C209.67 108.51 209.55 108.45 213.05 108.41C216.35 108.36 217.08 108.45 218.31 109.05C225.39 112.51 217.61 125.59 205.66 130.33C199.65 132.71 198.20 132.85 180.39 132.87C164.51 132.89 165.38 132.84 164.14 133.78C162.82 134.78 162.30 136.08 162.30 138.40C162.30 139.80 161.98 143.39 161.42 148.29C159.70 163.39 153.05 175.87 141.81 185.08C138.73 187.60 134.92 189.85 129.84 192.14C125.19 194.25 115.57 196.33 110.54 196.34C109.17 196.34 108.60 196.57 108.23 197.27C108.10 197.53 107.64 198.49 107.20 199.42C103.90 206.45 98.19 211.37 88.72 215.35C85.89 216.54 85.91 216.52 85.98 219.64C86.04 222.32 86.33 222.69 90.00 224.75C92.29 226.04 94.81 227.75 95.82 228.71C100.98 233.57 100.86 241.48 95.60 244.93C93.34 246.41 91.24 246.84 87.56 246.56ZM134.07 240.25C128.56 238.82 125.22 235.56 123.96 230.38C123.70 229.30 123.68 228.71 123.59 220.23C123.53 214.63 123.44 210.89 123.34 210.35C123.00 208.36 122.74 207.31 122.25 205.86C121.48 203.62 121.59 203.31 123.26 202.93C129.90 201.41 136.34 198.97 140.57 196.35C147.00 192.39 151.46 188.55 155.60 183.42C157.24 181.39 157.77 181.54 158.23 184.19C159.89 193.79 157.66 202.21 151.13 210.89C149.39 213.20 149.36 213.30 149.36 215.69C149.35 218.41 149.61 218.72 151.96 218.75C157.60 218.82 162.31 219.95 165.26 221.92C173.20 227.23 172.45 238.39 164.03 240.43C162.18 240.88 135.88 240.72 134.07 240.25ZM185.67 173.17C183.79 172.66 182.15 171.55 180.81 169.86C178.08 166.41 174.71 164.68 169.71 164.16C166.89 163.87 166.86 163.80 167.90 160.34C168.86 157.13 169.71 152.32 170.10 147.82C170.40 144.42 170.40 144.42 170.65 144.15C172.11 142.53 184.08 147.33 189.10 151.54C193.73 155.43 196.56 162.25 195.41 166.75C194.22 171.40 189.83 174.29 185.67 173.17ZM144.28 53.97C148.98 52.79 151.98 47.68 150.77 42.91C148.71 34.78 137.83 33.29 134.20 40.65C130.66 47.83 136.74 55.88 144.28 53.97Z"/></svg>
@@ -0,0 +1,40 @@
1
+ {
2
+ "id": "./",
3
+ "name": "Ta",
4
+ "short_name": "Ta",
5
+ "description": "A coding agent on Cell and pi",
6
+ "start_url": "./",
7
+ "scope": "./",
8
+ "display_override": [
9
+ "window-controls-overlay"
10
+ ],
11
+ "display": "standalone",
12
+ "background_color": "#141416",
13
+ "theme_color": "#141416",
14
+ "icons": [
15
+ {
16
+ "src": "icons/icon.svg",
17
+ "sizes": "any",
18
+ "type": "image/svg+xml",
19
+ "purpose": "any"
20
+ },
21
+ {
22
+ "src": "icons/icon-192.png",
23
+ "sizes": "192x192",
24
+ "type": "image/png",
25
+ "purpose": "any"
26
+ },
27
+ {
28
+ "src": "icons/icon-512.png",
29
+ "sizes": "512x512",
30
+ "type": "image/png",
31
+ "purpose": "any"
32
+ },
33
+ {
34
+ "src": "icons/maskable-512.png",
35
+ "sizes": "512x512",
36
+ "type": "image/png",
37
+ "purpose": "maskable"
38
+ }
39
+ ]
40
+ }
@@ -0,0 +1,78 @@
1
+ // The service worker of the ta web client: it opens the installed app, and opens it when ta serve is not
2
+ // running yet, so that the page can say so and connect when it starts. Nothing of /api is kept: the data
3
+ // of ta serve never goes into a cache.
4
+ // - pages: from the network, else the copy of the page from the last visit;
5
+ // - /assets/: the bundles, whose names change with their contents, from the cache, else the network;
6
+ // when a new build of the page arrives, the bundles of the old one are dropped.
7
+ const PAGES = 'ta-pages-v1';
8
+ const ASSETS = 'ta-assets-v1';
9
+ const SCOPE = new URL(self.registration.scope);
10
+ const PAGE = SCOPE.href;
11
+ const API = new URL('api/', SCOPE).pathname;
12
+ const ASSET = new URL('assets/', SCOPE).pathname;
13
+
14
+ self.addEventListener('install', event => {
15
+ event.waitUntil(self.skipWaiting());
16
+ });
17
+
18
+ self.addEventListener('activate', event => {
19
+ event.waitUntil(
20
+ caches
21
+ .keys()
22
+ .then(keys => Promise.all(keys.filter(key => key !== PAGES && key !== ASSETS).map(key => caches.delete(key))))
23
+ .then(() => self.clients.claim()),
24
+ );
25
+ });
26
+
27
+ self.addEventListener('fetch', event => {
28
+ const request = event.request;
29
+ const url = new URL(request.url);
30
+ if (request.method !== 'GET' || url.origin !== SCOPE.origin || url.pathname.startsWith(API)) {
31
+ return;
32
+ }
33
+ if (request.mode === 'navigate') {
34
+ event.respondWith(page(request));
35
+ } else if (url.pathname.startsWith(ASSET)) {
36
+ event.respondWith(asset(request));
37
+ }
38
+ });
39
+
40
+ async function page(request) {
41
+ try {
42
+ const response = await fetch(request);
43
+ if (response.ok && (response.headers.get('Content-Type') ?? '').startsWith('text/html')) {
44
+ await keepPage(response.clone());
45
+ }
46
+ return response;
47
+ } catch (error) {
48
+ const kept = await (await caches.open(PAGES)).match(PAGE);
49
+ if (kept) {
50
+ return kept;
51
+ }
52
+ throw error;
53
+ }
54
+ }
55
+
56
+ /** The page of every path (it is a single-page app); a new build of it drops the bundles of the old one. */
57
+ async function keepPage(response) {
58
+ const pages = await caches.open(PAGES);
59
+ const old = await pages.match(PAGE);
60
+ const html = await response.clone().text();
61
+ if (old && (await old.text()) !== html) {
62
+ await caches.delete(ASSETS);
63
+ }
64
+ await pages.put(PAGE, response);
65
+ }
66
+
67
+ async function asset(request) {
68
+ const assets = await caches.open(ASSETS);
69
+ const kept = await assets.match(request);
70
+ if (kept) {
71
+ return kept;
72
+ }
73
+ const response = await fetch(request);
74
+ if (response.ok) {
75
+ await assets.put(request, response.clone());
76
+ }
77
+ return response;
78
+ }
@@ -0,0 +1,22 @@
1
+ export const TaPwa = Symbol('TaPwa');
2
+
3
+ export interface PwaState {
4
+ /** The browser offers to install the page as an app now (`beforeinstallprompt`). */
5
+ installable: boolean;
6
+ /** The page runs as an installed app, in its own window. */
7
+ standalone: boolean;
8
+ }
9
+
10
+ /**
11
+ * The web client as an app that can be installed (a PWA): the web app manifest, the icons, and the service
12
+ * worker that opens the app when ta serve is not running yet. The files are in `public/` of this package,
13
+ * which the build puts at the root of the site.
14
+ */
15
+ export interface TaPwa {
16
+ readonly state: PwaState;
17
+ subscribe(listener: (state: PwaState) => void): () => void;
18
+ /** Links the manifest and the icons into the page and registers the service worker; once. */
19
+ start(): void;
20
+ /** Asks the browser to install the app; resolves with whether the user accepted. */
21
+ install(): Promise<boolean>;
22
+ }
@@ -0,0 +1,143 @@
1
+ import { describe, expect, it } from 'bun:test';
2
+ import { existsSync, readFileSync } from 'node:fs';
3
+ import { join } from 'node:path';
4
+ import { PWA_FILES, PwaUtil } from './pwa';
5
+
6
+ /** The files of public/, from lib/browser/pwa where the compiled spec runs. */
7
+ const PUBLIC = join(__dirname, '../../../src/browser/public');
8
+
9
+ describe('PwaUtil', () => {
10
+ it('finds the files of the app next to the page, under any path of the server', () => {
11
+ expect(PwaUtil.urls('http://127.0.0.1:4100/')).toEqual({
12
+ manifest: 'http://127.0.0.1:4100/manifest.webmanifest',
13
+ serviceWorker: 'http://127.0.0.1:4100/sw.js',
14
+ appleTouchIcon: 'http://127.0.0.1:4100/icons/apple-touch-icon.png',
15
+ });
16
+ expect(PwaUtil.urls('https://box.example/ta/').serviceWorker).toBe('https://box.example/ta/sw.js');
17
+ });
18
+
19
+ it('registers a service worker only in a secure context', () => {
20
+ expect(PwaUtil.canRegister(true, true)).toBe(true);
21
+ expect(PwaUtil.canRegister(false, true)).toBe(false);
22
+ expect(PwaUtil.canRegister(true, false)).toBe(false);
23
+ });
24
+
25
+ it('knows when it runs as an installed app', () => {
26
+ expect(PwaUtil.standalone(query => query === '(display-mode: standalone)')).toBe(true);
27
+ expect(PwaUtil.standalone(() => false, true)).toBe(true);
28
+ expect(PwaUtil.standalone(() => false)).toBe(false);
29
+ });
30
+ });
31
+
32
+ describe('the files of the app', () => {
33
+ it('are where the page looks for them', () => {
34
+ for (const file of Object.values(PWA_FILES)) {
35
+ expect(existsSync(join(PUBLIC, file))).toBe(true);
36
+ }
37
+ });
38
+
39
+ it('describe an app that browsers install: a name, a start page in scope, standalone, icons of 192 and 512 pixels', () => {
40
+ const manifest = JSON.parse(readFileSync(join(PUBLIC, PWA_FILES.manifest), 'utf8'));
41
+ expect(manifest.name).toBe('Ta');
42
+ expect(manifest.start_url).toBe('./');
43
+ expect(manifest.scope).toBe('./');
44
+ expect(manifest.display).toBe('standalone');
45
+ // The page draws the title bar in the colours of its columns once the user hides the bar of the window.
46
+ expect(manifest.display_override).toEqual(['window-controls-overlay']);
47
+ const sizes = manifest.icons.map((icon: { sizes: string }) => icon.sizes);
48
+ expect(sizes).toContain('192x192');
49
+ expect(sizes).toContain('512x512');
50
+ expect(manifest.icons.some((icon: { purpose: string }) => icon.purpose === 'maskable')).toBe(true);
51
+ for (const icon of manifest.icons) {
52
+ expect(existsSync(join(PUBLIC, icon.src))).toBe(true);
53
+ }
54
+ });
55
+ });
56
+ type Network = (request: { url: string }) => Promise<Response>;
57
+
58
+ /** sw.js run with a fake scope, Cache Storage and network; `get` dispatches a fetch event and says how it was answered. */
59
+ function serviceWorker(network: Network) {
60
+ const listeners: Record<string, (event: unknown) => void> = {};
61
+ const stores = new Map<string, Map<string, Response>>();
62
+ const key = (request: string | { url: string }) => (typeof request === 'string' ? request : request.url);
63
+ const caches = {
64
+ async open(name: string) {
65
+ const store = stores.get(name) ?? new Map<string, Response>();
66
+ stores.set(name, store);
67
+ return {
68
+ match: async (request: string | { url: string }) => store.get(key(request))?.clone(),
69
+ put: async (request: string | { url: string }, response: Response) => void store.set(key(request), response),
70
+ };
71
+ },
72
+ keys: async () => [...stores.keys()],
73
+ delete: async (name: string) => stores.delete(name),
74
+ };
75
+ const self = {
76
+ registration: { scope: 'http://127.0.0.1:4100/' },
77
+ addEventListener: (type: string, listener: (event: unknown) => void) => (listeners[type] = listener),
78
+ skipWaiting: async () => undefined,
79
+ clients: { claim: async () => undefined },
80
+ };
81
+ new Function('self', 'caches', 'fetch', readFileSync(join(PUBLIC, PWA_FILES.serviceWorker), 'utf8'))(self, caches, (request: { url: string }) =>
82
+ network(request),
83
+ );
84
+ return {
85
+ stores,
86
+ /** The answer of the worker, or undefined when it leaves the request to the browser. */
87
+ async get(url: string, init: { method?: string; mode?: string } = {}): Promise<Response | undefined> {
88
+ let answer: Promise<Response> | undefined;
89
+ listeners.fetch({
90
+ request: { url, method: init.method ?? 'GET', mode: init.mode ?? 'cors' },
91
+ respondWith: (response: Promise<Response>) => (answer = response),
92
+ });
93
+ return answer;
94
+ },
95
+ };
96
+ }
97
+
98
+ const html = (body: string) => new Response(body, { headers: { 'Content-Type': 'text/html; charset=UTF-8' } });
99
+ const offline: Network = () => Promise.reject(new TypeError('Failed to fetch'));
100
+
101
+ describe('the service worker', () => {
102
+ it('leaves calls of ta serve, other methods and other sites to the browser', async () => {
103
+ const worker = serviceWorker(offline);
104
+ expect(await worker.get('http://127.0.0.1:4100/api/ws?token=t')).toBeUndefined();
105
+ expect(await worker.get('http://127.0.0.1:4100/api/files/x/a.png')).toBeUndefined();
106
+ expect(await worker.get('http://127.0.0.1:4100/assets/a.js', { method: 'POST' })).toBeUndefined();
107
+ expect(await worker.get('https://cdn.example/assets/a.js')).toBeUndefined();
108
+ });
109
+
110
+ it('opens the page from the network, and the copy of the last visit when ta serve is not running', async () => {
111
+ let network: Network = async () => html('<p>v1</p>');
112
+ const worker = serviceWorker(request => network(request));
113
+ expect(await (await worker.get('http://127.0.0.1:4100/', { mode: 'navigate' }))?.text()).toBe('<p>v1</p>');
114
+ network = offline;
115
+ // Any path is the page of the single-page app.
116
+ expect(await (await worker.get('http://127.0.0.1:4100/console', { mode: 'navigate' }))?.text()).toBe('<p>v1</p>');
117
+ });
118
+
119
+ it('fails a page it never saw, as the browser would', async () => {
120
+ const worker = serviceWorker(offline);
121
+ await expect(worker.get('http://127.0.0.1:4100/', { mode: 'navigate' }) as Promise<Response>).rejects.toThrow('Failed to fetch');
122
+ });
123
+
124
+ it('keeps the bundles, and drops them when a new build of the page arrives', async () => {
125
+ let page = '<script src="assets/index-1.js">';
126
+ let calls = 0;
127
+ const worker = serviceWorker(async request => {
128
+ calls++;
129
+ return request.url.endsWith('/') ? html(page) : new Response(`code of ${request.url}`);
130
+ });
131
+ await worker.get('http://127.0.0.1:4100/', { mode: 'navigate' });
132
+ expect(await (await worker.get('http://127.0.0.1:4100/assets/index-1.js'))?.text()).toBe('code of http://127.0.0.1:4100/assets/index-1.js');
133
+ await worker.get('http://127.0.0.1:4100/assets/index-1.js');
134
+ expect(calls).toBe(2);
135
+ expect(worker.stores.get('ta-assets-v1')?.size).toBe(1);
136
+
137
+ await worker.get('http://127.0.0.1:4100/', { mode: 'navigate' });
138
+ expect(worker.stores.get('ta-assets-v1')?.size).toBe(1);
139
+ page = '<script src="assets/index-2.js">';
140
+ await worker.get('http://127.0.0.1:4100/', { mode: 'navigate' });
141
+ expect(worker.stores.has('ta-assets-v1')).toBe(false);
142
+ });
143
+ });