@shenghuabi/workflow 1.0.4 → 1.0.6

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.
@@ -6,7 +6,7 @@ export declare const CHAT_NODE_DEFINE: v.LooseObjectSchema<{
6
6
  readonly data: v.LooseObjectSchema<{
7
7
  readonly config: v.SchemaWithPipe<readonly [v.ObjectSchema<{
8
8
  readonly llm: v.OptionalSchema<v.SchemaWithPipe<readonly [v.IntersectSchema<[v.SchemaWithPipe<readonly [v.IntersectSchema<[v.SchemaWithPipe<readonly [v.ObjectSchema<{
9
- readonly name: v.SchemaWithPipe<readonly [v.OptionalSchema<v.StringSchema<undefined>, undefined>, v.TitleAction<string | undefined, "预定义模型配置">, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", string | undefined, import("@piying/view-angular-core").AnyCoreSchemaHandle>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", string | undefined, import("@piying/view-angular-core").AnyCoreSchemaHandle>]>;
9
+ readonly name: v.SchemaWithPipe<readonly [v.OptionalSchema<v.StringSchema<undefined>, undefined>, v.TitleAction<string | undefined, "预定义模型配置">, import("@piying/valibot-visit").DefineTypeAction<string | undefined>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", string | undefined, import("@piying/view-angular-core").AnyCoreSchemaHandle>]>;
10
10
  readonly model: v.SchemaWithPipe<readonly [v.OptionalSchema<v.StringSchema<undefined>, undefined>, v.TitleAction<string | undefined, "模型">]>;
11
11
  readonly baseURL: v.SchemaWithPipe<readonly [v.OptionalSchema<v.StringSchema<undefined>, undefined>, v.TitleAction<string | undefined, "地址">]>;
12
12
  }, undefined>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", {
@@ -25,11 +25,11 @@ export declare const CHAT_NODE_DEFINE: v.LooseObjectSchema<{
25
25
  name?: string | undefined;
26
26
  model?: string | undefined;
27
27
  baseURL?: string | undefined;
28
- }>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", {
28
+ }>, import("@piying/valibot-visit").DefineTypeAction<{
29
29
  name?: string | undefined;
30
30
  model?: string | undefined;
31
31
  baseURL?: string | undefined;
32
- }, import("@piying/view-angular-core").AnyCoreSchemaHandle>]>, undefined>;
32
+ }>]>, undefined>;
33
33
  /** 处理时解析 */
34
34
  readonly responseFormat: v.SchemaWithPipe<readonly [v.OptionalSchema<v.PicklistSchema<readonly ["text", "json_object", "json_schema"], undefined>, undefined>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", "text" | "json_schema" | "json_object" | undefined, import("@piying/view-angular-core").AnyCoreSchemaHandle>, v.TitleAction<"text" | "json_schema" | "json_object" | undefined, "响应格式">]>;
35
35
  /** 处理后解析 */
@@ -130,7 +130,7 @@ export declare const CHAT_NODE_DEFINE: v.LooseObjectSchema<{
130
130
  type: "text";
131
131
  }[];
132
132
  thinkContent?: string | undefined;
133
- })[], undefined>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", ({
133
+ })[], undefined>, import("@piying/valibot-visit").DefineTypeAction<({
134
134
  role: "system";
135
135
  content: {
136
136
  text: string;
@@ -155,7 +155,7 @@ export declare const CHAT_NODE_DEFINE: v.LooseObjectSchema<{
155
155
  type: "text";
156
156
  }[];
157
157
  thinkContent?: string | undefined;
158
- })[], import("@piying/view-angular-core").AnyCoreSchemaHandle>, import("@piying/valibot-visit").ConditionAction<({
158
+ })[]>, import("@piying/valibot-visit").ConditionAction<({
159
159
  role: "system";
160
160
  content: {
161
161
  text: string;
@@ -5,7 +5,7 @@ export declare const ChatMainConfig: {
5
5
  readonly data: import("valibot").LooseObjectSchema<{
6
6
  readonly config: import("valibot").SchemaWithPipe<readonly [import("valibot").ObjectSchema<{
7
7
  readonly llm: import("valibot").OptionalSchema<import("valibot").SchemaWithPipe<readonly [import("valibot").IntersectSchema<[import("valibot").SchemaWithPipe<readonly [import("valibot").IntersectSchema<[import("valibot").SchemaWithPipe<readonly [import("valibot").ObjectSchema<{
8
- readonly name: import("valibot").SchemaWithPipe<readonly [import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>, import("valibot").TitleAction<string | undefined, "预定义模型配置">, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", string | undefined, import("@piying/view-angular-core").AnyCoreSchemaHandle>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", string | undefined, import("@piying/view-angular-core").AnyCoreSchemaHandle>]>;
8
+ readonly name: import("valibot").SchemaWithPipe<readonly [import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>, import("valibot").TitleAction<string | undefined, "预定义模型配置">, import("@piying/valibot-visit").DefineTypeAction<string | undefined>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", string | undefined, import("@piying/view-angular-core").AnyCoreSchemaHandle>]>;
9
9
  readonly model: import("valibot").SchemaWithPipe<readonly [import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>, import("valibot").TitleAction<string | undefined, "模型">]>;
10
10
  readonly baseURL: import("valibot").SchemaWithPipe<readonly [import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>, import("valibot").TitleAction<string | undefined, "地址">]>;
11
11
  }, undefined>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", {
@@ -24,11 +24,11 @@ export declare const ChatMainConfig: {
24
24
  name?: string | undefined;
25
25
  model?: string | undefined;
26
26
  baseURL?: string | undefined;
27
- }>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", {
27
+ }>, import("@piying/valibot-visit").DefineTypeAction<{
28
28
  name?: string | undefined;
29
29
  model?: string | undefined;
30
30
  baseURL?: string | undefined;
31
- }, import("@piying/view-angular-core").AnyCoreSchemaHandle>]>, undefined>;
31
+ }>]>, undefined>;
32
32
  readonly responseFormat: import("valibot").SchemaWithPipe<readonly [import("valibot").OptionalSchema<import("valibot").PicklistSchema<readonly ["text", "json_object", "json_schema"], undefined>, undefined>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", "text" | "json_schema" | "json_object" | undefined, import("@piying/view-angular-core").AnyCoreSchemaHandle>, import("valibot").TitleAction<"text" | "json_schema" | "json_object" | undefined, "响应格式">]>;
33
33
  readonly parseBy: import("valibot").SchemaWithPipe<readonly [import("valibot").OptionalSchema<import("valibot").PicklistSchema<readonly ["json", "markdown", "yaml"], undefined>, undefined>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", "json" | "markdown" | "yaml" | undefined, import("@piying/view-angular-core").AnyCoreSchemaHandle>, import("valibot").TitleAction<"json" | "markdown" | "yaml" | undefined, "返回解析">, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", "json" | "markdown" | "yaml" | undefined, import("@piying/view-angular-core").AnyCoreSchemaHandle>]>;
34
34
  readonly examples: import("valibot").SchemaWithPipe<readonly [import("valibot").OptionalSchema<import("valibot").ArraySchema<import("valibot").SchemaWithPipe<readonly [import("valibot").ObjectSchema<{
@@ -127,7 +127,7 @@ export declare const ChatMainConfig: {
127
127
  type: "text";
128
128
  }[];
129
129
  thinkContent?: string | undefined;
130
- })[], undefined>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", ({
130
+ })[], undefined>, import("@piying/valibot-visit").DefineTypeAction<({
131
131
  role: "system";
132
132
  content: {
133
133
  text: string;
@@ -152,7 +152,7 @@ export declare const ChatMainConfig: {
152
152
  type: "text";
153
153
  }[];
154
154
  thinkContent?: string | undefined;
155
- })[], import("@piying/view-angular-core").AnyCoreSchemaHandle>, import("@piying/valibot-visit").ConditionAction<({
155
+ })[]>, import("@piying/valibot-visit").ConditionAction<({
156
156
  role: "system";
157
157
  content: {
158
158
  text: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shenghuabi/workflow",
3
- "version": "1.0.4",
3
+ "version": "1.0.6",
4
4
  "description": "模板",
5
5
  "author": "wszgrcy",
6
6
  "sideEffects": false,
@@ -11,11 +11,13 @@
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.4",
15
- "static-injector": "^6.1.2"
14
+ "@shenghuabi/openai": "1.0.6",
15
+ "static-injector": "^6.1.2",
16
+ "@piying/view-angular-core": "^2.9.3",
17
+ "@piying/valibot-visit": "^1.3.11"
16
18
  },
17
19
  "dependencies": {
18
- "@angular/core": "^20.3.20",
20
+ "@angular/core": ">=20.3.20",
19
21
  "@xyflow/react": "^12.10.2",
20
22
  "graphology": "^0.26.0",
21
23
  "handlebars": "^4.7.9",
@@ -1,5 +1,5 @@
1
1
  import * as v from 'valibot';
2
2
  export declare const HandleDataDefine: v.SchemaWithPipe<readonly [v.OptionalSchema<v.ObjectSchema<{
3
- readonly output: v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.OptionalSchema<v.AnySchema, undefined>, import("@piying/valibot-visit").ConditionAction<any>]>, undefined>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", any[], import("@piying/view-angular-core").AnyCoreSchemaHandle>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", any[], import("@piying/view-angular-core").AnyCoreSchemaHandle>]>;
4
- readonly input: v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.OptionalSchema<v.AnySchema, undefined>, import("@piying/valibot-visit").ConditionAction<any>]>, undefined>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", any[], import("@piying/view-angular-core").AnyCoreSchemaHandle>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", any[], import("@piying/view-angular-core").AnyCoreSchemaHandle>]>;
3
+ readonly output: v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.OptionalSchema<v.AnySchema, undefined>, import("@piying/valibot-visit").ConditionAction<any>]>, undefined>, import("@piying/valibot-visit").DefineTypeAction<any[]>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", any[], import("@piying/view-angular-core").AnyCoreSchemaHandle>]>;
4
+ readonly input: v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.OptionalSchema<v.AnySchema, undefined>, import("@piying/valibot-visit").ConditionAction<any>]>, undefined>, import("@piying/valibot-visit").DefineTypeAction<any[]>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", any[], import("@piying/view-angular-core").AnyCoreSchemaHandle>]>;
5
5
  }, undefined>, undefined>, import("@piying/valibot-visit").ConditionAction<any>]>;
@@ -2,7 +2,7 @@ import * as v from 'valibot';
2
2
  export declare function llmModelConfig(item?: {
3
3
  label: string;
4
4
  }): v.SchemaWithPipe<readonly [v.IntersectSchema<[v.SchemaWithPipe<readonly [v.IntersectSchema<[v.SchemaWithPipe<readonly [v.ObjectSchema<{
5
- readonly name: v.SchemaWithPipe<readonly [v.OptionalSchema<v.StringSchema<undefined>, undefined>, v.TitleAction<string | undefined, "预定义模型配置">, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", string | undefined, import("@piying/view-angular-core").AnyCoreSchemaHandle>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", string | undefined, import("@piying/view-angular-core").AnyCoreSchemaHandle>]>;
5
+ readonly name: v.SchemaWithPipe<readonly [v.OptionalSchema<v.StringSchema<undefined>, undefined>, v.TitleAction<string | undefined, "预定义模型配置">, import("@piying/valibot-visit").DefineTypeAction<string | undefined>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", string | undefined, import("@piying/view-angular-core").AnyCoreSchemaHandle>]>;
6
6
  readonly model: v.SchemaWithPipe<readonly [v.OptionalSchema<v.StringSchema<undefined>, undefined>, v.TitleAction<string | undefined, "模型">]>;
7
7
  readonly baseURL: v.SchemaWithPipe<readonly [v.OptionalSchema<v.StringSchema<undefined>, undefined>, v.TitleAction<string | undefined, "地址">]>;
8
8
  }, undefined>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", {
@@ -21,9 +21,9 @@ export declare function llmModelConfig(item?: {
21
21
  name?: string | undefined;
22
22
  model?: string | undefined;
23
23
  baseURL?: string | undefined;
24
- }>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", {
24
+ }>, import("@piying/valibot-visit").DefineTypeAction<{
25
25
  name?: string | undefined;
26
26
  model?: string | undefined;
27
27
  baseURL?: string | undefined;
28
- }, import("@piying/view-angular-core").AnyCoreSchemaHandle>]>;
28
+ }>]>;
29
29
  export type ModelInputConfig = v.InferOutput<ReturnType<typeof llmModelConfig>>;
package/share/index.js CHANGED
@@ -91,7 +91,7 @@ var v = __toESM(require("valibot"), 1);
91
91
  // packages/workflow/share/util/layout.ts
92
92
  var import_view_angular_core = require("@piying/view-angular-core");
93
93
  function asColumn() {
94
- return (0, import_view_angular_core.componentClass)("grid gap-2");
94
+ return import_view_angular_core.actions.class.component("grid gap-2");
95
95
  }
96
96
 
97
97
  // packages/workflow/share/common/examples.define.ts
@@ -107,23 +107,23 @@ var EXAMPLES_DEFINE = v.pipe(
107
107
  v.description(
108
108
  "选中后会尝试使用yaml解析为对象,再序列化为对应的响应类型"
109
109
  ),
110
- (0, import_view_angular_core2.patchWrappers)(["tooltip"])
110
+ import_view_angular_core2.actions.wrappers.set(["tooltip"])
111
111
  ),
112
- value: v.pipe(v.string(), v.title("问题"), (0, import_view_angular_core2.topClass)("flex-1"))
112
+ value: v.pipe(v.string(), v.title("问题"), import_view_angular_core2.actions.class.top("flex-1"))
113
113
  }),
114
114
  // todo 待修复
115
- (0, import_view_angular_core2.topClass)("flex gap-2 items-center")
115
+ import_view_angular_core2.actions.class.top("flex gap-2 items-center")
116
116
  ),
117
117
  output: v.pipe(
118
118
  v.object({
119
119
  format: v.pipe(
120
120
  v.optional(v.boolean(), false),
121
121
  v.description("是否需要格式化"),
122
- (0, import_view_angular_core2.patchWrappers)(["tooltip"])
122
+ import_view_angular_core2.actions.wrappers.set(["tooltip"])
123
123
  ),
124
- value: v.pipe(v.string(), v.title("回答"), (0, import_view_angular_core2.topClass)("flex-1"))
124
+ value: v.pipe(v.string(), v.title("回答"), import_view_angular_core2.actions.class.top("flex-1"))
125
125
  }),
126
- (0, import_view_angular_core2.topClass)("flex gap-2 items-center")
126
+ import_view_angular_core2.actions.class.top("flex gap-2 items-center")
127
127
  )
128
128
  }),
129
129
  asColumn()
@@ -178,8 +178,8 @@ var INLINE_Template = v3.pipe(
178
178
  v3.optional(v3.string(), "{{NODE.description}}"),
179
179
  v3.title("模板"),
180
180
  v3.description("允许使用变量:{{NODE.xxx}}(参考节点帮助)"),
181
- (0, import_view_angular_core4.setWrappers)(["tooltip", "form-field"]),
182
- (0, import_view_angular_core4.topClass)("flex-1"),
181
+ import_view_angular_core4.actions.wrappers.set(["tooltip", "form-field"]),
182
+ import_view_angular_core4.actions.class.top("flex-1"),
183
183
  (0, import_view_angular_core4.disableWhen)({
184
184
  listen: (fn) => fn({
185
185
  list: [["..", "enable"]]
@@ -187,7 +187,7 @@ var INLINE_Template = v3.pipe(
187
187
  })
188
188
  )
189
189
  }),
190
- (0, import_view_angular_core4.componentClass)("flex gap-2")
190
+ import_view_angular_core4.actions.class.component("flex gap-2")
191
191
  );
192
192
  var INLINE_Template2 = v3.pipe(
193
193
  v3.object({
@@ -197,8 +197,8 @@ var INLINE_Template2 = v3.pipe(
197
197
  v3.optional(v3.string()),
198
198
  v3.title("模板"),
199
199
  v3.description("允许使用变量:{{ENTRY.xxx}}(参考节点帮助)"),
200
- (0, import_view_angular_core4.setWrappers)(["tooltip", "form-field"]),
201
- (0, import_view_angular_core4.topClass)("flex-1"),
200
+ import_view_angular_core4.actions.wrappers.set(["tooltip", "form-field"]),
201
+ import_view_angular_core4.actions.class.top("flex-1"),
202
202
  (0, import_view_angular_core4.disableWhen)({
203
203
  listen: (fn) => fn({
204
204
  list: [["..", "enable"]]
@@ -206,7 +206,7 @@ var INLINE_Template2 = v3.pipe(
206
206
  })
207
207
  )
208
208
  }),
209
- (0, import_view_angular_core4.componentClass)("flex gap-2 items-center")
209
+ import_view_angular_core4.actions.class.component("flex gap-2 items-center")
210
210
  );
211
211
 
212
212
  // packages/workflow/share/common/llm.define.ts
@@ -224,7 +224,7 @@ function llmModelConfig(item) {
224
224
  v4.optional(v4.string()),
225
225
  v4.title("预定义模型配置"),
226
226
  (0, import_view_angular_core5.setComponent)("select"),
227
- (0, import_view_angular_core5.patchAsyncInputs)({
227
+ import_view_angular_core5.actions.inputs.patchAsync({
228
228
  options: (field) => field.context.getModelList()
229
229
  })
230
230
  ),
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
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 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 * 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 {\n componentClass,\n disableWhen,\n setWrappers,\n topClass,\n} 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 setWrappers(['tooltip', 'form-field']),\n topClass('flex-1'),\n\n disableWhen({\n listen: (fn) =>\n fn({\n list: [['..', 'enable']],\n }).pipe(map(({ list }) => !list[0])),\n }),\n ),\n }),\n componentClass('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 setWrappers(['tooltip', 'form-field']),\n\n topClass('flex-1'),\n\n disableWhen({\n listen: (fn) =>\n fn({\n list: [['..', 'enable']],\n }).pipe(map(({ list }) => !list[0])),\n }),\n ),\n }),\n componentClass('flex gap-2 items-center'),\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", "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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",
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.class.component<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 actions.class.component<TInput>('grid gap-2');\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 {\n actions,\n disableWhen,\n} 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', 'form-field']),\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.class.component('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', 'form-field']),\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.class.component('flex gap-2 items-center'),\n);\n", "import {\n asVirtualGroup,\n actions,\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 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 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
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"]
7
7
  }
package/share/index.mjs CHANGED
@@ -33,17 +33,16 @@ var WorkflowNodeType = /* @__PURE__ */ ((WorkflowNodeType2) => {
33
33
 
34
34
  // packages/workflow/share/common/examples.define.ts
35
35
  import {
36
+ actions as actions2,
36
37
  condition,
37
- patchWrappers,
38
- renderConfig,
39
- topClass
38
+ renderConfig
40
39
  } from "@piying/view-angular-core";
41
40
  import * as v from "valibot";
42
41
 
43
42
  // packages/workflow/share/util/layout.ts
44
- import { componentClass } from "@piying/view-angular-core";
43
+ import { actions } from "@piying/view-angular-core";
45
44
  function asColumn() {
46
- return componentClass("grid gap-2");
45
+ return actions.class.component("grid gap-2");
47
46
  }
48
47
 
49
48
  // packages/workflow/share/common/examples.define.ts
@@ -59,23 +58,23 @@ var EXAMPLES_DEFINE = v.pipe(
59
58
  v.description(
60
59
  "选中后会尝试使用yaml解析为对象,再序列化为对应的响应类型"
61
60
  ),
62
- patchWrappers(["tooltip"])
61
+ actions2.wrappers.set(["tooltip"])
63
62
  ),
64
- value: v.pipe(v.string(), v.title("问题"), topClass("flex-1"))
63
+ value: v.pipe(v.string(), v.title("问题"), actions2.class.top("flex-1"))
65
64
  }),
66
65
  // todo 待修复
67
- topClass("flex gap-2 items-center")
66
+ actions2.class.top("flex gap-2 items-center")
68
67
  ),
69
68
  output: v.pipe(
70
69
  v.object({
71
70
  format: v.pipe(
72
71
  v.optional(v.boolean(), false),
73
72
  v.description("是否需要格式化"),
74
- patchWrappers(["tooltip"])
73
+ actions2.wrappers.set(["tooltip"])
75
74
  ),
76
- value: v.pipe(v.string(), v.title("回答"), topClass("flex-1"))
75
+ value: v.pipe(v.string(), v.title("回答"), actions2.class.top("flex-1"))
77
76
  }),
78
- topClass("flex gap-2 items-center")
77
+ actions2.class.top("flex gap-2 items-center")
79
78
  )
80
79
  }),
81
80
  asColumn()
@@ -120,10 +119,8 @@ var HandleDataDefine = v2.pipe(
120
119
 
121
120
  // packages/workflow/share/common/inline-template.define.ts
122
121
  import {
123
- componentClass as componentClass2,
124
- disableWhen,
125
- setWrappers,
126
- topClass as topClass2
122
+ actions as actions3,
123
+ disableWhen
127
124
  } from "@piying/view-angular-core";
128
125
  import { map } from "rxjs";
129
126
  import * as v3 from "valibot";
@@ -135,8 +132,8 @@ var INLINE_Template = v3.pipe(
135
132
  v3.optional(v3.string(), "{{NODE.description}}"),
136
133
  v3.title("模板"),
137
134
  v3.description("允许使用变量:{{NODE.xxx}}(参考节点帮助)"),
138
- setWrappers(["tooltip", "form-field"]),
139
- topClass2("flex-1"),
135
+ actions3.wrappers.set(["tooltip", "form-field"]),
136
+ actions3.class.top("flex-1"),
140
137
  disableWhen({
141
138
  listen: (fn) => fn({
142
139
  list: [["..", "enable"]]
@@ -144,7 +141,7 @@ var INLINE_Template = v3.pipe(
144
141
  })
145
142
  )
146
143
  }),
147
- componentClass2("flex gap-2")
144
+ actions3.class.component("flex gap-2")
148
145
  );
149
146
  var INLINE_Template2 = v3.pipe(
150
147
  v3.object({
@@ -154,8 +151,8 @@ var INLINE_Template2 = v3.pipe(
154
151
  v3.optional(v3.string()),
155
152
  v3.title("模板"),
156
153
  v3.description("允许使用变量:{{ENTRY.xxx}}(参考节点帮助)"),
157
- setWrappers(["tooltip", "form-field"]),
158
- topClass2("flex-1"),
154
+ actions3.wrappers.set(["tooltip", "form-field"]),
155
+ actions3.class.top("flex-1"),
159
156
  disableWhen({
160
157
  listen: (fn) => fn({
161
158
  list: [["..", "enable"]]
@@ -163,13 +160,13 @@ var INLINE_Template2 = v3.pipe(
163
160
  })
164
161
  )
165
162
  }),
166
- componentClass2("flex gap-2 items-center")
163
+ actions3.class.component("flex gap-2 items-center")
167
164
  );
168
165
 
169
166
  // packages/workflow/share/common/llm.define.ts
170
167
  import {
171
168
  asVirtualGroup,
172
- patchAsyncInputs,
169
+ actions as actions4,
173
170
  setComponent as setComponent2
174
171
  } from "@piying/view-angular-core";
175
172
  import { condition as condition3 } from "@piying/valibot-visit";
@@ -185,7 +182,7 @@ function llmModelConfig(item) {
185
182
  v4.optional(v4.string()),
186
183
  v4.title("预定义模型配置"),
187
184
  setComponent2("select"),
188
- patchAsyncInputs({
185
+ actions4.inputs.patchAsync({
189
186
  options: (field) => field.context.getModelList()
190
187
  })
191
188
  ),
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../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 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 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 * 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 {\n componentClass,\n disableWhen,\n setWrappers,\n topClass,\n} 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 setWrappers(['tooltip', 'form-field']),\n topClass('flex-1'),\n\n disableWhen({\n listen: (fn) =>\n fn({\n list: [['..', 'enable']],\n }).pipe(map(({ list }) => !list[0])),\n }),\n ),\n }),\n componentClass('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 setWrappers(['tooltip', 'form-field']),\n\n topClass('flex-1'),\n\n disableWhen({\n listen: (fn) =>\n fn({\n list: [['..', 'enable']],\n }).pipe(map(({ list }) => !list[0])),\n }),\n ),\n }),\n componentClass('flex gap-2 items-center'),\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", "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", "v", "renderConfig", "condition", "componentClass", "topClass", "v", "setComponent", "condition", "v", "setComponent", "condition", "v4", "v"]
4
+ "sourcesContent": ["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.class.component<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 actions.class.component<TInput>('grid gap-2');\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 {\n actions,\n disableWhen,\n} 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', 'form-field']),\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.class.component('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', 'form-field']),\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.class.component('flex gap-2 items-center'),\n);\n", "import {\n asVirtualGroup,\n actions,\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 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 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": ";AAAO,IAAM,oBAAoB;AAC1B,IAAM,UAAU;AAAA,EACrB,iBAAiB;AAAA,EACjB,cAAc;AAChB;;;ACaO,SAAS,qBAAqB,MAAkC;AACrE,MAAI,CAAC,MAAM;AACT,WAAO,CAAC;AAAA,EACV;AACA,SAAO,KAAK,KAAK,EAAE,OAAO,OAAO;AACnC;;;ACtBA,SAAS,UAAU;AACnB,IAAM,UAAU;AACT,SAAS,eAAe,OAAe,QAAQ,OAAO;AAC3D,SAAO,EAAE,IAAI,GAAG,OAAO,OAAO,GAAG,OAAc,MAAa;AAC9D;;;ACJO,IAAW,mBAAX,kBAAWA,sBAAX;AACL,EAAAA,kBAAA,eAAc;AACd,EAAAA,kBAAA,oBAAmB;AACnB,EAAAA,kBAAA,iBAAgB;AAChB,EAAAA,kBAAA,eAAc;AACd,EAAAA,kBAAA,gBAAa;AACb,EAAAA,kBAAA,qBAAkB;AANF,SAAAA;AAAA,GAAA;;;ACAlB;AAAA,EACE,WAAAC;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,YAAY,OAAO;;;ACLnB,SAAS,eAAe;AASjB,SAAS,WAAmB;AACjC,SAAO,QAAQ,MAAM,UAAkB,YAAY;AACrD;;;ADHO,IAAM,kBAAoB;AAAA,EAC7B;AAAA,IACE;AAAA,MACE;AAAA,QACE,SAAO;AAAA,UACP,OAAS;AAAA,YACL,SAAO;AAAA,cACP,QAAU;AAAA,gBACN,WAAW,UAAQ,GAAG,KAAK;AAAA,gBAC3B;AAAA,kBACA;AAAA,gBACF;AAAA,gBACAC,SAAQ,SAAS,IAAI,CAAC,SAAS,CAAC;AAAA,cAClC;AAAA,cACA,OAAS,OAAO,SAAO,GAAK,QAAM,IAAI,GAAGA,SAAQ,MAAM,IAAI,QAAQ,CAAC;AAAA,YACtE,CAAC;AAAA;AAAA,YAEDA,SAAQ,MAAM,IAAI,yBAAyB;AAAA,UAC7C;AAAA,UAEA,QAAU;AAAA,YACN,SAAO;AAAA,cACP,QAAU;AAAA,gBACN,WAAW,UAAQ,GAAG,KAAK;AAAA,gBAC3B,cAAY,SAAS;AAAA,gBACvBA,SAAQ,SAAS,IAAI,CAAC,SAAS,CAAC;AAAA,cAClC;AAAA,cACA,OAAS,OAAO,SAAO,GAAK,QAAM,IAAI,GAAGA,SAAQ,MAAM,IAAI,QAAQ,CAAC;AAAA,YACtE,CAAC;AAAA,YACDA,SAAQ,MAAM,IAAI,yBAAyB;AAAA,UAC7C;AAAA,QACF,CAAC;AAAA,QACD,SAAS;AAAA,MACX;AAAA,IACF;AAAA,IACA,CAAC;AAAA,EACH;AAAA,EACE,QAAM,IAAI;AAAA,EACV,cAAY,8BAA8B;AAAA,EAC5C,UAAU;AAAA,IACR,cAAc,CAAC,SAAS;AAAA,IACxB,SAAS;AAAA,MACP,aAAa;AAAA,QACX,QAAQ;AAAA,MACV,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AACH;;;AEvDA,YAAYC,QAAO;AACnB,SAAS,gBAAAC,eAAc,oBAAoB;AAC3C,SAAS,aAAAC,kBAAiB;AAC1B,IAAM,eAAeA,WAAe;AAAA,EAClC,cAAc,CAAC,WAAW,SAAS;AAAA,EACnC,SAAS,CAAC,aAAa,EAAE,GAAGD,cAAa,EAAE,QAAQ,KAAK,CAAC,CAAC;AAC5D,CAAC;AACD,IAAM,gBAAkB;AAAA,EACpB,SAAQ,QAAO,YAAW,OAAI,CAAC,GAAG,YAAY,CAAC;AAAA,EACjD,aAAa,EAAE;AAAA,EACfA,cAAa,EAAE,QAAQ,KAAK,CAAC;AAC/B;AACO,IAAM,mBAAqB;AAAA,EAC9B;AAAA,IACE,UAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO;AAAA,IACT,CAAC;AAAA,EACH;AAAA,EACA;AACF;;;ACpBA;AAAA,EACE,WAAAE;AAAA,EACA;AAAA,OACK;AACP,SAAS,WAAW;AACpB,YAAYC,QAAO;AAEZ,IAAM,kBAAoB;AAAA,EAC7B,UAAO;AAAA,IACP,QAAU,YAAW,WAAQ,GAAG,IAAI;AAAA;AAAA,IAEpC,OAAS;AAAA,MACL,YAAW,UAAO,GAAG,sBAAsB;AAAA,MAC3C,SAAM,IAAI;AAAA,MACV,eAAY,6BAA6B;AAAA,MAC3CD,SAAQ,SAAS,IAAI,CAAC,WAAW,YAAY,CAAC;AAAA,MAC9CA,SAAQ,MAAM,IAAI,QAAQ;AAAA,MAE1B,YAAY;AAAA,QACV,QAAQ,CAAC,OACP,GAAG;AAAA,UACD,MAAM,CAAC,CAAC,MAAM,QAAQ,CAAC;AAAA,QACzB,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAAA,MACvC,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AAAA,EACDA,SAAQ,MAAM,UAAU,YAAY;AACtC;AACO,IAAM,mBAAqB;AAAA,EAC9B,UAAO;AAAA,IACP,QAAU,YAAW,WAAQ,GAAG,KAAK;AAAA;AAAA,IAErC,OAAS;AAAA,MACL,YAAW,UAAO,CAAC;AAAA,MACnB,SAAM,IAAI;AAAA,MACV,eAAY,8BAA8B;AAAA,MAC5CA,SAAQ,SAAS,IAAI,CAAC,WAAW,YAAY,CAAC;AAAA,MAE9CA,SAAQ,MAAM,IAAI,QAAQ;AAAA,MAE1B,YAAY;AAAA,QACV,QAAQ,CAAC,OACP,GAAG;AAAA,UACD,MAAM,CAAC,CAAC,MAAM,QAAQ,CAAC;AAAA,QACzB,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAAA,MACvC,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AAAA,EACDA,SAAQ,MAAM,UAAU,yBAAyB;AACnD;;;ACjDA;AAAA,EACE;AAAA,EACA,WAAAE;AAAA,EACA,gBAAAC;AAAA,OACK;AACP,SAAS,aAAAC,kBAAiB;AAC1B,YAAYC,QAAO;AAEZ,SAAS,eAAe,MAA0B;AACvD,SAAS;AAAA,IACL,aAAU;AAAA,MACR;AAAA,QACE,aAAU;AAAA,UACR;AAAA,YACE,UAAO;AAAA,cACP,MAAQ;AAAA,gBACJ,YAAW,UAAO,CAAC;AAAA,gBACnB,SAAM,SAAS;AAAA,gBACjBC,cAAa,QAAQ;AAAA,gBACrBC,SAAQ,OAAO,WAAW;AAAA,kBACxB,SAAS,CAAC,UAAU,MAAM,QAAS,aAAa;AAAA,gBAClD,CAAC;AAAA,cACH;AAAA,cACA,OAAS,QAAO,YAAW,UAAO,CAAC,GAAK,SAAM,IAAI,CAAC;AAAA;AAAA,cAGnD,SAAW,QAAO,YAAW,UAAO,CAAC,GAAK,SAAM,IAAI,CAAC;AAAA,YACvD,CAAC;AAAA,YACD,SAAS;AAAA,UACX;AAAA,QACF,CAAC;AAAA,QACC,SAAM,MAAM,SAAS,MAAM;AAAA,QAC7BC,WAAU;AAAA,UACR,cAAc,CAAC,WAAW,QAAQ;AAAA,UAClC,SAAS,CAAC,eAAe,CAAC;AAAA,QAC5B,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AAAA,IACDA,WAAU;AAAA,MACR,cAAc,CAAC,WAAW,QAAQ;AAAA,MAClC,SAAS,CAAC,eAAe,CAAC;AAAA,IAC5B,CAAC;AAAA,IACDF,cAAa,WAAW;AAAA,EAC1B;AACF;;;AC5CO,IAAM,0BAA0B;AAChC,IAAM,2BAA2B;;;ACDxC,SAAS,MAAAG,WAAU;AAGnB,YAAYC,QAAO;AAgBnB,IAAM,YAAc,eAAY;AAAA,EAC9B,YAAc,YAAW,SAAQ,UAAqB,OAAO,CAAC,CAAC;AACjE,CAAC;AACD,IAAM,iBAAmB,UAAO;AAAA,EAC9B,MAAQ,UAAO,EAAE,MAAQ,UAAO,GAAG,IAAM,UAAO,EAAE,CAAC;AAAA,EACnD,YAAc,QAAO,YAAW,WAAQ,GAAG,KAAK,CAAC;AAAA,EACjD,QAAU,YAAW,UAAO,GAAG,MAAMD,IAAG,CAAC;AAAA,EACzC,OAAS,YAAS,SAAS;AAC7B,CAAC;AACM,IAAM,mBAAqB,UAAO;AAAA,EACvC,GAAG,eAAe;AAAA,EAClB,OAAS,OAAI;AACf,CAAC;AAGM,IAAM,gBAAkB,UAAO;AAAA,EACpC,GAAG,eAAe;AAAA,EAClB,MAAQ,YAAW,WAAQ,aAAa,GAAG,aAAa;AAAA;AAAA,EAExD,OAAS,UAAO;AAAA,EAChB,OAAS,UAAO;AAAA,IACd,GAAG,UAAU;AAAA,IACb,SAAW,UAAO;AAAA,IAClB,cAAgB,YAAW,UAAO,CAAC;AAAA,IACnC,YAAc,YAAW,WAAQ,CAAC;AAAA,IAClC,OAAS,UAAO;AAAA,IAChB,aAAe,UAAkC,OAAO;AAAA,EAC1D,CAAC;AACH,CAAC;AAEM,SAAS,cAAc,MAA0C;AACtE,SAAS,SAAM,eAAe,IAAI;AACpC;AACO,SAAS,iBAAiB,MAA6C;AAC5E,QAAM,SAAW,SAAM,kBAAkB,IAAI;AAC7C,SAAO,aAAa;AACpB,SAAO;AACT;AAKO,SAAS,aACd,MACyB;AACzB,SACE,CAAC,CAAC,KAAK,SAAS,aAAa,KAAK,SAAS,kBAAkB,KAAK;AAEtE;;;AChEO,IAAM,kBAAN,MAAsB;AAAA,EAC3B;AAAA,EACA,YAAY,IAAwB;AAClC,SAAK,MAAM;AAAA,EACb;AAAA,EACA,cAAc;AACZ,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,gBAAgB;AAAA,EAChB,KAAK,MAA0B;AAC7B,QAAI,KAAK,KAAK;AACZ,WAAK,IAAI,KAAK,IAAI;AAAA,IACpB;AAAA,EACF;AACF;",
6
+ "names": ["WorkflowNodeType", "actions", "actions", "v", "renderConfig", "condition", "actions", "v", "actions", "setComponent", "condition", "v", "setComponent", "actions", "condition", "v4", "v"]
7
7
  }