MCPcopy Create free account
hub / github.com/DSGWJQ/Feagent / generate_yaml

Method generate_yaml

src/domain/services/node_code_generator.py:399–446  ·  view source on GitHub ↗

生成 YAML 定义 参数: node_name: 节点名称 description: 描述 language: 编程语言 parameters: 参数列表 returns: 返回值定义 返回: YAML 生成结果

(
        self,
        node_name: str,
        description: str,
        language: str,
        parameters: list[dict[str, Any]],
        returns: dict[str, Any],
    )

Source from the content-addressed store, hash-verified

397 """
398
399 def generate_yaml(
400 self,
401 node_name: str,
402 description: str,
403 language: str,
404 parameters: list[dict[str, Any]],
405 returns: dict[str, Any],
406 ) -> YamlGenerationResult:
407 """生成 YAML 定义
408
409 参数:
410 node_name: 节点名称
411 description: 描述
412 language: 编程语言
413 parameters: 参数列表
414 returns: 返回值定义
415
416 返回:
417 YAML 生成结果
418 """
419 # 规范化节点名称
420 sanitized_name = self._sanitize_name(node_name)
421
422 # 构建 YAML 结构
423 yaml_dict = {
424 "name": sanitized_name,
425 "kind": "node",
426 "description": description,
427 "version": "1.0.0",
428 "parameters": self._format_parameters(parameters),
429 "returns": returns,
430 "executor_type": "code",
431 "language": language,
432 }
433
434 try:
435 dumped = yaml.dump(
436 yaml_dict, allow_unicode=True, default_flow_style=False, sort_keys=False
437 )
438 if dumped is None:
439 yaml_content = ""
440 elif isinstance(dumped, bytes):
441 yaml_content = dumped.decode("utf-8", errors="replace")
442 else:
443 yaml_content = dumped
444 return YamlGenerationResult(yaml_content=yaml_content, is_valid=True)
445 except Exception as e:
446 return YamlGenerationResult(yaml_content="", is_valid=False, errors=[str(e)])
447
448 def _sanitize_name(self, name: str) -> str:
449 """规范化节点名称"""

Calls 3

_sanitize_nameMethod · 0.95
_format_parametersMethod · 0.95