ADR 0021, step 2's app half. halkyon_app asks the module's assistant endpoints (ServerpodAssistantGateway, ServerpodAssistantOperatorGateway) and a person's own provider directly (halkyon_llm), behind AssistantRepository: an AssistantChoice is a GrantedAssistant, asked through the instance, which counts it, or a PersonalAssistant with the person's own key, which the instance never sees. assistant_messages.dart turns a conversation into the endpoint's models and back. AssistantsCard, for an app's settings: what is granted and left of its limits, agreed to once on a sheet saying what goes where, the person's use by UTC month, the instance's privacy page, and their own assistants where the operator allows own keys (kept ones stay listed, unasked, where it doesn't). AssistantGrantsCard on InstanceOperatorScreen: grants by handle with their limits in the pricing's unit, changed and taken back after asking, everyone's use by month; a found account's menu grants too. Nothing shows where nothing is offered or can be read. package:halkyon_app/assistant_models.dart holds the models in pure Dart. Learn keeps own assistants in the person's settings (ownAssistants, schema 12, SettingsOwnAssistants); SettingsRepository.update refuses (OwnAssistantRefused) to write a key where the settings would not be sealed (SettingsGateway.seals). Learn depends on halkyon_llm directly. Todo wires the gateways; a member offers no assistant. No feature asks an assistant yet (step 3). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
164 lines
8.3 KiB
Dart
164 lines
8.3 KiB
Dart
/// What every Halkyon app is built around, on an instance's halkyon_base:
|
|
///
|
|
/// - **Instances**: the ones a device keeps an account on, one in use at a
|
|
/// time (`InstanceChoice`), chosen at first start (`FirstStartScreen`) or
|
|
/// added later (`showAccountSwitcher`), each checked before the app moves
|
|
/// there (`InstanceChecker`) and saying where it keeps people's data.
|
|
/// - **Gates**: `InstanceGate` opens the app's dependencies on the instance
|
|
/// in use (`AppDependencies`, `AppScope`); `SessionGate` keeps a person
|
|
/// signed in and asks how to start once signed out (`StartScreen`);
|
|
/// `PersonScope` opens each person's own dependencies. While an account
|
|
/// waits for the instance's operator, `WaitScreen` shows where its wait
|
|
/// stands (Halkyon Learn's ADR 0021, D31).
|
|
/// - **The account and About**: `AccountTiles` for an app's settings,
|
|
/// `showAppAbout` with the source of what the instance runs, and
|
|
/// `resolveAppLocale`, the language every Halkyon app picks.
|
|
/// - **The instance's operators**: `InstanceOperatorCard` (or
|
|
/// `InstanceOperatorTiles`) and `WaitingAccountsBadge` for whoever
|
|
/// operates the instance, on `OperatingCubit`, leading to
|
|
/// `InstanceOperatorScreen`, where accounts are approved, refused and
|
|
/// suspended and operators named (Halkyon Learn's ADR 0021, D21 to D24).
|
|
/// - **Assistants**: `AssistantsCard` for an app's settings, what the
|
|
/// operator grants a person and their own keys where allowed, on
|
|
/// `AssistantRepository`; `AssistantGrantsCard` on the operator's screen,
|
|
/// on `AssistantOperatorRepository` (Halkyon Learn's ADR 0021, step 2).
|
|
/// `package:halkyon_app/assistant_models.dart` holds the models alone.
|
|
/// - **Signing in**: with SimpleLogin (ADR 0020: `SimpleLoginRepository`,
|
|
/// its sheet and `SimpleLoginSection`), with a password and TOTP (ADR
|
|
/// 0017: `PasswordRepository`, its sheets and `AccountSecuritySection`),
|
|
/// the session on `AuthRepository` and `ServerpodAuthGateway`, the
|
|
/// account's keys on the device. Every account has a way in: there are no
|
|
/// anonymous ones (ADR 0020, D4).
|
|
/// - **Sync**: `SyncService` on triggers, the changes still waiting, and
|
|
/// where it stands (`SyncStatusBloc`, `SyncStatusCard`, `AppMismatchBanner`,
|
|
/// `SyncTroubleBadge`).
|
|
///
|
|
/// An app gives its name, look and own words as an `AppFrame`, and installs
|
|
/// `HalkyonAppLocalizations.delegate` beside its own.
|
|
library;
|
|
|
|
export 'l10n/halkyon_app_localizations.dart';
|
|
export 'src/app/about.dart';
|
|
export 'src/app/app_frame.dart' show AppFrame, AppFrameScope, LookSettings;
|
|
export 'src/app/app_locale.dart';
|
|
export 'src/app/app_scope.dart';
|
|
export 'src/app/instance_gate.dart';
|
|
export 'src/app/person_scope.dart';
|
|
export 'src/assistant/bloc/assistant_grants_cubit.dart';
|
|
export 'src/assistant/bloc/assistant_use_cubit.dart';
|
|
export 'src/assistant/bloc/assistants_cubit.dart';
|
|
export 'src/assistant/data/assistant_gateway.dart';
|
|
export 'src/assistant/data/assistant_messages.dart'
|
|
show
|
|
eventsOf,
|
|
failureOf,
|
|
llmMessageOf,
|
|
messageOf,
|
|
ownKeyFailureOf,
|
|
questionOf;
|
|
export 'src/assistant/data/assistant_repository.dart';
|
|
export 'src/assistant/data/serverpod_assistant_gateway.dart';
|
|
export 'src/assistant/model/assistant_amount.dart';
|
|
export 'src/assistant/model/assistant_failed.dart';
|
|
export 'src/assistant/model/assistant_grant.dart';
|
|
export 'src/assistant/model/assistant_offer.dart';
|
|
export 'src/assistant/model/own_assistant.dart';
|
|
export 'src/assistant/widget/assistant_grants_card.dart';
|
|
export 'src/assistant/widget/assistant_use_view.dart';
|
|
export 'src/assistant/widget/assistant_words.dart';
|
|
export 'src/assistant/widget/assistants_card.dart';
|
|
export 'src/auth/bloc/session_bloc.dart';
|
|
export 'src/auth/bloc/sign_in_ways_cubit.dart';
|
|
export 'src/auth/bloc/wait_cubit.dart';
|
|
export 'src/auth/data/account_wait_store.dart';
|
|
export 'src/auth/data/auth_gateway.dart';
|
|
export 'src/auth/data/auth_repository.dart';
|
|
export 'src/auth/data/serverpod_auth_gateway.dart';
|
|
export 'src/auth/data/sign_in_addresses.dart';
|
|
export 'src/auth/model/account_wait.dart';
|
|
export 'src/auth/model/auth_status.dart';
|
|
export 'src/auth/model/session_grant.dart';
|
|
export 'src/auth/model/sign_in_ways.dart';
|
|
export 'src/auth/model/sign_ups.dart';
|
|
export 'src/auth/widget/account_tiles.dart';
|
|
export 'src/auth/widget/session_gate.dart';
|
|
export 'src/auth/widget/start_screen.dart';
|
|
export 'src/auth/widget/wait_screen.dart';
|
|
export 'src/base/base_client.dart';
|
|
export 'src/files/file_saver.dart';
|
|
export 'src/handle/bloc/handle_check_cubit.dart';
|
|
export 'src/handle/model/handle_problem.dart';
|
|
export 'src/handle/widget/handle_field.dart';
|
|
export 'src/instance/cldr_license.dart';
|
|
export 'src/instance/country_names.dart';
|
|
export 'src/instance/european_union.dart';
|
|
export 'src/instance/flag_icons_license.dart';
|
|
export 'src/instance/instance.dart';
|
|
export 'src/instance/instance_checker.dart';
|
|
export 'src/instance/instance_choice.dart';
|
|
export 'src/instance/instance_locations.dart';
|
|
export 'src/instance/instance_scope.dart';
|
|
export 'src/instance/instance_storage.dart';
|
|
export 'src/instance/instance_store.dart';
|
|
export 'src/instance/subdivision_names.dart';
|
|
export 'src/instance/widget/account_switcher_sheet.dart';
|
|
export 'src/instance/widget/first_start_screen.dart';
|
|
export 'src/instance/widget/instance_location.dart';
|
|
export 'src/instance/widget/instance_location_words.dart';
|
|
export 'src/instance/widget/instance_step.dart';
|
|
export 'src/instance/widget/instance_tile.dart';
|
|
export 'src/operator/bloc/instance_operator_cubit.dart';
|
|
export 'src/operator/bloc/operating_cubit.dart';
|
|
export 'src/operator/data/instance_operator_gateway.dart';
|
|
export 'src/operator/data/instance_operator_repository.dart';
|
|
export 'src/operator/data/serverpod_instance_operator_gateway.dart';
|
|
export 'src/operator/model/operated_account.dart';
|
|
export 'src/operator/widget/instance_operator_card.dart';
|
|
export 'src/operator/widget/instance_operator_screen.dart';
|
|
export 'src/password/bloc/account_recovery_cubit.dart';
|
|
export 'src/password/bloc/account_security_cubit.dart';
|
|
export 'src/password/bloc/account_setup_cubit.dart';
|
|
export 'src/password/bloc/password_sign_in_cubit.dart';
|
|
export 'src/password/data/account_crypto.dart';
|
|
export 'src/password/data/account_key_store.dart';
|
|
export 'src/password/data/password_gateway.dart';
|
|
export 'src/password/data/password_repository.dart';
|
|
export 'src/password/data/serverpod_password_gateway.dart';
|
|
export 'src/password/data/sodium_account_crypto.dart';
|
|
export 'src/password/model/account_authenticator.dart';
|
|
export 'src/password/model/account_security.dart';
|
|
export 'src/password/model/mail_code_purpose.dart';
|
|
export 'src/password/model/password_failed.dart';
|
|
export 'src/password/model/phrase_check.dart';
|
|
export 'src/password/model/unlocked_account_keys.dart';
|
|
export 'src/password/widget/account_recovery_sheet.dart';
|
|
export 'src/password/widget/account_security_section.dart';
|
|
export 'src/password/widget/account_setup_sheet.dart';
|
|
export 'src/password/widget/password_sign_in_sheet.dart';
|
|
export 'src/password/widget/password_texts.dart';
|
|
export 'src/password/widget/password_widgets.dart';
|
|
export 'src/password/widget/secret_screen.dart';
|
|
export 'src/person/person_folders.dart';
|
|
export 'src/privacy/content_cipher.dart';
|
|
export 'src/simplelogin/bloc/simplelogin_cubit.dart';
|
|
export 'src/simplelogin/bloc/simplelogin_standing_cubit.dart';
|
|
export 'src/simplelogin/data/serverpod_simplelogin_gateway.dart';
|
|
export 'src/simplelogin/data/simplelogin_gateway.dart';
|
|
export 'src/simplelogin/data/simplelogin_repository.dart';
|
|
export 'src/simplelogin/model/simplelogin_arrival.dart';
|
|
export 'src/simplelogin/model/simplelogin_failed.dart';
|
|
export 'src/simplelogin/model/simplelogin_standing.dart';
|
|
export 'src/simplelogin/widget/keys_reset.dart';
|
|
export 'src/simplelogin/widget/simplelogin_section.dart';
|
|
export 'src/simplelogin/widget/simplelogin_sheet.dart';
|
|
export 'src/simplelogin/widget/simplelogin_standing_scope.dart';
|
|
export 'src/simplelogin/widget/simplelogin_texts.dart';
|
|
export 'src/sync/app_compatibility.dart';
|
|
export 'src/sync/bloc/sync_status_bloc.dart';
|
|
export 'src/sync/pending_changes_store.dart';
|
|
export 'src/sync/sync_service.dart';
|
|
export 'src/sync/sync_status.dart';
|
|
export 'src/sync/widget/app_mismatch_banner.dart';
|
|
export 'src/sync/widget/sync_and_wait.dart';
|
|
export 'src/sync/widget/sync_status_card.dart';
|
|
export 'src/sync/widget/sync_trouble_badge.dart';
|