feat(studio): guided-setup wizard (reuses chain init engine)

A Welcome 'Setup assistant' button opens a wizard that collects
scenario / intent / target (+ approval & data-local toggles), then calls
`chain init --answers` to preview the assembled plan and `--apply --force`
to write the config — reusing the Rust deterministic engine, no logic
duplicated. New SystemActions.chainInit; copyable errors via
showFaiProcessError; EN+DE l10n. analyze clean; smoke test + existing
welcome/sidebar tests pass.

Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
This commit is contained in:
flemming-it 2026-06-21 21:04:13 +02:00
parent 36a8252f67
commit c9fa068991
9 changed files with 509 additions and 0 deletions

View file

@ -98,6 +98,90 @@ abstract class AppLocalizations {
Locale('en'),
];
/// No description provided for @guidedSetupTitle.
///
/// In en, this message translates to:
/// **'Setup assistant'**
String get guidedSetupTitle;
/// No description provided for @guidedSetupIntro.
///
/// In en, this message translates to:
/// **'Answer three questions and Ch∆In assembles a tailored config, module set and starter flow.'**
String get guidedSetupIntro;
/// No description provided for @guidedSetupScenario.
///
/// In en, this message translates to:
/// **'Scenario'**
String get guidedSetupScenario;
/// No description provided for @guidedSetupIntent.
///
/// In en, this message translates to:
/// **'Task'**
String get guidedSetupIntent;
/// No description provided for @guidedSetupTarget.
///
/// In en, this message translates to:
/// **'Where will it run?'**
String get guidedSetupTarget;
/// No description provided for @guidedSetupApproval.
///
/// In en, this message translates to:
/// **'Require a human approval step before the AI step'**
String get guidedSetupApproval;
/// No description provided for @guidedSetupDataLocal.
///
/// In en, this message translates to:
/// **'Data must stay local (air-gapped posture)'**
String get guidedSetupDataLocal;
/// No description provided for @guidedSetupReviewHeading.
///
/// In en, this message translates to:
/// **'This is the plan Ch∆In will apply:'**
String get guidedSetupReviewHeading;
/// No description provided for @guidedSetupApply.
///
/// In en, this message translates to:
/// **'Apply setup'**
String get guidedSetupApply;
/// No description provided for @guidedSetupApplied.
///
/// In en, this message translates to:
/// **'Setup applied. Finish with the steps below:'**
String get guidedSetupApplied;
/// No description provided for @guidedSetupBack.
///
/// In en, this message translates to:
/// **'Back'**
String get guidedSetupBack;
/// No description provided for @guidedSetupNext.
///
/// In en, this message translates to:
/// **'Next'**
String get guidedSetupNext;
/// No description provided for @guidedSetupCancel.
///
/// In en, this message translates to:
/// **'Cancel'**
String get guidedSetupCancel;
/// No description provided for @guidedSetupClose.
///
/// In en, this message translates to:
/// **'Close'**
String get guidedSetupClose;
/// App-bar title in the OS task switcher.
///
/// In en, this message translates to: