@shenghuabi/workflow 1.0.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.
- package/index.d.ts +14 -0
- package/index.js +2078 -0
- package/index.js.map +7 -0
- package/index.mjs +2035 -0
- package/index.mjs.map +7 -0
- package/inline/inline.service.d.ts +8 -0
- package/inline/node/chat/chat.node.define.d.ts +185 -0
- package/inline/node/chat/common.d.ts +2 -0
- package/inline/node/chat/main/index.d.ts +209 -0
- package/inline/node/chat/main/llm.runner.d.ts +41 -0
- package/inline/node/chat/util.d.ts +8 -0
- package/inline/node/chat/webview/index.d.ts +2 -0
- package/inline/node/index.browser.d.ts +2 -0
- package/inline/node/index.node.d.ts +2 -0
- package/inline/node/text/common.d.ts +2 -0
- package/inline/node/text/main/index.d.ts +30 -0
- package/inline/node/text/main/textarea.runner.d.ts +7 -0
- package/inline/node/text/text.node.define.d.ts +6 -0
- package/inline/node/text/webview/index.d.ts +2 -0
- package/module.d.ts +23 -0
- package/package.json +52 -0
- package/plugin/plugin.service.d.ts +7 -0
- package/preset/context-build.service.d.ts +102 -0
- package/preset/inline-build.service.d.ts +11 -0
- package/preset/inline-runner.service.d.ts +16 -0
- package/runner/define.d.ts +12 -0
- package/runner/inline-input-item.runner.d.ts +8 -0
- package/runner/input-params.runner.d.ts +7 -0
- package/runner/iteration-start.runner.d.ts +7 -0
- package/runner/iteration.runner.d.ts +7 -0
- package/runner/parameters.runner.d.ts +10 -0
- package/runner/runner-error.d.ts +12 -0
- package/runner/runner-item.d.ts +35 -0
- package/runner/workflow-runner.service.d.ts +35 -0
- package/share/common/const.d.ts +2 -0
- package/share/common/define.d.ts +71 -0
- package/share/common/examples.define.d.ts +53 -0
- package/share/common/handle.define.d.ts +5 -0
- package/share/common/index.d.ts +5 -0
- package/share/common/inline-template.define.d.ts +15 -0
- package/share/common/llm.define.d.ts +29 -0
- package/share/const.d.ts +5 -0
- package/share/handle-node.d.ts +60 -0
- package/share/index.d.ts +8 -0
- package/share/index.js +336 -0
- package/share/index.js.map +7 -0
- package/share/index.mjs +296 -0
- package/share/index.mjs.map +7 -0
- package/share/type.d.ts +89 -0
- package/share/type2.d.ts +132 -0
- package/share/util/layout.d.ts +2 -0
- package/share/util.d.ts +5 -0
- package/share/workflow.const.d.ts +8 -0
- package/share/workflow.emit.d.ts +9 -0
- package/template-format.service.d.ts +29 -0
- package/test/chat.spec.d.ts +1 -0
- package/test/file.spec.d.ts +1 -0
- package/test/hello.spec.d.ts +1 -0
- package/test/plugin.spec.d.ts +1 -0
- package/token.d.ts +68 -0
- package/type/type.d.ts +5 -0
- package/webview/index.d.ts +1 -0
- package/webview/index.js +399 -0
- package/webview/index.js.map +7 -0
- package/webview/index.mjs +388 -0
- package/webview/index.mjs.map +7 -0
- package/workflow-exec.service.d.ts +41 -0
- package/workflow-file.service.d.ts +9 -0
- package/workflow-parser.service.d.ts +24 -0
- package/workflow-select.service.d.ts +13 -0
|
@@ -0,0 +1,388 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __export = (target, all) => {
|
|
3
|
+
for (var name in all)
|
|
4
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
5
|
+
};
|
|
6
|
+
|
|
7
|
+
// packages/workflow/inline/node/index.browser.ts
|
|
8
|
+
var index_browser_exports = {};
|
|
9
|
+
__export(index_browser_exports, {
|
|
10
|
+
ChatWebviewConfig: () => ChatWebviewConfig,
|
|
11
|
+
TextWebviewConfig: () => TextWebviewConfig
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
// packages/workflow/inline/node/chat/chat.node.define.ts
|
|
15
|
+
import * as v3 from "valibot";
|
|
16
|
+
import {
|
|
17
|
+
componentClass as componentClass2,
|
|
18
|
+
condition as condition3,
|
|
19
|
+
patchInputs,
|
|
20
|
+
setComponent as setComponent2,
|
|
21
|
+
valueChange
|
|
22
|
+
} from "@piying/view-angular-core";
|
|
23
|
+
|
|
24
|
+
// packages/workflow/share/common/examples.define.ts
|
|
25
|
+
import {
|
|
26
|
+
condition,
|
|
27
|
+
patchWrappers,
|
|
28
|
+
renderConfig,
|
|
29
|
+
topClass
|
|
30
|
+
} from "@piying/view-angular-core";
|
|
31
|
+
import * as v from "valibot";
|
|
32
|
+
|
|
33
|
+
// packages/workflow/share/util/layout.ts
|
|
34
|
+
import { componentClass } from "@piying/view-angular-core";
|
|
35
|
+
function asColumn() {
|
|
36
|
+
return componentClass("grid gap-2");
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// packages/workflow/share/common/examples.define.ts
|
|
40
|
+
var EXAMPLES_DEFINE = v.pipe(
|
|
41
|
+
v.optional(
|
|
42
|
+
v.array(
|
|
43
|
+
v.pipe(
|
|
44
|
+
v.object({
|
|
45
|
+
input: v.pipe(
|
|
46
|
+
v.object({
|
|
47
|
+
format: v.pipe(
|
|
48
|
+
v.optional(v.boolean(), false),
|
|
49
|
+
v.description(
|
|
50
|
+
"选中后会尝试使用yaml解析为对象,再序列化为对应的响应类型"
|
|
51
|
+
),
|
|
52
|
+
patchWrappers(["tooltip"])
|
|
53
|
+
),
|
|
54
|
+
value: v.pipe(v.string(), v.title("问题"), topClass("flex-1"))
|
|
55
|
+
}),
|
|
56
|
+
// todo 待修复
|
|
57
|
+
topClass("flex gap-2 items-center")
|
|
58
|
+
),
|
|
59
|
+
output: v.pipe(
|
|
60
|
+
v.object({
|
|
61
|
+
format: v.pipe(
|
|
62
|
+
v.optional(v.boolean(), false),
|
|
63
|
+
v.description("是否需要格式化"),
|
|
64
|
+
patchWrappers(["tooltip"])
|
|
65
|
+
),
|
|
66
|
+
value: v.pipe(v.string(), v.title("回答"), topClass("flex-1"))
|
|
67
|
+
}),
|
|
68
|
+
topClass("flex gap-2 items-center")
|
|
69
|
+
)
|
|
70
|
+
}),
|
|
71
|
+
asColumn()
|
|
72
|
+
)
|
|
73
|
+
),
|
|
74
|
+
[]
|
|
75
|
+
),
|
|
76
|
+
v.title("用例"),
|
|
77
|
+
v.description("回答问题之前,会参考定义的用例格式进行回复,用于规范回答"),
|
|
78
|
+
condition({
|
|
79
|
+
environments: ["display"],
|
|
80
|
+
actions: [
|
|
81
|
+
renderConfig({
|
|
82
|
+
hidden: true
|
|
83
|
+
})
|
|
84
|
+
]
|
|
85
|
+
})
|
|
86
|
+
);
|
|
87
|
+
|
|
88
|
+
// packages/workflow/share/common/llm.define.ts
|
|
89
|
+
import {
|
|
90
|
+
asVirtualGroup,
|
|
91
|
+
patchAsyncInputs,
|
|
92
|
+
setComponent
|
|
93
|
+
} from "@piying/view-angular-core";
|
|
94
|
+
import { condition as condition2 } from "@piying/valibot-visit";
|
|
95
|
+
import * as v2 from "valibot";
|
|
96
|
+
function llmModelConfig(item) {
|
|
97
|
+
return v2.pipe(
|
|
98
|
+
v2.intersect([
|
|
99
|
+
v2.pipe(
|
|
100
|
+
v2.intersect([
|
|
101
|
+
v2.pipe(
|
|
102
|
+
v2.object({
|
|
103
|
+
name: v2.pipe(
|
|
104
|
+
v2.optional(v2.string()),
|
|
105
|
+
v2.title("预定义模型配置"),
|
|
106
|
+
setComponent("select"),
|
|
107
|
+
patchAsyncInputs({
|
|
108
|
+
options: (field) => field.context.getModelList()
|
|
109
|
+
})
|
|
110
|
+
),
|
|
111
|
+
model: v2.pipe(v2.optional(v2.string()), v2.title("模型")),
|
|
112
|
+
// todo 配置变化configuration层被去掉.这里应该更详细支持更多参数
|
|
113
|
+
baseURL: v2.pipe(v2.optional(v2.string()), v2.title("地址"))
|
|
114
|
+
}),
|
|
115
|
+
asColumn()
|
|
116
|
+
)
|
|
117
|
+
]),
|
|
118
|
+
v2.title(item?.label ?? "对话模型"),
|
|
119
|
+
condition2({
|
|
120
|
+
environments: ["display", "config"],
|
|
121
|
+
actions: [asVirtualGroup()]
|
|
122
|
+
})
|
|
123
|
+
)
|
|
124
|
+
]),
|
|
125
|
+
condition2({
|
|
126
|
+
environments: ["display", "config"],
|
|
127
|
+
actions: [asVirtualGroup()]
|
|
128
|
+
}),
|
|
129
|
+
setComponent("accordion")
|
|
130
|
+
);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// packages/workflow/share/common/const.ts
|
|
134
|
+
var DEFAULT_CHAT_SCHEMA_KEY = `[JsonSchema]`;
|
|
135
|
+
var RUNNER_ORIGIN_OUTPUT_KEY = `[Origin]`;
|
|
136
|
+
|
|
137
|
+
// packages/workflow/inline/node/chat/chat.node.define.ts
|
|
138
|
+
var ResponseList = ["json", "markdown", "yaml"];
|
|
139
|
+
var ResponseFormat = ["text", "json_object", "json_schema"];
|
|
140
|
+
var CHAT_NODE_DEFINE = v3.looseObject({
|
|
141
|
+
data: v3.looseObject({
|
|
142
|
+
config: v3.pipe(
|
|
143
|
+
v3.object({
|
|
144
|
+
llm: v3.optional(llmModelConfig()),
|
|
145
|
+
/** 处理时解析 */
|
|
146
|
+
responseFormat: v3.pipe(
|
|
147
|
+
v3.optional(v3.picklist(ResponseFormat)),
|
|
148
|
+
patchInputs({
|
|
149
|
+
options: [
|
|
150
|
+
// 有输入json时
|
|
151
|
+
{
|
|
152
|
+
label: "自动",
|
|
153
|
+
value: void 0,
|
|
154
|
+
description: `传入JsonSchema时为[json_schema],否则为[text]`
|
|
155
|
+
},
|
|
156
|
+
{ label: "文本", value: "text" },
|
|
157
|
+
{
|
|
158
|
+
label: "JSON对象",
|
|
159
|
+
value: "json_object",
|
|
160
|
+
description: "只限制返回类型为JSON对象,不对字段进行限制"
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
label: "JSON格式定义",
|
|
164
|
+
value: "json_schema",
|
|
165
|
+
description: "限制返回类型为JSON对象,同时限制字段,不建议手动指定,传入JsonSchema后自动启用"
|
|
166
|
+
}
|
|
167
|
+
]
|
|
168
|
+
}),
|
|
169
|
+
v3.title("响应格式")
|
|
170
|
+
),
|
|
171
|
+
/** 处理后解析 */
|
|
172
|
+
parseBy: v3.pipe(
|
|
173
|
+
v3.optional(v3.picklist(ResponseList)),
|
|
174
|
+
patchInputs({
|
|
175
|
+
options: [
|
|
176
|
+
{ label: "直接返回", value: void 0 },
|
|
177
|
+
{
|
|
178
|
+
label: "json",
|
|
179
|
+
value: "json",
|
|
180
|
+
description: `将返回的json代码块内容或原始内容解析为对象`
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
label: "markdown",
|
|
184
|
+
value: "markdown",
|
|
185
|
+
description: `[需要提示词约束]将返回其中的markdown代码块内容或原始内容`
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
label: "yaml",
|
|
189
|
+
value: "yaml",
|
|
190
|
+
description: `[需要提示词约束]将返回的yaml代码块内容或原始内容解析为对象`
|
|
191
|
+
}
|
|
192
|
+
]
|
|
193
|
+
}),
|
|
194
|
+
v3.title("返回解析"),
|
|
195
|
+
valueChange((fn) => {
|
|
196
|
+
fn({ list: [["..", "responseFormat"]] }).subscribe(
|
|
197
|
+
({ list: [value], field }) => {
|
|
198
|
+
if ((value ?? "").startsWith("json")) {
|
|
199
|
+
if (!field.form.control.value) {
|
|
200
|
+
field.form.control.updateValue("json");
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
);
|
|
205
|
+
})
|
|
206
|
+
),
|
|
207
|
+
examples: EXAMPLES_DEFINE
|
|
208
|
+
}),
|
|
209
|
+
componentClass2("grid auto-rows-auto gap-2")
|
|
210
|
+
),
|
|
211
|
+
value: v3.pipe(
|
|
212
|
+
v3.custom(Boolean),
|
|
213
|
+
setComponent2(""),
|
|
214
|
+
condition3({
|
|
215
|
+
environments: ["display"],
|
|
216
|
+
actions: [
|
|
217
|
+
setComponent2("prompt-list"),
|
|
218
|
+
valueChange((fn) => {
|
|
219
|
+
fn({ list: [void 0] }).subscribe(({ list: [value], field }) => {
|
|
220
|
+
if (!Array.isArray(value)) {
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
const inputValue = value ?? [];
|
|
224
|
+
field.context.parseTemplate(
|
|
225
|
+
inputValue.flatMap(
|
|
226
|
+
(item) => item.content.map(
|
|
227
|
+
(item2) => item2.type === "text" ? item2.text : ""
|
|
228
|
+
)
|
|
229
|
+
)
|
|
230
|
+
).then((value2) => {
|
|
231
|
+
if (!value2) {
|
|
232
|
+
return;
|
|
233
|
+
}
|
|
234
|
+
field.context.changeHandleData(field, "input", 1, value2);
|
|
235
|
+
});
|
|
236
|
+
const list = inputValue.flatMap(
|
|
237
|
+
(item) => item.content.map(
|
|
238
|
+
(item2) => item2.type === "image_url" ? item2.image_url.url : void 0
|
|
239
|
+
)
|
|
240
|
+
).filter(Boolean).map((item) => ({
|
|
241
|
+
value: `${item}`,
|
|
242
|
+
label: `${item}`,
|
|
243
|
+
inputType: `image`
|
|
244
|
+
}));
|
|
245
|
+
field.context.changeHandleData(field, "input", 3, list ?? []);
|
|
246
|
+
});
|
|
247
|
+
})
|
|
248
|
+
]
|
|
249
|
+
})
|
|
250
|
+
)
|
|
251
|
+
})
|
|
252
|
+
});
|
|
253
|
+
|
|
254
|
+
// packages/workflow/share/const.ts
|
|
255
|
+
var HelpObj = {
|
|
256
|
+
templateVarLine: `- 变量定义格式: {{xx}},{{xx.yy}}`,
|
|
257
|
+
pathTodoLine: `- **TODO** 接收传入路径而不是指定`
|
|
258
|
+
};
|
|
259
|
+
|
|
260
|
+
// packages/workflow/inline/node/chat/common.ts
|
|
261
|
+
var NODE_COMMON = {
|
|
262
|
+
priority: -100,
|
|
263
|
+
type: "chat",
|
|
264
|
+
label: `对话`,
|
|
265
|
+
icon: { fontIcon: "chat" },
|
|
266
|
+
disableHead: false,
|
|
267
|
+
disableConnect: false,
|
|
268
|
+
color: "accent",
|
|
269
|
+
help: [
|
|
270
|
+
`- 点击输入框左侧图标可以切换或添加新行`,
|
|
271
|
+
`${HelpObj.templateVarLine}`,
|
|
272
|
+
"### 指定类型输出",
|
|
273
|
+
"- `JsonSchema`为可选输入,需要使用`代码`节点生成",
|
|
274
|
+
"> 设置后响应类型会自动变为json",
|
|
275
|
+
"> 也可以使用任何符合`ChatJsonSchema`类型的数据结构传入(`代码`节点编辑时有声明)",
|
|
276
|
+
"- 原始输出: 不进行任何格式化处理的输出",
|
|
277
|
+
"### 定义图片变量",
|
|
278
|
+
"- 只有支持图片传入的大语言模型才支持此选项",
|
|
279
|
+
"> 如`minicpm-v:8b`",
|
|
280
|
+
"- 定义后在对话中可以传入图片",
|
|
281
|
+
"- 或者可以使用`图片输入`节点手动指定一张图片",
|
|
282
|
+
"- 只有`用户提示词`可以使用图片输入",
|
|
283
|
+
"> 不清楚是否所有模型都遵循此规则,所以并没有限制输入"
|
|
284
|
+
].join("\n"),
|
|
285
|
+
// config: defineConfig,
|
|
286
|
+
inputs: [
|
|
287
|
+
[],
|
|
288
|
+
[
|
|
289
|
+
{
|
|
290
|
+
label: "JsonSchema",
|
|
291
|
+
value: DEFAULT_CHAT_SCHEMA_KEY,
|
|
292
|
+
inputType: "schema",
|
|
293
|
+
optional: true
|
|
294
|
+
}
|
|
295
|
+
]
|
|
296
|
+
],
|
|
297
|
+
outputs: [[{ label: "原始输出", value: RUNNER_ORIGIN_OUTPUT_KEY }]]
|
|
298
|
+
};
|
|
299
|
+
|
|
300
|
+
// packages/workflow/inline/node/chat/util.ts
|
|
301
|
+
import { deepClone } from "@cyia/util";
|
|
302
|
+
var INIT_TEMPLATE = { role: "user", content: [] };
|
|
303
|
+
function getSystemTemplate() {
|
|
304
|
+
return deepClone({ ...INIT_TEMPLATE, role: "system" });
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
// packages/workflow/inline/node/chat/webview/index.ts
|
|
308
|
+
var ChatWebviewConfig = {
|
|
309
|
+
...NODE_COMMON,
|
|
310
|
+
displayConfig: CHAT_NODE_DEFINE,
|
|
311
|
+
config: CHAT_NODE_DEFINE,
|
|
312
|
+
initData: () => ({
|
|
313
|
+
data: {
|
|
314
|
+
transform: {
|
|
315
|
+
resizable: true
|
|
316
|
+
},
|
|
317
|
+
value: [getSystemTemplate()]
|
|
318
|
+
},
|
|
319
|
+
width: 300
|
|
320
|
+
})
|
|
321
|
+
};
|
|
322
|
+
|
|
323
|
+
// packages/workflow/inline/node/text/common.ts
|
|
324
|
+
var NODE_COMMON2 = {
|
|
325
|
+
type: "textarea",
|
|
326
|
+
label: `文本模板`,
|
|
327
|
+
icon: { fontIcon: "text_snippet" },
|
|
328
|
+
disableHead: false,
|
|
329
|
+
disableConnect: false,
|
|
330
|
+
color: "primary",
|
|
331
|
+
help: `${HelpObj.templateVarLine}`,
|
|
332
|
+
priority: -98
|
|
333
|
+
};
|
|
334
|
+
|
|
335
|
+
// packages/workflow/inline/node/text/text.node.define.ts
|
|
336
|
+
import {
|
|
337
|
+
condition as condition4,
|
|
338
|
+
setComponent as setComponent3,
|
|
339
|
+
topClass as topClass2,
|
|
340
|
+
valueChange as valueChange2
|
|
341
|
+
} from "@piying/view-angular-core";
|
|
342
|
+
import * as v4 from "valibot";
|
|
343
|
+
var TEXT_NODE_DEFINE = v4.looseObject({
|
|
344
|
+
data: v4.looseObject({
|
|
345
|
+
value: v4.pipe(
|
|
346
|
+
v4.string(),
|
|
347
|
+
condition4({
|
|
348
|
+
environments: ["display"],
|
|
349
|
+
actions: [
|
|
350
|
+
setComponent3("string"),
|
|
351
|
+
topClass2("nodrag"),
|
|
352
|
+
valueChange2((fn) => {
|
|
353
|
+
fn({ list: [void 0] }).subscribe(({ list: [value], field }) => {
|
|
354
|
+
if (typeof value !== "string") {
|
|
355
|
+
return;
|
|
356
|
+
}
|
|
357
|
+
field.context.parseTemplate([value]).then((value2) => {
|
|
358
|
+
if (!value2) {
|
|
359
|
+
return;
|
|
360
|
+
}
|
|
361
|
+
field.context.changeHandleData(field, "input", 1, value2);
|
|
362
|
+
});
|
|
363
|
+
});
|
|
364
|
+
})
|
|
365
|
+
]
|
|
366
|
+
})
|
|
367
|
+
)
|
|
368
|
+
})
|
|
369
|
+
});
|
|
370
|
+
|
|
371
|
+
// packages/workflow/inline/node/text/webview/index.ts
|
|
372
|
+
var TextWebviewConfig = {
|
|
373
|
+
...NODE_COMMON2,
|
|
374
|
+
displayConfig: TEXT_NODE_DEFINE,
|
|
375
|
+
initData: () => ({
|
|
376
|
+
data: {
|
|
377
|
+
transform: {
|
|
378
|
+
resizable: true
|
|
379
|
+
},
|
|
380
|
+
value: ""
|
|
381
|
+
},
|
|
382
|
+
width: 300
|
|
383
|
+
})
|
|
384
|
+
};
|
|
385
|
+
export {
|
|
386
|
+
index_browser_exports as WebviewNodeMap
|
|
387
|
+
};
|
|
388
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../packages/workflow/inline/node/index.browser.ts", "../../../packages/workflow/inline/node/chat/chat.node.define.ts", "../../../packages/workflow/share/common/examples.define.ts", "../../../packages/workflow/share/util/layout.ts", "../../../packages/workflow/share/common/llm.define.ts", "../../../packages/workflow/share/common/const.ts", "../../../packages/workflow/share/const.ts", "../../../packages/workflow/inline/node/chat/common.ts", "../../../packages/workflow/inline/node/chat/util.ts", "../../../packages/workflow/inline/node/chat/webview/index.ts", "../../../packages/workflow/inline/node/text/common.ts", "../../../packages/workflow/inline/node/text/text.node.define.ts", "../../../packages/workflow/inline/node/text/webview/index.ts"],
|
|
4
|
+
"sourcesContent": ["export * from './chat/webview';\nexport * from './text/webview';\n", "import * as v from 'valibot';\n\nimport {\n componentClass,\n condition,\n patchInputs,\n setComponent,\n valueChange,\n} from '@piying/view-angular-core';\nimport { ChatMessageListInputType } from '@shenghuabi/openai';\nimport { EXAMPLES_DEFINE, llmModelConfig } from '../../../share/common';\nexport const ResponseList = ['json', 'markdown', 'yaml'] as const;\nexport const ResponseFormat = ['text', 'json_object', 'json_schema'] as const;\nexport type ResponseType = (typeof ResponseList)[number];\nexport const CHAT_NODE_DEFINE = v.looseObject({\n data: v.looseObject({\n config: v.pipe(\n v.object({\n llm: v.optional(llmModelConfig()),\n /** 处理时解析 */\n responseFormat: v.pipe(\n v.optional(v.picklist(ResponseFormat)),\n patchInputs({\n options: [\n // 有输入json时\n {\n label: '自动',\n value: undefined,\n description: `传入JsonSchema时为[json_schema],否则为[text]`,\n },\n { label: '文本', value: 'text' },\n {\n label: 'JSON对象',\n value: 'json_object',\n description: '只限制返回类型为JSON对象,不对字段进行限制',\n },\n {\n label: 'JSON格式定义',\n value: 'json_schema',\n description:\n '限制返回类型为JSON对象,同时限制字段,不建议手动指定,传入JsonSchema后自动启用',\n },\n ],\n }),\n v.title('响应格式'),\n ),\n /** 处理后解析 */\n parseBy: v.pipe(\n v.optional(v.picklist(ResponseList)),\n patchInputs({\n options: [\n { label: '直接返回', value: undefined },\n {\n label: 'json',\n value: 'json',\n description: `将返回的json代码块内容或原始内容解析为对象`,\n },\n {\n label: 'markdown',\n value: 'markdown',\n description: `[需要提示词约束]将返回其中的markdown代码块内容或原始内容`,\n },\n {\n label: 'yaml',\n value: 'yaml',\n description: `[需要提示词约束]将返回的yaml代码块内容或原始内容解析为对象`,\n },\n ],\n }),\n v.title('返回解析'),\n valueChange((fn) => {\n fn({ list: [['..', 'responseFormat']] }).subscribe(\n ({ list: [value], field }) => {\n if ((value ?? '').startsWith('json')) {\n if (!field.form.control!.value) {\n field.form.control!.updateValue('json');\n }\n }\n },\n );\n }),\n ),\n examples: EXAMPLES_DEFINE,\n }),\n\n componentClass('grid auto-rows-auto gap-2'),\n ),\n value: v.pipe(\n v.custom<ChatMessageListInputType>(Boolean),\n setComponent(''),\n condition({\n environments: ['display'],\n actions: [\n setComponent('prompt-list'),\n valueChange((fn) => {\n fn({ list: [undefined] }).subscribe(({ list: [value], field }) => {\n if (!Array.isArray(value)) {\n return;\n }\n const inputValue: ChatMessageListInputType = value ?? [];\n field.context\n .parseTemplate(\n inputValue.flatMap((item) =>\n item.content.map((item) =>\n item.type === 'text' ? item.text : '',\n ),\n ),\n )\n .then((value: any) => {\n if (!value) {\n return;\n }\n field.context.changeHandleData(field, 'input', 1, value);\n });\n\n const list = inputValue\n .flatMap((item) =>\n item.content.map((item) =>\n item.type === 'image_url' ? item.image_url.url : undefined,\n ),\n )\n .filter(Boolean)\n .map((item) => ({\n value: `${item}`,\n label: `${item}`,\n inputType: `image` as const,\n }));\n field.context.changeHandleData(field, 'input', 3, list ?? []);\n });\n }),\n ],\n }),\n ),\n }),\n});\n", "import {\n condition,\n patchWrappers,\n renderConfig,\n topClass,\n} from '@piying/view-angular-core';\nimport * as v from 'valibot';\nimport { asColumn } from '../util/layout';\n\nexport const EXAMPLES_DEFINE = v.pipe(\n v.optional(\n v.array(\n v.pipe(\n v.object({\n input: v.pipe(\n v.object({\n format: v.pipe(\n v.optional(v.boolean(), false),\n v.description(\n '选中后会尝试使用yaml解析为对象,再序列化为对应的响应类型',\n ),\n patchWrappers(['tooltip']),\n ),\n value: v.pipe(v.string(), v.title('问题'), topClass('flex-1')),\n }),\n // todo 待修复\n topClass('flex gap-2 items-center'),\n ),\n\n output: v.pipe(\n v.object({\n format: v.pipe(\n v.optional(v.boolean(), false),\n v.description('是否需要格式化'),\n patchWrappers(['tooltip']),\n ),\n value: v.pipe(v.string(), v.title('回答'), topClass('flex-1')),\n }),\n topClass('flex gap-2 items-center'),\n ),\n }),\n asColumn(),\n ),\n ),\n [],\n ),\n v.title('用例'),\n v.description('回答问题之前,会参考定义的用例格式进行回复,用于规范回答'),\n condition({\n environments: ['display'],\n actions: [\n renderConfig({\n hidden: true,\n }),\n ],\n }),\n);\n", "import { componentClass } from '@piying/view-angular-core';\n\nexport function asRow<TInput>(count?: number) {\n return componentClass<TInput>(\n typeof count === 'number'\n ? `grid gap-2 grid-cols-${count}`\n : 'flex gap-2 *:flex-1 items-center',\n );\n}\nexport function asColumn<TInput>() {\n return componentClass<TInput>('grid gap-2');\n}\n", "import {\n asVirtualGroup,\n patchAsyncInputs,\n setComponent,\n} from '@piying/view-angular-core';\nimport { condition } from '@piying/valibot-visit';\nimport * as v from 'valibot';\nimport { asColumn } from '../util/layout';\nexport function llmModelConfig(item?: { label: string }) {\n return v.pipe(\n v.intersect([\n v.pipe(\n v.intersect([\n v.pipe(\n v.object({\n name: v.pipe(\n v.optional(v.string()),\n v.title('预定义模型配置'),\n setComponent('select'),\n patchAsyncInputs({\n options: (field) => field.context!.getModelList(),\n }),\n ),\n model: v.pipe(v.optional(v.string()), v.title('模型')),\n // todo 配置变化configuration层被去掉.这里应该更详细支持更多参数\n\n baseURL: v.pipe(v.optional(v.string()), v.title('地址')),\n }),\n asColumn(),\n ),\n ]),\n v.title(item?.label ?? '对话模型'),\n condition({\n environments: ['display', 'config'],\n actions: [asVirtualGroup()],\n }),\n ),\n ]),\n condition({\n environments: ['display', 'config'],\n actions: [asVirtualGroup()],\n }),\n setComponent('accordion'),\n );\n}\n\nexport type ModelInputConfig = v.InferOutput<ReturnType<typeof llmModelConfig>>;\n", "export const DEFAULT_CHAT_SCHEMA_KEY = `[JsonSchema]`;\nexport const RUNNER_ORIGIN_OUTPUT_KEY = `[Origin]`;\n", "export const DEFAULT_INPUT_KEY = `[INPUT]`;\nexport const HelpObj = {\n templateVarLine: `- 变量定义格式: {{xx}},{{xx.yy}}`,\n pathTodoLine: `- **TODO** 接收传入路径而不是指定`,\n};\n", "import { HelpObj } from '../../../share';\nimport {\n DEFAULT_CHAT_SCHEMA_KEY,\n RUNNER_ORIGIN_OUTPUT_KEY,\n} from '../../../share';\nimport { NodeComponentType } from '../../../share';\n\nexport const NODE_COMMON: NodeComponentType = {\n priority: -100,\n type: 'chat',\n label: `对话`,\n icon: { fontIcon: 'chat' },\n disableHead: false,\n disableConnect: false,\n color: 'accent',\n help: [\n `- 点击输入框左侧图标可以切换或添加新行`,\n `${HelpObj.templateVarLine}`,\n '### 指定类型输出',\n '- `JsonSchema`为可选输入,需要使用`代码`节点生成',\n '> 设置后响应类型会自动变为json',\n '> 也可以使用任何符合`ChatJsonSchema`类型的数据结构传入(`代码`节点编辑时有声明)',\n '- 原始输出: 不进行任何格式化处理的输出',\n '### 定义图片变量',\n '- 只有支持图片传入的大语言模型才支持此选项',\n '> 如`minicpm-v:8b`',\n '- 定义后在对话中可以传入图片',\n '- 或者可以使用`图片输入`节点手动指定一张图片',\n '- 只有`用户提示词`可以使用图片输入',\n '> 不清楚是否所有模型都遵循此规则,所以并没有限制输入',\n ].join('\\n'),\n // config: defineConfig,\n inputs: [\n [],\n [\n {\n label: 'JsonSchema',\n value: DEFAULT_CHAT_SCHEMA_KEY,\n inputType: 'schema',\n optional: true,\n },\n ],\n ],\n outputs: [[{ label: '原始输出', value: RUNNER_ORIGIN_OUTPUT_KEY }]],\n};\n", "import { deepClone } from '@cyia/util';\n\nconst INIT_TEMPLATE = { role: 'user' as const, content: [] };\nexport function getHumanTemplate() {\n return deepClone(INIT_TEMPLATE);\n}\nexport function getSystemTemplate() {\n return deepClone({ ...INIT_TEMPLATE, role: 'system' });\n}\n", "import { WebviewNodeConfig } from '../../../../share/type';\nimport { CHAT_NODE_DEFINE } from '../chat.node.define';\nimport { NODE_COMMON } from '../common';\nimport { getSystemTemplate } from '../util';\n\nexport const ChatWebviewConfig: WebviewNodeConfig = {\n ...NODE_COMMON,\n displayConfig: CHAT_NODE_DEFINE,\n config: CHAT_NODE_DEFINE,\n initData: () => ({\n data: {\n transform: {\n resizable: true,\n },\n value: [getSystemTemplate()],\n },\n width: 300,\n }),\n};\n", "import { HelpObj } from '../../../share';\nimport { NodeComponentType } from '../../../share/type';\n\nexport const NODE_COMMON: NodeComponentType = {\n type: 'textarea',\n label: `文本模板`,\n icon: { fontIcon: 'text_snippet' },\n disableHead: false,\n disableConnect: false,\n color: 'primary',\n help: `${HelpObj.templateVarLine}`,\n priority: -98,\n};\n", "import {\n condition,\n setComponent,\n topClass,\n valueChange,\n} from '@piying/view-angular-core';\nimport * as v from 'valibot';\nexport const TEXT_NODE_DEFINE = v.looseObject({\n data: v.looseObject({\n value: v.pipe(\n v.string(),\n condition({\n environments: ['display'],\n actions: [\n setComponent('string'),\n topClass('nodrag'),\n\n valueChange((fn) => {\n fn({ list: [undefined] }).subscribe(({ list: [value], field }) => {\n if (typeof value !== 'string') {\n return;\n }\n field.context.parseTemplate([value]).then((value: any) => {\n if (!value) {\n return;\n }\n field.context.changeHandleData(field, 'input', 1, value);\n });\n });\n }),\n ],\n }),\n ),\n }),\n});\n", "import { WebviewNodeConfig } from '../../../../share/type';\nimport { NODE_COMMON } from '../common';\nimport { TEXT_NODE_DEFINE } from '../text.node.define';\n\nexport const TextWebviewConfig: WebviewNodeConfig = {\n ...NODE_COMMON,\n displayConfig: TEXT_NODE_DEFINE,\n initData: () => ({\n data: {\n transform: {\n resizable: true,\n },\n\n value: '',\n },\n width: 300,\n }),\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["v", "componentClass", "condition", "setComponent", "condition", "v", "condition", "componentClass", "setComponent", "condition", "item", "value", "NODE_COMMON", "condition", "setComponent", "topClass", "valueChange", "v", "value", "NODE_COMMON"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { WorkflowRunnerEnvironmentParams, WorkflowStreamData } from './share/type2';
|
|
2
|
+
import { ChatMessageListInputType, ChatModelOptions } from '@shenghuabi/openai';
|
|
3
|
+
import { RawWorkflowNode, ResolvedWorkflow, WorkflowData } from './share/handle-node';
|
|
4
|
+
import { Observer } from './share/type';
|
|
5
|
+
export declare class WorkflowExecService {
|
|
6
|
+
#private;
|
|
7
|
+
parse(data: WorkflowData): import("./workflow-parser.service").ResolvedWorkflowResult;
|
|
8
|
+
runParse(define: ResolvedWorkflow, input: {
|
|
9
|
+
input?: Record<string, any>;
|
|
10
|
+
context?: Record<string, any>;
|
|
11
|
+
modelOptions?: ChatModelOptions;
|
|
12
|
+
environmentParameters?: WorkflowRunnerEnvironmentParams;
|
|
13
|
+
}, ob?: Observer<any, any>, abortSignal?: AbortSignal): Promise<{
|
|
14
|
+
extra?: any;
|
|
15
|
+
value: any;
|
|
16
|
+
}>;
|
|
17
|
+
exec(data: Pick<WorkflowData, 'flow'> & {
|
|
18
|
+
define?: ResolvedWorkflow;
|
|
19
|
+
}, input: {
|
|
20
|
+
input?: Record<string, any>;
|
|
21
|
+
context?: Record<string, any>;
|
|
22
|
+
modelOptions?: ChatModelOptions;
|
|
23
|
+
environmentParameters?: WorkflowRunnerEnvironmentParams;
|
|
24
|
+
}, options: {
|
|
25
|
+
showError?: boolean;
|
|
26
|
+
}, ob?: Observer<any, any>, abortSignal?: AbortSignal): Promise<{
|
|
27
|
+
extra?: any;
|
|
28
|
+
value: any;
|
|
29
|
+
}>;
|
|
30
|
+
agentChat(input: {
|
|
31
|
+
input: Record<string, any>;
|
|
32
|
+
context: Record<string, RawWorkflowNode>;
|
|
33
|
+
template: ChatMessageListInputType;
|
|
34
|
+
modelOptions?: ChatModelOptions;
|
|
35
|
+
environmentParameters?: WorkflowRunnerEnvironmentParams;
|
|
36
|
+
inlineMode: boolean;
|
|
37
|
+
}, fn: (item: WorkflowStreamData) => any, abort?: AbortSignal): Promise<{
|
|
38
|
+
extra?: any;
|
|
39
|
+
value: any;
|
|
40
|
+
}>;
|
|
41
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { RawFile } from '@cyia/bundle-file';
|
|
2
|
+
/** 工作流文件 */
|
|
3
|
+
export declare class WorkflowFileService {
|
|
4
|
+
#private;
|
|
5
|
+
getFile(filePath: string): RawFile<any>;
|
|
6
|
+
/** 关闭已打开的默认工作流文件 */
|
|
7
|
+
closeDefulatFile(): Promise<void>;
|
|
8
|
+
remove(filePath: string): Promise<void>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ResolvedWorkflow, WorkflowData } from './share/handle-node';
|
|
2
|
+
export interface ResolvedWorkflowResult {
|
|
3
|
+
data?: ResolvedWorkflow;
|
|
4
|
+
/** todo 应该更详细,进行错误定位 */
|
|
5
|
+
error?: {
|
|
6
|
+
message?: string;
|
|
7
|
+
nodeId?: string;
|
|
8
|
+
};
|
|
9
|
+
manualInput?: boolean;
|
|
10
|
+
}
|
|
11
|
+
/** 先将图解析为定义 */
|
|
12
|
+
export declare class WorkflowParserService {
|
|
13
|
+
#private;
|
|
14
|
+
constructor();
|
|
15
|
+
/**
|
|
16
|
+
* 1.如果出现孤立节点,那么需要判断是不是子级引用
|
|
17
|
+
* 2.子级引用本级别找不到,那么需要找父级
|
|
18
|
+
*/
|
|
19
|
+
/**
|
|
20
|
+
* 边有id,通过source 找到连接的节点
|
|
21
|
+
*
|
|
22
|
+
*/
|
|
23
|
+
parse(data: Pick<WorkflowData, 'flow'>): ResolvedWorkflowResult;
|
|
24
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Stats } from 'fs';
|
|
2
|
+
import { WorkflowData } from './share/handle-node';
|
|
3
|
+
export declare class WorkflowSelectService {
|
|
4
|
+
#private;
|
|
5
|
+
get({ workflowName }: {
|
|
6
|
+
workflowName: string;
|
|
7
|
+
}): Promise<WorkflowData>;
|
|
8
|
+
getList(): Promise<{
|
|
9
|
+
relPath: string;
|
|
10
|
+
name: string;
|
|
11
|
+
stat: Stats;
|
|
12
|
+
}[]>;
|
|
13
|
+
}
|