support self-check
This commit is contained in:
parent
8a6d555da1
commit
e478ae95f2
@ -2,8 +2,10 @@
|
|||||||
|
|
||||||
## [main] 0.1.9
|
## [main] 0.1.9
|
||||||
- 增加 mook 功能:可以利用随机种子或者AI生成来自动化填充测试 tool 的表单数据
|
- 增加 mook 功能:可以利用随机种子或者AI生成来自动化填充测试 tool 的表单数据
|
||||||
|
- 增加工具自检功能:openmcp 的 tool 下可以点击「工具模块」 右侧的 「工具自检」进入自检模式,该模式下,用户可以自己定义工具执行的拓扑顺序,然后一次性进行自动检测。
|
||||||
- 修复 issue #44: 完成链接跳转的平台适配
|
- 修复 issue #44: 完成链接跳转的平台适配
|
||||||
- 修复 issue #36: 完成非文件夹打开下的成功启动
|
- 修复 issue #36: 完成非文件夹打开下的成功启动
|
||||||
|
- 修复 issue #45: 数组类型参数不支持
|
||||||
- 修复多行对话粘贴进入对话框样式异常的问题
|
- 修复多行对话粘贴进入对话框样式异常的问题
|
||||||
|
|
||||||
## [main] 0.1.8
|
## [main] 0.1.8
|
||||||
|
@ -67,7 +67,7 @@ function formatJson(obj: any) {
|
|||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.04);
|
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.04);
|
||||||
font-size: 15px;
|
font-size: 15px;
|
||||||
max-width: 300px;
|
max-width: 1000px;
|
||||||
word-break: break-all;
|
word-break: break-all;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -127,6 +127,14 @@ function formatJson(obj: any) {
|
|||||||
.item-json {
|
.item-json {
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
padding: 6px 10px;
|
padding: 6px 10px;
|
||||||
|
font-size: 13px;
|
||||||
|
font-family: var(--code-font-family, monospace);
|
||||||
|
margin: 2px 0 8px 0;
|
||||||
|
white-space: pre-wrap;
|
||||||
|
word-break: break-all;
|
||||||
|
overflow-x: auto;
|
||||||
|
max-width: 100%;
|
||||||
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-result {
|
.item-result {
|
||||||
@ -137,8 +145,11 @@ function formatJson(obj: any) {
|
|||||||
margin-bottom: 6px;
|
margin-bottom: 6px;
|
||||||
border-radius: .5em;
|
border-radius: .5em;
|
||||||
margin: 5px 0;
|
margin: 5px 0;
|
||||||
|
overflow-x: auto;
|
||||||
|
max-width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.result-block.error {
|
.result-block.error {
|
||||||
background-color: rgba(245, 108, 108, 0.5);
|
background-color: rgba(245, 108, 108, 0.5);
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-dialog v-model="showDiagram" width="800px" append-to-body class="no-padding-dialog">
|
<el-dialog v-model="showDialog" width="800px" class="no-padding-dialog">
|
||||||
<template #header>
|
<template #header>
|
||||||
<div style="display: flex; align-items: center;">
|
<div style="display: flex; align-items: center;">
|
||||||
<span>Tool Diagram</span>
|
<span>Tool Diagram</span>
|
||||||
@ -43,7 +43,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { nextTick, provide, ref } from 'vue';
|
import { computed, nextTick, provide, ref } from 'vue';
|
||||||
import Diagram from './diagram.vue';
|
import Diagram from './diagram.vue';
|
||||||
import { makeNodeTest, topoSortParallel, type DiagramContext, type DiagramState } from './diagram';
|
import { makeNodeTest, topoSortParallel, type DiagramContext, type DiagramState } from './diagram';
|
||||||
import { ElMessage } from 'element-plus';
|
import { ElMessage } from 'element-plus';
|
||||||
@ -52,18 +52,27 @@ import { useI18n } from 'vue-i18n';
|
|||||||
import type { ToolStorage } from '../tools';
|
import type { ToolStorage } from '../tools';
|
||||||
import { tabs } from '../../panel';
|
import { tabs } from '../../panel';
|
||||||
|
|
||||||
const showDiagram = ref(true);
|
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
|
|
||||||
const caption = ref('');
|
const caption = ref('');
|
||||||
const showCaption = ref(false);
|
const showCaption = ref(false);
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
|
modelValue: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
tabId: {
|
tabId: {
|
||||||
type: Number,
|
type: Number,
|
||||||
required: true
|
required: true
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
const emit = defineEmits(['update:modelValue']);
|
||||||
|
|
||||||
|
const showDialog = computed({
|
||||||
|
get: () => props.modelValue,
|
||||||
|
set: v => emit('update:modelValue', v)
|
||||||
|
});
|
||||||
|
|
||||||
function setCaption(text: string) {
|
function setCaption(text: string) {
|
||||||
caption.value = text;
|
caption.value = text;
|
||||||
|
@ -6,22 +6,29 @@
|
|||||||
<h2>
|
<h2>
|
||||||
<span class="iconfont icon-tool"></span>
|
<span class="iconfont icon-tool"></span>
|
||||||
{{ t('tool-module') }}
|
{{ t('tool-module') }}
|
||||||
|
<el-button
|
||||||
|
style="font-size: 12px;"
|
||||||
|
@click="showAutoDetector = true"
|
||||||
|
>
|
||||||
|
{{ t('tool-self-detect') }}
|
||||||
|
</el-button>
|
||||||
</h2>
|
</h2>
|
||||||
<ToolList :tab-id="props.tabId"></ToolList>
|
<ToolList :tab-id="props.tabId"></ToolList>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="right">
|
<div class="right">
|
||||||
<ToolExecutor :tab-id="props.tabId"></ToolExecutor>
|
<ToolExecutor :tab-id="props.tabId"></ToolExecutor>
|
||||||
|
|
||||||
<ToolLogger :tab-id="props.tabId"></ToolLogger>
|
<ToolLogger :tab-id="props.tabId"></ToolLogger>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<AutoDetector
|
||||||
|
v-model="showAutoDetector"
|
||||||
|
:tab-id="props.tabId"
|
||||||
|
/>
|
||||||
</el-scrollbar>
|
</el-scrollbar>
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { defineProps } from 'vue';
|
import { defineProps, ref } from 'vue';
|
||||||
import ToolList from './tool-list.vue';
|
import ToolList from './tool-list.vue';
|
||||||
import ToolExecutor from './tool-executor.vue';
|
import ToolExecutor from './tool-executor.vue';
|
||||||
import ToolLogger from './tool-logger.vue';
|
import ToolLogger from './tool-logger.vue';
|
||||||
@ -36,6 +43,8 @@ const props = defineProps({
|
|||||||
required: true
|
required: true
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const showAutoDetector = ref(false);
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
@ -194,5 +194,6 @@
|
|||||||
"ai-gen-error-json": "خطأ في تحليل JSON الذي تم إنشاؤه بواسطة الذكاء الاصطناعي",
|
"ai-gen-error-json": "خطأ في تحليل JSON الذي تم إنشاؤه بواسطة الذكاء الاصطناعي",
|
||||||
"ai-invoke-unknown-tool": "استدعت الذكاء الاصطناعي أداة غير معروفة",
|
"ai-invoke-unknown-tool": "استدعت الذكاء الاصطناعي أداة غير معروفة",
|
||||||
"click-edge-to-delete": "انقر على الحافة للحذف",
|
"click-edge-to-delete": "انقر على الحافة للحذف",
|
||||||
"select-node-define-test-tomo": "اختر عقدة أخرى لتحديد طوبولوجيا الاختبار"
|
"select-node-define-test-tomo": "اختر عقدة أخرى لتحديد طوبولوجيا الاختبار",
|
||||||
|
"tool-self-detect": "الفحص الذاتي للأداة"
|
||||||
}
|
}
|
@ -194,5 +194,6 @@
|
|||||||
"ai-gen-error-json": "Fehler beim Parsen von KI-generiertem JSON",
|
"ai-gen-error-json": "Fehler beim Parsen von KI-generiertem JSON",
|
||||||
"ai-invoke-unknown-tool": "KI hat ein unbekanntes Tool aufgerufen",
|
"ai-invoke-unknown-tool": "KI hat ein unbekanntes Tool aufgerufen",
|
||||||
"click-edge-to-delete": "Klicken Sie auf die Kante, um sie zu löschen",
|
"click-edge-to-delete": "Klicken Sie auf die Kante, um sie zu löschen",
|
||||||
"select-node-define-test-tomo": "Wählen Sie einen anderen Knoten aus, um die Testtopologie zu definieren"
|
"select-node-define-test-tomo": "Wählen Sie einen anderen Knoten aus, um die Testtopologie zu definieren",
|
||||||
|
"tool-self-detect": "Werkzeug-Selbsttest"
|
||||||
}
|
}
|
@ -194,5 +194,6 @@
|
|||||||
"ai-gen-error-json": "AI-generated JSON parsing error",
|
"ai-gen-error-json": "AI-generated JSON parsing error",
|
||||||
"ai-invoke-unknown-tool": "AI called an unknown tool",
|
"ai-invoke-unknown-tool": "AI called an unknown tool",
|
||||||
"click-edge-to-delete": "Click the edge to delete",
|
"click-edge-to-delete": "Click the edge to delete",
|
||||||
"select-node-define-test-tomo": "Select another node to define the test topology"
|
"select-node-define-test-tomo": "Select another node to define the test topology",
|
||||||
|
"tool-self-detect": "Tool Self-Check"
|
||||||
}
|
}
|
@ -194,5 +194,6 @@
|
|||||||
"ai-gen-error-json": "Erreur d'analyse JSON générée par IA",
|
"ai-gen-error-json": "Erreur d'analyse JSON générée par IA",
|
||||||
"ai-invoke-unknown-tool": "L'IA a appelé un outil inconnu",
|
"ai-invoke-unknown-tool": "L'IA a appelé un outil inconnu",
|
||||||
"click-edge-to-delete": "Cliquez sur le bord pour supprimer",
|
"click-edge-to-delete": "Cliquez sur le bord pour supprimer",
|
||||||
"select-node-define-test-tomo": "Sélectionnez un autre nœud pour définir la topologie de test"
|
"select-node-define-test-tomo": "Sélectionnez un autre nœud pour définir la topologie de test",
|
||||||
|
"tool-self-detect": "Auto-vérification de l'outil"
|
||||||
}
|
}
|
@ -194,5 +194,6 @@
|
|||||||
"ai-gen-error-json": "AI生成JSONの解析エラー",
|
"ai-gen-error-json": "AI生成JSONの解析エラー",
|
||||||
"ai-invoke-unknown-tool": "AIが未知のツールを呼び出しました",
|
"ai-invoke-unknown-tool": "AIが未知のツールを呼び出しました",
|
||||||
"click-edge-to-delete": "クリックして削除",
|
"click-edge-to-delete": "クリックして削除",
|
||||||
"select-node-define-test-tomo": "テストトポロジを定義するために別のノードを選択してください"
|
"select-node-define-test-tomo": "テストトポロジを定義するために別のノードを選択してください",
|
||||||
|
"tool-self-detect": "ツール自己診断"
|
||||||
}
|
}
|
@ -194,5 +194,6 @@
|
|||||||
"ai-gen-error-json": "AI 생성 JSON 구문 분석 오류",
|
"ai-gen-error-json": "AI 생성 JSON 구문 분석 오류",
|
||||||
"ai-invoke-unknown-tool": "AI가 알 수 없는 도구를 호출했습니다",
|
"ai-invoke-unknown-tool": "AI가 알 수 없는 도구를 호출했습니다",
|
||||||
"click-edge-to-delete": "가장자리를 클릭하여 삭제",
|
"click-edge-to-delete": "가장자리를 클릭하여 삭제",
|
||||||
"select-node-define-test-tomo": "테스트 토폴로지를 정의하려면 다른 노드를 선택하세요"
|
"select-node-define-test-tomo": "테스트 토폴로지를 정의하려면 다른 노드를 선택하세요",
|
||||||
|
"tool-self-detect": "도구 자체 점검"
|
||||||
}
|
}
|
@ -194,5 +194,6 @@
|
|||||||
"ai-gen-error-json": "Ошибка разбора JSON, созданного ИИ",
|
"ai-gen-error-json": "Ошибка разбора JSON, созданного ИИ",
|
||||||
"ai-invoke-unknown-tool": "ИИ вызвал неизвестный инструмент",
|
"ai-invoke-unknown-tool": "ИИ вызвал неизвестный инструмент",
|
||||||
"click-edge-to-delete": "Нажмите на край, чтобы удалить",
|
"click-edge-to-delete": "Нажмите на край, чтобы удалить",
|
||||||
"select-node-define-test-tomo": "Выберите другой узел для определения тестовой топологии"
|
"select-node-define-test-tomo": "Выберите другой узел для определения тестовой топологии",
|
||||||
|
"tool-self-detect": "Самопроверка инструмента"
|
||||||
}
|
}
|
@ -194,5 +194,6 @@
|
|||||||
"ai-gen-error-json": "AI 生成的 JSON 解析错误",
|
"ai-gen-error-json": "AI 生成的 JSON 解析错误",
|
||||||
"ai-invoke-unknown-tool": "AI 调用了未知的工具",
|
"ai-invoke-unknown-tool": "AI 调用了未知的工具",
|
||||||
"click-edge-to-delete": "点击边以删除",
|
"click-edge-to-delete": "点击边以删除",
|
||||||
"select-node-define-test-tomo": "选择另一个节点以定义测试拓扑"
|
"select-node-define-test-tomo": "选择另一个节点以定义测试拓扑",
|
||||||
|
"tool-self-detect": "工具自检"
|
||||||
}
|
}
|
@ -194,5 +194,6 @@
|
|||||||
"ai-gen-error-json": "AI 生成的 JSON 解析錯誤",
|
"ai-gen-error-json": "AI 生成的 JSON 解析錯誤",
|
||||||
"ai-invoke-unknown-tool": "AI調用了未知的工具",
|
"ai-invoke-unknown-tool": "AI調用了未知的工具",
|
||||||
"click-edge-to-delete": "點擊邊緣以刪除",
|
"click-edge-to-delete": "點擊邊緣以刪除",
|
||||||
"select-node-define-test-tomo": "選擇另一個節點以定義測試拓撲"
|
"select-node-define-test-tomo": "選擇另一個節點以定義測試拓撲",
|
||||||
|
"tool-self-detect": "工具自檢"
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user