learnApp method

Future<Map<String, dynamic>> learnApp({
  1. required String name,
  2. String? description,
  3. String? url,
  4. String? agentName,
  5. List<String>? languages,
  6. List<Map<String, String>> screens = const [],
  7. Map<String, Object?> settings = const {},
  8. List<Map<String, String>> faq = const [],
})

Teach the AI employee about your app: what it is, its screens, settings and FAQ. Call it on every release so the Brain stays in sync with the app.

Implementation

Future<Map<String, dynamic>> learnApp({
  required String name,
  String? description,
  String? url,
  String? agentName,
  List<String>? languages,
  List<Map<String, String>> screens = const [],
  Map<String, Object?> settings = const {},
  List<Map<String, String>> faq = const [],
}) async {
  final out = <String, dynamic>{};
  out['agent'] = await updateAgent({
    'business_name': name,
    if (description != null) 'business_description': description,
    if (agentName != null) 'agent_name': agentName,
    if (languages != null) 'languages': languages,
  });
  final pages = <Map<String, String>>[
    if (description != null) {'title': '$name - overview', 'content': description},
    for (final s in screens)
      if ((s['content'] ?? '').isNotEmpty)
        {'title': s['title'] ?? 'Screen', 'content': s['content']!, if (s['url'] != null) 'url': s['url']!},
    if (settings.isNotEmpty)
      {'title': '$name - configuration', 'content': settings.entries.map((e) => '${e.key}: ${e.value}').join('\n')},
  ];
  if (pages.isNotEmpty) out['pages'] = await setPages(pages, siteUrl: url);
  if (faq.isNotEmpty) out['faq'] = await addFaq(faq);
  return out;
}