@shenghuabi/workflow 1.0.11 → 1.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.
@@ -17,15 +17,11 @@ export declare const CHAT_NODE_DEFINE: v.LooseObjectSchema<{
17
17
  name?: string | undefined;
18
18
  model?: string | undefined;
19
19
  baseURL?: string | undefined;
20
- }, string>, import("@piying/valibot-visit").ConditionAction<{
20
+ }, string>, import("@piying/valibot-visit").VirtualGroupAction<{
21
21
  name?: string | undefined;
22
22
  model?: string | undefined;
23
23
  baseURL?: string | undefined;
24
- }>]>], undefined>, import("@piying/valibot-visit").ConditionAction<{
25
- name?: string | undefined;
26
- model?: string | undefined;
27
- baseURL?: string | undefined;
28
- }>, import("@piying/valibot-visit").ConditionAction<{
24
+ }>]>], undefined>, import("@piying/valibot-visit").VirtualGroupAction<{
29
25
  name?: string | undefined;
30
26
  model?: string | undefined;
31
27
  baseURL?: string | undefined;
@@ -80,16 +76,7 @@ export declare const CHAT_NODE_DEFINE: v.LooseObjectSchema<{
80
76
  format: boolean;
81
77
  value: string;
82
78
  };
83
- }[], "回答问题之前,会参考定义的用例格式进行回复,用于规范回答">, import("@piying/valibot-visit").ConditionAction<{
84
- input: {
85
- format: boolean;
86
- value: string;
87
- };
88
- output: {
89
- format: boolean;
90
- value: string;
91
- };
92
- }[]>]>;
79
+ }[], "回答问题之前,会参考定义的用例格式进行回复,用于规范回答">]>;
93
80
  }, undefined>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", {
94
81
  llm?: {
95
82
  name?: string | undefined;
@@ -177,7 +164,7 @@ export declare const CHAT_NODE_DEFINE: v.LooseObjectSchema<{
177
164
  type: "text";
178
165
  }[];
179
166
  thinkContent?: string | undefined;
180
- })[]>, import("@piying/valibot-visit").ConditionAction<({
167
+ })[]>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", ({
181
168
  role: "system";
182
169
  content: {
183
170
  text: string;
@@ -202,6 +189,6 @@ export declare const CHAT_NODE_DEFINE: v.LooseObjectSchema<{
202
189
  type: "text";
203
190
  }[];
204
191
  thinkContent?: string | undefined;
205
- })[]>]>;
192
+ })[], import("@piying/view-angular-core").AnyCoreSchemaHandle>]>;
206
193
  }, undefined>;
207
194
  }, undefined>;
@@ -16,15 +16,11 @@ export declare const ChatMainConfig: {
16
16
  name?: string | undefined;
17
17
  model?: string | undefined;
18
18
  baseURL?: string | undefined;
19
- }, string>, import("@piying/valibot-visit").ConditionAction<{
19
+ }, string>, import("@piying/valibot-visit").VirtualGroupAction<{
20
20
  name?: string | undefined;
21
21
  model?: string | undefined;
22
22
  baseURL?: string | undefined;
23
- }>]>], undefined>, import("@piying/valibot-visit").ConditionAction<{
24
- name?: string | undefined;
25
- model?: string | undefined;
26
- baseURL?: string | undefined;
27
- }>, import("@piying/valibot-visit").ConditionAction<{
23
+ }>]>], undefined>, import("@piying/valibot-visit").VirtualGroupAction<{
28
24
  name?: string | undefined;
29
25
  model?: string | undefined;
30
26
  baseURL?: string | undefined;
@@ -77,16 +73,7 @@ export declare const ChatMainConfig: {
77
73
  format: boolean;
78
74
  value: string;
79
75
  };
80
- }[], "回答问题之前,会参考定义的用例格式进行回复,用于规范回答">, import("@piying/valibot-visit").ConditionAction<{
81
- input: {
82
- format: boolean;
83
- value: string;
84
- };
85
- output: {
86
- format: boolean;
87
- value: string;
88
- };
89
- }[]>]>;
76
+ }[], "回答问题之前,会参考定义的用例格式进行回复,用于规范回答">]>;
90
77
  }, undefined>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", {
91
78
  llm?: {
92
79
  name?: string | undefined;
@@ -174,7 +161,7 @@ export declare const ChatMainConfig: {
174
161
  type: "text";
175
162
  }[];
176
163
  thinkContent?: string | undefined;
177
- })[]>, import("@piying/valibot-visit").ConditionAction<({
164
+ })[]>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", ({
178
165
  role: "system";
179
166
  content: {
180
167
  text: string;
@@ -199,7 +186,7 @@ export declare const ChatMainConfig: {
199
186
  type: "text";
200
187
  }[];
201
188
  thinkContent?: string | undefined;
202
- })[]>]>;
189
+ })[], import("@piying/view-angular-core").AnyCoreSchemaHandle>]>;
203
190
  }, undefined>;
204
191
  }, undefined>;
205
192
  readonly afterAdd?: (node: import("../../../..").CustomNode, injector: import("static-injector").Injector) => any;
@@ -1,6 +1,6 @@
1
1
  import * as v from 'valibot';
2
2
  export declare const TEXT_NODE_DEFINE: v.LooseObjectSchema<{
3
3
  readonly data: v.LooseObjectSchema<{
4
- readonly value: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, import("@piying/valibot-visit").ConditionAction<string>]>;
4
+ readonly value: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", string, import("@piying/view-angular-core").AnyCoreSchemaHandle>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", string, import("@piying/view-angular-core").AnyCoreSchemaHandle>]>;
5
5
  }, undefined>;
6
6
  }, undefined>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shenghuabi/workflow",
3
- "version": "1.0.11",
3
+ "version": "1.1.0",
4
4
  "description": "模板",
5
5
  "author": "wszgrcy",
6
6
  "sideEffects": false,
@@ -11,7 +11,7 @@
11
11
  "@cyia/external-call": "^1.5.2",
12
12
  "@cyia/util": "^1.5.2",
13
13
  "@cyia/vfs2": "^1.5.2",
14
- "@shenghuabi/openai": "1.0.11",
14
+ "@shenghuabi/openai": "1.1.0",
15
15
  "static-injector": "^6.1.2",
16
16
  "@piying/view-angular-core": "^2.9.3",
17
17
  "@piying/valibot-visit": "^1.3.11"
@@ -41,13 +41,4 @@ export declare const EXAMPLES_DEFINE: v.SchemaWithPipe<readonly [v.OptionalSchem
41
41
  format: boolean;
42
42
  value: string;
43
43
  };
44
- }[], "回答问题之前,会参考定义的用例格式进行回复,用于规范回答">, import("@piying/valibot-visit").ConditionAction<{
45
- input: {
46
- format: boolean;
47
- value: string;
48
- };
49
- output: {
50
- format: boolean;
51
- value: string;
52
- };
53
- }[]>]>;
44
+ }[], "回答问题之前,会参考定义的用例格式进行回复,用于规范回答">]>;
@@ -1,5 +1,4 @@
1
1
  export * from './examples.define';
2
- export * from './handle.define';
3
2
  export * from './inline-template.define';
4
3
  export * from './llm.define';
5
4
  export * from './const';
@@ -13,15 +13,11 @@ export declare function llmModelConfig(item?: {
13
13
  name?: string | undefined;
14
14
  model?: string | undefined;
15
15
  baseURL?: string | undefined;
16
- }, string>, import("@piying/valibot-visit").ConditionAction<{
16
+ }, string>, import("@piying/valibot-visit").VirtualGroupAction<{
17
17
  name?: string | undefined;
18
18
  model?: string | undefined;
19
19
  baseURL?: string | undefined;
20
- }>]>], undefined>, import("@piying/valibot-visit").ConditionAction<{
21
- name?: string | undefined;
22
- model?: string | undefined;
23
- baseURL?: string | undefined;
24
- }>, import("@piying/valibot-visit").ConditionAction<{
20
+ }>]>], undefined>, import("@piying/valibot-visit").VirtualGroupAction<{
25
21
  name?: string | undefined;
26
22
  model?: string | undefined;
27
23
  baseURL?: string | undefined;
package/share/index.js CHANGED
@@ -34,7 +34,6 @@ __export(share_exports, {
34
34
  DEFAULT_CHAT_SCHEMA_KEY: () => DEFAULT_CHAT_SCHEMA_KEY,
35
35
  DEFAULT_INPUT_KEY: () => DEFAULT_INPUT_KEY,
36
36
  EXAMPLES_DEFINE: () => EXAMPLES_DEFINE,
37
- HandleDataDefine: () => HandleDataDefine,
38
37
  HelpObj: () => HelpObj,
39
38
  INLINE_Template: () => INLINE_Template,
40
39
  INLINE_Template2: () => INLINE_Template2,
@@ -116,7 +115,11 @@ var EXAMPLES_DEFINE = v.pipe(
116
115
  ),
117
116
  import_view_angular_core2.actions.wrappers.set(["tooltip"])
118
117
  ),
119
- value: v.pipe(v.string(), v.title("问题"), import_view_angular_core2.actions.class.top("flex-1"))
118
+ value: v.pipe(
119
+ v.string(),
120
+ v.title("问题"),
121
+ import_view_angular_core2.actions.class.top("flex-1")
122
+ )
120
123
  }),
121
124
  // todo 待修复
122
125
  import_view_angular_core2.actions.class.top("flex gap-2 items-center")
@@ -128,7 +131,11 @@ var EXAMPLES_DEFINE = v.pipe(
128
131
  v.description("是否需要格式化"),
129
132
  import_view_angular_core2.actions.wrappers.set(["tooltip"])
130
133
  ),
131
- value: v.pipe(v.string(), v.title("回答"), import_view_angular_core2.actions.class.top("flex-1"))
134
+ value: v.pipe(
135
+ v.string(),
136
+ v.title("回答"),
137
+ import_view_angular_core2.actions.class.top("flex-1")
138
+ )
132
139
  }),
133
140
  import_view_angular_core2.actions.class.top("flex gap-2 items-center")
134
141
  )
@@ -139,131 +146,85 @@ var EXAMPLES_DEFINE = v.pipe(
139
146
  []
140
147
  ),
141
148
  v.title("用例"),
142
- v.description("回答问题之前,会参考定义的用例格式进行回复,用于规范回答"),
143
- (0, import_view_angular_core2.condition)({
144
- environments: ["display"],
145
- actions: [
146
- (0, import_view_angular_core2.renderConfig)({
147
- hidden: true
148
- })
149
- ]
150
- })
151
- );
152
-
153
- // packages/workflow/share/common/handle.define.ts
154
- var v2 = __toESM(require("valibot"), 1);
155
- var import_view_angular_core3 = require("@piying/view-angular-core");
156
- var import_valibot_visit = require("@piying/valibot-visit");
157
- var HiddenAction = (0, import_valibot_visit.condition)({
158
- environments: ["display", "default"],
159
- actions: [(0, import_view_angular_core3.setComponent)(""), (0, import_view_angular_core3.renderConfig)({ hidden: true })]
160
- });
161
- var AnyHiddenList = v2.pipe(
162
- v2.array(v2.pipe(v2.optional(v2.any()), HiddenAction)),
163
- (0, import_view_angular_core3.setComponent)(""),
164
- (0, import_view_angular_core3.renderConfig)({ hidden: true })
165
- );
166
- var HandleDataDefine = v2.pipe(
167
- v2.optional(
168
- v2.object({
169
- output: AnyHiddenList,
170
- input: AnyHiddenList
171
- })
172
- ),
173
- HiddenAction
149
+ v.description("回答问题之前,会参考定义的用例格式进行回复,用于规范回答")
174
150
  );
175
151
 
176
152
  // packages/workflow/share/common/inline-template.define.ts
177
- var import_view_angular_core4 = require("@piying/view-angular-core");
153
+ var import_view_angular_core3 = require("@piying/view-angular-core");
178
154
  var import_rxjs = require("rxjs");
179
- var v3 = __toESM(require("valibot"), 1);
180
- var INLINE_Template = v3.pipe(
181
- v3.object({
182
- enable: v3.optional(v3.boolean(), true),
155
+ var v2 = __toESM(require("valibot"), 1);
156
+ var INLINE_Template = v2.pipe(
157
+ v2.object({
158
+ enable: v2.optional(v2.boolean(), true),
183
159
  // 经用条件
184
- value: v3.pipe(
185
- v3.optional(v3.string(), "{{NODE.description}}"),
186
- v3.title("模板"),
187
- v3.description("允许使用变量:{{NODE.xxx}}(参考节点帮助)"),
188
- import_view_angular_core4.actions.wrappers.set(["tooltip", "label"]),
189
- import_view_angular_core4.actions.class.top("flex-1"),
190
- (0, import_view_angular_core4.disableWhen)({
160
+ value: v2.pipe(
161
+ v2.optional(v2.string(), "{{NODE.description}}"),
162
+ v2.title("模板"),
163
+ v2.description("允许使用变量:{{NODE.xxx}}(参考节点帮助)"),
164
+ import_view_angular_core3.actions.wrappers.set(["tooltip", "label"]),
165
+ import_view_angular_core3.actions.class.top("flex-1"),
166
+ (0, import_view_angular_core3.disableWhen)({
191
167
  listen: (fn) => fn({
192
168
  list: [["..", "enable"]]
193
169
  }).pipe((0, import_rxjs.map)(({ list }) => !list[0]))
194
170
  })
195
171
  )
196
172
  }),
197
- import_view_angular_core4.actions.wrappers.patch(["div"]),
198
- import_view_angular_core4.actions.class.top("flex gap-2")
173
+ import_view_angular_core3.actions.wrappers.patch(["div"]),
174
+ import_view_angular_core3.actions.class.top("flex gap-2")
199
175
  );
200
- var INLINE_Template2 = v3.pipe(
201
- v3.object({
202
- enable: v3.optional(v3.boolean(), false),
176
+ var INLINE_Template2 = v2.pipe(
177
+ v2.object({
178
+ enable: v2.optional(v2.boolean(), false),
203
179
  // 经用条件
204
- value: v3.pipe(
205
- v3.optional(v3.string()),
206
- v3.title("模板"),
207
- v3.description("允许使用变量:{{ENTRY.xxx}}(参考节点帮助)"),
208
- import_view_angular_core4.actions.wrappers.set(["tooltip", "label"]),
209
- import_view_angular_core4.actions.class.top("flex-1"),
210
- (0, import_view_angular_core4.disableWhen)({
180
+ value: v2.pipe(
181
+ v2.optional(v2.string()),
182
+ v2.title("模板"),
183
+ v2.description("允许使用变量:{{ENTRY.xxx}}(参考节点帮助)"),
184
+ import_view_angular_core3.actions.wrappers.set(["tooltip", "label"]),
185
+ import_view_angular_core3.actions.class.top("flex-1"),
186
+ (0, import_view_angular_core3.disableWhen)({
211
187
  listen: (fn) => fn({
212
188
  list: [["..", "enable"]]
213
189
  }).pipe((0, import_rxjs.map)(({ list }) => !list[0]))
214
190
  })
215
191
  )
216
192
  }),
217
- import_view_angular_core4.actions.wrappers.patch(["div"]),
218
- import_view_angular_core4.actions.class.top("flex gap-2 items-center")
193
+ import_view_angular_core3.actions.wrappers.patch(["div"]),
194
+ import_view_angular_core3.actions.class.top("flex gap-2 items-center")
219
195
  );
220
196
 
221
197
  // packages/workflow/share/common/llm.define.ts
222
- var import_view_angular_core5 = require("@piying/view-angular-core");
223
- var import_valibot_visit2 = require("@piying/valibot-visit");
224
- var v4 = __toESM(require("valibot"), 1);
198
+ var import_view_angular_core4 = require("@piying/view-angular-core");
199
+ var v3 = __toESM(require("valibot"), 1);
225
200
  function llmModelConfig(item) {
226
- return v4.pipe(
227
- v4.intersect([
228
- v4.pipe(
229
- v4.intersect([
230
- v4.pipe(
231
- v4.object({
232
- name: v4.pipe(
233
- v4.optional(v4.string()),
234
- v4.title("预定义模型配置"),
235
- (0, import_view_angular_core5.setComponent)("select"),
236
- import_view_angular_core5.actions.inputs.patchAsync({
201
+ return v3.pipe(
202
+ v3.intersect([
203
+ v3.pipe(
204
+ v3.intersect([
205
+ v3.pipe(
206
+ v3.object({
207
+ name: v3.pipe(
208
+ v3.optional(v3.string()),
209
+ v3.title("预定义模型配置"),
210
+ (0, import_view_angular_core4.setComponent)("select"),
211
+ import_view_angular_core4.actions.inputs.patchAsync({
237
212
  options: (field) => field.context.getModelList()
238
213
  })
239
214
  ),
240
- model: v4.pipe(v4.optional(v4.string()), v4.title("模型")),
215
+ model: v3.pipe(v3.optional(v3.string()), v3.title("模型")),
241
216
  // todo 配置变化configuration层被去掉.这里应该更详细支持更多参数
242
- baseURL: v4.pipe(v4.optional(v4.string()), v4.title("地址"))
217
+ baseURL: v3.pipe(v3.optional(v3.string()), v3.title("地址"))
243
218
  }),
244
219
  asColumn()
245
220
  )
246
221
  ]),
247
- v4.title(item?.label ?? "对话模型"),
248
- (0, import_valibot_visit2.condition)({
249
- environments: ["display", "config"],
250
- actions: [(0, import_view_angular_core5.asVirtualGroup)()]
251
- })
222
+ v3.title(item?.label ?? "对话模型"),
223
+ (0, import_view_angular_core4.asVirtualGroup)()
252
224
  )
253
225
  ]),
254
- (0, import_valibot_visit2.condition)({
255
- environments: ["display", "config"],
256
- actions: [(0, import_view_angular_core5.asVirtualGroup)()]
257
- }),
258
- (0, import_valibot_visit2.condition)({
259
- environments: ["display"],
260
- actions: [
261
- (0, import_view_angular_core5.renderConfig)({
262
- hidden: true
263
- })
264
- ]
265
- }),
266
- (0, import_view_angular_core5.setComponent)("accordion")
226
+ (0, import_view_angular_core4.asVirtualGroup)(),
227
+ (0, import_view_angular_core4.setComponent)("accordion")
267
228
  );
268
229
  }
269
230
 
@@ -335,7 +296,6 @@ var WorkflowEmitter = class {
335
296
  DEFAULT_CHAT_SCHEMA_KEY,
336
297
  DEFAULT_INPUT_KEY,
337
298
  EXAMPLES_DEFINE,
338
- HandleDataDefine,
339
299
  HelpObj,
340
300
  INLINE_Template,
341
301
  INLINE_Template2,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../packages/workflow/share/index.ts", "../../../packages/workflow/share/const.ts", "../../../packages/workflow/share/handle-node.ts", "../../../packages/workflow/share/util.ts", "../../../packages/workflow/share/workflow.const.ts", "../../../packages/workflow/share/common/examples.define.ts", "../../../packages/workflow/share/util/layout.ts", "../../../packages/workflow/share/common/handle.define.ts", "../../../packages/workflow/share/common/inline-template.define.ts", "../../../packages/workflow/share/common/llm.define.ts", "../../../packages/workflow/share/common/const.ts", "../../../packages/workflow/share/type2.ts", "../../../packages/workflow/share/workflow.emit.ts"],
4
- "sourcesContent": ["export * from './type';\nexport * from './const';\nexport * from './handle-node';\nexport * from './util';\nexport * from './workflow.const';\nexport * from './common';\nexport * from './type2';\nexport * from './workflow.emit';\n", "export const DEFAULT_INPUT_KEY = `[INPUT]`;\nexport const HelpObj = {\n templateVarLine: `- 变量定义格式: {{xx}},{{xx.yy}}`,\n pathTodoLine: `- **TODO** 接收传入路径而不是指定`,\n};\n", "import { ChatInput2, ChatInputType } from './type';\nimport { WorkflowNodeType } from './workflow.const';\nimport type { Node, ReactFlowJsonObject } from '@xyflow/react';\n\nexport interface HandleNode {\n id: string;\n /** 真正赋值使用 */\n value: string;\n /** 应该应用于tooltip显示,不应该被其他显示 */\n label: string;\n type?: 'connect';\n\n inputType?: ChatInputType;\n /** 是否可选,用于某些不用传入的参数 */\n optional?: boolean;\n}\n/** 将handle节点全部拍平 */\nexport function flatFilterHandleList(list: HandleNode[][] | undefined) {\n if (!list) {\n return [];\n }\n return list.flat().filter(Boolean) as HandleNode[];\n}\n/** 继承 handleNode */\nexport type ResolvedInputNode = Omit<HandleNode, 'label'> & {\n nodeId?: string;\n outputName?: string;\n};\nexport interface WorkflowNodeData {\n value?: any;\n\n handle?: {\n input: HandleNode[][];\n output: HandleNode[][];\n };\n config?: Record<string, any>;\n title?: string;\n outputName?: string;\n /** 在工作流中禁止使用 @internal */\n excludeUsage?: boolean;\n [name: string]: any;\n}\n/** 工作流定义 */\nexport interface WorkflowData {\n flow: ReactFlowJsonObject<Node<WorkflowNodeData>>;\n version: number;\n}\nexport type RawWorkflowNode = Omit<Node<WorkflowNodeData>, 'position'>;\nexport interface ParsedNode {\n id: string;\n type: WorkflowNodeType;\n // todo 因为加上Omit会导致类型不识别\n data: WorkflowNodeData;\n /** 所有输入是都是需要节点连接的,如果没有节点连接会酌情处理 handleinput过来的 */\n inputs: ResolvedInputNode[];\n /** 可能是多出口 */\n outputs: HandleNode[];\n subFlowList?: { key: any; flow: ResolvedWorkflow; startId?: string }[];\n}\nexport interface ResolvedWorkflow {\n nodes: Record<string, ParsedNode>;\n /** 出口 */\n end: string;\n inputList: ChatInput2[];\n}\n", "import { v5 } from 'uuid';\nconst UUID_NS = '404cfae8-94e7-41a6-acec-1037dd1fdaad';\nexport function generateHandle(value: string, label = value) {\n return { id: v5(value, UUID_NS), label: label, value: value };\n}\n", "export const enum WorkflowNodeType {\n 'iteration' = 'iteration',\n 'iterationStart' = 'iteration-start',\n 'inputParams' = 'input-params',\n 'serialize' = 'serialize',\n parameters = 'parameters',\n inlineInputItem = 'inlineInputItem',\n}\n", "import {\n actions,\n condition,\n renderConfig,\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 actions.wrappers.set(['tooltip']),\n ),\n value: v.pipe(v.string(), v.title('问题'), actions.class.top('flex-1')),\n }),\n // todo 待修复\n actions.class.top('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 actions.wrappers.set(['tooltip']),\n ),\n value: v.pipe(v.string(), v.title('回答'), actions.class.top('flex-1')),\n }),\n actions.class.top('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 { actions } from '@piying/view-angular-core';\n\nexport function asRow<TInput>(count?: number) {\n return actions.wrappers.patch<TInput>([\n {\n type: 'div',\n attributes: {\n class:\n typeof count === 'number'\n ? `grid gap-2 grid-cols-${count}`\n : 'flex gap-2 *:flex-1 items-center',\n },\n },\n ]);\n}\nexport function asColumn<TInput>() {\n return actions.wrappers.patch<TInput>([\n {\n type: 'div',\n attributes: {\n class: 'grid gap-2',\n },\n },\n ]);\n}\n", "import * as v from 'valibot';\nimport { renderConfig, setComponent } from '@piying/view-angular-core';\nimport { condition } from '@piying/valibot-visit';\nconst HiddenAction = condition<any>({\n environments: ['display', 'default'],\n actions: [setComponent(''), renderConfig({ hidden: true })],\n});\nconst AnyHiddenList = v.pipe(\n v.array(v.pipe(v.optional(v.any()), HiddenAction)),\n setComponent(''),\n renderConfig({ hidden: true }),\n);\nexport const HandleDataDefine = v.pipe(\n v.optional(\n v.object({\n output: AnyHiddenList,\n input: AnyHiddenList,\n }),\n ),\n HiddenAction,\n);\n", "import { actions, disableWhen } from '@piying/view-angular-core';\nimport { map } from 'rxjs';\nimport * as v from 'valibot';\n\nexport const INLINE_Template = v.pipe(\n v.object({\n enable: v.optional(v.boolean(), true),\n // 经用条件\n value: v.pipe(\n v.optional(v.string(), '{{NODE.description}}'),\n v.title('模板'),\n v.description('允许使用变量:{{NODE.xxx}}(参考节点帮助)'),\n actions.wrappers.set(['tooltip', 'label']),\n actions.class.top('flex-1'),\n\n disableWhen({\n listen: (fn) =>\n fn({\n list: [['..', 'enable']],\n }).pipe(map(({ list }) => !list[0])),\n }),\n ),\n }),\n actions.wrappers.patch(['div']),\n actions.class.top('flex gap-2'),\n);\nexport const INLINE_Template2 = v.pipe(\n v.object({\n enable: v.optional(v.boolean(), false),\n // 经用条件\n value: v.pipe(\n v.optional(v.string()),\n v.title('模板'),\n v.description('允许使用变量:{{ENTRY.xxx}}(参考节点帮助)'),\n actions.wrappers.set(['tooltip', 'label']),\n\n actions.class.top('flex-1'),\n\n disableWhen({\n listen: (fn) =>\n fn({\n list: [['..', 'enable']],\n }).pipe(map(({ list }) => !list[0])),\n }),\n ),\n }),\n actions.wrappers.patch(['div']),\n actions.class.top('flex gap-2 items-center'),\n);\n", "import {\n asVirtualGroup,\n actions,\n setComponent,\n renderConfig,\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 actions.inputs.patchAsync({\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 condition({\n environments: ['display'],\n actions: [\n renderConfig({\n hidden: true,\n }),\n ],\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", "import { v4 } from 'uuid';\nimport type { ChatMessageListOutputType } from '@shenghuabi/openai';\nimport type { ChatModelOptions } from '@shenghuabi/openai';\nimport * as v from 'valibot';\nimport { ChatMetadata } from './type';\nexport type WorkflowRunnerInputs = Map<\n string | symbol,\n { value: any; extra?: any }\n>;\nexport type WorkflowRunnerEnvironmentParams = Record<string, any>;\nexport type WorkflowRunnerInputsWithContext = {\n input: WorkflowRunnerInputs;\n environmentParameters?: WorkflowRunnerEnvironmentParams;\n modelOptions?: ChatModelOptions;\n};\n\nexport interface WorkflowExtraMetadata {\n metadata: ChatMetadata;\n}\nconst extraData = v.looseObject({\n references: v.optional(v.array(v.custom<ChatMetadata>(Boolean))),\n});\nconst baseDataDefine = v.object({\n node: v.object({ type: v.string(), id: v.string() }),\n nodeResult: v.pipe(v.optional(v.boolean(), false)),\n dataId: v.optional(v.string(), () => v4()),\n extra: v.optional(extraData),\n});\nexport const CommonDataDefine = v.object({\n ...baseDataDefine.entries,\n value: v.any(),\n});\nexport type CommonDataType = v.InferOutput<typeof CommonDataDefine>;\n\nexport const LLMDataDefine = v.object({\n ...baseDataDefine.entries,\n type: v.optional(v.literal('chat-stream'), 'chat-stream'),\n // 用来进行普通查询\n value: v.string(),\n extra: v.object({\n ...extraData.entries,\n content: v.string(),\n thinkContent: v.optional(v.string()),\n isThinking: v.optional(v.boolean()),\n delta: v.string(),\n historyList: v.custom<ChatMessageListOutputType>(Boolean),\n }),\n});\nexport type LLMWorkflowData = v.InferOutput<typeof LLMDataDefine>;\nexport function createLLMData(data: v.InferInput<typeof LLMDataDefine>) {\n return v.parse(LLMDataDefine, data);\n}\nexport function createResultData(data: v.InferInput<typeof CommonDataDefine>) {\n const result = v.parse(CommonDataDefine, data);\n result.nodeResult = true;\n return result;\n}\nexport type WorkflowStreamData =\n | v.InferOutput<typeof CommonDataDefine>\n | v.InferOutput<typeof LLMDataDefine>;\n\nexport function isChatStream(\n data: WorkflowStreamData,\n): data is LLMWorkflowData {\n return (\n !!data.extra && 'content' in data.extra && 'thinkContent' in data.extra\n );\n}\n", "import { Observer } from './type';\nimport { createLLMData, WorkflowStreamData } from './type2';\n\nexport class WorkflowEmitter {\n #ob?: Observer<WorkflowStreamData, any>;\n setObserver(ob: Observer<any, any>) {\n this.#ob = ob;\n }\n getObserver() {\n return this.#ob;\n }\n\n createLLMData = createLLMData;\n send(data: WorkflowStreamData) {\n if (this.#ob) {\n this.#ob.next(data);\n }\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["WorkflowNodeType", "import_view_angular_core", "v", "import_view_angular_core", "import_view_angular_core", "v", "import_view_angular_core", "import_valibot_visit", "v", "import_uuid", "v"]
3
+ "sources": ["../../../packages/workflow/share/index.ts", "../../../packages/workflow/share/const.ts", "../../../packages/workflow/share/handle-node.ts", "../../../packages/workflow/share/util.ts", "../../../packages/workflow/share/workflow.const.ts", "../../../packages/workflow/share/common/examples.define.ts", "../../../packages/workflow/share/util/layout.ts", "../../../packages/workflow/share/common/inline-template.define.ts", "../../../packages/workflow/share/common/llm.define.ts", "../../../packages/workflow/share/common/const.ts", "../../../packages/workflow/share/type2.ts", "../../../packages/workflow/share/workflow.emit.ts"],
4
+ "sourcesContent": ["export * from './type';\nexport * from './const';\nexport * from './handle-node';\nexport * from './util';\nexport * from './workflow.const';\nexport * from './common';\nexport * from './type2';\nexport * from './workflow.emit';\n", "export const DEFAULT_INPUT_KEY = `[INPUT]`;\nexport const HelpObj = {\n templateVarLine: `- 变量定义格式: {{xx}},{{xx.yy}}`,\n pathTodoLine: `- **TODO** 接收传入路径而不是指定`,\n};\n", "import { ChatInput2, ChatInputType } from './type';\nimport { WorkflowNodeType } from './workflow.const';\nimport type { Node, ReactFlowJsonObject } from '@xyflow/react';\n\nexport interface HandleNode {\n id: string;\n /** 真正赋值使用 */\n value: string;\n /** 应该应用于tooltip显示,不应该被其他显示 */\n label: string;\n type?: 'connect';\n\n inputType?: ChatInputType;\n /** 是否可选,用于某些不用传入的参数 */\n optional?: boolean;\n}\n/** 将handle节点全部拍平 */\nexport function flatFilterHandleList(list: HandleNode[][] | undefined) {\n if (!list) {\n return [];\n }\n return list.flat().filter(Boolean) as HandleNode[];\n}\n/** 继承 handleNode */\nexport type ResolvedInputNode = Omit<HandleNode, 'label'> & {\n nodeId?: string;\n outputName?: string;\n};\nexport interface WorkflowNodeData {\n value?: any;\n\n handle?: {\n input: HandleNode[][];\n output: HandleNode[][];\n };\n config?: Record<string, any>;\n title?: string;\n outputName?: string;\n /** 在工作流中禁止使用 @internal */\n excludeUsage?: boolean;\n [name: string]: any;\n}\n/** 工作流定义 */\nexport interface WorkflowData {\n flow: ReactFlowJsonObject<Node<WorkflowNodeData>>;\n version: number;\n}\nexport type RawWorkflowNode = Omit<Node<WorkflowNodeData>, 'position'>;\nexport interface ParsedNode {\n id: string;\n type: WorkflowNodeType;\n // todo 因为加上Omit会导致类型不识别\n data: WorkflowNodeData;\n /** 所有输入是都是需要节点连接的,如果没有节点连接会酌情处理 handleinput过来的 */\n inputs: ResolvedInputNode[];\n /** 可能是多出口 */\n outputs: HandleNode[];\n subFlowList?: { key: any; flow: ResolvedWorkflow; startId?: string }[];\n}\nexport interface ResolvedWorkflow {\n nodes: Record<string, ParsedNode>;\n /** 出口 */\n end: string;\n inputList: ChatInput2[];\n}\n", "import { v5 } from 'uuid';\nconst UUID_NS = '404cfae8-94e7-41a6-acec-1037dd1fdaad';\nexport function generateHandle(value: string, label = value) {\n return { id: v5(value, UUID_NS), label: label, value: value };\n}\n", "export const enum WorkflowNodeType {\n 'iteration' = 'iteration',\n 'iterationStart' = 'iteration-start',\n 'inputParams' = 'input-params',\n 'serialize' = 'serialize',\n parameters = 'parameters',\n inlineInputItem = 'inlineInputItem',\n}\n", "import { actions } 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 actions.wrappers.set(['tooltip']),\n ),\n value: v.pipe(\n v.string(),\n v.title('问题'),\n actions.class.top('flex-1'),\n ),\n }),\n // todo 待修复\n actions.class.top('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 actions.wrappers.set(['tooltip']),\n ),\n value: v.pipe(\n v.string(),\n v.title('回答'),\n actions.class.top('flex-1'),\n ),\n }),\n actions.class.top('flex gap-2 items-center'),\n ),\n }),\n asColumn(),\n ),\n ),\n [],\n ),\n v.title('用例'),\n v.description('回答问题之前,会参考定义的用例格式进行回复,用于规范回答'),\n);\n", "import { actions } from '@piying/view-angular-core';\n\nexport function asRow<TInput>(count?: number) {\n return actions.wrappers.patch<TInput>([\n {\n type: 'div',\n attributes: {\n class:\n typeof count === 'number'\n ? `grid gap-2 grid-cols-${count}`\n : 'flex gap-2 *:flex-1 items-center',\n },\n },\n ]);\n}\nexport function asColumn<TInput>() {\n return actions.wrappers.patch<TInput>([\n {\n type: 'div',\n attributes: {\n class: 'grid gap-2',\n },\n },\n ]);\n}\n", "import { actions, disableWhen } from '@piying/view-angular-core';\nimport { map } from 'rxjs';\nimport * as v from 'valibot';\n\nexport const INLINE_Template = v.pipe(\n v.object({\n enable: v.optional(v.boolean(), true),\n // 经用条件\n value: v.pipe(\n v.optional(v.string(), '{{NODE.description}}'),\n v.title('模板'),\n v.description('允许使用变量:{{NODE.xxx}}(参考节点帮助)'),\n actions.wrappers.set(['tooltip', 'label']),\n actions.class.top('flex-1'),\n\n disableWhen({\n listen: (fn) =>\n fn({\n list: [['..', 'enable']],\n }).pipe(map(({ list }) => !list[0])),\n }),\n ),\n }),\n actions.wrappers.patch(['div']),\n actions.class.top('flex gap-2'),\n);\nexport const INLINE_Template2 = v.pipe(\n v.object({\n enable: v.optional(v.boolean(), false),\n // 经用条件\n value: v.pipe(\n v.optional(v.string()),\n v.title('模板'),\n v.description('允许使用变量:{{ENTRY.xxx}}(参考节点帮助)'),\n actions.wrappers.set(['tooltip', 'label']),\n\n actions.class.top('flex-1'),\n\n disableWhen({\n listen: (fn) =>\n fn({\n list: [['..', 'enable']],\n }).pipe(map(({ list }) => !list[0])),\n }),\n ),\n }),\n actions.wrappers.patch(['div']),\n actions.class.top('flex gap-2 items-center'),\n);\n", "import {\n asVirtualGroup,\n actions,\n setComponent,\n} from '@piying/view-angular-core';\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 actions.inputs.patchAsync({\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 asVirtualGroup(),\n ),\n ]),\n asVirtualGroup(),\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", "import { v4 } from 'uuid';\nimport type { ChatMessageListOutputType } from '@shenghuabi/openai';\nimport type { ChatModelOptions } from '@shenghuabi/openai';\nimport * as v from 'valibot';\nimport { ChatMetadata } from './type';\nexport type WorkflowRunnerInputs = Map<\n string | symbol,\n { value: any; extra?: any }\n>;\nexport type WorkflowRunnerEnvironmentParams = Record<string, any>;\nexport type WorkflowRunnerInputsWithContext = {\n input: WorkflowRunnerInputs;\n environmentParameters?: WorkflowRunnerEnvironmentParams;\n modelOptions?: ChatModelOptions;\n};\n\nexport interface WorkflowExtraMetadata {\n metadata: ChatMetadata;\n}\nconst extraData = v.looseObject({\n references: v.optional(v.array(v.custom<ChatMetadata>(Boolean))),\n});\nconst baseDataDefine = v.object({\n node: v.object({ type: v.string(), id: v.string() }),\n nodeResult: v.pipe(v.optional(v.boolean(), false)),\n dataId: v.optional(v.string(), () => v4()),\n extra: v.optional(extraData),\n});\nexport const CommonDataDefine = v.object({\n ...baseDataDefine.entries,\n value: v.any(),\n});\nexport type CommonDataType = v.InferOutput<typeof CommonDataDefine>;\n\nexport const LLMDataDefine = v.object({\n ...baseDataDefine.entries,\n type: v.optional(v.literal('chat-stream'), 'chat-stream'),\n // 用来进行普通查询\n value: v.string(),\n extra: v.object({\n ...extraData.entries,\n content: v.string(),\n thinkContent: v.optional(v.string()),\n isThinking: v.optional(v.boolean()),\n delta: v.string(),\n historyList: v.custom<ChatMessageListOutputType>(Boolean),\n }),\n});\nexport type LLMWorkflowData = v.InferOutput<typeof LLMDataDefine>;\nexport function createLLMData(data: v.InferInput<typeof LLMDataDefine>) {\n return v.parse(LLMDataDefine, data);\n}\nexport function createResultData(data: v.InferInput<typeof CommonDataDefine>) {\n const result = v.parse(CommonDataDefine, data);\n result.nodeResult = true;\n return result;\n}\nexport type WorkflowStreamData =\n | v.InferOutput<typeof CommonDataDefine>\n | v.InferOutput<typeof LLMDataDefine>;\n\nexport function isChatStream(\n data: WorkflowStreamData,\n): data is LLMWorkflowData {\n return (\n !!data.extra && 'content' in data.extra && 'thinkContent' in data.extra\n );\n}\n", "import { Observer } from './type';\nimport { createLLMData, WorkflowStreamData } from './type2';\n\nexport class WorkflowEmitter {\n #ob?: Observer<WorkflowStreamData, any>;\n setObserver(ob: Observer<any, any>) {\n this.#ob = ob;\n }\n getObserver() {\n return this.#ob;\n }\n\n createLLMData = createLLMData;\n send(data: WorkflowStreamData) {\n if (this.#ob) {\n this.#ob.next(data);\n }\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["WorkflowNodeType", "import_view_angular_core", "import_view_angular_core", "v", "import_view_angular_core", "v", "import_uuid", "v"]
7
7
  }