mattrguerra/cortexmainPrivate on GitHub, published here in full

tauri.ts

Language TypeScript3.7 KB82 lines

src/ipc/tauri.ts

  1. import { Channel, invoke } from '@tauri-apps/api/core'
  2. import { listen } from '@tauri-apps/api/event'
  3. import { openUrl } from '@tauri-apps/plugin-opener'
  4. import type { IpcClient } from './client'
  5. import type { StreamEvent } from './gen/StreamEvent'
  6. // Tauri turns camelCase argument names into the Rust commands' snake_case.
  7. export const tauriClient: IpcClient = {
  8. appInfo: () => invoke('app_info'),
  9. windowReady: () => invoke('window_ready'),
  10. showMain: () => invoke('show_main'),
  11. listProviders: () => invoke('list_providers'),
  12. saveProvider: (provider) => invoke('save_provider', { provider }),
  13. deleteProvider: (id) => invoke('delete_provider', { id }),
  14. setApiKey: (providerId, key) => invoke('set_api_key', { providerId, key }),
  15. clearApiKey: (providerId) => invoke('clear_api_key', { providerId }),
  16. hasApiKey: (providerId) => invoke('has_api_key', { providerId }),
  17. listModels: (providerId) => invoke('list_models', { providerId }),
  18. refreshModels: (providerId) => invoke('refresh_models', { providerId }),
  19. listConversations: (includeArchived) => invoke('list_conversations', { includeArchived }),
  20. getConversation: (id) => invoke('get_conversation', { id }),
  21. createConversation: (providerId, modelId, presetId, origin) =>
  22. invoke('create_conversation', { providerId, modelId, presetId, origin }),
  23. renameConversation: (id, title) => invoke('rename_conversation', { id, title }),
  24. setPinned: (id, pinned) => invoke('set_pinned', { id, pinned }),
  25. setArchived: (id, archived) => invoke('set_archived', { id, archived }),
  26. deleteConversation: (id) => invoke('delete_conversation', { id }),
  27. setConversationModel: (id, providerId, modelId) => invoke('set_conversation_model', { id, providerId, modelId }),
  28. setSystemPrompt: (id, systemPrompt, presetId) => invoke('set_system_prompt', { id, systemPrompt, presetId }),
  29. sendMessage: (req, onEvent) => {
  30. const channel = new Channel<StreamEvent>()
  31. channel.onmessage = onEvent
  32. return invoke('send_message', { req, onEvent: channel })
  33. },
  34. cancelStream: (streamId) => invoke('cancel_stream', { streamId }),
  35. truncateFrom: (conversationId, messageId) => invoke('truncate_from', { conversationId, messageId }),
  36. estimatePrompt: (a) =>
  37. invoke('estimate_prompt', {
  38. conversationId: a.conversationId,
  39. providerId: a.providerId,
  40. modelId: a.modelId,
  41. text: a.text,
  42. imageCount: a.imageCount,
  43. extraText: a.extraText ?? null,
  44. }),
  45. search: (query) => invoke('search', { query }),
  46. spendSummary: () => invoke('spend_summary'),
  47. usageReport: (days) => invoke('usage_report', { days }),
  48. listPresets: () => invoke('list_presets'),
  49. savePreset: (preset) => invoke('save_preset', { preset }),
  50. deletePreset: (id) => invoke('delete_preset', { id }),
  51. getSettings: () => invoke('get_settings'),
  52. saveSettings: (settings) => invoke('save_settings', { settings }),
  53. pickAttachments: (imagesAllowed) => invoke('pick_attachments', { imagesAllowed }),
  54. // Raw bytes in the body, the name in a header: no JSON number arrays.
  55. attachBytes: (filename, bytes) =>
  56. invoke('attach_bytes', bytes, { headers: { 'x-filename': encodeURIComponent(filename) } }),
  57. attachmentBytes: (id) => invoke('attachment_bytes', { id }),
  58. discardAttachment: (id) => invoke('discard_attachment', { id }),
  59. exportConversation: (id) => invoke('export_conversation', { id }),
  60. chooseVaultFolder: () => invoke('choose_vault_folder'),
  61. quickOpenInMain: (conversationId) => invoke('quick_open_in_main', { conversationId }),
  62. hideQuick: () => invoke('hide_quick'),
  63. resizeQuick: (height) => invoke('resize_quick', { height }),
  64. openUrl: (url) => openUrl(url),
  65. on: async (event, handler) => {
  66. const un = await listen(event, (e) => handler(e.payload))
  67. return un
  68. },
  69. }