feat: guided setup — free-text AI path (phase 1.2)

The wizard's first step now offers 'or just describe what you want
to do': the goal goes to the configured system AI, which maps it
onto the menu answers (validated against strict enum whitelists —
a hallucinated value can never reach the engine). The suggestion
comes back as an editable plain-language reflection ('this is how I
read your task') the operator can adjust step-by-step or take to
the same preview/apply the menu path uses. Trust rules per
guided-setup.md: suggestion only (never auto-apply), a privacy line
states whether the description is processed locally or sent to a
provider, and without a configured system AI the section explains
that the menu always works — no dead end.

Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
This commit is contained in:
flemming-it 2026-07-12 23:24:27 +02:00
parent 1f1e050b42
commit 09c901b75e
7 changed files with 619 additions and 2 deletions

View file

@ -5395,6 +5395,96 @@ abstract class AppLocalizations {
/// **'Get started in 3 questions'**
String get setupStartCta;
/// No description provided for @setupFreeTextHint.
///
/// In en, this message translates to:
/// **'e.g.: pre-screen incoming applications and flag incomplete ones'**
String get setupFreeTextHint;
/// No description provided for @setupFreeTextSuggest.
///
/// In en, this message translates to:
/// **'Suggest a setup'**
String get setupFreeTextSuggest;
/// No description provided for @setupFreeTextPrivacyLocal.
///
/// In en, this message translates to:
/// **'Your description is processed locally on this machine ({model}).'**
String setupFreeTextPrivacyLocal(String model);
/// No description provided for @setupFreeTextPrivacyRemote.
///
/// In en, this message translates to:
/// **'Your description is sent to the configured system AI: {model} ({provider}).'**
String setupFreeTextPrivacyRemote(String model, String provider);
/// No description provided for @setupFreeTextUnavailable.
///
/// In en, this message translates to:
/// **'The free-text path needs a configured system AI (Settings → System AI). The choices above always work — no AI required.'**
String get setupFreeTextUnavailable;
/// No description provided for @setupFreeTextParseError.
///
/// In en, this message translates to:
/// **'The system AI did not return a usable suggestion. Pick from the menu above — or try again.'**
String get setupFreeTextParseError;
/// No description provided for @setupReflectionTitle.
///
/// In en, this message translates to:
/// **'This is how I read your task'**
String get setupReflectionTitle;
/// No description provided for @setupReflectionScenario.
///
/// In en, this message translates to:
/// **'What it is about: {label}'**
String setupReflectionScenario(String label);
/// No description provided for @setupReflectionIntent.
///
/// In en, this message translates to:
/// **'First task: {label}'**
String setupReflectionIntent(String label);
/// No description provided for @setupReflectionTarget.
///
/// In en, this message translates to:
/// **'Environment: {label}'**
String setupReflectionTarget(String label);
/// No description provided for @setupReflectionApproval.
///
/// In en, this message translates to:
/// **'A human is asked for approval before every AI step.'**
String get setupReflectionApproval;
/// No description provided for @setupReflectionDataLocal.
///
/// In en, this message translates to:
/// **'Data never leaves the building.'**
String get setupReflectionDataLocal;
/// No description provided for @setupReflectionEditHint.
///
/// In en, this message translates to:
/// **'Nothing is changed without your confirmation. Adjust any point, or go straight to the preview.'**
String get setupReflectionEditHint;
/// No description provided for @setupReflectionAdjust.
///
/// In en, this message translates to:
/// **'Adjust'**
String get setupReflectionAdjust;
/// No description provided for @setupReflectionToPreview.
///
/// In en, this message translates to:
/// **'To the preview'**
String get setupReflectionToPreview;
/// No description provided for @setupProfileDev.
///
/// In en, this message translates to: