increase min sdk and apply new formatter
This commit is contained in:
@@ -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
|
||||
|
||||
+22
-34
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user