parse method

WorkflowDefinition parse(
  1. String content, {
  2. String path = defaultWorkflowPath,
})

Parses workflow file contents.

Implementation

WorkflowDefinition parse(
  String content, {
  String path = defaultWorkflowPath,
}) {
  if (!content.startsWith('---')) {
    return WorkflowDefinition(
      config: const <String, dynamic>{},
      promptTemplate: content.trim(),
      path: path,
    );
  }

  final lines = content.split(RegExp(r'\r?\n'));
  var closingIndex = -1;
  for (var i = 1; i < lines.length; i++) {
    if (lines[i].trim() == '---') {
      closingIndex = i;
      break;
    }
  }

  if (closingIndex == -1) {
    throw const WorkflowException(
      WorkflowFailureCode.workflowParseError,
      'Workflow front matter is missing a closing delimiter.',
    );
  }

  final frontMatter = lines.sublist(1, closingIndex).join('\n');
  final promptBody = lines.sublist(closingIndex + 1).join('\n').trim();

  final config = _parseFrontMatter(frontMatter);
  return WorkflowDefinition(
    config: config,
    promptTemplate: promptBody,
    path: path,
  );
}