buildDirectorySkillInjections function

Future<DirectorySkillInjections> buildDirectorySkillInjections(
  1. List<DirectorySkillMetadata> mentionedSkills
)

Implementation

Future<DirectorySkillInjections> buildDirectorySkillInjections(
  List<DirectorySkillMetadata> mentionedSkills,
) async {
  if (mentionedSkills.isEmpty) {
    return DirectorySkillInjections(items: const [], warnings: const []);
  }

  final items = <UserMessage>[];
  final warnings = <String>[];
  for (final skill in mentionedSkills) {
    try {
      final content = await File(skill.pathToSkillMd).readAsString();
      final payload =
          "<skill>\n"
          "<name>${skill.name}</name>\n"
          "<path>${skill.pathToSkillMd}</path>\n"
          "$content\n"
          "</skill>";
      items.add(
        UserMessage.text(
          payload,
          metadata: {
            "type": "skill_instructions",
            "skill_name": skill.name,
            "skill_path": skill.pathToSkillMd,
          },
        ),
      );
    } catch (e) {
      warnings.add(
        "Failed to load skill ${skill.name} at ${skill.pathToSkillMd}: $e",
      );
    }
  }

  return DirectorySkillInjections(items: items, warnings: warnings);
}