import {
IXpertViewExtensionProvider,
ViewExtensionProvider
} from '@xpert-ai/plugin-sdk'
import type {
XpertExtensionViewManifest,
XpertResolvedViewHostContext
} from '@xpert-ai/contracts'
@ViewExtensionProvider('my_metric_management')
export class MetricManagementViewProvider
implements IXpertViewExtensionProvider
{
supports(context: XpertResolvedViewHostContext) {
return context.hostType === 'agent'
}
getViewManifests(
_context: XpertResolvedViewHostContext,
slot: string
): XpertExtensionViewManifest[] {
if (slot !== 'agent.workbench.main') {
return []
}
return [
{
key: 'metrics',
title: { en_US: 'Metric Management', zh_Hans: '指标管理' },
hostType: 'agent',
slot,
refreshable: true,
parameters: [
{
key: 'projectId',
label: { en_US: 'Project', zh_Hans: '项目' },
required: true,
type: 'string',
optionSource: {
mode: 'provider',
searchable: true,
preload: true
}
},
{
key: 'modelId',
label: { en_US: 'Model', zh_Hans: '模型' },
type: 'string',
optionSource: {
mode: 'provider',
searchable: true,
dependsOn: ['projectId']
}
}
],
view: {
type: 'remote_component',
runtime: 'react',
protocolVersion: 1,
component: {
isolation: 'iframe',
entry: 'metric-management'
},
dataSource: {
mode: 'platform'
}
},
dataSource: {
mode: 'platform',
querySchema: {
supportsPagination: true,
supportsSearch: true,
supportsSort: true,
supportsParameters: true,
defaultPageSize: 20
},
cache: {
enabled: false
}
},
actions: [
{
key: 'create',
label: { en_US: 'Create', zh_Hans: '新建' },
placement: 'toolbar',
actionType: 'invoke'
},
{
key: 'edit',
label: { en_US: 'Edit', zh_Hans: '编辑' },
placement: 'row',
actionType: 'invoke',
inputDefaults: 'target'
}
]
}
]
}
}