@shenghuabi/workflow 1.1.0 → 1.1.2

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.
@@ -164,31 +164,6 @@ export declare const CHAT_NODE_DEFINE: v.LooseObjectSchema<{
164
164
  type: "text";
165
165
  }[];
166
166
  thinkContent?: string | undefined;
167
- })[]>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", ({
168
- role: "system";
169
- content: {
170
- text: string;
171
- type: "text";
172
- }[];
173
- } | {
174
- role: "user";
175
- content: ({
176
- text: string;
177
- type: "text";
178
- } | {
179
- image_url: {
180
- url: string;
181
- detail?: "auto" | "low" | "high" | undefined;
182
- };
183
- type: "image_url";
184
- })[];
185
- } | {
186
- role: "assistant";
187
- content: {
188
- text: string;
189
- type: "text";
190
- }[];
191
- thinkContent?: string | undefined;
192
- })[], import("@piying/view-angular-core").AnyCoreSchemaHandle>]>;
167
+ })[]>]>;
193
168
  }, undefined>;
194
169
  }, undefined>;
@@ -161,32 +161,7 @@ export declare const ChatMainConfig: {
161
161
  type: "text";
162
162
  }[];
163
163
  thinkContent?: string | undefined;
164
- })[]>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", ({
165
- role: "system";
166
- content: {
167
- text: string;
168
- type: "text";
169
- }[];
170
- } | {
171
- role: "user";
172
- content: ({
173
- text: string;
174
- type: "text";
175
- } | {
176
- image_url: {
177
- url: string;
178
- detail?: "auto" | "low" | "high" | undefined;
179
- };
180
- type: "image_url";
181
- })[];
182
- } | {
183
- role: "assistant";
184
- content: {
185
- text: string;
186
- type: "text";
187
- }[];
188
- thinkContent?: string | undefined;
189
- })[], import("@piying/view-angular-core").AnyCoreSchemaHandle>]>;
164
+ })[]>]>;
190
165
  }, undefined>;
191
166
  }, undefined>;
192
167
  readonly afterAdd?: (node: import("../../../..").CustomNode, injector: import("static-injector").Injector) => any;
@@ -1,6 +1,6 @@
1
1
  import * as v from 'valibot';
2
2
  export declare const TEXT_NODE_DEFINE: v.LooseObjectSchema<{
3
3
  readonly data: v.LooseObjectSchema<{
4
- readonly value: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", string, import("@piying/view-angular-core").AnyCoreSchemaHandle>, import("@piying/valibot-visit").RawConfigAction<"viewRawConfig", string, import("@piying/view-angular-core").AnyCoreSchemaHandle>]>;
4
+ readonly value: 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>]>;
5
5
  }, undefined>;
6
6
  }, undefined>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shenghuabi/workflow",
3
- "version": "1.1.0",
3
+ "version": "1.1.2",
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.0",
14
+ "@shenghuabi/openai": "1.1.2",
15
15
  "static-injector": "^6.1.2",
16
16
  "@piying/view-angular-core": "^2.9.3",
17
17
  "@piying/valibot-visit": "^1.3.11"
package/share/type.d.ts CHANGED
@@ -81,9 +81,6 @@ export type NodeComponentType = {
81
81
  } & WorkflowNodeConfigOutputType;
82
82
  export type WebviewNodeConfig = NodeComponentType & {
83
83
  displayConfig?: v.BaseSchema<any, any, any>;
84
- config?: v.BaseSchema<any, any, any>;
85
84
  initData: InitDataFunction;
86
- /** 非工作流中,模板上下文中使用 */
87
- templateConfig?: v.BaseSchema<any, any, any>;
88
85
  component?: any;
89
86
  };
package/webview/index.js CHANGED
@@ -226,37 +226,42 @@ var CHAT_NODE_DEFINE = v3.looseObject({
226
226
  ),
227
227
  value: v3.pipe(
228
228
  v3.custom(Boolean),
229
- (0, import_view_angular_core4.setComponent)("prompt-list"),
230
- (0, import_view_angular_core4.valueChange)((fn) => {
231
- fn({ list: [void 0] }).subscribe(({ list: [value], field }) => {
232
- if (!Array.isArray(value)) {
233
- return;
234
- }
235
- const inputValue = value ?? [];
236
- field.context.parseTemplate(
237
- inputValue.flatMap(
238
- (item) => item.content.map(
239
- (item2) => item2.type === "text" ? item2.text : ""
240
- )
241
- )
242
- ).then((value2) => {
243
- if (!value2) {
244
- return;
245
- }
246
- field.context.changeHandleData(field, "input", 1, value2);
247
- });
248
- const list = inputValue.flatMap(
249
- (item) => item.content.map(
250
- (item2) => item2.type === "image_url" ? item2.image_url.url : void 0
251
- )
252
- ).filter(Boolean).map((item) => ({
253
- value: `${item}`,
254
- label: `${item}`,
255
- inputType: `image`
256
- }));
257
- field.context.changeHandleData(field, "input", 3, list ?? []);
258
- });
259
- })
229
+ (0, import_view_angular_core4.setComponent)("prompt-list")
230
+ // valueChange((fn) => {
231
+ // fn({ list: [undefined] }).subscribe(({ list: [value], field }) => {
232
+ // if (!Array.isArray(value)) {
233
+ // return;
234
+ // }
235
+ // const inputValue: ChatMessageListInputType = value ?? [];
236
+ // // field.context
237
+ // // .parseTemplate(
238
+ // // inputValue.flatMap((item) =>
239
+ // // item.content.map((item) =>
240
+ // // item.type === 'text' ? item.text : '',
241
+ // // ),
242
+ // // ),
243
+ // // )
244
+ // // .then((value: any) => {
245
+ // // if (!value) {
246
+ // // return;
247
+ // // }
248
+ // // field.context.changeHandleData(field, 'input', 1, value);
249
+ // // });
250
+ // // const list = inputValue
251
+ // // .flatMap((item) =>
252
+ // // item.content.map((item) =>
253
+ // // item.type === 'image_url' ? item.image_url.url : undefined,
254
+ // // ),
255
+ // // )
256
+ // // .filter(Boolean)
257
+ // // .map((item) => ({
258
+ // // value: `${item}`,
259
+ // // label: `${item}`,
260
+ // // inputType: `image` as const,
261
+ // // }));
262
+ // // field.context.changeHandleData(field, 'input', 3, list ?? []);
263
+ // });
264
+ // }),
260
265
  )
261
266
  })
262
267
  });
@@ -318,7 +323,6 @@ function getSystemTemplate() {
318
323
  var ChatWebviewConfig = {
319
324
  ...NODE_COMMON,
320
325
  displayConfig: CHAT_NODE_DEFINE,
321
- config: CHAT_NODE_DEFINE,
322
326
  initData: () => ({
323
327
  data: {
324
328
  transform: {
@@ -349,20 +353,21 @@ var TEXT_NODE_DEFINE = v4.looseObject({
349
353
  data: v4.looseObject({
350
354
  value: v4.pipe(
351
355
  v4.string(),
352
- import_view_angular_core5.actions.class.top("nodrag"),
353
- (0, import_view_angular_core5.valueChange)((fn) => {
354
- fn({ list: [void 0] }).subscribe(({ list: [value], field }) => {
355
- if (typeof value !== "string") {
356
- return;
357
- }
358
- field.context.parseTemplate([value]).then((value2) => {
359
- if (!value2) {
360
- return;
361
- }
362
- field.context.changeHandleData(field, "input", 1, value2);
363
- });
364
- });
365
- })
356
+ (0, import_view_angular_core5.setComponent)("textarea-template"),
357
+ import_view_angular_core5.actions.class.top("nodrag")
358
+ // valueChange((fn) => {
359
+ // fn({ list: [undefined] }).subscribe(({ list: [value], field }) => {
360
+ // if (typeof value !== 'string') {
361
+ // return;
362
+ // }
363
+ // field.context.parseTemplate([value]).then((value: any) => {
364
+ // if (!value) {
365
+ // return;
366
+ // }
367
+ // field.context.changeHandleData(field, 'input', 1, value);
368
+ // });
369
+ // });
370
+ // }),
366
371
  )
367
372
  })
368
373
  });
@@ -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/chat.node.define.ts", "../../../packages/workflow/share/common/examples.define.ts", "../../../packages/workflow/share/util/layout.ts", "../../../packages/workflow/share/common/llm.define.ts", "../../../packages/workflow/share/common/const.ts", "../../../packages/workflow/share/const.ts", "../../../packages/workflow/inline/node/chat/common.ts", "../../../packages/workflow/inline/node/chat/util.ts", "../../../packages/workflow/inline/node/chat/webview/index.ts", "../../../packages/workflow/inline/node/text/common.ts", "../../../packages/workflow/inline/node/text/text.node.define.ts", "../../../packages/workflow/inline/node/text/webview/index.ts"],
4
- "sourcesContent": ["export * as WebviewNodeMap from '../inline/node/index.browser';\n", "export * from './chat/webview';\nexport * from './text/webview';\n", "import * as v from 'valibot';\n\nimport {\n actions,\n setComponent,\n valueChange,\n} from '@piying/view-angular-core';\nimport { ChatMessageListInputType } from '@shenghuabi/openai';\nimport { EXAMPLES_DEFINE, llmModelConfig } from '../../../share/common';\nexport const ResponseList = ['json', 'markdown', 'yaml'] as const;\nexport const ResponseFormat = ['text', 'json_object', 'json_schema'] as const;\nexport type ResponseType = (typeof ResponseList)[number];\nexport const CHAT_NODE_DEFINE = v.looseObject({\n data: v.looseObject({\n config: v.pipe(\n v.object({\n llm: v.optional(llmModelConfig()),\n /** 处理时解析 */\n responseFormat: v.pipe(\n v.optional(v.picklist(ResponseFormat)),\n 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 }),\n actions.wrappers.patch(['div']),\n actions.class.top('grid auto-rows-auto gap-2'),\n ),\n value: v.pipe(\n v.custom<ChatMessageListInputType>(Boolean),\n setComponent('prompt-list'),\n valueChange((fn) => {\n fn({ list: [undefined] }).subscribe(({ list: [value], field }) => {\n if (!Array.isArray(value)) {\n return;\n }\n const inputValue: ChatMessageListInputType = value ?? [];\n field.context\n .parseTemplate(\n inputValue.flatMap((item) =>\n item.content.map((item) =>\n item.type === 'text' ? item.text : '',\n ),\n ),\n )\n .then((value: any) => {\n if (!value) {\n return;\n }\n field.context.changeHandleData(field, 'input', 1, value);\n });\n\n const list = inputValue\n .flatMap((item) =>\n item.content.map((item) =>\n item.type === 'image_url' ? item.image_url.url : undefined,\n ),\n )\n .filter(Boolean)\n .map((item) => ({\n value: `${item}`,\n label: `${item}`,\n inputType: `image` as const,\n }));\n field.context.changeHandleData(field, 'input', 3, list ?? []);\n });\n }),\n ),\n }),\n});\n", "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", "export const DEFAULT_CHAT_SCHEMA_KEY = `[JsonSchema]`;\nexport const RUNNER_ORIGIN_OUTPUT_KEY = `[Origin]`;\n", "export const DEFAULT_INPUT_KEY = `[INPUT]`;\nexport const HelpObj = {\n templateVarLine: `- 变量定义格式: {{xx}},{{xx.yy}}`,\n pathTodoLine: `- **TODO** 接收传入路径而不是指定`,\n};\n", "import { HelpObj } from '../../../share';\nimport {\n DEFAULT_CHAT_SCHEMA_KEY,\n RUNNER_ORIGIN_OUTPUT_KEY,\n} from '../../../share';\nimport { NodeComponentType } from '../../../share';\n\nexport const NODE_COMMON: NodeComponentType = {\n priority: -100,\n type: 'chat',\n label: `对话`,\n icon: { fontIcon: 'chat' },\n disableHead: false,\n disableConnect: false,\n color: 'accent',\n help: [\n `- 点击输入框左侧图标可以切换或添加新行`,\n `${HelpObj.templateVarLine}`,\n '### 指定类型输出',\n '- `JsonSchema`为可选输入,需要使用`代码`节点生成',\n '> 设置后响应类型会自动变为json',\n '> 也可以使用任何符合`ChatJsonSchema`类型的数据结构传入(`代码`节点编辑时有声明)',\n '- 原始输出: 不进行任何格式化处理的输出',\n '### 定义图片变量',\n '- 只有支持图片传入的大语言模型才支持此选项',\n '> 如`minicpm-v:8b`',\n '- 定义后在对话中可以传入图片',\n '- 或者可以使用`图片输入`节点手动指定一张图片',\n '- 只有`用户提示词`可以使用图片输入',\n '> 不清楚是否所有模型都遵循此规则,所以并没有限制输入',\n ].join('\\n'),\n // config: defineConfig,\n inputs: [\n [],\n [\n {\n label: 'JsonSchema',\n value: DEFAULT_CHAT_SCHEMA_KEY,\n inputType: 'schema',\n optional: true,\n },\n ],\n ],\n outputs: [[{ label: '原始输出', value: RUNNER_ORIGIN_OUTPUT_KEY }]],\n};\n", "import { deepClone } from '@cyia/util';\n\nconst INIT_TEMPLATE = { role: 'user' as const, content: [] };\nexport function getHumanTemplate() {\n return deepClone(INIT_TEMPLATE);\n}\nexport function getSystemTemplate() {\n return deepClone({ ...INIT_TEMPLATE, role: 'system' });\n}\n", "import { WebviewNodeConfig } from '../../../../share/type';\nimport { CHAT_NODE_DEFINE } from '../chat.node.define';\nimport { NODE_COMMON } from '../common';\nimport { getSystemTemplate } from '../util';\n\nexport const ChatWebviewConfig: WebviewNodeConfig = {\n ...NODE_COMMON,\n displayConfig: CHAT_NODE_DEFINE,\n config: CHAT_NODE_DEFINE,\n initData: () => ({\n data: {\n transform: {\n resizable: true,\n },\n value: [getSystemTemplate()],\n },\n width: 300,\n }),\n};\n", "import { HelpObj } from '../../../share';\nimport { NodeComponentType } from '../../../share/type';\n\nexport const NODE_COMMON: NodeComponentType = {\n type: 'textarea',\n label: `文本模板`,\n icon: { fontIcon: 'text_snippet' },\n disableHead: false,\n disableConnect: false,\n color: 'primary',\n help: `${HelpObj.templateVarLine}`,\n priority: -98,\n};\n", "import {\n actions,\n valueChange,\n} from '@piying/view-angular-core';\nimport * as v from 'valibot';\nexport const TEXT_NODE_DEFINE = v.looseObject({\n data: v.looseObject({\n value: v.pipe(\n v.string(),\n actions.class.top('nodrag'),\n valueChange((fn) => {\n fn({ list: [undefined] }).subscribe(({ list: [value], field }) => {\n if (typeof value !== 'string') {\n return;\n }\n field.context.parseTemplate([value]).then((value: any) => {\n if (!value) {\n return;\n }\n field.context.changeHandleData(field, 'input', 1, value);\n });\n });\n }),\n ),\n }),\n});\n", "import { WebviewNodeConfig } from '../../../../share/type';\nimport { NODE_COMMON } from '../common';\nimport { TEXT_NODE_DEFINE } from '../text.node.define';\n\nexport const TextWebviewConfig: WebviewNodeConfig = {\n ...NODE_COMMON,\n displayConfig: TEXT_NODE_DEFINE,\n initData: () => ({\n data: {\n transform: {\n resizable: true,\n },\n\n value: '',\n },\n width: 300,\n }),\n};\n"],
5
- "mappings": "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",
6
- "names": ["v", "import_view_angular_core", "import_view_angular_core", "import_view_angular_core", "v", "item", "value", "NODE_COMMON", "import_view_angular_core", "v", "value", "NODE_COMMON"]
4
+ "sourcesContent": ["export * as WebviewNodeMap from '../inline/node/index.browser';\n", "export * from './chat/webview';\nexport * from './text/webview';\n", "import * as v from 'valibot';\n\nimport {\n actions,\n setComponent,\n valueChange,\n} from '@piying/view-angular-core';\nimport { ChatMessageListInputType } from '@shenghuabi/openai';\nimport { EXAMPLES_DEFINE, llmModelConfig } from '../../../share/common';\nexport const ResponseList = ['json', 'markdown', 'yaml'] as const;\nexport const ResponseFormat = ['text', 'json_object', 'json_schema'] as const;\nexport type ResponseType = (typeof ResponseList)[number];\nexport const CHAT_NODE_DEFINE = v.looseObject({\n data: v.looseObject({\n config: v.pipe(\n v.object({\n llm: v.optional(llmModelConfig()),\n /** 处理时解析 */\n responseFormat: v.pipe(\n v.optional(v.picklist(ResponseFormat)),\n 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 }),\n actions.wrappers.patch(['div']),\n actions.class.top('grid auto-rows-auto gap-2'),\n ),\n value: v.pipe(\n v.custom<ChatMessageListInputType>(Boolean),\n setComponent('prompt-list'),\n // valueChange((fn) => {\n // fn({ list: [undefined] }).subscribe(({ list: [value], field }) => {\n // if (!Array.isArray(value)) {\n // return;\n // }\n // const inputValue: ChatMessageListInputType = value ?? [];\n // // field.context\n // // .parseTemplate(\n // // inputValue.flatMap((item) =>\n // // item.content.map((item) =>\n // // item.type === 'text' ? item.text : '',\n // // ),\n // // ),\n // // )\n // // .then((value: any) => {\n // // if (!value) {\n // // return;\n // // }\n // // field.context.changeHandleData(field, 'input', 1, value);\n // // });\n\n // // const list = inputValue\n // // .flatMap((item) =>\n // // item.content.map((item) =>\n // // item.type === 'image_url' ? item.image_url.url : undefined,\n // // ),\n // // )\n // // .filter(Boolean)\n // // .map((item) => ({\n // // value: `${item}`,\n // // label: `${item}`,\n // // inputType: `image` as const,\n // // }));\n // // field.context.changeHandleData(field, 'input', 3, list ?? []);\n // });\n // }),\n ),\n }),\n});\n", "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", "export const DEFAULT_CHAT_SCHEMA_KEY = `[JsonSchema]`;\nexport const RUNNER_ORIGIN_OUTPUT_KEY = `[Origin]`;\n", "export const DEFAULT_INPUT_KEY = `[INPUT]`;\nexport const HelpObj = {\n templateVarLine: `- 变量定义格式: {{xx}},{{xx.yy}}`,\n pathTodoLine: `- **TODO** 接收传入路径而不是指定`,\n};\n", "import { HelpObj } from '../../../share';\nimport {\n DEFAULT_CHAT_SCHEMA_KEY,\n RUNNER_ORIGIN_OUTPUT_KEY,\n} from '../../../share';\nimport { NodeComponentType } from '../../../share';\n\nexport const NODE_COMMON: NodeComponentType = {\n priority: -100,\n type: 'chat',\n label: `对话`,\n icon: { fontIcon: 'chat' },\n disableHead: false,\n disableConnect: false,\n color: 'accent',\n help: [\n `- 点击输入框左侧图标可以切换或添加新行`,\n `${HelpObj.templateVarLine}`,\n '### 指定类型输出',\n '- `JsonSchema`为可选输入,需要使用`代码`节点生成',\n '> 设置后响应类型会自动变为json',\n '> 也可以使用任何符合`ChatJsonSchema`类型的数据结构传入(`代码`节点编辑时有声明)',\n '- 原始输出: 不进行任何格式化处理的输出',\n '### 定义图片变量',\n '- 只有支持图片传入的大语言模型才支持此选项',\n '> 如`minicpm-v:8b`',\n '- 定义后在对话中可以传入图片',\n '- 或者可以使用`图片输入`节点手动指定一张图片',\n '- 只有`用户提示词`可以使用图片输入',\n '> 不清楚是否所有模型都遵循此规则,所以并没有限制输入',\n ].join('\\n'),\n // config: defineConfig,\n inputs: [\n [],\n [\n {\n label: 'JsonSchema',\n value: DEFAULT_CHAT_SCHEMA_KEY,\n inputType: 'schema',\n optional: true,\n },\n ],\n ],\n outputs: [[{ label: '原始输出', value: RUNNER_ORIGIN_OUTPUT_KEY }]],\n};\n", "import { deepClone } from '@cyia/util';\n\nconst INIT_TEMPLATE = { role: 'user' as const, content: [] };\nexport function getHumanTemplate() {\n return deepClone(INIT_TEMPLATE);\n}\nexport function getSystemTemplate() {\n return deepClone({ ...INIT_TEMPLATE, role: 'system' });\n}\n", "import { WebviewNodeConfig } from '../../../../share/type';\nimport { CHAT_NODE_DEFINE } from '../chat.node.define';\nimport { NODE_COMMON } from '../common';\nimport { getSystemTemplate } from '../util';\n\nexport const ChatWebviewConfig: WebviewNodeConfig = {\n ...NODE_COMMON,\n displayConfig: CHAT_NODE_DEFINE,\n initData: () => ({\n data: {\n transform: {\n resizable: true,\n },\n value: [getSystemTemplate()],\n },\n width: 300,\n }),\n};\n", "import { HelpObj } from '../../../share';\nimport { NodeComponentType } from '../../../share/type';\n\nexport const NODE_COMMON: NodeComponentType = {\n type: 'textarea',\n label: `文本模板`,\n icon: { fontIcon: 'text_snippet' },\n disableHead: false,\n disableConnect: false,\n color: 'primary',\n help: `${HelpObj.templateVarLine}`,\n priority: -98,\n};\n", "import {\n actions,\n setComponent,\n} from '@piying/view-angular-core';\nimport * as v from 'valibot';\nexport const TEXT_NODE_DEFINE = v.looseObject({\n data: v.looseObject({\n value: v.pipe(\n v.string(),\n setComponent('textarea-template'),\n actions.class.top('nodrag'),\n // valueChange((fn) => {\n // fn({ list: [undefined] }).subscribe(({ list: [value], field }) => {\n // if (typeof value !== 'string') {\n // return;\n // }\n // field.context.parseTemplate([value]).then((value: any) => {\n // if (!value) {\n // return;\n // }\n // field.context.changeHandleData(field, 'input', 1, value);\n // });\n // });\n // }),\n ),\n }),\n});\n", "import { WebviewNodeConfig } from '../../../../share/type';\nimport { NODE_COMMON } from '../common';\nimport { TEXT_NODE_DEFINE } from '../text.node.define';\n\nexport const TextWebviewConfig: WebviewNodeConfig = {\n ...NODE_COMMON,\n displayConfig: TEXT_NODE_DEFINE,\n initData: () => ({\n data: {\n transform: {\n resizable: true,\n },\n\n value: '',\n },\n width: 300,\n }),\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["v", "import_view_angular_core", "import_view_angular_core", "import_view_angular_core", "v", "NODE_COMMON", "import_view_angular_core", "v", "NODE_COMMON"]
7
7
  }
package/webview/index.mjs CHANGED
@@ -204,37 +204,42 @@ var CHAT_NODE_DEFINE = v3.looseObject({
204
204
  ),
205
205
  value: v3.pipe(
206
206
  v3.custom(Boolean),
207
- setComponent2("prompt-list"),
208
- valueChange((fn) => {
209
- fn({ list: [void 0] }).subscribe(({ list: [value], field }) => {
210
- if (!Array.isArray(value)) {
211
- return;
212
- }
213
- const inputValue = value ?? [];
214
- field.context.parseTemplate(
215
- inputValue.flatMap(
216
- (item) => item.content.map(
217
- (item2) => item2.type === "text" ? item2.text : ""
218
- )
219
- )
220
- ).then((value2) => {
221
- if (!value2) {
222
- return;
223
- }
224
- field.context.changeHandleData(field, "input", 1, value2);
225
- });
226
- const list = inputValue.flatMap(
227
- (item) => item.content.map(
228
- (item2) => item2.type === "image_url" ? item2.image_url.url : void 0
229
- )
230
- ).filter(Boolean).map((item) => ({
231
- value: `${item}`,
232
- label: `${item}`,
233
- inputType: `image`
234
- }));
235
- field.context.changeHandleData(field, "input", 3, list ?? []);
236
- });
237
- })
207
+ setComponent2("prompt-list")
208
+ // valueChange((fn) => {
209
+ // fn({ list: [undefined] }).subscribe(({ list: [value], field }) => {
210
+ // if (!Array.isArray(value)) {
211
+ // return;
212
+ // }
213
+ // const inputValue: ChatMessageListInputType = value ?? [];
214
+ // // field.context
215
+ // // .parseTemplate(
216
+ // // inputValue.flatMap((item) =>
217
+ // // item.content.map((item) =>
218
+ // // item.type === 'text' ? item.text : '',
219
+ // // ),
220
+ // // ),
221
+ // // )
222
+ // // .then((value: any) => {
223
+ // // if (!value) {
224
+ // // return;
225
+ // // }
226
+ // // field.context.changeHandleData(field, 'input', 1, value);
227
+ // // });
228
+ // // const list = inputValue
229
+ // // .flatMap((item) =>
230
+ // // item.content.map((item) =>
231
+ // // item.type === 'image_url' ? item.image_url.url : undefined,
232
+ // // ),
233
+ // // )
234
+ // // .filter(Boolean)
235
+ // // .map((item) => ({
236
+ // // value: `${item}`,
237
+ // // label: `${item}`,
238
+ // // inputType: `image` as const,
239
+ // // }));
240
+ // // field.context.changeHandleData(field, 'input', 3, list ?? []);
241
+ // });
242
+ // }),
238
243
  )
239
244
  })
240
245
  });
@@ -296,7 +301,6 @@ function getSystemTemplate() {
296
301
  var ChatWebviewConfig = {
297
302
  ...NODE_COMMON,
298
303
  displayConfig: CHAT_NODE_DEFINE,
299
- config: CHAT_NODE_DEFINE,
300
304
  initData: () => ({
301
305
  data: {
302
306
  transform: {
@@ -323,27 +327,28 @@ var NODE_COMMON2 = {
323
327
  // packages/workflow/inline/node/text/text.node.define.ts
324
328
  import {
325
329
  actions as actions5,
326
- valueChange as valueChange2
330
+ setComponent as setComponent3
327
331
  } from "@piying/view-angular-core";
328
332
  import * as v4 from "valibot";
329
333
  var TEXT_NODE_DEFINE = v4.looseObject({
330
334
  data: v4.looseObject({
331
335
  value: v4.pipe(
332
336
  v4.string(),
333
- actions5.class.top("nodrag"),
334
- valueChange2((fn) => {
335
- fn({ list: [void 0] }).subscribe(({ list: [value], field }) => {
336
- if (typeof value !== "string") {
337
- return;
338
- }
339
- field.context.parseTemplate([value]).then((value2) => {
340
- if (!value2) {
341
- return;
342
- }
343
- field.context.changeHandleData(field, "input", 1, value2);
344
- });
345
- });
346
- })
337
+ setComponent3("textarea-template"),
338
+ actions5.class.top("nodrag")
339
+ // valueChange((fn) => {
340
+ // fn({ list: [undefined] }).subscribe(({ list: [value], field }) => {
341
+ // if (typeof value !== 'string') {
342
+ // return;
343
+ // }
344
+ // field.context.parseTemplate([value]).then((value: any) => {
345
+ // if (!value) {
346
+ // return;
347
+ // }
348
+ // field.context.changeHandleData(field, 'input', 1, value);
349
+ // });
350
+ // });
351
+ // }),
347
352
  )
348
353
  })
349
354
  });
@@ -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/chat.node.define.ts", "../../../packages/workflow/share/common/examples.define.ts", "../../../packages/workflow/share/util/layout.ts", "../../../packages/workflow/share/common/llm.define.ts", "../../../packages/workflow/share/common/const.ts", "../../../packages/workflow/share/const.ts", "../../../packages/workflow/inline/node/chat/common.ts", "../../../packages/workflow/inline/node/chat/util.ts", "../../../packages/workflow/inline/node/chat/webview/index.ts", "../../../packages/workflow/inline/node/text/common.ts", "../../../packages/workflow/inline/node/text/text.node.define.ts", "../../../packages/workflow/inline/node/text/webview/index.ts"],
4
- "sourcesContent": ["export * from './chat/webview';\nexport * from './text/webview';\n", "import * as v from 'valibot';\n\nimport {\n actions,\n setComponent,\n valueChange,\n} from '@piying/view-angular-core';\nimport { ChatMessageListInputType } from '@shenghuabi/openai';\nimport { EXAMPLES_DEFINE, llmModelConfig } from '../../../share/common';\nexport const ResponseList = ['json', 'markdown', 'yaml'] as const;\nexport const ResponseFormat = ['text', 'json_object', 'json_schema'] as const;\nexport type ResponseType = (typeof ResponseList)[number];\nexport const CHAT_NODE_DEFINE = v.looseObject({\n data: v.looseObject({\n config: v.pipe(\n v.object({\n llm: v.optional(llmModelConfig()),\n /** 处理时解析 */\n responseFormat: v.pipe(\n v.optional(v.picklist(ResponseFormat)),\n 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 }),\n actions.wrappers.patch(['div']),\n actions.class.top('grid auto-rows-auto gap-2'),\n ),\n value: v.pipe(\n v.custom<ChatMessageListInputType>(Boolean),\n setComponent('prompt-list'),\n valueChange((fn) => {\n fn({ list: [undefined] }).subscribe(({ list: [value], field }) => {\n if (!Array.isArray(value)) {\n return;\n }\n const inputValue: ChatMessageListInputType = value ?? [];\n field.context\n .parseTemplate(\n inputValue.flatMap((item) =>\n item.content.map((item) =>\n item.type === 'text' ? item.text : '',\n ),\n ),\n )\n .then((value: any) => {\n if (!value) {\n return;\n }\n field.context.changeHandleData(field, 'input', 1, value);\n });\n\n const list = inputValue\n .flatMap((item) =>\n item.content.map((item) =>\n item.type === 'image_url' ? item.image_url.url : undefined,\n ),\n )\n .filter(Boolean)\n .map((item) => ({\n value: `${item}`,\n label: `${item}`,\n inputType: `image` as const,\n }));\n field.context.changeHandleData(field, 'input', 3, list ?? []);\n });\n }),\n ),\n }),\n});\n", "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", "export const DEFAULT_CHAT_SCHEMA_KEY = `[JsonSchema]`;\nexport const RUNNER_ORIGIN_OUTPUT_KEY = `[Origin]`;\n", "export const DEFAULT_INPUT_KEY = `[INPUT]`;\nexport const HelpObj = {\n templateVarLine: `- 变量定义格式: {{xx}},{{xx.yy}}`,\n pathTodoLine: `- **TODO** 接收传入路径而不是指定`,\n};\n", "import { HelpObj } from '../../../share';\nimport {\n DEFAULT_CHAT_SCHEMA_KEY,\n RUNNER_ORIGIN_OUTPUT_KEY,\n} from '../../../share';\nimport { NodeComponentType } from '../../../share';\n\nexport const NODE_COMMON: NodeComponentType = {\n priority: -100,\n type: 'chat',\n label: `对话`,\n icon: { fontIcon: 'chat' },\n disableHead: false,\n disableConnect: false,\n color: 'accent',\n help: [\n `- 点击输入框左侧图标可以切换或添加新行`,\n `${HelpObj.templateVarLine}`,\n '### 指定类型输出',\n '- `JsonSchema`为可选输入,需要使用`代码`节点生成',\n '> 设置后响应类型会自动变为json',\n '> 也可以使用任何符合`ChatJsonSchema`类型的数据结构传入(`代码`节点编辑时有声明)',\n '- 原始输出: 不进行任何格式化处理的输出',\n '### 定义图片变量',\n '- 只有支持图片传入的大语言模型才支持此选项',\n '> 如`minicpm-v:8b`',\n '- 定义后在对话中可以传入图片',\n '- 或者可以使用`图片输入`节点手动指定一张图片',\n '- 只有`用户提示词`可以使用图片输入',\n '> 不清楚是否所有模型都遵循此规则,所以并没有限制输入',\n ].join('\\n'),\n // config: defineConfig,\n inputs: [\n [],\n [\n {\n label: 'JsonSchema',\n value: DEFAULT_CHAT_SCHEMA_KEY,\n inputType: 'schema',\n optional: true,\n },\n ],\n ],\n outputs: [[{ label: '原始输出', value: RUNNER_ORIGIN_OUTPUT_KEY }]],\n};\n", "import { deepClone } from '@cyia/util';\n\nconst INIT_TEMPLATE = { role: 'user' as const, content: [] };\nexport function getHumanTemplate() {\n return deepClone(INIT_TEMPLATE);\n}\nexport function getSystemTemplate() {\n return deepClone({ ...INIT_TEMPLATE, role: 'system' });\n}\n", "import { WebviewNodeConfig } from '../../../../share/type';\nimport { CHAT_NODE_DEFINE } from '../chat.node.define';\nimport { NODE_COMMON } from '../common';\nimport { getSystemTemplate } from '../util';\n\nexport const ChatWebviewConfig: WebviewNodeConfig = {\n ...NODE_COMMON,\n displayConfig: CHAT_NODE_DEFINE,\n config: CHAT_NODE_DEFINE,\n initData: () => ({\n data: {\n transform: {\n resizable: true,\n },\n value: [getSystemTemplate()],\n },\n width: 300,\n }),\n};\n", "import { HelpObj } from '../../../share';\nimport { NodeComponentType } from '../../../share/type';\n\nexport const NODE_COMMON: NodeComponentType = {\n type: 'textarea',\n label: `文本模板`,\n icon: { fontIcon: 'text_snippet' },\n disableHead: false,\n disableConnect: false,\n color: 'primary',\n help: `${HelpObj.templateVarLine}`,\n priority: -98,\n};\n", "import {\n actions,\n valueChange,\n} from '@piying/view-angular-core';\nimport * as v from 'valibot';\nexport const TEXT_NODE_DEFINE = v.looseObject({\n data: v.looseObject({\n value: v.pipe(\n v.string(),\n actions.class.top('nodrag'),\n valueChange((fn) => {\n fn({ list: [undefined] }).subscribe(({ list: [value], field }) => {\n if (typeof value !== 'string') {\n return;\n }\n field.context.parseTemplate([value]).then((value: any) => {\n if (!value) {\n return;\n }\n field.context.changeHandleData(field, 'input', 1, value);\n });\n });\n }),\n ),\n }),\n});\n", "import { WebviewNodeConfig } from '../../../../share/type';\nimport { NODE_COMMON } from '../common';\nimport { TEXT_NODE_DEFINE } from '../text.node.define';\n\nexport const TextWebviewConfig: WebviewNodeConfig = {\n ...NODE_COMMON,\n displayConfig: TEXT_NODE_DEFINE,\n initData: () => ({\n data: {\n transform: {\n resizable: true,\n },\n\n value: '',\n },\n width: 300,\n }),\n};\n"],
5
- "mappings": "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",
6
- "names": ["v", "actions", "setComponent", "actions", "actions", "actions", "v", "actions", "actions", "setComponent", "item", "value", "NODE_COMMON", "actions", "valueChange", "v", "value", "NODE_COMMON"]
4
+ "sourcesContent": ["export * from './chat/webview';\nexport * from './text/webview';\n", "import * as v from 'valibot';\n\nimport {\n actions,\n setComponent,\n valueChange,\n} from '@piying/view-angular-core';\nimport { ChatMessageListInputType } from '@shenghuabi/openai';\nimport { EXAMPLES_DEFINE, llmModelConfig } from '../../../share/common';\nexport const ResponseList = ['json', 'markdown', 'yaml'] as const;\nexport const ResponseFormat = ['text', 'json_object', 'json_schema'] as const;\nexport type ResponseType = (typeof ResponseList)[number];\nexport const CHAT_NODE_DEFINE = v.looseObject({\n data: v.looseObject({\n config: v.pipe(\n v.object({\n llm: v.optional(llmModelConfig()),\n /** 处理时解析 */\n responseFormat: v.pipe(\n v.optional(v.picklist(ResponseFormat)),\n 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 }),\n actions.wrappers.patch(['div']),\n actions.class.top('grid auto-rows-auto gap-2'),\n ),\n value: v.pipe(\n v.custom<ChatMessageListInputType>(Boolean),\n setComponent('prompt-list'),\n // valueChange((fn) => {\n // fn({ list: [undefined] }).subscribe(({ list: [value], field }) => {\n // if (!Array.isArray(value)) {\n // return;\n // }\n // const inputValue: ChatMessageListInputType = value ?? [];\n // // field.context\n // // .parseTemplate(\n // // inputValue.flatMap((item) =>\n // // item.content.map((item) =>\n // // item.type === 'text' ? item.text : '',\n // // ),\n // // ),\n // // )\n // // .then((value: any) => {\n // // if (!value) {\n // // return;\n // // }\n // // field.context.changeHandleData(field, 'input', 1, value);\n // // });\n\n // // const list = inputValue\n // // .flatMap((item) =>\n // // item.content.map((item) =>\n // // item.type === 'image_url' ? item.image_url.url : undefined,\n // // ),\n // // )\n // // .filter(Boolean)\n // // .map((item) => ({\n // // value: `${item}`,\n // // label: `${item}`,\n // // inputType: `image` as const,\n // // }));\n // // field.context.changeHandleData(field, 'input', 3, list ?? []);\n // });\n // }),\n ),\n }),\n});\n", "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", "export const DEFAULT_CHAT_SCHEMA_KEY = `[JsonSchema]`;\nexport const RUNNER_ORIGIN_OUTPUT_KEY = `[Origin]`;\n", "export const DEFAULT_INPUT_KEY = `[INPUT]`;\nexport const HelpObj = {\n templateVarLine: `- 变量定义格式: {{xx}},{{xx.yy}}`,\n pathTodoLine: `- **TODO** 接收传入路径而不是指定`,\n};\n", "import { HelpObj } from '../../../share';\nimport {\n DEFAULT_CHAT_SCHEMA_KEY,\n RUNNER_ORIGIN_OUTPUT_KEY,\n} from '../../../share';\nimport { NodeComponentType } from '../../../share';\n\nexport const NODE_COMMON: NodeComponentType = {\n priority: -100,\n type: 'chat',\n label: `对话`,\n icon: { fontIcon: 'chat' },\n disableHead: false,\n disableConnect: false,\n color: 'accent',\n help: [\n `- 点击输入框左侧图标可以切换或添加新行`,\n `${HelpObj.templateVarLine}`,\n '### 指定类型输出',\n '- `JsonSchema`为可选输入,需要使用`代码`节点生成',\n '> 设置后响应类型会自动变为json',\n '> 也可以使用任何符合`ChatJsonSchema`类型的数据结构传入(`代码`节点编辑时有声明)',\n '- 原始输出: 不进行任何格式化处理的输出',\n '### 定义图片变量',\n '- 只有支持图片传入的大语言模型才支持此选项',\n '> 如`minicpm-v:8b`',\n '- 定义后在对话中可以传入图片',\n '- 或者可以使用`图片输入`节点手动指定一张图片',\n '- 只有`用户提示词`可以使用图片输入',\n '> 不清楚是否所有模型都遵循此规则,所以并没有限制输入',\n ].join('\\n'),\n // config: defineConfig,\n inputs: [\n [],\n [\n {\n label: 'JsonSchema',\n value: DEFAULT_CHAT_SCHEMA_KEY,\n inputType: 'schema',\n optional: true,\n },\n ],\n ],\n outputs: [[{ label: '原始输出', value: RUNNER_ORIGIN_OUTPUT_KEY }]],\n};\n", "import { deepClone } from '@cyia/util';\n\nconst INIT_TEMPLATE = { role: 'user' as const, content: [] };\nexport function getHumanTemplate() {\n return deepClone(INIT_TEMPLATE);\n}\nexport function getSystemTemplate() {\n return deepClone({ ...INIT_TEMPLATE, role: 'system' });\n}\n", "import { WebviewNodeConfig } from '../../../../share/type';\nimport { CHAT_NODE_DEFINE } from '../chat.node.define';\nimport { NODE_COMMON } from '../common';\nimport { getSystemTemplate } from '../util';\n\nexport const ChatWebviewConfig: WebviewNodeConfig = {\n ...NODE_COMMON,\n displayConfig: CHAT_NODE_DEFINE,\n initData: () => ({\n data: {\n transform: {\n resizable: true,\n },\n value: [getSystemTemplate()],\n },\n width: 300,\n }),\n};\n", "import { HelpObj } from '../../../share';\nimport { NodeComponentType } from '../../../share/type';\n\nexport const NODE_COMMON: NodeComponentType = {\n type: 'textarea',\n label: `文本模板`,\n icon: { fontIcon: 'text_snippet' },\n disableHead: false,\n disableConnect: false,\n color: 'primary',\n help: `${HelpObj.templateVarLine}`,\n priority: -98,\n};\n", "import {\n actions,\n setComponent,\n} from '@piying/view-angular-core';\nimport * as v from 'valibot';\nexport const TEXT_NODE_DEFINE = v.looseObject({\n data: v.looseObject({\n value: v.pipe(\n v.string(),\n setComponent('textarea-template'),\n actions.class.top('nodrag'),\n // valueChange((fn) => {\n // fn({ list: [undefined] }).subscribe(({ list: [value], field }) => {\n // if (typeof value !== 'string') {\n // return;\n // }\n // field.context.parseTemplate([value]).then((value: any) => {\n // if (!value) {\n // return;\n // }\n // field.context.changeHandleData(field, 'input', 1, value);\n // });\n // });\n // }),\n ),\n }),\n});\n", "import { WebviewNodeConfig } from '../../../../share/type';\nimport { NODE_COMMON } from '../common';\nimport { TEXT_NODE_DEFINE } from '../text.node.define';\n\nexport const TextWebviewConfig: WebviewNodeConfig = {\n ...NODE_COMMON,\n displayConfig: TEXT_NODE_DEFINE,\n initData: () => ({\n data: {\n transform: {\n resizable: true,\n },\n\n value: '',\n },\n width: 300,\n }),\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["v", "actions", "setComponent", "actions", "actions", "actions", "v", "actions", "actions", "setComponent", "NODE_COMMON", "actions", "setComponent", "v", "NODE_COMMON"]
7
7
  }