From 7ddccf2e1ca8a0451efdf579e65951b7a24a151b Mon Sep 17 00:00:00 2001 From: dab246 Date: Tue, 16 Dec 2025 18:35:45 +0700 Subject: [PATCH] feat(ai-scribe): Fix cannot parsing AI capability from Session --- .../capability_properties_converter.dart | 3 +++ .../domain/extensions/session_extensions.dart | 8 +++--- model/lib/ai/capability_ai.dart | 3 --- scribe/lib/scribe.dart | 8 ++++-- scribe/lib/scribe/ai/l10n/intl_messages.arb | 2 +- .../ai/presentation/model}/ai_capability.dart | 0 .../utils/ai_scribe_constants.dart | 8 ++++++ scribe/pubspec.lock | 27 +++++++++++++++---- scribe/pubspec.yaml | 8 ++++++ 9 files changed, 52 insertions(+), 15 deletions(-) delete mode 100644 model/lib/ai/capability_ai.dart rename {model/lib/ai => scribe/lib/scribe/ai/presentation/model}/ai_capability.dart (100%) create mode 100644 scribe/lib/scribe/ai/presentation/utils/ai_scribe_constants.dart diff --git a/lib/features/home/domain/converter/capability_properties_converter.dart b/lib/features/home/domain/converter/capability_properties_converter.dart index 7c80cdb26..e9534cde6 100644 --- a/lib/features/home/domain/converter/capability_properties_converter.dart +++ b/lib/features/home/domain/converter/capability_properties_converter.dart @@ -12,6 +12,7 @@ import 'package:jmap_dart_client/jmap/core/capability/web_socket_ticket_capabili import 'package:jmap_dart_client/jmap/core/capability/websocket_capability.dart'; import 'package:model/saas/saas_account_capability.dart'; import 'package:model/support/contact_support_capability.dart'; +import 'package:scribe/scribe/ai/presentation/model/ai_capability.dart'; class CapabilityPropertiesConverter { @@ -38,6 +39,8 @@ class CapabilityPropertiesConverter { return properties.toJson(); } else if (properties is SaaSAccountCapability) { return properties.toJson(); + } else if (properties is AICapability) { + return properties.toJson(); } else if (properties is DefaultCapability) { return properties.properties; } else if (properties is EmptyCapability) { diff --git a/lib/features/home/domain/extensions/session_extensions.dart b/lib/features/home/domain/extensions/session_extensions.dart index 9e7006cd0..804f19203 100644 --- a/lib/features/home/domain/extensions/session_extensions.dart +++ b/lib/features/home/domain/extensions/session_extensions.dart @@ -12,11 +12,11 @@ import 'package:jmap_dart_client/jmap/core/capability/capability_identifier.dart import 'package:jmap_dart_client/jmap/core/capability/capability_properties.dart'; import 'package:jmap_dart_client/jmap/core/session/session.dart'; import 'package:jmap_dart_client/jmap/core/unsigned_int.dart'; -import 'package:model/ai/ai_capability.dart'; -import 'package:model/ai/capability_ai.dart'; import 'package:model/download_all/download_all_capability.dart'; import 'package:model/mailbox/mailbox_constants.dart'; import 'package:model/model.dart'; +import 'package:scribe/scribe/ai/presentation/model/ai_capability.dart'; +import 'package:scribe/scribe/ai/presentation/utils/ai_scribe_constants.dart'; import 'package:server_settings/server_settings/capability_server_settings.dart'; import 'package:tmail_ui_user/features/home/data/model/session_hive_obj.dart'; import 'package:tmail_ui_user/features/home/domain/converter/session_account_converter.dart'; @@ -35,7 +35,7 @@ extension SessionExtensions on Session { linagoraDownloadAllCapability: DownloadAllCapability.deserialize, capabilityServerSettings: SettingsCapability.deserialize, linagoraSaaSCapability: SaaSAccountCapability.deserialize, - capabilityAI: AICapability.deserialize, + AiScribeConstants.aiCapability: AICapability.deserialize, }; Map toJson() { @@ -173,7 +173,7 @@ extension SessionExtensions on Session { try { final aiCapability = getCapabilityProperties( accountId, - capabilityAI, + AiScribeConstants.aiCapability, ); log('SessionExtensions::getAICapability:aiCapability = $aiCapability'); return aiCapability; diff --git a/model/lib/ai/capability_ai.dart b/model/lib/ai/capability_ai.dart deleted file mode 100644 index 392e1f8b2..000000000 --- a/model/lib/ai/capability_ai.dart +++ /dev/null @@ -1,3 +0,0 @@ -import 'package:jmap_dart_client/jmap/core/capability/capability_identifier.dart'; - -final capabilityAI = CapabilityIdentifier(Uri.parse('com:linagora:params:jmap:aibot')); diff --git a/scribe/lib/scribe.dart b/scribe/lib/scribe.dart index 3919f14a1..0c5e8257d 100644 --- a/scribe/lib/scribe.dart +++ b/scribe/lib/scribe.dart @@ -4,7 +4,11 @@ export 'scribe/ai/domain/usecases/generate_ai_text_interactor.dart'; export 'scribe/ai/domain/repository/ai_scribe_repository.dart'; export 'scribe/ai/domain/model/ai_response.dart'; export 'scribe/ai/domain/state/generate_ai_text_state.dart'; -export 'scribe/ai/presentation/model/ai_action.dart'; -export 'scribe/ai/presentation/model/ai_scribe_menu_action.dart'; + export 'scribe/ai/data/repository/ai_repository_impl.dart'; export 'scribe/ai/data/datasource/ai_datasource.dart'; + +export 'scribe/ai/presentation/model/ai_action.dart'; +export 'scribe/ai/presentation/model/ai_scribe_menu_action.dart'; +export 'scribe/ai/presentation/model/ai_capability.dart'; +export 'scribe/ai/presentation/utils/ai_scribe_constants.dart'; \ No newline at end of file diff --git a/scribe/lib/scribe/ai/l10n/intl_messages.arb b/scribe/lib/scribe/ai/l10n/intl_messages.arb index d8dc42805..94bc3b3f7 100644 --- a/scribe/lib/scribe/ai/l10n/intl_messages.arb +++ b/scribe/lib/scribe/ai/l10n/intl_messages.arb @@ -1,5 +1,5 @@ { - "@@last_modified": "2025-12-15T14:32:54.358333", + "@@last_modified": "2025-12-16T18:07:47.039649", "categoryCorrectGrammar": "Correct grammar", "@categoryCorrectGrammar": { "type": "text", diff --git a/model/lib/ai/ai_capability.dart b/scribe/lib/scribe/ai/presentation/model/ai_capability.dart similarity index 100% rename from model/lib/ai/ai_capability.dart rename to scribe/lib/scribe/ai/presentation/model/ai_capability.dart diff --git a/scribe/lib/scribe/ai/presentation/utils/ai_scribe_constants.dart b/scribe/lib/scribe/ai/presentation/utils/ai_scribe_constants.dart new file mode 100644 index 000000000..fe72ccd33 --- /dev/null +++ b/scribe/lib/scribe/ai/presentation/utils/ai_scribe_constants.dart @@ -0,0 +1,8 @@ +import 'package:jmap_dart_client/jmap/core/capability/capability_identifier.dart'; + +class AiScribeConstants { + AiScribeConstants._(); + + static final CapabilityIdentifier aiCapability = + CapabilityIdentifier(Uri.parse('com:linagora:params:jmap:aibot')); +} diff --git a/scribe/pubspec.lock b/scribe/pubspec.lock index 211667c18..1fd867818 100644 --- a/scribe/pubspec.lock +++ b/scribe/pubspec.lock @@ -109,10 +109,10 @@ packages: dependency: transitive description: name: build_runner_core - sha256: f8126682b87a7282a339b871298cc12009cb67109cfa1614d6436fb0289193e0 + sha256: "0671ad4162ed510b70d0eb4ad6354c249f8429cab4ae7a4cec86bbc2886eb76e" url: "https://pub.dev" source: hosted - version: "7.3.2" + version: "7.2.7+1" built_collection: dependency: transitive description: @@ -669,6 +669,15 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.5" + jmap_dart_client: + dependency: "direct main" + description: + path: "." + ref: main + resolved-ref: "446efbbccdde981371b4d2a636762184adf6e926" + url: "https://github.com/linagora/jmap-dart-client.git" + source: git + version: "0.3.6" js: dependency: transitive description: @@ -678,13 +687,13 @@ packages: source: hosted version: "0.7.2" json_annotation: - dependency: transitive + dependency: "direct main" description: name: json_annotation - sha256: b10a7b2ff83d83c777edba3c6a0f97045ddadd56c944e1a23a3fdf43a1bf4467 + sha256: c33da08e136c3df0190bd5bbe51ae1df4a7d96e7954d1d7249fea2968a72d317 url: "https://pub.dev" source: hosted - version: "4.8.1" + version: "4.8.0" json_serializable: dependency: "direct dev" description: @@ -981,6 +990,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.2" + quiver: + dependency: transitive + description: + name: quiver + sha256: b1c1ac5ce6688d77f65f3375a9abb9319b3cb32486bdc7a1e0fdf004d7ba4e47 + url: "https://pub.dev" + source: hosted + version: "3.2.1" sanitize_html: dependency: transitive description: diff --git a/scribe/pubspec.yaml b/scribe/pubspec.yaml index c34da94c6..5c6c8e60d 100644 --- a/scribe/pubspec.yaml +++ b/scribe/pubspec.yaml @@ -17,6 +17,12 @@ dependencies: core: path: ../core + ### Dependencies from git ### + jmap_dart_client: + git: + url: https://github.com/linagora/jmap-dart-client.git + ref: main + ### Dependencies from pub.dev ### dartz: 0.10.1 @@ -28,6 +34,8 @@ dependencies: intl: 0.20.2 + json_annotation: 4.8.0 + dev_dependencies: flutter_test: sdk: flutter