Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion src/components/chat/ChatView.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { useState, useCallback, useRef } from 'react'
import { getErrorMessage } from '../../utils/errors'
import { useTranslation } from 'react-i18next'
import { useAppStore, useAgentStore, useWebSearchStore, usePetStore } from '../../stores'
import { useSkillStore } from '../../stores/skillStore'
Expand Down Expand Up @@ -99,7 +100,7 @@ export function ChatView() {
})
await Pi.sendMcpToolResponse(piSessionId, request.requestId, result)
} catch (err) {
await Pi.sendMcpToolResponse(piSessionId, request.requestId, null, err instanceof Error ? err.message : String(err))
await Pi.sendMcpToolResponse(piSessionId, request.requestId, null, getErrorMessage(err))
}
},
onToolApproval: (request) => {
Expand Down
3 changes: 2 additions & 1 deletion src/components/chat/shared/CodeRunBlock.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { useState, useCallback } from 'react'
import { getErrorMessage } from '../../../utils/errors'
import { useTranslation } from 'react-i18next'
import { Play, Square, Terminal, Copy, Check, AlertCircle } from 'lucide-react'

Expand Down Expand Up @@ -47,7 +48,7 @@ export function CodeRunBlock({ code, language }: CodeRunBlockProps) {

setOutput(outputLines.join('\n') || '(no output)')
} catch (err) {
setError(err instanceof Error ? err.message : String(err))
setError(getErrorMessage(err))
} finally {
setRunning(false)
}
Expand Down
3 changes: 2 additions & 1 deletion src/components/chat/shared/MermaidBlock.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { useEffect, useRef, useState } from 'react'
import { getErrorMessage } from '../../../utils/errors'

interface MermaidBlockProps {
code: string
Expand Down Expand Up @@ -29,7 +30,7 @@ export function MermaidBlock({ code }: MermaidBlockProps) {
}
} catch (err) {
if (!cancelled) {
setError(err instanceof Error ? err.message : 'Failed to render mermaid diagram')
setError(getErrorMessage(err, 'Failed to render mermaid diagram'))
setRendered(false)
}
}
Expand Down
3 changes: 2 additions & 1 deletion src/components/mcp/MCPSettings.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { useState } from 'react';
import { getErrorMessage } from '../../utils/errors'
import { useTranslation } from 'react-i18next';
import {
Server,
Expand Down Expand Up @@ -374,7 +375,7 @@ function AddMCPServerModal({ onClose }: AddMCPServerModalProps) {
}
onClose();
} catch (err) {
setJsonError(err instanceof Error ? err.message : t('mcp.invalidJson'));
setJsonError(getErrorMessage(err, t('mcp.invalidJson')));
}
return;
}
Expand Down
15 changes: 6 additions & 9 deletions src/components/platforms/PlatformCard.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { Send, Check, Loader2, Link, Link2Off, ChevronDown } from 'lucide-react'
import { MagicButton } from '../ui'
import type { PlatformConfig } from '../../types/platform'
import { getBaseUrl } from '../../utils/piClient'
import { jsonRequest } from '../../utils/http'

interface ContactEntry {
key: string
Expand Down Expand Up @@ -345,15 +346,11 @@ function DetectChatIdButton({ platform, onDetected }: { platform: PlatformConfig
const username = msg.from?.username || msg.from?.first_name || ''

// Reply to the user with their chat ID
await fetch(`https://api.telegram.org/bot${token}/sendMessage`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
chat_id: chatId,
text: `Your Chat ID: \`${chatId}\`\nUsername: @${username}\n\nCopy this Chat ID into S-Loop platform settings.`,
parse_mode: 'Markdown',
}),
})
await fetch(`https://api.telegram.org/bot${token}/sendMessage`, jsonRequest({
chat_id: chatId,
text: `Your Chat ID: \`${chatId}\`\nUsername: @${username}\n\nCopy this Chat ID into S-Loop platform settings.`,
parse_mode: 'Markdown',
}))

onDetected(chatId)
setMsg(`Found: ${chatId} (@${username}). Sent confirmation to Telegram.`)
Expand Down
3 changes: 2 additions & 1 deletion src/components/preview/DocxPreview.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { useEffect, useState } from 'react'
import { getErrorMessage } from '../../utils/errors'

interface DocxPreviewProps {
filePath: string
Expand Down Expand Up @@ -31,7 +32,7 @@ export function DocxPreview({ filePath, onLoaded, onError }: DocxPreviewProps) {
}
} catch (err) {
if (!cancelled) {
onError(err instanceof Error ? err.message : String(err))
onError(getErrorMessage(err))
}
}
}
Expand Down
3 changes: 2 additions & 1 deletion src/components/preview/ExcelPreview.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { useEffect, useState } from 'react'
import { getErrorMessage } from '../../utils/errors'
import * as XLSX from 'xlsx'

interface ExcelPreviewProps {
Expand Down Expand Up @@ -46,7 +47,7 @@ export function ExcelPreview({ filePath, onLoaded, onError }: ExcelPreviewProps)
}
} catch (err) {
if (!cancelled) {
onError(err instanceof Error ? err.message : String(err))
onError(getErrorMessage(err))
}
}
}
Expand Down
3 changes: 2 additions & 1 deletion src/components/preview/MarkdownPreview.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { useEffect, useState } from 'react'
import { getErrorMessage } from '../../utils/errors'
import ReactMarkdown from 'react-markdown'
import remarkGfm from 'remark-gfm'
import remarkMath from 'remark-math'
Expand Down Expand Up @@ -28,7 +29,7 @@ export function MarkdownPreview({ filePath, onLoaded, onError }: MarkdownPreview
}
} catch (err) {
if (!cancelled) {
onError(err instanceof Error ? err.message : String(err))
onError(getErrorMessage(err))
}
}
}
Expand Down
3 changes: 2 additions & 1 deletion src/components/preview/PdfPreview.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { useEffect, useState, useRef } from 'react'
import { getErrorMessage } from '../../utils/errors'

interface PdfPreviewProps {
filePath: string
Expand Down Expand Up @@ -40,7 +41,7 @@ export function PdfPreview({ filePath, onLoaded, onError }: PdfPreviewProps) {
if (!cancelled) onLoaded()
} catch (err) {
if (!cancelled) {
onError(err instanceof Error ? err.message : String(err))
onError(getErrorMessage(err))
}
}
}
Expand Down
3 changes: 2 additions & 1 deletion src/components/preview/PptxPreview.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { useEffect, useState } from 'react'
import { getErrorMessage } from '../../utils/errors'

interface PptxPreviewProps {
filePath: string
Expand Down Expand Up @@ -241,7 +242,7 @@ export function PptxPreview({ filePath, onLoaded, onError }: PptxPreviewProps) {
} catch (err) {
if (!cancelled) {
setLoading(false)
onError(err instanceof Error ? err.message : String(err))
onError(getErrorMessage(err))
}
}
}
Expand Down
3 changes: 2 additions & 1 deletion src/components/preview/TextPreview.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { useEffect, useState } from 'react'
import { getErrorMessage } from '../../utils/errors'
import CodeMirror from '@uiw/react-codemirror'
import { oneDark } from '@codemirror/theme-one-dark'
import type { Extension } from '@codemirror/state'
Expand Down Expand Up @@ -58,7 +59,7 @@ export function TextPreview({ filePath, onLoaded, onError }: TextPreviewProps) {
}
} catch (err) {
if (!cancelled) {
onError(err instanceof Error ? err.message : String(err))
onError(getErrorMessage(err))
}
}
}
Expand Down
3 changes: 2 additions & 1 deletion src/components/skills/SkillDropZone.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { useState, useEffect, useCallback } from 'react'
import { getErrorMessage } from '../../utils/errors'
import { useTranslation } from 'react-i18next'
import { useSkillStore } from '../../stores/skillStore'
import { FileArchive, Loader2, Check, AlertCircle } from 'lucide-react'
Expand Down Expand Up @@ -61,7 +62,7 @@ export function SkillDropZone() {
setTimeout(reset, 2000)
} catch (err) {
setStatus('error')
setStatusText(err instanceof Error ? err.message : t('skills.zipParseError'))
setStatusText(getErrorMessage(err, t('skills.zipParseError')))
setTimeout(reset, 3000)
}
}, [t, installSkillZip, reset])
Expand Down
3 changes: 2 additions & 1 deletion src/components/skills/SkillSettings.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { useState, useRef } from 'react';
import { getErrorMessage } from '../../utils/errors'
import { useTranslation } from 'react-i18next';
import { open } from '@tauri-apps/plugin-dialog';
import {
Expand Down Expand Up @@ -128,7 +129,7 @@ export function SkillSettings() {
setDropInstalled(true);
setTimeout(() => setDropInstalled(false), 2000);
} catch (err) {
setDropError(err instanceof Error ? err.message : t('skills.zipParseError'));
setDropError(getErrorMessage(err, t('skills.zipParseError')));
} finally {
setDropInstalling(false);
}
Expand Down
3 changes: 2 additions & 1 deletion src/components/tasks/CreateTaskModal.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { useState } from 'react';
import { getErrorMessage } from '../../utils/errors'
import { createPortal } from 'react-dom';
import { useTranslation } from 'react-i18next';
import { useTaskStore, useAppStore } from '../../stores';
Expand Down Expand Up @@ -95,7 +96,7 @@ export function CreateTaskModal({ onClose }: CreateTaskModalProps) {
await createTask({ name: name.trim(), prompt: prompt.trim(), schedule, provider: activeProvider, model: providerConfigs[activeProvider]?.model || '', apiKey: providerConfigs[activeProvider]?.apiKey || '', workspaceDir: workspaceDir || undefined, deliver, enabled: true });
onClose();
} catch (err) {
setError(err instanceof Error ? err.message : String(err));
setError(getErrorMessage(err));
} finally { setSaving(false); }
};

Expand Down
7 changes: 4 additions & 3 deletions src/components/workspace/WorkspacePanel.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { useState, type ReactElement, type ReactNode } from 'react'
import { getErrorMessage } from '../../utils/errors'
import { useTranslation } from 'react-i18next'
import {
ChevronRight,
Expand Down Expand Up @@ -196,7 +197,7 @@ export function WorkspacePanel() {
setFeedback(result.message)
}
} catch (error) {
setFeedback(error instanceof Error ? error.message : t('agentStudio.feedback.remoteComingSoon'))
setFeedback(getErrorMessage(error, t('agentStudio.feedback.remoteComingSoon')))
} finally {
setBusyInstallKey(null)
}
Expand All @@ -219,7 +220,7 @@ export function WorkspacePanel() {
})))
} catch (error) {
setRemoteSkills([])
setRemoteSkillsError(error instanceof Error ? error.message : t('agentStudio.library.remoteSearchError'))
setRemoteSkillsError(getErrorMessage(error, t('agentStudio.library.remoteSearchError')))
} finally {
setRemoteSkillsLoading(false)
}
Expand All @@ -245,7 +246,7 @@ export function WorkspacePanel() {
setFeedback(t('agentStudio.feedback.remoteInstalled', { name: item.name }))
setShowMcpPicker(false)
} catch (error) {
setFeedback(error instanceof Error ? error.message : t('agentStudio.feedback.remoteComingSoon'))
setFeedback(getErrorMessage(error, t('agentStudio.feedback.remoteComingSoon')))
} finally {
setBusyInstallKey(null)
}
Expand Down
Loading
Loading