yc-component 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 (80) hide show
  1. package/README.en.md +36 -0
  2. package/README.md +216 -0
  3. package/dist/_virtual/_plugin-vue_export-helper.js +9 -0
  4. package/dist/ai-task/api/http.d.ts +6 -0
  5. package/dist/ai-task/api/http.d.ts.map +1 -0
  6. package/dist/ai-task/api/http.js +40 -0
  7. package/dist/ai-task/api/prompt.d.ts +11 -0
  8. package/dist/ai-task/api/prompt.d.ts.map +1 -0
  9. package/dist/ai-task/api/prompt.js +9 -0
  10. package/dist/ai-task/api/workflow.d.ts +51 -0
  11. package/dist/ai-task/api/workflow.d.ts.map +1 -0
  12. package/dist/ai-task/api/workflow.js +15 -0
  13. package/dist/ai-task/components/AiTaskPanel.css +1 -0
  14. package/dist/ai-task/components/AiTaskPanel.d.ts +4 -0
  15. package/dist/ai-task/components/AiTaskPanel.d.ts.map +1 -0
  16. package/dist/ai-task/components/AiTaskPanel.vue.js +7 -0
  17. package/dist/ai-task/components/AiTaskPanel.vue2.js +251 -0
  18. package/dist/ai-task/components/AiTaskProvider.d.ts +26 -0
  19. package/dist/ai-task/components/AiTaskProvider.d.ts.map +1 -0
  20. package/dist/ai-task/components/AiTaskProvider.vue.js +60 -0
  21. package/dist/ai-task/components/AiTaskProvider.vue2.js +4 -0
  22. package/dist/ai-task/components/AiUseDialog.css +1 -0
  23. package/dist/ai-task/components/AiUseDialog.d.ts +22 -0
  24. package/dist/ai-task/components/AiUseDialog.d.ts.map +1 -0
  25. package/dist/ai-task/components/AiUseDialog.vue.js +7 -0
  26. package/dist/ai-task/components/AiUseDialog.vue2.js +224 -0
  27. package/dist/ai-task/composables/useAiTask.d.ts +62 -0
  28. package/dist/ai-task/composables/useAiTask.d.ts.map +1 -0
  29. package/dist/ai-task/composables/useAiTask.js +11 -0
  30. package/dist/ai-task/config.d.ts +23 -0
  31. package/dist/ai-task/config.d.ts.map +1 -0
  32. package/dist/ai-task/config.js +23 -0
  33. package/dist/ai-task/context.d.ts +59 -0
  34. package/dist/ai-task/context.d.ts.map +1 -0
  35. package/dist/ai-task/context.js +42 -0
  36. package/dist/ai-task/dialog-state.d.ts +28 -0
  37. package/dist/ai-task/dialog-state.d.ts.map +1 -0
  38. package/dist/ai-task/dialog-state.js +28 -0
  39. package/dist/ai-task/index.d.ts +15 -0
  40. package/dist/ai-task/index.d.ts.map +1 -0
  41. package/dist/ai-task/index.js +24 -0
  42. package/dist/ai-task/inject.d.ts +307 -0
  43. package/dist/ai-task/inject.d.ts.map +1 -0
  44. package/dist/ai-task/inject.js +10 -0
  45. package/dist/ai-task/services/taskRunner.d.ts +11 -0
  46. package/dist/ai-task/services/taskRunner.d.ts.map +1 -0
  47. package/dist/ai-task/services/taskRunner.js +60 -0
  48. package/dist/ai-task/store/useAiTaskStore.d.ts +255 -0
  49. package/dist/ai-task/store/useAiTaskStore.d.ts.map +1 -0
  50. package/dist/ai-task/store/useAiTaskStore.js +230 -0
  51. package/dist/ai-task/style.css +3 -0
  52. package/dist/ai-task/types/index.d.ts +105 -0
  53. package/dist/ai-task/types/index.d.ts.map +1 -0
  54. package/dist/ai-task/useScopedStore.d.ts +255 -0
  55. package/dist/ai-task/useScopedStore.d.ts.map +1 -0
  56. package/dist/ai-task/useScopedStore.js +10 -0
  57. package/dist/ai-task/utils/runClientScript.d.ts +5 -0
  58. package/dist/ai-task/utils/runClientScript.d.ts.map +1 -0
  59. package/dist/ai-task/utils/runClientScript.js +26 -0
  60. package/dist/ai-task/utils/storage.d.ts +20 -0
  61. package/dist/ai-task/utils/storage.d.ts.map +1 -0
  62. package/dist/ai-task/utils/storage.js +45 -0
  63. package/dist/index.d.ts +6 -0
  64. package/dist/index.d.ts.map +1 -0
  65. package/dist/index.js +31 -0
  66. package/dist/page-window/YcPageWindow.css +1 -0
  67. package/dist/page-window/YcPageWindow.d.ts +58 -0
  68. package/dist/page-window/YcPageWindow.d.ts.map +1 -0
  69. package/dist/page-window/YcPageWindow.vue.js +7 -0
  70. package/dist/page-window/YcPageWindow.vue2.js +230 -0
  71. package/dist/page-window/index.d.ts +5 -0
  72. package/dist/page-window/index.d.ts.map +1 -0
  73. package/dist/page-window/index.js +5 -0
  74. package/dist/page-window/style.css +1 -0
  75. package/dist/page-window/types.d.ts +32 -0
  76. package/dist/page-window/types.d.ts.map +1 -0
  77. package/dist/plugin.d.ts +14 -0
  78. package/dist/plugin.d.ts.map +1 -0
  79. package/dist/plugin.js +19 -0
  80. package/package.json +84 -0
package/README.en.md ADDED
@@ -0,0 +1,36 @@
1
+ # yc-component
2
+
3
+ #### Description
4
+ {**When you're done, you can delete the content in this README and update the file with details for others getting started with your repository**}
5
+
6
+ #### Software Architecture
7
+ Software architecture description
8
+
9
+ #### Installation
10
+
11
+ 1. xxxx
12
+ 2. xxxx
13
+ 3. xxxx
14
+
15
+ #### Instructions
16
+
17
+ 1. xxxx
18
+ 2. xxxx
19
+ 3. xxxx
20
+
21
+ #### Contribution
22
+
23
+ 1. Fork the repository
24
+ 2. Create Feat_xxx branch
25
+ 3. Commit your code
26
+ 4. Create Pull Request
27
+
28
+
29
+ #### Gitee Feature
30
+
31
+ 1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md
32
+ 2. Gitee blog [blog.gitee.com](https://blog.gitee.com)
33
+ 3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore)
34
+ 4. The most valuable open source project [GVP](https://gitee.com/gvp)
35
+ 5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help)
36
+ 6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
package/README.md ADDED
@@ -0,0 +1,216 @@
1
+ # yc-component
2
+
3
+ 天幕低代码 Vue 3 组件库,基于 Element Plus + Pinia。
4
+
5
+ 仓库:[https://gitee.com/dai_xiang_tian/yc-component](https://gitee.com/dai_xiang_tian/yc-component)
6
+
7
+ ## 安装
8
+
9
+ ```bash
10
+ npm install yc-component
11
+ ```
12
+
13
+ 本地开发可 `npm install file:../yc-component` 或 link。
14
+
15
+ **Peer 依赖**(需自行安装,不会打进包内):`vue`、`pinia`、`element-plus`、`@element-plus/icons-vue`、`axios`
16
+
17
+ ## 按需导入(推荐,轻量)
18
+
19
+ 发布产物为 **ES Module + preserveModules**,未使用的模块不会打进业务包。
20
+
21
+ ```typescript
22
+ // 仅 AI 任务
23
+ import { YcAiTaskProvider, useAiTask } from 'yc-component/ai-task'
24
+ import 'yc-component/ai-task/style.css'
25
+
26
+ // 仅 PageWindow
27
+ import { YcPageWindow } from 'yc-component/page-window'
28
+ import 'yc-component/page-window/style.css'
29
+
30
+ // 仅安装配置
31
+ import { installYcComponent } from 'yc-component/plugin'
32
+ ```
33
+
34
+ 也可从主入口全量导入(兼容旧写法,Tree-shaking 依赖打包工具):
35
+
36
+ ```typescript
37
+ import { YcAiTaskProvider, YcPageWindow, installYcComponent } from 'yc-component'
38
+ ```
39
+
40
+ ## 发布到 npm
41
+
42
+ ```bash
43
+ cd yc-component
44
+ npm run build # 输出 dist/(仅发布 dist,不含 src)
45
+ npm pack # 本地预览包内容
46
+ npm login # 首次需登录 npm
47
+ npm publish # prepublishOnly 会自动 build
48
+ ```
49
+
50
+ `files` 字段仅包含 `dist`、`README.md`,体积约 **~50KB**(gzip 后更小),依赖均为 peerDependencies。
51
+
52
+ ## 快速开始(sky-ai / 任意 Vue3 项目)
53
+
54
+ ```typescript
55
+ // main.ts —— 最简接入,无需 Token / 白名单判断
56
+ import { createApp } from 'vue'
57
+ import { createPinia } from 'pinia'
58
+ import ElementPlus from 'element-plus'
59
+ import 'element-plus/dist/index.css'
60
+ import { installYcComponent } from 'yc-component'
61
+ import App from './App.vue'
62
+
63
+ const app = createApp(App)
64
+ app.use(createPinia())
65
+ app.use(ElementPlus)
66
+ installYcComponent({
67
+ aiTask: {
68
+ projectId: 'default-project',
69
+ storageKey: 'my-ai-task-queue',
70
+ },
71
+ })
72
+ app.mount('#app')
73
+ ```
74
+
75
+ 鉴权由 **yc_ai_service** 处理:请求会带上浏览器 `Origin`,后端按「域名白名单」决定是否允许无 Token 调用提示词/工作流。在 sky-ai 控制台可配置白名单。
76
+
77
+ 管理端(需登录访问全部 API)可额外传入 `getToken` / `onUnauthorized`:
78
+
79
+ ```typescript
80
+ installYcComponent({
81
+ aiTask: {
82
+ projectId: 'default-project',
83
+ getToken: () => localStorage.getItem('admin_token'),
84
+ onUnauthorized: () => router.push('/login'),
85
+ },
86
+ })
87
+ ```
88
+
89
+ ```vue
90
+ <!-- App.vue -->
91
+ <template>
92
+ <router-view />
93
+ <YcAiTaskProvider
94
+ title="AI 项目 JSON 生成"
95
+ :prompt-id="1"
96
+ :auto-match="false"
97
+ :free-text="'生成一个登录页…'"
98
+ @finish="onAiFinish"
99
+ />
100
+ </template>
101
+
102
+ <script setup lang="ts">
103
+ import { YcAiTaskProvider, type AiTaskFinishPayload } from 'yc-component'
104
+
105
+ function onAiFinish(data: AiTaskFinishPayload) {
106
+ console.log('任务完成', data.runId, data.result)
107
+ }
108
+ </script>
109
+ ```
110
+
111
+ ## AI 任务组件 API
112
+
113
+ ### 挂载 Provider
114
+
115
+ 全局挂载一次 `YcAiTaskProvider`(或 `AiTaskProvider`),包含弹窗 + 任务面板。
116
+
117
+ **重要**:`useAiTask()` 必须在 Provider 的**子组件**内调用(可用默认插槽包裹页面),否则无法打开弹窗。
118
+
119
+ **弹窗 Props(Provider / AiUseDialog 均支持)**
120
+
121
+ | Prop | 说明 | 默认 |
122
+ |------|------|------|
123
+ | `title` | 弹窗标题 | `AI 生成` |
124
+ | `freeText` | 默认需求描述 | `''` |
125
+ | `promptId` | 默认选中提示词 ID | - |
126
+ | `autoMatch` | 默认开启自动匹配提示词 | `false` |
127
+ | `prompts` | 提示词列表(传入后不请求接口) | - |
128
+ | `showAutoMatch` | 是否显示自动匹配开关 | `true` |
129
+ | `autoMatchLabel` | 自动匹配区域标签 | `自动匹配提示词` |
130
+ | `promptLabel` | 提示词字段标签 | `提示词` |
131
+ | `freeTextLabel` | 需求描述标签 | `需求描述` |
132
+ | `freeTextPlaceholder` | 需求描述占位符 | - |
133
+ | `submitText` | 提交按钮文案 | `提交任务(后台异步)` |
134
+ | `width` | 弹窗宽度 | `520px` |
135
+ | `v-model` / `modelValue` | 受控显示(单独用 AiUseDialog 时) | store 模式 |
136
+
137
+ `openUseDialog({ title, promptId, autoMatch, ... })` 会在**本次打开**时覆盖上述 Props。
138
+
139
+ | 事件 | 说明 |
140
+ |------|------|
141
+ | `@finish` | 任务成功完成,`data.result` 为工作流产物 |
142
+
143
+ ### composable
144
+
145
+ ```typescript
146
+ import { useAiTask } from 'yc-component'
147
+
148
+ const ai = useAiTask()
149
+
150
+ // 打开弹窗
151
+ ai.openUseDialog({
152
+ title: 'AI 项目 JSON 生成',
153
+ freeText: '生成登录页…',
154
+ onFinish: (data) => { /* ... */ },
155
+ })
156
+
157
+ // 直接提交
158
+ ai.submitTask({
159
+ freeText: '生成登录页…',
160
+ promptId: 1,
161
+ onFinish: (data) => { /* ... */ },
162
+ })
163
+
164
+ ai.openTaskPanel()
165
+ ai.onTaskFinish((data) => { /* 全局监听 */ })
166
+ ```
167
+
168
+ ### 配置项 `YcAiTaskConfig`
169
+
170
+ | 字段 | 说明 | 默认 |
171
+ |------|------|------|
172
+ | `projectId` | 工作流 projectId | `default-project` |
173
+ | `storageKey` | localStorage 键 | `yc-ai-task-queue-v1` |
174
+ | `baseURL` | API 根路径 | 空(相对路径) |
175
+ | `getToken` | 可选,Bearer Token | 不传(由后端白名单鉴权) |
176
+ | `onUnauthorized` | 401 回调 | - |
177
+ | `listPrompts` | 自定义提示词加载 | GET `/yc-ai/ai/prompts` |
178
+
179
+ ## 本地演示(推荐先体验)
180
+
181
+ ```bash
182
+ npm install
183
+ npm run demo
184
+ ```
185
+
186
+ 浏览器打开 **http://localhost:5180**:
187
+
188
+ - 默认 **Mock API**,无需启动后端,约 5 秒模拟任务完成
189
+ - 可测试:弹窗提交、任务面板、刷新恢复、`@finish` 回调
190
+
191
+ 连接真实 `yc_ai_service`:
192
+
193
+ ```bash
194
+ npm run demo:real
195
+ ```
196
+
197
+ 需保证 `http://localhost:8083` 可访问。
198
+
199
+ ## 开发
200
+
201
+ ```bash
202
+ npm run build # 输出 dist/
203
+ npm run dev # watch 模式构建
204
+ ```
205
+
206
+ ## 组件列表
207
+
208
+ | 组件 | 说明 |
209
+ |------|------|
210
+ | `YcAiTaskProvider` | 弹窗 + 任务面板(推荐全局挂载) |
211
+ | `YcAiUseDialog` | 仅弹窗 |
212
+ | `YcAiTaskPanel` | 仅任务列表面板 |
213
+
214
+ ## License
215
+
216
+ MIT
@@ -0,0 +1,9 @@
1
+ const s = (t, e) => {
2
+ const o = t.__vccOpts || t;
3
+ for (const [r, c] of e)
4
+ o[r] = c;
5
+ return o;
6
+ };
7
+ export {
8
+ s as default
9
+ };
@@ -0,0 +1,6 @@
1
+ import { AxiosInstance } from 'axios';
2
+ export declare function resetHttpClient(): void;
3
+ export declare function getHttpClient(): AxiosInstance;
4
+ /** 拉取 artifact 原始 JSON(不走统一 code 包装) */
5
+ export declare function fetchArtifactJson(runId: number, artifactId: number): Promise<unknown>;
6
+ //# sourceMappingURL=http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/ai-task/api/http.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAA;AAKjD,wBAAgB,eAAe,SAE9B;AAED,wBAAgB,aAAa,IAAI,aAAa,CAsC7C;AAED,wCAAwC;AACxC,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAO3F"}
@@ -0,0 +1,40 @@
1
+ import u from "axios";
2
+ import { getAiTaskConfig as p } from "../config.js";
3
+ let s = null;
4
+ function m() {
5
+ s = null;
6
+ }
7
+ function d() {
8
+ if (s) return s;
9
+ const { baseURL: a, getToken: n, onUnauthorized: r } = p();
10
+ return s = u.create({
11
+ baseURL: a ?? "",
12
+ timeout: 6e4,
13
+ headers: { "Content-Type": "application/json" }
14
+ }), s.interceptors.request.use((e) => {
15
+ const t = n == null ? void 0 : n();
16
+ return t && (e.headers.Authorization = `Bearer ${t}`), e;
17
+ }), s.interceptors.response.use(
18
+ (e) => {
19
+ const t = e.data;
20
+ return (t == null ? void 0 : t.code) != null && t.code !== 200 ? Promise.reject(new Error(t.message || "请求失败")) : (e.data = (t == null ? void 0 : t.data) ?? t, e);
21
+ },
22
+ (e) => {
23
+ var o, i, c;
24
+ ((o = e.response) == null ? void 0 : o.status) === 401 && (r == null || r());
25
+ const t = (c = (i = e.response) == null ? void 0 : i.data) == null ? void 0 : c.message;
26
+ return Promise.reject(new Error(t || e.message || "请求失败"));
27
+ }
28
+ ), s;
29
+ }
30
+ async function h(a, n) {
31
+ const { getToken: r } = p(), e = r == null ? void 0 : r();
32
+ return (await u.get(`/yc-ai/workflows/runs/${a}/artifacts/${n}`, {
33
+ headers: e ? { Authorization: `Bearer ${e}` } : {}
34
+ })).data;
35
+ }
36
+ export {
37
+ h as fetchArtifactJson,
38
+ d as getHttpClient,
39
+ m as resetHttpClient
40
+ };
@@ -0,0 +1,11 @@
1
+ export interface Prompt {
2
+ id: number;
3
+ name: string;
4
+ content: string;
5
+ category?: string;
6
+ agentKey?: string;
7
+ workflowDefinitionKey?: string;
8
+ sortOrder?: number;
9
+ }
10
+ export declare function listPrompts(category?: string): Promise<Prompt[]>;
11
+ //# sourceMappingURL=prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../../src/ai-task/api/prompt.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAsB,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAMtE"}
@@ -0,0 +1,9 @@
1
+ import { getHttpClient as p } from "./http.js";
2
+ async function i(t) {
3
+ return (await p().get("/yc-ai/ai/prompts", {
4
+ params: t ? { category: t } : {}
5
+ })).data;
6
+ }
7
+ export {
8
+ i as listPrompts
9
+ };
@@ -0,0 +1,51 @@
1
+ import { AxiosResponse } from 'axios';
2
+ export interface WorkflowRunSummary {
3
+ id: number;
4
+ definitionKey: string;
5
+ projectId: string;
6
+ pageUnique?: string;
7
+ status: string;
8
+ currentStepKey?: string;
9
+ errorMessage?: string;
10
+ finalArtifactId?: number;
11
+ createdAt?: string;
12
+ finishedAt?: string;
13
+ }
14
+ export interface WorkflowStepLog {
15
+ id: number;
16
+ stepKey: string;
17
+ stepOrder: number;
18
+ status: string;
19
+ outputArtifactId?: number;
20
+ errorMessage?: string;
21
+ startedAt?: string;
22
+ finishedAt?: string;
23
+ durationMs?: number;
24
+ }
25
+ export interface WorkflowRunDetail extends WorkflowRunSummary {
26
+ steps: WorkflowStepLog[];
27
+ waitingClientScript?: string;
28
+ waitingStepKey?: string;
29
+ waitingArtifactId?: number;
30
+ }
31
+ export interface StartWorkflowRunParams {
32
+ projectId: string;
33
+ definitionKey?: string;
34
+ promptId?: number;
35
+ freeText?: string;
36
+ requirement?: Record<string, unknown>;
37
+ autoMatch?: boolean;
38
+ }
39
+ export declare const startWorkflowRun: (params: StartWorkflowRunParams) => Promise<{
40
+ runId: number;
41
+ pageUnique: string;
42
+ status: string;
43
+ }>;
44
+ export declare const getWorkflowRun: (runId: number) => Promise<WorkflowRunDetail>;
45
+ export declare const cancelWorkflowRun: (runId: number) => Promise< AxiosResponse<any, any, {}>>;
46
+ export declare const continueClientScript: (runId: number, body: {
47
+ stepKey: string;
48
+ output: Record<string, unknown>;
49
+ }) => Promise< AxiosResponse<any, any, {}>>;
50
+ export declare function getWorkflowArtifact(runId: number, artifactId: number): Promise<unknown>;
51
+ //# sourceMappingURL=workflow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../../src/ai-task/api/workflow.ts"],"names":[],"mappings":";AAEA,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAA;IACV,aAAa,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,iBAAkB,SAAQ,kBAAkB;IAC3D,KAAK,EAAE,eAAe,EAAE,CAAA;IACxB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACrC,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,eAAO,MAAM,gBAAgB,GAAU,QAAQ,sBAAsB;WACnB,MAAM;gBAAc,MAAM;YAAU,MAAM;EAK3F,CAAA;AAED,eAAO,MAAM,cAAc,GAAU,OAAO,MAAM,+BAGjD,CAAA;AAED,eAAO,MAAM,iBAAiB,GAAI,OAAO,MAAM,yDACgB,CAAA;AAE/D,eAAO,MAAM,oBAAoB,GAC/B,OAAO,MAAM,EACb,MAAM;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,yDACqB,CAAA;AAEjF,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,oBAE1E"}
@@ -0,0 +1,15 @@
1
+ import { getHttpClient as n, fetchArtifactJson as r } from "./http.js";
2
+ const c = async (t) => (await n().post(
3
+ "/yc-ai/workflows/runs",
4
+ t
5
+ )).data, a = async (t) => (await n().get(`/yc-ai/workflows/runs/${t}`)).data, e = (t) => n().post(`/yc-ai/workflows/runs/${t}/cancel`), i = (t, o) => n().post(`/yc-ai/workflows/runs/${t}/client-continue`, o);
6
+ async function w(t, o) {
7
+ return r(t, o);
8
+ }
9
+ export {
10
+ e as cancelWorkflowRun,
11
+ i as continueClientScript,
12
+ w as getWorkflowArtifact,
13
+ a as getWorkflowRun,
14
+ c as startWorkflowRun
15
+ };
@@ -0,0 +1 @@
1
+ .ai-task-panel[data-v-6f781fbd]{position:fixed;right:24px;bottom:24px;width:420px;max-height:min(520px,100vh - 48px);display:flex;flex-direction:column;background:var(--el-bg-color);border-radius:12px;box-shadow:0 8px 32px #0000001f;border:1px solid var(--el-border-color-lighter);z-index:3000;overflow:hidden}.ai-task-panel__header[data-v-6f781fbd]{display:flex;align-items:flex-start;justify-content:space-between;padding:16px 16px 12px;border-bottom:1px solid var(--el-border-color-extra-light)}.ai-task-panel__header-left[data-v-6f781fbd]{display:flex;gap:12px;align-items:center;min-width:0}.ai-task-panel__icon[data-v-6f781fbd]{width:44px;height:44px;border-radius:50%;background:var(--el-color-primary-light-9);color:var(--el-color-primary);display:flex;align-items:center;justify-content:center;font-size:22px;flex-shrink:0}.ai-task-panel__subtitle[data-v-6f781fbd]{font-size:12px;color:var(--el-text-color-secondary)}.ai-task-panel__title[data-v-6f781fbd]{font-size:18px;font-weight:700;color:var(--el-text-color-primary);line-height:1.3}.ai-task-panel__header-actions[data-v-6f781fbd]{display:flex;align-items:center;gap:4px;flex-shrink:0}.ai-task-panel__body[data-v-6f781fbd]{flex:1;overflow:auto;padding:8px 0}.ai-task-list[data-v-6f781fbd]{display:flex;flex-direction:column}.ai-task-row[data-v-6f781fbd]{display:flex;align-items:flex-start;gap:12px;padding:12px 16px;border-bottom:1px solid var(--el-border-color-extra-light)}.ai-task-row[data-v-6f781fbd]:last-child{border-bottom:none}.ai-task-row__icon[data-v-6f781fbd]{width:40px;flex-shrink:0;display:flex;align-items:center;justify-content:center}.ai-task-row__icon .ok[data-v-6f781fbd]{color:var(--el-color-success);font-size:28px}.ai-task-row__icon .err[data-v-6f781fbd]{color:var(--el-color-danger);font-size:28px}.ai-task-row__icon .muted[data-v-6f781fbd]{color:var(--el-text-color-secondary);font-size:24px}.ai-task-row__main[data-v-6f781fbd]{flex:1;min-width:0}.ai-task-row__title[data-v-6f781fbd]{font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ai-task-row__meta[data-v-6f781fbd]{font-size:12px;color:var(--el-text-color-secondary);margin-top:2px}.ai-task-row__summary[data-v-6f781fbd]{font-size:12px;color:var(--el-text-color-regular);margin-top:4px;line-height:1.4}.ai-task-row__ops[data-v-6f781fbd]{flex-shrink:0;display:flex;flex-direction:column;align-items:flex-end;gap:2px}.ai-task-panel__footer[data-v-6f781fbd]{padding:8px 16px;border-top:1px solid var(--el-border-color-extra-light);text-align:center}.ai-task-panel-mini[data-v-6f781fbd]{position:fixed;right:24px;bottom:24px;z-index:3000;display:flex;align-items:center;gap:8px;padding:10px 16px;background:var(--el-bg-color);border-radius:24px;box-shadow:0 4px 16px #0000001f;border:1px solid var(--el-border-color-lighter);cursor:pointer;font-size:13px;color:var(--el-text-color-primary)}.ai-task-panel-mini[data-v-6f781fbd]:hover{border-color:var(--el-color-primary-light-5)}.spinning[data-v-6f781fbd]{animation:ai-spin-6f781fbd 1.2s linear infinite}@keyframes ai-spin-6f781fbd{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.ai-panel-slide-enter-active[data-v-6f781fbd],.ai-panel-slide-leave-active[data-v-6f781fbd]{transition:all .25s ease}.ai-panel-slide-enter-from[data-v-6f781fbd],.ai-panel-slide-leave-to[data-v-6f781fbd]{opacity:0;transform:translateY(16px)}.result-pre[data-v-6f781fbd]{margin:0;max-height:420px;overflow:auto;font-size:12px;line-height:1.5;background:var(--el-fill-color-light);padding:12px;border-radius:8px;white-space:pre-wrap;word-break:break-all}.m-l-8[data-v-6f781fbd]{margin-left:8px}
@@ -0,0 +1,4 @@
1
+ import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
2
+ declare const _default: DefineComponent<{}, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
3
+ export default _default;
4
+ //# sourceMappingURL=AiTaskPanel.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AiTaskPanel.vue.d.ts","sourceRoot":"","sources":["../../../src/ai-task/components/AiTaskPanel.vue"],"names":[],"mappings":";AAyGA;;AA07BA,wBAMG"}
@@ -0,0 +1,7 @@
1
+ import o from "./AiTaskPanel.vue2.js";
2
+ /* empty css */
3
+ import t from "../../_virtual/_plugin-vue_export-helper.js";
4
+ const m = /* @__PURE__ */ t(o, [["__scopeId", "data-v-6f781fbd"]]);
5
+ export {
6
+ m as default
7
+ };