release: prepare v0.1.137
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
|
||||
import { apiClient } from '../client'
|
||||
|
||||
export type Provider = 'openai' | 'anthropic' | 'gemini'
|
||||
export type Provider = 'openai' | 'anthropic' | 'gemini' | 'kiro'
|
||||
export type MonitorStatus = 'operational' | 'degraded' | 'failed' | 'error'
|
||||
export type BodyOverrideMode = 'off' | 'merge' | 'replace'
|
||||
|
||||
|
||||
@@ -184,6 +184,7 @@ export function getPlatformTagClass(platform: string): string {
|
||||
case 'openai': return 'bg-emerald-100 text-emerald-700 dark:bg-emerald-900/30 dark:text-emerald-400'
|
||||
case 'gemini': return 'bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400'
|
||||
case 'antigravity': return 'bg-purple-100 text-purple-700 dark:bg-purple-900/30 dark:text-purple-400'
|
||||
case 'kiro': return 'bg-violet-100 text-violet-700 dark:bg-violet-900/30 dark:text-violet-400'
|
||||
default: return 'bg-gray-100 text-gray-700 dark:bg-gray-900/30 dark:text-gray-400'
|
||||
}
|
||||
}
|
||||
@@ -195,6 +196,7 @@ export function getPlatformTextClass(platform: string): string {
|
||||
case 'openai': return 'text-emerald-700 dark:text-emerald-400'
|
||||
case 'gemini': return 'text-blue-700 dark:text-blue-400'
|
||||
case 'antigravity': return 'text-purple-700 dark:text-purple-400'
|
||||
case 'kiro': return 'text-violet-700 dark:text-violet-400'
|
||||
default: return ''
|
||||
}
|
||||
}
|
||||
|
||||
@@ -70,6 +70,7 @@ import {
|
||||
PROVIDER_OPENAI,
|
||||
PROVIDER_ANTHROPIC,
|
||||
PROVIDER_GEMINI,
|
||||
PROVIDER_KIRO,
|
||||
} from '@/constants/channelMonitor'
|
||||
|
||||
defineProps<{
|
||||
@@ -94,6 +95,7 @@ const providerFilterOptions = computed(() => [
|
||||
{ value: PROVIDER_OPENAI, label: t('monitorCommon.providers.openai') },
|
||||
{ value: PROVIDER_ANTHROPIC, label: t('monitorCommon.providers.anthropic') },
|
||||
{ value: PROVIDER_GEMINI, label: t('monitorCommon.providers.gemini') },
|
||||
{ value: PROVIDER_KIRO, label: t('monitorCommon.providers.kiro') },
|
||||
])
|
||||
|
||||
const enabledFilterOptions = computed(() => [
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
<div>
|
||||
<label class="input-label">{{ t('admin.channelMonitor.form.provider') }} <span class="text-red-500">*</span></label>
|
||||
<div class="grid grid-cols-3 gap-3">
|
||||
<div class="grid grid-cols-2 gap-3 sm:grid-cols-4">
|
||||
<button
|
||||
v-for="opt in providerOptions"
|
||||
:key="opt.value"
|
||||
@@ -186,6 +186,7 @@ import {
|
||||
PROVIDER_OPENAI,
|
||||
PROVIDER_ANTHROPIC,
|
||||
PROVIDER_GEMINI,
|
||||
PROVIDER_KIRO,
|
||||
DEFAULT_INTERVAL_SECONDS,
|
||||
} from '@/constants/channelMonitor'
|
||||
|
||||
@@ -310,6 +311,7 @@ const providerOptions = computed<ProviderOption[]>(() => [
|
||||
{ value: PROVIDER_ANTHROPIC, label: t('monitorCommon.providers.anthropic') },
|
||||
{ value: PROVIDER_OPENAI, label: t('monitorCommon.providers.openai') },
|
||||
{ value: PROVIDER_GEMINI, label: t('monitorCommon.providers.gemini') },
|
||||
{ value: PROVIDER_KIRO, label: t('monitorCommon.providers.kiro') },
|
||||
])
|
||||
|
||||
// Clear api_key whenever provider changes to avoid cross-provider key mismatch.
|
||||
|
||||
@@ -221,6 +221,7 @@ import {
|
||||
PROVIDER_ANTHROPIC,
|
||||
PROVIDER_OPENAI,
|
||||
PROVIDER_GEMINI,
|
||||
PROVIDER_KIRO,
|
||||
} from '@/constants/channelMonitor'
|
||||
|
||||
const props = defineProps<{ show: boolean }>()
|
||||
@@ -238,6 +239,7 @@ const providerTabs = computed<{ value: Provider; label: string }[]>(() => [
|
||||
{ value: PROVIDER_ANTHROPIC, label: t('monitorCommon.providers.anthropic') },
|
||||
{ value: PROVIDER_OPENAI, label: t('monitorCommon.providers.openai') },
|
||||
{ value: PROVIDER_GEMINI, label: t('monitorCommon.providers.gemini') },
|
||||
{ value: PROVIDER_KIRO, label: t('monitorCommon.providers.kiro') },
|
||||
])
|
||||
|
||||
const activeProvider = ref<Provider>(PROVIDER_ANTHROPIC)
|
||||
@@ -253,6 +255,7 @@ const countByProvider = computed<Record<Provider, number>>(() => {
|
||||
anthropic: 0,
|
||||
openai: 0,
|
||||
gemini: 0,
|
||||
kiro: 0,
|
||||
}
|
||||
for (const t of templates.value) out[t.provider]++
|
||||
return out
|
||||
|
||||
@@ -51,6 +51,11 @@ const PROVIDER_ICONS: Record<Provider, IconData> = {
|
||||
'M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z',
|
||||
],
|
||||
},
|
||||
kiro: {
|
||||
paths: [
|
||||
'M12 2.25a.75.75 0 01.673.418l2.247 4.555 5.027.73a.75.75 0 01.416 1.279l-3.637 3.546.859 5.006a.75.75 0 01-1.088.79L12 16.21l-4.497 2.364a.75.75 0 01-1.088-.79l.859-5.006-3.637-3.546a.75.75 0 01.416-1.28l5.027-.729 2.247-4.555A.75.75 0 0112 2.25zm0 2.445l-1.75 3.547a.75.75 0 01-.565.41l-3.915.568 2.833 2.761a.75.75 0 01.216.664l-.669 3.899 3.502-1.841a.75.75 0 01.696 0l3.502 1.841-.669-3.899a.75.75 0 01.216-.664L18.23 9.22l-3.915-.568a.75.75 0 01-.565-.41L12 4.695z',
|
||||
],
|
||||
},
|
||||
}
|
||||
|
||||
const props = withDefaults(defineProps<{
|
||||
|
||||
@@ -16,6 +16,7 @@ import {
|
||||
PROVIDER_OPENAI,
|
||||
PROVIDER_ANTHROPIC,
|
||||
PROVIDER_GEMINI,
|
||||
PROVIDER_KIRO,
|
||||
STATUS_OPERATIONAL,
|
||||
STATUS_DEGRADED,
|
||||
STATUS_FAILED,
|
||||
@@ -57,7 +58,7 @@ export function useChannelMonitorFormat() {
|
||||
}
|
||||
|
||||
function providerLabel(p: Provider | string): string {
|
||||
if (p === PROVIDER_OPENAI || p === PROVIDER_ANTHROPIC || p === PROVIDER_GEMINI) {
|
||||
if (p === PROVIDER_OPENAI || p === PROVIDER_ANTHROPIC || p === PROVIDER_GEMINI || p === PROVIDER_KIRO) {
|
||||
return t(`monitorCommon.providers.${p}`)
|
||||
}
|
||||
return p || '-'
|
||||
@@ -71,6 +72,8 @@ export function useChannelMonitorFormat() {
|
||||
return 'bg-orange-100 text-orange-700 dark:bg-orange-500/15 dark:text-orange-300'
|
||||
case PROVIDER_GEMINI:
|
||||
return 'bg-sky-100 text-sky-700 dark:bg-sky-500/15 dark:text-sky-300'
|
||||
case PROVIDER_KIRO:
|
||||
return 'bg-violet-100 text-violet-700 dark:bg-violet-500/15 dark:text-violet-300'
|
||||
default:
|
||||
return NEUTRAL_BADGE
|
||||
}
|
||||
@@ -95,6 +98,10 @@ export function useChannelMonitorFormat() {
|
||||
return active
|
||||
? 'border-sky-500 bg-sky-50 text-sky-700 dark:bg-sky-500/15 dark:text-sky-300 dark:border-sky-400'
|
||||
: 'border-gray-200 bg-white text-gray-600 hover:border-sky-300 hover:text-sky-700 dark:border-dark-700 dark:bg-dark-800 dark:text-gray-400 dark:hover:border-sky-500/50'
|
||||
case PROVIDER_KIRO:
|
||||
return active
|
||||
? 'border-violet-500 bg-violet-50 text-violet-700 dark:bg-violet-500/15 dark:text-violet-300 dark:border-violet-400'
|
||||
: 'border-gray-200 bg-white text-gray-600 hover:border-violet-300 hover:text-violet-700 dark:border-dark-700 dark:bg-dark-800 dark:text-gray-400 dark:hover:border-violet-500/50'
|
||||
default:
|
||||
return active
|
||||
? 'border-gray-400 bg-gray-50 text-gray-700 dark:border-dark-500 dark:bg-dark-700 dark:text-gray-200'
|
||||
@@ -166,6 +173,8 @@ export function providerGradient(provider: string): string {
|
||||
return 'bg-gradient-to-br from-orange-50 to-amber-100 dark:from-orange-500/10 dark:to-amber-500/20'
|
||||
case PROVIDER_GEMINI:
|
||||
return 'bg-gradient-to-br from-sky-50 to-indigo-100 dark:from-sky-500/10 dark:to-indigo-500/20'
|
||||
case PROVIDER_KIRO:
|
||||
return 'bg-gradient-to-br from-violet-50 to-fuchsia-100 dark:from-violet-500/10 dark:to-fuchsia-500/20'
|
||||
default:
|
||||
return 'bg-gradient-to-br from-gray-100 to-gray-200 dark:from-dark-700 dark:to-dark-600'
|
||||
}
|
||||
|
||||
@@ -12,11 +12,13 @@ import type { Provider, MonitorStatus } from '@/api/admin/channelMonitor'
|
||||
export const PROVIDER_OPENAI: Provider = 'openai'
|
||||
export const PROVIDER_ANTHROPIC: Provider = 'anthropic'
|
||||
export const PROVIDER_GEMINI: Provider = 'gemini'
|
||||
export const PROVIDER_KIRO: Provider = 'kiro'
|
||||
|
||||
export const PROVIDERS: readonly Provider[] = [
|
||||
PROVIDER_OPENAI,
|
||||
PROVIDER_ANTHROPIC,
|
||||
PROVIDER_GEMINI,
|
||||
PROVIDER_KIRO,
|
||||
]
|
||||
|
||||
export const STATUS_OPERATIONAL: MonitorStatus = 'operational'
|
||||
|
||||
@@ -891,7 +891,8 @@ export default {
|
||||
providers: {
|
||||
openai: 'OpenAI',
|
||||
anthropic: 'Anthropic',
|
||||
gemini: 'Gemini'
|
||||
gemini: 'Gemini',
|
||||
kiro: 'Kiro'
|
||||
},
|
||||
extraModelsHeader: 'Extra Models',
|
||||
extraModelsEmpty: 'No extra models',
|
||||
|
||||
@@ -895,7 +895,8 @@ export default {
|
||||
providers: {
|
||||
openai: 'OpenAI',
|
||||
anthropic: 'Anthropic',
|
||||
gemini: 'Gemini'
|
||||
gemini: 'Gemini',
|
||||
kiro: 'Kiro'
|
||||
},
|
||||
extraModelsHeader: '附加模型',
|
||||
extraModelsEmpty: '无附加模型',
|
||||
|
||||
Reference in New Issue
Block a user