nastechai-desktop 18.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (546) hide show
  1. package/.prettierrc +11 -0
  2. package/DESIGN.md +167 -0
  3. package/README.md +141 -0
  4. package/assets/icon.icns +0 -0
  5. package/assets/icon.ico +0 -0
  6. package/assets/icon.png +0 -0
  7. package/components.json +21 -0
  8. package/electron/backend-env.cjs +112 -0
  9. package/electron/backend-env.test.cjs +111 -0
  10. package/electron/backend-probes.cjs +106 -0
  11. package/electron/backend-probes.test.cjs +82 -0
  12. package/electron/backend-ready.cjs +66 -0
  13. package/electron/bootstrap-platform.cjs +91 -0
  14. package/electron/bootstrap-platform.test.cjs +111 -0
  15. package/electron/bootstrap-runner.cjs +720 -0
  16. package/electron/bootstrap-runner.test.cjs +138 -0
  17. package/electron/connection-config.cjs +254 -0
  18. package/electron/connection-config.test.cjs +329 -0
  19. package/electron/dashboard-token.cjs +99 -0
  20. package/electron/dashboard-token.test.cjs +142 -0
  21. package/electron/desktop-uninstall.cjs +232 -0
  22. package/electron/desktop-uninstall.test.cjs +246 -0
  23. package/electron/entitlements.mac.inherit.plist +14 -0
  24. package/electron/entitlements.mac.plist +14 -0
  25. package/electron/fs-read-dir.cjs +109 -0
  26. package/electron/fs-read-dir.test.cjs +364 -0
  27. package/electron/gateway-ws-probe.cjs +188 -0
  28. package/electron/gateway-ws-probe.test.cjs +122 -0
  29. package/electron/git-root.cjs +54 -0
  30. package/electron/git-root.test.cjs +40 -0
  31. package/electron/git-worktrees.cjs +174 -0
  32. package/electron/hardening.cjs +184 -0
  33. package/electron/hardening.test.cjs +116 -0
  34. package/electron/main.cjs +5762 -0
  35. package/electron/oauth-net-request.cjs +20 -0
  36. package/electron/oauth-net-request.test.cjs +34 -0
  37. package/electron/preload.cjs +135 -0
  38. package/electron/session-windows.cjs +99 -0
  39. package/electron/session-windows.test.cjs +177 -0
  40. package/electron/update-remote.cjs +56 -0
  41. package/electron/update-remote.test.cjs +78 -0
  42. package/electron/vscode-marketplace.cjs +331 -0
  43. package/electron/vscode-marketplace.test.cjs +113 -0
  44. package/electron/windows-child-process.test.cjs +57 -0
  45. package/electron/windows-user-env.cjs +76 -0
  46. package/electron/windows-user-env.test.cjs +90 -0
  47. package/electron/workspace-cwd.cjs +38 -0
  48. package/electron/workspace-cwd.test.cjs +45 -0
  49. package/eslint.config.mjs +122 -0
  50. package/index.html +17 -0
  51. package/package.json +254 -0
  52. package/pr-assets/session-source-folders.png +0 -0
  53. package/preview-demo.html +65 -0
  54. package/public/apple-touch-icon.png +0 -0
  55. package/public/ds-assets/filler-bg0.jpg +0 -0
  56. package/public/nastech-frames/nastech-frame-0.png +0 -0
  57. package/public/nastech-frames/nastech-frame-1.png +0 -0
  58. package/public/nastech-frames/nastech-frame-2.png +0 -0
  59. package/public/nastech-frames/nastech-frame-3.png +0 -0
  60. package/public/nastech-frames/nastech-frame-4.png +0 -0
  61. package/public/nastech-frames/nastech-frame-5.png +0 -0
  62. package/public/nastech-frames/nastech-frame-6.png +0 -0
  63. package/public/nastech-frames/nastech-frame-7.png +0 -0
  64. package/public/nastech-girl.jpg +0 -0
  65. package/public/nastech-sprite.png +0 -0
  66. package/public/nastech.png +0 -0
  67. package/scripts/after-pack.cjs +41 -0
  68. package/scripts/assert-dist-built.cjs +70 -0
  69. package/scripts/assert-dist-built.test.cjs +84 -0
  70. package/scripts/assert-root-install.cjs +13 -0
  71. package/scripts/before-build.cjs +11 -0
  72. package/scripts/before-pack.cjs +78 -0
  73. package/scripts/before-pack.test.cjs +53 -0
  74. package/scripts/click-session.mjs +51 -0
  75. package/scripts/dev-no-hmr.mjs +22 -0
  76. package/scripts/diag-jump.mjs +115 -0
  77. package/scripts/diag-scroll-reset.mjs +229 -0
  78. package/scripts/eval.mjs +21 -0
  79. package/scripts/leak-typing.mjs +222 -0
  80. package/scripts/measure-jump.mjs +108 -0
  81. package/scripts/measure-latency.mjs +184 -0
  82. package/scripts/measure-real-stream.mjs +252 -0
  83. package/scripts/measure-submit.mjs +179 -0
  84. package/scripts/measure-synthetic-stream.mjs +322 -0
  85. package/scripts/notarize-artifact.cjs +77 -0
  86. package/scripts/notarize.cjs +100 -0
  87. package/scripts/patch-electron-builder-mac-binary.cjs +59 -0
  88. package/scripts/probe-renderer.mjs +38 -0
  89. package/scripts/probe-thread.mjs +40 -0
  90. package/scripts/profile-long-stream.mjs +191 -0
  91. package/scripts/profile-real-stream.mjs +137 -0
  92. package/scripts/profile-synth-stream.mjs +103 -0
  93. package/scripts/profile-typing-lag.md +381 -0
  94. package/scripts/profile-typing.mjs +260 -0
  95. package/scripts/reload-renderer.mjs +25 -0
  96. package/scripts/reload.mjs +36 -0
  97. package/scripts/set-exe-identity.cjs +94 -0
  98. package/scripts/stage-native-deps.cjs +159 -0
  99. package/scripts/test-desktop.mjs +425 -0
  100. package/scripts/write-build-stamp.cjs +126 -0
  101. package/src/app/agents/index.tsx +398 -0
  102. package/src/app/artifacts/index.test.ts +62 -0
  103. package/src/app/artifacts/index.tsx +906 -0
  104. package/src/app/chat/chat-drop-overlay.tsx +48 -0
  105. package/src/app/chat/chat-swap-overlay.tsx +47 -0
  106. package/src/app/chat/composer/attachments.tsx +114 -0
  107. package/src/app/chat/composer/completion-drawer.tsx +63 -0
  108. package/src/app/chat/composer/context-menu.tsx +172 -0
  109. package/src/app/chat/composer/controls.tsx +289 -0
  110. package/src/app/chat/composer/drop-affordance.ts +2 -0
  111. package/src/app/chat/composer/enter-submit-dom-race.test.tsx +218 -0
  112. package/src/app/chat/composer/focus.ts +134 -0
  113. package/src/app/chat/composer/help-hint.tsx +59 -0
  114. package/src/app/chat/composer/hooks/use-at-completions.ts +141 -0
  115. package/src/app/chat/composer/hooks/use-live-completion-adapter.ts +119 -0
  116. package/src/app/chat/composer/hooks/use-mic-recorder.ts +291 -0
  117. package/src/app/chat/composer/hooks/use-slash-completions.ts +114 -0
  118. package/src/app/chat/composer/hooks/use-voice-conversation.ts +390 -0
  119. package/src/app/chat/composer/hooks/use-voice-recorder.ts +116 -0
  120. package/src/app/chat/composer/ime-composition-dom-repro.test.tsx +108 -0
  121. package/src/app/chat/composer/index.tsx +1611 -0
  122. package/src/app/chat/composer/inline-refs.ts +138 -0
  123. package/src/app/chat/composer/model-pill.tsx +86 -0
  124. package/src/app/chat/composer/queue-panel.tsx +130 -0
  125. package/src/app/chat/composer/rich-editor.test.ts +18 -0
  126. package/src/app/chat/composer/rich-editor.ts +165 -0
  127. package/src/app/chat/composer/skin-slash-popover.tsx +61 -0
  128. package/src/app/chat/composer/slash-nav-dom-repro.test.tsx +186 -0
  129. package/src/app/chat/composer/status-stack/index.tsx +202 -0
  130. package/src/app/chat/composer/status-stack/status-row.tsx +155 -0
  131. package/src/app/chat/composer/text-utils.test.ts +77 -0
  132. package/src/app/chat/composer/text-utils.ts +107 -0
  133. package/src/app/chat/composer/trigger-popover.test.tsx +42 -0
  134. package/src/app/chat/composer/trigger-popover.tsx +116 -0
  135. package/src/app/chat/composer/types.ts +64 -0
  136. package/src/app/chat/composer/url-dialog.tsx +82 -0
  137. package/src/app/chat/composer/voice-activity.tsx +252 -0
  138. package/src/app/chat/hooks/use-composer-actions.test.ts +57 -0
  139. package/src/app/chat/hooks/use-composer-actions.ts +525 -0
  140. package/src/app/chat/hooks/use-file-drop-zone.ts +118 -0
  141. package/src/app/chat/index.tsx +390 -0
  142. package/src/app/chat/perf-probe.tsx +269 -0
  143. package/src/app/chat/right-rail/index.ts +1 -0
  144. package/src/app/chat/right-rail/preview-console-state.ts +82 -0
  145. package/src/app/chat/right-rail/preview-console.tsx +290 -0
  146. package/src/app/chat/right-rail/preview-file.tsx +559 -0
  147. package/src/app/chat/right-rail/preview-pane.test.tsx +43 -0
  148. package/src/app/chat/right-rail/preview-pane.tsx +657 -0
  149. package/src/app/chat/right-rail/preview.tsx +171 -0
  150. package/src/app/chat/scroll-to-bottom-button.test.tsx +67 -0
  151. package/src/app/chat/scroll-to-bottom-button.tsx +74 -0
  152. package/src/app/chat/sidebar/cron-jobs-section.tsx +325 -0
  153. package/src/app/chat/sidebar/index.tsx +1219 -0
  154. package/src/app/chat/sidebar/load-more-row.tsx +30 -0
  155. package/src/app/chat/sidebar/order.test.ts +21 -0
  156. package/src/app/chat/sidebar/order.ts +17 -0
  157. package/src/app/chat/sidebar/profile-switcher.tsx +516 -0
  158. package/src/app/chat/sidebar/session-actions-menu.tsx +264 -0
  159. package/src/app/chat/sidebar/session-row.tsx +257 -0
  160. package/src/app/chat/sidebar/virtual-session-list.tsx +154 -0
  161. package/src/app/chat/sidebar/workspace-groups.test.ts +149 -0
  162. package/src/app/chat/sidebar/workspace-groups.ts +326 -0
  163. package/src/app/chat/thread-loading.test.ts +34 -0
  164. package/src/app/chat/thread-loading.ts +26 -0
  165. package/src/app/command-center/index.tsx +654 -0
  166. package/src/app/command-palette/index.tsx +513 -0
  167. package/src/app/command-palette/marketplace-theme-page.tsx +157 -0
  168. package/src/app/cron/index.tsx +942 -0
  169. package/src/app/cron/job-state.ts +29 -0
  170. package/src/app/desktop-controller.tsx +938 -0
  171. package/src/app/floating-hud.ts +22 -0
  172. package/src/app/gateway/hooks/use-gateway-boot.test.tsx +265 -0
  173. package/src/app/gateway/hooks/use-gateway-boot.ts +387 -0
  174. package/src/app/gateway/hooks/use-gateway-request.ts +138 -0
  175. package/src/app/hooks/use-keybinds.ts +186 -0
  176. package/src/app/hooks/use-refresh-hotkey.ts +45 -0
  177. package/src/app/hooks/use-route-enum-param.ts +38 -0
  178. package/src/app/index.tsx +1 -0
  179. package/src/app/layout-constants.ts +13 -0
  180. package/src/app/messaging/index.tsx +648 -0
  181. package/src/app/messaging/platform-icon.tsx +93 -0
  182. package/src/app/model-picker-overlay.tsx +42 -0
  183. package/src/app/model-visibility-overlay.tsx +31 -0
  184. package/src/app/overlays/overlay-chrome.tsx +66 -0
  185. package/src/app/overlays/overlay-search-input.tsx +33 -0
  186. package/src/app/overlays/overlay-split-layout.tsx +130 -0
  187. package/src/app/overlays/overlay-view.tsx +91 -0
  188. package/src/app/page-search-shell.tsx +75 -0
  189. package/src/app/profiles/create-profile-dialog.tsx +154 -0
  190. package/src/app/profiles/delete-profile-dialog.tsx +65 -0
  191. package/src/app/profiles/index.tsx +671 -0
  192. package/src/app/profiles/rename-profile-dialog.tsx +125 -0
  193. package/src/app/right-sidebar/files/dnd-manager.ts +27 -0
  194. package/src/app/right-sidebar/files/ipc.test.ts +100 -0
  195. package/src/app/right-sidebar/files/ipc.ts +161 -0
  196. package/src/app/right-sidebar/files/remote-picker.tsx +177 -0
  197. package/src/app/right-sidebar/files/tree.tsx +224 -0
  198. package/src/app/right-sidebar/files/use-project-tree.test.ts +190 -0
  199. package/src/app/right-sidebar/files/use-project-tree.ts +268 -0
  200. package/src/app/right-sidebar/index.test.tsx +75 -0
  201. package/src/app/right-sidebar/index.tsx +395 -0
  202. package/src/app/right-sidebar/store.ts +15 -0
  203. package/src/app/right-sidebar/terminal/buffer.ts +65 -0
  204. package/src/app/right-sidebar/terminal/index.tsx +98 -0
  205. package/src/app/right-sidebar/terminal/persistent.tsx +122 -0
  206. package/src/app/right-sidebar/terminal/selection.ts +75 -0
  207. package/src/app/right-sidebar/terminal/use-terminal-session.ts +504 -0
  208. package/src/app/routes.ts +88 -0
  209. package/src/app/session/hooks/use-context-suggestions.ts +58 -0
  210. package/src/app/session/hooks/use-cwd-actions.ts +109 -0
  211. package/src/app/session/hooks/use-message-stream.ts +957 -0
  212. package/src/app/session/hooks/use-model-controls.test.tsx +198 -0
  213. package/src/app/session/hooks/use-model-controls.ts +106 -0
  214. package/src/app/session/hooks/use-nastech-config.ts +74 -0
  215. package/src/app/session/hooks/use-preview-routing.test.tsx +168 -0
  216. package/src/app/session/hooks/use-preview-routing.ts +223 -0
  217. package/src/app/session/hooks/use-prompt-actions.test.tsx +316 -0
  218. package/src/app/session/hooks/use-prompt-actions.ts +1030 -0
  219. package/src/app/session/hooks/use-route-resume.test.tsx +136 -0
  220. package/src/app/session/hooks/use-route-resume.ts +115 -0
  221. package/src/app/session/hooks/use-session-actions.test.tsx +119 -0
  222. package/src/app/session/hooks/use-session-actions.ts +885 -0
  223. package/src/app/session/hooks/use-session-state-cache.test.tsx +118 -0
  224. package/src/app/session/hooks/use-session-state-cache.ts +191 -0
  225. package/src/app/session-picker-overlay.tsx +32 -0
  226. package/src/app/session-switcher.tsx +107 -0
  227. package/src/app/settings/about-settings.tsx +173 -0
  228. package/src/app/settings/appearance-settings.tsx +162 -0
  229. package/src/app/settings/config-settings.tsx +384 -0
  230. package/src/app/settings/constants.ts +545 -0
  231. package/src/app/settings/credential-key-ui.tsx +373 -0
  232. package/src/app/settings/env-credentials.tsx +198 -0
  233. package/src/app/settings/env-var-actions-menu.tsx +136 -0
  234. package/src/app/settings/field-copy.ts +56 -0
  235. package/src/app/settings/gateway-settings.tsx +620 -0
  236. package/src/app/settings/helpers.test.ts +138 -0
  237. package/src/app/settings/helpers.ts +151 -0
  238. package/src/app/settings/index.tsx +237 -0
  239. package/src/app/settings/keys-settings.tsx +96 -0
  240. package/src/app/settings/mcp-settings.tsx +271 -0
  241. package/src/app/settings/model-settings.test.tsx +157 -0
  242. package/src/app/settings/model-settings.tsx +559 -0
  243. package/src/app/settings/notifications-settings.tsx +150 -0
  244. package/src/app/settings/primitives.tsx +115 -0
  245. package/src/app/settings/providers-settings.test.tsx +100 -0
  246. package/src/app/settings/providers-settings.tsx +258 -0
  247. package/src/app/settings/sessions-settings.tsx +276 -0
  248. package/src/app/settings/toolset-config-panel.test.tsx +289 -0
  249. package/src/app/settings/toolset-config-panel.tsx +449 -0
  250. package/src/app/settings/types.ts +42 -0
  251. package/src/app/settings/uninstall-section.tsx +185 -0
  252. package/src/app/settings/use-deep-link-highlight.ts +60 -0
  253. package/src/app/shell/app-shell.tsx +167 -0
  254. package/src/app/shell/gateway-menu-panel.tsx +150 -0
  255. package/src/app/shell/hooks/use-overlay-routing.ts +71 -0
  256. package/src/app/shell/hooks/use-status-snapshot.ts +57 -0
  257. package/src/app/shell/hooks/use-statusbar-items.tsx +403 -0
  258. package/src/app/shell/keybind-panel.tsx +220 -0
  259. package/src/app/shell/model-edit-submenu.test.tsx +84 -0
  260. package/src/app/shell/model-edit-submenu.tsx +245 -0
  261. package/src/app/shell/model-menu-panel.tsx +295 -0
  262. package/src/app/shell/sidebar-label.tsx +22 -0
  263. package/src/app/shell/statusbar-controls.tsx +185 -0
  264. package/src/app/shell/titlebar-controls.tsx +244 -0
  265. package/src/app/shell/titlebar.test.ts +26 -0
  266. package/src/app/shell/titlebar.ts +45 -0
  267. package/src/app/shell/use-group-registry.ts +39 -0
  268. package/src/app/skills/index.test.tsx +103 -0
  269. package/src/app/skills/index.tsx +371 -0
  270. package/src/app/types.ts +99 -0
  271. package/src/app/updates-overlay.tsx +369 -0
  272. package/src/components/Backdrop.tsx +114 -0
  273. package/src/components/assistant-ui/ansi-text.tsx +34 -0
  274. package/src/components/assistant-ui/clarify-tool.tsx +281 -0
  275. package/src/components/assistant-ui/directive-text.test.ts +39 -0
  276. package/src/components/assistant-ui/directive-text.tsx +389 -0
  277. package/src/components/assistant-ui/markdown-text.test.ts +204 -0
  278. package/src/components/assistant-ui/markdown-text.tsx +497 -0
  279. package/src/components/assistant-ui/message-render-boundary.test.tsx +80 -0
  280. package/src/components/assistant-ui/message-render-boundary.tsx +48 -0
  281. package/src/components/assistant-ui/streaming.test.tsx +739 -0
  282. package/src/components/assistant-ui/thread-list.tsx +307 -0
  283. package/src/components/assistant-ui/thread-virtualizer.tsx +512 -0
  284. package/src/components/assistant-ui/thread.tsx +1474 -0
  285. package/src/components/assistant-ui/todo-tool.tsx +109 -0
  286. package/src/components/assistant-ui/tool-approval-group.test.tsx +158 -0
  287. package/src/components/assistant-ui/tool-approval.test.tsx +81 -0
  288. package/src/components/assistant-ui/tool-approval.tsx +209 -0
  289. package/src/components/assistant-ui/tool-fallback-model.test.ts +66 -0
  290. package/src/components/assistant-ui/tool-fallback-model.ts +1368 -0
  291. package/src/components/assistant-ui/tool-fallback.tsx +466 -0
  292. package/src/components/assistant-ui/tooltip-icon-button.tsx +33 -0
  293. package/src/components/assistant-ui/user-message-edit.test.tsx +141 -0
  294. package/src/components/assistant-ui/user-message-text.tsx +150 -0
  295. package/src/components/boot-failure-overlay.tsx +246 -0
  296. package/src/components/boot-failure-reauth.test.ts +100 -0
  297. package/src/components/boot-failure-reauth.ts +81 -0
  298. package/src/components/brand-mark.tsx +19 -0
  299. package/src/components/chat/activity-timer-text.tsx +24 -0
  300. package/src/components/chat/activity-timer.test.tsx +43 -0
  301. package/src/components/chat/activity-timer.ts +64 -0
  302. package/src/components/chat/code-card.tsx +78 -0
  303. package/src/components/chat/compact-markdown.tsx +113 -0
  304. package/src/components/chat/composer-dock.ts +31 -0
  305. package/src/components/chat/diff-lines.tsx +54 -0
  306. package/src/components/chat/disclosure-row.tsx +63 -0
  307. package/src/components/chat/generated-image-context.tsx +19 -0
  308. package/src/components/chat/generated-image-result.tsx +174 -0
  309. package/src/components/chat/image-generation-placeholder.tsx +279 -0
  310. package/src/components/chat/intro-copy.jsonl +75 -0
  311. package/src/components/chat/intro.tsx +182 -0
  312. package/src/components/chat/preview-attachment.tsx +125 -0
  313. package/src/components/chat/shiki-highlighter.tsx +107 -0
  314. package/src/components/chat/status-row.tsx +70 -0
  315. package/src/components/chat/status-section.tsx +42 -0
  316. package/src/components/chat/terminal-output.tsx +50 -0
  317. package/src/components/chat/zoomable-image.tsx +177 -0
  318. package/src/components/desktop-install-overlay.tsx +595 -0
  319. package/src/components/desktop-onboarding-overlay.test.tsx +100 -0
  320. package/src/components/desktop-onboarding-overlay.tsx +1286 -0
  321. package/src/components/error-boundary.tsx +77 -0
  322. package/src/components/gateway-connecting-overlay.test.tsx +143 -0
  323. package/src/components/gateway-connecting-overlay.tsx +183 -0
  324. package/src/components/haptics-provider.tsx +19 -0
  325. package/src/components/language-switcher.test.tsx +53 -0
  326. package/src/components/language-switcher.tsx +175 -0
  327. package/src/components/model-picker.tsx +340 -0
  328. package/src/components/model-visibility-dialog.tsx +155 -0
  329. package/src/components/notifications.tsx +196 -0
  330. package/src/components/page-loader.tsx +34 -0
  331. package/src/components/pane-shell/context.ts +14 -0
  332. package/src/components/pane-shell/index.ts +4 -0
  333. package/src/components/pane-shell/pane-shell.test.tsx +333 -0
  334. package/src/components/pane-shell/pane-shell.tsx +330 -0
  335. package/src/components/prompt-overlays.tsx +234 -0
  336. package/src/components/session-picker.tsx +108 -0
  337. package/src/components/status-dot.tsx +26 -0
  338. package/src/components/ui/action-status.tsx +25 -0
  339. package/src/components/ui/alert.tsx +53 -0
  340. package/src/components/ui/badge.tsx +35 -0
  341. package/src/components/ui/braille-spinner.tsx +61 -0
  342. package/src/components/ui/button.tsx +81 -0
  343. package/src/components/ui/checkbox.tsx +27 -0
  344. package/src/components/ui/codicon.tsx +20 -0
  345. package/src/components/ui/command.tsx +111 -0
  346. package/src/components/ui/confirm-dialog.tsx +109 -0
  347. package/src/components/ui/context-menu.tsx +141 -0
  348. package/src/components/ui/control.ts +25 -0
  349. package/src/components/ui/copy-button.test.tsx +36 -0
  350. package/src/components/ui/copy-button.tsx +229 -0
  351. package/src/components/ui/dialog.tsx +152 -0
  352. package/src/components/ui/disclosure-caret.tsx +20 -0
  353. package/src/components/ui/dropdown-menu.tsx +291 -0
  354. package/src/components/ui/error-state.tsx +50 -0
  355. package/src/components/ui/fade-text.tsx +110 -0
  356. package/src/components/ui/glyph-spinner.tsx +63 -0
  357. package/src/components/ui/input.tsx +22 -0
  358. package/src/components/ui/kbd.tsx +37 -0
  359. package/src/components/ui/loader.tsx +558 -0
  360. package/src/components/ui/log-view.tsx +17 -0
  361. package/src/components/ui/pagination.tsx +114 -0
  362. package/src/components/ui/popover.tsx +44 -0
  363. package/src/components/ui/scroll-area.tsx +43 -0
  364. package/src/components/ui/search-field.tsx +80 -0
  365. package/src/components/ui/segmented-control.tsx +51 -0
  366. package/src/components/ui/select.tsx +92 -0
  367. package/src/components/ui/separator.tsx +26 -0
  368. package/src/components/ui/sheet.tsx +116 -0
  369. package/src/components/ui/sidebar.tsx +674 -0
  370. package/src/components/ui/skeleton.tsx +7 -0
  371. package/src/components/ui/switch.tsx +49 -0
  372. package/src/components/ui/tabs.tsx +36 -0
  373. package/src/components/ui/text-tab.tsx +43 -0
  374. package/src/components/ui/textarea.tsx +11 -0
  375. package/src/components/ui/tool-icon.tsx +65 -0
  376. package/src/components/ui/tooltip.tsx +69 -0
  377. package/src/fonts/JetBrainsMono-Bold.woff2 +0 -0
  378. package/src/fonts/JetBrainsMono-Italic.woff2 +0 -0
  379. package/src/fonts/JetBrainsMono-Regular.woff2 +0 -0
  380. package/src/global.d.ts +457 -0
  381. package/src/hooks/use-image-download.ts +85 -0
  382. package/src/hooks/use-media-query.ts +24 -0
  383. package/src/hooks/use-mobile.ts +3 -0
  384. package/src/hooks/use-resize-observer.ts +38 -0
  385. package/src/hooks/use-worktree-info.ts +68 -0
  386. package/src/i18n/catalog.ts +12 -0
  387. package/src/i18n/context.test.tsx +232 -0
  388. package/src/i18n/context.tsx +183 -0
  389. package/src/i18n/define-locale.ts +41 -0
  390. package/src/i18n/en.ts +1779 -0
  391. package/src/i18n/index.ts +20 -0
  392. package/src/i18n/ja.ts +1890 -0
  393. package/src/i18n/languages.test.ts +43 -0
  394. package/src/i18n/languages.ts +86 -0
  395. package/src/i18n/runtime.test.ts +75 -0
  396. package/src/i18n/runtime.ts +53 -0
  397. package/src/i18n/types.ts +1452 -0
  398. package/src/i18n/zh-hant.ts +1849 -0
  399. package/src/i18n/zh.ts +1923 -0
  400. package/src/lib/ansi.test.ts +123 -0
  401. package/src/lib/ansi.ts +175 -0
  402. package/src/lib/chat-messages.test.ts +708 -0
  403. package/src/lib/chat-messages.ts +885 -0
  404. package/src/lib/chat-runtime.test.ts +18 -0
  405. package/src/lib/chat-runtime.ts +335 -0
  406. package/src/lib/clipboard.ts +28 -0
  407. package/src/lib/commit-changelog.test.ts +114 -0
  408. package/src/lib/commit-changelog.ts +177 -0
  409. package/src/lib/completion-sound.ts +519 -0
  410. package/src/lib/desktop-fs.test.ts +116 -0
  411. package/src/lib/desktop-fs.ts +113 -0
  412. package/src/lib/desktop-slash-commands.test.ts +126 -0
  413. package/src/lib/desktop-slash-commands.ts +286 -0
  414. package/src/lib/embedded-images.test.ts +35 -0
  415. package/src/lib/embedded-images.ts +60 -0
  416. package/src/lib/external-link.test.tsx +168 -0
  417. package/src/lib/external-link.tsx +303 -0
  418. package/src/lib/gateway-events.test.ts +27 -0
  419. package/src/lib/gateway-events.ts +49 -0
  420. package/src/lib/gateway-ws-url.test.ts +78 -0
  421. package/src/lib/gateway-ws-url.ts +91 -0
  422. package/src/lib/generated-images.test.ts +97 -0
  423. package/src/lib/generated-images.ts +116 -0
  424. package/src/lib/haptics.ts +129 -0
  425. package/src/lib/icons.ts +203 -0
  426. package/src/lib/incremental-external-store-runtime.ts +188 -0
  427. package/src/lib/katex-memo.ts +260 -0
  428. package/src/lib/keybinds/actions.ts +125 -0
  429. package/src/lib/keybinds/combo.test.ts +86 -0
  430. package/src/lib/keybinds/combo.ts +169 -0
  431. package/src/lib/local-preview.ts +126 -0
  432. package/src/lib/markdown-code.test.ts +23 -0
  433. package/src/lib/markdown-code.ts +195 -0
  434. package/src/lib/markdown-preprocess.ts +386 -0
  435. package/src/lib/media.remote.test.ts +58 -0
  436. package/src/lib/media.ts +111 -0
  437. package/src/lib/model-status-label.test.ts +31 -0
  438. package/src/lib/model-status-label.ts +103 -0
  439. package/src/lib/mutable-ref.ts +6 -0
  440. package/src/lib/preview-targets.test.ts +27 -0
  441. package/src/lib/preview-targets.ts +63 -0
  442. package/src/lib/profile-color.ts +58 -0
  443. package/src/lib/provider-setup-errors.test.ts +26 -0
  444. package/src/lib/provider-setup-errors.ts +12 -0
  445. package/src/lib/query-client.ts +13 -0
  446. package/src/lib/remend-tail.test.ts +105 -0
  447. package/src/lib/remend-tail.ts +108 -0
  448. package/src/lib/runtime-readiness.test.ts +65 -0
  449. package/src/lib/runtime-readiness.ts +147 -0
  450. package/src/lib/session-export.ts +57 -0
  451. package/src/lib/session-search.test.ts +58 -0
  452. package/src/lib/session-search.ts +19 -0
  453. package/src/lib/session-source.ts +62 -0
  454. package/src/lib/speech-text.ts +35 -0
  455. package/src/lib/statusbar.ts +91 -0
  456. package/src/lib/storage.test.ts +25 -0
  457. package/src/lib/storage.ts +107 -0
  458. package/src/lib/todos.test.ts +35 -0
  459. package/src/lib/todos.ts +51 -0
  460. package/src/lib/tool-result-summary.test.ts +106 -0
  461. package/src/lib/tool-result-summary.ts +467 -0
  462. package/src/lib/update-copy.test.ts +38 -0
  463. package/src/lib/update-copy.ts +44 -0
  464. package/src/lib/use-enter-animation.ts +100 -0
  465. package/src/lib/utils.ts +6 -0
  466. package/src/lib/voice-playback.ts +128 -0
  467. package/src/lib/yolo-session.ts +26 -0
  468. package/src/main.tsx +43 -0
  469. package/src/nastech.test.ts +49 -0
  470. package/src/nastech.ts +718 -0
  471. package/src/store/activity.ts +100 -0
  472. package/src/store/boot.ts +91 -0
  473. package/src/store/clarify.test.ts +81 -0
  474. package/src/store/clarify.ts +69 -0
  475. package/src/store/command-palette.ts +20 -0
  476. package/src/store/compaction.test.ts +53 -0
  477. package/src/store/compaction.ts +38 -0
  478. package/src/store/completion-sound.ts +32 -0
  479. package/src/store/composer-input-history.test.ts +147 -0
  480. package/src/store/composer-input-history.ts +158 -0
  481. package/src/store/composer-queue.test.ts +148 -0
  482. package/src/store/composer-queue.ts +239 -0
  483. package/src/store/composer-status.test.ts +99 -0
  484. package/src/store/composer-status.ts +277 -0
  485. package/src/store/composer.test.ts +106 -0
  486. package/src/store/composer.ts +184 -0
  487. package/src/store/cron.ts +19 -0
  488. package/src/store/gateway.ts +290 -0
  489. package/src/store/haptics.ts +17 -0
  490. package/src/store/keybinds.ts +139 -0
  491. package/src/store/layout.ts +176 -0
  492. package/src/store/model-presets.test.ts +51 -0
  493. package/src/store/model-presets.ts +86 -0
  494. package/src/store/model-visibility.test.ts +37 -0
  495. package/src/store/model-visibility.ts +108 -0
  496. package/src/store/native-notifications.test.ts +192 -0
  497. package/src/store/native-notifications.ts +203 -0
  498. package/src/store/notifications.ts +165 -0
  499. package/src/store/onboarding.test.ts +372 -0
  500. package/src/store/onboarding.ts +866 -0
  501. package/src/store/panes.test.ts +146 -0
  502. package/src/store/panes.ts +145 -0
  503. package/src/store/preview.test.ts +135 -0
  504. package/src/store/preview.ts +466 -0
  505. package/src/store/profile.test.ts +89 -0
  506. package/src/store/profile.ts +365 -0
  507. package/src/store/prompts.test.ts +121 -0
  508. package/src/store/prompts.ts +115 -0
  509. package/src/store/session-switcher.test.ts +115 -0
  510. package/src/store/session-switcher.ts +128 -0
  511. package/src/store/session-sync.ts +25 -0
  512. package/src/store/session.test.ts +131 -0
  513. package/src/store/session.ts +255 -0
  514. package/src/store/subagents.test.ts +111 -0
  515. package/src/store/subagents.ts +260 -0
  516. package/src/store/thread-scroll.ts +46 -0
  517. package/src/store/todos.test.ts +47 -0
  518. package/src/store/todos.ts +64 -0
  519. package/src/store/tool-diffs.ts +23 -0
  520. package/src/store/tool-dismiss.ts +45 -0
  521. package/src/store/tool-view.ts +91 -0
  522. package/src/store/translucency.ts +38 -0
  523. package/src/store/updates.test.ts +77 -0
  524. package/src/store/updates.ts +315 -0
  525. package/src/store/voice-playback.ts +24 -0
  526. package/src/store/windows.test.ts +143 -0
  527. package/src/store/windows.ts +77 -0
  528. package/src/styles.css +1235 -0
  529. package/src/themes/color.ts +142 -0
  530. package/src/themes/context.tsx +339 -0
  531. package/src/themes/index.ts +3 -0
  532. package/src/themes/install.test.ts +119 -0
  533. package/src/themes/install.ts +95 -0
  534. package/src/themes/presets.test.ts +33 -0
  535. package/src/themes/presets.ts +293 -0
  536. package/src/themes/profile-theme.test.ts +41 -0
  537. package/src/themes/types.ts +66 -0
  538. package/src/themes/use-skin-command.ts +60 -0
  539. package/src/themes/user-themes.test.ts +63 -0
  540. package/src/themes/user-themes.ts +122 -0
  541. package/src/themes/vscode.test.ts +171 -0
  542. package/src/themes/vscode.ts +343 -0
  543. package/src/types/nastech.ts +646 -0
  544. package/src/vite-env.d.ts +1 -0
  545. package/tsconfig.json +25 -0
  546. package/vite.config.ts +56 -0
@@ -0,0 +1,1452 @@
1
+ // Desktop i18n type contract.
2
+ //
3
+ // `Translations` is the single source of truth for every translatable string
4
+ // surface. Fully translated locale files may satisfy this interface directly;
5
+ // partial locales should use `defineLocale()` so missing desktop-only strings
6
+ // fall back to English while new keys remain type-checked.
7
+
8
+ export type Locale = 'en' | 'zh' | 'zh-hant' | 'ja'
9
+
10
+ interface ModeOptionCopy {
11
+ label: string
12
+ description: string
13
+ }
14
+
15
+ interface AuxTaskCopy {
16
+ label: string
17
+ hint: string
18
+ }
19
+
20
+ export interface Translations {
21
+ common: {
22
+ apply: string
23
+ back: string
24
+ save: string
25
+ saving: string
26
+ cancel: string
27
+ change: string
28
+ choose: string
29
+ clear: string
30
+ close: string
31
+ collapse: string
32
+ confirm: string
33
+ connect: string
34
+ connecting: string
35
+ continue: string
36
+ copied: string
37
+ copy: string
38
+ copyFailed: string
39
+ delete: string
40
+ docs: string
41
+ done: string
42
+ error: string
43
+ failed: string
44
+ free: string
45
+ loading: string
46
+ notSet: string
47
+ refresh: string
48
+ remove: string
49
+ replace: string
50
+ retry: string
51
+ run: string
52
+ send: string
53
+ set: string
54
+ skip: string
55
+ update: string
56
+ on: string
57
+ off: string
58
+ }
59
+
60
+ boot: {
61
+ ready: string
62
+ desktopBootFailedWithMessage: (message: string) => string
63
+ steps: {
64
+ connectingGateway: string
65
+ loadingSettings: string
66
+ loadingSessions: string
67
+ startingDesktopConnection: string
68
+ startingNasTechDesktop: string
69
+ }
70
+ errors: {
71
+ backgroundExited: string
72
+ backgroundExitedDuringStartup: string
73
+ backendStopped: string
74
+ desktopBootFailed: string
75
+ gatewaySignInRequired: string
76
+ ipcBridgeUnavailable: string
77
+ }
78
+ failure: {
79
+ title: string
80
+ description: string
81
+ remoteTitle: string
82
+ remoteDescription: string
83
+ retry: string
84
+ repairInstall: string
85
+ useLocalGateway: string
86
+ openLogs: string
87
+ repairHint: string
88
+ remoteSignInHint: string
89
+ hideRecentLogs: string
90
+ showRecentLogs: string
91
+ signedInTitle: string
92
+ signedInMessage: string
93
+ signInIncompleteTitle: string
94
+ signInIncompleteMessage: string
95
+ signInFailed: string
96
+ signInToRemoteGateway: string
97
+ signInWithProvider: (provider: string) => string
98
+ identityProvider: string
99
+ }
100
+ }
101
+
102
+ notifications: {
103
+ region: string
104
+ hide: string
105
+ show: string
106
+ more: (count: number) => string
107
+ clearAll: string
108
+ dismiss: string
109
+ details: string
110
+ copyDetail: string
111
+ copyDetailFailed: string
112
+ backendOutOfDateTitle: string
113
+ backendOutOfDateMessage: string
114
+ updateNasTech: string
115
+ updateReadyTitle: string
116
+ updateReadyMessage: (count: number) => string
117
+ seeWhatsNew: string
118
+ errors: {
119
+ elevenLabsNeedsKey: string
120
+ elevenLabsRejectedKey: string
121
+ methodNotAllowed: string
122
+ microphonePermission: string
123
+ openaiRejectedApiKey: string
124
+ openaiRejectedApiKeyWithStatus: (status: string) => string
125
+ openaiTtsNeedsKey: string
126
+ }
127
+ voice: {
128
+ configureSpeechToText: string
129
+ couldNotStartSession: string
130
+ microphoneAccessDenied: string
131
+ microphoneConstraintsUnsupported: string
132
+ microphoneFailed: string
133
+ microphoneInUse: string
134
+ microphonePermissionDenied: string
135
+ microphoneStartFailed: string
136
+ microphoneUnsupported: string
137
+ noMicrophone: string
138
+ noSpeechDetected: string
139
+ playbackFailed: string
140
+ recordingFailed: string
141
+ transcriptionFailed: string
142
+ transcriptionUnavailable: string
143
+ tryRecordingAgain: string
144
+ unavailable: string
145
+ }
146
+ }
147
+
148
+ titlebar: {
149
+ hideSidebar: string
150
+ showSidebar: string
151
+ search: string
152
+ searchTitle: string
153
+ swapSidebarSides: string
154
+ swapSidebarSidesTitle: string
155
+ hideRightSidebar: string
156
+ showRightSidebar: string
157
+ muteHaptics: string
158
+ unmuteHaptics: string
159
+ openSettings: string
160
+ openKeybinds: string
161
+ }
162
+
163
+ keybinds: {
164
+ title: string
165
+ subtitle: (open: string) => string
166
+ rebind: string
167
+ reset: string
168
+ resetAll: string
169
+ pressKey: string
170
+ set: string
171
+ conflictWith: (label: string) => string
172
+ categories: Record<string, string>
173
+ actions: Record<string, string>
174
+ }
175
+
176
+ language: {
177
+ label: string
178
+ description: string
179
+ saving: string
180
+ saveError: string
181
+ switchTo: string
182
+ searchPlaceholder: string
183
+ noResults: string
184
+ }
185
+
186
+ settings: {
187
+ closeSettings: string
188
+ exportConfig: string
189
+ importConfig: string
190
+ resetToDefaults: string
191
+ resetConfirm: string
192
+ exportFailed: string
193
+ resetFailed: string
194
+ nav: {
195
+ providers: string
196
+ providerAccounts: string
197
+ providerApiKeys: string
198
+ gateway: string
199
+ apiKeys: string
200
+ keysTools: string
201
+ keysSettings: string
202
+ mcp: string
203
+ archivedChats: string
204
+ about: string
205
+ }
206
+ sections: Record<string, string>
207
+ searchPlaceholder: Record<'about' | 'config' | 'gateway' | 'keys' | 'mcp' | 'sessions', string>
208
+ modeOptions: Record<'light' | 'dark' | 'system', ModeOptionCopy>
209
+ appearance: {
210
+ title: string
211
+ intro: string
212
+ colorMode: string
213
+ colorModeDesc: string
214
+ toolViewTitle: string
215
+ toolViewDesc: string
216
+ product: string
217
+ productDesc: string
218
+ technical: string
219
+ technicalDesc: string
220
+ themeTitle: string
221
+ themeDesc: string
222
+ }
223
+ fieldLabels: Record<string, string>
224
+ fieldDescriptions: Record<string, string>
225
+ about: {
226
+ heading: string
227
+ version: (value: string) => string
228
+ versionUnavailable: string
229
+ updates: string
230
+ checkNow: string
231
+ checking: string
232
+ seeWhatsNew: string
233
+ releaseNotes: string
234
+ onLatest: string
235
+ installing: string
236
+ cantUpdate: string
237
+ cantReach: string
238
+ tapCheck: string
239
+ updateReady: (count: number) => string
240
+ lastChecked: (age: string) => string
241
+ justNowSuffix: string
242
+ automaticUpdates: string
243
+ automaticUpdatesDesc: string
244
+ branchCommit: (branch: string, commit: string) => string
245
+ never: string
246
+ justNow: string
247
+ minAgo: (count: number) => string
248
+ hoursAgo: (count: number) => string
249
+ daysAgo: (count: number) => string
250
+ }
251
+ config: {
252
+ none: string
253
+ noneParen: string
254
+ notSet: string
255
+ commaSeparated: string
256
+ loading: string
257
+ emptyTitle: string
258
+ emptyDesc: string
259
+ failedLoad: string
260
+ autosaveFailed: string
261
+ imported: string
262
+ invalidJson: string
263
+ }
264
+ credentials: {
265
+ pasteKey: string
266
+ pasteLabelKey: (label: string) => string
267
+ optional: string
268
+ enterValueFirst: string
269
+ couldNotSave: string
270
+ remove: string
271
+ or: string
272
+ escToCancel: string
273
+ getKey: string
274
+ saving: string
275
+ }
276
+ envActions: {
277
+ actionsFor: (label: string) => string
278
+ credentialActions: string
279
+ docs: string
280
+ hideValue: string
281
+ revealValue: string
282
+ replace: string
283
+ set: string
284
+ clear: string
285
+ }
286
+ gateway: {
287
+ loading: string
288
+ unavailableTitle: string
289
+ unavailableDesc: string
290
+ title: string
291
+ envOverride: string
292
+ intro: string
293
+ appliesTo: string
294
+ allProfiles: string
295
+ defaultConnection: string
296
+ profileConnection: (profile: string) => string
297
+ envOverrideTitle: string
298
+ envOverrideDesc: string
299
+ localTitle: string
300
+ localDesc: string
301
+ remoteTitle: string
302
+ remoteDesc: string
303
+ remoteUrlTitle: string
304
+ remoteUrlDesc: string
305
+ probing: string
306
+ probeError: string
307
+ signedIn: string
308
+ signIn: string
309
+ signOut: string
310
+ signInWith: (provider: string) => string
311
+ authTitle: string
312
+ authSignedInPassword: string
313
+ authSignedInOauth: string
314
+ authNeedsPassword: string
315
+ authNeedsOauth: (provider: string) => string
316
+ tokenTitle: string
317
+ tokenDesc: string
318
+ existingToken: (value: string) => string
319
+ savedToken: string
320
+ pasteSessionToken: string
321
+ testRemote: string
322
+ saveForRestart: string
323
+ saveAndReconnect: string
324
+ diagnostics: string
325
+ diagnosticsDesc: string
326
+ openLogs: string
327
+ incompleteTitle: string
328
+ incompleteSignIn: string
329
+ incompleteToken: string
330
+ incompleteSignInTest: string
331
+ incompleteTokenTest: string
332
+ enterUrlFirst: string
333
+ restartingTitle: string
334
+ savedTitle: string
335
+ restartingMessage: string
336
+ savedMessage: string
337
+ connectedTo: (baseUrl: string, version?: string) => string
338
+ reachableTitle: string
339
+ signedOutTitle: string
340
+ signedOutMessage: string
341
+ failedLoad: string
342
+ signInFailed: string
343
+ signOutFailed: string
344
+ testFailed: string
345
+ applyFailed: string
346
+ saveFailed: string
347
+ }
348
+ keys: {
349
+ loading: string
350
+ failedLoad: string
351
+ empty: string
352
+ }
353
+ mcp: {
354
+ loading: string
355
+ failedLoad: string
356
+ nameRequiredTitle: string
357
+ nameRequiredMessage: string
358
+ objectRequired: string
359
+ invalidJson: string
360
+ saveFailed: string
361
+ removeFailed: string
362
+ gatewayUnavailableTitle: string
363
+ gatewayUnavailableMessage: string
364
+ reloadedTitle: string
365
+ reloadedMessage: string
366
+ reloadFailed: string
367
+ savedTitle: string
368
+ savedMessage: (name: string) => string
369
+ newServer: string
370
+ reload: string
371
+ reloading: string
372
+ emptyTitle: string
373
+ emptyDesc: string
374
+ disabled: string
375
+ editServer: string
376
+ name: string
377
+ serverJson: string
378
+ remove: string
379
+ saveServer: string
380
+ }
381
+ model: {
382
+ loading: string
383
+ appliesDesc: string
384
+ provider: string
385
+ model: string
386
+ applying: string
387
+ auxiliaryTitle: string
388
+ resetAllToMain: string
389
+ auxiliaryDesc: string
390
+ setToMain: string
391
+ change: string
392
+ autoUseMain: string
393
+ providerDefault: string
394
+ tasks: Record<string, AuxTaskCopy>
395
+ }
396
+ providers: {
397
+ connectAccount: string
398
+ haveApiKey: string
399
+ intro: string
400
+ connected: string
401
+ collapse: string
402
+ connectAnother: string
403
+ otherProviders: string
404
+ noProviderKeys: string
405
+ loading: string
406
+ }
407
+ sessions: {
408
+ loading: string
409
+ archivedTitle: string
410
+ archivedIntro: string
411
+ emptyArchivedTitle: string
412
+ emptyArchivedDesc: string
413
+ unarchive: string
414
+ deletePermanently: string
415
+ messages: (count: number) => string
416
+ restored: string
417
+ deleteConfirm: (title: string) => string
418
+ defaultDirTitle: string
419
+ defaultDirDesc: string
420
+ defaultDirUpdated: string
421
+ defaultsTo: (label: string) => string
422
+ change: string
423
+ choose: string
424
+ clear: string
425
+ notSet: string
426
+ failedLoad: string
427
+ unarchiveFailed: string
428
+ deleteFailed: string
429
+ updateDirFailed: string
430
+ clearDirFailed: string
431
+ }
432
+ toolsets: {
433
+ loadingConfig: string
434
+ savedTitle: string
435
+ savedMessage: (key: string) => string
436
+ removedTitle: string
437
+ removedMessage: (key: string) => string
438
+ failedSave: (key: string) => string
439
+ failedRemove: (key: string) => string
440
+ failedReveal: (key: string) => string
441
+ removeConfirm: (key: string) => string
442
+ set: string
443
+ notSet: string
444
+ selectedTitle: string
445
+ selectedMessage: (provider: string) => string
446
+ failedSelect: (provider: string) => string
447
+ failedLoad: string
448
+ noProviderOptions: string
449
+ noProviders: string
450
+ ready: string
451
+ nousIncluded: string
452
+ noApiKeyRequired: string
453
+ postSetupHint: (step: string) => string
454
+ postSetupRun: string
455
+ postSetupRunning: string
456
+ postSetupStarting: string
457
+ postSetupCompleteTitle: string
458
+ postSetupCompleteMessage: (step: string) => string
459
+ postSetupErrorTitle: string
460
+ postSetupErrorMessage: (step: string) => string
461
+ postSetupFailed: (step: string) => string
462
+ }
463
+ }
464
+
465
+ skills: {
466
+ tabSkills: string
467
+ tabToolsets: string
468
+ all: string
469
+ searchSkills: string
470
+ searchToolsets: string
471
+ refresh: string
472
+ refreshing: string
473
+ loading: string
474
+ noSkillsTitle: string
475
+ noSkillsDesc: string
476
+ noToolsetsTitle: string
477
+ noToolsetsDesc: string
478
+ noDescription: string
479
+ configured: string
480
+ needsKeys: string
481
+ toolsetsEnabled: (enabled: number, total: number) => string
482
+ configureToolset: (label: string) => string
483
+ toggleToolset: (label: string) => string
484
+ skillsLoadFailed: string
485
+ toolsetsRefreshFailed: string
486
+ skillEnabled: string
487
+ skillDisabled: string
488
+ toolsetEnabled: string
489
+ toolsetDisabled: string
490
+ appliesToNewSessions: (name: string) => string
491
+ failedToUpdate: (name: string) => string
492
+ }
493
+
494
+ agents: {
495
+ close: string
496
+ title: string
497
+ subtitle: string
498
+ emptyTitle: string
499
+ emptyDesc: string
500
+ running: string
501
+ failed: string
502
+ done: string
503
+ streaming: string
504
+ files: string
505
+ moreFiles: (count: number) => string
506
+ delegation: (index: number) => string
507
+ workers: (count: number) => string
508
+ workersActive: (count: number) => string
509
+ agentsCount: (count: number) => string
510
+ activeCount: (count: number) => string
511
+ failedCount: (count: number) => string
512
+ toolsCount: (count: number) => string
513
+ filesCount: (count: number) => string
514
+ updatedAgo: (age: string) => string
515
+ ageNow: string
516
+ ageSeconds: (seconds: number) => string
517
+ ageMinutes: (minutes: number) => string
518
+ ageHours: (hours: number) => string
519
+ durationSeconds: (seconds: string) => string
520
+ durationMinutes: (minutes: number, seconds: number) => string
521
+ tokensK: (k: string) => string
522
+ tokens: (value: number) => string
523
+ }
524
+
525
+ commandCenter: {
526
+ close: string
527
+ paletteTitle: string
528
+ back: string
529
+ searchPlaceholder: string
530
+ goTo: string
531
+ commandCenter: string
532
+ appearance: string
533
+ settings: string
534
+ changeTheme: string
535
+ changeColorMode: string
536
+ installTheme: {
537
+ title: string
538
+ placeholder: string
539
+ loading: string
540
+ error: string
541
+ empty: string
542
+ install: string
543
+ installing: string
544
+ installed: string
545
+ installs: (count: string) => string
546
+ }
547
+ settingsFields: string
548
+ mcpServers: string
549
+ archivedChats: string
550
+ sections: Record<'sessions' | 'system' | 'usage', string>
551
+ sectionDescriptions: Record<'sessions' | 'system' | 'usage', string>
552
+ nav: Record<'newChat' | 'settings' | 'skills' | 'messaging' | 'artifacts', { title: string; detail: string }>
553
+ sectionEntries: Record<'sessions' | 'system' | 'usage', { title: string; detail: string }>
554
+ providerNavigate: string
555
+ providerSessions: string
556
+ refresh: string
557
+ refreshing: string
558
+ noResults: string
559
+ pinSession: string
560
+ unpinSession: string
561
+ exportSession: string
562
+ deleteSession: string
563
+ noSessions: string
564
+ gatewayRunning: string
565
+ gatewayStopped: string
566
+ NASTECHActiveSessions: (version: string, count: number) => string
567
+ restartMessaging: string
568
+ updateNasTech: string
569
+ actionRunning: string
570
+ actionDone: string
571
+ actionFailed: string
572
+ actionStartedWaiting: string
573
+ loadingStatus: string
574
+ recentLogs: string
575
+ noLogs: string
576
+ days: (count: number) => string
577
+ statSessions: string
578
+ statApiCalls: string
579
+ statTokens: string
580
+ statCost: string
581
+ actualCost: (cost: string) => string
582
+ loadingUsage: string
583
+ noUsage: (period: number) => string
584
+ retry: string
585
+ dailyTokens: string
586
+ input: string
587
+ output: string
588
+ noDailyActivity: string
589
+ topModels: string
590
+ noModelUsage: string
591
+ topSkills: string
592
+ noSkillActivity: string
593
+ actions: (count: string) => string
594
+ }
595
+
596
+ messaging: {
597
+ search: string
598
+ loading: string
599
+ loadFailed: string
600
+ states: Record<string, string>
601
+ unknown: string
602
+ hintPendingRestart: string
603
+ hintGatewayStopped: string
604
+ credentialsSet: string
605
+ needsSetup: string
606
+ gatewayStopped: string
607
+ getCredentials: string
608
+ openSetupGuide: string
609
+ required: string
610
+ recommended: string
611
+ advanced: (count: number) => string
612
+ noTokenNeeded: string
613
+ enabled: string
614
+ disabled: string
615
+ unsavedChanges: string
616
+ saving: string
617
+ saveChanges: string
618
+ saved: string
619
+ replaceValue: string
620
+ openDocs: string
621
+ clearField: (key: string) => string
622
+ enableAria: (name: string) => string
623
+ disableAria: (name: string) => string
624
+ platformEnabled: (name: string) => string
625
+ platformDisabled: (name: string) => string
626
+ restartToApply: string
627
+ setupSaved: (name: string) => string
628
+ restartToReconnect: string
629
+ keyCleared: (key: string) => string
630
+ setupUpdated: (name: string) => string
631
+ failedUpdate: (name: string) => string
632
+ failedSave: (name: string) => string
633
+ failedClear: (key: string) => string
634
+ fieldCopy: Record<string, { label?: string; help?: string; placeholder?: string }>
635
+ platformIntro: Record<string, string>
636
+ }
637
+
638
+ profiles: {
639
+ close: string
640
+ nameHint: string
641
+ title: string
642
+ count: (count: number) => string
643
+ loading: string
644
+ newProfile: string
645
+ allProfiles: string
646
+ showAllProfiles: string
647
+ switchToProfile: (name: string) => string
648
+ manageProfiles: string
649
+ actionsFor: (name: string) => string
650
+ color: string
651
+ colorFor: (name: string) => string
652
+ setColor: (color: string) => string
653
+ autoColor: string
654
+ noProfiles: string
655
+ selectPrompt: string
656
+ refresh: string
657
+ refreshing: string
658
+ default: string
659
+ skills: (count: number) => string
660
+ env: string
661
+ defaultBadge: string
662
+ rename: string
663
+ copySetup: string
664
+ copying: string
665
+ modelLabel: string
666
+ skillsLabel: string
667
+ notSet: string
668
+ soulDesc: string
669
+ soulOptional: string
670
+ soulPlaceholder: (mode: string) => string
671
+ soulPlaceholderCloned: string
672
+ soulPlaceholderEmpty: string
673
+ unsavedChanges: string
674
+ loadingSoul: string
675
+ emptySoul: string
676
+ saving: string
677
+ saveSoul: string
678
+ deleteTitle: string
679
+ deleteDescPrefix: string
680
+ deleteDescMid: string
681
+ deleteDescSuffix: string
682
+ deleting: string
683
+ createDesc: string
684
+ nameLabel: string
685
+ cloneFromDefault: string
686
+ cloneFromDefaultDesc: string
687
+ invalidName: (hint: string) => string
688
+ nameRequired: string
689
+ creating: string
690
+ createAction: string
691
+ renameTitle: string
692
+ renameDescPrefix: string
693
+ renameDescSuffix: string
694
+ newNameLabel: string
695
+ renaming: string
696
+ created: string
697
+ renamed: string
698
+ deleted: string
699
+ setupCopied: string
700
+ soulSaved: string
701
+ failedLoad: string
702
+ failedDelete: string
703
+ failedCopy: string
704
+ failedLoadSoul: string
705
+ failedSaveSoul: string
706
+ failedCreate: string
707
+ failedRename: string
708
+ }
709
+
710
+ cron: {
711
+ close: string
712
+ search: string
713
+ loading: string
714
+ states: Record<string, string>
715
+ deliveryLabels: Record<string, string>
716
+ scheduleLabels: Record<string, string>
717
+ scheduleHints: Record<string, string>
718
+ days: Record<string, string>
719
+ dayFallback: (value: string) => string
720
+ everyDayAt: (time: string) => string
721
+ weekdaysAt: (time: string) => string
722
+ everyDayOfWeekAt: (day: string, time: string) => string
723
+ monthlyOnDayAt: (dayOfMonth: string, time: string) => string
724
+ topOfHour: string
725
+ everyHourAt: (minute: string) => string
726
+ active: (enabled: number, total: number) => string
727
+ newCron: string
728
+ emptyDescNew: string
729
+ emptyDescSearch: string
730
+ emptyTitleNew: string
731
+ emptyTitleSearch: string
732
+ last: string
733
+ next: string
734
+ noRuns: string
735
+ manage: string
736
+ showRuns: string
737
+ hideRuns: string
738
+ runHistory: string
739
+ actionsFor: (title: string) => string
740
+ actionsTitle: string
741
+ resume: string
742
+ pause: string
743
+ resumeTitle: string
744
+ pauseTitle: string
745
+ triggerNow: string
746
+ edit: string
747
+ deleteTitle: string
748
+ deleteDescPrefix: string
749
+ deleteDescSuffix: string
750
+ deleting: string
751
+ resumed: string
752
+ paused: string
753
+ triggered: string
754
+ deleted: string
755
+ created: string
756
+ updated: string
757
+ failedLoad: string
758
+ failedUpdate: string
759
+ failedTrigger: string
760
+ failedDelete: string
761
+ failedSave: string
762
+ editTitle: string
763
+ createTitle: string
764
+ editDesc: string
765
+ createDesc: string
766
+ nameLabel: string
767
+ namePlaceholder: string
768
+ promptLabel: string
769
+ promptPlaceholder: string
770
+ frequencyLabel: string
771
+ deliverLabel: string
772
+ customScheduleLabel: string
773
+ customPlaceholder: string
774
+ customHint: string
775
+ optional: string
776
+ promptScheduleRequired: string
777
+ saveChanges: string
778
+ createAction: string
779
+ }
780
+
781
+ artifacts: {
782
+ search: string
783
+ refresh: string
784
+ refreshing: string
785
+ indexing: string
786
+ tabAll: string
787
+ tabImages: string
788
+ tabFiles: string
789
+ tabLinks: string
790
+ noArtifactsTitle: string
791
+ noArtifactsDesc: string
792
+ failedLoad: string
793
+ openFailed: string
794
+ itemsImage: string
795
+ itemsLink: string
796
+ itemsFile: string
797
+ itemsGeneric: string
798
+ zero: string
799
+ rangeOf: (start: number, end: number, total: number) => string
800
+ goToPage: (itemLabel: string, page: number) => string
801
+ colTitleLink: string
802
+ colTitleFile: string
803
+ colTitleDefault: string
804
+ colLocationLink: string
805
+ colLocationFile: string
806
+ colLocationDefault: string
807
+ colSession: string
808
+ kindImage: string
809
+ kindFile: string
810
+ kindLink: string
811
+ chat: string
812
+ copyUrl: string
813
+ copyPath: string
814
+ }
815
+
816
+ sidebar: {
817
+ nav: Record<string, string>
818
+ searchAria: string
819
+ searchPlaceholder: string
820
+ clearSearch: string
821
+ noMatch: (query: string) => string
822
+ results: string
823
+ pinned: string
824
+ sessions: string
825
+ cronJobs: string
826
+ groupAriaGrouped: string
827
+ groupAriaUngrouped: string
828
+ groupTitleGrouped: string
829
+ groupTitleUngrouped: string
830
+ allPinned: string
831
+ shiftClickHint: string
832
+ noWorkspace: string
833
+ newSessionIn: (label: string) => string
834
+ reorderWorkspace: (label: string) => string
835
+ showMoreIn: (count: number, label: string) => string
836
+ loading: string
837
+ loadMore: string
838
+ loadCount: (step: number) => string
839
+ row: {
840
+ pin: string
841
+ unpin: string
842
+ copyId: string
843
+ export: string
844
+ rename: string
845
+ archive: string
846
+ copyIdFailed: string
847
+ actionsFor: (title: string) => string
848
+ sessionActions: string
849
+ sessionRunning: string
850
+ needsInput: string
851
+ waitingForAnswer: string
852
+ renamed: string
853
+ renameFailed: string
854
+ renameTitle: string
855
+ renameDesc: string
856
+ untitledPlaceholder: string
857
+ ageNow: string
858
+ ageDay: string
859
+ ageHour: string
860
+ ageMin: string
861
+ }
862
+ }
863
+
864
+ composer: {
865
+ message: string
866
+ wakingProfile: (profile: string) => string
867
+ placeholderStarting: string
868
+ placeholderReconnecting: string
869
+ placeholderFollowUp: string
870
+ newSessionPlaceholders: readonly string[]
871
+ followUpPlaceholders: readonly string[]
872
+ startVoice: string
873
+ queueMessage: string
874
+ steer: string
875
+ stop: string
876
+ send: string
877
+ speaking: string
878
+ transcribing: string
879
+ thinking: string
880
+ muted: string
881
+ listening: string
882
+ muteMic: string
883
+ unmuteMic: string
884
+ stopListening: string
885
+ stopShort: string
886
+ endConversation: string
887
+ endShort: string
888
+ stopDictation: string
889
+ transcribingDictation: string
890
+ voiceDictation: string
891
+ lookupLoading: string
892
+ lookupNoMatches: string
893
+ lookupTry: string
894
+ lookupOr: string
895
+ commonCommands: string
896
+ hotkeys: string
897
+ helpFooter: string
898
+ commandDescs: Record<string, string>
899
+ hotkeyDescs: Record<string, string>
900
+ attachUrlTitle: string
901
+ attachUrlDesc: string
902
+ urlPlaceholder: string
903
+ urlHintPre: string
904
+ attach: string
905
+ queued: (count: number) => string
906
+ attachmentOnly: string
907
+ emptyTurn: string
908
+ attachments: (count: number) => string
909
+ editingInComposer: string
910
+ editingQueuedInComposer: string
911
+ editQueued: string
912
+ sendQueuedNext: string
913
+ sendQueuedNow: string
914
+ deleteQueued: string
915
+ previewUnavailable: string
916
+ previewLabel: (label: string) => string
917
+ couldNotPreview: (label: string) => string
918
+ removeAttachment: (label: string) => string
919
+ dictating: string
920
+ preparingAudio: string
921
+ speakingResponse: string
922
+ readingAloud: string
923
+ themeSuggestions: string
924
+ noMatchingThemes: string
925
+ themeTryPre: string
926
+ themeTryPost: string
927
+ attachLabel: string
928
+ files: string
929
+ folder: string
930
+ images: string
931
+ pasteImage: string
932
+ url: string
933
+ promptSnippets: string
934
+ tipPre: string
935
+ tipPost: string
936
+ snippetsTitle: string
937
+ snippetsDesc: string
938
+ snippets: Record<string, { label: string; description: string; text: string }>
939
+ dropFiles: string
940
+ dropSession: string
941
+ }
942
+
943
+ statusStack: {
944
+ agents: string
945
+ background: (count: number) => string
946
+ subagents: (count: number) => string
947
+ todos: (done: number, total: number) => string
948
+ running: string
949
+ stop: string
950
+ dismiss: string
951
+ exit: (code: number) => string
952
+ }
953
+
954
+ updates: {
955
+ stages: Record<string, string>
956
+ checking: string
957
+ checkFailedTitle: string
958
+ tryAgain: string
959
+ notAvailableTitle: string
960
+ unsupportedMessage: string
961
+ connectionRetry: string
962
+ latestBody: string
963
+ allSetTitle: string
964
+ availableTitle: string
965
+ availableBody: string
966
+ updateNow: string
967
+ maybeLater: string
968
+ moreChanges: (count: number) => string
969
+ manualTitle: string
970
+ manualBody: string
971
+ manualPickedUp: string
972
+ copy: string
973
+ copied: string
974
+ done: string
975
+ applyingBody: string
976
+ applyingClose: string
977
+ errorTitle: string
978
+ errorBody: string
979
+ notNow: string
980
+ }
981
+
982
+ install: {
983
+ stageStates: Record<string, string>
984
+ oneTimeTitle: string
985
+ unsupportedDesc: (platform: string) => string
986
+ installCommand: string
987
+ copyCommand: string
988
+ viewDocs: string
989
+ installTo: string
990
+ retryAfterRun: string
991
+ failedTitle: string
992
+ settingUpTitle: string
993
+ finishingTitle: string
994
+ failedDesc: string
995
+ activeDesc: string
996
+ progress: (completed: number, total: number) => string
997
+ currentStage: (stage: string) => string
998
+ fetchingManifest: string
999
+ error: string
1000
+ hideOutput: string
1001
+ showOutput: string
1002
+ lines: (count: number) => string
1003
+ noOutput: string
1004
+ cancelling: string
1005
+ cancelInstall: string
1006
+ transcriptSaved: string
1007
+ copiedOutput: string
1008
+ copyOutput: string
1009
+ reloadRetry: string
1010
+ }
1011
+
1012
+ onboarding: {
1013
+ headerTitle: string
1014
+ headerDesc: string
1015
+ preparingInstall: string
1016
+ starting: string
1017
+ lookingUpProviders: string
1018
+ collapse: string
1019
+ otherProviders: string
1020
+ haveApiKey: string
1021
+ chooseLater: string
1022
+ recommended: string
1023
+ connected: string
1024
+ featuredPitch: string
1025
+ openRouterPitch: string
1026
+ apiKeyOptions: Record<string, { short: string; description: string }>
1027
+ backToSignIn: string
1028
+ getKey: string
1029
+ replaceCurrent: string
1030
+ pasteApiKey: string
1031
+ couldNotSave: string
1032
+ connecting: string
1033
+ update: string
1034
+ flowSubtitles: Record<string, string>
1035
+ startingSignIn: (provider: string) => string
1036
+ verifyingCode: (provider: string) => string
1037
+ connectedProvider: (provider: string) => string
1038
+ connectedPicking: (provider: string) => string
1039
+ signInFailed: string
1040
+ pickDifferentProvider: string
1041
+ signInWith: (provider: string) => string
1042
+ openedBrowser: (provider: string) => string
1043
+ authorizeThere: string
1044
+ copyAuthCode: string
1045
+ pasteAuthCode: string
1046
+ reopenAuthPage: string
1047
+ autoBrowser: (provider: string) => string
1048
+ reopenSignInPage: string
1049
+ waitingAuthorize: string
1050
+ externalPending: (provider: string) => string
1051
+ signedIn: string
1052
+ deviceCodeOpened: (provider: string) => string
1053
+ reopenVerification: string
1054
+ copy: string
1055
+ defaultModel: string
1056
+ freeTier: string
1057
+ pro: string
1058
+ free: string
1059
+ price: (input: string, output: string) => string
1060
+ change: string
1061
+ startChatting: string
1062
+ docs: (provider: string) => string
1063
+ }
1064
+
1065
+ modelPicker: {
1066
+ title: string
1067
+ current: string
1068
+ unknown: string
1069
+ search: string
1070
+ noModels: string
1071
+ persistGlobalSession: string
1072
+ persistGlobal: string
1073
+ addProvider: string
1074
+ loadFailed: string
1075
+ noAuthenticatedProviders: string
1076
+ pro: string
1077
+ proNeedsSubscription: string
1078
+ free: string
1079
+ freeTier: string
1080
+ priceTitle: string
1081
+ }
1082
+
1083
+ modelVisibility: {
1084
+ title: string
1085
+ search: string
1086
+ noAuthenticatedProviders: string
1087
+ addProvider: string
1088
+ }
1089
+
1090
+ shell: {
1091
+ windowControls: string
1092
+ paneControls: string
1093
+ appControls: string
1094
+ modelMenu: {
1095
+ search: string
1096
+ noModels: string
1097
+ editModels: string
1098
+ fast: string
1099
+ medium: string
1100
+ }
1101
+ modelOptions: {
1102
+ noOptions: string
1103
+ options: string
1104
+ thinking: string
1105
+ fast: string
1106
+ effort: string
1107
+ minimal: string
1108
+ low: string
1109
+ medium: string
1110
+ high: string
1111
+ max: string
1112
+ updateFailed: string
1113
+ fastFailed: string
1114
+ }
1115
+ gatewayMenu: {
1116
+ gateway: string
1117
+ connected: string
1118
+ connecting: string
1119
+ offline: string
1120
+ inferenceReady: string
1121
+ inferenceNotReady: string
1122
+ checkingInference: string
1123
+ disconnected: string
1124
+ openSystem: string
1125
+ connection: (label: string) => string
1126
+ recentActivity: string
1127
+ viewAllLogs: string
1128
+ messagingPlatforms: string
1129
+ }
1130
+ statusbar: {
1131
+ unknown: string
1132
+ restart: string
1133
+ update: string
1134
+ updateInProgress: string
1135
+ commitsBehind: (count: number, branch: string) => string
1136
+ desktopVersion: (version: string) => string
1137
+ commit: (sha: string) => string
1138
+ branch: (branch: string) => string
1139
+ closeCommandCenter: string
1140
+ openCommandCenter: string
1141
+ gateway: string
1142
+ gatewayReady: string
1143
+ gatewayNeedsSetup: string
1144
+ gatewayChecking: string
1145
+ gatewayConnecting: string
1146
+ gatewayOffline: string
1147
+ gatewayTitle: string
1148
+ agents: string
1149
+ closeAgents: string
1150
+ openAgents: string
1151
+ subagents: (count: number) => string
1152
+ failed: (count: number) => string
1153
+ running: (count: number) => string
1154
+ cron: string
1155
+ openCron: string
1156
+ turnRunning: string
1157
+ currentTurnElapsed: string
1158
+ contextUsage: string
1159
+ session: string
1160
+ runtimeSessionElapsed: string
1161
+ yoloOn: string
1162
+ yoloOff: string
1163
+ modelNone: string
1164
+ noModel: string
1165
+ switchModel: string
1166
+ openModelPicker: string
1167
+ modelTitle: (provider: string, model: string) => string
1168
+ providerModelTitle: (provider: string, model: string) => string
1169
+ }
1170
+ }
1171
+
1172
+ rightSidebar: {
1173
+ aria: string
1174
+ panelsAria: string
1175
+ files: string
1176
+ terminal: string
1177
+ noFolderSelected: string
1178
+ changeCwdTitle: string
1179
+ folderTip: (cwd: string) => string
1180
+ openFolder: string
1181
+ refreshTree: string
1182
+ collapseAll: string
1183
+ previewUnavailable: string
1184
+ couldNotPreview: (path: string) => string
1185
+ noProjectTitle: string
1186
+ noProjectBody: string
1187
+ unreadableTitle: string
1188
+ unreadableBody: (error: string) => string
1189
+ emptyTitle: string
1190
+ emptyBody: string
1191
+ treeErrorTitle: string
1192
+ treeErrorBody: string
1193
+ tryAgain: string
1194
+ loadingTree: string
1195
+ loadingFiles: string
1196
+ terminalFocus: string
1197
+ terminalSplit: string
1198
+ addToChat: string
1199
+ remotePickerTitle: string
1200
+ }
1201
+
1202
+ preview: {
1203
+ tab: string
1204
+ closeTab: (label: string) => string
1205
+ closePane: string
1206
+ loading: string
1207
+ unavailable: string
1208
+ opening: string
1209
+ hide: string
1210
+ openPreview: string
1211
+ sourceLineTitle: string
1212
+ source: string
1213
+ renderedPreview: string
1214
+ unknownSize: string
1215
+ binaryTitle: string
1216
+ binaryBody: (label: string) => string
1217
+ largeTitle: string
1218
+ largeBody: (label: string, size: string) => string
1219
+ previewAnyway: string
1220
+ truncated: string
1221
+ noInlineTitle: string
1222
+ noInlineBody: (mimeType: string) => string
1223
+ console: {
1224
+ deselect: string
1225
+ select: string
1226
+ copyFailed: string
1227
+ copyEntry: string
1228
+ sendEntry: string
1229
+ messages: (count: number) => string
1230
+ resize: string
1231
+ title: string
1232
+ selected: (count: number) => string
1233
+ sendToChat: string
1234
+ copySelected: string
1235
+ copyAll: string
1236
+ copy: string
1237
+ clear: string
1238
+ empty: string
1239
+ promptHeader: string
1240
+ sentTitle: string
1241
+ sentMessage: (count: number) => string
1242
+ }
1243
+ web: {
1244
+ appFailedToBoot: string
1245
+ serverNotFound: string
1246
+ failedToLoad: string
1247
+ tryAgain: string
1248
+ restarting: string
1249
+ askRestart: string
1250
+ lookingRestart: (taskId: string) => string
1251
+ restartingTitle: string
1252
+ restartingMessage: string
1253
+ startRestartFailed: (message: string) => string
1254
+ restartFailed: string
1255
+ hideConsole: string
1256
+ showConsole: string
1257
+ hideDevTools: string
1258
+ openDevTools: string
1259
+ finishedRestarting: (message?: string) => string
1260
+ failedRestarting: (message: string) => string
1261
+ unknownError: string
1262
+ restartedTitle: string
1263
+ reloadingNow: string
1264
+ restartFailedTitle: string
1265
+ restartFailedMessage: string
1266
+ stillWorking: string
1267
+ workspaceReloading: string
1268
+ fileChanged: (url: string) => string
1269
+ filesChanged: (count: number, url: string) => string
1270
+ watchFailed: (message: string) => string
1271
+ moduleMimeDescription: string
1272
+ loadFailedConsole: (code: number | undefined, message: string) => string
1273
+ unreachableDescription: string
1274
+ openTarget: (url: string) => string
1275
+ fallbackTitle: string
1276
+ }
1277
+ }
1278
+
1279
+ assistant: {
1280
+ thread: {
1281
+ loadingSession: string
1282
+ loadingResponse: string
1283
+ thinking: string
1284
+ today: (time: string) => string
1285
+ yesterday: (time: string) => string
1286
+ copy: string
1287
+ refresh: string
1288
+ moreActions: string
1289
+ branchNewChat: string
1290
+ readAloudFailed: string
1291
+ preparingAudio: string
1292
+ stopReading: string
1293
+ readAloud: string
1294
+ editMessage: string
1295
+ stop: string
1296
+ editableCheckpoint: string
1297
+ restorePrevious: string
1298
+ restoreCheckpoint: string
1299
+ restoreNext: string
1300
+ goForward: string
1301
+ sendEdited: string
1302
+ scrollToBottom: string
1303
+ }
1304
+ approval: {
1305
+ gatewayDisconnected: string
1306
+ sendFailed: string
1307
+ run: string
1308
+ moreOptions: string
1309
+ allowSession: string
1310
+ alwaysAllowMenu: string
1311
+ jumpToApproval: string
1312
+ reject: string
1313
+ alwaysTitle: string
1314
+ alwaysDescription: (pattern: string) => string
1315
+ alwaysAllow: string
1316
+ }
1317
+ clarify: {
1318
+ notReady: string
1319
+ gatewayDisconnected: string
1320
+ sendFailed: string
1321
+ loadingQuestion: string
1322
+ other: string
1323
+ placeholder: string
1324
+ shortcut: string
1325
+ back: string
1326
+ skip: string
1327
+ send: string
1328
+ }
1329
+ tool: {
1330
+ code: string
1331
+ copyCode: string
1332
+ renderingImage: string
1333
+ copyOutput: string
1334
+ copyCommand: string
1335
+ copyContent: string
1336
+ copyUrl: string
1337
+ copyResults: string
1338
+ copyQuery: string
1339
+ copyFile: string
1340
+ copyPath: string
1341
+ outputAlt: string
1342
+ rawResponse: string
1343
+ copyActivity: string
1344
+ recoveredOne: string
1345
+ recoveredMany: (count: number) => string
1346
+ failedOne: string
1347
+ failedMany: (count: number) => string
1348
+ statusRunning: string
1349
+ statusError: string
1350
+ statusRecovered: string
1351
+ statusDone: string
1352
+ }
1353
+ }
1354
+
1355
+ prompts: {
1356
+ gatewayDisconnected: string
1357
+ sudoSendFailed: string
1358
+ secretSendFailed: string
1359
+ sudoTitle: string
1360
+ sudoDesc: string
1361
+ sudoPlaceholder: string
1362
+ secretTitle: string
1363
+ secretDesc: string
1364
+ secretPlaceholder: string
1365
+ }
1366
+
1367
+ desktop: {
1368
+ audioReadFailed: string
1369
+ sessionUnavailable: string
1370
+ createSessionFailed: string
1371
+ promptFailed: string
1372
+ providerCredentialRequired: string
1373
+ emptySlashCommand: string
1374
+ desktopCommands: string
1375
+ skillCommandsAvailable: (count: number) => string
1376
+ warningLine: (message: string) => string
1377
+ yoloArmed: string
1378
+ yoloOff: string
1379
+ yoloSystem: (active: boolean) => string
1380
+ yoloTitle: string
1381
+ yoloToggleFailed: string
1382
+ profileStatus: (current: string) => string
1383
+ unknownProfile: string
1384
+ noProfileNamed: (target: string, available: string) => string
1385
+ newChatsProfile: (name: string) => string
1386
+ setProfileFailed: string
1387
+ sttDisabled: string
1388
+ stopFailed: string
1389
+ regenerateFailed: string
1390
+ editFailed: string
1391
+ resumeFailed: string
1392
+ nothingToBranch: string
1393
+ branchNeedsChat: string
1394
+ sessionBusy: string
1395
+ branchStopCurrent: string
1396
+ branchNoText: string
1397
+ branchTitle: string
1398
+ branchFailed: string
1399
+ deleteFailed: string
1400
+ archived: string
1401
+ archiveFailed: string
1402
+ cwdChangeFailed: string
1403
+ cwdStagedTitle: string
1404
+ cwdStagedMessage: string
1405
+ modelSwitchFailed: string
1406
+ sessionExported: string
1407
+ sessionExportFailed: string
1408
+ imageSaved: string
1409
+ downloadStarted: string
1410
+ restartToUseSaveImage: string
1411
+ restartToSaveImages: string
1412
+ imageDownloadFailed: string
1413
+ openImage: string
1414
+ downloadImage: string
1415
+ savingImage: string
1416
+ imagePreviewFailed: string
1417
+ imageAttach: string
1418
+ imageWriteFailed: string
1419
+ imageAttachFailed: string
1420
+ attachImages: string
1421
+ clipboard: string
1422
+ noClipboardImage: string
1423
+ clipboardPasteFailed: string
1424
+ dropFiles: string
1425
+ }
1426
+
1427
+ errors: {
1428
+ genericFailure: string
1429
+ boundaryTitle: string
1430
+ boundaryDesc: string
1431
+ reloadWindow: string
1432
+ openLogs: string
1433
+ }
1434
+
1435
+ ui: {
1436
+ search: {
1437
+ clear: string
1438
+ }
1439
+ pagination: {
1440
+ label: string
1441
+ previous: string
1442
+ previousAria: string
1443
+ next: string
1444
+ nextAria: string
1445
+ }
1446
+ sidebar: {
1447
+ title: string
1448
+ description: string
1449
+ toggle: string
1450
+ }
1451
+ }
1452
+ }