@blueking/ai-ui-sdk 0.3.0-beta.23 → 0.3.0-beta.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/dist/components/render-agent/agent-type.vue.css +3 -3
  2. package/dist/components/render-agent/agent-type.vue.js +1 -1
  3. package/dist/components/render-auto-height-textarea/index.vue.css +11 -11
  4. package/dist/components/render-auto-height-textarea/index.vue.js +1 -1
  5. package/dist/components/render-auto-refresh/index.vue.css +8 -8
  6. package/dist/components/render-auto-refresh/index.vue.js +1 -1
  7. package/dist/components/render-card/agent/prefix-info-tool.vue.css +5 -5
  8. package/dist/components/render-card/agent/prefix-info-tool.vue.js +1 -1
  9. package/dist/components/render-card/base.vue.css +12 -12
  10. package/dist/components/render-card/base.vue.js +1 -1
  11. package/dist/components/render-card/llm/corner-badge.vue.css +3 -3
  12. package/dist/components/render-card/llm/corner-badge.vue.js +1 -1
  13. package/dist/components/render-card/llm/icons.script.vue.js.js +22 -2
  14. package/dist/components/render-card/llm/icons.vue.css +2 -2
  15. package/dist/components/render-card/llm/icons.vue.js +1 -1
  16. package/dist/components/render-card/llm/info.vue.css +1 -1
  17. package/dist/components/render-card/llm/info.vue.js +1 -1
  18. package/dist/components/render-card/llm/tag-prefix.vue.css +3 -3
  19. package/dist/components/render-card/llm/tag-prefix.vue.js +1 -1
  20. package/dist/components/render-card/mcp/actions.script.vue.js.js +6 -2
  21. package/dist/components/render-card/mcp/name-suffix.vue.css +2 -2
  22. package/dist/components/render-card/mcp/name-suffix.vue.js +1 -1
  23. package/dist/components/render-card/prompt/icons.vue.css +1 -1
  24. package/dist/components/render-card/prompt/icons.vue.js +1 -1
  25. package/dist/components/render-card/skill/tag-prefix.vue.css +3 -3
  26. package/dist/components/render-card/skill/tag-prefix.vue.js +1 -1
  27. package/dist/components/render-checkbox/index.vue.css +9 -9
  28. package/dist/components/render-checkbox/index.vue.js +1 -1
  29. package/dist/components/render-choose-tag/index.vue.css +7 -7
  30. package/dist/components/render-choose-tag/index.vue.js +1 -1
  31. package/dist/components/render-collapse/index.vue.css +2 -2
  32. package/dist/components/render-collapse/index.vue.js +1 -1
  33. package/dist/components/render-collection/content/index.vue.css +4 -4
  34. package/dist/components/render-collection/content/index.vue.js +1 -1
  35. package/dist/components/render-dataset/components/batch-delete-dataset-data/index.vue.css +3 -3
  36. package/dist/components/render-dataset/components/batch-delete-dataset-data/index.vue.js +1 -1
  37. package/dist/components/render-dataset/components/batch-edit-valid-dataset-data/index.vue.css +1 -1
  38. package/dist/components/render-dataset/components/batch-edit-valid-dataset-data/index.vue.js +1 -1
  39. package/dist/components/render-dataset/components/dataset-data-tool-icons/index.script.vue.js +1 -1
  40. package/dist/components/render-dataset/components/dataset-data-valid/index.vue.css +1 -1
  41. package/dist/components/render-dataset/components/dataset-data-valid/index.vue.js +1 -1
  42. package/dist/components/render-dataset/components/edit-dataset-data/index.vue.css +3 -3
  43. package/dist/components/render-dataset/components/edit-dataset-data/index.vue.js +1 -1
  44. package/dist/components/render-dataset/components/operation-record/index.vue.css +4 -4
  45. package/dist/components/render-dataset/components/operation-record/index.vue.js +1 -1
  46. package/dist/components/render-dataset/components/operation-record/table/index.vue.css +1 -1
  47. package/dist/components/render-dataset/components/operation-record/table/index.vue.js +1 -1
  48. package/dist/components/render-dataset/components/operation-record/view-op-result/index.vue.css +2 -2
  49. package/dist/components/render-dataset/components/operation-record/view-op-result/index.vue.js +1 -1
  50. package/dist/components/render-dataset/components/plus-dataset/index.script.vue.js.js +1 -1
  51. package/dist/components/render-dataset/components/plus-dataset/index.vue.css +1 -5
  52. package/dist/components/render-dataset/components/plus-dataset/index.vue.js +1 -1
  53. package/dist/components/render-dataset/components/plus-dataset-data/form/api.vue.css +2 -2
  54. package/dist/components/render-dataset/components/plus-dataset-data/form/api.vue.js +1 -1
  55. package/dist/components/render-dataset/components/plus-dataset-data/form/footer.vue.css +1 -1
  56. package/dist/components/render-dataset/components/plus-dataset-data/form/footer.vue.js +1 -1
  57. package/dist/components/render-dataset/components/plus-dataset-data/form/index.script.vue.js.js +1 -1
  58. package/dist/components/render-dataset/components/plus-dataset-data/form/index.vue.css +1 -4
  59. package/dist/components/render-dataset/components/plus-dataset-data/form/index.vue.js +1 -1
  60. package/dist/components/render-dataset/components/review-dataset-data/index.vue.css +10 -10
  61. package/dist/components/render-dataset/components/review-dataset-data/index.vue.js +1 -1
  62. package/dist/components/render-dataset-detail-origin-data/index.vue.css +3 -3
  63. package/dist/components/render-dataset-detail-origin-data/index.vue.js +1 -1
  64. package/dist/components/render-dataset-list/components/main.vue.css +3 -3
  65. package/dist/components/render-dataset-list/components/main.vue.js +1 -1
  66. package/dist/components/render-dataset-list/index.vue.css +2 -2
  67. package/dist/components/render-dataset-list/index.vue.js +1 -1
  68. package/dist/components/render-dialog/choose-resource.vue.css +3 -3
  69. package/dist/components/render-dialog/choose-resource.vue.js +1 -1
  70. package/dist/components/render-dialog/choose-result.vue.css +14 -14
  71. package/dist/components/render-dialog/choose-result.vue.js +1 -1
  72. package/dist/components/render-dialog/choose-space.script.vue.js.js +2 -1
  73. package/dist/components/render-dialog/choose-space.vue.css +9 -9
  74. package/dist/components/render-dialog/choose-space.vue.js +1 -1
  75. package/dist/components/render-dialog/index.vue.css +6 -6
  76. package/dist/components/render-dialog/index.vue.js +1 -1
  77. package/dist/components/render-file-card/index.vue.css +11 -11
  78. package/dist/components/render-file-card/index.vue.js +1 -1
  79. package/dist/components/render-file-type-icon/index.vue.css +6 -6
  80. package/dist/components/render-file-type-icon/index.vue.js +1 -1
  81. package/dist/components/render-generate-tag/index.vue.css +5 -5
  82. package/dist/components/render-generate-tag/index.vue.js +1 -1
  83. package/dist/components/render-header/index.vue.css +3 -3
  84. package/dist/components/render-header/index.vue.js +1 -1
  85. package/dist/components/render-knowledge/icon/index.vue.css +1 -1
  86. package/dist/components/render-knowledge/icon/index.vue.js +1 -1
  87. package/dist/components/render-like/index.vue.css +5 -5
  88. package/dist/components/render-like/index.vue.js +1 -1
  89. package/dist/components/render-markdown/filter-css.ts.js +7 -2
  90. package/dist/components/render-mcp/install/index.script.vue.js.js +65 -36
  91. package/dist/components/render-mcp/install/index.vue.d.ts +4 -2
  92. package/dist/components/render-mcp/install/install-guide.script.vue.js.js +60 -0
  93. package/dist/components/render-mcp/install/install-guide.vue.d.ts +11 -0
  94. package/dist/components/render-mcp/install/install-guide.vue.js +3 -0
  95. package/dist/components/render-prompt/content/index.vue.css +1 -1
  96. package/dist/components/render-prompt/content/index.vue.js +1 -1
  97. package/dist/components/render-reference/index.vue.css +2 -2
  98. package/dist/components/render-reference/index.vue.js +1 -1
  99. package/dist/components/render-resource-version/index.vue.css +2 -2
  100. package/dist/components/render-resource-version/index.vue.js +1 -1
  101. package/dist/components/render-router-tab/index.vue.css +3 -3
  102. package/dist/components/render-router-tab/index.vue.js +1 -1
  103. package/dist/components/render-select-plus-extension/index.vue.css +3 -3
  104. package/dist/components/render-select-plus-extension/index.vue.js +1 -1
  105. package/dist/components/render-t-table/index.vue.css +27 -27
  106. package/dist/components/render-t-table/index.vue.js +1 -1
  107. package/dist/components/render-tag-tree/index.vue.css +7 -7
  108. package/dist/components/render-tag-tree/index.vue.js +1 -1
  109. package/dist/components/render-tags/index.vue.css +6 -6
  110. package/dist/components/render-tags/index.vue.js +1 -1
  111. package/dist/css/g-utilities.css +13 -0
  112. package/dist/css/g-utilities.manifest.json +3 -0
  113. package/dist/hooks/use-mcp-http.d.ts +5 -1
  114. package/dist/hooks/use-mcp-http.ts.js +16 -2
  115. package/dist/http/helper/mcp.d.ts +3 -1
  116. package/dist/http/helper/mcp.ts.js +11 -1
  117. package/dist/http/helper/model.ts.js +1 -0
  118. package/dist/types/enum.d.ts +4 -0
  119. package/dist/types/enum.ts.js +5 -0
  120. package/dist/types/mcp.d.ts +21 -1
  121. package/dist/types/model.d.ts +2 -0
  122. package/package.json +2 -2
@@ -1,5 +1,5 @@
1
1
  import script from './index.script.vue.js';
2
- script.__scopeId = "data-v-9r5w91ua";
2
+ script.__scopeId = "data-v-uctrk1cg";
3
3
  script.__file = "./src/components/render-dialog/index.vue";
4
4
  import './index.vue.css';
5
5
  export default script;
@@ -1,21 +1,21 @@
1
1
 
2
- .upload-file-home[data-v-3ex62n4l] {
2
+ .upload-file-home[data-v-jly7bpni] {
3
3
  position: relative;
4
4
  background: #FFFFFF;
5
5
  border: 1px solid #DCDEE5;
6
6
  border-radius: 4px;
7
7
  padding: 12px 12px 10px 12px;
8
8
  }
9
- .upload-file-home[data-v-3ex62n4l]:hover {
9
+ .upload-file-home[data-v-jly7bpni]:hover {
10
10
  border: 1px solid #3A84FF;
11
11
  }
12
- .upload-file-home:hover .file-icons[data-v-3ex62n4l] {
12
+ .upload-file-home:hover .file-icons[data-v-jly7bpni] {
13
13
  display: flex;
14
14
  }
15
- .upload-file-home .file-icon[data-v-3ex62n4l] {
15
+ .upload-file-home .file-icon[data-v-jly7bpni] {
16
16
  font-size: 32px;
17
17
  }
18
- .upload-file-home .file-content[data-v-3ex62n4l] {
18
+ .upload-file-home .file-content[data-v-jly7bpni] {
19
19
  font-size: 12px;
20
20
  flex: 1;
21
21
  align-items: flex-start;
@@ -23,28 +23,28 @@
23
23
  font-weight: normal;
24
24
  width: 0;
25
25
  }
26
- .upload-file-home .file-content .file-name[data-v-3ex62n4l] {
26
+ .upload-file-home .file-content .file-name[data-v-jly7bpni] {
27
27
  width: 100%;
28
28
  font-size: 14px;
29
29
  line-height: 20px;
30
30
  }
31
- .upload-file-home .file-content .file-size[data-v-3ex62n4l] {
31
+ .upload-file-home .file-content .file-size[data-v-jly7bpni] {
32
32
  font-size: 12px;
33
33
  color: #979BA5;
34
34
  line-height: 20px;
35
35
  }
36
- .upload-file-home .file-icons[data-v-3ex62n4l] {
36
+ .upload-file-home .file-icons[data-v-jly7bpni] {
37
37
  display: none;
38
38
  color: #979BA5;
39
39
  }
40
- .upload-file-home .file-icons .ai-ui-sdk-icon[data-v-3ex62n4l] {
40
+ .upload-file-home .file-icons .ai-ui-sdk-icon[data-v-jly7bpni] {
41
41
  cursor: pointer;
42
42
  margin-right: 15px;
43
43
  font-size: 16px;
44
44
  }
45
- .upload-file-home .file-icons .ai-ui-sdk-icon[data-v-3ex62n4l]:hover {
45
+ .upload-file-home .file-icons .ai-ui-sdk-icon[data-v-jly7bpni]:hover {
46
46
  color: #3A84FF;
47
47
  }
48
- .upload-file-home .file-icons .ai-ui-sdk-delete[data-v-3ex62n4l] {
48
+ .upload-file-home .file-icons .ai-ui-sdk-delete[data-v-jly7bpni] {
49
49
  margin: 0;
50
50
  }
@@ -1,5 +1,5 @@
1
1
  import script from './index.script.vue.js.js';
2
- script.__scopeId = "data-v-3ex62n4l";
2
+ script.__scopeId = "data-v-jly7bpni";
3
3
  script.__file = "./src/components/render-file-card/index.vue";
4
4
  import './index.vue.css';
5
5
  export default script;
@@ -1,19 +1,19 @@
1
1
 
2
- .ai-ui-sdk-icon.ai-ui-sdk-pdf[data-v-n4aueaez] {
2
+ .ai-ui-sdk-icon.ai-ui-sdk-pdf[data-v-t4phaxtf] {
3
3
  color: #EA3636;
4
4
  }
5
- .ai-ui-sdk-icon.ai-ui-sdk-doc-2[data-v-n4aueaez], .ai-ui-sdk-icon.ai-ui-sdk-ppt-2[data-v-n4aueaez], .ai-ui-sdk-icon.ai-ui-sdk-markdown[data-v-n4aueaez] {
5
+ .ai-ui-sdk-icon.ai-ui-sdk-doc-2[data-v-t4phaxtf], .ai-ui-sdk-icon.ai-ui-sdk-ppt-2[data-v-t4phaxtf], .ai-ui-sdk-icon.ai-ui-sdk-markdown[data-v-t4phaxtf] {
6
6
  color: #3A84FF;
7
7
  }
8
- .ai-ui-sdk-icon.ai-ui-sdk-folder-fill[data-v-n4aueaez] {
8
+ .ai-ui-sdk-icon.ai-ui-sdk-folder-fill[data-v-t4phaxtf] {
9
9
  color: #C4C6CC;
10
10
  }
11
- .ai-ui-sdk-icon.ai-ui-sdk-archive-line[data-v-n4aueaez] {
11
+ .ai-ui-sdk-icon.ai-ui-sdk-archive-line[data-v-t4phaxtf] {
12
12
  color: #979BA5;
13
13
  }
14
- .ai-ui-sdk-icon.ai-ui-sdk-excel[data-v-n4aueaez] {
14
+ .ai-ui-sdk-icon.ai-ui-sdk-excel[data-v-t4phaxtf] {
15
15
  color: #2DCB56;
16
16
  }
17
- .ai-ui-sdk-icon.ai-ui-sdk-wangye[data-v-n4aueaez] {
17
+ .ai-ui-sdk-icon.ai-ui-sdk-wangye[data-v-t4phaxtf] {
18
18
  color: #14A568;
19
19
  }
@@ -1,5 +1,5 @@
1
1
  import script from './index.script.vue.js.js';
2
- script.__scopeId = "data-v-n4aueaez";
2
+ script.__scopeId = "data-v-t4phaxtf";
3
3
  script.__file = "./src/components/render-file-type-icon/index.vue";
4
4
  import './index.vue.css';
5
5
  export default script;
@@ -1,22 +1,22 @@
1
1
 
2
- .generate-type-tag[data-v-vcb03dda] {
2
+ .generate-type-tag[data-v-zl02s3h8] {
3
3
  border-radius: 2px;
4
4
  text-align: left;
5
5
  white-space: nowrap;
6
6
  }
7
- .generate-type-tag.public[data-v-vcb03dda] {
7
+ .generate-type-tag.public[data-v-zl02s3h8] {
8
8
  color: #2CAF5E;
9
9
  background-color: #DAF6E5;
10
10
  }
11
- .generate-type-tag.public[data-v-vcb03dda]:hover {
11
+ .generate-type-tag.public[data-v-zl02s3h8]:hover {
12
12
  color: #299E56;
13
13
  background-color: #CBF0DA;
14
14
  }
15
- .generate-type-tag.space[data-v-vcb03dda] {
15
+ .generate-type-tag.space[data-v-zl02s3h8] {
16
16
  color: #45A0A5;
17
17
  background-color: #D8F4F5;
18
18
  }
19
- .generate-type-tag.space[data-v-vcb03dda]:hover {
19
+ .generate-type-tag.space[data-v-zl02s3h8]:hover {
20
20
  color: #388A8E;
21
21
  background-color: #B6E7E9;
22
22
  }
@@ -1,5 +1,5 @@
1
1
  import script from './index.script.vue.js.js';
2
- script.__scopeId = "data-v-vcb03dda";
2
+ script.__scopeId = "data-v-zl02s3h8";
3
3
  script.__file = "./src/components/render-generate-tag/index.vue";
4
4
  import './index.vue.css';
5
5
  export default script;
@@ -1,13 +1,13 @@
1
1
 
2
- .header-home[data-v-le5445c3] {
2
+ .header-home[data-v-m7m7qrxy] {
3
3
  width: 100%;
4
4
  background: #FFFFFF;
5
5
  box-shadow: 0 3px 4px 0 #0000000a;
6
6
  }
7
- .render-tab[data-v-le5445c3] {
7
+ .render-tab[data-v-m7m7qrxy] {
8
8
  border-bottom: 2px solid transparent;
9
9
  }
10
- .render-tab.active[data-v-le5445c3] {
10
+ .render-tab.active[data-v-m7m7qrxy] {
11
11
  color: #3A84FF;
12
12
  border-bottom: 2px solid #3A84FF;
13
13
  }
@@ -1,5 +1,5 @@
1
1
  import script from './index.script.vue.js.js';
2
- script.__scopeId = "data-v-le5445c3";
2
+ script.__scopeId = "data-v-m7m7qrxy";
3
3
  script.__file = "./src/components/render-header/index.vue";
4
4
  import './index.vue.css';
5
5
  export default script;
@@ -1,4 +1,4 @@
1
1
 
2
- .ai-ui-sdk-icon[data-v-5tq5fx4d] {
2
+ .ai-ui-sdk-icon[data-v-dpzgoq2u] {
3
3
  color: #979ba5;
4
4
  }
@@ -1,5 +1,5 @@
1
1
  import script from './index.script.vue.js.js';
2
- script.__scopeId = "data-v-5tq5fx4d";
2
+ script.__scopeId = "data-v-dpzgoq2u";
3
3
  script.__file = "./src/components/render-knowledge/icon/index.vue";
4
4
  import './index.vue.css';
5
5
  export default script;
@@ -1,20 +1,20 @@
1
1
 
2
- .dislike-icon[data-v-ice05m6q] {
2
+ .dislike-icon[data-v-homawxom] {
3
3
  transform: rotateX(180deg);
4
4
  }
5
- .option-items[data-v-ice05m6q] {
5
+ .option-items[data-v-homawxom] {
6
6
  padding: 1px 8px;
7
7
  background-color: #F0F1F5;
8
8
  line-height: 22px;
9
9
  border-radius: 2px;
10
10
  }
11
- .option-items[data-v-ice05m6q]:hover {
11
+ .option-items[data-v-homawxom]:hover {
12
12
  background-color: #E1ECFF;
13
13
  color: #3A84FF;
14
14
  }
15
- .option-items-selected[data-v-ice05m6q]{
15
+ .option-items-selected[data-v-homawxom]{
16
16
  background-color: #E1ECFF;
17
17
  }
18
- [data-v-ice05m6q] .bk-form-item {
18
+ [data-v-homawxom] .bk-form-item {
19
19
  margin-bottom: 17px;
20
20
  }
@@ -1,5 +1,5 @@
1
1
  import script from './index.script.vue.js.js';
2
- script.__scopeId = "data-v-ice05m6q";
2
+ script.__scopeId = "data-v-homawxom";
3
3
  script.__file = "./src/components/render-like/index.vue";
4
4
  import './index.vue.css';
5
5
  export default script;
@@ -49,6 +49,10 @@ const SAFE_COLOR_KEYWORDS = new Set([
49
49
  'pink',
50
50
  'brown'
51
51
  ]);
52
+ const SAFE_ATTRIBUTES = new Set([
53
+ 'data-nodeid',
54
+ 'data-clipboard-text'
55
+ ]);
52
56
  const isSafeCssValue = (value)=>{
53
57
  return !DANGEROUS_CSS_VALUE_RE.test(value);
54
58
  };
@@ -132,7 +136,8 @@ export const escapeHtml = (html)=>{
132
136
  'class'
133
137
  ],
134
138
  i: [
135
- 'class'
139
+ 'class',
140
+ 'title'
136
141
  ],
137
142
  span: [
138
143
  'class',
@@ -201,7 +206,7 @@ export const escapeHtml = (html)=>{
201
206
  ]
202
207
  },
203
208
  onTagAttr (tag, name, value) {
204
- if (name === 'data-nodeid') {
209
+ if (SAFE_ATTRIBUTES.has(name)) {
205
210
  return `${name}="${value}"`;
206
211
  }
207
212
  },
@@ -1,19 +1,24 @@
1
1
  import { defineComponent as _defineComponent } from 'vue';
2
- import { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock } from "vue";
2
+ import { unref as _unref, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from "vue";
3
3
  const _hoisted_1 = {
4
4
  class: "g-flex-row"
5
5
  };
6
6
  const _hoisted_2 = {
7
7
  class: "g-text-14 g-text-gray"
8
8
  };
9
- import { ref } from 'vue';
9
+ import { ref, toRef, watch } from 'vue';
10
+ import RenderInstallGuide from './install-guide.vue.js';
11
+ import { useMcpHttp } from '../../../hooks/use-mcp-http.ts.js';
12
+ import { McpInstallTargetType } from '../../../types/enum.ts.js';
10
13
  export default /*@__PURE__*/ _defineComponent({
11
14
  props: {
12
15
  isShow: {
13
16
  type: Boolean
14
17
  },
18
+ mcpConfig: {},
15
19
  selectedMcp: {},
16
- mcpConfig: {}
20
+ apiPrefix: {},
21
+ spaceId: {}
17
22
  },
18
23
  emits: [
19
24
  "update:isShow"
@@ -21,30 +26,13 @@ export default /*@__PURE__*/ _defineComponent({
21
26
  setup (__props, { emit: __emit }) {
22
27
  const props = __props;
23
28
  const emits = __emit;
24
- const formData = ref({
25
- selectedId: 'Cursor'
26
- });
27
- const formRef = ref(null);
28
- const IDEList = ref([
29
- {
30
- id: 'Cursor',
31
- name: 'Cursor'
32
- }
33
- ]);
29
+ const { getMcpInstallTargets } = useMcpHttp(props.apiPrefix, toRef(props, 'spaceId'));
30
+ const isLoadingInstallTargets = ref(false);
31
+ const installTargets = ref([]);
32
+ const selectedInstallTargetType = ref();
34
33
  const handleClose = ()=>{
35
34
  emits('update:isShow', false);
36
35
  };
37
- const handleConfirm = ()=>{
38
- var _formRef_value;
39
- (_formRef_value = formRef.value) === null || _formRef_value === void 0 ? void 0 : _formRef_value.validate().then(()=>{
40
- handleMcpInstall();
41
- });
42
- };
43
- const handleMcpInstall = ()=>{
44
- if (formData.value.selectedId === IDEList.value[0].id) {
45
- handleCursorInstall();
46
- }
47
- };
48
36
  // 安装至 Cursor
49
37
  const handleCursorInstall = ()=>{
50
38
  const base64Config = btoa(String.fromCharCode(...new TextEncoder().encode(props.mcpConfig)));
@@ -53,15 +41,37 @@ export default /*@__PURE__*/ _defineComponent({
53
41
  config: base64Config
54
42
  });
55
43
  window.open(`cursor://anysphere.cursor-deeplink/mcp/install?${params}`, '_blank');
44
+ };
45
+ const handleConfirm = ()=>{
46
+ if (selectedInstallTargetType.value === McpInstallTargetType.Cursor) {
47
+ handleCursorInstall();
48
+ }
56
49
  handleClose();
57
50
  };
51
+ const handleGetInstallTargets = ()=>{
52
+ isLoadingInstallTargets.value = true;
53
+ getMcpInstallTargets().then((res)=>{
54
+ var _res_;
55
+ installTargets.value = res;
56
+ selectedInstallTargetType.value = (_res_ = res[0]) === null || _res_ === void 0 ? void 0 : _res_.targetType;
57
+ }).finally(()=>{
58
+ isLoadingInstallTargets.value = false;
59
+ });
60
+ };
61
+ watch(()=>props.isShow, (val)=>{
62
+ if (val) {
63
+ handleGetInstallTargets();
64
+ }
65
+ });
58
66
  return (_ctx, _cache)=>{
59
67
  const _component_bk_select = _resolveComponent("bk-select");
60
68
  const _component_bk_form_item = _resolveComponent("bk-form-item");
61
69
  const _component_bk_form = _resolveComponent("bk-form");
62
70
  const _component_bk_dialog = _resolveComponent("bk-dialog");
63
71
  return _openBlock(), _createBlock(_component_bk_dialog, {
72
+ width: 600,
64
73
  "is-show": props.isShow,
74
+ "confirm-text": selectedInstallTargetType.value === _unref(McpInstallTargetType).Cursor ? '安装' : '确认',
65
75
  onClosed: handleClose,
66
76
  onConfirm: handleConfirm
67
77
  }, {
@@ -78,31 +88,49 @@ export default /*@__PURE__*/ _defineComponent({
78
88
  ]),
79
89
  default: _withCtx(()=>[
80
90
  _createVNode(_component_bk_form, {
81
- ref_key: "formRef",
82
- ref: formRef,
83
91
  "form-type": "vertical",
84
- model: formData.value
92
+ class: "g-small-form g-small-gap-form",
93
+ model: {
94
+ selectedInstallTargetType: selectedInstallTargetType.value
95
+ }
85
96
  }, {
86
97
  default: _withCtx(()=>[
87
98
  _createVNode(_component_bk_form_item, {
88
99
  label: "安装至 IDE",
89
- property: "selectedId",
100
+ property: "selectedInstallTargetType",
90
101
  required: ""
91
102
  }, {
92
103
  default: _withCtx(()=>[
93
104
  _createVNode(_component_bk_select, {
94
- modelValue: formData.value.selectedId,
95
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event)=>formData.value.selectedId = $event),
96
- "id-key": "id",
97
- "display-key": "name",
98
- list: IDEList.value
105
+ modelValue: selectedInstallTargetType.value,
106
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event)=>selectedInstallTargetType.value = $event),
107
+ "id-key": "targetType",
108
+ "display-key": "displayName",
109
+ list: installTargets.value,
110
+ loading: isLoadingInstallTargets.value,
111
+ clearable: false
99
112
  }, null, 8 /* PROPS */ , [
100
113
  "modelValue",
101
- "list"
114
+ "list",
115
+ "loading"
102
116
  ])
103
117
  ]),
104
118
  _: 1 /* STABLE */
105
- })
119
+ }),
120
+ selectedInstallTargetType.value ? (_openBlock(), _createBlock(RenderInstallGuide, {
121
+ key: 0,
122
+ "mcp-type": props.selectedMcp.mcpType,
123
+ "mcp-id": props.selectedMcp.id,
124
+ "api-prefix": props.apiPrefix,
125
+ "space-id": props.spaceId,
126
+ "mcp-install-target-type": selectedInstallTargetType.value
127
+ }, null, 8 /* PROPS */ , [
128
+ "mcp-type",
129
+ "mcp-id",
130
+ "api-prefix",
131
+ "space-id",
132
+ "mcp-install-target-type"
133
+ ])) : _createCommentVNode("v-if", true)
106
134
  ]),
107
135
  _: 1 /* STABLE */
108
136
  }, 8 /* PROPS */ , [
@@ -111,7 +139,8 @@ export default /*@__PURE__*/ _defineComponent({
111
139
  ]),
112
140
  _: 1 /* STABLE */
113
141
  }, 8 /* PROPS */ , [
114
- "is-show"
142
+ "is-show",
143
+ "confirm-text"
115
144
  ]);
116
145
  };
117
146
  }
@@ -1,8 +1,10 @@
1
- import { IMcp } from '@/types/mcp';
1
+ import type { IMcp } from '@/types/mcp';
2
2
  interface IProps {
3
3
  isShow: boolean;
4
- selectedMcp: IMcp;
5
4
  mcpConfig?: string;
5
+ selectedMcp: IMcp;
6
+ apiPrefix: string;
7
+ spaceId?: string;
6
8
  }
7
9
  declare const __VLS_export: import("vue").DefineComponent<IProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
8
10
  "update:isShow": (value: boolean) => any;
@@ -0,0 +1,60 @@
1
+ import { defineComponent as _defineComponent } from 'vue';
2
+ import { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, withCtx as _withCtx } from "vue";
3
+ import { ref, toRef, watch } from 'vue';
4
+ import RenderMarkdown from '../../render-markdown/view.ts.js';
5
+ import RenderSearchEmpty from '../../render-search-empty/index.vue.js';
6
+ import { useMcpHttp } from '../../../hooks/use-mcp-http.ts.js';
7
+ export default /*@__PURE__*/ _defineComponent({
8
+ props: {
9
+ apiPrefix: {},
10
+ spaceId: {},
11
+ mcpInstallTargetType: {},
12
+ mcpType: {},
13
+ mcpId: {}
14
+ },
15
+ setup (__props) {
16
+ const props = __props;
17
+ const { getMcpInstallGuide } = useMcpHttp(props.apiPrefix, toRef(props, 'spaceId'));
18
+ const isLoading = ref(false);
19
+ const installGuide = ref('');
20
+ const handleGetInstallGuide = ()=>{
21
+ isLoading.value = true;
22
+ const params = {
23
+ targetType: props.mcpInstallTargetType,
24
+ mcpType: props.mcpType,
25
+ mcpId: props.mcpId
26
+ };
27
+ getMcpInstallGuide(params).then((res)=>{
28
+ installGuide.value = res.markdown;
29
+ }).finally(()=>{
30
+ isLoading.value = false;
31
+ });
32
+ };
33
+ watch(()=>props.mcpInstallTargetType, handleGetInstallGuide, {
34
+ immediate: true
35
+ });
36
+ return (_ctx, _cache)=>{
37
+ const _component_bk_loading = _resolveComponent("bk-loading");
38
+ return _openBlock(), _createBlock(_component_bk_loading, {
39
+ loading: isLoading.value
40
+ }, {
41
+ default: _withCtx(()=>[
42
+ installGuide.value ? (_openBlock(), _createBlock(_unref(RenderMarkdown), {
43
+ key: 0,
44
+ value: installGuide.value,
45
+ padding: "0"
46
+ }, null, 8 /* PROPS */ , [
47
+ "value"
48
+ ])) : !isLoading.value ? (_openBlock(), _createBlock(RenderSearchEmpty, {
49
+ key: 1,
50
+ scene: "part",
51
+ description: "暂无安装指南"
52
+ })) : _createCommentVNode("v-if", true)
53
+ ]),
54
+ _: 1 /* STABLE */
55
+ }, 8 /* PROPS */ , [
56
+ "loading"
57
+ ]);
58
+ };
59
+ }
60
+ });
@@ -0,0 +1,11 @@
1
+ import { McpType } from '@/types/enum';
2
+ interface IProps {
3
+ apiPrefix: string;
4
+ spaceId?: string;
5
+ mcpInstallTargetType?: string;
6
+ mcpType: McpType;
7
+ mcpId: number;
8
+ }
9
+ declare const __VLS_export: import("vue").DefineComponent<IProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<IProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
10
+ declare const _default: typeof __VLS_export;
11
+ export default _default;
@@ -0,0 +1,3 @@
1
+ import script from './install-guide.script.vue.js.js';
2
+ script.__file = "./src/components/render-mcp/install/install-guide.vue";
3
+ export default script;
@@ -1,5 +1,5 @@
1
1
 
2
- .resource-card-description[data-v-04bdylfu] {
2
+ .resource-card-description[data-v-xlg6h7ji] {
3
3
  color: #4D4F56;
4
4
  height: 120px;
5
5
  white-space: pre-wrap;
@@ -1,5 +1,5 @@
1
1
  import script from './index.script.vue.js.js';
2
- script.__scopeId = "data-v-04bdylfu";
2
+ script.__scopeId = "data-v-xlg6h7ji";
3
3
  script.__file = "./src/components/render-prompt/content/index.vue";
4
4
  import './index.vue.css';
5
5
  export default script;
@@ -1,8 +1,8 @@
1
1
 
2
- .reference-table[data-v-7lqf08lv]{
2
+ .reference-table[data-v-h282bt7c]{
3
3
  padding: 18px 24px;
4
4
  }
5
- .bk-radio-button[data-v-7lqf08lv]{
5
+ .bk-radio-button[data-v-h282bt7c]{
6
6
  flex: 1;
7
7
  text-align: center;
8
8
  }
@@ -1,5 +1,5 @@
1
1
  import script from './index.script.vue.js';
2
- script.__scopeId = "data-v-7lqf08lv";
2
+ script.__scopeId = "data-v-h282bt7c";
3
3
  script.__file = "./src/components/render-reference/index.vue";
4
4
  import './index.vue.css';
5
5
  export default script;
@@ -1,11 +1,11 @@
1
1
 
2
- .resource-version[data-v-q5eu3nux] {
2
+ .resource-version[data-v-5o5ticul] {
3
3
  border-radius: 2px;
4
4
  text-align: left;
5
5
  color: #4D4F56;
6
6
  background-color: #F0F1F5;
7
7
  white-space: nowrap;
8
8
  }
9
- .resource-version .bkaidev-rizhifenxi[data-v-q5eu3nux] {
9
+ .resource-version .bkaidev-rizhifenxi[data-v-5o5ticul] {
10
10
  color: #3A84FF;
11
11
  }
@@ -1,5 +1,5 @@
1
1
  import script from './index.script.vue.js.js';
2
- script.__scopeId = "data-v-q5eu3nux";
2
+ script.__scopeId = "data-v-5o5ticul";
3
3
  script.__file = "./src/components/render-resource-version/index.vue";
4
4
  import './index.vue.css';
5
5
  export default script;
@@ -1,12 +1,12 @@
1
1
 
2
- .router-tab[data-v-vuwjk4na] {
2
+ .router-tab[data-v-uds5b01g] {
3
3
  margin-top: 2px;
4
4
  height: 42px;
5
5
  background: #FFFFFF;
6
6
  box-shadow: 0 2px 4px 0 #1919290d;
7
7
  padding: 0 24px;
8
8
  }
9
- .router-tab a[data-v-vuwjk4na] {
9
+ .router-tab a[data-v-uds5b01g] {
10
10
  padding: 0 8px;
11
11
  margin-right: 24px;
12
12
  font-size: 14px;
@@ -15,7 +15,7 @@
15
15
  color: #4D4F56;
16
16
  box-sizing: border-box;
17
17
  }
18
- .router-tab a.router-link-exact-active[data-v-vuwjk4na] {
18
+ .router-tab a.router-link-exact-active[data-v-uds5b01g] {
19
19
  color: #3A84FF;
20
20
  border-bottom: 2px solid #3A84FF;
21
21
  }
@@ -1,5 +1,5 @@
1
1
  import script from './index.script.vue.js.js';
2
- script.__scopeId = "data-v-vuwjk4na";
2
+ script.__scopeId = "data-v-uds5b01g";
3
3
  script.__file = "./src/components/render-router-tab/index.vue";
4
4
  import './index.vue.css';
5
5
  export default script;
@@ -1,5 +1,5 @@
1
1
 
2
- .select-plus-extension[data-v-xxp6qtq8] {
2
+ .select-plus-extension[data-v-zlu6sdg8] {
3
3
  cursor: pointer;
4
4
  width: 100%;
5
5
  display: flex;
@@ -8,10 +8,10 @@
8
8
  font-size: 12px;
9
9
  line-height: 20px;
10
10
  }
11
- .select-plus-extension .ai-ui-sdk-icon[data-v-xxp6qtq8] {
11
+ .select-plus-extension .ai-ui-sdk-icon[data-v-zlu6sdg8] {
12
12
  font-size: 14px;
13
13
  margin-right: 6px;
14
14
  }
15
- .select-plus-extension[data-v-xxp6qtq8]:hover {
15
+ .select-plus-extension[data-v-zlu6sdg8]:hover {
16
16
  color: #3A84FF;
17
17
  }
@@ -1,5 +1,5 @@
1
1
  import script from './index.script.vue.js.js';
2
- script.__scopeId = "data-v-xxp6qtq8";
2
+ script.__scopeId = "data-v-zlu6sdg8";
3
3
  script.__file = "./src/components/render-select-plus-extension/index.vue";
4
4
  import './index.vue.css';
5
5
  export default script;