increase min sdk and apply new formatter

This commit is contained in:
Fabian Freund
2025-02-18 15:37:03 +01:00
parent f7885fc829
commit a1ee8bef35
266 changed files with 11329 additions and 10058 deletions
@@ -59,44 +59,46 @@ class ChatMemory implements BaseMemory {
Future<MemoryVariables> loadMemoryVariables([
MemoryInputValues values = const {},
]) async {
final messages = _controller.messages
.whereNot(
(message) => message.metadata?['hideFromModelChatHistory'] == true,
)
.map(
(message) => switch (message) {
TextMessage(
authorId: final authorId,
text: final text,
metadata: final metadata,
) =>
() {
if (authorId == MessageAuthor.system.user.id) {
return SystemChatMessage(content: text);
}
if (authorId == MessageAuthor.human.user.id) {
return HumanChatMessage(
content: ChatMessageContent.text(text),
);
}
if (authorId == MessageAuthor.ai.user.id) {
final toolsRaw = metadata?['toolCalls'];
if (toolsRaw is String) {
return AIChatMessage(
content: text,
toolCalls: _deserializeToolCalls(toolsRaw),
);
}
return AIChatMessage(content: text);
}
throw UnimplementedError();
}(),
ImageMessage() => throw UnimplementedError(),
CustomMessage() => throw UnimplementedError(),
UnsupportedMessage() => throw UnimplementedError()
},
)
.toList();
final messages =
_controller.messages
.whereNot(
(message) =>
message.metadata?['hideFromModelChatHistory'] == true,
)
.map(
(message) => switch (message) {
TextMessage(
authorId: final authorId,
text: final text,
metadata: final metadata,
) =>
() {
if (authorId == MessageAuthor.system.user.id) {
return SystemChatMessage(content: text);
}
if (authorId == MessageAuthor.human.user.id) {
return HumanChatMessage(
content: ChatMessageContent.text(text),
);
}
if (authorId == MessageAuthor.ai.user.id) {
final toolsRaw = metadata?['toolCalls'];
if (toolsRaw is String) {
return AIChatMessage(
content: text,
toolCalls: _deserializeToolCalls(toolsRaw),
);
}
return AIChatMessage(content: text);
}
throw UnimplementedError();
}(),
ImageMessage() => throw UnimplementedError(),
CustomMessage() => throw UnimplementedError(),
UnsupportedMessage() => throw UnimplementedError(),
},
)
.toList();
int currentBufferLength = await llm.countTokens(PromptValue.chat(messages));
// Prune buffer if it exceeds max token limit
@@ -124,16 +126,17 @@ class ChatMemory implements BaseMemory {
List<AIChatMessageToolCall> _deserializeToolCalls(String toolsRaw) {
final decoded = jsonDecode(toolsRaw) as List<dynamic>;
final tools = decoded
.map(
(tool) => AIChatMessageToolCall(
id: tool['id'] as String,
name: tool['name'] as String,
arguments: tool['arguments'] as Map<String, dynamic>,
argumentsRaw: tool['argumentsRaw'] as String,
),
)
.toList();
final tools =
decoded
.map(
(tool) => AIChatMessageToolCall(
id: tool['id'] as String,
name: tool['name'] as String,
arguments: tool['arguments'] as Map<String, dynamic>,
argumentsRaw: tool['argumentsRaw'] as String,
),
)
.toList();
return tools;
}
@@ -17,30 +17,26 @@ class DriftChatController implements ChatController {
late final BehaviorSubject<Map<String, Message>> _intermediateMessages;
DriftChatController(this._dao, {required this.chatId}) {
final chatMessagesStream = _dao
.chatMessages(chatId: chatId)
.map(
(data) => Message.fromJson(
jsonDecode(data.messageJson) as Map<String, dynamic>,
),
)
.watch();
final chatMessagesStream =
_dao
.chatMessages(chatId: chatId)
.map(
(data) => Message.fromJson(
jsonDecode(data.messageJson) as Map<String, dynamic>,
),
)
.watch();
_intermediateMessages = BehaviorSubject.seeded({});
_mergedMessagesStream = Rx.combineLatest2(
chatMessagesStream,
_intermediateMessages,
(a, b) {
if (a.isNotEmpty && b.isNotEmpty) {
return [
for (final message in a) b[message.id] ?? message,
];
}
_mergedMessagesStream =
Rx.combineLatest2(chatMessagesStream, _intermediateMessages, (a, b) {
if (a.isNotEmpty && b.isNotEmpty) {
return [for (final message in a) b[message.id] ?? message];
}
return a;
},
).shareValue();
return a;
}).shareValue();
//Set initial messages
unawaited(
@@ -80,9 +76,10 @@ class DriftChatController implements ChatController {
@override
Future<void> remove(Message message) async {
final index = await _dao
.messageIndex(chatId: chatId, messageId: message.id)
.getSingleOrNull();
final index =
await _dao
.messageIndex(chatId: chatId, messageId: message.id)
.getSingleOrNull();
if (index != null) {
await _dao.removeMessage(messageId: message.id);
@@ -39,21 +39,15 @@ class ChatControllerFamily extends Family<DriftChatController> {
const ChatControllerFamily();
/// See also [chatController].
ChatControllerProvider call(
String chatId,
) {
return ChatControllerProvider(
chatId,
);
ChatControllerProvider call(String chatId) {
return ChatControllerProvider(chatId);
}
@override
ChatControllerProvider getProviderOverride(
covariant ChatControllerProvider provider,
) {
return call(
provider.chatId,
);
return call(provider.chatId);
}
static const Iterable<ProviderOrFamily>? _dependencies = null;
@@ -74,24 +68,20 @@ class ChatControllerFamily extends Family<DriftChatController> {
/// See also [chatController].
class ChatControllerProvider extends AutoDisposeProvider<DriftChatController> {
/// See also [chatController].
ChatControllerProvider(
String chatId,
) : this._internal(
(ref) => chatController(
ref as ChatControllerRef,
chatId,
),
from: chatControllerProvider,
name: r'chatControllerProvider',
debugGetCreateSourceHash:
const bool.fromEnvironment('dart.vm.product')
? null
: _$chatControllerHash,
dependencies: ChatControllerFamily._dependencies,
allTransitiveDependencies:
ChatControllerFamily._allTransitiveDependencies,
chatId: chatId,
);
ChatControllerProvider(String chatId)
: this._internal(
(ref) => chatController(ref as ChatControllerRef, chatId),
from: chatControllerProvider,
name: r'chatControllerProvider',
debugGetCreateSourceHash:
const bool.fromEnvironment('dart.vm.product')
? null
: _$chatControllerHash,
dependencies: ChatControllerFamily._dependencies,
allTransitiveDependencies:
ChatControllerFamily._allTransitiveDependencies,
chatId: chatId,
);
ChatControllerProvider._internal(
super._createNotifier, {
@@ -170,21 +160,15 @@ class ChatMetadataFamily extends Family<AsyncValue<ChatMetadata?>> {
const ChatMetadataFamily();
/// See also [chatMetadata].
ChatMetadataProvider call(
String chatId,
) {
return ChatMetadataProvider(
chatId,
);
ChatMetadataProvider call(String chatId) {
return ChatMetadataProvider(chatId);
}
@override
ChatMetadataProvider getProviderOverride(
covariant ChatMetadataProvider provider,
) {
return call(
provider.chatId,
);
return call(provider.chatId);
}
static const Iterable<ProviderOrFamily>? _dependencies = null;
@@ -205,24 +189,20 @@ class ChatMetadataFamily extends Family<AsyncValue<ChatMetadata?>> {
/// See also [chatMetadata].
class ChatMetadataProvider extends AutoDisposeStreamProvider<ChatMetadata?> {
/// See also [chatMetadata].
ChatMetadataProvider(
String chatId,
) : this._internal(
(ref) => chatMetadata(
ref as ChatMetadataRef,
chatId,
),
from: chatMetadataProvider,
name: r'chatMetadataProvider',
debugGetCreateSourceHash:
const bool.fromEnvironment('dart.vm.product')
? null
: _$chatMetadataHash,
dependencies: ChatMetadataFamily._dependencies,
allTransitiveDependencies:
ChatMetadataFamily._allTransitiveDependencies,
chatId: chatId,
);
ChatMetadataProvider(String chatId)
: this._internal(
(ref) => chatMetadata(ref as ChatMetadataRef, chatId),
from: chatMetadataProvider,
name: r'chatMetadataProvider',
debugGetCreateSourceHash:
const bool.fromEnvironment('dart.vm.product')
? null
: _$chatMetadataHash,
dependencies: ChatMetadataFamily._dependencies,
allTransitiveDependencies:
ChatMetadataFamily._allTransitiveDependencies,
chatId: chatId,
);
ChatMetadataProvider._internal(
super._createNotifier, {
@@ -288,5 +268,6 @@ class _ChatMetadataProviderElement
@override
String get chatId => (origin as ChatMetadataProvider).chatId;
}
// ignore_for_file: type=lint
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
@@ -31,9 +31,7 @@ class ChatMessageRepository extends _$ChatMessageRepository {
id: uuid.v4(),
authorId: author.user.id,
createdAt: DateTime.now().toUtc(),
metadata: {
'type': 'typing',
},
metadata: {'type': 'typing'},
),
);
@@ -65,12 +63,13 @@ class ChatMessageRepository extends _$ChatMessageRepository {
createdAt: DateTime.now().toUtc(),
text: content,
isOnlyEmoji: isOnlyEmoji(content),
metadata: (hideFromModelChatHistory || (toolCalls?.isNotEmpty ?? false))
? {
'toolCalls': toolCalls?.map((tool) => tool.toMap()).toList(),
if (hideFromModelChatHistory) 'hideFromModelChatHistory': true,
}
: null,
metadata:
(hideFromModelChatHistory || (toolCalls?.isNotEmpty ?? false))
? {
'toolCalls': toolCalls?.map((tool) => tool.toMap()).toList(),
if (hideFromModelChatHistory) 'hideFromModelChatHistory': true,
}
: null,
);
return Result.fromAsync(() async {
@@ -34,9 +34,7 @@ abstract class _$ChatMessageRepository
extends BuildlessAutoDisposeNotifier<void> {
late final String chatId;
void build(
String chatId,
);
void build(String chatId);
}
/// See also [ChatMessageRepository].
@@ -49,21 +47,15 @@ class ChatMessageRepositoryFamily extends Family<void> {
const ChatMessageRepositoryFamily();
/// See also [ChatMessageRepository].
ChatMessageRepositoryProvider call(
String chatId,
) {
return ChatMessageRepositoryProvider(
chatId,
);
ChatMessageRepositoryProvider call(String chatId) {
return ChatMessageRepositoryProvider(chatId);
}
@override
ChatMessageRepositoryProvider getProviderOverride(
covariant ChatMessageRepositoryProvider provider,
) {
return call(
provider.chatId,
);
return call(provider.chatId);
}
static const Iterable<ProviderOrFamily>? _dependencies = null;
@@ -85,21 +77,20 @@ class ChatMessageRepositoryFamily extends Family<void> {
class ChatMessageRepositoryProvider
extends AutoDisposeNotifierProviderImpl<ChatMessageRepository, void> {
/// See also [ChatMessageRepository].
ChatMessageRepositoryProvider(
String chatId,
) : this._internal(
() => ChatMessageRepository()..chatId = chatId,
from: chatMessageRepositoryProvider,
name: r'chatMessageRepositoryProvider',
debugGetCreateSourceHash:
const bool.fromEnvironment('dart.vm.product')
? null
: _$chatMessageRepositoryHash,
dependencies: ChatMessageRepositoryFamily._dependencies,
allTransitiveDependencies:
ChatMessageRepositoryFamily._allTransitiveDependencies,
chatId: chatId,
);
ChatMessageRepositoryProvider(String chatId)
: this._internal(
() => ChatMessageRepository()..chatId = chatId,
from: chatMessageRepositoryProvider,
name: r'chatMessageRepositoryProvider',
debugGetCreateSourceHash:
const bool.fromEnvironment('dart.vm.product')
? null
: _$chatMessageRepositoryHash,
dependencies: ChatMessageRepositoryFamily._dependencies,
allTransitiveDependencies:
ChatMessageRepositoryFamily._allTransitiveDependencies,
chatId: chatId,
);
ChatMessageRepositoryProvider._internal(
super._createNotifier, {
@@ -114,12 +105,8 @@ class ChatMessageRepositoryProvider
final String chatId;
@override
void runNotifierBuild(
covariant ChatMessageRepository notifier,
) {
return notifier.build(
chatId,
);
void runNotifierBuild(covariant ChatMessageRepository notifier) {
return notifier.build(chatId);
}
@override
@@ -140,7 +127,7 @@ class ChatMessageRepositoryProvider
@override
AutoDisposeNotifierProviderElement<ChatMessageRepository, void>
createElement() {
createElement() {
return _ChatMessageRepositoryProviderElement(this);
}
@@ -173,5 +160,6 @@ class _ChatMessageRepositoryProviderElement
@override
String get chatId => (origin as ChatMessageRepositoryProvider).chatId;
}
// ignore_for_file: type=lint
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
@@ -34,9 +34,7 @@ abstract class _$ChatMetadataRepository
extends BuildlessAutoDisposeNotifier<void> {
late final String chatId;
void build(
String chatId,
);
void build(String chatId);
}
/// See also [ChatMetadataRepository].
@@ -49,21 +47,15 @@ class ChatMetadataRepositoryFamily extends Family<void> {
const ChatMetadataRepositoryFamily();
/// See also [ChatMetadataRepository].
ChatMetadataRepositoryProvider call(
String chatId,
) {
return ChatMetadataRepositoryProvider(
chatId,
);
ChatMetadataRepositoryProvider call(String chatId) {
return ChatMetadataRepositoryProvider(chatId);
}
@override
ChatMetadataRepositoryProvider getProviderOverride(
covariant ChatMetadataRepositoryProvider provider,
) {
return call(
provider.chatId,
);
return call(provider.chatId);
}
static const Iterable<ProviderOrFamily>? _dependencies = null;
@@ -85,21 +77,20 @@ class ChatMetadataRepositoryFamily extends Family<void> {
class ChatMetadataRepositoryProvider
extends AutoDisposeNotifierProviderImpl<ChatMetadataRepository, void> {
/// See also [ChatMetadataRepository].
ChatMetadataRepositoryProvider(
String chatId,
) : this._internal(
() => ChatMetadataRepository()..chatId = chatId,
from: chatMetadataRepositoryProvider,
name: r'chatMetadataRepositoryProvider',
debugGetCreateSourceHash:
const bool.fromEnvironment('dart.vm.product')
? null
: _$chatMetadataRepositoryHash,
dependencies: ChatMetadataRepositoryFamily._dependencies,
allTransitiveDependencies:
ChatMetadataRepositoryFamily._allTransitiveDependencies,
chatId: chatId,
);
ChatMetadataRepositoryProvider(String chatId)
: this._internal(
() => ChatMetadataRepository()..chatId = chatId,
from: chatMetadataRepositoryProvider,
name: r'chatMetadataRepositoryProvider',
debugGetCreateSourceHash:
const bool.fromEnvironment('dart.vm.product')
? null
: _$chatMetadataRepositoryHash,
dependencies: ChatMetadataRepositoryFamily._dependencies,
allTransitiveDependencies:
ChatMetadataRepositoryFamily._allTransitiveDependencies,
chatId: chatId,
);
ChatMetadataRepositoryProvider._internal(
super._createNotifier, {
@@ -114,12 +105,8 @@ class ChatMetadataRepositoryProvider
final String chatId;
@override
void runNotifierBuild(
covariant ChatMetadataRepository notifier,
) {
return notifier.build(
chatId,
);
void runNotifierBuild(covariant ChatMetadataRepository notifier) {
return notifier.build(chatId);
}
@override
@@ -140,7 +127,7 @@ class ChatMetadataRepositoryProvider
@override
AutoDisposeNotifierProviderElement<ChatMetadataRepository, void>
createElement() {
createElement() {
return _ChatMetadataRepositoryProviderElement(this);
}
@@ -173,5 +160,6 @@ class _ChatMetadataRepositoryProviderElement
@override
String get chatId => (origin as ChatMetadataRepositoryProvider).chatId;
}
// ignore_for_file: type=lint
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package