@aleph-alpha/chat-kit 6.5.0 → 6.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/dist/{CkHistory.vue_vue_type_script_setup_true_lang-C4XS2QQI.js → CkHistory.vue_vue_type_script_setup_true_lang-DF5yUf7K.js} +619 -152
  2. package/dist/chat-kit.css +9 -9
  3. package/dist/components/base/CkCodeEditor/CkCodeEditor.vue.d.ts +4 -4
  4. package/dist/components/base/CkFeedbackDialog/CkFeedbackDialog.stories.d.ts +5 -0
  5. package/dist/components/base/CkFeedbackDialog/CkFeedbackDialog.stories.d.ts.map +1 -1
  6. package/dist/components/base/CkFeedbackDialog/CkFeedbackDialog.vue.d.ts +14 -1
  7. package/dist/components/base/CkFeedbackDialog/CkFeedbackDialog.vue.d.ts.map +1 -1
  8. package/dist/components/base/CkMilkdownEditor/CkMilkdownEditor.vue.d.ts +1 -1
  9. package/dist/components/base/CkToolApproval/ApprovalCard.vue.d.ts +21 -0
  10. package/dist/components/base/CkToolApproval/ApprovalCard.vue.d.ts.map +1 -0
  11. package/dist/components/base/CkToolApproval/ArgumentsJson.vue.d.ts +10 -0
  12. package/dist/components/base/CkToolApproval/ArgumentsJson.vue.d.ts.map +1 -0
  13. package/dist/components/base/CkToolApproval/BodyBoundary.vue.d.ts +15 -0
  14. package/dist/components/base/CkToolApproval/BodyBoundary.vue.d.ts.map +1 -0
  15. package/dist/components/base/CkToolApproval/CardHeading.vue.d.ts +22 -0
  16. package/dist/components/base/CkToolApproval/CardHeading.vue.d.ts.map +1 -0
  17. package/dist/components/base/CkToolApproval/CkToolApproval.stories.d.ts +80 -0
  18. package/dist/components/base/CkToolApproval/CkToolApproval.stories.d.ts.map +1 -0
  19. package/dist/components/base/CkToolApproval/CkToolApproval.vue.d.ts +18 -0
  20. package/dist/components/base/CkToolApproval/CkToolApproval.vue.d.ts.map +1 -0
  21. package/dist/components/base/CkToolApproval/ResultRow.vue.d.ts +20 -0
  22. package/dist/components/base/CkToolApproval/ResultRow.vue.d.ts.map +1 -0
  23. package/dist/components/base/CkToolApproval/badge.d.ts +3 -0
  24. package/dist/components/base/CkToolApproval/badge.d.ts.map +1 -0
  25. package/dist/components/base/CkToolApproval/index.d.ts +3 -0
  26. package/dist/components/base/CkToolApproval/index.d.ts.map +1 -0
  27. package/dist/components/base/CkToolApproval/outcomes.d.ts +28 -0
  28. package/dist/components/base/CkToolApproval/outcomes.d.ts.map +1 -0
  29. package/dist/components/base/CkToolApproval/serializeArguments.d.ts +13 -0
  30. package/dist/components/base/CkToolApproval/serializeArguments.d.ts.map +1 -0
  31. package/dist/components/base/CkToolApproval/toolTitle.d.ts +7 -0
  32. package/dist/components/base/CkToolApproval/toolTitle.d.ts.map +1 -0
  33. package/dist/components/base/CkToolApproval/types.d.ts +102 -0
  34. package/dist/components/base/CkToolApproval/types.d.ts.map +1 -0
  35. package/dist/components/base/index.d.ts +2 -0
  36. package/dist/components/base/index.d.ts.map +1 -1
  37. package/dist/components/index.d.ts +2 -2
  38. package/dist/components/index.d.ts.map +1 -1
  39. package/dist/components/index.js +4 -3
  40. package/dist/{createCrepeEditor-BGSlwmKn.js → createCrepeEditor-DSfByw4o.js} +1 -1
  41. package/dist/handlers/index.js +1 -1
  42. package/dist/handlers/useChatKitLabels.d.ts +39 -0
  43. package/dist/handlers/useChatKitLabels.d.ts.map +1 -1
  44. package/dist/index.d.ts +2 -2
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +6 -5
  47. package/dist/{useChatKitLabels-DxW0N5U-.js → useChatKitLabels-ky3JI9gf.js} +13 -0
  48. package/package.json +3 -3
  49. package/src/components/base/CkFeedbackDialog/CkFeedbackDialog.spec.ts +27 -0
  50. package/src/components/base/CkFeedbackDialog/CkFeedbackDialog.stories.ts +23 -0
  51. package/src/components/base/CkFeedbackDialog/CkFeedbackDialog.vue +15 -0
  52. package/src/components/base/CkToolApproval/ApprovalCard.vue +30 -0
  53. package/src/components/base/CkToolApproval/ArgumentsJson.vue +48 -0
  54. package/src/components/base/CkToolApproval/BodyBoundary.vue +26 -0
  55. package/src/components/base/CkToolApproval/CardHeading.vue +47 -0
  56. package/src/components/base/CkToolApproval/CkToolApproval.spec.ts +680 -0
  57. package/src/components/base/CkToolApproval/CkToolApproval.stories.ts +661 -0
  58. package/src/components/base/CkToolApproval/CkToolApproval.vue +240 -0
  59. package/src/components/base/CkToolApproval/ResultRow.vue +52 -0
  60. package/src/components/base/CkToolApproval/badge.ts +2 -0
  61. package/src/components/base/CkToolApproval/exports.spec.ts +22 -0
  62. package/src/components/base/CkToolApproval/index.ts +2 -0
  63. package/src/components/base/CkToolApproval/outcomes.ts +95 -0
  64. package/src/components/base/CkToolApproval/serializeArguments.ts +18 -0
  65. package/src/components/base/CkToolApproval/toolTitle.spec.ts +23 -0
  66. package/src/components/base/CkToolApproval/toolTitle.ts +19 -0
  67. package/src/components/base/CkToolApproval/types.ts +118 -0
  68. package/src/components/base/index.ts +11 -0
  69. package/src/components/index.ts +9 -0
  70. package/src/handlers/useChatKitLabels.ts +39 -0
  71. package/src/index.ts +9 -0
  72. package/src/test-empty.css +1 -0
@@ -96,6 +96,32 @@ export type ChatKitLabels = {
96
96
  * `defaultChatKitLabels`.
97
97
  */
98
98
  citationSourceLabel?: string;
99
+ /** Label of the button that allows the tool call in `CkToolApproval`. */
100
+ toolApprovalAllow?: string;
101
+ /** Label of the button that denies the tool call in `CkToolApproval`. */
102
+ toolApprovalDeny?: string;
103
+ /** Result line of an allowed `CkToolApproval`, before the optional summary. */
104
+ toolApprovalAllowedResult?: string;
105
+ /** Result line of a denied `CkToolApproval`. */
106
+ toolApprovalDeniedResult?: string;
107
+ /** Result line of a `CkToolApproval` whose allowed call failed. */
108
+ toolApprovalFailedResult?: string;
109
+ /** Result line of a `CkToolApproval` the user skipped by sending a new message. */
110
+ toolApprovalSkippedResult?: string;
111
+ /** Detail after the denied, failed and skipped result lines of `CkToolApproval` when no `summary` is given. */
112
+ toolApprovalNothingChanged?: string;
113
+ /** Note under the arguments of `CkToolApproval` when they were too long to show in full. */
114
+ toolApprovalArgumentsTruncated?: string;
115
+ /** Shown instead of the arguments of `CkToolApproval` when they cannot be turned into JSON; Allow is then off. */
116
+ toolApprovalArgumentsUnreadable?: string;
117
+ /** Status badge of an allowed `CkToolApproval`. */
118
+ toolApprovalAllowedBadge?: string;
119
+ /** Status badge of a denied `CkToolApproval`. */
120
+ toolApprovalDeniedBadge?: string;
121
+ /** Status badge of a `CkToolApproval` whose allowed call failed. */
122
+ toolApprovalFailedBadge?: string;
123
+ /** Status badge of a `CkToolApproval` the user skipped by sending a new message. */
124
+ toolApprovalSkippedBadge?: string;
99
125
  /** Fallback title used by `CkHistory` when a conversation has no `title`. */
100
126
  historyItemUntitled: string;
101
127
  /** Accessible name for the trailing kebab trigger on each `CkHistory` row. */
@@ -162,6 +188,19 @@ export declare const defaultChatKitLabels: {
162
188
  markdownTableLabel: string;
163
189
  citationOpenSource: string;
164
190
  citationSourceLabel: string;
191
+ toolApprovalAllow: string;
192
+ toolApprovalDeny: string;
193
+ toolApprovalAllowedResult: string;
194
+ toolApprovalDeniedResult: string;
195
+ toolApprovalFailedResult: string;
196
+ toolApprovalSkippedResult: string;
197
+ toolApprovalNothingChanged: string;
198
+ toolApprovalArgumentsTruncated: string;
199
+ toolApprovalArgumentsUnreadable: string;
200
+ toolApprovalAllowedBadge: string;
201
+ toolApprovalDeniedBadge: string;
202
+ toolApprovalFailedBadge: string;
203
+ toolApprovalSkippedBadge: string;
165
204
  historyItemUntitled: string;
166
205
  historyItemActionAriaLabel: string;
167
206
  historyItemEditAction: string;
@@ -1 +1 @@
1
- {"version":3,"file":"useChatKitLabels.d.ts","sourceRoot":"","sources":["../../src/handlers/useChatKitLabels.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAG1D;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,0CAA0C;IAC1C,cAAc,EAAE,MAAM,CAAC;IACvB,4CAA4C;IAC5C,qBAAqB,EAAE,MAAM,CAAC;IAC9B,gDAAgD;IAChD,gBAAgB,EAAE,MAAM,CAAC;IACzB,sFAAsF;IACtF,iBAAiB,EAAE,MAAM,CAAC;IAC1B,4FAA4F;IAC5F,uBAAuB,EAAE,MAAM,CAAC;IAChC,0EAA0E;IAC1E,uBAAuB,EAAE,MAAM,CAAC;IAChC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+DAA+D;IAC/D,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,+DAA+D;IAC/D,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,gEAAgE;IAChE,6BAA6B,CAAC,EAAE,MAAM,CAAC;IACvC,kFAAkF;IAClF,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,qEAAqE;IACrE,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,qEAAqE;IACrE,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,iEAAiE;IACjE,iCAAiC,CAAC,EAAE,MAAM,CAAC;IAC3C,iDAAiD;IACjD,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,iDAAiD;IACjD,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,0EAA0E;IAC1E,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,yEAAyE;IACzE,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,iFAAiF;IACjF,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,6FAA6F;IAC7F,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,iEAAiE;IACjE,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,+DAA+D;IAC/D,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,yEAAyE;IACzE,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,6EAA6E;IAC7E,mBAAmB,EAAE,MAAM,CAAC;IAC5B,8EAA8E;IAC9E,0BAA0B,EAAE,MAAM,CAAC;IACnC,uEAAuE;IACvE,qBAAqB,EAAE,MAAM,CAAC;IAC9B,yEAAyE;IACzE,uBAAuB,EAAE,MAAM,CAAC;IAChC;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uEAAuE;IACvE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,8EAA8E;IAC9E,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,gFAAgF;IAChF,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,uFAAuF;IACvF,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,qFAAqF;IACrF,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,8EAA8E;IAC9E,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,2EAA2E;IAC3E,6BAA6B,CAAC,EAAE,MAAM,CAAC;IACvC,mEAAmE;IACnE,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,mFAAmF;IACnF,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC,kFAAkF;IAClF,6BAA6B,CAAC,EAAE,MAAM,CAAC;CACxC,CAAC;AAEF,yEAAyE;AACzE,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+CE,CAAC;AAEpC,4CAA4C;AAC5C,eAAO,MAAM,eAAe,EAAE,YAAY,CAAC,WAAW,CAAC,aAAa,CAAC,CAC1C,CAAC;AAE5B,KAAK,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AAE5C,yFAAyF;AACzF,KAAK,cAAc,GACf,GAAG,CAAC,aAAa,CAAC,GAClB,WAAW,CAAC,aAAa,CAAC,GAC1B,CAAC,MAAM,aAAa,CAAC,CAAC;AAE1B;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAKjE;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,IAAI,WAAW,CAAC,aAAa,CAAC,CAK7D"}
1
+ {"version":3,"file":"useChatKitLabels.d.ts","sourceRoot":"","sources":["../../src/handlers/useChatKitLabels.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -6,8 +6,8 @@ export { useChat, useConversationSessions, useConversations, } from './composabl
6
6
  export type { ChatActions, ChatState, ConversationSession, CreateConversationInput, MessageHandler, MutationOptions, UseChatReturn, UseConversationSessionsReturn, UseConversationsOptions, UseConversationsReturn, } from './composables';
7
7
  export { SdkError, createDocumentUploadProvider, defaultDocumentUploadConfig, defaultEndpoints, useDocumentUploadWithDefaultConfig, } from './composables/fileUpload';
8
8
  export type { DocumentUploadConfig, DocumentUploadProvider, FileEntry, FileStatus, } from './composables/fileUpload';
9
- export { CkAgentMessage, CkAgentMessageHeader, CkHeaderActivityButton, CkCitation, CkCitationLabel, CkCitationCard, CkConversation, CkConversationLayout, CkCopyMessageButton, CkDropZoneOverlay, CkFeedbackButton, CkFeedbackDialog, CkFileItemsList, CkHistory, CkHistoryItem, CkHistoryWrapper, CkMarkdownRenderer, CkMessageButton, CkModelSelector, CkPromptSendButton, CkPromptMenuButton, CkPromptStopButton, CkPromptInput, CkPromptInputDisclaimer, CkRegenerateMessageButton, CkSendIcon, CkStopIcon, CkUserMessage, CkEditableUserMessage, CkMilkdownEditor, CkCodeEditor, preloadCkCodeEditor, } from './components';
10
- export type { CkAgentMessageHeaderProps, CkHeaderActivityButtonProps, CkHeaderActivityButtonEmits, CkCitationProps, CkCitationEmits, CkCitationSource, CkCitationLabelProps, CkCitationCardProps, CkCitationCardEmits, CkConversationLayoutProps, CkConversationProps, CkDropZoneOverlayProps, CkDropZoneOverlayEmits, CkDropZoneRejection, CkDropZoneRejectionReason, CkFeedbackButtonProps, CkFeedbackDialogEmits, CkFeedbackDialogProps, CkFeedbackDialogSubmitPayload, CkFeedbackReason, CkFeedbackSentiment, CkFeedbackValue, CkFileEntry, CkFileItemsListEmits, CkFileItemsListProps, CkHistoryEmits, CkHistoryItemEmits, CkHistoryItemProps, CkHistoryProps, CkHistoryWrapperProps, CkMarkdownElementClasses, CkMarkdownRendererProps, CkMarkdownRendererEmits, CkModelOption, CkModelSelectorProps, CkModelSelectorEmits, CkPromptMenuButtonProps, CkUserMessageProps, CkEditableUserMessageProps, CkEditableUserMessageEmits, CkMilkdownEditorEmits, CkMilkdownEditorExposed, CkMilkdownEditorProps, CkCodeEditorEmits, CkCodeEditorExposed, CkCodeEditorFadeSurface, CkCodeEditorProps, } from './components';
9
+ export { CkAgentMessage, CkAgentMessageHeader, CkHeaderActivityButton, CkCitation, CkCitationLabel, CkCitationCard, CkConversation, CkConversationLayout, CkCopyMessageButton, CkDropZoneOverlay, CkFeedbackButton, CkFeedbackDialog, CkFileItemsList, CkHistory, CkHistoryItem, CkHistoryWrapper, CkMarkdownRenderer, CkMessageButton, CkModelSelector, CkPromptSendButton, CkPromptMenuButton, CkPromptStopButton, CkPromptInput, CkPromptInputDisclaimer, CkRegenerateMessageButton, CkSendIcon, CkStopIcon, CkToolApproval, CkUserMessage, CkEditableUserMessage, CkMilkdownEditor, CkCodeEditor, preloadCkCodeEditor, } from './components';
10
+ export type { CkAgentMessageHeaderProps, CkHeaderActivityButtonProps, CkHeaderActivityButtonEmits, CkCitationProps, CkCitationEmits, CkCitationSource, CkCitationLabelProps, CkCitationCardProps, CkCitationCardEmits, CkConversationLayoutProps, CkConversationProps, CkDropZoneOverlayProps, CkDropZoneOverlayEmits, CkDropZoneRejection, CkDropZoneRejectionReason, CkFeedbackButtonProps, CkFeedbackDialogEmits, CkFeedbackDialogProps, CkFeedbackDialogSubmitPayload, CkFeedbackReason, CkFeedbackSentiment, CkFeedbackValue, CkFileEntry, CkFileItemsListEmits, CkFileItemsListProps, CkHistoryEmits, CkHistoryItemEmits, CkHistoryItemProps, CkHistoryProps, CkHistoryWrapperProps, CkMarkdownElementClasses, CkMarkdownRendererProps, CkMarkdownRendererEmits, CkModelOption, CkModelSelectorProps, CkModelSelectorEmits, CkPromptMenuButtonProps, CkToolApprovalProps, CkToolApprovalEmits, CkToolApprovalSlots, CkToolApprovalRequest, CkToolApprovalStatus, CkToolApprovalBodyComponents, CkToolApprovalBodyProps, CkToolApprovalExposed, CkUserMessageProps, CkEditableUserMessageProps, CkEditableUserMessageEmits, CkMilkdownEditorEmits, CkMilkdownEditorExposed, CkMilkdownEditorProps, CkCodeEditorEmits, CkCodeEditorExposed, CkCodeEditorFadeSurface, CkCodeEditorProps, } from './components';
11
11
  export { formatRelativeTime, markdownToPlainText } from './helpers';
12
12
  export type { ActiveComparison, BaseMessage, ComparisonLane, Conversation, ConversationTree, MessageContent, MessageContentStatus, MessageMetadata, MessageReasoningContent, MessageRole, MessageStatus, MessageTextContent, MessageToolContent, TreeMessage, } from './types';
13
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,iBAAiB,CAAC;AAGzB,OAAO,EACL,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,WAAW,GACjB,MAAM,YAAY,CAAC;AASpB,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,GAChB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGhD,OAAO,EACL,OAAO,EACP,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,WAAW,EACX,SAAS,EACT,mBAAmB,EACnB,uBAAuB,EACvB,cAAc,EACd,eAAe,EACf,aAAa,EACb,6BAA6B,EAC7B,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,QAAQ,EACR,4BAA4B,EAC5B,2BAA2B,EAC3B,gBAAgB,EAChB,kCAAkC,GACnC,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,oBAAoB,EACpB,sBAAsB,EACtB,SAAS,EACT,UAAU,GACX,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,sBAAsB,EACtB,UAAU,EACV,eAAe,EACf,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACb,uBAAuB,EACvB,yBAAyB,EACzB,UAAU,EACV,UAAU,EACV,aAAa,EACb,qBAAqB,EACrB,gBAAgB,EAChB,YAAY,EACZ,mBAAmB,GACpB,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,yBAAyB,EACzB,2BAA2B,EAC3B,2BAA2B,EAC3B,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,EACzB,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,yBAAyB,EACzB,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,6BAA6B,EAC7B,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,WAAW,EACX,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,qBAAqB,EACrB,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,EACvB,aAAa,EACb,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,EACvB,kBAAkB,EAClB,0BAA0B,EAC1B,0BAA0B,EAC1B,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,EACnB,uBAAuB,EACvB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAGpE,YAAY,EACV,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,uBAAuB,EACvB,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,GACZ,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { u } from "./useMessageHandler-Bkzrdgfj.js";
2
- import { C, d, p, u as u2, b } from "./useChatKitLabels-DxW0N5U-.js";
2
+ import { C, d, p, u as u2, b } from "./useChatKitLabels-ky3JI9gf.js";
3
3
  import { S, c, d as d2, f, u as u3, a, b as b2, e } from "./index-D0DQjdsq.js";
4
- import { _, a as a2, b as b3, c as c2, C as C2, d as d3, e as e2, f as f2, g, h, i, j, k, l, m, n, o, p as p2, q, r, s, t, u as u4, v, w, x, y, z, A, B, D, F, E } from "./CkHistory.vue_vue_type_script_setup_true_lang-C4XS2QQI.js";
4
+ import { _, a as a2, b as b3, c as c2, C as C2, d as d3, e as e2, f as f2, g, h, i, j, k, l, m, n, o, p as p2, q, r, s, t, u as u4, v, w, x, y, z, A, B, D, E, G, F } from "./CkHistory.vue_vue_type_script_setup_true_lang-DF5yUf7K.js";
5
5
  import { m as m2 } from "./markdownToPlainText-DN_G-I6g.js";
6
6
  export {
7
7
  C as CHAT_KIT_LABELS,
@@ -35,15 +35,16 @@ export {
35
35
  z as CkRegenerateMessageButton,
36
36
  A as CkSendIcon,
37
37
  B as CkStopIcon,
38
- D as CkUserMessage,
38
+ D as CkToolApproval,
39
+ E as CkUserMessage,
39
40
  S as SdkError,
40
41
  c as createDocumentUploadProvider,
41
42
  d as defaultChatKitLabels,
42
43
  d2 as defaultDocumentUploadConfig,
43
44
  f as defaultEndpoints,
44
- F as formatRelativeTime,
45
+ G as formatRelativeTime,
45
46
  m2 as markdownToPlainText,
46
- E as preloadCkCodeEditor,
47
+ F as preloadCkCodeEditor,
47
48
  p as provideChatKitLabels,
48
49
  u3 as useChat,
49
50
  u2 as useChatKitLabels,
@@ -19166,6 +19166,19 @@ const defaultChatKitLabels = {
19166
19166
  markdownTableLabel: "Table",
19167
19167
  citationOpenSource: "Open source",
19168
19168
  citationSourceLabel: "Source",
19169
+ toolApprovalAllow: "Allow",
19170
+ toolApprovalDeny: "Deny",
19171
+ toolApprovalAllowedResult: "Approved by you",
19172
+ toolApprovalDeniedResult: "Denied by you",
19173
+ toolApprovalFailedResult: "Failed",
19174
+ toolApprovalSkippedResult: "Skipped",
19175
+ toolApprovalNothingChanged: "Nothing was updated",
19176
+ toolApprovalArgumentsTruncated: "Arguments shortened for display",
19177
+ toolApprovalArgumentsUnreadable: "These arguments can't be shown",
19178
+ toolApprovalAllowedBadge: "Allowed",
19179
+ toolApprovalDeniedBadge: "Denied",
19180
+ toolApprovalFailedBadge: "Failed",
19181
+ toolApprovalSkippedBadge: "Skipped",
19169
19182
  historyItemUntitled: "Untitled conversation",
19170
19183
  historyItemActionAriaLabel: "Conversation options",
19171
19184
  historyItemEditAction: "Edit",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aleph-alpha/chat-kit",
3
- "version": "6.5.0",
3
+ "version": "6.7.0",
4
4
  "description": "Chat kit package for building chat interfaces with Vue",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -116,8 +116,8 @@
116
116
  "vue-tsc": "^3.2.4",
117
117
  "wait-on": "9.0.3",
118
118
  "@aleph-alpha/prettier-config-frontend": "2.1.1",
119
- "@aleph-alpha/tsconfig-frontend": "0.7.3",
120
- "@aleph-alpha/eslint-config-frontend": "0.7.1"
119
+ "@aleph-alpha/eslint-config-frontend": "0.7.1",
120
+ "@aleph-alpha/tsconfig-frontend": "0.7.3"
121
121
  },
122
122
  "scripts": {
123
123
  "build": "vite build && vue-tsc --project tsconfig.build.json --declaration --emitDeclarationOnly --outDir dist",
@@ -284,4 +284,31 @@ describe('CkFeedbackDialog', () => {
284
284
  await screen.findByRole('button', { name: SUBMIT });
285
285
  expect(screen.queryByText(RESPONSE_HEADING)).not.toBeInTheDocument();
286
286
  });
287
+
288
+ it('renders footer slot content below the columns', async () => {
289
+ render(CkFeedbackDialog, {
290
+ props: {
291
+ open: true,
292
+ sentiment: 'positive',
293
+ reasons: REASONS,
294
+ responseText: 'A sample assistant response.',
295
+ } as CkFeedbackDialogProps,
296
+ slots: {
297
+ footer: '<span>Trace ID: 4bf92f3577b34da6a3ce929d0e0e4736</span>',
298
+ },
299
+ });
300
+
301
+ expect(
302
+ await screen.findByText('Trace ID: 4bf92f3577b34da6a3ce929d0e0e4736'),
303
+ ).toBeInTheDocument();
304
+ });
305
+
306
+ it('renders no footer row without footer slot content', async () => {
307
+ renderDialog();
308
+
309
+ await screen.findByRole('button', { name: SUBMIT });
310
+ expect(
311
+ document.querySelector('.ck-feedback-dialog__footer'),
312
+ ).not.toBeInTheDocument();
313
+ });
287
314
  });
@@ -274,6 +274,29 @@ export const LongResponse: Story = {
274
274
  },
275
275
  };
276
276
 
277
+ /**
278
+ * The optional `footer` slot renders a row below the columns, e.g. a reference
279
+ * id the user can copy when reporting the answer.
280
+ */
281
+ export const WithFooter: Story = {
282
+ args: {
283
+ open: true,
284
+ sentiment: 'negative',
285
+ reasons: NEGATIVE_REASONS,
286
+ responseText: SAMPLE_RESPONSE,
287
+ },
288
+ render: (args) => ({
289
+ components: { CkFeedbackDialog },
290
+ setup: () => ({ args }),
291
+ template: `<CkFeedbackDialog v-bind="args">
292
+ <template #footer>
293
+ <span>Trace ID</span>
294
+ <code>4bf92f3577b34da6a3ce929d0e0e4736</code>
295
+ </template>
296
+ </CkFeedbackDialog>`,
297
+ }),
298
+ };
299
+
277
300
  /**
278
301
  * Realistic end-to-end flow wired to `CkFeedbackButton`. Click a thumb to open
279
302
  * the dialog; submit or cancel; the button locks only on submit.
@@ -48,6 +48,14 @@ const {
48
48
  submitLabel: submitLabelProp,
49
49
  } = defineProps<CkFeedbackDialogProps>();
50
50
 
51
+ defineSlots<{
52
+ /**
53
+ * Optional row below the reasons and response columns, e.g. a reference id
54
+ * the user can copy. Not rendered when empty.
55
+ */
56
+ footer?: () => unknown;
57
+ }>();
58
+
51
59
  const emit = defineEmits<{
52
60
  'update:open': [open: boolean];
53
61
  submit: [payload: CkFeedbackDialogSubmitPayload];
@@ -259,6 +267,13 @@ function handleSubmit(): void {
259
267
  </section>
260
268
  </div>
261
269
 
270
+ <div
271
+ v-if="$slots.footer"
272
+ class="ck-feedback-dialog__footer flex items-center gap-2 text-sm text-content-on-surface-muted"
273
+ >
274
+ <slot name="footer" />
275
+ </div>
276
+
262
277
  <template #actions>
263
278
  <UiButton
264
279
  type="button"
@@ -0,0 +1,30 @@
1
+ <script setup lang="ts">
2
+ import { useTemplateRef } from 'vue';
3
+
4
+ defineProps<{
5
+ headingId: string;
6
+ descriptionId?: string;
7
+ }>();
8
+
9
+ const root = useTemplateRef<HTMLElement>('root');
10
+
11
+ defineExpose({
12
+ focus: (): void => root.value?.focus(),
13
+ containsFocus: (): boolean =>
14
+ root.value?.contains(document.activeElement) ?? false,
15
+ });
16
+ </script>
17
+
18
+ <template>
19
+ <!-- tabindex -1: focusable from code (after a decision), not in the tab order. -->
20
+ <div
21
+ ref="root"
22
+ role="group"
23
+ tabindex="-1"
24
+ :aria-labelledby="headingId"
25
+ :aria-describedby="descriptionId"
26
+ class="ck-tool-approval rounded-xl border border-border-surface-default bg-background-input-default"
27
+ >
28
+ <slot />
29
+ </div>
30
+ </template>
@@ -0,0 +1,48 @@
1
+ <script setup lang="ts">
2
+ import { computed } from 'vue';
3
+ import { UiCodeBlock } from '@aleph-alpha/ui-library';
4
+ import type { ChatKitLabels } from '../../../handlers/useChatKitLabels';
5
+ import type { SerializedArguments } from './serializeArguments';
6
+
7
+ // Keeps a huge payload, such as a whole file, from freezing the highlighter.
8
+ const MAX_ARGUMENTS_CHARS = 20_000;
9
+
10
+ const props = defineProps<{
11
+ serialized: SerializedArguments;
12
+ labels: Required<ChatKitLabels>;
13
+ }>();
14
+
15
+ const json = computed(() =>
16
+ props.serialized.readable ? props.serialized.json : '',
17
+ );
18
+ const truncated = computed(() => json.value.length > MAX_ARGUMENTS_CHARS);
19
+ const code = computed(() =>
20
+ truncated.value
21
+ ? `${json.value.slice(0, MAX_ARGUMENTS_CHARS)}\n…`
22
+ : json.value,
23
+ );
24
+ </script>
25
+
26
+ <template>
27
+ <p
28
+ v-if="!serialized.readable"
29
+ class="text-sm leading-5 text-content-on-surface-muted"
30
+ >
31
+ {{ labels.toolApprovalArgumentsUnreadable }}
32
+ </p>
33
+ <template v-else>
34
+ <UiCodeBlock
35
+ :code="code"
36
+ language="json"
37
+ max-height="14rem"
38
+ :copy-label="labels.codeEditorCopy"
39
+ :copied-label="labels.codeEditorCopied"
40
+ />
41
+ <p
42
+ v-if="truncated"
43
+ class="mt-2 text-xs leading-[14px] text-content-on-surface-muted"
44
+ >
45
+ {{ labels.toolApprovalArgumentsTruncated }}
46
+ </p>
47
+ </template>
48
+ </template>
@@ -0,0 +1,26 @@
1
+ <script setup lang="ts">
2
+ import { onErrorCaptured, ref } from 'vue';
3
+
4
+ defineSlots<{
5
+ default: () => unknown;
6
+ /** Shown instead once the default content throws. */
7
+ fallback: () => unknown;
8
+ }>();
9
+
10
+ const failed = ref(false);
11
+
12
+ onErrorCaptured((error) => {
13
+ // eslint-disable-next-line no-console
14
+ console.error(
15
+ '[CkToolApproval] Custom body failed, showing the arguments as JSON:',
16
+ error,
17
+ );
18
+ failed.value = true;
19
+ return false;
20
+ });
21
+ </script>
22
+
23
+ <template>
24
+ <slot v-if="failed" name="fallback" />
25
+ <slot v-else />
26
+ </template>
@@ -0,0 +1,47 @@
1
+ <script setup lang="ts">
2
+ import { UiBadge, UiIcon } from '@aleph-alpha/ui-library';
3
+ import { BADGE_ICON_SIZE } from './badge';
4
+
5
+ defineProps<{
6
+ id: string;
7
+ title: string;
8
+ connectorLabel?: string;
9
+ connectorIcon: string;
10
+ /** `card` for the open approval card, `row` for the collapsed result. */
11
+ size: 'card' | 'row';
12
+ }>();
13
+
14
+ defineSlots<{
15
+ /** Replaces the connector chip's icon. */
16
+ icon?: () => unknown;
17
+ }>();
18
+ </script>
19
+
20
+ <template>
21
+ <div :id="id" class="flex min-w-0 items-center gap-2">
22
+ <p
23
+ class="text-content-on-surface-primary"
24
+ :class="
25
+ size === 'card'
26
+ ? 'text-base font-bold leading-[18px]'
27
+ : 'truncate text-sm font-medium leading-5'
28
+ "
29
+ >
30
+ {{ title }}
31
+ </p>
32
+ <UiBadge
33
+ v-if="connectorLabel"
34
+ variant="outline"
35
+ size="small"
36
+ class="min-w-0 shrink"
37
+ >
38
+ <!-- The chip text already names the connector; a logo's alt would repeat it in the card name. -->
39
+ <span aria-hidden="true" class="inline-flex shrink-0">
40
+ <slot name="icon">
41
+ <UiIcon :name="connectorIcon" :size="BADGE_ICON_SIZE" />
42
+ </slot>
43
+ </span>
44
+ <span class="truncate">{{ connectorLabel }}</span>
45
+ </UiBadge>
46
+ </div>
47
+ </template>