chat_pilot_kit_dart 1.0.0-beta.6
chat_pilot_kit_dart: ^1.0.0-beta.6 copied to clipboard
Headless chat SDK for AI-powered conversation apps. Pure Dart, no Flutter dependency. Supports streaming, plugins, and multiple transport layers.
chat_pilot_kit_dart #
Headless chat SDK for AI-powered conversation apps.
Pure Dart, no Flutter dependency. Supports streaming, plugins, and multiple transport layers.
1.0.0-beta.6 #
Fixed #
- Fixed history re-push deduplication: when a WebSocket message arrives for a conversation already loaded from history, the controller now prioritizes
data.queryIdto look up an existingConversationBeanbefore creating a new one. Previously, only_currentQueryId(set duringquery()) was checked, causing re-pushed WS messages to create a duplicate conversation bubble instead of merging into the existing one.
1.0.0-beta.5 #
Fixed #
- Fixed metadata propagation:
nodeDatapassed toAgentMessageDatanow correctly propagates toConversationNode.metadatain all message extensions (MarkdownExtension,TextExtension,ThinkingBlockExtension). Previously, extensions were only passing content but not metadata during node creation and replacement.
1.0.0-beta.4 #
Fixed #
- Fixed queryId storage:
ConversationBeannow uses_currentQueryIdas itsidinstead of generating a random UUID. This ensuresconversation.idcorrectly reflects the query identifier, enabling proper query tracking and correlation.
1.0.0-beta.3 #
Fixed #
- Fixed
ChatPilotKitController.queryWithAttachments()to call_agentService.queryWithAttachments()directly instead of delegating through_runQuery(), ensuring AgentService overrides are properly invoked.
1.0.0-beta.2 #
Align with the TypeScript core SDK (@bdky/chat-pilot-kit).
Added #
BaseAgentService.queryWithAttachments()— convenience method for subclasses to override for specialized attachment handling. Delegates toquery()by default.AgentTargetNodetype (byId/byMatcher) for precise node targeting.AgentMessageData.targetNodefield — controllers now route replace/remove/append to the matched node across all conversations, not just the latest of same type.ConversationNode.emitInteraction(type, data)andsendCommand(type, args)— bidirectional node↔app communication.NodeInteractionPayloadandNodeCommandPayloadpayload classes.NodeInteractionEvent— controller auto-forwards node interactions to the event bus.ErrorSeverityenum (low/medium/high/critical) andChatPilotKitError.severity/metadatafields.ErrorCategorynow includestimeout,validation,configuration,internal.ErrorSourcenow includesupload,extension,controller,conversation.MessageExtensionConfig.addOptions()— extension-scoped runtime options (MessageExtensionInstance.options).MessageExtensionConfig.addNodeView()— platform-specific NodeView factory (used by upstream UI packages).ConversationService.registerExtension()/unregisterExtension()— runtime extension mutation.ChatPilotKitController.queryWithAttachments(text, attachments, {options})— structured attachment input.ChatPilotKitController.getOptions()— retrieve resolved runtime options.AttachmentInputandQueryOptionsstructured types (replaces ad-hocList<String>? fileUrls).ChatPilotKitOptions.sessionTimeout,ChatPilotKitOptions.enableDebugMode.- Event payloads now carry
bean/nodereferences:ConversationAddEvent.bean,ConversationChangeEvent.bean+nodes,NodeAddEvent.node,NodeUpdateEvent.node.
Changed #
BaseAgentService.querysignature:query(text, {attachments, options}). The old[List<String>? fileUrls]form is removed.ChatPilotKitController.clearConversations()renamed toclear(). Old name is retained as a deprecated alias.ConversationService.clearConversations()renamed toclear(). Old name is retained as a deprecated alias.AgentMessageDatamigrated offfreezedto support the runtime-onlytargetNodefield (matcher functions are not JSON-serializable). Public construction /copyWith/toJson/fromJsonremain compatible.ConversationNodeSnapshot.fromJsonnow acceptsdynamiccontent (fixes round-trip for String-content nodes like Text).ChatPilotKitController.importConversationsnow supportsposition: 'replace'(clears before import).
Fixed #
- Controller now subscribes to per-node
onInteractionstreams and forwards to the controller event bus; interaction listeners are properly cancelled on node removal / clear / dispose. - Session expiry via
sessionTimeoutcorrectly regenerates sessionId on the next query.
1.0.0-beta.1 #
- Initial beta release.