vue-agent-start 0.1.0

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 (169) hide show
  1. package/package.json +30 -0
  2. package/pnpm-workspace.yaml +3 -0
  3. package/src/agent-flow/adapter/backend.ts +99 -0
  4. package/src/agent-flow/components/ChatIframePanel.vue +773 -0
  5. package/src/agent-flow/components/DatasetItemCard.vue +313 -0
  6. package/src/agent-flow/components/MemoryWindow.vue +104 -0
  7. package/src/agent-flow/components/PromptEditor.vue +804 -0
  8. package/src/agent-flow/components/PromptEditorTagPanel.vue +460 -0
  9. package/src/agent-flow/components/SvgIcon.vue +32 -0
  10. package/src/agent-flow/components/ToolItemCard.vue +169 -0
  11. package/src/agent-flow/components/VariableCard.vue +161 -0
  12. package/src/agent-flow/components/VariableSelector.vue +162 -0
  13. package/src/agent-flow/components/chat-iframe-types.ts +35 -0
  14. package/src/agent-flow/components/stubs/DatasetChooser.vue +70 -0
  15. package/src/agent-flow/components/stubs/Embedding.vue +22 -0
  16. package/src/agent-flow/components/stubs/ModelSelect.vue +24 -0
  17. package/src/agent-flow/components/stubs/RestfulSelectCard.vue +24 -0
  18. package/src/agent-flow/components/stubs/ToolChooser.vue +96 -0
  19. package/src/agent-flow/components/stubs/TriggersItemCard.vue +126 -0
  20. package/src/agent-flow/components/stubs/VariableModal.vue +115 -0
  21. package/src/agent-flow/index.ts +73 -0
  22. package/src/agent-flow/stores/workflow.ts +72 -0
  23. package/src/agent-flow/utils/langUtils.ts +173 -0
  24. package/src/agent-flow/workflow/Ability.vue +65 -0
  25. package/src/agent-flow/workflow/AuthorizationItem.vue +101 -0
  26. package/src/agent-flow/workflow/ConversationVar.vue +42 -0
  27. package/src/agent-flow/workflow/CustomEdge.vue +94 -0
  28. package/src/agent-flow/workflow/EnvironmentVar.vue +40 -0
  29. package/src/agent-flow/workflow/FlowDesigner.vue +2802 -0
  30. package/src/agent-flow/workflow/Icon.vue +179 -0
  31. package/src/agent-flow/workflow/NodeConfig.vue +509 -0
  32. package/src/agent-flow/workflow/NodeConfigCard.vue +460 -0
  33. package/src/agent-flow/workflow/NodeHandle.vue +147 -0
  34. package/src/agent-flow/workflow/NodeHeaderToolbar.vue +77 -0
  35. package/src/agent-flow/workflow/NodeHoverToolbar.vue +176 -0
  36. package/src/agent-flow/workflow/OutputItemCard.vue +668 -0
  37. package/src/agent-flow/workflow/ParamTableItem.vue +200 -0
  38. package/src/agent-flow/workflow/StructTable.vue +202 -0
  39. package/src/agent-flow/workflow/VarInsertField.vue +517 -0
  40. package/src/agent-flow/workflow/VarSelectField.vue +223 -0
  41. package/src/agent-flow/workflow/VariableSelectorItem.vue +48 -0
  42. package/src/agent-flow/workflow/WfField.vue +206 -0
  43. package/src/agent-flow/workflow/_config-base.css +470 -0
  44. package/src/agent-flow/workflow/composables/useNode.js +55 -0
  45. package/src/agent-flow/workflow/index.vue +53 -0
  46. package/src/agent-flow/workflow/nodeCard/AgentNodeCard.vue +180 -0
  47. package/src/agent-flow/workflow/nodeCard/AnswerNodeCard.vue +65 -0
  48. package/src/agent-flow/workflow/nodeCard/ClassifierCard.vue +152 -0
  49. package/src/agent-flow/workflow/nodeCard/CodeNodeCard.vue +139 -0
  50. package/src/agent-flow/workflow/nodeCard/ConditionNodeCard.vue +323 -0
  51. package/src/agent-flow/workflow/nodeCard/DocumentExtractorCard.vue +83 -0
  52. package/src/agent-flow/workflow/nodeCard/EndNodeCard.vue +123 -0
  53. package/src/agent-flow/workflow/nodeCard/HttpNodeCard.vue +451 -0
  54. package/src/agent-flow/workflow/nodeCard/HumanInputCard.vue +152 -0
  55. package/src/agent-flow/workflow/nodeCard/IterationCard.vue +66 -0
  56. package/src/agent-flow/workflow/nodeCard/KnowledgeRetrievalCard.vue +48 -0
  57. package/src/agent-flow/workflow/nodeCard/LLMNodeCard.vue +206 -0
  58. package/src/agent-flow/workflow/nodeCard/ListOperatorCard.vue +188 -0
  59. package/src/agent-flow/workflow/nodeCard/ParameterExtractorCard.vue +352 -0
  60. package/src/agent-flow/workflow/nodeCard/ServiceApiNodeCard.vue +188 -0
  61. package/src/agent-flow/workflow/nodeCard/StartNodeCard.vue +216 -0
  62. package/src/agent-flow/workflow/nodeCard/VariableAssignerCard.vue +125 -0
  63. package/src/agent-flow/workflow/nodeCard/VariableNodeCard.vue +121 -0
  64. package/src/agent-flow/workflow/nodes/AgentNode.vue +122 -0
  65. package/src/agent-flow/workflow/nodes/AnswerNode.vue +99 -0
  66. package/src/agent-flow/workflow/nodes/ClassifierNode.vue +199 -0
  67. package/src/agent-flow/workflow/nodes/CodeNode.vue +152 -0
  68. package/src/agent-flow/workflow/nodes/ConditionNode.vue +232 -0
  69. package/src/agent-flow/workflow/nodes/DocumentExtractorNode.vue +96 -0
  70. package/src/agent-flow/workflow/nodes/EndNode.vue +119 -0
  71. package/src/agent-flow/workflow/nodes/FileUploadNode.vue +97 -0
  72. package/src/agent-flow/workflow/nodes/HttpNode.vue +204 -0
  73. package/src/agent-flow/workflow/nodes/HumanInputNode.vue +110 -0
  74. package/src/agent-flow/workflow/nodes/IterationNode.vue +98 -0
  75. package/src/agent-flow/workflow/nodes/KnowledgeRetrievalNode.vue +253 -0
  76. package/src/agent-flow/workflow/nodes/LLMNode.vue +134 -0
  77. package/src/agent-flow/workflow/nodes/ListOperatorNode.vue +111 -0
  78. package/src/agent-flow/workflow/nodes/LoopNode.vue +94 -0
  79. package/src/agent-flow/workflow/nodes/ParameterExtractorNode.vue +147 -0
  80. package/src/agent-flow/workflow/nodes/ServiceApiNode.vue +161 -0
  81. package/src/agent-flow/workflow/nodes/StartNode.vue +199 -0
  82. package/src/agent-flow/workflow/nodes/TemplateNode.vue +103 -0
  83. package/src/agent-flow/workflow/nodes/UserInputNode.vue +92 -0
  84. package/src/agent-flow/workflow/nodes/VariableAssignerNode.vue +145 -0
  85. package/src/agent-flow/workflow/nodes/VariableNode.vue +130 -0
  86. package/src/agent-flow/workflow/nodes/_node-base.css +338 -0
  87. package/src/agent-flow/workflow/utils/node_card_form.ts +335 -0
  88. package/src/agent-flow/workflow/utils/node_config.ts +63 -0
  89. package/src/agent-flow/workflow/utils/workflow_utils.ts +151 -0
  90. package/src/agent-studio/adapters/springAgentStart.ts +390 -0
  91. package/src/agent-studio/api/index.ts +1 -0
  92. package/src/agent-studio/api/types.ts +173 -0
  93. package/src/agent-studio/components/AgentApiDocs.vue +500 -0
  94. package/src/agent-studio/components/AgentAppsPage.vue +1601 -0
  95. package/src/agent-studio/components/AgentCardGrid.vue +259 -0
  96. package/src/agent-studio/components/AgentChatPage.vue +553 -0
  97. package/src/agent-studio/components/AgentDebugPanel.vue +350 -0
  98. package/src/agent-studio/components/AgentLogsPanel.vue +391 -0
  99. package/src/agent-studio/components/AgentMonitorPanel.vue +204 -0
  100. package/src/agent-studio/components/AgentOrchestrate.vue +505 -0
  101. package/src/agent-studio/components/AgentPromptEditor.vue +237 -0
  102. package/src/agent-studio/components/AgentStudioShell.vue +227 -0
  103. package/src/agent-studio/components/AgentToolsPanel.vue +394 -0
  104. package/src/agent-studio/components/AgentVariablesPanel.vue +205 -0
  105. package/src/agent-studio/components/ApiKeyManager.vue +251 -0
  106. package/src/agent-studio/components/AppDesignDrawer.vue +3391 -0
  107. package/src/agent-studio/components/CreateAppModal.vue +737 -0
  108. package/src/agent-studio/components/SparkChart.vue +200 -0
  109. package/src/agent-studio/components/VariableEditorModal.vue +499 -0
  110. package/src/agent-studio/composables/useAgentStudio.ts +347 -0
  111. package/src/agent-studio/index.ts +60 -0
  112. package/src/agent-studio/panels/DrawerFlowDesigner.vue +203 -0
  113. package/src/agent-studio/panels/LogAnnotationPanel.vue +490 -0
  114. package/src/agent-studio/panels/MonitorPanel.vue +535 -0
  115. package/src/agent-studio/types.ts +242 -0
  116. package/src/index.ts +155 -0
  117. package/src/knowledge-hub/adapters/springAgentStart.ts +472 -0
  118. package/src/knowledge-hub/components/AddDocumentsWizard.vue +1452 -0
  119. package/src/knowledge-hub/components/CreateDatasetWizard.vue +1723 -0
  120. package/src/knowledge-hub/components/DatasetCardGrid.vue +467 -0
  121. package/src/knowledge-hub/components/DatasetDetailDrawer.vue +888 -0
  122. package/src/knowledge-hub/components/DatasetPicker.vue +65 -0
  123. package/src/knowledge-hub/components/DatasetPickerModal.vue +526 -0
  124. package/src/knowledge-hub/components/DatasetSettingsPanel.vue +908 -0
  125. package/src/knowledge-hub/components/DatasetSidebar.vue +781 -0
  126. package/src/knowledge-hub/components/DocumentChunksView.vue +802 -0
  127. package/src/knowledge-hub/components/DocumentTable.vue +552 -0
  128. package/src/knowledge-hub/components/HitTestingPanel.vue +74 -0
  129. package/src/knowledge-hub/components/KnowledgeApp.vue +66 -0
  130. package/src/knowledge-hub/components/KnowledgeHubApp.vue +504 -0
  131. package/src/knowledge-hub/components/RecallTestingPanelV2.vue +515 -0
  132. package/src/knowledge-hub/components/RetrievalConfigPopover.vue +270 -0
  133. package/src/knowledge-hub/components/RetrievalMethodPicker.vue +547 -0
  134. package/src/knowledge-hub/components/RetrievedList.vue +24 -0
  135. package/src/knowledge-hub/components/internal/KhDialog.vue +195 -0
  136. package/src/knowledge-hub/composables/useKnowledge.ts +89 -0
  137. package/src/knowledge-hub/i18n/index.ts +2 -0
  138. package/src/knowledge-hub/i18n/messages.ts +422 -0
  139. package/src/knowledge-hub/i18n/useKhI18n.ts +107 -0
  140. package/src/knowledge-hub/index.ts +46 -0
  141. package/src/knowledge-hub/styles/index.css +4 -0
  142. package/src/knowledge-hub/styles/tokens.css +138 -0
  143. package/src/knowledge-hub/types/api.ts +213 -0
  144. package/src/knowledge-hub/types/dataset.ts +88 -0
  145. package/src/knowledge-hub/types/document.ts +45 -0
  146. package/src/knowledge-hub/types/index.ts +9 -0
  147. package/src/knowledge-hub/types/retrieval.ts +46 -0
  148. package/src/provider-hub/components/CredentialForm.vue +103 -0
  149. package/src/provider-hub/components/DefaultModelsPanel.vue +270 -0
  150. package/src/provider-hub/components/GroupedModelSelect.vue +445 -0
  151. package/src/provider-hub/components/ModelCardGrid.vue +332 -0
  152. package/src/provider-hub/components/ModelParameterDrawer.vue +739 -0
  153. package/src/provider-hub/components/ModelPickerPopover.vue +1282 -0
  154. package/src/provider-hub/components/ProviderApp.vue +159 -0
  155. package/src/provider-hub/components/ProviderCredentialModal.vue +321 -0
  156. package/src/provider-hub/components/ProviderGallery.vue +131 -0
  157. package/src/provider-hub/components/ProviderHubShell.vue +1992 -0
  158. package/src/provider-hub/components/ProviderIcon.vue +130 -0
  159. package/src/provider-hub/composables/useProviderHub.ts +358 -0
  160. package/src/provider-hub/index.ts +43 -0
  161. package/src/provider-hub/svg/MiniMax.svg +1 -0
  162. package/src/provider-hub/svg/Volcengine.svg +1 -0
  163. package/src/provider-hub/svg/Zhipu.svg +1 -0
  164. package/src/provider-hub/svg/deepseek.svg +1 -0
  165. package/src/provider-hub/svg/moonshot.svg +1 -0
  166. package/src/provider-hub/svg/openai.svg +1 -0
  167. package/src/provider-hub/svg/qwen.svg +1 -0
  168. package/src/provider-hub/svg/siliconflow.svg +1 -0
  169. package/src/provider-hub/types.ts +256 -0
@@ -0,0 +1,259 @@
1
+ <script setup lang="ts">
2
+ /**
3
+ * AgentCardGrid — Dify-style card grid of agents. Card actions (chat, edit,
4
+ * share, delete) are emitted as events so the host owns the surface.
5
+ *
6
+ * Includes a "+ 新建" placeholder card that emits `create` — the host is
7
+ * expected to open a CreateAppModal.
8
+ */
9
+ import type { AgentEntity } from '../types';
10
+
11
+ interface Props {
12
+ agents: AgentEntity[];
13
+ /** Show the leading "+ 新建" placeholder card. Default true. */
14
+ showCreateCard?: boolean;
15
+ /** Disable clicking any card (e.g. when a required model isn't configured). */
16
+ disabledReason?: string;
17
+ }
18
+
19
+ const props = withDefaults(defineProps<Props>(), {
20
+ showCreateCard: true,
21
+ });
22
+
23
+ const emit = defineEmits<{
24
+ (e: 'create'): void;
25
+ (e: 'chat', a: AgentEntity): void;
26
+ (e: 'edit', a: AgentEntity): void;
27
+ (e: 'share', a: AgentEntity): void;
28
+ (e: 'delete', a: AgentEntity): void;
29
+ }>();
30
+
31
+ const ICONS = ['🤖', '💬', '🧠', '🎯', '🛠', '📊', '💡', '⚡', '🔎', '📎'];
32
+ const BGS = [
33
+ '#FEF3F2',
34
+ '#EEF4FF',
35
+ '#EFFDF4',
36
+ '#FFF4ED',
37
+ '#F0F9FF',
38
+ '#FEF6EE',
39
+ '#FDF2FA',
40
+ '#F0FDF9',
41
+ ];
42
+ function hashCode(s: string): number {
43
+ let h = 0;
44
+ for (let i = 0; i < s.length; i++) h = Math.trunc((h << 5) - h + s.charCodeAt(i));
45
+ return Math.abs(h);
46
+ }
47
+ function iconOf(a: AgentEntity) {
48
+ return ICONS[hashCode(a.id || a.name) % ICONS.length];
49
+ }
50
+ function bgOf(a: AgentEntity) {
51
+ return BGS[hashCode((a.id || a.name) + '.bg') % BGS.length];
52
+ }
53
+ function strategyLabel(s?: string): string {
54
+ if (s === 'REACT') return 'ReAct';
55
+ if (s === 'FUNCTION_CALLING') return 'Function Calling';
56
+ if (s === 'PLAN_EXECUTE') return 'Plan & Execute';
57
+ return s ?? '';
58
+ }
59
+ function fromNow(iso?: string): string {
60
+ if (!iso) return '';
61
+ const t = new Date(iso).getTime();
62
+ if (Number.isNaN(t)) return '';
63
+ const diff = (Date.now() - t) / 1000;
64
+ if (diff < 60) return '刚刚';
65
+ if (diff < 3600) return `${Math.floor(diff / 60)} 分钟前`;
66
+ if (diff < 86_400) return `${Math.floor(diff / 3600)} 小时前`;
67
+ if (diff < 86_400 * 30) return `${Math.floor(diff / 86_400)} 天前`;
68
+ return new Date(iso).toLocaleDateString();
69
+ }
70
+ </script>
71
+
72
+ <template>
73
+ <div class="as-grid">
74
+ <div
75
+ v-if="showCreateCard"
76
+ class="as-card as-card-new"
77
+ :class="{ 'as-card-disabled': !!disabledReason }"
78
+ :title="disabledReason"
79
+ @click="!disabledReason && emit('create')"
80
+ >
81
+ <div class="as-new-inner">
82
+ <div class="as-new-plus">+</div>
83
+ <div class="as-new-text">新建应用</div>
84
+ <div class="as-new-sub">选择类型 · 配置模型 · 直接对话</div>
85
+ </div>
86
+ </div>
87
+
88
+ <div
89
+ v-for="a in agents"
90
+ :key="a.id"
91
+ class="as-card"
92
+ @click="emit('chat', a)"
93
+ >
94
+ <div class="as-header">
95
+ <div class="as-icon" :style="{ background: bgOf(a) }">{{ iconOf(a) }}</div>
96
+ <div class="as-title-wrap">
97
+ <div class="as-title" :title="a.name">{{ a.name }}</div>
98
+ <div class="as-meta">
99
+ <span class="as-strategy">{{ strategyLabel(a.strategy) }}</span>
100
+ <span>· {{ fromNow(a.updatedAt) || '刚刚' }}</span>
101
+ </div>
102
+ </div>
103
+ </div>
104
+
105
+ <div class="as-desc" :title="a.instructions || ''">
106
+ {{ a.instructions || '暂无 Instructions' }}
107
+ </div>
108
+
109
+ <div class="as-spacer" />
110
+
111
+ <div class="as-footer">
112
+ <button class="as-action" @click.stop="emit('edit', a)">编辑</button>
113
+ <button class="as-action" @click.stop="emit('share', a)">分享</button>
114
+ <button class="as-action as-action-danger" @click.stop="emit('delete', a)">
115
+ 删除
116
+ </button>
117
+ </div>
118
+ </div>
119
+ </div>
120
+ </template>
121
+
122
+ <style scoped>
123
+ .as-grid {
124
+ display: grid;
125
+ grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
126
+ gap: 16px;
127
+ }
128
+ .as-card {
129
+ position: relative;
130
+ height: 200px;
131
+ padding: 14px 16px 12px;
132
+ background: #fff;
133
+ border: 1px solid #e5e7eb;
134
+ border-radius: 12px;
135
+ cursor: pointer;
136
+ transition:
137
+ box-shadow 0.15s ease,
138
+ transform 0.15s ease;
139
+ display: flex;
140
+ flex-direction: column;
141
+ overflow: hidden;
142
+ }
143
+ .as-card:hover {
144
+ box-shadow: 0 4px 14px rgba(0, 0, 0, 0.08);
145
+ transform: translateY(-1px);
146
+ }
147
+ .as-card-new {
148
+ border: 1.5px dashed #c7d2fe;
149
+ background: linear-gradient(135deg, #f5f9ff 0%, #f0f5ff 100%);
150
+ }
151
+ .as-card-new:hover {
152
+ border-color: #6366f1;
153
+ background: linear-gradient(135deg, #eef2ff 0%, #e0e7ff 100%);
154
+ }
155
+ .as-card-disabled {
156
+ opacity: 0.6;
157
+ cursor: not-allowed;
158
+ }
159
+ .as-new-inner {
160
+ margin: auto 0;
161
+ text-align: center;
162
+ color: #6366f1;
163
+ }
164
+ .as-new-plus {
165
+ font-size: 42px;
166
+ line-height: 1;
167
+ font-weight: 200;
168
+ }
169
+ .as-new-text {
170
+ margin-top: 6px;
171
+ font-size: 15px;
172
+ font-weight: 500;
173
+ }
174
+ .as-new-sub {
175
+ margin-top: 4px;
176
+ font-size: 12px;
177
+ color: #94a3b8;
178
+ }
179
+ .as-header {
180
+ display: flex;
181
+ gap: 12px;
182
+ align-items: flex-start;
183
+ }
184
+ .as-icon {
185
+ width: 40px;
186
+ height: 40px;
187
+ display: flex;
188
+ align-items: center;
189
+ justify-content: center;
190
+ border-radius: 8px;
191
+ font-size: 22px;
192
+ flex-shrink: 0;
193
+ }
194
+ .as-title-wrap {
195
+ min-width: 0;
196
+ flex: 1;
197
+ }
198
+ .as-title {
199
+ font-size: 15px;
200
+ font-weight: 600;
201
+ color: #111827;
202
+ white-space: nowrap;
203
+ overflow: hidden;
204
+ text-overflow: ellipsis;
205
+ }
206
+ .as-meta {
207
+ margin-top: 4px;
208
+ font-size: 12px;
209
+ color: #6b7280;
210
+ display: flex;
211
+ align-items: center;
212
+ gap: 4px;
213
+ }
214
+ .as-strategy {
215
+ padding: 1px 6px;
216
+ border-radius: 4px;
217
+ background: #eef2ff;
218
+ color: #4338ca;
219
+ }
220
+ .as-desc {
221
+ margin-top: 10px;
222
+ font-size: 13px;
223
+ color: #6b7280;
224
+ line-height: 1.5;
225
+ display: -webkit-box;
226
+ -webkit-line-clamp: 2;
227
+ -webkit-box-orient: vertical;
228
+ overflow: hidden;
229
+ }
230
+ .as-spacer {
231
+ flex: 1;
232
+ }
233
+ .as-footer {
234
+ display: flex;
235
+ align-items: center;
236
+ gap: 4px;
237
+ justify-content: flex-end;
238
+ border-top: 1px solid #f3f4f6;
239
+ padding-top: 8px;
240
+ }
241
+ .as-action {
242
+ padding: 2px 8px;
243
+ font-size: 12px;
244
+ border: none;
245
+ border-radius: 4px;
246
+ background: transparent;
247
+ color: #4338ca;
248
+ cursor: pointer;
249
+ }
250
+ .as-action:hover {
251
+ background: #eef2ff;
252
+ }
253
+ .as-action-danger {
254
+ color: #dc2626;
255
+ }
256
+ .as-action-danger:hover {
257
+ background: #fef2f2;
258
+ }
259
+ </style>