@shenghuabi/workflow 1.1.7 → 1.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.d.ts +1 -0
- package/index.js +39 -38
- package/index.js.map +4 -4
- package/index.mjs +37 -37
- package/index.mjs.map +4 -4
- package/inline/node/input-params/main/index.d.ts +3 -0
- package/inline/node/input-params/node.define.d.ts +3 -0
- package/package.json +2 -2
- package/preset/context-build.service.d.ts +31 -28
- package/share/handle-node.d.ts +4 -0
- package/share/index.js.map +1 -1
- package/share/index.mjs.map +1 -1
- package/share/type2.d.ts +1 -1
- package/{inline/node/chat/util → util}/useChat.d.ts +1 -1
- package/webview/index.js +18 -8
- package/webview/index.js.map +2 -2
- package/webview/index.mjs +18 -8
- package/webview/index.mjs.map +2 -2
- package/workflow-exec.service.d.ts +8 -19
|
@@ -2,8 +2,11 @@ import * as v from 'valibot';
|
|
|
2
2
|
export declare const InputParams_NODE_DEFINE: v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
3
3
|
/** 入口点通过不同的选择,提供不同的数据 */
|
|
4
4
|
readonly type: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, import("@piying/valibot-visit").DefineTypeAction<string>, 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>, v.TitleAction<string, "输入类型">]>;
|
|
5
|
+
readonly editorInput: v.SchemaWithPipe<readonly [v.OptionalSchema<v.BooleanSchema<undefined>, undefined>, v.TitleAction<boolean | undefined, "编辑器输入">, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", boolean | undefined, import("@piying/view-angular-core").AnyCoreSchemaHandle>]>;
|
|
5
6
|
}, undefined>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", {
|
|
6
7
|
type: string;
|
|
8
|
+
editorInput?: boolean | undefined;
|
|
7
9
|
}, import("@piying/view-angular-core").AnyCoreSchemaHandle>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", {
|
|
8
10
|
type: string;
|
|
11
|
+
editorInput?: boolean | undefined;
|
|
9
12
|
}, import("@piying/view-angular-core").AnyCoreSchemaHandle>]>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shenghuabi/workflow",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.9",
|
|
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.1.
|
|
14
|
+
"@shenghuabi/openai": "1.1.9",
|
|
15
15
|
"static-injector": "^6.1.2",
|
|
16
16
|
"@piying/view-angular-core": "^2.9.3",
|
|
17
17
|
"@piying/valibot-visit": "^1.3.11"
|
|
@@ -7,7 +7,6 @@ export declare class ContextBuildService {
|
|
|
7
7
|
parser: WorkflowParserService;
|
|
8
8
|
createWorkflow(input: {
|
|
9
9
|
template: ChatMessageListInputType;
|
|
10
|
-
input: Record<string, any>;
|
|
11
10
|
}): {
|
|
12
11
|
nodes: {
|
|
13
12
|
id: string;
|
|
@@ -20,35 +19,39 @@ export declare class ContextBuildService {
|
|
|
20
19
|
value: string;
|
|
21
20
|
}[][];
|
|
22
21
|
};
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
22
|
+
config: {
|
|
23
|
+
value: {
|
|
24
|
+
value: ({
|
|
25
|
+
role: "system";
|
|
26
|
+
content: {
|
|
27
|
+
text: string;
|
|
28
|
+
type: "text";
|
|
29
|
+
}[];
|
|
30
|
+
} | {
|
|
31
|
+
role: "user";
|
|
32
|
+
content: ({
|
|
33
|
+
text: string;
|
|
34
|
+
type: "text";
|
|
35
|
+
} | {
|
|
36
|
+
image_url: {
|
|
37
|
+
url: string;
|
|
38
|
+
detail?: "auto" | "low" | "high" | undefined;
|
|
39
|
+
};
|
|
40
|
+
type: "image_url";
|
|
41
|
+
})[];
|
|
42
|
+
} | {
|
|
43
|
+
role: "assistant";
|
|
44
|
+
content: {
|
|
45
|
+
text: string;
|
|
46
|
+
type: "text";
|
|
47
|
+
}[];
|
|
48
|
+
thinkContent?: string | undefined;
|
|
49
|
+
})[];
|
|
50
|
+
};
|
|
51
|
+
};
|
|
50
52
|
};
|
|
51
53
|
type: string;
|
|
52
54
|
}[];
|
|
55
|
+
edges: never[];
|
|
53
56
|
};
|
|
54
57
|
}
|
package/share/handle-node.d.ts
CHANGED
|
@@ -60,6 +60,10 @@ export interface WorkflowNodeData {
|
|
|
60
60
|
/** 工作流定义 */
|
|
61
61
|
export interface WorkflowData {
|
|
62
62
|
flow: ReactFlowJsonObject<Node<WorkflowNodeData>>;
|
|
63
|
+
options?: {
|
|
64
|
+
/** input-patams负责修改 */
|
|
65
|
+
editorInput?: boolean;
|
|
66
|
+
};
|
|
63
67
|
version: number;
|
|
64
68
|
}
|
|
65
69
|
/** 解析后runner使用 */
|
package/share/index.js.map
CHANGED
|
@@ -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/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 './workflow.const';\nexport * from './common';\nexport * from './type2';\nexport * from './workflow.emit';\n", "export 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';\nexport type InputInvalidItem = { key: (string | number)[] };\n\nexport type InputRefItem = {\n /** 上游节点 id */\n value: string;\n /** 出口名 */\n outlet?: string;\n /** 键 */\n key: (string | number)[];\n};\nexport type InputContextItem = {\n /** 容器节点 id */\n value: string;\n /** 上下文中提供的 */\n contextKey: string;\n /** 键 */\n key: (string | number)[];\n};\n\nexport type InputItem = InputRefItem | InputInvalidItem | InputContextItem;\n// todo 优化\nexport interface HandleNode {\n /** 唯一,用来查询 */\n id: string;\n /** 一般表示key */\n name?: string;\n /** 应该应用于tooltip显示,不应该被其他显示 */\n label?: string;\n type?: 'connect' | (string & {});\n /** todo */\n validateType?: ChatInputType[];\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\nexport interface WorkflowNodeData {\n config?: {\n refList?: InputRefItem[];\n invalidList?: InputInvalidItem[];\n value?: Record<string, any>;\n };\n style?: Record<string, any>;\n handle?: {\n output: HandleNode[][];\n };\n minSize?: {\n height: number;\n width: number;\n };\n transform?: {\n resizable?: boolean;\n };\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}\n\n/** 解析后runner使用 */\nexport interface ParsedNode {\n id: string;\n parentId?: string;\n type: WorkflowNodeType;\n // todo 因为加上Omit会导致类型不识别\n data: WorkflowNodeData;\n context: { id: string; output: string; rest: boolean }[];\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", "export const enum WorkflowNodeType {\n 'iteration' = 'iteration',\n 'iterationStart' = 'iteration-start',\n 'inputParams' = 'input-params',\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", "import { HandleNode } from '../handle-node';\n\n/** 导出使用,默认给所有节点加一个出口, */\nexport const RUNNER_ORIGIN_OUTPUT: HandleNode[] = [\n { id: 'default', label: '默认', name: `default` },\n];\n", "import { v4 } from 'uuid';\nimport type { ChatMessageListOutputType } from '@shenghuabi/openai';\nimport * as v from 'valibot';\nimport { ChatMetadata } from './type';\nimport { InputInvalidItem } from './handle-node';\n\nexport type WorkflowRunnerEnvironmentParams = Record<string, any>;\nexport type WorkflowRunnerInputsWithContext = {\n inputs
|
|
4
|
+
"sourcesContent": ["export * from './type';\nexport * from './const';\nexport * from './handle-node';\nexport * from './workflow.const';\nexport * from './common';\nexport * from './type2';\nexport * from './workflow.emit';\n", "export 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';\nexport type InputInvalidItem = { key: (string | number)[] };\n\nexport type InputRefItem = {\n /** 上游节点 id */\n value: string;\n /** 出口名 */\n outlet?: string;\n /** 键 */\n key: (string | number)[];\n};\nexport type InputContextItem = {\n /** 容器节点 id */\n value: string;\n /** 上下文中提供的 */\n contextKey: string;\n /** 键 */\n key: (string | number)[];\n};\n\nexport type InputItem = InputRefItem | InputInvalidItem | InputContextItem;\n// todo 优化\nexport interface HandleNode {\n /** 唯一,用来查询 */\n id: string;\n /** 一般表示key */\n name?: string;\n /** 应该应用于tooltip显示,不应该被其他显示 */\n label?: string;\n type?: 'connect' | (string & {});\n /** todo */\n validateType?: ChatInputType[];\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\nexport interface WorkflowNodeData {\n config?: {\n refList?: InputRefItem[];\n invalidList?: InputInvalidItem[];\n value?: Record<string, any>;\n };\n style?: Record<string, any>;\n handle?: {\n output: HandleNode[][];\n };\n minSize?: {\n height: number;\n width: number;\n };\n transform?: {\n resizable?: boolean;\n };\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 options?: {\n /** input-patams负责修改 */\n editorInput?: boolean;\n };\n version: number;\n}\n\n/** 解析后runner使用 */\nexport interface ParsedNode {\n id: string;\n parentId?: string;\n type: WorkflowNodeType;\n // todo 因为加上Omit会导致类型不识别\n data: WorkflowNodeData;\n context: { id: string; output: string; rest: boolean }[];\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", "export const enum WorkflowNodeType {\n 'iteration' = 'iteration',\n 'iterationStart' = 'iteration-start',\n 'inputParams' = 'input-params',\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", "import { HandleNode } from '../handle-node';\n\n/** 导出使用,默认给所有节点加一个出口, */\nexport const RUNNER_ORIGIN_OUTPUT: HandleNode[] = [\n { id: 'default', label: '默认', name: `default` },\n];\n", "import { v4 } from 'uuid';\nimport type { ChatMessageListOutputType } from '@shenghuabi/openai';\nimport * as v from 'valibot';\nimport { ChatMetadata } from './type';\nimport { InputInvalidItem } from './handle-node';\n\nexport type WorkflowRunnerEnvironmentParams = Record<string, any>;\nexport type WorkflowRunnerInputsWithContext = {\n inputs?: Record<string, (InputInvalidItem & { value: any })[]>;\n environmentParameters?: WorkflowRunnerEnvironmentParams;\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", "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
5
|
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAO,IAAM,UAAU;AAAA,EACrB,iBAAiB;AAAA,EACjB,cAAc;AAChB;;;ACiCO,SAAS,qBAAqB,MAAkC;AACrE,MAAI,CAAC,MAAM;AACT,WAAO,CAAC;AAAA,EACV;AACA,SAAO,KAAK,KAAK,EAAE,OAAO,OAAO;AACnC;;;ACzCO,IAAW,mBAAX,kBAAWA,sBAAX;AACL,EAAAA,kBAAA,eAAc;AACd,EAAAA,kBAAA,oBAAmB;AACnB,EAAAA,kBAAA,iBAAgB;AAHA,SAAAA;AAAA,GAAA;;;ACAlB,IAAAC,4BAAwB;AACxB,QAAmB;;;ACDnB,+BAAwB;AAejB,SAAS,WAAmB;AACjC,SAAO,iCAAQ,SAAS,MAAc;AAAA,IACpC;AAAA,MACE,MAAM;AAAA,MACN,YAAY;AAAA,QACV,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF,CAAC;AACH;;;ADpBO,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,gBACA,kCAAQ,SAAS,IAAI,CAAC,SAAS,CAAC;AAAA,cAClC;AAAA,cACA,OAAS;AAAA,gBACL,SAAO;AAAA,gBACP,QAAM,IAAI;AAAA,gBACZ,kCAAQ,MAAM,IAAI,QAAQ;AAAA,cAC5B;AAAA,YACF,CAAC;AAAA;AAAA,YAED,kCAAQ,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,gBACvB,kCAAQ,SAAS,IAAI,CAAC,SAAS,CAAC;AAAA,cAClC;AAAA,cACA,OAAS;AAAA,gBACL,SAAO;AAAA,gBACP,QAAM,IAAI;AAAA,gBACZ,kCAAQ,MAAM,IAAI,QAAQ;AAAA,cAC5B;AAAA,YACF,CAAC;AAAA,YACD,kCAAQ,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;AAC9C;;;AEnDA,IAAAC,4BAAqC;AACrC,kBAAoB;AACpB,IAAAC,KAAmB;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,MAC3C,kCAAQ,SAAS,IAAI,CAAC,WAAW,OAAO,CAAC;AAAA,MACzC,kCAAQ,MAAM,IAAI,QAAQ;AAAA,UAE1B,uCAAY;AAAA,QACV,QAAQ,CAAC,OACP,GAAG;AAAA,UACD,MAAM,CAAC,CAAC,MAAM,QAAQ,CAAC;AAAA,QACzB,CAAC,EAAE,SAAK,iBAAI,CAAC,EAAE,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAAA,MACvC,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AAAA,EACD,kCAAQ,SAAS,MAAM,CAAC,KAAK,CAAC;AAAA,EAC9B,kCAAQ,MAAM,IAAI,YAAY;AAChC;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,MAC5C,kCAAQ,SAAS,IAAI,CAAC,WAAW,OAAO,CAAC;AAAA,MAEzC,kCAAQ,MAAM,IAAI,QAAQ;AAAA,UAE1B,uCAAY;AAAA,QACV,QAAQ,CAAC,OACP,GAAG;AAAA,UACD,MAAM,CAAC,CAAC,MAAM,QAAQ,CAAC;AAAA,QACzB,CAAC,EAAE,SAAK,iBAAI,CAAC,EAAE,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAAA,MACvC,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AAAA,EACD,kCAAQ,SAAS,MAAM,CAAC,KAAK,CAAC;AAAA,EAC9B,kCAAQ,MAAM,IAAI,yBAAyB;AAC7C;;;AChDA,IAAAC,4BAIO;AACP,IAAAC,KAAmB;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,oBACjB,wCAAa,QAAQ;AAAA,gBACrB,kCAAQ,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,YAC7B,0CAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAAA,QACD,0CAAe;AAAA,QACf,wCAAa,WAAW;AAAA,EAC1B;AACF;;;AClCO,IAAM,uBAAqC;AAAA,EAChD,EAAE,IAAI,WAAW,OAAO,MAAM,MAAM,UAAU;AAChD;;;ACLA,kBAAmB;AAEnB,IAAAC,KAAmB;AAanB,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,UAAM,gBAAG,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;;;ACjDO,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
6
|
"names": ["WorkflowNodeType", "import_view_angular_core", "import_view_angular_core", "v", "import_view_angular_core", "v", "v"]
|
|
7
7
|
}
|
package/share/index.mjs.map
CHANGED
|
@@ -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/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 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';\nexport type InputInvalidItem = { key: (string | number)[] };\n\nexport type InputRefItem = {\n /** 上游节点 id */\n value: string;\n /** 出口名 */\n outlet?: string;\n /** 键 */\n key: (string | number)[];\n};\nexport type InputContextItem = {\n /** 容器节点 id */\n value: string;\n /** 上下文中提供的 */\n contextKey: string;\n /** 键 */\n key: (string | number)[];\n};\n\nexport type InputItem = InputRefItem | InputInvalidItem | InputContextItem;\n// todo 优化\nexport interface HandleNode {\n /** 唯一,用来查询 */\n id: string;\n /** 一般表示key */\n name?: string;\n /** 应该应用于tooltip显示,不应该被其他显示 */\n label?: string;\n type?: 'connect' | (string & {});\n /** todo */\n validateType?: ChatInputType[];\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\nexport interface WorkflowNodeData {\n config?: {\n refList?: InputRefItem[];\n invalidList?: InputInvalidItem[];\n value?: Record<string, any>;\n };\n style?: Record<string, any>;\n handle?: {\n output: HandleNode[][];\n };\n minSize?: {\n height: number;\n width: number;\n };\n transform?: {\n resizable?: boolean;\n };\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}\n\n/** 解析后runner使用 */\nexport interface ParsedNode {\n id: string;\n parentId?: string;\n type: WorkflowNodeType;\n // todo 因为加上Omit会导致类型不识别\n data: WorkflowNodeData;\n context: { id: string; output: string; rest: boolean }[];\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", "export const enum WorkflowNodeType {\n 'iteration' = 'iteration',\n 'iterationStart' = 'iteration-start',\n 'inputParams' = 'input-params',\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", "import { HandleNode } from '../handle-node';\n\n/** 导出使用,默认给所有节点加一个出口, */\nexport const RUNNER_ORIGIN_OUTPUT: HandleNode[] = [\n { id: 'default', label: '默认', name: `default` },\n];\n", "import { v4 } from 'uuid';\nimport type { ChatMessageListOutputType } from '@shenghuabi/openai';\nimport * as v from 'valibot';\nimport { ChatMetadata } from './type';\nimport { InputInvalidItem } from './handle-node';\n\nexport type WorkflowRunnerEnvironmentParams = Record<string, any>;\nexport type WorkflowRunnerInputsWithContext = {\n inputs
|
|
4
|
+
"sourcesContent": ["export 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';\nexport type InputInvalidItem = { key: (string | number)[] };\n\nexport type InputRefItem = {\n /** 上游节点 id */\n value: string;\n /** 出口名 */\n outlet?: string;\n /** 键 */\n key: (string | number)[];\n};\nexport type InputContextItem = {\n /** 容器节点 id */\n value: string;\n /** 上下文中提供的 */\n contextKey: string;\n /** 键 */\n key: (string | number)[];\n};\n\nexport type InputItem = InputRefItem | InputInvalidItem | InputContextItem;\n// todo 优化\nexport interface HandleNode {\n /** 唯一,用来查询 */\n id: string;\n /** 一般表示key */\n name?: string;\n /** 应该应用于tooltip显示,不应该被其他显示 */\n label?: string;\n type?: 'connect' | (string & {});\n /** todo */\n validateType?: ChatInputType[];\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\nexport interface WorkflowNodeData {\n config?: {\n refList?: InputRefItem[];\n invalidList?: InputInvalidItem[];\n value?: Record<string, any>;\n };\n style?: Record<string, any>;\n handle?: {\n output: HandleNode[][];\n };\n minSize?: {\n height: number;\n width: number;\n };\n transform?: {\n resizable?: boolean;\n };\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 options?: {\n /** input-patams负责修改 */\n editorInput?: boolean;\n };\n version: number;\n}\n\n/** 解析后runner使用 */\nexport interface ParsedNode {\n id: string;\n parentId?: string;\n type: WorkflowNodeType;\n // todo 因为加上Omit会导致类型不识别\n data: WorkflowNodeData;\n context: { id: string; output: string; rest: boolean }[];\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", "export const enum WorkflowNodeType {\n 'iteration' = 'iteration',\n 'iterationStart' = 'iteration-start',\n 'inputParams' = 'input-params',\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", "import { HandleNode } from '../handle-node';\n\n/** 导出使用,默认给所有节点加一个出口, */\nexport const RUNNER_ORIGIN_OUTPUT: HandleNode[] = [\n { id: 'default', label: '默认', name: `default` },\n];\n", "import { v4 } from 'uuid';\nimport type { ChatMessageListOutputType } from '@shenghuabi/openai';\nimport * as v from 'valibot';\nimport { ChatMetadata } from './type';\nimport { InputInvalidItem } from './handle-node';\n\nexport type WorkflowRunnerEnvironmentParams = Record<string, any>;\nexport type WorkflowRunnerInputsWithContext = {\n inputs?: Record<string, (InputInvalidItem & { value: any })[]>;\n environmentParameters?: WorkflowRunnerEnvironmentParams;\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", "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
5
|
"mappings": "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",
|
|
6
6
|
"names": ["WorkflowNodeType", "actions", "actions", "actions", "v", "actions", "v", "actions", "v"]
|
|
7
7
|
}
|
package/share/type2.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { ChatMetadata } from './type';
|
|
|
3
3
|
import { InputInvalidItem } from './handle-node';
|
|
4
4
|
export type WorkflowRunnerEnvironmentParams = Record<string, any>;
|
|
5
5
|
export type WorkflowRunnerInputsWithContext = {
|
|
6
|
-
inputs
|
|
6
|
+
inputs?: Record<string, (InputInvalidItem & {
|
|
7
7
|
value: any;
|
|
8
8
|
})[]>;
|
|
9
9
|
environmentParameters?: WorkflowRunnerEnvironmentParams;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ChatMessageListInputType } from '@shenghuabi/openai';
|
|
2
|
-
import { ChatMetadata } from '
|
|
2
|
+
import { ChatMetadata } from '../share/type';
|
|
3
3
|
export declare function useChat(): (list: ChatMessageListInputType) => Promise<{
|
|
4
4
|
metadataList: ChatMetadata[];
|
|
5
5
|
list: ({
|
package/webview/index.js
CHANGED
|
@@ -389,15 +389,13 @@ var IterationWebviewConfig = {
|
|
|
389
389
|
|
|
390
390
|
// packages/workflow/inline/node/input-params/common.ts
|
|
391
391
|
var NODE_COMMON4 = {
|
|
392
|
-
priority: -
|
|
392
|
+
priority: -999,
|
|
393
393
|
type: "input-params",
|
|
394
|
-
label:
|
|
395
|
-
icon: { fontIcon: "
|
|
396
|
-
disableHead:
|
|
397
|
-
disableConnect:
|
|
398
|
-
color: "
|
|
399
|
-
help: [`- 入口`].join("\n"),
|
|
400
|
-
outputs: [RUNNER_ORIGIN_OUTPUT]
|
|
394
|
+
label: `外界输入`,
|
|
395
|
+
icon: { fontIcon: "input" },
|
|
396
|
+
disableHead: true,
|
|
397
|
+
disableConnect: true,
|
|
398
|
+
color: "primary"
|
|
401
399
|
};
|
|
402
400
|
|
|
403
401
|
// packages/workflow/inline/node/input-params/node.define.ts
|
|
@@ -423,6 +421,18 @@ var InputParams_NODE_DEFINE = v6.pipe(
|
|
|
423
421
|
});
|
|
424
422
|
}),
|
|
425
423
|
v6.title("输入类型")
|
|
424
|
+
),
|
|
425
|
+
editorInput: v6.pipe(
|
|
426
|
+
v6.optional(v6.boolean()),
|
|
427
|
+
v6.title("编辑器输入"),
|
|
428
|
+
(0, import_view_angular_core7.valueChange)((fn) => {
|
|
429
|
+
fn().subscribe(({ list: [value], field }) => {
|
|
430
|
+
if (value === void 0) {
|
|
431
|
+
return;
|
|
432
|
+
}
|
|
433
|
+
field.context["editorInputChange"](value);
|
|
434
|
+
});
|
|
435
|
+
})
|
|
426
436
|
)
|
|
427
437
|
}),
|
|
428
438
|
import_view_angular_core7.actions.wrappers.patch(["div"]),
|
package/webview/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../packages/workflow/webview/index.ts", "../../../packages/workflow/inline/node/index.browser.ts", "../../../packages/workflow/inline/node/chat/node.define.ts", "../../../packages/workflow/share/common/examples.define.ts", "../../../packages/workflow/share/util/layout.ts", "../../../packages/workflow/share/common/llm.define.ts", "../../../packages/workflow/share/common/const.ts", "../../../packages/workflow/share/const.ts", "../../../packages/workflow/inline/node/chat/common.ts", "../../../packages/workflow/inline/node/chat/util.ts", "../../../packages/workflow/inline/node/chat/webview/index.ts", "../../../packages/workflow/inline/node/text/common.ts", "../../../packages/workflow/inline/node/text/text.node.define.ts", "../../../packages/workflow/inline/node/text/webview/index.ts", "../../../packages/workflow/inline/node/iteration/common.ts", "../../../packages/workflow/inline/node/iteration/node.define.ts", "../../../packages/workflow/inline/node/iteration/webview/index.ts", "../../../packages/workflow/inline/node/input-params/common.ts", "../../../packages/workflow/inline/node/input-params/node.define.ts", "../../../packages/workflow/inline/node/input-params/webview/index.ts"],
|
|
4
|
-
"sourcesContent": ["export * as WebviewNodeMap from '../inline/node/index.browser';\n", "export * from './chat/webview';\nexport * from './text/webview';\nexport * from './iteration/webview'\nexport * from './input-params/webview'", "import * as v from 'valibot';\n\nimport { actions, setComponent, valueChange } from '@piying/view-angular-core';\nimport { ChatMessageListInputType } from '@shenghuabi/openai';\nimport { EXAMPLES_DEFINE, llmModelConfig } from '../../../share/common';\nimport { isChatSchema } from '@cyia/util';\nexport const ResponseList = ['json', 'markdown', 'yaml'] as const;\nexport const ResponseFormat = ['text', 'json_object', 'json_schema'] as const;\nexport type ResponseType = (typeof ResponseList)[number];\nexport const CHAT_NODE_DEFINE = v.pipe(\n v.object({\n llm: v.optional(llmModelConfig()),\n /** 处理时解析 */\n responseFormat: v.pipe(\n v.optional(v.picklist(ResponseFormat)),\n actions.inputs.patch({\n options: [\n // 有输入json时\n {\n label: '自动',\n value: undefined,\n description: `传入JsonSchema时为[json_schema],否则为[text]`,\n },\n { label: '文本', value: 'text' },\n {\n label: 'JSON对象',\n value: 'json_object',\n description: '只限制返回类型为JSON对象,不对字段进行限制',\n },\n {\n label: 'JSON格式定义',\n value: 'json_schema',\n description:\n '限制返回类型为JSON对象,同时限制字段,不建议手动指定,传入JsonSchema后自动启用',\n },\n ],\n }),\n v.title('响应格式'),\n ),\n /** 处理后解析 */\n parseBy: v.pipe(\n v.optional(v.picklist(ResponseList)),\n actions.inputs.patch({\n options: [\n { label: '直接返回', value: undefined },\n {\n label: 'json',\n value: 'json',\n description: `将返回的json代码块内容或原始内容解析为对象`,\n },\n {\n label: 'markdown',\n value: 'markdown',\n description: `[需要提示词约束]将返回其中的markdown代码块内容或原始内容`,\n },\n {\n label: 'yaml',\n value: 'yaml',\n description: `[需要提示词约束]将返回的yaml代码块内容或原始内容解析为对象`,\n },\n ],\n }),\n v.title('返回解析'),\n valueChange((fn) => {\n fn({ list: [['..', 'responseFormat']] }).subscribe(\n ({ list: [value], field }) => {\n if ((value ?? '').startsWith('json')) {\n if (!field.form.control!.value) {\n field.form.control!.updateValue('json');\n }\n }\n },\n );\n }),\n ),\n examples: EXAMPLES_DEFINE,\n value: v.pipe(\n v.custom<ChatMessageListInputType>(Boolean),\n setComponent('prompt-list'),\n ),\n jsonSchema: v.pipe(\n v.optional(\n v.pipe(\n v.any(),\n v.check(\n (value) => isChatSchema(value),\n (issue) =>\n `jsonSchema 格式异常:输入 ${issue.input};需要类型 {name:string,schema:object}`,\n ),\n ),\n ),\n setComponent('jsonSchema'),\n ),\n }),\n actions.wrappers.patch(['div']),\n actions.class.top('grid auto-rows-auto gap-2'),\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 {\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", "import { HandleNode } from '../handle-node';\n\n/** 导出使用,默认给所有节点加一个出口, */\nexport const RUNNER_ORIGIN_OUTPUT: HandleNode[] = [\n { id: 'default', label: '默认', name: `default` },\n];\n", "export const HelpObj = {\n templateVarLine: `- 变量定义格式: {{xx}},{{xx.yy}}`,\n pathTodoLine: `- **TODO** 接收传入路径而不是指定`,\n};\n", "import { HelpObj, RUNNER_ORIGIN_OUTPUT } from '../../../share';\n\nimport { NodeComponentType } from '../../../share';\n\nexport const NODE_COMMON: NodeComponentType = {\n priority: -100,\n type: 'chat',\n label: `对话`,\n icon: { fontIcon: 'chat' },\n disableHead: false,\n disableConnect: false,\n color: 'accent',\n help: [\n `- 点击输入框左侧图标可以切换或添加新行`,\n `${HelpObj.templateVarLine}`,\n '### 指定类型输出',\n '- `JsonSchema`为可选输入,需要使用`代码`节点生成',\n '> 设置后响应类型会自动变为json',\n '> 也可以使用任何符合`ChatJsonSchema`类型的数据结构传入(`代码`节点编辑时有声明)',\n '- 原始输出: 不进行任何格式化处理的输出',\n '### 定义图片变量',\n '- 只有支持图片传入的大语言模型才支持此选项',\n '> 如`minicpm-v:8b`',\n '- 定义后在对话中可以传入图片',\n '- 或者可以使用`图片输入`节点手动指定一张图片',\n '- 只有`用户提示词`可以使用图片输入',\n '> 不清楚是否所有模型都遵循此规则,所以并没有限制输入',\n ].join('\\n'),\n // config: defineConfig,\n // inputs: [\n // [],\n // [\n // {\n // label: 'JsonSchema',\n // value: DEFAULT_CHAT_SCHEMA_KEY,\n // inputType: 'schema',\n // optional: true,\n // },\n // ],\n // ],\n outputs: [\n RUNNER_ORIGIN_OUTPUT,\n [{ id: 'format', label: '格式化', name: 'format' }],\n ],\n};\n", "import { deepClone } from '@cyia/util';\n\nconst INIT_TEMPLATE = { role: 'user' as const, content: [] };\nexport function getHumanTemplate() {\n return deepClone(INIT_TEMPLATE);\n}\nexport function getSystemTemplate() {\n return deepClone({ ...INIT_TEMPLATE, role: 'system' });\n}\n", "import { WebviewNodeConfig } from '../../../../share/type';\nimport { CHAT_NODE_DEFINE } from '../node.define';\nimport { NODE_COMMON } from '../common';\nimport { getSystemTemplate } from '../util';\n\nexport const ChatWebviewConfig: WebviewNodeConfig = {\n ...NODE_COMMON,\n configDefine: CHAT_NODE_DEFINE,\n initData: () => ({\n data: {\n transform: {\n resizable: true,\n },\n value: [getSystemTemplate()],\n },\n width: 300,\n }),\n};\n", "import { HelpObj } from '../../../share';\nimport { NodeComponentType } from '../../../share/type';\n\nexport const NODE_COMMON: NodeComponentType = {\n type: 'textarea',\n label: `文本模板`,\n icon: { fontIcon: 'text_snippet' },\n disableHead: false,\n disableConnect: false,\n color: 'primary',\n help: `${HelpObj.templateVarLine}`,\n priority: -98,\n};\n", "import { actions, setComponent } from '@piying/view-angular-core';\nimport * as v from 'valibot';\nexport const TEXT_NODE_DEFINE = v.object({\n value: v.pipe(\n v.any(),\n setComponent('textarea-template'),\n actions.class.top('nodrag'),\n ),\n});\n", "import { WebviewNodeConfig } from '../../../../share/type';\nimport { NODE_COMMON } from '../common';\nimport { TEXT_NODE_DEFINE } from '../text.node.define';\n\nexport const TextWebviewConfig: WebviewNodeConfig = {\n ...NODE_COMMON,\n configDefine: TEXT_NODE_DEFINE,\n initData: () => ({\n data: {\n transform: {\n resizable: true,\n },\n\n value: '',\n },\n width: 300,\n }),\n};\n", "import { RUNNER_ORIGIN_OUTPUT } from '../../../share';\n\nimport { NodeComponentType } from '../../../share';\n\nexport const NODE_COMMON: NodeComponentType = {\n priority: -100,\n type: 'iteration',\n label: `迭代`,\n icon: { fontIcon: 'chat' },\n disableHead: false,\n disableConnect: false,\n color: 'accent',\n help: [`- 列表循环`].join('\\n'),\n // 普通的和flat\n outputs: [RUNNER_ORIGIN_OUTPUT],\n};\n", "import * as v from 'valibot';\n\nimport { actions, asControl } from '@piying/view-angular-core';\nexport const ResponseList = ['json', 'markdown', 'yaml'] as const;\nexport const ResponseFormat = ['text', 'json_object', 'json_schema'] as const;\nexport type ResponseType = (typeof ResponseList)[number];\nexport const ITERATION_NODE_DEFINE = v.pipe(\n v.object({\n list: v.pipe(\n v.array(v.any()),\n asControl(),\n actions.wrappers.patch(['use-ref']),\n ),\n }),\n actions.wrappers.patch(['div']),\n actions.class.top('grid auto-rows-auto gap-2'),\n);\n", "import { WebviewNodeConfig } from '../../../../share/type';\nimport { NODE_COMMON } from '../common';\nimport { ITERATION_NODE_DEFINE } from '../node.define';\n\nexport const IterationWebviewConfig: WebviewNodeConfig = {\n ...NODE_COMMON,\n configDefine: ITERATION_NODE_DEFINE,\n};\n", "import { RUNNER_ORIGIN_OUTPUT } from '../../../share';\n\nimport { NodeComponentType } from '../../../share';\n\nexport const NODE_COMMON: NodeComponentType = {\n priority: -100,\n type: 'input-params',\n label: `入口`,\n icon: { fontIcon: 'chat' },\n disableHead: false,\n disableConnect: false,\n color: 'accent',\n help: [`- 入口`].join('\\n'),\n outputs: [RUNNER_ORIGIN_OUTPUT],\n};\n", "import * as v from 'valibot';\n\nimport { actions, setComponent, valueChange } from '@piying/view-angular-core';\nimport { filter } from 'rxjs';\n\nexport const InputParams_NODE_DEFINE = v.pipe(\n // todo 输入参数应该禁止被引用\n v.object({\n /** 入口点通过不同的选择,提供不同的数据 */\n type: v.pipe(\n v.string(),\n setComponent('select'),\n actions.inputs.patchAsync({\n options: (field) => field.context['getUsageType'](),\n }),\n valueChange((fn) => {\n fn()\n .pipe(filter(Boolean))\n .subscribe(({ list: [value], field }) => {\n field.context['getUsageOutputs'](value).then((list: any[]) => {\n field.context.setOutputHandle(1, list);\n });\n field.context['usageChange'](value)\n });\n }),\n v.title('输入类型'),\n ),\n }),\n actions.wrappers.patch(['div']),\n actions.class.top('grid auto-rows-auto gap-2'),\n);\n", "import { WebviewNodeConfig } from '../../../../share/type';\nimport { NODE_COMMON } from '../common';\nimport { InputParams_NODE_DEFINE } from '../node.define';\n\nexport const InputParamsWebviewConfig: WebviewNodeConfig = {\n ...NODE_COMMON,\n configDefine: InputParams_NODE_DEFINE,\n};\n"],
|
|
5
|
-
"mappings": "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
|
|
4
|
+
"sourcesContent": ["export * as WebviewNodeMap from '../inline/node/index.browser';\n", "export * from './chat/webview';\nexport * from './text/webview';\nexport * from './iteration/webview'\nexport * from './input-params/webview'", "import * as v from 'valibot';\n\nimport { actions, setComponent, valueChange } from '@piying/view-angular-core';\nimport { ChatMessageListInputType } from '@shenghuabi/openai';\nimport { EXAMPLES_DEFINE, llmModelConfig } from '../../../share/common';\nimport { isChatSchema } from '@cyia/util';\nexport const ResponseList = ['json', 'markdown', 'yaml'] as const;\nexport const ResponseFormat = ['text', 'json_object', 'json_schema'] as const;\nexport type ResponseType = (typeof ResponseList)[number];\nexport const CHAT_NODE_DEFINE = v.pipe(\n v.object({\n llm: v.optional(llmModelConfig()),\n /** 处理时解析 */\n responseFormat: v.pipe(\n v.optional(v.picklist(ResponseFormat)),\n actions.inputs.patch({\n options: [\n // 有输入json时\n {\n label: '自动',\n value: undefined,\n description: `传入JsonSchema时为[json_schema],否则为[text]`,\n },\n { label: '文本', value: 'text' },\n {\n label: 'JSON对象',\n value: 'json_object',\n description: '只限制返回类型为JSON对象,不对字段进行限制',\n },\n {\n label: 'JSON格式定义',\n value: 'json_schema',\n description:\n '限制返回类型为JSON对象,同时限制字段,不建议手动指定,传入JsonSchema后自动启用',\n },\n ],\n }),\n v.title('响应格式'),\n ),\n /** 处理后解析 */\n parseBy: v.pipe(\n v.optional(v.picklist(ResponseList)),\n actions.inputs.patch({\n options: [\n { label: '直接返回', value: undefined },\n {\n label: 'json',\n value: 'json',\n description: `将返回的json代码块内容或原始内容解析为对象`,\n },\n {\n label: 'markdown',\n value: 'markdown',\n description: `[需要提示词约束]将返回其中的markdown代码块内容或原始内容`,\n },\n {\n label: 'yaml',\n value: 'yaml',\n description: `[需要提示词约束]将返回的yaml代码块内容或原始内容解析为对象`,\n },\n ],\n }),\n v.title('返回解析'),\n valueChange((fn) => {\n fn({ list: [['..', 'responseFormat']] }).subscribe(\n ({ list: [value], field }) => {\n if ((value ?? '').startsWith('json')) {\n if (!field.form.control!.value) {\n field.form.control!.updateValue('json');\n }\n }\n },\n );\n }),\n ),\n examples: EXAMPLES_DEFINE,\n value: v.pipe(\n v.custom<ChatMessageListInputType>(Boolean),\n setComponent('prompt-list'),\n ),\n jsonSchema: v.pipe(\n v.optional(\n v.pipe(\n v.any(),\n v.check(\n (value) => isChatSchema(value),\n (issue) =>\n `jsonSchema 格式异常:输入 ${issue.input};需要类型 {name:string,schema:object}`,\n ),\n ),\n ),\n setComponent('jsonSchema'),\n ),\n }),\n actions.wrappers.patch(['div']),\n actions.class.top('grid auto-rows-auto gap-2'),\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 {\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", "import { HandleNode } from '../handle-node';\n\n/** 导出使用,默认给所有节点加一个出口, */\nexport const RUNNER_ORIGIN_OUTPUT: HandleNode[] = [\n { id: 'default', label: '默认', name: `default` },\n];\n", "export const HelpObj = {\n templateVarLine: `- 变量定义格式: {{xx}},{{xx.yy}}`,\n pathTodoLine: `- **TODO** 接收传入路径而不是指定`,\n};\n", "import { HelpObj, RUNNER_ORIGIN_OUTPUT } from '../../../share';\n\nimport { NodeComponentType } from '../../../share';\n\nexport const NODE_COMMON: NodeComponentType = {\n priority: -100,\n type: 'chat',\n label: `对话`,\n icon: { fontIcon: 'chat' },\n disableHead: false,\n disableConnect: false,\n color: 'accent',\n help: [\n `- 点击输入框左侧图标可以切换或添加新行`,\n `${HelpObj.templateVarLine}`,\n '### 指定类型输出',\n '- `JsonSchema`为可选输入,需要使用`代码`节点生成',\n '> 设置后响应类型会自动变为json',\n '> 也可以使用任何符合`ChatJsonSchema`类型的数据结构传入(`代码`节点编辑时有声明)',\n '- 原始输出: 不进行任何格式化处理的输出',\n '### 定义图片变量',\n '- 只有支持图片传入的大语言模型才支持此选项',\n '> 如`minicpm-v:8b`',\n '- 定义后在对话中可以传入图片',\n '- 或者可以使用`图片输入`节点手动指定一张图片',\n '- 只有`用户提示词`可以使用图片输入',\n '> 不清楚是否所有模型都遵循此规则,所以并没有限制输入',\n ].join('\\n'),\n // config: defineConfig,\n // inputs: [\n // [],\n // [\n // {\n // label: 'JsonSchema',\n // value: DEFAULT_CHAT_SCHEMA_KEY,\n // inputType: 'schema',\n // optional: true,\n // },\n // ],\n // ],\n outputs: [\n RUNNER_ORIGIN_OUTPUT,\n [{ id: 'format', label: '格式化', name: 'format' }],\n ],\n};\n", "import { deepClone } from '@cyia/util';\n\nconst INIT_TEMPLATE = { role: 'user' as const, content: [] };\nexport function getHumanTemplate() {\n return deepClone(INIT_TEMPLATE);\n}\nexport function getSystemTemplate() {\n return deepClone({ ...INIT_TEMPLATE, role: 'system' });\n}\n", "import { WebviewNodeConfig } from '../../../../share/type';\nimport { CHAT_NODE_DEFINE } from '../node.define';\nimport { NODE_COMMON } from '../common';\nimport { getSystemTemplate } from '../util';\n\nexport const ChatWebviewConfig: WebviewNodeConfig = {\n ...NODE_COMMON,\n configDefine: CHAT_NODE_DEFINE,\n initData: () => ({\n data: {\n transform: {\n resizable: true,\n },\n value: [getSystemTemplate()],\n },\n width: 300,\n }),\n};\n", "import { HelpObj } from '../../../share';\nimport { NodeComponentType } from '../../../share/type';\n\nexport const NODE_COMMON: NodeComponentType = {\n type: 'textarea',\n label: `文本模板`,\n icon: { fontIcon: 'text_snippet' },\n disableHead: false,\n disableConnect: false,\n color: 'primary',\n help: `${HelpObj.templateVarLine}`,\n priority: -98,\n};\n", "import { actions, setComponent } from '@piying/view-angular-core';\nimport * as v from 'valibot';\nexport const TEXT_NODE_DEFINE = v.object({\n value: v.pipe(\n v.any(),\n setComponent('textarea-template'),\n actions.class.top('nodrag'),\n ),\n});\n", "import { WebviewNodeConfig } from '../../../../share/type';\nimport { NODE_COMMON } from '../common';\nimport { TEXT_NODE_DEFINE } from '../text.node.define';\n\nexport const TextWebviewConfig: WebviewNodeConfig = {\n ...NODE_COMMON,\n configDefine: TEXT_NODE_DEFINE,\n initData: () => ({\n data: {\n transform: {\n resizable: true,\n },\n\n value: '',\n },\n width: 300,\n }),\n};\n", "import { RUNNER_ORIGIN_OUTPUT } from '../../../share';\n\nimport { NodeComponentType } from '../../../share';\n\nexport const NODE_COMMON: NodeComponentType = {\n priority: -100,\n type: 'iteration',\n label: `迭代`,\n icon: { fontIcon: 'chat' },\n disableHead: false,\n disableConnect: false,\n color: 'accent',\n help: [`- 列表循环`].join('\\n'),\n // 普通的和flat\n outputs: [RUNNER_ORIGIN_OUTPUT],\n};\n", "import * as v from 'valibot';\n\nimport { actions, asControl } from '@piying/view-angular-core';\nexport const ResponseList = ['json', 'markdown', 'yaml'] as const;\nexport const ResponseFormat = ['text', 'json_object', 'json_schema'] as const;\nexport type ResponseType = (typeof ResponseList)[number];\nexport const ITERATION_NODE_DEFINE = v.pipe(\n v.object({\n list: v.pipe(\n v.array(v.any()),\n asControl(),\n actions.wrappers.patch(['use-ref']),\n ),\n }),\n actions.wrappers.patch(['div']),\n actions.class.top('grid auto-rows-auto gap-2'),\n);\n", "import { WebviewNodeConfig } from '../../../../share/type';\nimport { NODE_COMMON } from '../common';\nimport { ITERATION_NODE_DEFINE } from '../node.define';\n\nexport const IterationWebviewConfig: WebviewNodeConfig = {\n ...NODE_COMMON,\n configDefine: ITERATION_NODE_DEFINE,\n};\n", "import { NodeComponentType } from '../../../share';\n\nexport const NODE_COMMON: NodeComponentType = {\n priority: -999,\n type: 'input-params',\n label: `外界输入`,\n icon: { fontIcon: 'input' },\n disableHead: true,\n disableConnect: true,\n color: 'primary',\n};\n", "import * as v from 'valibot';\n\nimport { actions, setComponent, valueChange } from '@piying/view-angular-core';\nimport { filter } from 'rxjs';\n\nexport const InputParams_NODE_DEFINE = v.pipe(\n // todo 输入参数应该禁止被引用\n v.object({\n /** 入口点通过不同的选择,提供不同的数据 */\n type: v.pipe(\n v.string(),\n setComponent('select'),\n actions.inputs.patchAsync({\n options: (field) => field.context['getUsageType'](),\n }),\n valueChange((fn) => {\n fn()\n .pipe(filter(Boolean))\n .subscribe(({ list: [value], field }) => {\n field.context['getUsageOutputs'](value).then((list: any[]) => {\n field.context.setOutputHandle(1, list);\n });\n field.context['usageChange'](value);\n });\n }),\n v.title('输入类型'),\n ),\n editorInput: v.pipe(\n v.optional(v.boolean()),\n v.title('编辑器输入'),\n valueChange((fn) => {\n fn().subscribe(({ list: [value], field }) => {\n if (value === undefined) {\n return;\n }\n field.context['editorInputChange'](value);\n });\n }),\n ),\n }),\n actions.wrappers.patch(['div']),\n actions.class.top('grid auto-rows-auto gap-2'),\n);\n", "import { WebviewNodeConfig } from '../../../../share/type';\nimport { NODE_COMMON } from '../common';\nimport { InputParams_NODE_DEFINE } from '../node.define';\n\nexport const InputParamsWebviewConfig: WebviewNodeConfig = {\n ...NODE_COMMON,\n configDefine: InputParams_NODE_DEFINE,\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["v", "import_view_angular_core", "import_view_angular_core", "import_view_angular_core", "v", "import_util", "NODE_COMMON", "import_view_angular_core", "v", "NODE_COMMON", "NODE_COMMON", "v", "import_view_angular_core", "NODE_COMMON", "NODE_COMMON", "v", "import_view_angular_core", "NODE_COMMON"]
|
|
7
7
|
}
|
package/webview/index.mjs
CHANGED
|
@@ -363,15 +363,13 @@ var IterationWebviewConfig = {
|
|
|
363
363
|
|
|
364
364
|
// packages/workflow/inline/node/input-params/common.ts
|
|
365
365
|
var NODE_COMMON4 = {
|
|
366
|
-
priority: -
|
|
366
|
+
priority: -999,
|
|
367
367
|
type: "input-params",
|
|
368
|
-
label:
|
|
369
|
-
icon: { fontIcon: "
|
|
370
|
-
disableHead:
|
|
371
|
-
disableConnect:
|
|
372
|
-
color: "
|
|
373
|
-
help: [`- 入口`].join("\n"),
|
|
374
|
-
outputs: [RUNNER_ORIGIN_OUTPUT]
|
|
368
|
+
label: `外界输入`,
|
|
369
|
+
icon: { fontIcon: "input" },
|
|
370
|
+
disableHead: true,
|
|
371
|
+
disableConnect: true,
|
|
372
|
+
color: "primary"
|
|
375
373
|
};
|
|
376
374
|
|
|
377
375
|
// packages/workflow/inline/node/input-params/node.define.ts
|
|
@@ -397,6 +395,18 @@ var InputParams_NODE_DEFINE = v6.pipe(
|
|
|
397
395
|
});
|
|
398
396
|
}),
|
|
399
397
|
v6.title("输入类型")
|
|
398
|
+
),
|
|
399
|
+
editorInput: v6.pipe(
|
|
400
|
+
v6.optional(v6.boolean()),
|
|
401
|
+
v6.title("编辑器输入"),
|
|
402
|
+
valueChange2((fn) => {
|
|
403
|
+
fn().subscribe(({ list: [value], field }) => {
|
|
404
|
+
if (value === void 0) {
|
|
405
|
+
return;
|
|
406
|
+
}
|
|
407
|
+
field.context["editorInputChange"](value);
|
|
408
|
+
});
|
|
409
|
+
})
|
|
400
410
|
)
|
|
401
411
|
}),
|
|
402
412
|
actions7.wrappers.patch(["div"]),
|
package/webview/index.mjs.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../packages/workflow/inline/node/index.browser.ts", "../../../packages/workflow/inline/node/chat/node.define.ts", "../../../packages/workflow/share/common/examples.define.ts", "../../../packages/workflow/share/util/layout.ts", "../../../packages/workflow/share/common/llm.define.ts", "../../../packages/workflow/share/common/const.ts", "../../../packages/workflow/share/const.ts", "../../../packages/workflow/inline/node/chat/common.ts", "../../../packages/workflow/inline/node/chat/util.ts", "../../../packages/workflow/inline/node/chat/webview/index.ts", "../../../packages/workflow/inline/node/text/common.ts", "../../../packages/workflow/inline/node/text/text.node.define.ts", "../../../packages/workflow/inline/node/text/webview/index.ts", "../../../packages/workflow/inline/node/iteration/common.ts", "../../../packages/workflow/inline/node/iteration/node.define.ts", "../../../packages/workflow/inline/node/iteration/webview/index.ts", "../../../packages/workflow/inline/node/input-params/common.ts", "../../../packages/workflow/inline/node/input-params/node.define.ts", "../../../packages/workflow/inline/node/input-params/webview/index.ts"],
|
|
4
|
-
"sourcesContent": ["export * from './chat/webview';\nexport * from './text/webview';\nexport * from './iteration/webview'\nexport * from './input-params/webview'", "import * as v from 'valibot';\n\nimport { actions, setComponent, valueChange } from '@piying/view-angular-core';\nimport { ChatMessageListInputType } from '@shenghuabi/openai';\nimport { EXAMPLES_DEFINE, llmModelConfig } from '../../../share/common';\nimport { isChatSchema } from '@cyia/util';\nexport const ResponseList = ['json', 'markdown', 'yaml'] as const;\nexport const ResponseFormat = ['text', 'json_object', 'json_schema'] as const;\nexport type ResponseType = (typeof ResponseList)[number];\nexport const CHAT_NODE_DEFINE = v.pipe(\n v.object({\n llm: v.optional(llmModelConfig()),\n /** 处理时解析 */\n responseFormat: v.pipe(\n v.optional(v.picklist(ResponseFormat)),\n actions.inputs.patch({\n options: [\n // 有输入json时\n {\n label: '自动',\n value: undefined,\n description: `传入JsonSchema时为[json_schema],否则为[text]`,\n },\n { label: '文本', value: 'text' },\n {\n label: 'JSON对象',\n value: 'json_object',\n description: '只限制返回类型为JSON对象,不对字段进行限制',\n },\n {\n label: 'JSON格式定义',\n value: 'json_schema',\n description:\n '限制返回类型为JSON对象,同时限制字段,不建议手动指定,传入JsonSchema后自动启用',\n },\n ],\n }),\n v.title('响应格式'),\n ),\n /** 处理后解析 */\n parseBy: v.pipe(\n v.optional(v.picklist(ResponseList)),\n actions.inputs.patch({\n options: [\n { label: '直接返回', value: undefined },\n {\n label: 'json',\n value: 'json',\n description: `将返回的json代码块内容或原始内容解析为对象`,\n },\n {\n label: 'markdown',\n value: 'markdown',\n description: `[需要提示词约束]将返回其中的markdown代码块内容或原始内容`,\n },\n {\n label: 'yaml',\n value: 'yaml',\n description: `[需要提示词约束]将返回的yaml代码块内容或原始内容解析为对象`,\n },\n ],\n }),\n v.title('返回解析'),\n valueChange((fn) => {\n fn({ list: [['..', 'responseFormat']] }).subscribe(\n ({ list: [value], field }) => {\n if ((value ?? '').startsWith('json')) {\n if (!field.form.control!.value) {\n field.form.control!.updateValue('json');\n }\n }\n },\n );\n }),\n ),\n examples: EXAMPLES_DEFINE,\n value: v.pipe(\n v.custom<ChatMessageListInputType>(Boolean),\n setComponent('prompt-list'),\n ),\n jsonSchema: v.pipe(\n v.optional(\n v.pipe(\n v.any(),\n v.check(\n (value) => isChatSchema(value),\n (issue) =>\n `jsonSchema 格式异常:输入 ${issue.input};需要类型 {name:string,schema:object}`,\n ),\n ),\n ),\n setComponent('jsonSchema'),\n ),\n }),\n actions.wrappers.patch(['div']),\n actions.class.top('grid auto-rows-auto gap-2'),\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 {\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", "import { HandleNode } from '../handle-node';\n\n/** 导出使用,默认给所有节点加一个出口, */\nexport const RUNNER_ORIGIN_OUTPUT: HandleNode[] = [\n { id: 'default', label: '默认', name: `default` },\n];\n", "export const HelpObj = {\n templateVarLine: `- 变量定义格式: {{xx}},{{xx.yy}}`,\n pathTodoLine: `- **TODO** 接收传入路径而不是指定`,\n};\n", "import { HelpObj, RUNNER_ORIGIN_OUTPUT } from '../../../share';\n\nimport { NodeComponentType } from '../../../share';\n\nexport const NODE_COMMON: NodeComponentType = {\n priority: -100,\n type: 'chat',\n label: `对话`,\n icon: { fontIcon: 'chat' },\n disableHead: false,\n disableConnect: false,\n color: 'accent',\n help: [\n `- 点击输入框左侧图标可以切换或添加新行`,\n `${HelpObj.templateVarLine}`,\n '### 指定类型输出',\n '- `JsonSchema`为可选输入,需要使用`代码`节点生成',\n '> 设置后响应类型会自动变为json',\n '> 也可以使用任何符合`ChatJsonSchema`类型的数据结构传入(`代码`节点编辑时有声明)',\n '- 原始输出: 不进行任何格式化处理的输出',\n '### 定义图片变量',\n '- 只有支持图片传入的大语言模型才支持此选项',\n '> 如`minicpm-v:8b`',\n '- 定义后在对话中可以传入图片',\n '- 或者可以使用`图片输入`节点手动指定一张图片',\n '- 只有`用户提示词`可以使用图片输入',\n '> 不清楚是否所有模型都遵循此规则,所以并没有限制输入',\n ].join('\\n'),\n // config: defineConfig,\n // inputs: [\n // [],\n // [\n // {\n // label: 'JsonSchema',\n // value: DEFAULT_CHAT_SCHEMA_KEY,\n // inputType: 'schema',\n // optional: true,\n // },\n // ],\n // ],\n outputs: [\n RUNNER_ORIGIN_OUTPUT,\n [{ id: 'format', label: '格式化', name: 'format' }],\n ],\n};\n", "import { deepClone } from '@cyia/util';\n\nconst INIT_TEMPLATE = { role: 'user' as const, content: [] };\nexport function getHumanTemplate() {\n return deepClone(INIT_TEMPLATE);\n}\nexport function getSystemTemplate() {\n return deepClone({ ...INIT_TEMPLATE, role: 'system' });\n}\n", "import { WebviewNodeConfig } from '../../../../share/type';\nimport { CHAT_NODE_DEFINE } from '../node.define';\nimport { NODE_COMMON } from '../common';\nimport { getSystemTemplate } from '../util';\n\nexport const ChatWebviewConfig: WebviewNodeConfig = {\n ...NODE_COMMON,\n configDefine: CHAT_NODE_DEFINE,\n initData: () => ({\n data: {\n transform: {\n resizable: true,\n },\n value: [getSystemTemplate()],\n },\n width: 300,\n }),\n};\n", "import { HelpObj } from '../../../share';\nimport { NodeComponentType } from '../../../share/type';\n\nexport const NODE_COMMON: NodeComponentType = {\n type: 'textarea',\n label: `文本模板`,\n icon: { fontIcon: 'text_snippet' },\n disableHead: false,\n disableConnect: false,\n color: 'primary',\n help: `${HelpObj.templateVarLine}`,\n priority: -98,\n};\n", "import { actions, setComponent } from '@piying/view-angular-core';\nimport * as v from 'valibot';\nexport const TEXT_NODE_DEFINE = v.object({\n value: v.pipe(\n v.any(),\n setComponent('textarea-template'),\n actions.class.top('nodrag'),\n ),\n});\n", "import { WebviewNodeConfig } from '../../../../share/type';\nimport { NODE_COMMON } from '../common';\nimport { TEXT_NODE_DEFINE } from '../text.node.define';\n\nexport const TextWebviewConfig: WebviewNodeConfig = {\n ...NODE_COMMON,\n configDefine: TEXT_NODE_DEFINE,\n initData: () => ({\n data: {\n transform: {\n resizable: true,\n },\n\n value: '',\n },\n width: 300,\n }),\n};\n", "import { RUNNER_ORIGIN_OUTPUT } from '../../../share';\n\nimport { NodeComponentType } from '../../../share';\n\nexport const NODE_COMMON: NodeComponentType = {\n priority: -100,\n type: 'iteration',\n label: `迭代`,\n icon: { fontIcon: 'chat' },\n disableHead: false,\n disableConnect: false,\n color: 'accent',\n help: [`- 列表循环`].join('\\n'),\n // 普通的和flat\n outputs: [RUNNER_ORIGIN_OUTPUT],\n};\n", "import * as v from 'valibot';\n\nimport { actions, asControl } from '@piying/view-angular-core';\nexport const ResponseList = ['json', 'markdown', 'yaml'] as const;\nexport const ResponseFormat = ['text', 'json_object', 'json_schema'] as const;\nexport type ResponseType = (typeof ResponseList)[number];\nexport const ITERATION_NODE_DEFINE = v.pipe(\n v.object({\n list: v.pipe(\n v.array(v.any()),\n asControl(),\n actions.wrappers.patch(['use-ref']),\n ),\n }),\n actions.wrappers.patch(['div']),\n actions.class.top('grid auto-rows-auto gap-2'),\n);\n", "import { WebviewNodeConfig } from '../../../../share/type';\nimport { NODE_COMMON } from '../common';\nimport { ITERATION_NODE_DEFINE } from '../node.define';\n\nexport const IterationWebviewConfig: WebviewNodeConfig = {\n ...NODE_COMMON,\n configDefine: ITERATION_NODE_DEFINE,\n};\n", "import { RUNNER_ORIGIN_OUTPUT } from '../../../share';\n\nimport { NodeComponentType } from '../../../share';\n\nexport const NODE_COMMON: NodeComponentType = {\n priority: -100,\n type: 'input-params',\n label: `入口`,\n icon: { fontIcon: 'chat' },\n disableHead: false,\n disableConnect: false,\n color: 'accent',\n help: [`- 入口`].join('\\n'),\n outputs: [RUNNER_ORIGIN_OUTPUT],\n};\n", "import * as v from 'valibot';\n\nimport { actions, setComponent, valueChange } from '@piying/view-angular-core';\nimport { filter } from 'rxjs';\n\nexport const InputParams_NODE_DEFINE = v.pipe(\n // todo 输入参数应该禁止被引用\n v.object({\n /** 入口点通过不同的选择,提供不同的数据 */\n type: v.pipe(\n v.string(),\n setComponent('select'),\n actions.inputs.patchAsync({\n options: (field) => field.context['getUsageType'](),\n }),\n valueChange((fn) => {\n fn()\n .pipe(filter(Boolean))\n .subscribe(({ list: [value], field }) => {\n field.context['getUsageOutputs'](value).then((list: any[]) => {\n field.context.setOutputHandle(1, list);\n });\n field.context['usageChange'](value)\n });\n }),\n v.title('输入类型'),\n ),\n }),\n actions.wrappers.patch(['div']),\n actions.class.top('grid auto-rows-auto gap-2'),\n);\n", "import { WebviewNodeConfig } from '../../../../share/type';\nimport { NODE_COMMON } from '../common';\nimport { InputParams_NODE_DEFINE } from '../node.define';\n\nexport const InputParamsWebviewConfig: WebviewNodeConfig = {\n ...NODE_COMMON,\n configDefine: InputParams_NODE_DEFINE,\n};\n"],
|
|
5
|
-
"mappings": "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
|
|
4
|
+
"sourcesContent": ["export * from './chat/webview';\nexport * from './text/webview';\nexport * from './iteration/webview'\nexport * from './input-params/webview'", "import * as v from 'valibot';\n\nimport { actions, setComponent, valueChange } from '@piying/view-angular-core';\nimport { ChatMessageListInputType } from '@shenghuabi/openai';\nimport { EXAMPLES_DEFINE, llmModelConfig } from '../../../share/common';\nimport { isChatSchema } from '@cyia/util';\nexport const ResponseList = ['json', 'markdown', 'yaml'] as const;\nexport const ResponseFormat = ['text', 'json_object', 'json_schema'] as const;\nexport type ResponseType = (typeof ResponseList)[number];\nexport const CHAT_NODE_DEFINE = v.pipe(\n v.object({\n llm: v.optional(llmModelConfig()),\n /** 处理时解析 */\n responseFormat: v.pipe(\n v.optional(v.picklist(ResponseFormat)),\n actions.inputs.patch({\n options: [\n // 有输入json时\n {\n label: '自动',\n value: undefined,\n description: `传入JsonSchema时为[json_schema],否则为[text]`,\n },\n { label: '文本', value: 'text' },\n {\n label: 'JSON对象',\n value: 'json_object',\n description: '只限制返回类型为JSON对象,不对字段进行限制',\n },\n {\n label: 'JSON格式定义',\n value: 'json_schema',\n description:\n '限制返回类型为JSON对象,同时限制字段,不建议手动指定,传入JsonSchema后自动启用',\n },\n ],\n }),\n v.title('响应格式'),\n ),\n /** 处理后解析 */\n parseBy: v.pipe(\n v.optional(v.picklist(ResponseList)),\n actions.inputs.patch({\n options: [\n { label: '直接返回', value: undefined },\n {\n label: 'json',\n value: 'json',\n description: `将返回的json代码块内容或原始内容解析为对象`,\n },\n {\n label: 'markdown',\n value: 'markdown',\n description: `[需要提示词约束]将返回其中的markdown代码块内容或原始内容`,\n },\n {\n label: 'yaml',\n value: 'yaml',\n description: `[需要提示词约束]将返回的yaml代码块内容或原始内容解析为对象`,\n },\n ],\n }),\n v.title('返回解析'),\n valueChange((fn) => {\n fn({ list: [['..', 'responseFormat']] }).subscribe(\n ({ list: [value], field }) => {\n if ((value ?? '').startsWith('json')) {\n if (!field.form.control!.value) {\n field.form.control!.updateValue('json');\n }\n }\n },\n );\n }),\n ),\n examples: EXAMPLES_DEFINE,\n value: v.pipe(\n v.custom<ChatMessageListInputType>(Boolean),\n setComponent('prompt-list'),\n ),\n jsonSchema: v.pipe(\n v.optional(\n v.pipe(\n v.any(),\n v.check(\n (value) => isChatSchema(value),\n (issue) =>\n `jsonSchema 格式异常:输入 ${issue.input};需要类型 {name:string,schema:object}`,\n ),\n ),\n ),\n setComponent('jsonSchema'),\n ),\n }),\n actions.wrappers.patch(['div']),\n actions.class.top('grid auto-rows-auto gap-2'),\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 {\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", "import { HandleNode } from '../handle-node';\n\n/** 导出使用,默认给所有节点加一个出口, */\nexport const RUNNER_ORIGIN_OUTPUT: HandleNode[] = [\n { id: 'default', label: '默认', name: `default` },\n];\n", "export const HelpObj = {\n templateVarLine: `- 变量定义格式: {{xx}},{{xx.yy}}`,\n pathTodoLine: `- **TODO** 接收传入路径而不是指定`,\n};\n", "import { HelpObj, RUNNER_ORIGIN_OUTPUT } from '../../../share';\n\nimport { NodeComponentType } from '../../../share';\n\nexport const NODE_COMMON: NodeComponentType = {\n priority: -100,\n type: 'chat',\n label: `对话`,\n icon: { fontIcon: 'chat' },\n disableHead: false,\n disableConnect: false,\n color: 'accent',\n help: [\n `- 点击输入框左侧图标可以切换或添加新行`,\n `${HelpObj.templateVarLine}`,\n '### 指定类型输出',\n '- `JsonSchema`为可选输入,需要使用`代码`节点生成',\n '> 设置后响应类型会自动变为json',\n '> 也可以使用任何符合`ChatJsonSchema`类型的数据结构传入(`代码`节点编辑时有声明)',\n '- 原始输出: 不进行任何格式化处理的输出',\n '### 定义图片变量',\n '- 只有支持图片传入的大语言模型才支持此选项',\n '> 如`minicpm-v:8b`',\n '- 定义后在对话中可以传入图片',\n '- 或者可以使用`图片输入`节点手动指定一张图片',\n '- 只有`用户提示词`可以使用图片输入',\n '> 不清楚是否所有模型都遵循此规则,所以并没有限制输入',\n ].join('\\n'),\n // config: defineConfig,\n // inputs: [\n // [],\n // [\n // {\n // label: 'JsonSchema',\n // value: DEFAULT_CHAT_SCHEMA_KEY,\n // inputType: 'schema',\n // optional: true,\n // },\n // ],\n // ],\n outputs: [\n RUNNER_ORIGIN_OUTPUT,\n [{ id: 'format', label: '格式化', name: 'format' }],\n ],\n};\n", "import { deepClone } from '@cyia/util';\n\nconst INIT_TEMPLATE = { role: 'user' as const, content: [] };\nexport function getHumanTemplate() {\n return deepClone(INIT_TEMPLATE);\n}\nexport function getSystemTemplate() {\n return deepClone({ ...INIT_TEMPLATE, role: 'system' });\n}\n", "import { WebviewNodeConfig } from '../../../../share/type';\nimport { CHAT_NODE_DEFINE } from '../node.define';\nimport { NODE_COMMON } from '../common';\nimport { getSystemTemplate } from '../util';\n\nexport const ChatWebviewConfig: WebviewNodeConfig = {\n ...NODE_COMMON,\n configDefine: CHAT_NODE_DEFINE,\n initData: () => ({\n data: {\n transform: {\n resizable: true,\n },\n value: [getSystemTemplate()],\n },\n width: 300,\n }),\n};\n", "import { HelpObj } from '../../../share';\nimport { NodeComponentType } from '../../../share/type';\n\nexport const NODE_COMMON: NodeComponentType = {\n type: 'textarea',\n label: `文本模板`,\n icon: { fontIcon: 'text_snippet' },\n disableHead: false,\n disableConnect: false,\n color: 'primary',\n help: `${HelpObj.templateVarLine}`,\n priority: -98,\n};\n", "import { actions, setComponent } from '@piying/view-angular-core';\nimport * as v from 'valibot';\nexport const TEXT_NODE_DEFINE = v.object({\n value: v.pipe(\n v.any(),\n setComponent('textarea-template'),\n actions.class.top('nodrag'),\n ),\n});\n", "import { WebviewNodeConfig } from '../../../../share/type';\nimport { NODE_COMMON } from '../common';\nimport { TEXT_NODE_DEFINE } from '../text.node.define';\n\nexport const TextWebviewConfig: WebviewNodeConfig = {\n ...NODE_COMMON,\n configDefine: TEXT_NODE_DEFINE,\n initData: () => ({\n data: {\n transform: {\n resizable: true,\n },\n\n value: '',\n },\n width: 300,\n }),\n};\n", "import { RUNNER_ORIGIN_OUTPUT } from '../../../share';\n\nimport { NodeComponentType } from '../../../share';\n\nexport const NODE_COMMON: NodeComponentType = {\n priority: -100,\n type: 'iteration',\n label: `迭代`,\n icon: { fontIcon: 'chat' },\n disableHead: false,\n disableConnect: false,\n color: 'accent',\n help: [`- 列表循环`].join('\\n'),\n // 普通的和flat\n outputs: [RUNNER_ORIGIN_OUTPUT],\n};\n", "import * as v from 'valibot';\n\nimport { actions, asControl } from '@piying/view-angular-core';\nexport const ResponseList = ['json', 'markdown', 'yaml'] as const;\nexport const ResponseFormat = ['text', 'json_object', 'json_schema'] as const;\nexport type ResponseType = (typeof ResponseList)[number];\nexport const ITERATION_NODE_DEFINE = v.pipe(\n v.object({\n list: v.pipe(\n v.array(v.any()),\n asControl(),\n actions.wrappers.patch(['use-ref']),\n ),\n }),\n actions.wrappers.patch(['div']),\n actions.class.top('grid auto-rows-auto gap-2'),\n);\n", "import { WebviewNodeConfig } from '../../../../share/type';\nimport { NODE_COMMON } from '../common';\nimport { ITERATION_NODE_DEFINE } from '../node.define';\n\nexport const IterationWebviewConfig: WebviewNodeConfig = {\n ...NODE_COMMON,\n configDefine: ITERATION_NODE_DEFINE,\n};\n", "import { NodeComponentType } from '../../../share';\n\nexport const NODE_COMMON: NodeComponentType = {\n priority: -999,\n type: 'input-params',\n label: `外界输入`,\n icon: { fontIcon: 'input' },\n disableHead: true,\n disableConnect: true,\n color: 'primary',\n};\n", "import * as v from 'valibot';\n\nimport { actions, setComponent, valueChange } from '@piying/view-angular-core';\nimport { filter } from 'rxjs';\n\nexport const InputParams_NODE_DEFINE = v.pipe(\n // todo 输入参数应该禁止被引用\n v.object({\n /** 入口点通过不同的选择,提供不同的数据 */\n type: v.pipe(\n v.string(),\n setComponent('select'),\n actions.inputs.patchAsync({\n options: (field) => field.context['getUsageType'](),\n }),\n valueChange((fn) => {\n fn()\n .pipe(filter(Boolean))\n .subscribe(({ list: [value], field }) => {\n field.context['getUsageOutputs'](value).then((list: any[]) => {\n field.context.setOutputHandle(1, list);\n });\n field.context['usageChange'](value);\n });\n }),\n v.title('输入类型'),\n ),\n editorInput: v.pipe(\n v.optional(v.boolean()),\n v.title('编辑器输入'),\n valueChange((fn) => {\n fn().subscribe(({ list: [value], field }) => {\n if (value === undefined) {\n return;\n }\n field.context['editorInputChange'](value);\n });\n }),\n ),\n }),\n actions.wrappers.patch(['div']),\n actions.class.top('grid auto-rows-auto gap-2'),\n);\n", "import { WebviewNodeConfig } from '../../../../share/type';\nimport { NODE_COMMON } from '../common';\nimport { InputParams_NODE_DEFINE } from '../node.define';\n\nexport const InputParamsWebviewConfig: WebviewNodeConfig = {\n ...NODE_COMMON,\n configDefine: InputParams_NODE_DEFINE,\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["v", "actions", "setComponent", "actions", "actions", "actions", "v", "actions", "actions", "setComponent", "NODE_COMMON", "actions", "setComponent", "v", "NODE_COMMON", "NODE_COMMON", "v", "actions", "actions", "NODE_COMMON", "NODE_COMMON", "v", "actions", "setComponent", "valueChange", "NODE_COMMON"]
|
|
7
7
|
}
|